Create README2.md

Please include answers to these questions as part of your pull request
For each question simply place an X  in the square brackets, [X], that represents your answer

Q1: Confirm that you have the right to submit the code that is being contributed. Please consider the origin of your code and confirm you have the appropriate rights to make the submission subject to the Apache 2.0 license that applies to everything in this repository of custom steps. If so, follow the instructions for the Contributor Agreement (which is based on the industry-standard Developer Certificate of Origin (DCO)).

[x] Yes, I have the right to submit code and agree to releasing the code under the Apache 2.0 license
[ ] No

Q2: Confirm that your contribution does not include any personally identifiable information (PII), for example, in any examples used in your README file.

[x] My contribution does NOT include PII data
[ ] My contribution includes PII data

Q3: Confirm your contribution does not include any encryption or other export-controlled technology.

[x] My contribution does NOT contain encryption or other export-controlled technology
[ ] My contribution includes encryption or other export-controlled technology

ContributorAgreement-signed-by-Santa-Claus.txt

SAS Internal Due Diligence Review - COMPLETED on  23AUG2022.

SAS Internal Due Diligence Review - COMPLETED on 23AUG2022


feat: Adjust acceleration/deceleration of gantry with Python API surface controls

Overview
When the robot is running at full speed, everything shakes slightly at the beginning and end of the movement. It would be beneficial to add Opentrons acceleration control to the API, such that the robot gradually accelerates to the default_speed, smoothening the speed up and slowing down to reduce shaking.

Implementation details
Python API controls, most likely in the .InstrumentContext, that could allow you to set an acceleration /deceleration rate for the gantry.

Design

Acceptance criteria

This would definitely be useful.
Is this likely to ever be implemented for the OT-2? Are there any known workarounds?


Implement from_documents class method in weaviate VectorStore

We should implement all abstract methods in VectorStore so that users can use weaviate as the vector store for any use case.
Context:
https://github.com/hwchase17/langchain/blob/763f87953686a69897d1f4d2260388b88eb8d670/langchain/vectorstores/base.py#L104-L113

Hi @hsm207 ,
I think It doesn't need to be overridden by the parent. It only calls the from_texts method which is already implemented. The page_content and metadata are allready Document attributes. It is the case for all other vectorstores (e.g., faiss, milvus, etc.). Is it possible for you to test it and let me know?
Best,
Pouyan

Not sure what the best way of differentiating kwargs passed here is, maybe doing some popping from the kwargs so they don't get passed downstream once the client is created.

I suggest creating a dataclass and call it something like WeaviateConfig that contains the possible configs for the weaviiate client instead of relyingon kwargs. This way, it helps with type checking and intellisense.

@diego-escobedo  @hsm207 the weaviate client repo has just merged a config dataclass PR which I am happy to add support for here if there are no objections.

@cs0lar in my opinion, let's wait until that feature makes it to weaviate's official docs to give time for the developers to finalise the interface.

@hsm207 agreed!

@Pouyanpi

It is the case for all other vectorstores (e.g., faiss, milvus, etc.). Is it possible for you to test it and let me know?

chroma, pgvector and tair to implement their own from_documents method.
Do you know why this is needed?

can confirm that from_documents works fine now.

from the stack trace, it looks like you have some issue with your machine's ssl config

whoa, that is strange


Enable 4x4 AIE cores for matmul

Change the tiling strategy to use 4x4 AIE cores for pack-peel pipeline.
Currently some tests failed with the changes:

small matmul 8x32x16 failed with

<unknown>:0: error: 'amdaie.logicalobjectfifo.from_memref' op should have at least one tile candidate
<unknown>:0: note: see current operation: %18 = "amdaie.logicalobjectfifo.from_memref"(%17) : (memref<1x1x8x16xi32, 1 : i32>) -> !amdaie.logicalobjectfifo<memref<1x1x8x16xi32, 1 : i32>>

Note: 16x32x16 works, so I have changed the failed test to this shape.

All packet flow tests failed with

<unknown>:0: error: 'amdaie.flow' op ran out of packet IDs to assign
<unknown>:0: note: see current operation: %503 = "amdaie.flow"(%501, %502) <{is_packet_flow = true, operandSegmentSizes = array<i32: 1, 1>}> : (index, index) -> index

Temporarily disable these tests until fix.

AIR pipeline failed all e2e tests, so I keep 2x2 array setting for AIR pipeline until @erwei-xilinx fix the issue.

4. Chess tests failed in ci, ref https://github.com/nod-ai/iree-amd-aie/actions/runs/11964433065/job/33356990681?pr=920.
In addition, the tiling strategy needs some refactor. I would like to do that in a follow up PR together with a better way to select L1 tile sizes.

What's the timeline for having batch matmul tests working?

@jtuyls mentioned he's already working on generalizing the split buffer pass. I think it'll be fixed early next week.

What's the timeline for having batch matmul tests working?

@jtuyls mentioned he's already working on generalizing the split buffer pass. I think it'll be fixed early next week.

Yeah, batch matmul is functional now with the following PR: https://github.com/nod-ai/iree-amd-aie/pull/927. I rebased this PR on top of that one to show both combined.


Fix 'fingle' typo

:heart:

Current coverage is 93.45%

Merging #1 into master will decrease coverage by -0.31% as of 7ca2642

Powered by Codecov. Updated on successful CI builds.


Problematic domains

Hi!
<IP_ADDRESS> connect.facebook.net disables comment sections at blabbermouth.net (and maybe elsewhere).
<IP_ADDRESS> d2gatte9o95jao.cloudfront.net breaks urbandictionary.com.

Hello @Matthaiks and welcome here!
Because of the listing below, I'll suggest you to whitelist those domains if you really need them.
Indeed, because they are both into ./hosts that means that they are into the unified file (./data/)  which is almost exclusively updated if upstream update their lists because of new entry, false positive deletion or deletion of inactive domains (for reintroduction later ?).
In this case, as they are not false positives and are both listed in more than one list, that only gives us the whitelist as the only option.
I'm not @StevenBlack but that's my point of view regarding those domains.

Occurence search
connect.facebook.net
Can be found in the following lists:
./extensions/social/hosts
./data/StevenBlack/hosts
./alternates/fakenews-porn/hosts
./alternates/fakenews-gambling/hosts
./alternates/social/hosts
./alternates/gambling/hosts
./alternates/fakenews-social/hosts
./alternates/porn-social/hosts
./alternates/gambling-porn/hosts
./alternates/fakenews-gambling-porn-social/hosts
./alternates/fakenews-gambling-porn/hosts
./alternates/porn/hosts
./alternates/fakenews/hosts
./alternates/gambling-porn-social/hosts
./alternates/fakenews-porn-social/hosts
./alternates/gambling-social/hosts
./alternates/fakenews-gambling-social/hosts
./hosts

d2gatte9o95jao.cloudfront.net
Can be found in the following lists:
./data/mvps.org/hosts
./alternates/fakenews-porn/hosts
./alternates/fakenews-gambling/hosts
./alternates/social/hosts
./alternates/gambling/hosts
./alternates/fakenews-social/hosts
./alternates/porn-social/hosts
./alternates/gambling-porn/hosts
./alternates/fakenews-gambling-porn-social/hosts
./alternates/fakenews-gambling-porn/hosts
./alternates/porn/hosts
./alternates/fakenews/hosts
./alternates/gambling-porn-social/hosts
./alternates/fakenews-porn-social/hosts
./alternates/gambling-social/hosts
./alternates/fakenews-gambling-social/hosts
./hosts

There must be something about d2gatte9o95jao.cloudfront.net... the fine folks at mvps.org, they take their listkeeping very seriously.

"connect.facebook.net" and "facebook.net" also handle embedded/hidden event triggers similar to events in Google Analytics and can be used to track your behavior without your knowledge and are not just used for comments, sharing, liking, or other obvious social media functions, as we have seen in a couple issues in the past.

Closing, as per Issue #656.


style: lint

just reviewing and noticed a missing space

oops! guess editing on github is a no-go. fixed!

Thank you @typeoneerror


Inconsistent data types in filessummaries (and may in other APIs).

Yuyi, filesummaries returns inconsistent data types which cause problem at client side (DAS) which parse its output. Here are two different results:
https://cmsweb.cern.ch/dbs/prod/global/DBSReader/filesummaries/?dataset=/WToENu_Tune4C_13TeV-pythia8/Fall13dr-tsg_PU40bx25_POSTLS162_V2-v1/GEN-SIM-RAW
[{"num_file": 61, "num_lumi": 1103, "num_block": 1, "num_event": 99280, "file_size":<PHONE_NUMBER>81}]

the return type here is list and element of a list is dictionary.
While if I do another call I get this
https://cmsweb.cern.ch/dbs/prod/global/DBSReader/filesummaries/?dataset=/GluGluToHToWWTo2LAndTau2Nu_M-115_8TeV-minloHJJ-pythia6-tauola/None-v0/GEN-SIM&validFileOnly=1
[null]

here return type is list whose element is null.
The difference in two cases is subtle but important. In former case you return dict within a list, while in second case your return null. And, null != dict as data type concern.
Please fix that behavior. I would appreciate if you look up all other APIs for such misbehavior and see if returned data have consistent data types.
Thanks,
Valentin.

Valentin,
I will check the APIs when sql queries return NULL. Is it OK with you that we have the fixing in April release?
Thanks,
Yuyi

Yuyi,
yes, that's fine, I rather prefer that you'll check all APIs then fix one
specific one and declare the victory. I don't know how many APIs are affected,
but I did find that filesummaries is certainly returning different data types
as I described.
Best,
Valentin.
On  0, Yuyi Guo<EMAIL_ADDRESS>wrote:

Valentin,
I will check the APIs when sql queries return NULL. Is it OK with you that we have the fixing in April release?
Thanks,
Yuyi

Reply to this email directly or view it on GitHub:
https://github.com/dmwm/DBS/issues/513#issuecomment-183377234

And I was about to open the same issue reported here, e.g.:
https://cmsweb-testbed.cern.ch/dbs/int/global/DBSReader/filesummaries?dataset=/QCD_Pt-40toInf_fwdJet_bwdJet_Tune4C_2p76TeV-pythia8/DMWM_Test-MonteCarlo_eff_HG1606_Validation_TEST_Alan_v2-v1/GEN-SIM
which returns [null].
Yuyi, if you have no time to look at all the apis, I suggest you fix at least those known to be wrong.
If people face the same problem elsewhere, they will certainly report :)

@vkuznet
ideally, when nothing is found in DBS, DBS should return [ ]. Currently it returns [None] as you reported in this issue.
For filessummaries API,  the code checks if anything was found. If not, it return {} as in below code.
https://github.com/dmwm/DBS/blob/master/Server/Python/src/dbs/business/DBSFile.py#L91
This way the API will return [{}] as the result if nothing is found. Is this acceptable?
In the past, above code  was "yield " instead "yield {}". Then [None] was returned.
Since we are using generator here, the very top code just iterate over this generator and yield again to send a list as the final result. The final  list is created by below code:
https://github.com/dmwm/DBS/blob/3bc703ecf8e3096d9151000c765078981d98aee0/Server/Python/src/dbs/web/DBSReaderModel.py#L995 .
I did not get how to form an empty list [ ] using generator when nothing is found.

Yuyi,

For filessummaries API,  the code checks if anything was found. If not, it return {} as in below code.
https://github.com/dmwm/DBS/blob/master/Server/Python/src/dbs/business/DBSFile.py#L91

why on line 91 you need to yield {} at all? just put pass and don't yield.

This way the API will return [{}] as the result if nothing is found. Is this acceptable?

this would be acceptable since it will provide correct data type, i.e. a dict.

Since we are using generator here, the very top code just iterate over this generator and yield again to send a list as the final result. The final  list is created by below code:
https://github.com/dmwm/DBS/blob/3bc703ecf8e3096d9151000c765078981d98aee0/Server/Python/src/dbs/web/DBSReaderModel.py#L995 .

This code can do one more check
for item in r:
    if item:
       yield item

I did not get how to form an empty list [ ] using generator when nothing is found.

see above, if nothing is found don't yield

Thanks.

Now return [] when nothing is found.

Awesome! Thanks, Yuyi.


New version: MLInterpret v0.1.3

Registering package: MLInterpret
Repository: https://github.com/AStupidBear/MLInterpret.jl
Created by: @AStupidBear
Version: v0.1.3
Commit: 159164ea03a6b9a384f9f8d755cdb927aaf00b97
Reviewed by: @AStupidBear
Reference: https://github.com/AStupidBear/MLInterpret.jl/commit/159164ea03a6b9a384f9f8d755cdb927aaf00b97#commitcomment-38430566

close


"get-PowerBiWorkspace" giving error like 'incompatible with the array'

Hi,
"Get-PowerBiWorkspace " is giving error like below. I tried to execute in VS-Code, ISE and Powershell -Noprofile, but no luck. Please help me to resolve this.

I am using PowerShell 5.1 . Below is list of modules are present in my machine.
Newtonsoft module::
MDStreamVersion : 131072
FullyQualifiedName : C:\Program Files\WindowsPowerShell\Modules\Az.Accounts\2.1.2\PreloadAssemblies\Newtonsoft.Json.12.0.3.dll
ModuleVersionId : 2676a2da-6edc-420e-890e-d28aa4572ee5
MetadataToken : 1
ScopeName : Newtonsoft.Json.dll
Name : Newtonsoft.Json.12.0.3.dll
Assembly : Newtonsoft.Json, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
CustomAttributes : {}
ModuleHandle : System.ModuleHandle

MicrosoftPowerBIMgmt module::

I have uninstalled MicrosoftPowerBIMgmt and Newtonsoft and installed both again.

This looks like a compatible issue with newtonsoft.json which we have not figured out yet. It should work if you switch to PowerShell 7

Thanks... I have updated to PowerShell.


Can't create snapshot with same name if there's existing one with different database engine

Is there an existing issue for this?

[X] I have searched the existing issues

Output of ddev debug test
Expand `ddev debug test` diagnostic information
I don't think for the current issue this is not needed but I'll send it if you really need it.

Expected Behavior
I have snapshot main-mariadb_10.4.gz . When I delete my local env, switch from mariadb to mysql in config.yaml and try to create snapshot, it should be able to do so because there's no main-mysql_10.4.gz snapshot yet.
Actual Behavior
I'm greeting with incorrect error:
Failed to snapshot example.com: snapshot main-mysql_8.0.gz already exists, please use another snapshot name or clean up snapshots with ddev snapshot --cleanup
That file does not exist. So I guess it only checks for the snapshot name itself, then generates the error based on current setup.
Steps To Reproduce

Start with mariadb configuration

name: example.com
type: drupal10
docroot: web
php_version: "8.1"
webserver_type: nginx-fpm
xdebug_enabled: false
additional_hostnames: []
additional_fqdns: []
database:
    type: mariadb
    version: "10.4"
use_dns_when_possible: true
composer_version: "2"
disable_settings_management: true
web_environment: []
nodejs_version: "16"

Create snapshot
ddev snapshot --name main

Export your database
ddev export-db --gzip=false --file=main.sql (without gzip because maybe it's a bit faster :) )

Destroy the old env
ddev delete --omit-snapshot --yes

Switch to the new mysql db in config.yaml:

database:
    type: mysql
    version: "8.0"

Init the new env:
ddev start

Import DB dump.
ddev import-db --file=mysql8-tmp.sql

Try to create snapshot again:
ddev snapshot --name main

Anything else?
No response

Is it important to you to have snapshots with the same name and different database types?

For some time yes until this is still in branch and not yet in main. In any case the error message should be correct.

I do confirm your results:
Two snapshots with same base name, different type
$ ddev debug configyaml | grep database
database: {mariadb 10.4}
rfay@rfay-mbp-2021:~/workspace/d10$ ddev snapshot --name=myname
Creating database snapshot myname
Created database snapshot myname
Restore this snapshot with 'ddev snapshot restore myname'
rfay@rfay-mbp-2021:~/workspace/d10$ ddev debug migrate-database mysql:8.0
Is it OK to attempt conversion from mariadb:10.4 to mysql:8.0?
This will export your database, create a snapshot,
then destroy your current database and import into the new database type.
It only migrates the 'db' database [Y/n] (yes):
Wrote database dump from project 'd10' database 'db' to file /Users/rfay/workspace/d10/.ddev/.downloads/db.sql.gz in gzip format.
Creating database snapshot d10_remove_data_snapshot_20240403203004
 Container ddev-d10-db  Stopped
 Container ddev-d10-web  Stopped
 Container ddev-d10-web  Stopped
 Container ddev-d10-db  Stopped
 Container ddev-d10-db  Removed
 Container ddev-d10-web  Removed
 Network ddev-d10_default  Removed
Volume d10-mariadb for project d10 was deleted
Volume d10-postgres for project d10 was deleted
Volume d10_project_mutagen for project d10 was deleted
Project d10 was deleted. Your code and configuration are unchanged.
Building project images...
.Project images built in 1s.
 Network ddev-d10_default  Created
 Container ddev-d10-web  Created
 Container ddev-d10-db  Created
 Container ddev-d10-web  Started
 Container ddev-d10-db  Started
Starting Mutagen sync process...
..Mutagen sync flush completed in 3s.
For details on sync status 'ddev mutagen st d10 -l'
Waiting for web/db containers to become ready: [web db]
Starting ddev-router if necessary...
 Container ddev-router  Running
Waiting for additional project containers to become ready...
All project containers are now ready.
mysql: [Warning] Using a password on the command line interface can be insecure.
4.33MiB 0:00:00 [4.93MiB/s] [=========================================================================================>] 100%
Database was converted to mysql:8.0
rfay@rfay-mbp-2021:~/workspace/d10$ ddev snapshot --name=myname
Failed to snapshot d10: snapshot myname-mysql_8.0.gz already exists, please use another snapshot name or clean up snapshots with `ddev snapshot --cleanup`
rfay@rfay-mbp-2021:~/workspace/d10$ ls -l .ddev/db_snapshots/
total 29368
-rw-r--r--  1 rfay  staff  7521618 Apr  3 20:30 d10_remove_data_snapshot_20240403203004-mariadb_10.4.gz
-rw-r--r--  1 rfay  staff  7508156 Apr  3 20:29 myname-mariadb_10.4.gz
rfay@rfay-mbp-2021:~/workspace/d10$


feat: convertToData handles Bool

Summary of Changes
func convertToData now able to convert Bool value to 1 byte Data.
If the value is true output is 0x01 if false it's 0x00.
Test Data or Screenshots
By submitting this pull request, you are confirming the following:

I have reviewed the Contribution Guidelines.
I have performed a self-review of my own code.
I have updated my repository to match the develop branch.
I have included test data or screenshots that prove my fix is effective or that my feature works.
I have checked that all tests work and swiftlint is not throwing any errors/warnings.

@janndriessen @yaroslavyaroslav Ready for review. Tests pass.


More abstraction for accessible components

In https://github.com/phetsims/john-travoltage/issues/149 @jonathanolson said:

It may make sense long-term to think about mix-ins for specific component types.
For instance, say you have a Path that you want to be a slider in the DOM. You need:

tagName: 'input',
inputType: 'range',
ariaRole: 'slider',

set, possibly parentContainerTagName: 'div' or others, you'll want the workaround:

// Safari seems to require that a range input has a width, otherwise it will not be keyboard accessible.
this.domElement.style.width = '1px';

you'll want to handle the min/max/step attributes, etc., and maybe custom slider-related functions would be good (handles a Range and a Property{number}).

Now say you want to do that for a Text element.
It makes sense to be able to mix in this "AccessibleSlider" behavior into any Node, e.g.:

AccessibleSlider.mixin( AppendageNode ); // after the inherit

and

this.initializeAccessibleSlider( ... ); // somewhere in the constructor

where the mixin can handle hooking up all of the events (change/input/blur) into a Property{number} value and Property{boolean} dragged that clients can use.
Also I'd note that this is the typical case of mix-ins, where you need to add in behavior (acting like a slider) to any point in a normal inheritance hierarchy.

Is there a precedent for conditionally mixing something in? For instance, say sun/HSlider mixes in AccessibleSlider, which sets the accessible content and adds axon/Properties for clients.
But if in some context we want a sun/HSlider to look like

with a custom set of listeners and Properties, we could have changes to the HSlider prototype or other things that we don't want.

@jonathanolson responded with:

HSlider as a type would either have it mixed in or not. If the flexibility is warranted, you would either:

Not have it mix it in, and have clients do so. This may be helpful if you need customizable mixins with parameters, e.g. AccessibleSlider.mixin( HSliderSubtype, { options } ).
Have another mixin which overrides some of AccessibleSlider's behavior.

I really like the first suggestion in https://github.com/phetsims/scenery/issues/607#issuecomment-279096400.  It seems useful to be able to customize the accessible component with options, so that any portion of the content can be changed, rather than overriding specific behavior with another mixin.

We should investigate and see how this feels, but I am wondering if this pattern would be overkill for the majority of accessible content.  For instance, to create a button with the Accessibility mixin, you might do
Node.call( this, {
  tagName: 'input'
  inputType: 'button'
  accessibleLabel: 'Translatable Label'
} );

this.addAccessibleInputListener( { click: clickListener } );

Sliders are more complex, but most input elements tend to be this simple.

With the first bullet in https://github.com/phetsims/scenery/issues/607#issuecomment-279096400, we might have
// in the constructor
this.initializeAccessibleButton( {
  accessibleLabel: 'Translatable Label',
  listener: clickListener
} );

// outside of constructor
AccessibleButton.mixin( MyButtonNode );

This relates highly to our work during this week's a11y sprint. Adding to a11y meeting.

@jessegreenberg and I discussed this outdated issue today. There is nothing left here, we now have multiple mixins for a11y technology.


Please clarify rotation paragraph

[Enter feedback here]
I have multiple Azure function apps referencing the same secrets in a key vault through app config
The references are in this format: @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)
I would expect my app to always use the latest version of the secret after restarting it. However, after creating a new secret and a restart, the old secret version is still used. The same is true even if I disable the old secret and set it to be expired.
"mysecret" here is a storage account key. The old version will be rotated out, and I would presume after a reboot of the function app that it is able to figure out what the latest version is. However, it seems like the below sentence means "the app will use the latest version that exists in Key Vault at the point in time when the reference is created". Is this a correct assumption? If so, it is not sufficient enough for my use case.
If a version is not specified in the reference, then the app will use the latest version that exists in Key Vault.

https://docs.microsoft.com/en-us/azure/app-service/app-service-key-vault-references#rotation

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

ID: 7feaa3d0-7233-a3cb-cb9b-a9a55b1f0d7a
Version Independent ID: f41f9d51-52f8-1f45-1043-1344a3b74458
Content: Use Key Vault references - Azure App Service
Content Source: articles/app-service/app-service-key-vault-references.md
Service: app-service
GitHub Login: @mattchenderson
Microsoft Alias: mahender

I use KUDU to read the values of the secret seen from the function app. The only way I've been able to get the latest secret version is to temporarily remove the app config reference and re-add it.  I have not tried waiting up to 24 hours.

@audunsolemdal Thanks for the feedback. I have assigned the issue to the content author to evaluate and update as appropriate.

#needs-sme-input

I am seeing the following behavior which is inconsistent with the documentation.
Initial adding of a secret reference to the app service works correctly.
Updating the secret in the key vault and then restarting the app service does not refresh the secret and it will still have the old value
Changing any app setting, and then saving (which restarts the app service) does refresh the secret and it will now have the new value

I noticed that removing the key vault reference for one secret, saving, then readding the key vault reference results in the latest values being returned for all key vault secrets

For a few services, I noticed one more weird side effect that was not documented anywhere.
If you create a new version and disable all the old versions and then restart your web app, the app configuration in Azure will show an "access denied" error for that key vault secret reference. Then if you try to use the secret in your code, you will get the raw secret URI, or, if your secret is not a string, your app will fail with a parsing exception.
The solution was the same as for cleaning the cache, as others mentioned - to modify any configuration value for the app. Also redeploying helped. Maybe waiting 24 hours also would have helped.
I haven't yet figured out what specific aspects of web apps control when the app will just receive a cached value and when it will show an access denied error instead. I have tried to reproduce the issue with a clean web app but could not. At the same time, I could reliably produce it every time with an older web app. Maybe it has something to do with the fact that the "access denied" apps are deployed using pipelines and ARM templates, while the "normal" app was created manually in Azure.

#reassign:cephalin
the 24-hour rotation cycle has already been clarified in the article since the filing of the original issue. For any erratic behaviour, please contact support directly, as documentation feedback is reserved for issues with the content itself.
#please-close


Unify InputField sizing and fix SecureTextField size

Dynamic type

.measure is nice 👌
I thought about suggesting something like .measured() instead, but not sure now what the conventions within SwiftUI are.

Any idea why input fields snapshots say 43 instead of 44 shown in the PR description?

.measure is nice 👌
I thought about suggesting something like .measured() instead, but not sure now what the conventions within SwiftUI are.

Sounds better, renamed. If a horizontal measurement will be needed in future, it might become measured(axis:) with default value set to .vertical

Any idea why input fields snapshots say 43 instead of 44 shown in the PR description?

It is due to the default font having different size. A follow-up #405 will fix this by having fixed (designed) line height independently on used font.


multi-year observation data for "gencost_datafile"

For small domain optimization case, one tends to put mutli-year data into one single file
(instead of putting into separate yearly files as EXF).
But ECCO will consider the single file as containing climatological records (?)
Is there any flag/document to clarify or to warn user about this?

@hongandyan we don't think there is a flag at the moment.
Would this go in pkg/ecco``? pkg/exf``` should be OK with
single files already?


Support Tvos

Any reason this can't support Tvos?

@emouawad Are you prepared to make the changes?


Miscellaneous fixes from negroni-gzip

This is a set of fixes largely copied from https://github.com/phyber/negroni-gzip
Most importantly it fixes #12 which is somewhat critical.

Unfortunately there are more fundamental issues that prevent fixing #12.

Can you elaborate on those fundamental issues? The Content-Length header problem, at least, appears to be solvable.

I'm out at the moment. The problem is that when you're reverse proxying
deleting headers is somewhat more involved. You need to intercept the write
and modify the headers before writing the body.
I have a more involved WIP PR. The linked issue demonstrates the issue.
On 28 May 2016 12:16 AM, "Adam Mckaig"<EMAIL_ADDRESS>wrote:

Can you elaborate on those fundamental issues? The Content-Length header
problem, at least, appears to be solvable.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/NYTimes/gziphandler/pull/13#issuecomment-222157685,
or mute the thread
https://github.com/notifications/unsubscribe/AAjZWEd6paB17JMJlf_ZQWlVKoj_ahTLks5qFvyggaJpZM4IoFsK
.


JWE generation using A128CBC_HS256 produces the wrong length authentication tag

RFC 7518 JSON Web Algothrims specify that the authentication tag should be truncated to the first 16 octets.

The AES_CBC_HMAC_SHA2 parameters specific to AES_128_CBC_HMAC_SHA_256  are:
The input key K is 32 octets long.
ENC_KEY_LEN is 16 octets.
MAC_KEY_LEN is 16 octets.
The SHA-256 hash algorithm is used for the HMAC.
The HMAC-SHA-256 output is truncated to T_LEN=16 octets, by
stripping off the final 16 octets.

However when JWE tokens are generated the full 32 octets generated by HMAC SHA256 are being appended. This is generating invalid tokens.

Fixed in v1.7.
Also added some missing tests with rfc7518 test vectors.


Streaming API retry logic

Hi, I'm new to github and sorry if I'm writing this not in the right format.
At the file streaming/api.py:_request():_send(), shouldn't "_send(retry_counter)" be "return _send(retry_counter)"? (Table 1)
Also, for Twitter's 420 status code response, (420 Easy there, Turbo. Too many requests recently. Enhance your calm.), should this be handle from on_error() method? Is there any "backoff" algorithm implemented inside that I can use?
    def _send(retry_counter):
        requests_args = {}
        for k, v in self.client_args.items():
        # Maybe this should be set as a class variable and only done once?
            if k in ('timeout', 'allow_redirects', 'verify'):
                requests_args[k] = v

        while self.connected:
            try:
                if method == 'get':
                    requests_args['params'] = params
                else:
                    requests_args['data'] = params

                response = func(url, **requests_args)
            except requests.exceptions.Timeout:
                self.on_timeout()
            else:
                if response.status_code != 200:
                    self.on_error(response.status_code, response.content)

                if self.retry_count and (self.retry_count - retry_counter) > 0:
                    time.sleep(self.retry_in)
                    retry_counter += 1
                    _send(retry_counter)

                return response

Table 1. File streaming/api.py function _request():_send()

how could I disconnect the stream, sleep for a bit and then reconnect?


fix: Create conda-meta/history file

Closes #993

Just noticed that when I manually touch .pixi/envs/default/conda-meta/history, a subsequent call to pixi install fails with
➜  repo git:(main) pixi install
  × failed to determine the currently installed packages for 'default'
  ╰─▶ EOF while parsing a value at line 1 column 0

@moritzwilksch that is a bug that was fixed recently.

ahh I see, thank you!


Glob does not work correctly

TL;DR
Using a glob like ./dir/my-app* yields Error: google-github-actions/upload-cloud-storage failed with: ENOENT: no such file or directory, lstat '/home/runner/work/repo/repo/dir/my-app*', even though dir/my-app.exe exists.
Expected behavior
The glob pattern to resolve into the files it matches
Observed behavior
It treated the glob pattern like a file, without resolving it first
Action YAML
name: Continuous Integration

on:
    push:
        branches:
            - main

jobs:
    ci:
        runs-on: ${{ matrix.os }}
        strategy:
            matrix:
                os: [ubuntu-latest, macos-latest, windows-latest]
        name: ${{ matrix.os }}
        permissions:
            contents: read
            id-token: write
        defaults:
            run:
                shell: bash
        steps:
            - name: Checkout
              uses: actions/checkout@v3

            - name: Set up Node.js
              uses: actions/setup-node@v3
              with:
                  node-version: 18

            - name: Install dependencies
              run: npm install

            - name: Formatting
              run: npm run format:check

            - name: Linting
              run: npm run lint

            # Once tests are added
            #-name: Test
            # run: npm run test

            - name: Build client
              run: npm run build:client

            - name: Build server
              run: npm run build:server

            - name: Authenticate to Google Cloud
              uses: google-github-actions/auth@v1
              with:
                  workload_identity_provider: projects/195808230594/locations/global/workloadIdentityPools/github/providers/oidc
                  service_account<EMAIL_ADDRESS>
            - name: Upload build
              uses: google-github-actions/upload-cloud-storage@v1
              with:
                  path: ./dist/blankstorm-client*
                  destination: drvortex.dev
                  parent: false

Log output
https://github.com/dr-vortex/blankstorm/actions/runs/5700838637/job/15451017276
Additional information
No response

Hi @dr-vortex - please share your debug output. Also, it appears you are running this on 3 OSes (Linux, Mac, Windows); is that intended? At present, that matrix runs in parallel and all 3 OSes are going to try and upload different files to the same bucket and paths.

Here is the run with debug logging: https://github.com/dr-vortex/blankstorm/actions/runs/5700838637/job/15451347134

Also, it appears you are running this on 3 OSes (Linux, Mac, Windows); is that intended? At present, that matrix runs in parallel and all 3 OSes are going to try and upload different files to the same bucket and paths.

Yes, I run tests on each platform, which uploads files specific to that platform.

Hi @dr-vortex - that's the runner logs. I need the debug logs, which requires setting a secret of ACTIONS_STEP_DEBUG to true and re-running the job. You should a LOT of output including "Computed absoluteRoot from" and "Found XX files".

Yes, I run tests on each platform, which uploads files specific to that platform.

Your current upload action has no namespace by matrix. That means files that are generated that have the same name will be overwritten in a non-deterministic way (depending on which runner runs first):
- name: Upload build
  uses: google-github-actions/upload-cloud-storage@v1
    with:
      path: ./dist/blankstorm-client*
      destination: drvortex.dev
      parent: false

I'd probably expect something like this:
- name: Upload build
  uses: google-github-actions/upload-cloud-storage@v1
    with:
      path: ./dist/blankstorm-client*
      destination: drvortex.dev/${matrix.os}
      parent: false

@sethvargo I apologize for the inconvenience, I skimmed the article and set ACTIONS_RUNNER_DEBUG  to true (the wrong variable). I set the correct variable and reran the tests.

Your current upload action has no namespace by matrix. That means files that are generated that have the same name will be overwritten in a non-deterministic way (depending on which runner runs first):

That is correct. Each platform generates different files (i.e. blankstorm-client-<verison>.exe, blankstorm-client-<verison>-linux, and blankstorm-client-<verison>-macos). The server executables are overwritten since pkg cross-compiles, though they are all the same.

Hi @dr-vortex sorry, but I'm still not setting the debug output in that link. It looks like it's still the runner debug output. There should be a lot of output from the upload-cloud-storage action (like hundreds of lines).

That's odd. I have the repository variable ACTIONS_STEP_DEBUG set to true. Does it need to be a secret?

I also downloaded the full logs and they do not have "like hundreds of lines".

Hi @dr-vortex - I'm not sure. Is the value true (with no leading or trailing space)? I just verified that debug logging works with ACTIONS_STEP_DEBUG set as a secret on our repo. Here's the kind of log output I'd expect to see: https://github.com/google-github-actions/upload-cloud-storage/actions/runs/5705589160/job/15460424392
In "Upload files", you'll see output like:
##[debug]Computed computedGlob from "" to ""
##[debug]Found 2 files: ["test1.txt","test2.txt"]
##[debug]Processing gcloudignore
##[debug]Uploading 2 files: ["test1.txt","test2.txt"]
##[debug]Computed bucket as "gh-upload-cloud-storage-24c0"
##[debug]Computed prefix as "testprefix"

Confirmed that there is not extra whitespace. I'm not sure why this issue is occurring. Perhaps it has something to do with how external actions work with a repository's secrets and variables? I'm just throwing an idea out.

Okay - I think I see the problem. We're never making it past parsing the path input to see any debug logs. The path attribute must be a real filepath on disk. You can specify the additional glob attribute separately: https://github.com/google-github-actions/upload-cloud-storage#glob-pattern

@sethvargo Ah, yes:

Clearly this is not the path property. Thank you for the help!

I'm now getting Error: google-github-actions/upload-cloud-storage failed with: error code unauthorized_client: Could not obtain a value for google.subject from the given credential. Which attribute mapping should I use? I currently have google.subject mapping to attribute.repository_owner.

Hi @dr-vortex - that's a better question for a separate issue on github.com/google-github-actions/auth. Please see the troubleshooting guide there too.

@sethvargo I've updated my GitHub username from @dr-vortex to @james-pre. Please update your comment(s), and I can delete this one. I'm writing this comment when I can't make the change myself.


ML.NET Training Failure

System Information (please complete the following information):

Model Builder or CLI Version: ML.NET 17.17.0
Visual Studio Version (if applicable): Visual Studio 2022 17.7.4 64-bit

Describe the bug

On which page of the tutorial did you run into an issue (URL):
Clear description of the problem:
After Clicking "Start Training" few seconds later error

To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
Full training, but don't get through that without error
Screenshots

Additional context
Model Builder Error Top half
arget<PHONE_NUMBER> is out of bounds.
Exception raised from nll_loss_out_frame at C:\actions-runner_work\pytorch\pytorch\builder\windows\pytorch\aten\src\ATen\native\LossNLL.cpp:230 (most recent call first):
00007FFEB155AD0200007FFEB155ACA0 c10.dll!c10::Error::Error [ @ ]
00007FFEB1523FB500007FFEB1523F40 c10.dll!c10::IndexError::IndexError [ @ ]
00007FFD9BB6C24400007FFD9BB674C0 torch_cpu.dll!at::native::multi_margin_loss_cpu_out [ @ ]
00007FFD9BB6EDC400007FFD9BB674C0 torch_cpu.dll!at::native::multi_margin_loss_cpu_out [ @ ]
00007FFD9BB719D400007FFD9BB71970 torch_cpu.dll!at::native::structured_nll_loss_forward_out_cpu::impl [ @ ]
00007FFD9C6E53CE00007FFD9C6CB180 torch_cpu.dll!at::cpu::zero_ [ @ ]
00007FFD9C6987FE00007FFD9C665CA0 torch_cpu.dll!at::cpu::bucketize_outf [ @ ]
00007FFD9C14177D00007FFD9C0DE640 torch_cpu.dll!at::_ops::zeros_out::redispatch [ @ ]
00007FFD9C36AB3300007FFD9C36AA90 torch_cpu.dll!at::_ops::nll_loss_forward::redispatch [ @ ]
00007FFD9D71213100007FFD9D536BC0 torch_cpu.dll!torch::autograd::GraphRoot::apply [ @ ]
00007FFD9D6DEB5200007FFD9D536BC0 torch_cpu.dll!torch::autograd::GraphRoot::apply [ @ ]
00007FFD9C2F58E000007FFD9C2F5710 torch_cpu.dll!at::_ops::nll_loss_forward::call [ @ ]
00007FFD9BB7219F00007FFD9BB72120 torch_cpu.dll!at::native::nll_loss [ @ ]
00007FFD9C9A85B200007FFD9C9A4610 torch_cpu.dll!at::compositeimplicitautograd::where [ @ ]
00007FFD9C98D50D00007FFD9C95FAC0 torch_cpu.dll!at::compositeimplicitautograd::broadcast_to [ @ ]
00007FFD9C4222D700007FFD9C422110 torch_cpu.dll!at::_ops::nll_loss::call [ @ ]
00007FFD9BB72DE700007FFD9BB72210 torch_cpu.dll!at::native::nll_loss_nd [ @ ]
00007FFD9C9A85E200007FFD9C9A4610 torch_cpu.dll!at::compositeimplicitautograd::where [ @ ]
00007FFD9C98D57D00007FFD9C95FAC0 torch_cpu.dll!at::compositeimplicitautograd::broadcast_to [ @ ]
00007FFD9C1A643700007FFD9C1A6270 torch_cpu.dll!at::_ops::nll_loss_nd::call [ @ ]
00007FFD9BB7062F00007FFD9BB70340 torch_cpu.dll!at::native::cross_entropy_loss [ @ ]
00007FFD9C9A68A100007FFD9C9A4610 torch_cpu.dll!at::compositeimplicitautograd::where [ @ ]
00007FFD9C98D60200007FFD9C95FAC0 torch_cpu.dll!at::compositeimplicitautograd::broadcast_to [ @ ]
00007FFD9C3FF8AF00007FFD9C3FF6C0 torch_cpu.dll!at::_ops::cross_entropy_loss::call [ @ ]
00007FFE98059A7400007FFE980598C0 LibTorchSharp.DLL!THSNN_cross_entropy [ @ ]
00007FFE64D10267  ! [ @ ]
Bottom Half
at TorchSharp.torch.CheckForErrors()
at TorchSharp.Modules.CrossEntropyLoss.forward(Tensor input, Tensor target)
at Microsoft.ML.TorchSharp.NasBert.NasBertTrainer2.NasBertTrainerBase.RunModelAndBackPropagate(Tensor& inputTensor, Tensor& targetsTensor)    at Microsoft.ML.TorchSharp.TorchSharpBaseTrainer2.TrainerBase.TrainStep(IHost host, DataViewRowCursor cursor, ValueGetter1 labelGetter, List1& inputTensors, List1& targets)    at Microsoft.ML.TorchSharp.TorchSharpBaseTrainer2.TrainerBase.Train(IHost host, IDataView input)
at Microsoft.ML.TorchSharp.TorchSharpBaseTrainer2.Fit(IDataView input)    at Microsoft.ML.Data.EstimatorChain1.Fit(IDataView input)
at Microsoft.ML.AutoML.SweepablePipelineRunner.Run(TrialSettings settings)
at Microsoft.ML.AutoML.SweepablePipelineRunner.RunAsync(TrialSettings settings, CancellationToken ct)
at Microsoft.ML.AutoML.AutoMLExperiment.d__24.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.ML.ModelBuilder.AutoMLService.TextClassificationExperiment.d__13.MoveNext() in //src/Microsoft.ML.ModelBuilder.AutoMLService/Experiments/TextClassificationExperiment.cs:line 126
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.ML.ModelBuilder.AutoMLEngine.d__21.MoveNext() in //src/Microsoft.ML.ModelBuilder.AutoMLService/AutoMLEngineService/AutoMLEngine.cs:line 169
SMTPLOGS-LWLGG5.txt

Looks like it's a duplicate of https://github.com/dotnet/machinelearning-modelbuilder/issues/2369

Other than it being the latest version, yes it does look like it is the same issue.  My bad I search but, didn't come up anything.  If necessary you can close this one and refer it the other tickets.

@acsamusements That issue has been resolved in January,, This might be a regress.
Would you mind sharing your dataset with us, or check if the label in your dataset contains 0?

@LittleLittleCloud Seems to issues with Blanks or null values.  Dataset had a row at the beginning and end the made the particular columns have blank/null values.  After removing those row and a completely empty row at the end seems to have fixed that issue.

Thanks @LittleLittleCloud. Seems like the issue is resolved. Closing this issue.


Prevents double escaping of special chars in plurals items

Sme problem than https://github.com/iBotPeaches/Apktool/commit/f93a3123080ef9bacdb1e56bc1fa0a6169b4285d but for plurals items)

I have tested it with an apk who has the folowing resource:

Vous disposez de %1$d contenus sur %2$d disponibles
Vous disposez de %1$d contenu sur %2$d disponibles

Without this patch the "<" are replaced by "<"

Can be used same also for strings.xml to keep "<" ">" in html tags ?
https://github.com/iBotPeaches/Apktool/blob/64644a1242d47d8f69fb358f590b4312eeab5a12/brut.apktool/apktool-lib/src/main/java/brut/androlib/res/data/value/ResStringValue.java#L51

@ingbrzy encodeAsResXmlNonEscapedItemValue was created for item (according to its name). I don't know if using it for string could be dangerous or not. I let someone who know well this project answer.

Sorry about the delay. I took a few weeks off apktool for sanity. I'll get on this soon and the tracker here.

Sorry for mega delay. Gave this a shot and maybe I don't understand it. I added this test suite - https://github.com/iBotPeaches/Apktool/commit/5e94801de11aea5b351422db8dfb1332746ff291
and its passing on current master. Did I interpret that wrong?

Closing this, could not replicate with my test suite - https://github.com/iBotPeaches/Apktool/commit/5e94801de11aea5b351422db8dfb1332746ff291
If I was wrong, feel free to respond and I can take another look.

Yes I confirm that on 2.2.3 this problem is solved. It is solved because you redo the same fix than me here : https://github.com/iBotPeaches/Apktool/commit/e723e6e68f9b119b3a2fb07067aae648d8070718#diff-3ecc3b60f827748c316d780fc358139f .


MapProxyDomain OK but 404

I configure
pagespeed MapProxyDomain https://$host/shared_img/ https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com;
I see the html source and the url did change to what I want and image can be accessed by changed url.
After a few days, there are 404 in nginx log of these changed url.
How did this happen? And how to troubleshoot it?
TKX very much.
George

Maybe pagespeed cache size is too small and the assets got evicted? See your eviction numbers in stats page...

@Lofesa
I only see file_cache_evicons and value is 0.
But I am using memcache. not file cache.

Cache eviction should not cause a 404 unless something else is wrong.
Cache expirations also happen.
Is it possible that the origin asset moved?

@jmarantz
You can see source from https://course.soundshine.com.tw/?m=Homepage&c=Index&a=index&PageSpeedFilters=+debug
The rewrite url is https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png.pagespeed.ce.06-1T8jikK.png
And original img url https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com/256/256F15651848520587.png is accessable.

That does not look like the result of MapProxyDomain. Can you share your other domain-related config?

Or maybe the image takes too much time to load.
The https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com/256/256F15651848520587.png for me takes 25.69s to load

That does not look like the result of MapProxyDomain. Can you share your other domain-related config?

I have several vhost use the same nginx.
pagespeed Domain https://fonts.googleapis.com;
pagespeed MapProxyDomain https://$host/shared_img/ https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com;
pagespeed LoadFromFile "https://$host/" "$document_root/";
pagespeed LoadFromFileRuleMatch disallow .;
pagespeed LoadFromFileRuleMatch allow .(ico|pdf|swf|eot|woff|woff2|ttf|otf|css|js|jpeg|jpg|png|gif|svg|svgz|mpg|mpeg|mp3|m4a|m4v|mp4|ogg|wmv|mov|mng|3gpp|3gp|webp|webm|flv|avi|asx|asf)(?.)?$ps_dollar;

Or maybe the image takes too much time to load.
The https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com/256/256F15651848520587.png for me takes 25.69s to load

Not very sure why?
If timeout for loading img for rewrite, the img url should not rewrite.
I see 404 which means img url rewrite succesful. It means img load and rewrite ok and save into cache?

RE "long time to load": that should not cause 404; it should cause PageSpeed to elect not to optimize that resource.
RE "pagespeed Domain https://fonts.googleapis.com;" that is definitely wrong. You can only apply pagespeed Domain  to domains that run PageSpeed, and fonts.googleapis.com does not. The existence of that directive in your config file can cause broken pages.
Based on the URLs you gave earlier, I was expecting to see a RewriteDomain rule that was similarly misconfigured. RewriteDomain basically means the two domains reference the same context, and you want to map one to the other. It's quite different from MapProxyDomain which is the only config mechanism provided to optimize assets on another domain.
Are there any other RewriteDomain directives in your config?

The image https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png gets a 200 status from alibabacloud.
Maybe the rewrited image https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png.pagespeed.ce.06-1T8jikK.png is requested to alibabacloud and it don´t have it?

Are there any other RewriteDomain directives in your config?

There is no any RewriteDomain in my config.
 E.g. a Varnish cache between
pagespeed and your clients? If so, can you flush that cache and see if the
problem persists?
Maybe there was a bad RewriteDomain or Domain directive in your config,
which has since been removed, but a downstream cache is holding onto a
broken html page?
On Thu, Aug 27, 2020 at 11:07 PM ufgeorge<EMAIL_ADDRESS>wrote:

Are there any other RewriteDomain directives in your config?
There is no any RewriteDomain in my config.

Reply to this email directly, view it on GitHub
https://github.com/apache/incubator-pagespeed-ngx/issues/1709#issuecomment-682299409,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAO2IPLBWE453VQHDXBRLL3SC4NOBANCNFSM4QKFZZEQ
.

Do you have downstream caching enabled? E.g. a Varnish cache between pagespeed and your clients? If so, can you flush that cache and see if the problem persists? Maybe there was a bad RewriteDomain or Domain directive in your config, which has since been removed, but a downstream cache is holding onto a broken html page?.

No, there is no any cache between client and server hosted this image.

The image https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png gets a 200 status from alibabacloud.
Maybe the rewrited image https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png.pagespeed.ce.06-1T8jikK.png is requested to alibabacloud and it don´t have it?

The original  img url https://doctrans-tw.oss-cn-shenzhen.aliyuncs.com/256/256F15651848520587.png is ali cloud storage url. So rewrite url https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png still from ali cloud seems no issue.
But 404 url is  https://course.soundshine.com.tw/shared_img/256/256F15651848520587.png.pagespeed.ce.06-1T8jikK.png .
It looks pagespeed rewrite not only url but also the img itself.
Of course ali cloud will not have this img.
I assume this rewrited img should be in pagespeed cache but not.

Sorry about my confusion -- I think your config looks OK mostly, and there's a possibility of a bug, because the example page for MapProxyDomain is broken also.
The only other suspicion I have is there are a few directives you are using that look suspicious:
pagespeed ModifyCachingHeaders on;
pagespeed RespectVary off;

Setting those things means that a proxy-cache at a users ISP or your CDN can capture PageSpeed's rewritten URL and serve it even if stale, or with user-agent-specific optimizations in it that might not be appropriate for all browsers (e.g. webp transcode).
Could you try removing those configs? In general PageSpeed should work well with minimal configuration and advanced  options are available if needed, but you should make sure you understand why you are overriding defaults.

Just fixed the online example, that was a config error on the server side.

one other thought: maybe ngx_pagespeed is not activated on https://$host/source_img/ and you should map your externally hosted assets onto  https://$host/some_directory_with_pagespeed_enabled/source_img?


[HW] Rahul Jadhav

Name: Rahul Jadhav
Email<EMAIL_ADDRESS>Linkedin Profile: https://www.linkedin.com/in/rahul-jadhav-35387860/
Attach the homework screenshots below for both step II and step III:

Hey Rahul Jadhav, great job! Congrats! Here is your badge! https://api.badgr.io/public/assertions/Iu4kugfuSOWXEmHRsUWIRw


fix typo CLusterLoader2

What type of PR is this?
/kind documentation
What this PR does / why we need it:
fix typo CLusterLoader2
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:

thanks for the quick review.

Congratulations on reaching 400 PRs!