Polymorphism and Inheritance in C++

Proposed title of the article
Polymorphism and Inheritance in C++
Proposed article introduction
The word polymorphism means having many forms. Polymorphism usually occurs when there is a hierarchy of classes that are related through inheritance. C++ polymorphism means that a call to a member function will cause a different function to be executed depending on the type of object that invokes the function.
Inheritance refers to a class's capacity to derive features and traits from another class. One of the most significant features of Object Oriented Programming is inheritance.
In this article these two subtopics will be discussed in depth and their application in C++  programming will be made easy for the reader.
Key takeaways
1.Introduction to polymorphism and Inheritance
2.Programming fundamentals of polymorphism and inheritance in C++
3.Modes and Types of Inheritance
4.Types of polymorphism.
5.Differences between polymorphism and Inheritance
6.What is new in polymorphism  and Inheritance?
7.Why And When To Use "Inheritance" and "Polymorphism"?
Article quality
I intend to incorporate programme-centric concepts of polymorphism and inheritance in C++ that have been overlooked by other writers who have tried writing about these topics. My content will also be original and written in a format that a beginner shall understand what is discussed and the information shall remain useful and relevant to high end programmers.
References
N/A

Good afternoon and thank you for submitting your topic suggestion.
Your topic form has been entered into our queue and should be reviewed (for approval) as soon as a content moderator is finished reviewing the ones in the queue before it.

Other students already covered Polymorphism and Inheritance in C++.
Please feel free to suggest an alternate topic to explore. 🚀 @Bikorir


Correct app delete command

Contributing to Twilio

All third party contributors acknowledge that any contributions they provide will be made under the same open source license that the open source project is provided under.

[x ] I acknowledge that all my contributions will be made under the project's license.

Pull Request Details
JIRA link(s):

AHOYAPPS-0000

Description
The readme contained an incorrect delete command, this should be twilio rtc:apps:video:delete
Burndown
Before review

[x ] Updated CHANGELOG.md if necessary
[x ] Added unit tests if necessary
[ x] Updated affected documentation
[x ] Verified locally with npm test
[x ] Manually sanity tested running locally
[x ] Included screenshot as PR comment (if needed)
[x ] Ready for review

Before merge

[ ] Got one or more +1s
[x ] Re-tested if necessary

Thank you @sjoerdsmink !


TypeError: Cannot read property 'getUpdates' of undefined

This issue is related to most of the issues reporting a bug with this error in it.
I've created a separate issue since this issue is unrelated to the actual errors in those issues.
Context

This error-message is caused by a missing client variable in the gui demo [ link ]. Normally a line of code in bench-flow.js [ link ] defines the client variable.
However when there is an issue initializing the blockchain and the benchmark fails before a call to defaultTest() [ link ] the client variable remains undefined. Then in the catch statement of the run funciton in bench-flow.js demo.stopWatch() is called  [ link ] which then produces the undefined error for getUpdates() in demo.js.
Expected Behavior

Proper handling of the undefined error.
Actual Behavior

A TypeError is thrown because the client variable is undefined.
Possible Fix

My suggestion would be to remove the gui demo all together. Afaik the demo code is currently unused, untested and most users use the html-reports to view their statistics. It can be added later when it is fully functional and tested.
Steps to Reproduce

Insert a throw new Error("Some message") in any bit of code responsible for initialization of a blockchain.
Run the benchmark.

Existing issues

[ ] Stack Overflow issues
[ ] GitHub Issues
[ ] Rocket Chat history

Context

It causes Caliper to crash instead of gracefully shutting down.
Your Environment

Version used:
Environment name and version (e.g. Chrome 39, node.js 5.4):
Operating System and version (desktop or mobile):
Link to your project:

the problem is related to docker，please executive docker stop $(docker ps -aq)  and docker rm $(docker ps -aq)， you can try it .

Closing this. Issue is based on (by now) very old code.


Update ipfsFriendsCafeParis.md

@WinsCodes Ryo approved this logo and host name.  Can you add this logo?

This requested update has been completed using the Pull request: https://github.com/memser-spaceport/pln-events/pull/354


Issued access tokens are theoretically forever valid

Link to reproduction
N/A
To Reproduce
Setup a new Payload CMS and sign in using API.
Describe the Bug
TL;DR
Main concern is that an access token is forever functional and can forever be renewed - and can't be revoked.
Current refresh token flow
When an issued access_token is about to expire, one can call the [user-collection]/refresh-token endpoint to retrieve a new token.
Quoted from current documentation:

If your user has a token that is about to expire, but the user is still active and using the app, you might want to use the refresh operation to receive a new token by sending the operation the token that is about to expire.
This operation requires a non-expired token to send back a new one. If the user's token has already expired, you will need to allow them to log in again to retrieve a new token.
If successful, this operation will automatically renew the user's HTTP-only cookie and will send back the updated token in JSON.

This implies that if anyone were to gain access to an access token as a string, they would in theory forever be able to renew the token and there would be no way as admin or user to invalidate or detect this. This could prove critical especially if said access token should belong to an admin.
The OAuth approach
Access Tokens
Access tokens are issued as short-living "tickets" allowing the carrier of said token to access and act on behalf of the subject to which said token has been issued.
Refresh Tokens
Refresh tokens can be either JWTs, opaque strings, or strings of encrypted data which represents an active session. When an access token has expired, the refresh token is used to request a new access token. The refresh token acts as the receipt of a transaction and proves that for a set amount of time, the subject can request access to a resource or service.
Refresh tokens are either stored in a Database on the authentication service which issues tokens, or preferably are self-contained and contain certain data that associates the subject with an active session id and expiration time. The refresh token can also contain data of the audience, which can be a specific application or resource, which helps to set privileges specific for the issued access tokens.
Whenever a refresh token is used to request a new access token, the refresh token is first unwrapped/verified on the auth service. Then the session_id contained in the refresh token is verified by ensuring it hasn't been previously revoked. Hereafter, the subject_id contained in the refresh token is used to issue a new access token.
To revoke a refresh token, oftentimes the session_id is added to a database (RedisDB is usually a good choice) and automatically set to expire from the db table when the refresh token itself is set to expire. This reduces the number of entries in a db necessary, and handles garbage collection automatically.
Client ID and Key
An added level of security would be to issue client credentials which are generated per resource and application, and often tied to the audience identifier in the refresh token.
This way, whenever a refresh token is used to request a new access token, the application/resource is also required to send along their secure client credentials to ensure the action is indeed done by the correct audience and not using a potentially leaked refresh token.
Revoke token
Access tokens can't per definition not be revoked. Hence why they should be short-lived. When a user sends a logout request, the session_id (which could be present in both access token and refresh token) is added to the db table for revoked tokens. Next time a refresh token is used to request and access token, this request is then denied as the session_id is revoked.
From within admin, it could likewise be possible to create a session table for users, which simply lists the session_ids, the create date and expiration of each issued refresh token, and allow the user to revoke manually from within admin. This table is only used to store records or currently active sessions and is only to facilitate the process of revoking a token for the user.
Payload Version
1.15.2

Related: https://github.com/payloadcms/payload/discussions/3298


Support globs for asset path

Is your feature request related to a problem? Please describe.
It would be really beneficial if the asset path could be configured as a glob. Currently, new files need to keep being added manually, which isn't great and it causes PRs show these getting added.
Describe the solution you'd like
Support for glob paths such as '/packages/**/icons/*.tsx
Describe alternatives you've considered
There are none
Additional context

Hi, @Akkuma
Thank you for your suggestion. This feature request is related to the functionality discussed in #129. The feature to support glob paths for asset configuration is already being considered and planned for implementation.
As this functionality addresses the concerns raised in this issue, I am closing this issue. Please refer to #129 for updates and progress on this feature.
Thank you for your understanding and for contributing to the project.


more history tests

History tests are not complete yet (still missing split/merger/dividend tests for daily history, and futures tests) but holding off for now.

Besides one comment, lgtm.


reflect-cpp: fix deps

@star-hengxing I'm getting cmake error on v0.11.1. Could you check? (v.10.0 is fine)
  => install reflect-cpp v0.11.1 .. failed

-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.38.CMake Error at CMakeLists.txt:53 (find_package):
  Could not find a package configuration file provided by "yyjson" with any
  of the following names:
    yyjsonConfig.cmake
    yyjson-config.cmake
  Add the installation prefix of "yyjson" to CMAKE_PREFIX_PATH or set
  "yyjson_DIR" to a directory containing one of the above files.  If "yyjson"
  provides a separate development package or SDK, be sure it has been
  installed.

@star-hengxing I'm getting cmake error on v0.11.1. Could you check? (v.10.0 is fine)
  => install reflect-cpp v0.11.1 .. failed

-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.38.CMake Error at CMakeLists.txt:53 (find_package):
  Could not find a package configuration file provided by "yyjson" with any
  of the following names:
    yyjsonConfig.cmake
    yyjson-config.cmake
  Add the installation prefix of "yyjson" to CMAKE_PREFIX_PATH or set
  "yyjson_DIR" to a directory containing one of the above files.  If "yyjson"
  provides a separate development package or SDK, be sure it has been
  installed.

Could you reinstall yyjson and try again, it should work.
$ xrepo remove --all -y yyjson
$ xrepo install reflect-cpp

@star-hengxing yyjson 0.9.0 setup is ok. But reflect-cpp v0.11.1 install gives an error. Here is the full log:
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.40.CMake Error at CMakeLists.txt:53 (find_package):
  Could not find a package configuration file provided by "yyjson" with any
  of the following names:

    yyjsonConfig.cmake
    yyjson-config.cmake

  Add the installation prefix of "yyjson" to CMAKE_PREFIX_PATH or set
  "yyjson_DIR" to a directory containing one of the above files.  If "yyjson"
  provides a separate development package or SDK, be sure it has been
  installed.

Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.40.33807/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring incomplete, errors occurred!

@star-hengxing yyjson 0.9.0 setup is ok. But reflect-cpp v0.11.1 install gives an error. Here is the full log:
-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- The C compiler identification is MSVC 19.40.CMake Error at CMakeLists.txt:53 (find_package):
  Could not find a package configuration file provided by "yyjson" with any
  of the following names:

    yyjsonConfig.cmake
    yyjson-config.cmake

  Add the installation prefix of "yyjson" to CMAKE_PREFIX_PATH or set
  "yyjson_DIR" to a directory containing one of the above files.  If "yyjson"
  provides a separate development package or SDK, be sure it has been
  installed.

Check for working CXX compiler: C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.40.33807/bin/Hostx64/x64/cl.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring incomplete, errors occurred!

I remove cmake install and directly copy header files. Update repo and try again.

@star-hengxing Thank you now it's working


substitute default ns for  telemetryNs in yaml for prom install

Please provide a description of this PR:
The telemetryNamespace works as expected except for substituting the namespace of the subjects for the ClusterRoleBinding.
subjects:
  - kind: ServiceAccount
    name: prometheus
    namespace: istio-system

Replacing all instances of namespace: istio-system in the YAML before applying the configuration solves this. I hard coded istio-system as the user can change the systemNamespace variable and istio-system is set in samples/addons/prometheus.yaml

@whitneygriffith: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio
a13e5b84cbfd92e3a1f5c6e7ae0efff622568d4f
link
true
/test release-notes

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@whitneygriffith: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

release-notes_istio
a13e5b84cbfd92e3a1f5c6e7ae0efff622568d4f
link
true
/test release-notes

unit-tests-arm64_istio
a13e5b84cbfd92e3a1f5c6e7ae0efff622568d4f
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@whitneygriffith: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-helm_istio
ee3ee6fae0cda56424ca065298d070f2e77b3112
link
false
/test integ-helm

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/retest-required

In response to a cherrypick label: new pull request created: #51853


[Bug]: Recent updates give me 'TypeError: config.plugins.map is not a function', crash

Please confirm that you have:

[X] Searched existing issues to see if your issue is a duplicate. (If you’ve found a duplicate issue, feel free to add additional information in a comment on it.)
[X] Reproduced the issue in the latest CLI version.

In which of these areas are you experiencing a problem?
App, Hydrogen custom storefront
Expected behavior
npm run dev should launch app locally without error.
Actual behavior
App doesn't launch locally, get this error in server console:
│  config.plugins.map is not a function
│  To investigate the issue, examine this stack trace:
│    at registerCleanBugsnagErrorsFromWithinPlugins (/node_modules/@shopify/cli-hydrogen/node_modules/@shopify/cli-kit/dist/public/node/error-handler.js:137)
│    at init (/node_modules/@shopify/cli-hydrogen/node_modules/@shopify/cli-kit/dist/public/node/base-command.js:29)
│    at async runCLI (/node_modules/@shopify/cli-kit/dist/public/node/cli.js:68)
│    at async runShopifyCLI (/node_modules/@shopify/cli/dist/index.js:34)
Verbose output
chrishouck@chriss-mbp jmlshopifystore % npm run dev --verbose
npm verb cli /Users/chrishouck/.nvm/versions/node/v18.17.1/bin/node /Users/chrishouck/.nvm/versions/node/v18.17.1/bin/npm
npm info using<EMAIL_ADDRESS>npm info using<EMAIL_ADDRESS>npm verb title npm run dev
npm verb argv "run" "dev" "--loglevel" "verbose"
npm verb logfile logs-max:10 dir:/Users/chrishouck/.npm/_logs/2024-02-05T16_01_56_480Z-
npm verb logfile /Users/chrishouck/.npm/_logs/2024-02-05T16_01_56_480Z-debug-0.log

><EMAIL_ADDRESS>dev
> shopify hydrogen dev

╭─ error ──────────────────────────────────────────────────────────────────────╮
│                                                                              │
│  config.plugins.map is not a function                                        │
│                                                                              │
│  To investigate the issue, examine this stack trace:                         │
│    at registerCleanBugsnagErrorsFromWithinPlugins                            │
│    (~~/node_modules/@shopify/cli-hydrogen/node_m  │
│    odules/@shopify/cli-kit/dist/public/node/error-handler.js:137)            │
│    at init (~~/node_modules/@shopify/cli-hydroge  │
│    n/node_modules/@shopify/cli-kit/dist/public/node/base-command.js:29)      │
│    at async runCLI (~~/node_modules/@shopify/cli  │
│    -kit/dist/public/node/cli.js:68)                                          │
│    at async runShopifyCLI (~~/node_modules/@shop  │
│    ify/cli/dist/index.js:34)                                                 │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

    TypeError: config.plugins.map is not a function
npm verb exit 0
npm info ok

Reproduction steps

npm i @shopify/cli
npm run dev

Operating System
Mac OS Sonoma 14.3
Shopify CLI version (check your project's package.json if you're not sure)
"^3.55.3"
Shell
zsh
Node version (run node -v if you're not sure)
v18.17.1
What language and version are you using in your application?
No response

Got it as well today on Windows 11.
I updated every packages I had in my project:
    "@shopify/app": "^3.55.3",
    "@shopify/app-bridge": "^3.7.10",
    "@shopify/app-bridge-react": "^3.7.10",
    "@shopify/cli": "^3.55.3",
    "@shopify/i18next-shopify": "^0.2.9",
    "@shopify/polaris": "^12.12.1",
    "@shopify/polaris-icons": "^8.2.0",
    "@shopify/ui-extensions": "^2024.1.1",
    "@shopify/ui-extensions-react": "^2024.1.1",

and the error message disappeared

Please confirm that you have:

[x]  Searched existing issues to see if your issue is a duplicate. (If you’ve found a duplicate issue, feel free to add additional information in a comment on it.)
[x]  Reproduced the issue in the latest CLI version.

In which of these areas are you experiencing a problem?
App, Hydrogen custom storefront
Expected behavior
npm run dev should launch app locally without error.
Actual behavior
App doesn't launch locally, get this error in server console: │ config.plugins.map is not a function │ To investigate the issue, examine this stack trace: │ at registerCleanBugsnagErrorsFromWithinPlugins (~/node_modules/@shopify/cli-hydrogen/node_modules/@shopify/cli-kit/dist/public/node/error-handler.js:137) │ at init (~/node_modules/@shopify/cli-hydrogen/node_modules/@shopify/cli-kit/dist/public/node/base-command.js:29) │ at async runCLI (~/node_modules/@shopify/cli-kit/dist/public/node/cli.js:68) │ at async runShopifyCLI (~/node_modules/@shopify/cli/dist/index.js:34)
Verbose output
chrishouck@chriss-mbp jmlshopifystore % npm run dev --verbose
npm verb cli /Users/chrishouck/.nvm/versions/node/v18.17.1/bin/node /Users/chrishouck/.nvm/versions/node/v18.17.1/bin/npm
npm info using<EMAIL_ADDRESS>npm info using<EMAIL_ADDRESS>npm verb title npm run dev
npm verb argv "run" "dev" "--loglevel" "verbose"
npm verb logfile logs-max:10 dir:/Users/chrishouck/.npm/_logs/2024-02-05T16_01_56_480Z-
npm verb logfile /Users/chrishouck/.npm/_logs/2024-02-05T16_01_56_480Z-debug-0.log

><EMAIL_ADDRESS>dev
> shopify hydrogen dev

╭─ error ──────────────────────────────────────────────────────────────────────╮
│                                                                              │
│  config.plugins.map is not a function                                        │
│                                                                              │
│  To investigate the issue, examine this stack trace:                         │
│    at registerCleanBugsnagErrorsFromWithinPlugins                            │
│    (~~/node_modules/@shopify/cli-hydrogen/node_m  │
│    odules/@shopify/cli-kit/dist/public/node/error-handler.js:137)            │
│    at init (~~/node_modules/@shopify/cli-hydroge  │
│    n/node_modules/@shopify/cli-kit/dist/public/node/base-command.js:29)      │
│    at async runCLI (~~/node_modules/@shopify/cli  │
│    -kit/dist/public/node/cli.js:68)                                          │
│    at async runShopifyCLI (~~/node_modules/@shop  │
│    ify/cli/dist/index.js:34)                                                 │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯

    TypeError: config.plugins.map is not a function
npm verb exit 0
npm info ok

Reproduction steps

npm i @shopify/cli
npm run dev

Operating System
Mac OS Sonoma 14.3
Shopify CLI version (check your project's package.json if you're not sure)
"^3.55.3"
Shell
zsh
Node version (run node -v if you're not sure)
v18.17.1
What language and version are you using in your application?
No response

Hi, got same issue recently.
Running npm prune seems working to me;
link to forum, where i find it: https://community.shopify.com/c/hydrogen-headless-and-storefront/hydrogen-cli-error-after-upgrading-from-2023-10-4-to-2024-01-0/m-p/2417620

I'm going to move this report over to the hydrogen project's repo. That workaround seems sound.


Problems when measuring the whole list by CellMeasurer

I created a fiddle to illustrate the problem
https://plnkr.co/edit/fp50BtlLxOApDXJjmqPt
All rows should've been measured on componentDidMount, but they were not. You can check it by looking into console for cache information or by scrolling down - scrollbar is janky and is changing its size - clear indication of JIT measurement

I think you have a misunderstanding of how CellMeasurer works in RV. JIT measurement is very important for performance in large lists. If RV rendered and measured the entire list- it wouldn't be windowing.
When using CellMeasurer, RV measures "chunks" of rows (or columns) based on the estimated size you give CellMeasurerCache. After each phase of measuring, it decides whether it has enough items measured for now or if it needs to do another pass.
You can tweak this behavior if you have a good idea of the average size of a row. CellMeasurerCache defaults to an estimated height of 30. Override this by passing a defaultHeight parameter if you know 30 is inaccurage.
PS You can see a simplified illustration of how it works here.

Actually here's my case: my list is not very large, so I can let user wait a few seconds before initial render, but it's not small enough to render it every time as-is.
So I wanted to perform initial measurement for the whole list and rely for JIT measurements for updates. Is it possible to do with RV without deep hacking? I think I could set overscanRowCount to a large number and after first render set it back to 10, does that sound as an appropriate solution?

Ask that ^ in the Slack channel or on Stack Overflow 😄
I try to use Github only for feature requests and bug reports (for my own sanity and ability to keep up)


feat: add support for multilingual slugs (resolves #137)

[x] Adds translatable slugs to Organization, Resource, and ResourceCollection
[x] Installs Laravel Multilingual Routes middleware in the right place (see https://github.com/chinleung/laravel-multilingual-routes/issues/70#issuecomment-1128813686)
[x] Adds custom trans_current_route helper (see https://github.com/chinleung/laravel-multilingual-routes/issues/70#issuecomment-1129933801)

I think the tests for the slug are missing for the ResourceCollection.

You're right, because there are no routes, controllers or views for ResourceCollections yet and thus no slugs to test. See #142.


0.41.0 Performance decrease

Expected Behavior

When updating between versions, I expected comparable performance.
Observed Behavior

Upgrading from 0.40.0 to 0.41.0 decreases performance considerably. I noticed this from using a precommit hook and the time to commit even a file without any formatting issues, went up considerably. When using Debug flags on 0.41.0 the print outs stop at:
[DEBUG] Initializing "plain" reporter with {verbose=true, color=false, color_name=DARK_GRAY}
where it takes the majority of the observed lag (~30+ seconds)
Steps to Reproduce

time java -jar ktlint0.40.0.jar --verbose --relative . --format -- AnyFile.kt
java -jar ktlint0.40.0.jar --verbose 1.41s user 0.24s system 150% cpu 1.093 total

Now with the same file in the same state:
time java -jar ktlint0.41.0.jar --verbose --relative . --format -- AnyFile.kt
java -jar ktlint0.41.0.jar --verbose 5.70s user 21.05s system 73% cpu 36.156 total

lsof of the process while in this state shows it trying to traverse the entire directory structure, whereas before this would short circuit only to the files on the command line. I understand the glob logic changed, however something seems up, even if it eventually gets to the right file, it seems to take a rather long time to find it.
Your Environment

Version of ktlint used: 0.41.0, 0.40.0
Name and version (or code for custom task) of integration used (Gradle plugin, Maven plugin, command line, custom Gradle task): command line/java openjdk version "11.0.10" 2021-01-19
Version of Gradle used (if applicable): N/A
Operating System and version: OSX 11.2.3
Link to your project (if it's a public repository):

@greggiacovelli would you be able to test with the latest SNAPSHOT and see if this is resolved? We merged #1144 which may help.

@shashachu  Nice! Simple anecdotal test of changing a single file in the repo with a bunch of spaces and imports reordered. And then invoking ktlint on just the file, resulted in 1 sec time until output

vim repo/File.kt (re-order imports)
time java -jar ktlint-0.42.0-20210628.180722-18-all.jar repo/File.kt

Results in:
repo/File.kt:7:1: Imports must be ordered in lexicographic order without any empty lines in-between
repo/File.kt:28:1: Unexpected indentation (8) (should be 4)
repo/File.kt:47:1: Unexpected indentation (8) (should be 4)
java -jar ktlint-0.42.0-20210628.180722-18-all.jar  1.21s user 0.23s system 144% cpu 1.000 total

vs with no file arguments, evaluates the entire codebase (which is expected)

time java -jar ktlint-0.42.0-20210628.180722-18-all.jar

Results in:
... all files attributed
java -jar ktlint-0.42.0-20210628.180722-18-all.jar  181.80s user 26.65s system 354% cpu 58.827 total

Seems fixed to me

@greggiacovelli great. thanks so much for confirming, and thank you to @rciovati for the fix!

Will be released in 0.42.0 (ETA ~1-2 weeks.)

@shashachu It's not fixed to me, the issue should be reopened.
Version 0.40.0
2,34s user 0,22s system 141% cpu 1,814 total

Version 0.41.0
4,51s user 16,13s system 62% cpu 32,887 total

Version 0.42.0
4,26s user 15,92s system 59% cpu 33,729 total

Version 0.43.2
4,41s user 16,46s system 61% cpu 33,779 total

Tested with the same two files.
It's basically unusable, especially if you have a pre-commit hook.

It's definitely slower but I think the 30 seconds from the past is fixed. I have found it required to either specify all files that need to be formatted/checked via pre-commit or when using it on a code base to prune any stale directories as this adds to the issue. Cpu is not very high so yeah it seems like it's traversing files in your case

it seems like it's traversing files in your case

🤦 You are right!
The default pre-commit hook which is installed via ktlint installGitPreCommitHook passes the current directory as first argument, therefore, even if only changed files are piped, that . at the end of the line is making ktlint checking all files.
This is the pre-commit hook installed by ktlint:
#!/bin/sh
# https://github.com/shyiko/ktlint pre-commit hook
git diff --name-only --cached --relative | grep '\.kt[s"]\?$' | xargs ktlint --relative .
if [ $? -ne 0 ]; then exit 1; fi

Am I wrong?

I was thinking about this.
Even if my pre-commit hook was traversing all files, there is a tremendous performance decrease from 0.40.0 to 0.41.0. I haven't changed the pre-commit hook while performing my tests, which means something has clearly changed in ktlint affecting performances. I ran my tests under the same conditions, just switching ktlint release.
Sure, it doesn't make any sense to traverse all files if you just want to check changed files, but 0.40.0 was way faster than 0.41.0 in doing so.

Ah sorry my sh is not great. Actually after looking over your hook a bit more, I think the intention was for the current directory to be passed to the --relative switch so that all paths are indicated as relative to the current directory. So if that is correct, then yes there should be no overhead in the whole directory.
However that might not function the same after the changes in 0.41.0 as if I recall the way paths were resolved had been re-implemented.  The resulting hook may have been updated too to account for the new behaviors. However it's possible it may not have been updated too
So after re-installing the hook, are the same symptoms present?

I think the intention was for the current directory to be passed to the --relative switch

I don't think that the current directory is an argument for --relative, looking at its documentation
--relative   Print files relative to the working directory (e.g. dir/file.kt instead of /home/user/project/dir/file.kt)

The resulting hook may have been updated

Hooks were never updated after 0.40.0. The one I pasted here is the same from 40 to 0.43.

I think then we found the issue. If after making the change it works then all is good. Can you test and then submit a patch if necessary? Otherwise might be best to file another issue focused on the git hook

@francescocervone You may need to create a new issue to address what you are seeing as it is not 100% related to this issue.
https://github.com/pinterest/ktlint/blob/3866e09dd36f5559f3a7c9f8c1d080f3211d095a/CONTRIBUTING.md


update-engine not updating on hyper-v images

Hi,
Can't find any explanation why our our Flatcar hosts on hyper-v are not able to get the latest updates.
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.877640   733 prefs.cc:51] certificate-report-to-send-update not present in /var/lib/update_engine/prefs
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.877703   733 prefs.cc:51] certificate-report-to-send-download not present in /var/lib/update_engine/prefs
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.879503   733 omaha_request_params.cc:62] Current group set to stable
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.879683   733 update_attempter.cc:486] Already updated boot flags. Skipping.
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.879703   733 update_attempter.cc:629] Scheduling an action processor start.
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.879730   733 action_processor.cc:36] ActionProcessor::StartProcessing: OmahaRequestAction
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.879884   733 omaha_request_action.cc:268] Posting an Omaha request to https://public.update.flatcar-linux.net/v1/update/
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.879897   733 omaha_request_action.cc:269] Request: <?xml version="1.0" encoding="UTF-8"?>
Apr 08 16:32:19 flatcar01 update_engine[733]: <request protocol="3.0" version="update_engine-0.4.10" updaterversion="update_engine-0.4.10" installsource="scheduler" ismachine="1">
Apr 08 16:32:19 flatcar01 update_engine[733]:     <os version="Chateau" platform="CoreOS" sp="2605.12.0_x86_64"></os>
Apr 08 16:32:19 flatcar01 update_engine[733]:     <app appid="{e96281a6-d1af-4bde-9a0a-97b76e56dc57}" version="2605.12.0" track="stable" bootid="{27c2cd60-ec8f-44af-ba19-3c11cfa0a00f}" oem="hyperv" oemversion="0.1.0" alephversion="2605.12.0" machineid="1d6cb1fc8f54457e9ec13213e679ffa9" machinealias="" lang="en-US" board="amd64-usr" hardware_class="" delta_okay="false" >
Apr 08 16:32:19 flatcar01 update_engine[733]:         <ping active="1"></ping>
Apr 08 16:32:19 flatcar01 update_engine[733]:         <updatecheck></updatecheck>
Apr 08 16:32:19 flatcar01 update_engine[733]:         <event eventtype="3" eventresult="2" previousversion=""></event>
Apr 08 16:32:19 flatcar01 update_engine[733]:     </app>
Apr 08 16:32:19 flatcar01 update_engine[733]: </request>
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.879907   733 libcurl_http_fetcher.cc:48] Starting/Resuming transfer
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.879964   733 libcurl_http_fetcher.cc:167] Setting up curl options for HTTPS
Apr 08 16:32:19 flatcar01 update_engine[733]: I0408 16:32:19.880137   733 libcurl_http_fetcher.cc:435] Setting up timeout source: 1 seconds.
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.322675   733 libcurl_http_fetcher.cc:248] HTTP response code: 200
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.324213   733 libcurl_http_fetcher.cc:305] Transfer completed (200), 311 bytes downloaded
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.324239   733 omaha_request_action.cc:619] Omaha request response: <response protocol="3.0" server="nebraska"><daystart elapsed_seconds="0"></daystart><app appid="{e96281a6-d1af-4bde-9a0a-97b76e56dc57}" status="error-updateInProgressOnInstance"><ping status="ok"></ping><updatecheck status="error-internal"><urls></urls></updatecheck><event status="ok"></event></app></response>
Apr 08 16:32:20 flatcar01 update_engine[733]: E0408 16:32:20.324352   733 omaha_request_action.cc:417] Unknown Omaha response status: error-internal
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.324389   733 action_processor.cc:68] ActionProcessor::ActionComplete: OmahaRequestAction action failed. Aborting processing.
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.324401   733 action_processor.cc:73] ActionProcessor::ActionComplete: finished last action of type OmahaRequestAction
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.324409   733 update_attempter.cc:293] Processing Done.
Apr 08 16:32:20 flatcar01 update_engine[733]: E0408 16:32:20.324434   733 update_attempter.cc:606] Update failed.
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.324446   733 payload_state.cc:97] Updating payload state for error code: 34 (kActionCodeOmahaResponseInvalid)
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.324456   733 payload_state.cc:103] Ignoring failures until we get a valid Omaha response.
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.325029   733 action_processor.cc:36] ActionProcessor::StartProcessing: OmahaRequestAction
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.325067   733 omaha_request_action.cc:268] Posting an Omaha request to https://public.update.flatcar-linux.net/v1/update/
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.325079   733 omaha_request_action.cc:269] Request: <?xml version="1.0" encoding="UTF-8"?>
Apr 08 16:32:20 flatcar01 update_engine[733]: <request protocol="3.0" version="update_engine-0.4.10" updaterversion="update_engine-0.4.10" installsource="scheduler" ismachine="1">
Apr 08 16:32:20 flatcar01 update_engine[733]:     <os version="Chateau" platform="CoreOS" sp="2605.12.0_x86_64"></os>
Apr 08 16:32:20 flatcar01 update_engine[733]:     <app appid="{e96281a6-d1af-4bde-9a0a-97b76e56dc57}" version="2605.12.0" track="stable" bootid="{27c2cd60-ec8f-44af-ba19-3c11cfa0a00f}" oem="hyperv" oemversion="0.1.0" alephversion="2605.12.0" machineid="1d6cb1fc8f54457e9ec13213e679ffa9" machinealias="" lang="en-US" board="amd64-usr" hardware_class="" delta_okay="false" >
Apr 08 16:32:20 flatcar01 update_engine[733]:         <event eventtype="3" eventresult="0" errorcode="34"></event>
Apr 08 16:32:20 flatcar01 update_engine[733]:     </app>
Apr 08 16:32:20 flatcar01 update_engine[733]: </request>
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.325090   733 libcurl_http_fetcher.cc:48] Starting/Resuming transfer
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.325155   733 libcurl_http_fetcher.cc:167] Setting up curl options for HTTPS
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.325300   733 libcurl_http_fetcher.cc:435] Setting up timeout source: 1 seconds.
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.512912   733 libcurl_http_fetcher.cc:248] HTTP response code: 200
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.514719   733 libcurl_http_fetcher.cc:305] Transfer completed (200), 192 bytes downloaded
Apr 08 16:32:20 flatcar01 update_engine[733]: I0408 16:32:20.514747   733 omaha_request_action.cc:619] Omaha request response: <response protocol="3.0" server="nebraska"><daystart elapsed_seconds="0"></daystart><app appid="{e96281a6-d1af-4bde-9a0a-97b76e56dc57}" status="ok"><event status="ok"></event></app></response>
Apr 08 16:32:20 flatcar01 update_engine[733]: E0408 16:32:20.514775   733 omaha_request_action.cc:626] HTTP reported success but Omaha reports an error.

The error messages are not helpful in this case. Would appreciate any suggestion or advice.
Thanks !

The error here from yesterday is that an update was already in progress. In the server I see the most recent error from march as DownloadTransferError with ResumedFlag. Can you check that you don't use the same machine ID on multiple instances?

@pothos is there a way to change the machine ID ?

Ok, there were similar cases and it's not supported, sorry (maybe file a Nebraska issue?).
The ID is generated on first boot and should be unique. You can delete the file and reboot or write a new ID with systemd-id128 machine-id | sudo tee /etc/machine-id.

This will help you do the update and then you can let it reboot once to make the ID get picked up for everything.

The following worked for me:
rm -f /etc/machine-id
systemd-machine-id-setup
update_engine_client -update
reboot
I have a question.    We ran into this issue due to using the HyperV image,
https://stable.release.flatcar-linux.net/amd64-usr/current/flatcar_production_hyperv_image.vhd.bz2
and then deploying it to multiple servers on multiple sites via powershell.   Besides running the above script on each server on first startup, what would be the best way going forward?

If you clone the image, you need to do it before the first boot

If you clone the image, you need to do it before the first boot

Ok, understood.  The funny thing is, we used to deploy the same way in VMWare, and never got an issue.

I don't think the platform matters. Here is an old report with the same problem: https://github.com/kinvolk/Flatcar/issues/228
There are other problems related to having the image booted already and trying to use it again as normal image. For example, Ignition won't run again even if you pass Ignition user data, and systemd preset handling also doesn't work anymore which means that even if you force Ignition to run, it won't enable the services you define.
I'll close this issue now, thanks for the quick responses.


Update libreofficedev to <IP_ADDRESS>

After making all changes to the cask:

[x] brew cask audit --download {{cask_file}} is error-free.
[x] brew cask style --fix {{cask_file}} left no offenses.
[x] The commit message includes the cask’s name and version.

Is this an update to the stable version?

@vitorgalvao No, the current stable release is 6.0.3.

Error: It seems the App source '/usr/local/Caskroom/libreofficedev/<IP_ADDRESS>/LibreOfficeDev.app' is not there.

@vitorgalvao Just wondering, why is TravisBuddy not enabled for this repository?

This is now a duplicate of libreoffice-rc

@commitay don't need to remove it, since libreofficedev != libreoffice-rc, when there will be new alpha or beta we will update it.

Closing for now, we'll see if upstream publishes a new release sometime in the next couple of months.
Thanks for the PR nonetheless @gtmgianni!


Add require('path') to example task

Path is used but never required

Thanks for catching this omission!
One technicality before I could merge this PR: could you please read through and (if you agree to) electronically submit the Google Individual Contributor License Agreement?

Done

Thanks!


fix: wrong gatewayclass status without paramsRef

What this PR does / why we need it:
Fixing the bug:
Providing GatewayClass without paramsRef
apiVersion: gateway.networking.k8s.io/v1beta1
kind: GatewayClass
metadata:
  name: example-class
spec:
  controllerName: gateway.envoyproxy.io/gatewayclass-controller

results in error in the provider, not accepting the GatewayClass.
ERROR provider kubernetes/controller.go:330 failed to process parametersRef for gatewayclass
{"runner": "provider", "name": "example-class", "error": "failed to find envoyproxy referenced by gatewayclass: example-class"}

  status:
    conditions:
    - message: 'Invalid parametersRef: failed to find envoyproxy referenced by gatewayclass:
        example-class'
      observedGeneration: 2
      reason: InvalidParameters
      status: "False"
      type: Accepted

NAME            CONTROLLER                                      ACCEPTED   AGE
example-class   gateway.envoyproxy.io/gatewayclass-controller   False      2m

PTAL @arkodg
seems like we have missed something during this
https://github.com/envoyproxy/gateway/pull/1534#discussion_r1307999971


use modal to display JSON

Closes https://github.com/ZebraDevs/Zebra-Iota-Edge-SDK/issues/53

Hidden feature: Double clicking QR or DataMatrix codes will open a modal with the JSON. e.g:


Runtime errors in dev tools OG Image preview when SFC has style in lang=scss

Describe the bug
Here is the error I get

Reproduction
No response
System / Nuxt Info
No response

Would it be possible to provide a reproduction?

Hi @harlan-zw, Im also having this issue on my personal webpage
My project uses sass, and OgImage works using version 2.0.0-beta.45
After upgrading to 2.0.0-beta.55 and even switching defineOgImage to defineOgImageComponent I receive the same error as @ennioVisco described
I think it has something to do with having a Footer.vue inside components :o
I tried to create a reproduction, its my first reproduction so, if theres something wrong, please tell me!
Also, message me if theres anything i can help with.
https://stackblitz.com/edit/nuxt-starter-67zxeh?file=components%2FFooter.vue

Thanks for the reproduction @dethdkn! It's setup perfectly.
I've pushed up a fix for the bug, there's a wider issue with Nuxt Islands in that it's rendering non-related component styles as part of the render. For example, rendering the home page OG Image also renders the Footer styles... Will need to make an upstream issue.
Available in 3.0.0-rc.28, let me know if you have any further issues.


[BUG] Rendering regression with Phosphor font

Checklist before submitting an issue

[X] I have searched through the existing closed and open issues for eww and made sure this is not a duplicate
[X] I have specifically verified that this bug is not a common user error
[X] I am providing as much relevant information as I am able to in this bug report (Minimal config to reproduce the issue for example, if applicable)

Description of the bug
Icons provided by the Phosphor font don't display as they should
Reproducing the issue

Use the font-family: "Phosphor" css rule on one of your labels
Put text that matches the hex that should display one of the icons as indicated in the Phosphor website/github repo on this label
Show widget : icon is rendered as the … character instead

Expected behaviour
The same rendering of icons that Libreoffice provides :

Additional context
This happened to me while transitionning from aur package eww-tray-wayland-git (r46.5b507c8-1) to eww-git (version 0.5.0.r13.g1e37f53-1 to be specific). Icons were rendering neatly before this.
The font selection seems to indeed work since putting an incorrect font name in the font-family field renders ascii chars in a different way. Furthermore, putting my terminal font in the font-family field renders the icons the same way they are rendered in my terminal (as expected and can be seen in the last screenshot).
I tried reloading the daemon then rebooting but nothing has changed.
configuration of current widget for context :
eww.yuck :
;; powermenu
(include './powermenu.yuck')

;; statusbar
(include './statusbar.yuck')

powermenu.yuck
(defwindow powermenu
    :monitor 0
    :stacking "overlay"
    :namespace "eww-powermenu"
    :geometry (geometry :anchor "bottom center"
                        :y "5%"
              )
    (powermenu_layout)
)

(defwidget powermenu_layout []
    (box :class "pwer-main"
         :spacing 15
         :space-evenly false
         :valign "center" :halign "center"
        (_buttons :shutdown "shutdown now"
                  :reboot "reboot"
                  :logout "loginctl kill-session self"
                  :sleep "playerctl -a pause; eww close powermenu; systemctl suspend"
                  :lock "eww close powermenu; swaylock -f -e --screenshots --indicator --clock --timestr '%H:%M' --datestr '' --font 'SpaceMono Nerd Font Mono' --font-size 30 --effect-blur 7x5 --effect-vignette 0.3:0.9 --fade-in 0.2 --indicator-radius 140 --indicator-thickness 7 --{inside,inside-clear,inside-wrong,inside-ver,inside-caps-lock,line,line-clear,line-caps-lock,line-ver,line-wrong,separator}-color=ffffff00 --{ring,ring-clear,ring-caps-lock}-color=07080870 --ring-ver-color=84b5e070 --ring-wrong-color=fb493470 --{caps-lock-key,key}-hl-color=84ef89 --{caps-lock-bs-hl,bs-hl}-color=fabd2f --{text,text-clear,text-caps-lock,text-ver,text-wrong}-color=ebdbb2 &"
                  :shutdown_icon "" :reboot_icon "" :logout_icon ""
                  :sleep_icon "" :lock_icon ""
        )
        (label :class "pwer-separator" :text "")
        (button :class "pwer-close-button" :onclick "eww close powermenu" "")
    )
)

(defwidget _buttons [shutdown shutdown_icon reboot
                     reboot_icon sleep sleep_icon
                     logout logout_icon lock lock_icon]
    (box :class "pwer-btns-box" :spacing 5
         :vexpand true :hexpand true
         :valign "center" :halign "center"
         :space-evenly false
        (button :class "pwer-shutdown" :onclick shutdown shutdown_icon)
        (button :class "pwer-reboot" :onclick reboot reboot_icon)
        (button :class "pwer-sleep" :onclick sleep sleep_icon)
        (button :class "pwer-logout" :onclick logout logout_icon)
        (button :class "pwer-lock" :onclick lock lock_icon)
    )
)

eww.scss :
*:not(menu):not(menuitem):not(tooltip) {
    all: unset;
}

@import './colors.scss';
@import './powermenu.scss';
@import './statusbar.scss';

tooltip {
    background: $color-bg;
    color: $color-fg;
    font-family: "SpaceMono Nerd Font Mono";
    border-radius: 0;
}

powermenu.scss :
$opacity: 0.6;

.pwer-main {
    background-color: rgba($color-bg, $opacity);
    padding: 1em;
    //border-radius: 0.5em;
}
.pwer-main button { font-family: "Phosphor"; }
.pwer-btns-box button {
    background-color: $color-bg;
    padding: 1em;
    color: $color-fg;
    border: solid 1px $color-fg;
    transition: 200ms ease-in-out background-color, color;
    &:hover {
        background-color: $color-bg-tertiary;
    }
}

.pwer-shutdown:hover { color: $color-red; }
.pwer-reboot:hover { color: $color-orange; }
.pwer-sleep:hover { color: $color-blue; }
.pwer-logout:hover { color: $color-yellow; }
.pwer-lock:hover { color: $color-purple; }

.pwer-separator {
    border-left: solid 1px $color-fg;
    color: $color-fg;
}
.pwer-close-button {
    color: $color-fg;
    transition: 200ms ease-in-out color;
    padding-right: 0.5em;
    padding-left: 0.25em;
    font-size: 1.25em;
    &:hover {
        color: $color-red;
    }
}

i have same problem with my powermenu and calendar widgets but with font jetbrainsmono nerd font and with font awesome

3 dots instead the hour and minutes.

I fixed labels adding :show-truncated "false"
But when is an event box and a button, this didnt work


What is the feature importance returned by 'gain' ?

Does the output of LGBMClassifier().booster_.feature_importance(importance_type='gain') is equivalent to gini importances which used by RandomForestClassifier provided by Scikit-Learn (https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html) ?

Well, they are roughly equivalent. The Random Forest implementation in sklearn is based on Breiman's paper; therefore, the loss used in the model is the gini impurity (and the information gain is measured in terms of that loss).
On LGBM, however, you define the loss metric to minimize directly. It is not gini impurity, but rather logloss (cross-entropy loss) for instance if your objective='binary'. If you define a different objective in the model hyperparameter, the loss to minimize will be another one (you can see which ones in https://lightgbm.readthedocs.io/en/latest/Parameters.html#core-parameters)
However, even for the same data, feature importance estimates between RandomForestClassifier and LGBM can be different; even if both models were to use the exact same loss (whether it is gini impurity or whatever). Don't forget that these estimates are what the model 'thinks' about the features and the dataset, which unless your model is a perfect predictor, will be not always right nonetheless

Thank you @julioasotodv for your answer!
Another worth reading article: https://medium.com/the-artificial-impostor/feature-importance-measures-for-tree-models-part-i-47f187c1a2c3.


Remove erroneous Java CPEs from generation

Per discussion w/ @wagoodman: filter out CPEs known to be incorrect, specifically as CPEs that match non-Maven components to Maven vulnerabilities.
Also adds one case for counting a "Gradle Enterprise" plugin as Gradle Enterprise itself.

Linking to https://github.com/anchore/grype/issues/1179 since this will solve a decent portion of the false positives reported there


RECS0107 should not be reported because it makes performance worse

In C#, string concatenation operators are compiled to the method call of String.Concat.
When value types are passed to String.Concat without converted into string, they will be boxed and make performance worse.
So RECS0107 should not be reported.

I think it makes sense, thank you!


problem of file direction

Hi dear yang, i found that save file seems always direct to the dist folder. Please add widgets to open save file dialog. Thank you!

The outputs have multiple files, to save time from saving each file manually, we did not add fiel dialog for that. But we could change the default directory in the future.


Dedicated commands to manage IDM mappings

While frodo supports exporting and importing mappings using the frodo idm export/import -A commands, a dedicated command for mappings would come in very handy.

@phalestrivir please tag this issue when you create a PR for the mapping command you are working on.

Done.


compatibility problem with ESP32?

ModbusMaster version
[Version of the project where you are encountering the issue]
Arduino IDE version
[Version of Arduino IDE in your environment]
Arduino Hardware
[Hardware information, including board and processor]
Platform Details
[Operating system distribution and release version]

Scenario:
[What you are trying to achieve and you can't?]
Steps to Reproduce:
[If you are filing an issue what are the things we need to do in order to repro your problem? How are you using this project or any resources it includes?]
Expected Result:
[What are you expecting to happen as the consequence of above reproduction steps?]
Actual Result:
[What actually happens after the reproduction steps? Include the error output or a link to a gist if possible.]

Feature Request
Narrative:

As a [role]
I want [feature]
So that [benefit]

Acceptance Criteria:

Scenario 1: Title
Given [context]
  And [some more context]...
When  [event]
Then  [outcome]
  And [another outcome]...

Hi. Can you post your code sample. Are you using a MAX485 TTL to RS485 board ?

Hi, sample code: https://github.com/espressif/arduino-esp32/issues/991#issuecomment-357539051
and yes, I'm using the MAX485 board, it runs fine on CMOS levels

thanks for the info. i can see that I am sending the data out the ttl side because when I hookup a ttl to usb then I can see data. But nothing happens on the rs485 side. how did you wire it? you say it works with 3.3 volt as the board stated it is a 5v board.

you need to tie DE an RE together, and define in the pre- and post transmission routines to set this pin 'high' to transmit, and a 'low' to receive. Easiest way to verify is by scope. if you son't see a pulsetrain between the A-B lines, try swapping TX and RX.

Also can you post your full code. You state you need to add a delay but is that before or after ?

Did you connect VCC to the 3.3v of the ESP32 and ground to the ground of the ESP32 on the RS485 side ?

I have a board like this one https://www.aliexpress.com/item/2PCS-MAX485-module-RS-485-module-TTL-to-RS-485-module/2055143247.html?spm=2114.search0<IP_ADDRESS>775fbdCQVtF&ws_ab_test=searchweb0_0,searchweb201602_5_10152_10151_10065_10344_10068_10342_10343_10340_10341_10084_10083_10618_10630_10307_5711211_5722315_10313_10059_10534_100031_10103_10627_10626_10624_10623_10622_5711315_10621_10620_10142,searchweb201603_25,ppcSwitch_5&algo_expid=09faa6d7-7220-46b1-bade-6fe46f4c8feb-0&algo_pvid=09faa6d7-7220-46b1-bade-6fe46f4c8feb&priceBeautifyAB=0

Hi, I cannot post full code since it's a professional application. But yes, I'm using a very similar board, powered by 3,3V and ground coming from the ESP32. The delays are not so important. You just need to make sure when you're sending modbus commands, the previous ones had the time to execute. You can do this by adding delays, but there are also better ways.

post you schematic and code, I'll check

you're trying to read modbus information from the Serial-UART??? your modbus-uart is called 'modbusSerial', so you should try to read from that one.
you're also making it complicated by trying to decypher the modbusSerial info yourself. Try using the node.readmultipleregisters(start index, quantity) followed by node.getresponsebuffer(index)
And by using this large delay in the post-tranmission loop you're probable missing the modbus slave answer.

RS485 is differential transmission so you should measure between A-B

Hi. MobusSerial is just a variable name of the UART handle of UART1. I could call it Sarial1 also. I like to keep descriptive names. I use a three UARTS on the ESP32. So giving it a name helps to make the code readable.
I do pass the modbus master the modbus serial handlel
''''
node.begin(1, ModbusSerial);
''''
Where you see that I did a printline to mobusSerial I tested to see if I could see data on the line. That is now commented out.
I saw that the data would be scrambled if I use all 3 at the same time. I added the Flush and that will fix the UART and then all 3 work fine,
Here is a better diagram.

I dont understand this statement
"you're also making it complicated by trying to decypher the modbusSerial info yourself. Try using the node.readmultipleregisters(start index, quantity) followed by node.getresponsebuffer(index)"
Where do you see I am reading the modbus data myself? I am doing it via the Modbus Master lib.

The Checkserial stuff is my command structure that I use to send commands via the serial port. If I send a U1 it will call the function stop_vsd() that will call via modbus. U2 will start and U3 will read the register. That is on serial line that the serial monitor works on.

I see. you should definitely see the pulse train on the AB lines, no use in looking further before you see a pulsetrain. If you have pulses on Tx, and RE/DE is at the right level, you should see pulses between AB....
and the node.readholdingregisters doesn't return the data, it returns a constant indicating success/failure to transmit. You should read from the responsebuffer.
I only got serial(1) working, there's a problem with serial(2), but maybe you've fixed it with that flush() command.

OK let me have a look. I have code that is already working on a Raspberry Pi that I wrote in Python. I am just re writing it to see if all will work on the ESP32. That is why I thought I had to use
run_speed = node.readHoldingRegisters(0x101F , 0);

as this is what I did in Python using minimalmodbus

runspeed = vsd.read_register(0x101F, 0, functioncode=3)

So does readHoldingRegisters only do the function and I need to read it from a buffer somewhere ?

Did I do the wiring correct ? I do not see any pulses on the A B side. But maybe my scope does not pick it up as I have a wifi iPad scope.

OK I see pulses on the A and B side. But I have to use ground and A oe B not between A and B. So let me check the cabels from the RS485 module first.

OK I got it working.
I had a look at my Python code again and saw the Parity was  Even.
I checked the serial setup to
ModbusSerial.begin(9600 ,SERIAL_8E1, 4, 15);

Now I can start and stop. Still need to figure out the read but at least now I have comms. Thanks for the help.

no problem, good you got it working. Did you get it working with the third UART, using serial(2)?

I am use al 3 UART now.
  HardwareSerial ActuatorSerial(1);
  HardwareSerial ModbusSerial(2);

  Serial.begin(115200);
  ActuatorSerial.begin(115200, SERIAL_8N1, 16, 17);
  ModbusSerial.begin(9600 ,SERIAL_8E1, 4, 15);

For some reason my new ESP32 doit V1 has different issues than the ones I received in the past.
First of all there is the timing issue between the serialTXcontrol and the TX-data, this could be fixed by adding 2ms delay in the posttransmission routine. Also documented here: https://github.com/4-20ma/ModbusMaster/issues/93
The thing that bothers me the most is that ESP uart doesn't read the slave information correct: my slave responds about 25ms after the master request, by then holding the A-B positive for about 40ms before sending the dataset. The dirty fix was to hold the DE+RE high in the posttransmission routine(~50ms) untill about in the middle of this 40ms A-B positive. I don't know why the ESP32 uart doesn't read the data correct if I don't add this delay.  It doesn't work with 10ms, or with 100ms, it needs to be 50ms and that worries me :-) An arduino mega works fine with the same MAX485 driver board

Did you fix the esp32-hal-uart.c code ?. You have to comment out
    //uart->dev->conf0.txfifo_rst = 1;
    //uart->dev->conf0.txfifo_rst = 0;

    //uart->dev->conf0.rxfifo_rst = 1;
    //uart->dev->conf0.rxfifo_rst = 0;

Hi Jaco, I'll try that tomorrow. I just compared scope images on the working max485 driver on arduino mega (TTL 5V), and then the same driver on the ESP32(CMOS 3.3V). They are very different:
on the ESP:

DI(TX) appears on the RO(RX) line during write (with RE & DE high)
when RE+DE is low after write from master, the RO(RX) line is ~0V

on the mega (where everything works):

RI(TX) data does not appear on the RO(RX) line during write (with RE & DE high)
when RE+DE is low after write from master, the receiver out line is ~5V

I think there are different versions of the MAX485 (bought on ALIEX), my latest batch doesn't seem to like CMOS 3.3V level. I'll also try some level shifting tomorrow

Hallelujah, got it working. This MAX485 driver board (the one we all use?); contrary to what I claimed earlyer, they don't all work on 3.3V although the chips appear to be the same type!!!
So I powered it from 5V (USB voltage, Vin), driver inputs RE/DE and TX can be connected directly to the ESP as <0.8V is low and +2V is high according to MAX485 datasheet. Only on the receiver output (RO) I made resistor divider 3,4K/6,8K for not overloading the ESP's RX input.
I tried the haluart fix, but it doesn't work anymore after that, so changing nothing is better for me :-)
So this setup works...

I have ordered these 2 3.3v and 5 v ttl to RS-485 boards.
https://www.aliexpress.com/item/Stable-UART-Serial-Port-to-RS485-Converter-Function-Module-RS485-to-TTL-Module/32442485555.html
https://www.aliexpress.com/item/TTL-to-RS485-Module-RS485-Signal-Converter-3V-5-5V-Isolated-Single-Chip-Serial-Port-UART/32817054584.html
Will see how they are when I get them.

interesting, let us know your feedback when you've tested them.

Hi, can you please provide the working code.

I am getting responsetimeout error, while reading holding resisters

my code is derived from the example sketches provided by the 4-20mA Modbus library. Just comment out the driver enable lines. Maybe the problem is your application that host doesn't respond or incorrect wiring? You could check with scope if signal is sent via AB-lines to the host.

Hi,
Below is the code I am using, please check and let me know if doing it correct.
#include <HardwareSerial.h>
#include <ModbusMaster.h>
HardwareSerial MySerial1(1);
ModbusMaster node;
#define SSerialTxControl 7
void preTransmission()
{
MySerial1.flush();
digitalWrite(SSerialTxControl, HIGH);
Serial.println("Transmit On");
}
void postTransmission()
{
delayMicroseconds(120);
digitalWrite(SSerialTxControl, LOW);
Serial.println("Transmit Off");
}
void setup() {
MySerial1.begin(115200, SERIAL_8N1,16,17);
Serial.begin(115200);
node.begin(1,MySerial1);
//MySerial1.setDebugOutput(HIGH);
Serial.println(MySerial1.read());
pinMode(SSerialTxControl, OUTPUT);
digitalWrite(SSerialTxControl, LOW);
// Callbacks allow us to configure the RS485 transceiver correctly
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);

}
void loop() {
uint8_t j, result;
uint16_t data[1];
result = node.readHoldingRegisters(520,1);
Serial.println(result);
if (result == node.ku8MBSuccess)
{
Serial.print("Hi");
for (j = 0; j < 1; j++)
{
data[j] = node.getResponseBuffer(j);
Serial.print(data[j]);
       }
  }

}

Using a max485 on an ESP32, it can be done but I don't recommend it because it's made for 5V operation and it behaves funny on 3.3V. Instead I strongly suggest to use the hardware from my last link, that one is compatible with 3.3V and very easy to use.
About your code: I don't do the flush() command, and pretransmission and posttransmission functions can be left empty, no need to control a DE line with hardware from my latest link. the board has autodetect when to enable it's drivers. Besides that I think your code should work. Good luck

Hi, i need help about that, i have a TTGO LORA32 V2.1.6 and a TTL to RS485 module same to it used Jaco, i need to write and read holding registes from a PLC and i made this code:
#include <ModbusMaster.h>
#include "SSD1306.h"
#define MAX485_DE   36
#define MAX485_RE_NEG 39
SSD1306 display(0x3c, 21, 22);
uint16_t resultMain;
uint8_t resultMain1;
int i = 250;
ModbusMaster node;
HardwareSerial ExtraSerial1(1);
void preTransmission()
{
//ExtraSerial1.flush();
digitalWrite(MAX485_RE_NEG, 1);
digitalWrite(MAX485_DE, 1);
//Serial.println("Transmit On");
}
void postTransmission()
{
//delay(200);
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
//Serial.println("Transmit Off");
}
void setup() {
display.init();
pinMode(MAX485_RE_NEG, OUTPUT);
pinMode(MAX485_DE, OUTPUT);
//init int receive mode
digitalWrite(MAX485_RE_NEG, 0);
digitalWrite(MAX485_DE, 0);
Serial.begin(115200);
//Modbus communication runs at 115200 baud
ExtraSerial1.begin(9600);
//Modbus Slave ID 1
node.begin(1, ExtraSerial1);
//callbacks allow us to configure the RS485 transceiver correctly
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
}
void loop() {
display.clear();
display.drawString(0,0, "resultMain1: " + String(resultMain1,HEX));
display.display();
Serial.print("resultMain1: ");
Serial.println(resultMain1,HEX);
resultMain1 = node.writeSingleRegister(0x01, i);
//Serial.print("resultMain1: ");
//Serial.println(resultMain1,HEX);
i=i+1;
//delay(1000);
resultMain = node.readHoldingRegisters(0x00, 1);
if (resultMain == node.ku8MBSuccess)
{
Serial.print("prueba: ");
Serial.println(node.getResponseBuffer(0) / 100.0f);
display.clear();
display.drawString(0,0, "resultMain: " + String(node.getResponseBuffer(0x00)));
display.display();
}
else
{
Serial.println("Error");
display.clear();
display.drawString(0,0, "No hay respuesta");
display.display();
}
delay(1000);
}
the command "writeSingleRegisters" is writing fine but the answer is "0xe2" for both "resultMain" and "resultMain1",  so i can not watch any holding registers requested. Can you help me please

to avoid watchdog timeouts in ESP32 when waiting for a slave response (or when no slave connected), you can disable the watchdog as described above. However this is not ideal. Also when working with multi-thread freeRTOS, the operating system should have the chance to jump to another task when waiting for slave response.
This can be done by inserting a 1ms delay in the transmission loop, it also avoids watchdog timeouts:
Since modbus send/receive is slow, I'm using the modbus communication is a seperate freeRTOS task.
in the modbusMaster.ccp file:
// loop until we run out of time or bytes, or an error occurs
  u32StartTime = millis();
  while (u8BytesLeft && !u8MBStatus)
  {
    delay(1);			//WKE to avoid ESP32 watchdog timeout and reset
	if (_serial->available())
    {
#if __MODBUSMASTER_DEBUG__
      digitalWrite(__MODBUSMASTER_DEBUG_PIN_A__, true);
#endif
      u8ModbusADU[u8ModbusADUSize++] = _serial->read();
      u8BytesLeft--;
#if __MODBUSMASTER_DEBUG__
      digitalWrite(__MODBUSMASTER_DEBUG_PIN_A__, false);

Hi guys,
Im trying to connect a ESP32 DEV KIT V1 with a MODBUS RTU Slave through this device. However, I have not received a response, even i tested it with SymplyModbusMaster, this adapter and my laptop successfully:

This  is my arduino code, I am using the 4-20ma library:
"
#include <ModbusMaster.h>
#define MAX485_RE_NEG  2
#define MAX485_DE      4
#define RX2 16
#define TX2 17

ModbusMaster node; // Define a ModbusMaster object

void preTransmission()
{
  digitalWrite(MAX485_RE_NEG, 1);
  digitalWrite(MAX485_DE, 1);
}

void postTransmission()
{
  digitalWrite(MAX485_RE_NEG, 0);
  digitalWrite(MAX485_DE, 0);
}

void setup()
{
  pinMode(MAX485_RE_NEG, OUTPUT);
  pinMode(MAX485_DE, OUTPUT);
  digitalWrite(MAX485_RE_NEG, 0);
  digitalWrite(MAX485_DE, 0);
  Serial.begin(9600);
  Serial1.begin(9600, SERIAL_8N1, RX2, TX2); //Define both serial channels at 9600 bps
  node.begin(1, Serial2); //Start the serial comm over node object, with Serial1, Slave ID = 1...
  node.preTransmission(preTransmission);
  node.postTransmission(postTransmission);
}

void loop()
{
  uint8_t readingResults, j, toread;
  uint16_t data1[40]; //
  toread = 4; //16 bit data registers to read... not consider zero.
  float f1,f2,f3,f4,f5,f6,f7,f8,f9,f10; //for saving the registers in float format...
  float f11,f12,f13,f14,f15,f16,f17,f18,f19,f20;

  readingResults = node.readHoldingRegisters(0x0036, toread); //Read address 54, toread 16-bit registers
  if (readingResults == node.ku8MBSuccess)
  {
    Serial.println("\nReadings ");
    for (j = 0; j < toread+1 ; j++)
    {
      Serial.println(">word in HEX");
      data1[j] = node.getResponseBuffer(j);
      Serial.println(data1[j], HEX);
    }
    Serial.println("\nReading ");
    memcpy(&f1,data1,4); //First block of floats
    Serial.println(f1);
    memcpy(&f2,data1+2,4);
    Serial.println(f2);
    memcpy(&f3,data1+4,4);
    Serial.println(f3);
    memcpy(&f4,data1+6,4);
    Serial.println(f4);
    memcpy(&f5,data1+8,4);
    Serial.println(f5);
    memcpy(&f6,data1+10,4);
    Serial.println(f6);
    memcpy(&f7,data1+12,4);
    Serial.println(f7);
    memcpy(&f8,data1+14,4);
    Serial.println(f8);
    memcpy(&f9,data1+16,4);
    Serial.println(f9);
    memcpy(&f10,data1+18,4);
    Serial.println(f10);

    memcpy(&f11,data1+20,4); //Second block of floats
    Serial.println(f11);
    memcpy(&f12,data1+22,4);
    Serial.println(f12);
    memcpy(&f13,data1+24,4);
    Serial.println(f13);
    memcpy(&f14,data1+26,4);
    Serial.println(f14);
    memcpy(&f15,data1+28,4);
    Serial.println(f15);
    memcpy(&f16,data1+30,4);
    Serial.println(f16);
    memcpy(&f17,data1+32,4);
    Serial.println(f17);
    memcpy(&f18,data1+34,4);
    Serial.println(f18);
    memcpy(&f19,data1+36,4);
    Serial.println(f19);
    memcpy(&f20,data1+38,4);
    Serial.println(f20);

  }
  else {
    Serial.print("\nConnection error: ");
    Serial.println(readingResults, HEX);
  }
  delay(500);
}

"
When wired, I get the error E0, but the slave has this address (1) and comm settings... I have read that there is an issue with ESP32 and MODBUS RTU, and I modified the Modbusmaster.cpp with a 1 ms delay in line, but then I get the E2 error... Do you recommend use the board you mentioned @TLS1000 ??? > https://www.aliexpress.com/item/Stable-UART-Serial-Port-to-RS485-Converter-Function-Module-RS485-to-TTL-Module/32442485555.html Or could you suggest something to establish communication??


Update on Payment card number

Hello,
An update on Payment card number was released the 2022-08-22T02:22:08Z. Check for any new Issuer identification number edit. Link to the diff. Here is the summary:
Reverted edits by 2001:8003:A08A:C400:415:735A:B6B9:8E26 (talk) to last revision by Ira Leviton: nonconstructive edits
Can't load revision<PHONE_NUMBER>
If this Wikipedia's edit does not affect us, just ask for this issue to be close.
In case of trouble, ask for @aloisdg

As usual, only the text changed

One day we could take the time to improve the bot :)

Would be a nice idea :)
But it's going to be hard differenciating between flavor text and meaningful text, so maybe a hard binding on sections of the article?


RuntimeError: application not registered on db instance and no application bound to current context

When I use
db = SQLAlchemy()
db.init_app(app)

will raise the exception:
RuntimeError: application not registered on db instance and no application bound to current context
but db = SQLAlchemy(app) is ok

An app is only bound to the extension if it is passed directly, which is a shortcut when you're not using the app factory pattern.  Otherwise, you can only use most of it within an app context so that current_app is populated.  If you're in a view, this is is invisible, but if you're not you need to push a context:
with app.app_context():
    db.session.query(...)


Update bugs.md for minio-operator

This is very cool! Thanks @TZ-zzz

@TZ-zzz Would you be willing to fix this failed CI? https://github.com/xlab-uiuc/acto/commit/ed0fc72bf06677701697677dc6b48ab30a26d88f
I think the problem is at this line for the python version: https://github.com/xlab-uiuc/acto/actions/runs/8428377473/workflow#L42 Somehow github action gets 3.1 instead of 3.10

@tylergu Yes, I can fix this. The bug is mentioned at https://github.com/actions/setup-python/issues/160 and the solution is to add a quote for the version.


cmd/compile: "version […] does not match go tool version" error is too vague

What version of Go are you using (go version)?

deklerk at deklerk in ~/workspace/google-cloud-go on master
$ go version
go version go1.11.5 linux/amd64

Does this issue reproduce with the latest release?
Yes, I get version "go1.12.5" does not match go tool version "go1.13".
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GOARCH="amd64"
GOBIN="/usr/local/google/home/deklerk/dev/go1.12.5.linux-amd64/go/bin"
GOCACHE="/usr/local/google/home/deklerk/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/usr/local/google/home/deklerk/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/google/home/deklerk/dev/go1.12.5.linux-amd64/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/google/home/deklerk/dev/go1.12.5.linux-amd64/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/usr/local/google/home/deklerk/workspace/google-cloud-go/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build676893260=/tmp/go-build -gno-record-gcc-switch

What did you do?
deklerk at deklerk in ~/workspace/google-cloud-go on master
$ go run storage/internal/benchwrapper/main.go
# runtime/internal/sys
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# errors
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# unicode/utf16
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# unicode/utf8
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# encoding
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# math/bits
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# runtime/internal/atomic
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# unicode
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# internal/cpu
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# internal/race
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# crypto/subtle
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# internal/x/crypto/curve25519
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# internal/x/crypto/cryptobyte/asn1
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# internal/nettrace
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# container/list
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# crypto/internal/subtle
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# google.golang.org/grpc/resolver
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# go.opencensus.io
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# go.opencensus.io/trace/internal
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# go.opencensus.io/internal/tagencoding
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# sync/atomic
compile: version "go1.12.5" does not match go tool version "go1.11.5"
# runtime/cgo
compile: version "go1.12.5" does not match go tool version "go1.11.5"

What did you expect to see?
It works.
What did you see instead?
 What does "compile: version" mean? Is it the go.mod version? How do I fix it? Why does it need to be exactly the same, as the error suggests?

Usually this implies that the version of GOROOT/bin/go does not match the version used to compile GOROOT/pkg/[…]. Did you check out a different commit of the go repo and forget to run make.bash?

Alternatively, this can be due to running a go command with GOROOT set to a different version, or maybe a failed partial installation of Go.

Sounds like my environment is borked. Thanks for the help folks!

I hit this message today and I agree that it is too vague. Could the message perhaps include the full path to the two "things" (whatever they are) which don't agree with each other?

Why can't I just recompile it with a different version of go?


When S and T is removed and S restored, it recreates S without T

probably recreate with T as well because this shouldn't be possible and it breaks our concept

@davidzbiral what do you think here?
Its either disable recreating S without T or try to recreate the missing T tree

@adammertel It depends how you are designing the Restore function. We were thinking rather about something like "one step back" button, i.e. the situatin described should not happen, because one step is removing either one, or the other... if I understand correctly what's the issue here.


Scaffold mbtiles Room DB.

This time the classes have more appropriate names :)
Counts toward #10

Hi Scott! I haven't reviewed this because I understood it's still WIP. Please cmiiw, or let's discuss tomorrow to coordinate!

Hi Scott! I haven't reviewed this because I understood it's still WIP. Please cmiiw, or let's discuss tomorrow to coordinate.

We'll chat later today, but you can consider it a WIP still. Based on our conversations, it sounds like using MapUtils, at least to get the feature up an running, is a better approach than using Room, so I'll implement it using MapUtils instead.
Good to keep this around though in case we want to use Room later.

Sure, that makes sense! Could you kindly add prefix [Draft] or [WIP] on PR
desc and unassign reviewers so that it's clear this is a draft? Thanks!
On Wed, Jun 19, 2019 at 11:16 AM Scott Olsen<EMAIL_ADDRESS>wrote:

Hi Scott! I haven't reviewed this because I understood it's still WIP.
Please cmiiw, or let's discuss tomorrow to coordinate.
We'll chat later today, but you can consider it a WIP still. Based on our
conversations, it sounds like using MapUtils, at least to get the feature
up an running, is a better approach than using Room, so I'll implement it
using MapUtils instead.
Good to keep this around though in case we want to use Room later.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub
https://github.com/google/ground-android/pull/118?email_source=notifications&email_token=AABXVUUIYDFRIV4Q7PHWK73P3JEV7A5CNFSM4HYIRGGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYCGPWY#issuecomment-503605211,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABXVUT2NT5A2ZOXWBMBHK3P3JEV7ANCNFSM4HYIRGGA
.

--
Gino Miceli |  Developer Programs Engineer |<EMAIL_ADDRESS>|  Google
Earth Outreach Developer Relations


suggestion: add option for delete bookmark at context menu

suggestion: add option for delete bookmark at context menu
If i want to to delete a bookmark of my list of them I can not delete one, doing right click mouse on it in bookmark page

Regards!!!!
josé from Ar

I agree it would be convenient if the link context menu had a "Delete Bookmark" item in addition to the "Bookmark Link" one. This would work with links on any page.


ENH: update package version to 0.5.11

Hi! This is the friendly automated conda-forge-webservice.
I've started a version update as instructed in #126.
I'm currently searching for new versions and will update this PR shortly if I find one! Thank you for waiting!
Fixes #126

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.

Hi! This is the friendly conda-forge automerge bot!
I considered the following status checks when analyzing this PR:

linter: passed
azure: passed

Thus the PR was passing and merged! Have a great day!


Feature: Drill down

Hi,
Is there any entry on the roadmap to add drill down functionality to existing vizs (maybe table, map, ..) ?
Like:

Thanks

The framework could provide hooks for contextual menus on metrics and dimensions, individual visualizations would have to implement them individually.
There's definitely a lot rich interactive features that move the needle towards a more complex contract between the framework and individual visualizations. While this is nice, it makes it harder to add new visualization to the framework.
Maybe individual visualization can have different level of support for the framework's more advanced features (like contextual menus), and grow that over time. The downside of that is an uneven user experience across visualizations, where you might expect to be able to right click on the treemap, but the contextual menu hasn't been implemented for that specific visualization yet...
It's important for me to keep the contract simple so that we can grow a wide array of visualizations.
@williaster

Yep, it's a big challenge, I think clear JS API (https://github.com/airbnb/caravel/issues/216#issuecomment-204276738) will help. Any advance on this ?
Here's how Microstrategy's HTML5 viz API works it is a good example IMO: https://lw.microstrategy.com/msdz/MSDL/10/docs/DevLib/sdk_viz_HTML5/index.html

+1

+1

Wouldn't the Pivot table be a good starting point?
e.g. Use some pre-defined columns - click an expand button to go slice by the next level.

+1 for this :D even if only for a subset of viz types.

+1 Really interesting feature

+1 iwe really need it

+1 we really need it.
Any visibility on its implementation?

If you people really need it nobody is stopping you to do the work, thanks!

This is complex enough that it would require starting with a design proposal.

+1 we need it

+1 we really need it

+1 And we need it too

to @mistercrunch comment, what would a design look like. We would be happy to help on parts of this feature if we could get input on the design

+1 we need it  too

+1

+10!

Can someone explain how they would want this feature to work?  We have thought about add the ability to select a attribute on one slice and then right click and select drill and have it open up a difference slice filtered on the value selected in the original slice.  make sense? this would require someone pre building both slices and how they connect.

To support this and "cascading filters", Superset needs to know about dimension hierarchies. I suspect hierarchies for cascading filter will become a reality before the in-chart right-click context menu with a drill down option.

Is anyone actively working on cascading filters

@csc5k this is exaaactly what is needed.

+1

+1

+1

+1

+1

+1

Any inputs on Drilldown option? Appreciate if any references as well..

#12148
dashboard native filter and cascading filter are available for testing!! thanks in advance for feedback, comments, critics, love and support!!
drilldown is coming soon too

Hi Team, Is drill down functionality available now?

@junlincc Looking at the public roadmap I don't see anything that specifically references drilldown support. Do you have any link to design proposal or roadmap item for drilldown?


Make autocasting work in default values against unions

Fixes https://forum.crystal-lang.org/t/does-autocasting-enums-for-default-parameter-work-for-alias-unions/2176
This also makes the default value checking reuse the existing logic to check autocasting, so now default value autocasting and method call autocasting should always work the same 🎉

@bcardiff No, it will say "can't restrict Int32 to Int8 | UInt8". But the error message is not part of this PR. That's also the error you got when trying to assign 1 to String in a restriction with a default value. I think it's fine.
Or said another way: it's an unrelated issue/improvement, not part of what this PR is fixing.

@asterite You merged this as a merge commit with just a single commit in the branch... 😒

Oh, in my workplace we just have one merge option so I usually just click the buttons. Sorry


Providers are too big

Provider are probably doing too many things now, it's difficult to read/change the code
The interface doesn't need to change if we don't see the need, we should at least split them internally
In particular, the vsphere provider contains logic that is not vsphere specific. If we were to add new providers, we would need to replicate this logic. We should move the logic elsewhere, where it can be shared

This work is significantly bigger than what it looks. It will require a redesign of how providers are implemented in the CLI and most probably a new pattern for workflows.
Leaving it open for tracking.


Refining the rvm specification

Specification is missing a lot of information.
Section Ideas

[ ] Architecture

[ ] Overview
[ ] Call Stack
[ ] Instruction Buffer
[ ] Registers
[ ] Variable Pool
[ ] Multi-threading
[ ] Opcode Stream
[ ] Dynamic Binary Loading

[ ] Instruction Set

[ ] Overview
[ ] Human-readable bytecode

[ ] Bytecode format

[ ] Opcode

[ ] Opcode format

[ ] Code Block

[ ] Stack Management
[ ] Arithmetic and Logic
[ ] Store/Load
[ ] Type Conversions
[ ] Control Flow
[ ] Subroutines

[ ] Data Block

[ ] Constants
[ ] Variables
[ ] Structures

[ ] Extern Block

[ ] External data
[ ] External code

[ ] Metadata Block

[ ] Code base

[ ] Translation module: translates human readable bytecode to actual opcodes
[ ] VM module: interprets opcodes
[ ] Data Structures: Stack, Dictionary, Heap, Buffer

I'd like to suggest something like metadata, or just a "binary layout"
If we look at runtimes like the .NET CLI, the binaries all store where different functions, classes and values are stored. I believe this could be very important for anyone wishing to develop a language for RVM, plus it helps with debugging(since you can store stuff like variable locations in the metadata).
This could go hand-in-hand with assembly-style regions(splitting the code into multiple parts), where there's one region(maybe at the start), which just lists any symbols or other metadata we might need.
Not sure how to do it, but it would be useful.

It depends on what we want to achieve.
My general idea was something in the likes of(in my assembler style here ofc)
.META

.str "function_a" .const function_a ; Simple lookup table

.CODE

function_a:
    ; Whatever

With a macro we'd be able to do smth like
.export $1

; Expands to:

.META
.str "$1" .const $1

Not the assembly style you where thinking maybe, but I feel like each binary declaring a table of symbols is the most important thing here

Sound good!

Oh and, before I forget...
Should out really be kept in the spec?
It could just be made part of the standard library?


Finished high school, now what?

I finished high school half a year ago, and I just noticed that I never revoked magbot's access to my calendar. So I went and checked on the site, and there is no option to opt out. By now my Magister account has been deactivated, so I can't change any options, as it'll give me a popup saying the username is incorrect.

You can go to Google Account > Security > Connected apps, and then remove Magbot to disable it.Met vriendelijke groet,Quinten Althues
-------- Original message --------From: NorthLake<EMAIL_ADDRESS>Date: 10/11/2019  15:30  (GMT+01:00) To: mamorgen/magbot3<EMAIL_ADDRESS>Cc: Subscribed<EMAIL_ADDRESS>Subject: [mamorgen/magbot3] Finished high school, now what? (#16) I finished high school half a year ago, and I just noticed that I never revoked magbot's access to my calendar. So I went and checked on the site, and there is no option to opt out. By now my Magister account has been deactivated, so I can't change any options, as it'll give me a popup saying the username is incorrect.

—You are receiving this because you are subscribed to this thread.Reply to this email directly, view it on GitHub, or unsubscribe.

Yeah so our program works more like, ok if we don't have google access anymore we remove your account as well when the next purge comes along. I guess it should say that on the site (The faq is still missing haha) To cancel magbot just either change your magister password, remove the magbot calendars or revoke access. Or all of them of course. Magbot then just stops working and once in a while will delete your account entirely. (You can alsways opt-in again on the site).
I am not sure if magbot removing your account automatically revokes the google tokens. It might be the case that your account was already deleted but google still thinks we list it.


typo: recoveryservicessiterecovery/resource-manager/Microsoft.RecoveryServices

vCeneter -> vCenter
classfication -> classification
indentifier -> identifier
Recoery -> Recovery
proprties -> properties
occurence -> occurrence
Overriden -> Overridden
upto -> up to
exensions -> extensions
updation -> update
mappping -> mapping
reveived -> received
priviliges -> privileges
umber -> under
behaviour -> behavior
datastore -> data store
Onprem -> On-prem
inidicating -> indicating
Entites -> Entities
migraton -> migration
accerated -> accelerated
RunAs capitialization

Automation for azure-sdk-for-js


⚠ Bofrost.be has degraded performance

In d31407c, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1559 ms

Resolved: Bofrost.be performance has improved in 6459cf7 after 27 minutes.


Accept influxdb write request when corresponding table doesn't exist even if request doesn't have timestamp

What problem does the new feature solve?
Right now we can execute the following command when a corresponding table exists.
However,  right now we couldn't execute it when a corresponding one doesn't exist:
curl -i -XPOST "http://localhost:4000/v1/influxdb/write?db=public&precision=ms" \
--data-binary \
'monitor,host=<IP_ADDRESS> cpu=0.1,memory=0.4'

Accoording to influxdb timestamp, timestamp is just optional.
So, I think we need to support this feature.
What does the feature do?
No response
Implementation challenges
No response

If we need to support this feature, I'd like to work on this issue.

Thx @NiwakaDev ! We can automatically create table from insertion data. Is it failed because we require timestamp column for the created table, and we can't deduce it from the influxdb line you mentioned above? If that's the case, I think we can automatically create it just for influxdb protocol

@killme2008  @MichaelScofield
I guess that we don't have mockable time functions. So I'd like to add them for testing, like so:
trait TimeProvider {
  fn current_time() -> i64;
  //..
}

struct MockTimeProvider;

impl TimeProvider for MockTimeProvider {
  //..
}

let instance = FeInstance(..);
instance.set_time_provider(Arc::new(MockTimeProvider()))

inspired:
https://github.com/influxdata/influxdb_iox/blob/732ae81f0b5496bb0e70e4463f57c350adfbe52a/iox_time/src/lib.rs#L190-L219

@NiwakaDev can we use the ColumnDefaultConstraint::Fuction(CURRENT_TIMESTAMP)?

Sorry, i don't get the point. I think we don't need a mock function at all.We can just polulate the missing timestamp columns with
https://github.com/GreptimeTeam/greptimedb/blob/662879ff4b90687c79136bea1ce520e19b53ceff/src/common/time/src/timestamp.rs#L41
And cast it to the precision in the protocols.