Integration tests

Issue #138

Current coverage is 81.58%

Merging #139 into master will increase coverage by +44.89% as of 2750bb2

@@            master    #139   diff @@
======================================
  Files           26      26
  Stmts          793     793
  Branches         0       0
  Methods          0       0
======================================
+ Hit            291     647   +356
  Partial          0       0
+ Missed         502     146   -356

Review entire Coverage Diff as of 2750bb2

Powered by Codecov. Updated on successful CI builds.

looking good! added comments about missing some test cases

Made the suggested changes @AliceYuan

Small nitpick, but otherwise, +1

:+1:

Coverage here we come


Use olx.format.ReadOptions in ol.interaction.DragAndDrop

Don't reproject the geometries in ol.interaction.DragAndDrop; use
the featureProjection option in format.readFeatures

Thanks for any review

Nice simplification, please merge if all checks are green

Thanks for the review


[FEATURE] Multiple Management Server support

Right now the UI is developed towards a single CloudStack Management Server as it assume the API will be available under /client/api
This is set in config.json:

"apiBase": "/client/api"

This hard-codes the API to be available on /client/api while using reverse proxies multiple APIs could be made available:

/api/manager1
/api/manager2
/api/manager3

In the JSON we could have support for different servers:

"servers": [
    {
        "name": "Manager 1",
        "apiBase": "/api/manager1"
    },
    {
        "name": "Manager 2",
        "apiBase": "/api/manager2"
    },
    {
        "name": "Manager 3",
        "apiBase": "/api/manager3"
    }
]

On the login page a dropdown menu could be shown when multiple servers are defined in the JSON file so that users can select the different server they want to log in to.

It is not clear from the issue description if the different management server belong to the same CloudStack installation or are different sites; in case they are the same installation (multi-mgmt setup) there is no need for changes in Primate, you can setup a basic nginx LB config (https://www.nginx.com/resources/wiki/start/topics/examples/loadbalanceexample/) and use the archive (http://download.cloudstack.org/primate/<IP_ADDRESS>/archive/) to do a custom setup/install.

It is not clear from the issue description if the different management server belong to the same CloudStack installation or are different sites; in case they are the same installation (multi-mgmt setup) there is no need for changes in Primate, you can setup a basic nginx LB config (https://www.nginx.com/resources/wiki/start/topics/examples/loadbalanceexample/) and use the archive (http://download.cloudstack.org/primate/<IP_ADDRESS>/archive/) to do a custom setup/install.

It is not clear from the issue description if the different management servers belong to the same CloudStack installation or are different sites; in case they are the same installation (multi-mgmt setup) there is no need for changes in Primate, you can setup a basic nginx LB config (https://www.nginx.com/resources/wiki/start/topics/examples/loadbalanceexample/) and use the archive (http://download.cloudstack.org/primate/<IP_ADDRESS>/archive/) to do a custom setup/install.

Understood. This support is for different CloudStack installations. In our use-case we have CloudStack installations in Amsterdam, Miami and Barcelona and even multiple installations in Amsterdam.
With this support we can have one deployment of the UI under one URL where we can point customers to.

It is not clear from the issue description if the different management servers belong to the same CloudStack installation or are different sites; in case they are the same installation (multi-mgmt setup) there is no need for changes in Primate, you can setup a basic nginx LB config (https://www.nginx.com/resources/wiki/start/topics/examples/loadbalanceexample/) and use the archive (http://download.cloudstack.org/primate/<IP_ADDRESS>/archive/) to do a custom setup/install.

Understood. This support is for different CloudStack installations. In our use-case we have CloudStack installations in Amsterdam, Miami and Barcelona and even multiple installations in Amsterdam.
With this support we can have one deployment of the UI under one URL where we can point customers to.


Binary AND returns incorrect value

Steps to reproduce
[Convert]::ToString(0xFFFFFFFFFFFF -band 0xFF0000000000,2)
[Convert]::ToString(0xFFFFFFFFFFFF -band 0x00FF00000000,2)
[Convert]::ToString(0xFFFFFFFFFFFF -band 0x0000FF000000,2)
[Convert]::ToString(0xFFFFFFFFFFFF -band 0x000000FF0000,2)
[Convert]::ToString(0xFFFFFFFFFFFF -band 0x00000000FF00,2)
[Convert]::ToString(0xFFFFFFFFFFFF -band 0x0000000000FF,2)
Expected behavior
111111110000000000000000000000000000000000000000
1111111100000000000000000000000000000000
11111111000000000000000000000000
111111110000000000000000
1111111100000000
11111111
Actual behavior
111111110000000000000000000000000000000000000000
1111111100000000000000000000000000000000
111111111111111111111111000000000000000000000000
111111110000000000000000
1111111100000000
11111111
Environment data

> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.15063.413
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.15063.413
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           <IP_ADDRESS>

Poor -band is just the messenger here: the problem is more fundamental, namely PowerShell's lack of unsigned integer types, which leads to unexpected behavior with hex. constants:
In short:

Use [Convert]::ToString(0xFFFFFFFFFFFF -band 0x0000FF000000L,2) (note the L suffix) to work around the problem.

Even with the workaround, hex. constants only work as intended up to [int64]::MaxValue (0x7fffffffffffffff), not [uint64]::MaxValue (0xffffffffffffffff)

Contravening the fundamental user expectation that a hex. literal is always a positive - unsigned - number is problematic - see #3313

As for the specifics of the symptom at hand:
# The smallest *signed* integer type that can fit the bit pattern is chosen, which
# is Int32 in this case.
# The problem is that this can - unexpectedly result in a *negative* number:
> [Convert]::ToString(0x0000FF000000,2);
 (0x0000FF000000).GetType().Name; 0x0000FF000000;
11111111000000000000000000000000  # so far, so good - the *32-bit* pattern is correct
Int32
-16777216  # !! Result is negative, because [System.Int32] was chosen as the data type.

Similarly, 0xFF0000000000 becomes signed type [System.Int64] (long).
Therefore, in expression 0xFFFFFFFFFFFF -band 0x0000FF000000, the RHS, an Int32 by itself, is implicitly coerced to the type of the larger LHS, Int64, which is when the problem surfaces:
> [Int64] 0x0000FF000000
-16777216  # Result is the same - negative - value as before, only as Int64

# That Int64 representation does NOT have the expected bit pattern, however,
# due to being a signed type:
> [Convert]::ToString([Int64] 0x0000FF000000, 2)
1111111111111111111111111111111111111111000000000000000000000000

# Here's the expected pattern, stemming from forcing the literal to an long (L), aka Int64.
> [Convert]::ToString(0x0000FF000000L, 2)
11111111000000000000000000000000

P.S.: Can you please edit your post to use fenced code / output blocks for readability?

User can catch the issue with using C# or C++ binary flag constants. 😕

This is likely to have been inadvertently fixed with either #7813 or #7993 where we added proper support for unsigned hex and binary literals.
These changes are not being backported to PS 5.1 -- almost nothing is able to be backported to the Windows PowerShell edition. I'm closing this as resolved for now, thanks for following up and confirming it's no longer an issue in 7.2+ 🙂


Cannot compile for wasm

Basically the title. I followed the directions in the notan README to compile my notan app to wasm, and I got an error (shown below). I'm running this on a Linux system. Native compilation works fine. Additionally, I already have glslangValidator installed.
error: proc macro panicked
  --> /home/tt/.cargo/registry/src/github.com-1ecc6299db9ec823/notan_glyph-0.5.1/src/pipeline.rs:45:36
   |
45 |   const GLYPH_VERTEX: ShaderSource = vertex_shader! {
   |  ____________________________________^
46 | |     r#"
47 | |     #version 450
48 | |
...  |
95 | |     "#
96 | | };
   | |_^
   |
   = help: message: Failed to execute glslangValidator: Os { code: 2, kind: NotFound, message: "No such file or directory" }

error: proc macro panicked
   --> /home/tt/.cargo/registry/src/github.com-1ecc6299db9ec823/notan_glyph-0.5.1/src/pipeline.rs:99:38
    |
99  |   const GLYPH_FRAGMENT: ShaderSource = fragment_shader! {
    |  ______________________________________^
100 | |     r#"
101 | |     #version 450
102 | |     precision mediump float;
...   |
120 | |     "#
121 | | };
    | |_^
    |
    = help: message: Failed to execute glslangValidator: Os { code: 2, kind: NotFound, message: "No such file or directory" }```

Fixed it by deleting the target folder and re-compiling.

Nice!


You cannot use dbutils within a spark job

I am using Azure Key Vault backed secrets in Databricks and using the following code snippet to retrieve secerets in my notebook:
dbutils.secrets.get(scope = "myVault", key = "mySecret")
My ADF pipeline fails with the following exception:
PicklingError: Could not serialize object: Exception: You cannot use dbutils within a spark job

How can I achieve using secrets in notebooks I want to orchestrate with ADF activity?
How can I work with mounted storage in notebooks I want to orchestrate with ADF activity?

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

ID: a176f27b-f9fc-e0ff-0a48-aa42036051f2
Version Independent ID: d2356b83-3101-4b56-baaf-8bdf31e3bb57
Content: Run a Databricks Notebook with the Databricks Notebook activity in Azure Data Factory
Content Source: articles/data-factory/transform-data-using-databricks-notebook.md
Service: data-factory
GitHub Login: @nabhishek
Microsoft Alias: abnarain

Hello @jdobrzen .  Thank you for alerting us to this issue.  Until we have more information, here are some relevant documents.
https://azure.microsoft.com/en-us/updates/azure-key-vault-support-with-azure-databricks/
https://docs.azuredatabricks.net/user-guide/secrets/secret-scopes.html#akv-ss
https://docs.databricks.com/user-guide/secrets/index.html
https://docs.databricks.com/getting-started/try-databricks.html#step-2-optionally-add-security-features

About the error message iteself,

PicklingError: Could not serialize object: Exception: You cannot use dbutils within a spark job

Pickling in Python refers to a module which serializes state. Example . Storing credentials in a Pickle is a terrible idea (security risk), so it makes sense to prohibit doing so.

I've been working through this issue a little and noticed that I can in fact use dbutils commands in a notebook being executed by the ADF activity.
This is actually a Databricks specific issue that I can recreate by executing notebooks interactively from the Databricks portal.  Where the issue occurs is when I have the dbutils commands inside a function definition that I then register as a UDF.
def myFunction(arg1,arg2):
____some code
____varSecret = dbutils.secrets.get(scope = "myVault", key = "mySecret")
____some code
udfMyFunction = udf(myFunction)
dfs1 = dfs.withColumn('result', udfMyFunction ('column1', 'column2'))

I have been trying to reproduce the issue.  When you recreate the issue from the Databricks GUI, is the message still 'PicklingError ..' ? Or is the message different.
This is what I have so far.  I'm pretty sure I missed the point.  I'll have to brush up on my higher-order programming.  Maybe you could provide a more complete example? @jdobrzen

Your example is probably not executing on a work as a "Spark" job.  I realized I can use dbutils.secrets.get() inside a function. It's when I register it as a Spark UDF and then call that function using the Spark dataframe function withColumn() that I get the pickling error.
You'll need to create a Spark dataframe first from some set of data. Then call your UDF using the withColumn() function, which will call the UDF for every row in the dataframe.
For example:
dfs1 = dfs.withColumn('result', udfMyFunction ('column1', 'column2'))
Let me know if you need more detail to recreate the issue.

@MartinJaffer-MSFT
Here's another example I ran into that produces the pickling error. Again, I am producing this outside of the ADF activity.
def appBackup(row):
dbutils.notebook.run("AppBackupNotebook", 0, {"widget1": row.column1,"widget2": row.column2})
dfs.rdd.map(appBackup)
Error:
Out[10]:  You cannot use dbutils within a spark job or otherwise pickle it.
If you need to use getArguments within a spark job, you have to get the argument before
using it in the job. For example, if you have the following code:
          myRdd.map(lambda i: dbutils.args.getArgument("X") + str(i))

        Then you should use it this way:

          argX = dbutils.args.getArgument("X")
          myRdd.map(lambda i: argX + str(i))

I have begun reaching out to the product group for more support.

I see where you pulled this from.
https://forums.databricks.com/questions/16546/you-cannot-use-dbutils-within-a-spark-job-or-other.html

It sounds like you have answered your own question.
I have called the notebook whose screenshot I shared (and uses dbutils to get a secret), from Azure Data Factory, and Data Factory completed successfully.
Alternatively you can pass parameters to the Notebook from Data Factory, such as described here..


How about a JS/HTML/CSS Linter?

As this website is powered by JS, HTML and CSS, how about a linter for the same?

Sure mention the linter's used for each of them. I would prefer Prettier instead of all these.

okay great go ahead with them


Example of payments

Hi everyone!
I tried to use payments system inside of my Telegram bot.

How should the invoice be displayed to the user?
Is there an example of a payments callback? For example, I paid 1$ and get 100 coins in my bot :smile:

Thanks in advance!

I don't have any working example for you, but you can test all the payment things using a dummy credit card number, look here:
https://core.telegram.org/bots/payments#testing-payments-the-stripe-test-mode-provider

@MyZik Have you given this a try? Maybe you can now share an example of your own?

No, that was not need :(
Отправлено из мобильной Почты Mail.Ru
четверг, 12 апреля 2018 г., 22:24 +0300 от<EMAIL_ADDRESS><EMAIL_ADDRESS>
@MyZik Have you given this a try? Maybe you can now share an example of your own?
—
You are receiving this because you were mentioned.
Reply to this email directly,  view it on GitHub , or  mute the thread .


MS Booking - create a booking 500 error

Describe the bug
Trying to create a new booking and it's returning the 500 Internal Error.
To Reproduce
Steps to reproduce the behavior:

Go to 'https://developer.microsoft.com/en-us/graph/graph-explorer'
Click on 'Resources'
Scroll down to 'Solutions -> BookingBusiness'
Add the body -> {
"displayName": "Fourth Coffee"
}
Run the query

Expected behavior
The call creates the booking.
Screenshots

Additional context
The logged-in user has the Exchange Online and MS F3 license.

Hi @Kovinis,
Could you try this again and confirm if the error is still there?
Do you have the Bookings.Manage.All permission consented?
I'm unable to reproduce this as the booking is successfully created on my end

Hey @ElinorW ,
from the AZURE I could see this:

In the User consent, there are no records. Do I need to add any users to this?

Solved. Nothing change from my side, but working 👍  thanks!


Updates to regions lists

We need to add some languages and countries to the lists.
Currently missing languages:

Taiwanese?
Sicilian
Sign languages are completely missing
???

Missing regions:

Scotland, and other bits of the UK

For languages, it might be easier to just look at the -2 list and prune out any obviously old/dead/way too small languages.
With regions, I do think we should include Scotland, but that requires creating a non-standard code for it.

Subject: Language: Taiwanese
Description:
Hello Couchers,
I am so happy to find this website! Building my profile now, I am wondering whether in the "language" option, there can be "Taiwanese" included? That is my mother tongue.
Thank you so much!
Warm hugs,
Vivi
Results:
Backend version: develop-7b502b12
Frontend version: develop-7b502b12
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36
Page: https://app.couchers.org/
User (spoofable): vnloya (1353)

I think we're all good for now, haven't had any complaints since #1699


Backend Creation and Implementation

Creation and hooked up backend mongodb server calls to the frontend.
Requires two new env entries in /townService/.env

MONGO_DB_URL = mongodb+srv...
MONGO_DB_PORT=4000

LGTM


Version 2.1.3 Changed YAML multi-line string format

Hi all,
I was trying to update swagger version from 2.1.2 to 2.1.3 and was trying to figure out why my build was failing (https://github.com/RohanNagar/thunder/pull/799). After some investigation I noticed that the way the YAML is generated is slightly different. See here for the diff (version 2.1.2 as the original and version 2.1.3 as the change): https://www.diffchecker.com/ebLOoDUV
Here's a snippet:
Version 2.1.2:
parameters:
      - name: password
        in: header
        description: The password of the user, necessary if the headerPasswordCheck
          option is enabled.
        schema:
          type: string

Version 2.1.3:
parameters:
      - name: password
        in: header
        description: "The password of the user, necessary if the headerPasswordCheck\
          \ option is enabled."
        schema:
          type: string

I'm wondering if this is expected and to make sure this is valid YAML, as the javascript YAML parser I use seems to have a problem with this new format. Thanks!

this is indeed expected, 2.1.3 comes with jackson updated to 2.11.1 which introduces a more strict behaviour in terms of flow scalars serialization, requiring quotes like in your case. The result is valid YAML, even if it possibly looks better in the previous version, the YAML parser should be able to handle that.
Please close ticket if this answers your question

Thanks, I will have to investigate why the parser is failing. Appreciate your response!


https://github.com/FL-Studio-Crack-Download

Is there an existing issue for the same bug?

[X] I have checked the existing issues.

Branch name
https://github.com/FL-Studio-Crack-Download
Commit ID
https://github.com/FL-Studio-Crack-Download
Other environment information
https://github.com/FL-Studio-Crack-Download

Actual behavior
https://github.com/FL-Studio-Crack-Download
Expected behavior
https://github.com/FL-Studio-Crack-Download
Steps to reproduce
https://github.com/FL-Studio-Crack-Download

Additional information
https://github.com/FL-Studio-Crack-Download

https://github.com/FL-Studio-Crack-Download


Why endless loop on error?

I hit one of these while(1); the first time I was testing this. The application continues to consume CPU which makes it look like it is working. The only way to know that it is hung is to read the source.
There are 8 places where an error results in an endless loop. Why doesn't the code end on error?

Can you provide a sample mesh that elicits this behavior?

I believe I passed invalid input. The cause is not important. Aren't these endless loops that would cause the program to hang?
https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification/blob/2927c8209be291088b939cd934f1b69844922f26/src.cmd/Simplify.h#L940
https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification/blob/2927c8209be291088b939cd934f1b69844922f26/src.gl/OBJ.h#L470
https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification/blob/2927c8209be291088b939cd934f1b69844922f26/src.gl/glsl.h#L100
https://github.com/sp4cerat/Fast-Quadric-Mesh-Simplification/blob/2927c8209be291088b939cd934f1b69844922f26/src.gl/Bmp.cpp#L542

Each of those occurs after a terminal error is reported with the input data. While I would have written exit(0); instead of while(1), it does suggest that your input data is not valid.

Yes, that is what I am saying. It should exit on fatal.


[Feature] support for Java version >11

Feature Description (功能描述)
On newest Debian and other systems it sometimes impossible to install Java 11/8. But current compilation fails to build on Java 17 due to the dependencies.

On newest Debian and other systems it sometimes impossible to install Java 11/8. But current compilation fails to build on Java 17 due to the dependencies.

Thanks for your suggestion, we plan to support java17 in the 2.0 version (Also, we provide a in-memory graph-computer implement (written by Go) -- and it will be public soon, it will be more user friendly to use with the small and medium-sized datasets (less than 10 billion vertexes & edges) )

Sounds cool, I've read the contest page and will be quite excited to see 2.0 in action!
As for billions, it seems that cluster setup with pd-store will be the way. At least current docs\demos for cluster mode and roles is not so handy as large-single-node setup - but for hundreds of billions edges and more it's hardware bounded.

On newest Debian and other systems it sometimes impossible to install Java 11/8. But current compilation fails to build on Java 17 due to the dependencies.

Thanks for your suggestion, we plan to support java17 in the 2.0 version (Also, we provide a in-memory graph-computer implement (written by Go) -- and it will be public soon, it will be more user friendly to use with the small and medium-sized datasets (less than 10 billion vertexes & edges) )

Sounds cool, I've read the contest page and will be quite excited to see 2.0 in action!
As for billions, it seems that cluster setup with pd-store will be the way. At least current docs\demos for cluster mode and roles is not so handy as large-single-node setup - but for hundreds of billions edges and more it's hardware bounded.

Yes, indeed the graph-computer could upgrade to support Java17/21 easily due to there isn't too much dependency burden.
U can try upgrading its compilation and runtime versions on your own. I don't think there should be many issues with the adaptation, but the community plan is to support Java17 as a whole until version 2.0, so there won't be a single component to be upgraded ahead of time (Not a technical obstacle)
In addition, the upcoming graph computing can be understood as a Go version of a new computing model (GAS model, where data is stored/computed in memory first, but also supports storing excess data to disk, similar to the combination like Redis+RocksDB. Its code is basically ready and waiting for complete documentation and other preparation to be used.
It provides simple binary boot and multiprocessing clustering (independent of k8s/yarn, easily to start), which is more suitable for the environment and needs of most ordinary users

FWD:
The new in-memory/high-performance computer system code in #311


Please tag releases

Releases are pushed to crates.io, without (afaics?) a corresponding git tag or github release - making it hard to match git source revision with cargo versions.  It would be neat if there was some git artifact of each push to crates.io.

This should apply to all rust-lang & rust-lang-nursery crates.

OK, I have a shell script for combined version bumping/publishing/git pushing that I'll use from now on.
@huonw We should probably try to settle on conventions---or even a tool---to use to do this for us. e.g., This repo alone is home to three crates, so it should have three distinct tagging schemes...


I have a question

The RedirectUri when we are  giving here is the local one. If we are hosting the application in IIS then what RedirectUri should we give?

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

ID: b77531f5-3bd4-600e-1bca-7f40f9ee479e
Version Independent ID: 4c98db9b-4a2e-4ba4-ba7d-a1e2de9a8745
Content: Support and help options for Azure Identity developers
Content Source: articles/active-directory/develop/active-directory-develop-help-support.md
Service: active-directory
GitHub Login: @andretms
Microsoft Alias: andret

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

@LRMPratiksha - This page does not have content for redirect URL. You probably came from another page prior to visit this one, however to answer you, in general:

The Redirect URL should point to the page that Azure AD redirects the user after it has been authenticated (also, this is the page that will receive the token)

In general, our tutorials and guided walkthroughs uses http://localhost because usually you are using your local machine when developing - so after authentication, the browser takes you back to your local web server

Therefore, if you are publishing your app to a different web site URL (i.e. local Web Server, Azure, others), you have to set Redirect URL to the URL of a page in that web server -- this mean that the redirect URLs in both configuration inside your app (i.e. web.config) AND your app's registration Redirect URL in Azure Portal (or apps.dev.microsoft.com), have to match and both pointing to the same URL in your web server.

#please-close

@LRMPratiksha Closing this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


[TS migration] Migrate 'ConfirmedRoute.js' component to TypeScript

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/31959
PROPOSAL: N/A
Tests

Login to any account
Click on the global (+ icon) FAB
Choose "Request Money"
Choose "Distance"
Choose a start and finish point and click on next
On the distance request confirmation list page, verify that the mapbox map displays correctly showing the route.

[x] Verify that no errors appear in the JS console

Offline tests

When offline verify that a pending map view is displayed instead of the mapbox map.
QA Steps

Login to any account
Click on the global (+ icon) FAB
Choose "Request Money"
Choose "Distance"
Choose a start and finish point and click on next
On the distance request confirmation list page, verify that the mapbox map displays correctly showing the route.

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/77965000/b794a34d-924c-4197-8ece-5eb4ea795213

Android: mWeb Chrome

https://github.com/Expensify/App/assets/77965000/980efe95-c6f5-48d9-8917-f20cf0a4f12c

iOS: Native

https://github.com/Expensify/App/assets/77965000/c729550b-c27a-4c27-99f9-84f4f44657fd

iOS: mWeb Safari

https://github.com/Expensify/App/assets/77965000/171047b1-805b-44c6-abdb-f47c1e713358

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/77965000/58ec1b87-e759-46d3-b2cc-e7c7648a24fd

MacOS: Desktop

https://github.com/Expensify/App/assets/77965000/5534ebd5-af90-46ae-983e-ef0f07b1e2bb

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@rayane-djouah Please merge the newest main, @allroundexperts kind bump

I see a lot of checks failing. @rayane-djouah what's up with these?

🚀 Deployed to staging by https://github.com/marcochavezf in version: 1.4.24-4 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
cancelled 🔪

🕸 web 🕸
success ✅

@rayane-djouah @allroundexperts @blazejkustra It looks like this PR caused a crash during Distance Money Request creation (found on the main branch, ios platform).
Steps to reproduce:

Login to any account
Click on the global (+ icon) FAB
Choose "Request Money"
Choose "Distance"
Choose a start and finish point and click on next
Select the workspace to share the request
Press Request button -> crash

The reason is this line, it looks like the route can be undefined. If I update it to const coordinates = route?.geometry?.coordinates ?? []; it works ok.
See the video of the steps and the screenshot of the error:
https://github.com/Expensify/App/assets/23176449/22ce2d92-92f7-42af-bb91-cb9b0b3b02bf

🚀 Deployed to production by https://github.com/mountiny in version: 1.4.24-8 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Onchain Verilog CTF test no longer pwnable

Check this: https://cilogs-ityfuzz.s3.amazonaws.com/2d786900-f806-4d51-8752-7384d1084616/res_VerilogCTF.txt
thread 'main' panicked at src/evm/uniswap/mod.rs:306:14:
Uniswap provider UniswapV2 @ chain POLYGON not supported
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Expected behavior: Skip UniswapV2-based liquidation.

Regression: https://github.com/fuzzland/ityfuzz/pull/258

https://github.com/fuzzland/ityfuzz/pull/261#issuecomment-1772283238
https://github.com/fuzzland/ityfuzz/pull/261#issuecomment-1772524075
This bug was introduced by this commit:
https://github.com/fuzzland/ityfuzz/pull/261/commits/016d16be8999d340d833633f1519b2b37ca7f91d
@jacob-chia


Differences between VBA and Office Scripts

The goal of this article is to quickly highlight the distinctions between the feature and help customers make decisions about Office Scripts based on their VBA experience.

Docs Build status updates of commit e3d57e9:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/resources/add-ins-differences.md
:warning:Warning

Details

docs/resources/vba-differences.md
:warning:Warning

Details

docs/images/office-programmability-diagram.png
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

docs/resources/add-ins-differences.md

Line 12: [Warning] Invalid file link:(~/images/office-prgrammability-diagram.png).

docs/resources/vba-differences.md

Line 13: [Warning] Invalid file link:(~/images/office-prgrammability-diagram.png).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 44873a4:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/images/office-programmability-diagram.png
:white_check_mark:Succeeded

docs/resources/add-ins-differences.md
:white_check_mark:Succeeded

docs/resources/vba-differences.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 33a2286:
:clock10: Pending: waiting for processors (5 builds ahead of you)
:warning: Docs Build is busy, currently there are 5 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Thanks for the review @gergzk. I've updated the documents accordingly. When I get your sign-off, I'll get an editorial review before checking in.

Docs Build status updates of commit 33a2286:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/images/office-programmability-diagram.png
:white_check_mark:Succeeded

docs/resources/add-ins-differences.md
:white_check_mark:Succeeded

docs/resources/vba-differences.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 840337d:
:clock10: Pending: waiting for processors (34 builds ahead of you)
:warning: Docs Build is busy, currently there are 34 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit fb05f08:
:clock10: Pending: waiting for processors (34 builds ahead of you)
:warning: Docs Build is busy, currently there are 34 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 3b97902:
:clock10: Pending: waiting for processors (34 builds ahead of you)
:warning: Docs Build is busy, currently there are 34 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 43be22b:
:clock10: Pending: waiting for processors (34 builds ahead of you)
:warning: Docs Build is busy, currently there are 34 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Thanks @ElizabethSamuel-MSFT! I've applied all your changes.

Docs Build status updates of commit 840337d:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/images/office-programmability-diagram.png
:white_check_mark:Succeeded

docs/resources/add-ins-differences.md
:white_check_mark:Succeeded

docs/resources/vba-differences.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 43be22b:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/images/office-programmability-diagram.png
:white_check_mark:Succeeded

docs/resources/add-ins-differences.md
:white_check_mark:Succeeded

docs/resources/vba-differences.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Bundle the CA public key in issued certificate

What this PR does / why we need it:
If the CA used is only an intermediate CA, and the root CA is trusted by the client, the client needs help verifying the certificate chain.
This also makes the CA present in the certificate even if it's the root CA.
Which issue this PR fixes:
Trusting certs issued by intermediate CAs used by cert-manager.
Special notes for your reviewer:
I have tested this locally with my own intermediate CA used by cert-manager, issued by my own root CA trusted by my macOS client. The whole certificate chain is now presented in the browser.
The idea to just append the certificates is based on cfssl's mkbundle:
https://github.com/cloudflare/cfssl/blob/1.3.0/cmd/mkbundle/mkbundle.go#L97
Release note:
NONE

/test all

@munnerz I haven't had time yet to run with ACME and Let's Encrypt, but shouldn't that present the same issue as I have here? So I'm thinking if I have done this too quickly...
Is the certificate received from the ACME client the chain including Let's encrypts' intermediate CAs?

@radhus yep you are correct, we don't do this for ACME right now. As per this comment however, ACME v2 will begin returning the intermediate certificate automatically: https://github.com/jetstack/cert-manager/pull/292#discussion_r166358797
As a result, I think I'm happy to accept this change now. v0.3 should include ACMEv2 support, and so the 0.3 release should at least be consistent (and just the :canary won't be for now).
Thanks very much for this PR! :smile:

/ok-to-test
/lgtm
/approve


Notifications other than BEEP

Email  needs SMTP host,port,user,password
SMS needs a provider (AWS?) and api key
Discord bot ping needs to create a bot and get api key

Events

Lab complete
Lab fail

Configurable wav files
Taskbar flash


towards peer-* compatibility

(I'm opening this up for discussion, so that, if you're interested and it's feasible, the DDC working group can plan our contributions to this.)
For these reasons, it would be great that peer-star could use Companion for all things IPFS and libp2p.
From recent conversations and a quick analysis, I think Companion would have to be able to provide peer-star with:

Ability to use a custom transport and discovery (defined in a JS module)
Ability to implement a custom libp2p protocol (defined in a JS module)
Ability to use pub-sub (including event-driven interface for notification of remote subscription changes)

Sounds feasible as long embedded js-ipfs is used.
Pubsub use with go-ipfs is blocked by https://github.com/ipfs/js-ipfs-http-client/issues/518 and I am unsure how custom transports/protocols could be added when HTTP API is used (probably needs changes to go-ipfs itself?).
If you switch to experimental Embedded js-ipfs backend, then you will be able to specify JSON with custom configuration for that node (enable pubsub, set custom signaling servers and transport modules).
@pgte based on what I know at the moment, next steps are:

[ ] Identify and document what are the extras you need.

Make a list of all customization peer-* need on top of default js-ipfs config and post in this issue.

[ ] Add custom JS modules to Companion so they are available for embedded js-ipfs when custom config refers to them.

Ideally peer-* team would do the PR, but I can help the details or make time if more of  involvement is needed.
The path forward would be for peer-* team to create a PR each time an update is needed.

[ ] (needs evaluation) if safe, perhaps change default config that ships with companion to enable these changes out of the box.


[FilledInput] focused and disabled style cannot be overridden in theme

Duplicates

[X] I have searched the existing issues

Latest version

[X] I have tested the latest version

Current behavior 😯
Specifying the theme in the following manner will NOT override the default focused and disabled style of FilledInput.
const theme = createTheme({
  components: {
    MuiFilledInput: {
      styleOverrides: {
        focused: {
          backgroundColor: "blue"
        },
        disabled: {
          backgroundColor: "green"
        }
      }
    }
  }
});

Expected behavior 🤔
Specifying focused and disabled style should override the default style.
Steps to reproduce 🕹

Workaround
const theme = createTheme({
  components: {
    MuiFilledInput: {
      styleOverrides: {
        root: {
          "&.Mui-focused": {
            backgroundColor: "blue"
          },
          "&.Mui-disabled": {
            backgroundColor: "green"
          }
        }
      }
    }
  }
});

Your environment 🌎

npx @mui/envinfo
  System:
    OS: Windows 10 10.0.19044
    CPU: (8) x64 Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
    Memory: 5.42 GB / 15.88 GB
  Binaries:
    Node: 17.9.1 - C:\Program Files\nodejs\node.EXE
    npm: 8.11.0 - C:\Program Files\nodejs\npm.CMD
  Managers:
    Maven: 3.8.5 - C:\Program Files\apache-maven-3.8.5\bin\mvn.CMD
  Utilities:
    Git: 2.36.1.
  IDEs:
    VSCode: 1.70.2 - C:\Program Files\Microsoft VS Code\bin\code.CMD
    Visual Studio: 17.2.32630.192 (Visual Studio Community 2022)
  Browsers:
    Edge: Spartan (44.19041.1266.0), Chromium (103.0.1264.49)
    Internet Explorer: 11.0.19041.1566

Workaround
const theme = createTheme({
  components: {
    MuiFilledInput: {
      styleOverrides: {
        root: {
          "&.Mui-focused": {
            backgroundColor: "blue"
          },
          "&.Mui-disabled": {
            backgroundColor: "green"
          }
        }
      }
    }
  }
});

This is not a workaround. Check the error in the console. It is explicitly said to increase the specificity of state classes. States like hover, focus, disabled and selected, are styled with a higher CSS specificity. To customize them, you'll need to increase specificity. https://mui.com/material-ui/customization/how-to-customize/#state-classes

Workaround
const theme = createTheme({
  components: {
    MuiFilledInput: {
      styleOverrides: {
        root: {
          "&.Mui-focused": {
            backgroundColor: "blue"
          },
          "&.Mui-disabled": {
            backgroundColor: "green"
          }
        }
      }
    }
  }
});

This is not a workaround. Check the error in the console. It is explicitly said to increase the specificity of state classes. States like hover, focus, disabled and selected, are styled with a higher CSS specificity. To customize them, you'll need to increase specificity. https://mui.com/material-ui/customization/how-to-customize/#state-classes

So, if I get your idea right, my "workaround" is in fact the proper way to define the focused and disabled style in the theme?

So, if I get your idea right, my "workaround" is in fact the proper way to define the focused and disabled style in the theme?

Yes, correct!


❌ Software Removal | OS with systemd

Description
We must replace operating systems that use init Systemd for security reasons.
Read this article: https://unixsheikh.com/articles/the-real-motivation-behind-systemd.html
Why I am making the suggestion
In summary Systemd should not be used because:
RedHat's hidden manipulations and intentions;
disregard for serious security bugs;
maybe the bugs are a backdoor.
The alternatives should be:
Debian -> Devuan
Ubuntu -> Trisquel
Arch -> Artix
Fedora -> PC Linux
NixOs -> Guix System
Ubuntu Touch ->  PostmarketOS
Tails and Whonix -> I don't know yet.

My connection with the software
No connection to any cited software.

[x] I will keep the issue up-to-date if something I have said changes or I remember a connection with the software.

We could consider alternatives, but there is no alternative to Whonix, and thus will not be removed.

stoopid proposal

Fact 1: systemd is from Red Hat

Oh no, goes who is developing your kernel?

Fact 2: The primary reason for developing systemd is Red Hat's business interests in embedded devices

Who cares?

Fact 3: No, it's not a myth, systemd is truly a huge monolith
The fact is however, that many of these so-called individual binaries has functionality that simply will not work without other systemd components.

Well… not really, look at elogind. You will likely have use it on non-systemd Linux distros… oh wait… would that mean that you are using systemd? NOOOOOOOOOOOOO. Btw you do not have to use these systemd tools on a systemd systems.

Fact 4: Privacy concerns
systemd-resolved has hard coded fallback DNS servers for Cloudflare, Quad9 and Google. Even if you turn these off, a bug might cause these to be used anyway (which actually happened at one point).

They made this trade-off that in case your DNS server from DHCP is broken, it will fallback to something that will probably work, so you do not have a broken network connection. In case you did not know, bugs can happen everywhere.

Let's look at some links they listed
https://github.com/systemd/systemd/issues/6237
I do not see how it's an issue, you provided an invalid name so it ran it as a root, which is… the default and there is no other default possible that would make sense. You need a root privs to do that… so I really do not see the issue.

Most of this blog post is about Red Hat, not systemd as a software.
Now if we look at your alternatives…

Devuan - takes a long timeeee to rebase on a new Debian release
PC Linux - u want to replace Fedora with… a distro that is "So cool ice cubes are jealous" and a website looking like something straight from XP era or earlier?
Trisquel - lmao
postmarketOS - Did you ever use it? I have a PinePhone and pmOS is… not great.

And no… I'm not a Red Hat or systemd fanboy. I used Void Linux for over a year on my laptop and I'm using Alpine on my VPS. Runit it pretty simple and nice… but at some point you might notice that you need something more powerful and something that is more unified etc. Writing services for OpenRC is a pain in the ass, I hated every single moment of doing that. I could do what I wanted to do on systemd (I did not succeed on OpenRC) in a minute without any previous experience.

Here's a list of projects in which RedHat has done a big part of development: https://en.wikipedia.org/wiki/Red_Hat#Programs_and_projects

KVM
GNOME
systemd
PulseAudio
LibreOffice
Xorg

and even more:

Linux (the kernel)
NetworkManager
Wayland
Flatpak
libvirt / virt-manager

There is no Linux w/o RedHat today.

See former team member @dawidpotocki's reply.


"Failed to find api location for area: nuget id"

Required Information
Question
Enter Task Name: dotnet nuget push/ dotnet restore
Environment

Agent - Hosted or Private:

If using private agent, provide the OS of the machine running the agent and the agent version:  Centos with agent version 1.148.1

Error logs
Agent Version and Platform
Version of your agent? 2.148.1
Azure DevOps Type and Version
https://mvn11.visualstudio.com
What's not working?
get error when try to restore packages or push packages, error as as follows:
Failed to find api location for area: nuget id: 9D3A4E8E-2F8F-4AE1-ABC2-B461A51CB3B3

dotnet restore error:
##[section]Starting: dotnet restore
==============================================================================
Task         : .NET Core
Description  : Build, test, package, or publish a dotnet application, or run a custom dotnet command
Version      : 2.153.0
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?linkid=832194)
==============================================================================
SYSTEMVSSCONNECTION exists true
SYSTEMVSSCONNECTION exists true
SYSTEMVSSCONNECTION exists true
##[error]Error: Failed to find api location for area: nuget id: 9D3A4E8E-2F8F-4AE1-ABC2-B461A51CB3B3
##[error]Packages failed to restore
##[section]Finishing: dotnet restore

dotnet push error:
##[section]Starting: dotnet push
==============================================================================
Task         : .NET Core
Description  : Build, test, package, or publish a dotnet application, or run a custom dotnet command
Version      : 2.153.0
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?linkid=832194)
==============================================================================
SYSTEMVSSCONNECTION exists true
SYSTEMVSSCONNECTION exists true
##[warning]Can\'t find loc string for key: Warning_SessionCreationFailed
##[warning]Warning_SessionCreationFailed {}
##[error]Error: Failed to find api location for area: nuget id: 9D3A4E8E-2F8F-4AE1-ABC2-B461A51CB3B3
##[error]Packages failed to publish
##[section]Finishing: dotnet push

copied from https://github.com/microsoft/azure-pipelines-agent/issues/2345

@johnterickson - can you route?

We have seen this issue before and are actively working on a solution

@WeihanLi Is this happening all the time or is it a transient failure?

@shubham90 it happened sometimes, sometimes I had to retry more than ten times, sometimes it works normal.

Thanks for the clarification @WeihanLi . We are still looking into this. Can you please send me a detailed log of the failure by setting "System.debug" variable to "true"? You can send it to me at "shbhawsi at microsoft dot com".

log_13_3343.zip

Just started encountering this issue as well.

Thanks for the logs @WeihanLi . We are working on adding a fix for this now.

any update on this?
##[error]Error: Failed to find api location for area: nuget id: 9D3A4E8E-2F8F-4AE1-ABC2-B461A51CB3B3 ##[debug]Processed: ##vso[task.issue type=error;]Error: Failed to find api location for area: nuget id: 9D3A4E8E-2F8F-4AE1-ABC2-B461A51CB3B3

@osariel We have made a code fix which should alleviate this issue and/or provide some additional logging if it happens again. The fix itself should be deployed to all the accounts by next week.

The fix is now deployed across all accounts. This issue should be resolved now. If it's still happening, feel free to re-open the issue with updated debug logs.

Hello. We still experience this issue in our account.
See the attached log. It happens randomly and we cannot reproduce or get rid of this error.
1_Build Job.txt
Thank you !

new issue found sometimes, not sure if the same problem

@WeihanLi I think this is a different problem and related to network issue on the agent.

Hello. We still experience this issue in our account.
See the attached log. It happens randomly and we cannot reproduce or get rid of this error.
1_Build Job.txt
Thank you !

@kovaliovsg This looks like a different issue but with similar error message. Can you please open a separate issue for this?

I am seeing this today:

We've never seen this error before, and we're just now seeing it intermittently begin happening for a number of our builds. It's intermittent. All our builds run on private agents hosted on-prem. There should be no proxy involved for HTTP calls to Azure DevOps from our servers.

Same here: never saw it before, running on-prem agents

@dhilgarth @vhhughes  I notice the same thing, it started a couple of days ago.
As well we are using on-premise agents (behind corporate proxy) and Azure DevOps Services (cloud)
Any suggestions? Report Microsoft?
This is super annoying, to retry 3-5 times... :-(

FYI I've reported the issue here: https://developercommunity.visualstudio.com/content/problem/1027334/pipeline-nuget-push-error-failed-to-find-api-locat.html

This is still happening for me.
##[warning]Failed to find api location for area: nuget id: 9D3A4E8E-2F8F-4AE1-ABC2-B461A51CB3B3
##[debug]Processed: ##vso[task.issue type=warning;]Failed to find api location for area: nuget id: 9D3A4E8E-2F8F-4AE1-ABC2-B461A51CB3B3
##[debug]Error: Failed to find api location for area: nuget id: 9D3A4E8E-2F8F-4AE1-ABC2-B461A51CB3B3
    at beginGetLocation.then (D:\PRVAGENT_v1\_work\_tasks\DotNetCoreCLI_5541a522-603c-47ad-91fc-a4b1d163081b\2.171.3\node_modules\azure-devops-node-api\VsoClient.js:85:23)
    at process._tickCallback (internal/process/next_tick.js:109:7)


Edit author page should save changes

Scenario
Given an author named 'Alan Turing'
When a user visits the edit page of the author Alan Turing
Then no error should occour
Hints
Feature: Changes made to the authors in an edit form (similar to the 'new' form) should be written to the database.
New controller actions (edit and update) and a new view are required.
Tests could be placed in spec/features/author/edit_author_spec.rb.
In a test, if an object's values should be reloaded from the database, after an action has modified them, consider the reload method:
@author.reload
Here is the relevant section (5.11) of the Rails Guide.
Error

Got AbstractController::ActionNotFound: The action 'edit' could not be found for AuthorsController

16 exercise tests have passed. There are 44 in total. You will solve multiple at once towards the end.

Sorry, it's not working for me yet:
Encountered a syntax error while rendering template: check New Author
<%= form_with (model: :author, local: true) do |form| %>
<% if @author.errors.any? %>

<%=<EMAIL_ADDRESS>"error" ) %> prohibited
this article from being saved:

<% @author.errors.full_messages.each do |msg| %>

<%= msg %>

<% end %>

<% end %>

<%= form.label :first_name %>
<%= form.text_field :first_name %>

    <%= form.label :last_name %>

      <%= form.text_field :last_name %>

    <%= form.label :homepage %>

      <%= form.text_field :homepage %>

    <%= form.submit %>

  <% end %>

If you have problems solving this task, please don't hesitate to contact the teaching team!

Sorry, it's not working for me yet:
Encountered a syntax error while rendering template: check New Author
<%= form_with (model: :author, local: true) do |form| %>
<% if @author.errors.any? %>

<%=<EMAIL_ADDRESS>"error" ) %> prohibited
this article from being saved:

<% @author.errors.full_messages.each do |msg| %>

<%= msg %>

<% end %>

<% end %>

<%= form.label :first_name %>
<%= form.text_field :first_name %>

    <%= form.label :last_name %>

      <%= form.text_field :last_name %>

    <%= form.label :homepage %>

      <%= form.text_field :homepage %>

    <%= form.submit %>

  <% end %>

If you have problems solving this task, please don't hesitate to contact the teaching team!

Sorry, it's not working for me yet:
Scenario
Given an author named 'Alan Turing'
When a user visits the edit page of the author Alan Turing
And changes first name to 'Bob'
And clicks submit
Then no error should occour
Error

Got AbstractController::ActionNotFound: The action 'update' could not be found for AuthorsController

If you have problems solving this task, please don't hesitate to contact the teaching team!

Sorry, it's not working for me yet:
Scenario
Given an author named 'Alan Turing'
When a user visits the edit page of the author Alan Turing
And changes first name to 'Bob'
And clicks submit
Then no error should occour
Error

Got NameError: uninitialized constant AuthorsController::Article

If you have problems solving this task, please don't hesitate to contact the teaching team!


To visualize by making easily graph with using R

Required

R
R Studio

Refference

Qiita's my memo

https://github.com/pollseed/big_data_related/blob/master/graph.r


Add image required for nginx ingress

[x] gcr.io/google_containers/defaultbackend:1.4

https://github.com/helm/charts/blob/9ab3cbbc28bf0416cf5400fb9ea4679763807506/stable/nginx-ingress/values.yaml#L293-L296
confirmed

@satchinjoshi mirrored to<PHONE_NUMBER>44.dkr.ecr.cn-north-1.amazonaws.com.cn/defaultbackend:1.4
completed
I have not tried it yet, but according to the values.yaml of nginx-ingress
https://github.com/helm/charts/blob/9ab3cbbc28bf0416cf5400fb9ea4679763807506/stable/nginx-ingress/values.yaml#L293-L296
I assume you probably can install it with something like this
helm install stable/nginx-ingress --set defaultBackend.image.repository=937788672844.dkr.ecr.cn-north-1.amazonaws.com.cn/defaultbackend

let me know if it works or not.
thanks for the contribution.

Happened to see some other required images
https://github.com/helm/charts/blob/9ab3cbbc28bf0416cf5400fb9ea4679763807506/stable/nginx-ingress/values.yaml#L4-L8
Will add in the required-images.txt shortly.

@pahud you are right, I for the first installation quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.20.0 was pull but now its taking forever to pull the image. If you can add that, it would be great. 👍


Feature/b3 d continue pot

This extends the continuegrid functionality to be able to read the existing background profile arrays (if available) and use those for collisions.
If profiles are specified in the input namelist, they take precendent and overwrite the existing ones. This allows the direct import of the background plasma from codes able to output all the quantities on a R-Z grid (like Jorek). It also allows flux-label independent profiles to be used if desired, e.g. for SOL simulations.
Note that currently the ion density is not read in from the original file, which should be adressed before merging.

Shouldn't the ability to 'continue' a run only read values from the HDF5 file and not an input namelist?

I think having the option to use profiles controlled by the input namelist adds flexibility and is easy enough to control by having the profile information there or commenting it out. At least in cases where only S and U are included in the continue file, the profile information in the input namelist is necessary. We could have the continue file take precedent over the input profile namelist, but I think the option should be there to change the profiles to whatever is in the namelist.


Support user verification

The default value of user verification is "preferred". Chromium shows the following warning when using the default: https://chromium.googlesource.com/chromium/src/+/master/content/browser/webauth/uv_preferred.md
We should make it possible to pass a custom user verification flag to generateAssertionOptions and generateAtestationOptions. By default undefined should be used to let the browser decide on the default (which is preferred at the moment).
It would be great to add a description to the parameter stating that:

UV should be set to discouraged when Webauthn is used as a multi factor.
UV should be set to preferred or required when Webauthn is used as a stand alone passwordless (or even usernameless) flow.

discouraged is recommended for better UX when Webauthn is used as a multi factor, because otherwise instead of 2 factor authenticator, you have 3 factor authentication which leads bad UX and is generally considered overkill:

Enter username and password
Use Webauthn authenticator
Authenticate to your webauthn authenticator.

Of course when not using user verification, you are vulnerable if an attacker has both username and password and your physical key, but that is a highly unlikely scenario. Also when your key is lost, you should just remove it from your account.

Correct @P4sca1

This is a great suggestion, and looks pretty straight forward to implement. I'll aim to add this in once the project rename is complete :)

I've added support for specifying an assertion's userVerification (and attestation's authenticatorSelection too!) with #17:
userVerification:

authenticatorSelection:


cosmopy install failing

Prerequisites

[X] I am running the latest CosmPy version.
[X] I checked the documentation and found no answer to my problem.
[X] I checked the existing issues to make sure my problem has not already been reported.
[X] I have read the code of conduct before creating this issue.

Expected Behavior
should install with no error
Current Behavior
ERROR: Failed building wheel for python-mbedtls
To Reproduce
pip3 install cosmpy
Context
environment : Mac Air M1
python : 3.8.9
pip3 : 22.0.4
Failure Logs
No response

This should be fixed after we cleaned up the dependencies in PR #242

Its still not working


Docs: fix gotk create helmrelease examples

Issues:

✗ unknown flag: --chart-name
✗ chart name or path is required
✗ source must be in format <kind>/<name>
✗ semver range parse error: Could not parse Range "^1.10.0": Could not parse comparator "^" in "^1.10.0"

Yeah I was going to ask if you have the squash and merge option configured for this repo 🙂

@scottrigby we use merge commits, and (ask people to) squash the commits by hand.


Integration tests

Reference: https://github.com/piotrmurach/tty-pager/issues/17
Describe the change
This PR adds some experimental integration tests, particularly for the SystemPager. It could be argued that the BasicPager's specs are already integration ones rather than unit ones, since they don't use stubs and actually write to some real IO.
Why are we doing this / Benefits?
More confidence that the pager actually runs when a real process is spawned.
Drawbacks

There's a sleep 0.5 in one of the tests that is there to ensure that writing to the file has finished. Otherwise the process gets killed too quickly. I haven't thought of how to avoid this and it could make the test fragile, and it definitely makes it slower than it needs to be.
I don't know if the test will run successfully on Mac and on Windows.

Requirements
Put an X between brackets on each line if you have done the item:
[x] Tests written & passing locally?
[x] Code style checked?
[x] Rebased with master branch?
[] Documentaion updated?

Coverage remained the same at 100.0% when pulling fefec48dbf8c312e10c2293194170158c9517669 on AndrewRadev:integration-tests into e6332160672405060ba700d5511c745f3c460b14 on piotrmurach:master.

Thanks a lot for this! ❤


remove global json (npm)

bin/aws-cloudformation-cu-stack is the only script using it. can jq be used instead?!

While many/most/all things can be done with jq instead of json, and jq is preferred for its portability, there are some things that are not as simple. At least not if you're not a jq expert. And for that, I think json should remain a global dependency.


Codable insert support onConflict

Simple addition to the codable api to pass a onConflict parameter to the insert function.

I'd like this merged in too. I have a project that needs to save batches of Codable objects by either inserting or updating during a transaction. Additionally, it would be nice if while inserting Codables, the library can transform an id of zero into the next available number in an autoincremented primary key, if this is not available already; I say that because my Codable objects have a non optional Int id so the default has to be 0 for brand new objects.

@NathanFallet Thank you! I've been waiting for this day for so long. This was one of my first legit open source contributions and seeing it finally merged feels great!

@johannesebeling Thanks for your contribution! This repository was inactive for a while, but I joined the maintainers team a few days ago, and I'm trying to review and merge pull requests, and respond to issues 😄 (it's a lot of work)


Some language tidy-ups

A clean of the code, updating format strings to f-strings, and tidying of imports

No I use isort to clean up the imports, flynt to replace some format strings, and manually tweaked the rest. Black is great tho, for consistency and it's 99% consistent with isort as well.


make build on ubuntu 22.04

Describe the bug
When I run 'make build' I get the following output
Building project...
Checking dependencies...
Checking Python installation...
Python 3.10.12 is already installed.
Checking npm installation...
npm 10.5.0 is already installed.
Checking Docker installation...
Docker version 26.0.0, build 2ae903e is already installed.
Checking Poetry installation...
Poetry (version 1.8.2) is already installed.
Dependencies checked successfully.
Pulling Docker image...
Using default tag: latest
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/images/create?fromImage=ghcr.io%2Fopendevin%2Fsandbox&tag=latest": dial unix /var/run/docker.sock: connect: permission denied
make[1]: *** [Makefile:78: pull-docker-image] Error 1
make: *** [Makefile:24: build] Error 2
I havn't been able to progress to creating the config file
My config.toml and environment vars (be sure to redact API keys):

Steps to Reproduce:

install ubuntu 22.04
install the packages from the OpenDevin Page that are required
download the git for OpenDevin...

Same here.

Try running the backend and frontend seperately. Worked for me to some degree. Run backend first, then frontend

Try running the backend and frontend seperately. Worked for me to some degree. Run backend first, then frontend

It's happening for make build so cannot run.

Try running the backend and frontend seperately. Worked for me to some degree. Run backend first, then frontend

It's happening for ```make build``` so cannot run.

I have been able to resolve this by deleting the previous docker image and make build

I was able to resolve the issue by adding the docker to sudo group and running docker without sudo. https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue   closing issue


Remove specs2 binds

Removes binds from specs2 test rules. Users should use testing toolchain deps to customize specs2 dependencies.

LGTM.
Should we have a docs section about commits with breaking changes and maybe links to the code migration suggestion?

Maybe then we should move to releases? Otherwise, it's hard to follow what happened when, and which version is following which.

LGTM.
Should we have a docs section about commits with breaking changes and maybe links to the code migration suggestion?

Maybe then we should move to releases? Otherwise, it's hard to follow what happened when, and which version is following which.

We can. I feel releases might be a bit too big of a hammer for this need but I'm open to it.
Also I'm not sure I'd like to do it here and now.
I think we should discuss this in slack and get some feedback. Or maybe just link to a github issue about it.
Concretely do you think we should merge as is without documenting this change?
Also cc @simuons

We can. I feel releases might be a bit too big of a hammer for this need but I'm open to it.
Also I'm not sure I'd like to do it here and now.
I think we should discuss this in slack and get some feedback. Or maybe just link to a github issue about it.
Concretely do you think we should merge as is without documenting this change?
Also cc @simuons

We can. I feel releases might be a bit too big of a hammer for this need but I'm open to it.
Also I'm not sure I'd like to do it here and now.
I think we should discuss this in slack and get some feedback. Or maybe just link to a github issue about it.
Concretely do you think we should merge as is without documenting this change?

I think this change is compatible with existing docs, probably it's ok to merge. It should not be hard to migrate to toolchains.

We can. I feel releases might be a bit too big of a hammer for this need but I'm open to it.
Also I'm not sure I'd like to do it here and now.
I think we should discuss this in slack and get some feedback. Or maybe just link to a github issue about it.
Concretely do you think we should merge as is without documenting this change?

I think this change is compatible with existing docs, probably it's ok to merge. It should not be hard to migrate to toolchains.


Fix initialisation order warning

My recent change to improve error messages introduced a warning into the generated binding because the initialiser list for the exception constructor is not in the order in which members are declared. This PR should fix it.

Could you merge that into develop, too?

@martinweismann @woodwan I would like to get this PR merged.
Fusion build system treats this warning as an error and I would love to not have to suppressing it.
PR is in open state since April.
Should I open new one from own repo to proceed?

Oh... Original PR was already merged https://github.com/Autodesk/AutomaticComponentToolkit/pull/154
I'll open new PR with cherry picked commit then.


How to get the emails claim into the id token with custom policies

Core Library
MSAL.js v2 (@azure/msal-browser)
Core Library Version
2.16.0
Wrapper Library
Not Applicable
Wrapper Library Version
None
Description
According to this code line here: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/04b6bd4fd2b4a643505b525ed3d44271bcc3b654/lib/msal-common/src/cache/entities/AccountEntity.ts#L173
The username for the acquireTokenSilent request is filled by the id token "emails" claim. There is also an FAQ Section (https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/FAQ.md#why-is-getaccountbyusername-returning-null-even-though-im-signed-in), that explains how to enable that on the B2C Configuration. But we use custom policies and I didn't find a way, how to get this claim into the id token. We have an "email" claim but not "emails".
Thank you very much for your help :)
MSAL Configuration
No response
Relevant Code Snippets
No response
Identity Provider
Azure B2C Custom Policy
Source
External (Customer)

@devbrains-com would you mind raising this question at the b2c-samples repo? This repo contains custom policy samples and can help with custom policy related issues.

Yes sure. But why do you only read the emails claim and not the email claim? Because the email claim is set in the id token by using the default custom policies.

I believe this is because the standard user-flows return only emails claim in the id token (you can see that if you try to create a new one), so the library is basing the assumption on that (i.e. it is not necessary for developers to make use of a custom policy).


bug(?): truncated modes labels

What system are you running Yazi on?
Linux X11
What terminal are you running Yazi in?
kitty 0.35.2
yazi --debug output
Yazi
    Version: 0.3.0 (4150f40 2024-08-09)
    Debug  : false
    OS     : linux-x86_64 (unix)

Ya
    Version: 0.3.0

Emulator
    Emulator.via_env: ("xterm-kitty", "")
    Emulator.via_csi: Ok(Kitty)
    Emulator.detect : Kitty

Adapter
    Adapter.matches: Kitty

Desktop
    XDG_SESSION_TYPE: Some("tty")
    WAYLAND_DISPLAY : None
    DISPLAY         : Some(":0")

SSH
    shared.in_ssh_connection: false

WSL
    /proc/sys/fs/binfmt_misc/WSLInterop: false

Variables
    SHELL              : Some("/bin/zsh")
    EDITOR             : Some("nvim")
    YAZI_FILE_ONE      : None
    YAZI_CONFIG_HOME   : None
    ZELLIJ_SESSION_NAME: None

Text Opener
    default: Some(Opener { run: "${EDITOR} \"$@\"", block: true, orphan: false, desc: "Neovim", for_: None, spread: true })
    block  : Some(Opener { run: "${EDITOR} \"$@\"", block: true, orphan: false, desc: "Neovim", for_: None, spread: true })

tmux
    TMUX   : false
    Version: No such file or directory (os error 2)

Dependencies
    file             : 5.45
    ueberzugpp       : No such file or directory (os error 2)
    ffmpegthumbnailer: 2.2.2
    magick           : 7.1.1-25
    fzf              : 0.53.0
    fd               : 10.1.0
    rg               : 14.1.0
    chafa            : No such file or directory (os error 2)
    zoxide           : 0.9.4
    7z               : 16.02
    7zz              : No such file or directory (os error 2)
    jq               : 1.7.1

--------------------------------------------------
When reporting a bug, please also upload the `yazi.log` log file - only upload the most recent content by time.
You can find it in the "/home/xfzv/.local/state/yazi" directory.

Did you try the latest nightly build to see if the problem got fixed?
Yes, and I updated the debug information above (yazi --debug) to the nightly that I tried
Describe the bug
Not sure if it's a feature or a bug but I noticed that the modes labels in status bar are now truncated:

left: Yazi 0.3.0 (7a380c2 2024-08-01)
right: Yazi 0.3.0 (4150f40 2024-08-09)

Minimal reproducer
Occurs without ~/.config/yazi directory.
Anything else?
No response

No, it's not a bug. I've made some adjustments to the status bar recently because I tried out Helix and really liked it. Its mode is displayed with just three letters instead of the full name, and I found that makes a lot of sense :)

No problem. By the way your colors look a bit off. Maybe you could apply a flavor to Yazi, https://github.com/yazi-rs/flavors


Debug postfix

CMake has a simple mechanism to add a debug postfix: https://cmake.org/cmake/help/v3.0/command/set_target_properties.html
This is handy to identify debug and release version of a library or application (e.g., for the examples).

Sorry, but I don't understand what this issue is about. Could you elaborate the issue please?

I've been a bit cryptic..
Practical example: if you build in debug and release mode the C library, you get always tinyspline.lib. With debug_postfix```, the debug version may be tinysplineD.libortinyspline_d.lib`` (based on what you define as postfix).
The advantage is that when you add tinyspline as an external dependency, you can make that CMake finds both the debug and the release version by using find_library with name tinyspline_d for debug and tinyspline for release: http://stackoverflow.com/questions/2209929/linking-different-libraries-for-debug-and-release-builds-in-cmake-on-windows

I never saw that someone used different names for different build configurations. Usually, you store them in different directories, similar to what MSVC does.

I never saw that someone used different names for different build configurations.

Just looking at the 3 random popular libraries that I have on my machine:
Boost:

OpenCV

Qt5

It is different if you state that you don't personally like the postfix.

I close the ticket since I assume that you don't personally like the postfix.

I already gave you an example with a popular library: https://github.com/Itseez/opencv/blob/master/cmake/OpenCVModule.cmake#L1104
Or, if you prefer, just pick one at random of the more than 30,000 results if you query DEBUG_POSTFIX on GitHub: https://github.com/search?q=DEBUG_POSTFIX&type=Code&utf8=✓

I already gave you an example with a popular library: https://github.com/Itseez/opencv/blob/master/cmake/OpenCVModule.cmake#L1104

That's weird. I downloaded the latest version of OpenCV, compiled it with Release and Debug and didn't get any of the postfixes.

I believe that it is quite common on MSVC's world: https://github.com/dcnieho/FreeGLUT/blob/git_master/freeglut/freeglut/CMakeLists.txt#L274

I believe that it is quite common on MSVC's world: https://github.com/dcnieho/FreeGLUT/blob/git_master/freeglut/freeglut/CMakeLists.txt#L274

That might be the reason whyt I didn't see it before. If you really want this feature, I'm fine with adding it to CMakeLists.txt

Personally, I don't need it anymore since I ended up with compiling tinyspline as part of my library (thus, I add the postfix at that level).
In general, it might be useful for a library that wants to be cross platform.
Incidentally, do you have a preferred way for citing the library? Did you write/plan to write an article on it?

Did you write/plan to write an article on it?

There is no and probably will never be a paper about it. It's a hobby project I'm working on from time to time. Nonetheless, you may add my full name and a link if you like. Moreover, I really would like to read your paper :).

@giumas Should all compiled file have a debug postfix or only the library files?

I asked #cmake in IRC if adding a debug post is common practice. They told me that it is " for microsoft (and compatible) toolchains" ("compatible toolchains" include Intel for Windows) Thus, I will add it for MSVC (once  supported for Intel as well)  only (as in FreeGLUT referenced by @giumas).

I've added a debug postfix for the C and C++ library in 60fa327cdf10803f4e894fcdb56d49270a7a8003. Adding a postfix for the bindings is not too easy and may lead to error-prone builds. Therefore, I decided to not add them for now. If you (especially @giumas) insist that a debug postfix for the bindings is required and worthwhile, I will try to add them in a follow up commit.


tf2.1 tf.nn.ctc_loss slower，takes up a lot of GPU memory

Please make sure that this is a bug. As per our
GitHub Policy,
we only address code/doc bugs, performance issues, feature requests and
build/installation issues on GitHub. tag:bug_template
System information
Have I written custom code : yes
OS Platform and Distribution: centos 7, not Distribution
TensorFlow installed from docker: docker pull nvcr.io/nvidia/tensorflow:20.02-tf2-py3 .tensorflow version is 2.1.0
Describe the current behavior
Just run the forward algorithm and use watch -n 0.2 nvidia-smi to watch the GPU utilization rate always stay at 86% ~ 95%. However, after calculating tf.nn.ctc_loss, the GPU usage jitter is drastically from 0% to 85%. Seeing the decline in gpu utilization is particularly severe, personally guess that this tf.nn.ctc_loss is implemented by cpu, will there be a switch between gpu memory and memory when calculating loss?
Describe the expected behavior
Calculate the loss and update gradient normally, the GPU usage rate remains at 85%. Currently, the performance of calculating the loss using tf.nn.ctc_loss of tf2.1 does not meet expectations.
Here is my test code. The run_forward_noloss function is a simple forward calculation function. Run_forward_withloss is forward calculation +loss calculation.
# _*_ coding:utf-8 _*_
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import time
import tensorflow as tf
layers = tf.keras.layers
time_func = lambda: time.clock()*1000

class CRNNEncoder(tf.keras.Model):
    def __init__(self, configs, name=None):
        super(CRNNEncoder, self).__init__(name=name)
        self.vocab_size = configs['vocab_size']
        self.conv1 = layers.Conv2D(64, kernel_size=(3, 3), activation='relu', padding='same', name='conv1')
        self.pool1 = layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), name='pool1')
        self.conv2 = layers.Conv2D(128, kernel_size=(3, 3), activation='relu', padding='same', name='conv2')
        self.pool2 = layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), name='pool2')
        self.conv3 = layers.Conv2D(256, kernel_size=(3, 3), activation='relu', padding='same', name='conv3')
        self.conv4 = layers.Conv2D(256, kernel_size=(3, 3), activation='relu', padding='same', name='conv4')
        self.padd4 = layers.ZeroPadding2D(padding=(0, 1))
        self.pool4 = layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 1), padding='valid', name='pool3')
        self.conv5 = layers.Conv2D(512, kernel_size=(3, 3), activation='relu', padding='same', name='conv5')
        self.bncv5 = layers.BatchNormalization(axis=-1, name='bnconv5')
        self.conv6 = layers.Conv2D(512, kernel_size=(3, 3), activation='relu', padding='same', name='conv6')
        self.bncv6 = layers.BatchNormalization(axis=-1, name='bnconv6')
        self.pddd6 = layers.ZeroPadding2D(padding=(0, 1))
        self.pool6 = layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 1), padding='valid', name='pool4')
        self.conv7 = layers.Conv2D(512, kernel_size=(3, 3), activation='relu', padding='valid', name='conv7')
        self.final_layer = tf.keras.layers.Dense(self.vocab_size, name='ctc_decoder_linear')

    def get_feature_step(self, widths):
        return tf.cast((tf.cast(widths, tf.float32)/4.0), dtype=tf.int32)
    @tf.function
    def call(self, inputs, widths, training=True):
        tf.print('call input:', inputs.shape)
        features = self.conv1(inputs)
        features = self.pool1(features)
        features = self.conv2(features)
        features = self.pool2(features)
        features = self.conv3(features)
        features = self.conv4(features)
        features = self.padd4(features)
        features = self.pool4(features)
        features = self.conv5(features)
        features = self.bncv5(features, training=training)
        features = self.conv6(features)
        features = self.bncv6(features, training=training)
        features = self.pddd6(features)
        features = self.pool6(features)
        features = self.conv7(features)
        cnn_features = tf.reduce_max(features, axis=1)
        # rnn_features = self.run_bilstm1(rnn_features)
        rnn_features = cnn_features
        final_logits = self.final_layer(rnn_features)
        widths = self.get_feature_step(widths)
        return cnn_features, rnn_features, widths, final_logits

def run_forward_noloss():
    batch = 24
    imgh = 48
    imgw = 1024
    imgc = 3
    vocab_size = 1424
    configs = {'vocab_size': vocab_size}
    model = CRNNEncoder(configs)
    images = tf.random.uniform([batch, imgh, imgw, imgc], minval=-1, maxval=1)
    widths = tf.fill([batch], imgw)
    logit_mean = tf.keras.metrics.Mean('logit_mean')
    init_time = time_func()
    for i in range(200):
        cnn_features, rnn_features, widths, final_logits = model(images, widths)
        final_logits = tf.reduce_mean(final_logits)
        logit_mean.update_state(final_logits)
    fini_time = time_func()
    print('time:', fini_time-init_time)
    print(logit_mean.result().numpy)

def run_forward_withloss():
    batch = 24
    imgh = 48
    imgw = 1024
    imgc = 3
    txtlen = 64
    vocab_size = 1424
    eos_id = vocab_size - 1
    configs = {'vocab_size': vocab_size}
    model = CRNNEncoder(configs)
    images = tf.random.uniform([batch, imgh, imgw, imgc], minval=-1, maxval=1)
    widths = tf.fill([batch], imgw)
    labels = tf.fill([batch, txtlen], 0)
    labels_len = tf.fill([batch], txtlen)
    ctc_loss_mean = tf.keras.metrics.Mean('ctc_loss_mean')
    init_time = time_func()
    for i in range(200):
        cnn_features, rnn_features, widths, final_logits = model(images, widths)
        ctc_loss = tf.nn.ctc_loss(labels=labels,
                                  logits=final_logits,
                                  label_length=labels_len,
                                  logit_length=widths,
                                  blank_index=eos_id,
                                  logits_time_major=False)

        ctc_loss = tf.reduce_mean(ctc_loss)
        ctc_loss_mean.update_state(ctc_loss)
    fini_time = time_func()
    print('time:', fini_time - init_time)
    print(ctc_loss_mean.result().numpy)

if __name__ == '__main__':
    run_forward_noloss()
    run_forward_withloss()

Since the calculation of ctc_loss is not in tf.function, I worry that there will be additional overhead. Now the code has been re-modified to encapsulate the loss calculation into the function of tf.function. Here is the latest modified code
# _*_ coding:utf-8 _*_
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import time
import tensorflow as tf
layers = tf.keras.layers
time_func = lambda: time.clock()*1000

gpus = tf.config.experimental.list_physical_devices('GPU')
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)

class CRNNEncoder(tf.keras.Model):
    def __init__(self, configs, name=None):
        super(CRNNEncoder, self).__init__(name=name)

        self.vocab_size = configs['vocab_size']
        self.conv1 = layers.Conv2D(64, kernel_size=(3, 3), activation='relu', padding='same', name='conv1')
        self.pool1 = layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), name='pool1')
        self.conv2 = layers.Conv2D(128, kernel_size=(3, 3), activation='relu', padding='same', name='conv2')
        self.pool2 = layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), name='pool2')
        self.conv3 = layers.Conv2D(256, kernel_size=(3, 3), activation='relu', padding='same', name='conv3')
        self.conv4 = layers.Conv2D(256, kernel_size=(3, 3), activation='relu', padding='same', name='conv4')

        self.padd4 = layers.ZeroPadding2D(padding=(0, 1))
        self.pool4 = layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 1), padding='valid', name='pool3')
        self.conv5 = layers.Conv2D(512, kernel_size=(3, 3), activation='relu', padding='same', name='conv5')
        self.bncv5 = layers.BatchNormalization(axis=-1, name='bnconv5')
        self.conv6 = layers.Conv2D(512, kernel_size=(3, 3), activation='relu', padding='same', name='conv6')
        self.bncv6 = layers.BatchNormalization(axis=-1, name='bnconv6')
        self.pddd6 = layers.ZeroPadding2D(padding=(0, 1))
        self.pool6 = layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 1), padding='valid', name='pool4')
        self.conv7 = layers.Conv2D(512, kernel_size=(3, 3), activation='relu', padding='valid', name='conv7')
        self.final_layer = tf.keras.layers.Dense(self.vocab_size, name='ctc_decoder_linear')

    def get_feature_step(self, widths):
        return tf.cast((tf.cast(widths, tf.float32)/4.0), dtype=tf.int32)

    @tf.function
    def call(self, inputs, widths, training=True):
        tf.print('call input:', inputs.shape)
        features = self.conv1(inputs)
        features = self.pool1(features)
        features = self.conv2(features)
        features = self.pool2(features)
        features = self.conv3(features)
        features = self.conv4(features)
        features = self.padd4(features)
        features = self.pool4(features)
        features = self.conv5(features)
        features = self.bncv5(features, training=training)
        features = self.conv6(features)
        features = self.bncv6(features, training=training)
        features = self.pddd6(features)
        features = self.pool6(features)
        features = self.conv7(features)
        cnn_features = tf.reduce_max(features, axis=1)
        # rnn_features = self.run_bilstm1(rnn_features)
        rnn_features = cnn_features
        final_logits = self.final_layer(rnn_features)
        widths = self.get_feature_step(widths)
        return cnn_features, rnn_features, widths, final_logits

def run_forward_noloss():
    batch = 24
    imgh = 48
    imgw = 1024
    imgc = 3
    vocab_size = 1424
    configs = {'vocab_size': vocab_size}
    model = CRNNEncoder(configs)
    images = tf.random.uniform([batch, imgh, imgw, imgc], minval=-1, maxval=1)
    widths = tf.fill([batch], imgw)
    logit_mean = tf.keras.metrics.Mean('logit_mean')
    init_time = time_func()
    for i in range(2000):
        cnn_features, rnn_features, widths, final_logits = model(images, widths)
        final_logits = tf.reduce_mean(final_logits)
        logit_mean.update_state(final_logits)

    fini_time = time_func()
    print('time:', fini_time-init_time)
    print(logit_mean.result().numpy)

def run_forward_withloss():
    batch = 24
    imgh = 48
    imgw = 1024
    imgc = 3
    txtlen = 64
    vocab_size = 1424
    eos_id = vocab_size - 1
    configs = {'vocab_size': vocab_size}
    model = CRNNEncoder(configs)
    images = tf.random.uniform([batch, imgh, imgw, imgc], minval=-1, maxval=1)
    widths = tf.fill([batch], imgw)
    labels = tf.fill([batch, txtlen], 0)
    labels_len = tf.fill([batch], txtlen)
    ctc_loss_mean = tf.keras.metrics.Mean('ctc_loss_mean')

    @tf.function
    def run_step(images_, widths_, labels_, labels_len_):
        cnn_features, rnn_features, widths, final_logits = model(images_, widths_)

        ctc_loss = tf.nn.ctc_loss(labels=labels_,
                                  logits=final_logits,
                                  label_length=labels_len_,
                                  logit_length=widths,
                                  blank_index=eos_id,
                                  logits_time_major=False)

        ctc_loss = tf.reduce_mean(ctc_loss)
        ctc_loss_mean.update_state(ctc_loss)

    init_time = time_func()
    for i in range(2000):
        run_step(images, widths, labels, labels_len)

    fini_time = time_func()
    print('time:', fini_time - init_time)
    print(ctc_loss_mean.result().numpy)

if __name__ == '__main__':
    #run_forward_noloss()
    run_forward_withloss()

run the above code  we found that when tf.ctc_loss is not calculated, the GPU storage uses 4865MiB, gpu usage at 95%；when tf.ctc_loss is turned on, the GPU storage uses 8961MiB， GPU usage jitter is drastically from 20% to 50%

On TPU and GPU: Only dense padded labels are supported. Are you by any chance using sparse padded labels?

Closing this issue as it has been inactive for 2 weeks. Please add additional comments for us to open this issue again.

I think that I also have the issue. I am training a DeepSpeech model from original paper. If tf.nn.ctc_loss calculation is replaced by logits.sum() then GPU RAM consumption stays at 4Gb for a batch of 10. When I actually use tf.nn.ctc_loss I get OOM error on 1080Ti with 12Gb RAM for batch of one example which has logits of length ~1500 and labels of length ~300.
I can provide minimal code for reproduction if neccessary.