Use finalizer to clean up deleted recordings

This PR modifies the Recordings controller to attempt to clean up recording resources in Container JFR when a Recording object is deleted by the user. The reconciler does this by adding a finalizer to each Recording object it sees. This finalizer prevents the object from being actually deleted until the reconciler removes the finalizer.
Once the reconciler detects the object is to be deleted, it attempts to send delete and delete-saved commands to Container JFR, to reclaim PVC space and resources within the JVM's pod. The logic is somewhat complex in order to handle a variety of corner cases. Here's how it works:

Delete saved recordings before trying to connect to a JVM via JMX. This allows delete-saved to succeed even if the JVM no longer exists.
If the Recording references a FlightRecorder that doesn't exist, it's likely the Service and JVM have been deleted, so don't try to send a deletecommand and remove the finalizer.
If the Service has no Endpoints, the connection attempt will fail. This also indicates that whatever pod the recording was made with no longer exists. In this case, we just remove the finalizer and allow object deletion.
Finally, if we manage to connect to the Service, send a delete command to reclaim the in-memory recording.

There is one important caveat that if a service has more than one pod it serves, we may not connect to the the right one when we try to reclaim the recording's resources. This extends beyond deletion though, and we'll have to figure out a solution.
I also refactored some code for listing recordings and saved recordings in order to check for existence before deletion.

It looks good from a readthrough, but I'm not sure what I'm seeing when I try to test it in CRC. I did an oc create -f some_recording_cr.yaml, which succeeded. The CR was for ALL events, 30 seconds, and archive: true, on the FlightRecorder for the jmx-listener sample app target from make deploy_sample_app2. I then waited for the recording to reach STOPPED state, and did oc delete recording example-recording, while watching the logs for both the operator and the container-jfr instance. Things looked like they were happening as expected, but in the terminal where I ran the oc delete, the command appeared to hang - my terminal prompt never came back, and if I open a new terminal and do oc get recordings, I see that the recording still exists.
container-jfr:
[INFO] (<IP_ADDRESS>:44320): CMD {"id":"500e2118-a53c-4b31-ab97-81d5f0ab17c9","command":"is-connected","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"2dc731e0-564f-4228-830c-3193531e7f65","command":"connect","args":["<IP_ADDRESS>:9093"]}

[INFO] No active connection

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"337e5064-1a02-409a-aa3e-c1a0af67fbfb","command":"dump","args":["example-recording","30","ALL"]}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"787c9e90-90df-4ed3-b1cb-0cf0bf4c1880","command":"list","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"506aeef8-8615-4f23-b2c1-860bee55d26a","command":"disconnect","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"bdf4d72f-24f5-4824-91f1-05d945bc1d24","command":"is-connected","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"02898fdd-bd7c-479d-a178-52c5c8f32c85","command":"connect","args":["<IP_ADDRESS>:9093"]}

[INFO] No active connection

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"1a1422fe-1b03-4dc9-98a0-9b142e19d9b4","command":"list","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"0b6d1021-f59f-47f3-a205-8b3ce4dda709","command":"disconnect","args":null}

[INFO] (<IP_ADDRESS>:44474): GET /clienturl 200 2ms
[INFO] (<IP_ADDRESS>:44320): CMD {"id":"23c79505-250e-4463-bf07-c8e01e9e7663","command":"is-connected","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"471f2250-c933-4782-9757-aa35d4dc78aa","command":"connect","args":["<IP_ADDRESS>:9093"]}

[INFO] No active connection

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"30707205-cb86-46c1-bce9-bab08116912a","command":"list","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"71af4631-87af-4ef7-8456-4449c49c4c2d","command":"disconnect","args":null}

[INFO] (<IP_ADDRESS>:44642): GET /clienturl 200 1ms
[INFO] (<IP_ADDRESS>:44320): CMD {"id":"9da35a1d-99eb-4f85-be38-9f8943e58a4d","command":"is-connected","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"e66f4d58-2e1f-41ea-9e61-3a3eda6b8d72","command":"connect","args":["<IP_ADDRESS>:9093"]}

[INFO] No active connection

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"8ea3661e-5216-4af1-8c4e-b9d3851a5089","command":"list","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"daac2fa7-40d4-47e2-aaf1-4d9d64fc25a8","command":"disconnect","args":null}

[INFO] (<IP_ADDRESS>:44806): GET /clienturl 200 2ms
[INFO] (<IP_ADDRESS>:44320): CMD {"id":"25ab5c94-9c39-44ee-a83f-f49e3fd8d038","command":"is-connected","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"9c5bec5d-8c1c-4317-82f1-3d73513b6e9c","command":"connect","args":["<IP_ADDRESS>:9093"]}

[INFO] No active connection

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"626169b8-e457-4058-894d-ebe5907fe76f","command":"list","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"5e27048f-ab59-46b1-b41d-efca9bc055c2","command":"save","args":["example-recording"]}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"1bfa864d-b29a-4e8c-98fd-525b28393052","command":"list-saved","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"89967995-17dc-4230-99ad-64e9ebb0e290","command":"disconnect","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"6bdbb8d4-0ebe-4c95-ae85-f5ce4955a2ef","command":"is-connected","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"0e73a347-a10d-4166-a5a3-ad34ea1793fe","command":"connect","args":["<IP_ADDRESS>:9093"]}

[INFO] No active connection

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"b423ebd7-c73b-4b85-8da5-4bf50329291c","command":"list","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"a1f0ac44-f586-465b-9a2c-d3830da5aff2","command":"disconnect","args":null}

[INFO] (<IP_ADDRESS>:44990): GET /clienturl 200 12ms
[INFO] (<IP_ADDRESS>:45144): GET /clienturl 200 0ms
[INFO] (<IP_ADDRESS>:44320): CMD {"id":"31553071-688e-4703-b155-88a6fb2e1caa","command":"list-saved","args":null}

[INFO] (<IP_ADDRESS>:44320): CMD {"id":"0eb02df2-031a-47f0-b5e7-0f2ca4dbeab0","command":"delete-saved","args":["172-30-47-85_example-recording_20200421T171956Z.jfr"]}

operator:
{"level":"info","ts":1587489562.8864634,"logger":"containerjfr_client","msg":"sent command","json":{"id":"2dc731e0-564f-4228-830c-3193531e7f65","command":"connect","args":["<IP_ADDRESS>:9093"]}}
{"level":"info","ts":1587489563.1832235,"logger":"containerjfr_client","msg":"got response","resp":{"id":"2dc731e0-564f-4228-830c-3193531e7f65","commandName":"connect","status":0,"payload":"<IP_ADDRESS>:9093"}}
{"level":"info","ts":1587489563.1832604,"logger":"containerjfr_client","msg":"got connect response","resp":"<IP_ADDRESS>:9093"}
{"level":"info","ts":1587489563.1832678,"logger":"common_reconciler","msg":"Container JFR connected to service","service":"jmx-listener","namespace":"default","host":"<IP_ADDRESS>","port":9093}
{"level":"info","ts":1587489563.1832795,"logger":"controller_recording","msg":"adding finalizer for recording","namespace":"default","name":"example-recording"}
{"level":"info","ts":1587489563.1894202,"logger":"controller_recording","msg":"creating new recording","name":"example-recording","duration":"30s","eventOptions":["ALL"]}
{"level":"info","ts":1587489563.1899374,"logger":"containerjfr_client","msg":"sent command","json":{"id":"337e5064-1a02-409a-aa3e-c1a0af67fbfb","command":"dump","args":["example-recording","30","ALL"]}}
{"level":"info","ts":1587489564.2526479,"logger":"containerjfr_client","msg":"got response","resp":{"id":"337e5064-1a02-409a-aa3e-c1a0af67fbfb","commandName":"dump","status":0,"payload":null}}
{"level":"info","ts":1587489564.2526882,"logger":"containerjfr_client","msg":"got dump response","resp":""}
{"level":"info","ts":1587489564.2526965,"logger":"controller_recording","msg":"Looking for recordings for service","service":"jmx-listener","namespace":"default"}
{"level":"info","ts":1587489564.2528923,"logger":"containerjfr_client","msg":"sent command","json":{"id":"787c9e90-90df-4ed3-b1cb-0cf0bf4c1880","command":"list","args":null}}
{"level":"info","ts":1587489564.4567387,"logger":"containerjfr_client","msg":"got response","resp":{"id":"787c9e90-90df-4ed3-b1cb-0cf0bf4c1880","commandName":"list","status":0,"payload":[{"id":1,"name":"example-recording","state":"RUNNING","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}}
{"level":"info","ts":1587489564.4568472,"logger":"containerjfr_client","msg":"got list response","resp":[{"id":1,"name":"example-recording","state":"RUNNING","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}
{"level":"info","ts":1587489564.4647176,"logger":"controller_recording","msg":"Recording successfully updated","Request.Namespace":"default","Request.Name":"example-recording","Namespace":"default","Name":"example-recording"}
{"level":"info","ts":1587489564.4648883,"logger":"containerjfr_client","msg":"sent command","json":{"id":"506aeef8-8615-4f23-b2c1-860bee55d26a","command":"disconnect","args":null}}
{"level":"info","ts":1587489564.6011984,"logger":"containerjfr_client","msg":"got response","resp":{"id":"506aeef8-8615-4f23-b2c1-860bee55d26a","commandName":"disconnect","status":0,"payload":null}}
{"level":"info","ts":1587489564.6012402,"logger":"containerjfr_client","msg":"got disconnect response","resp":""}
{"level":"info","ts":1587489564.601307,"logger":"controller_recording","msg":"Reconciling Recording","Request.Namespace":"default","Request.Name":"example-recording"}
{"level":"info","ts":1587489564.603105,"logger":"containerjfr_client","msg":"sent command","json":{"id":"bdf4d72f-24f5-4824-91f1-05d945bc1d24","command":"is-connected","args":null}}
{"level":"info","ts":1587489564.746958,"logger":"containerjfr_client","msg":"got response","resp":{"id":"bdf4d72f-24f5-4824-91f1-05d945bc1d24","commandName":"is-connected","status":0,"payload":"false"}}
{"level":"info","ts":1587489564.7470157,"logger":"containerjfr_client","msg":"got is-connected response","resp":"false"}
{"level":"info","ts":1587489564.7472308,"logger":"containerjfr_client","msg":"sent command","json":{"id":"02898fdd-bd7c-479d-a178-52c5c8f32c85","command":"connect","args":["<IP_ADDRESS>:9093"]}}
{"level":"info","ts":1587489564.901751,"logger":"containerjfr_client","msg":"got response","resp":{"id":"02898fdd-bd7c-479d-a178-52c5c8f32c85","commandName":"connect","status":0,"payload":"<IP_ADDRESS>:9093"}}
{"level":"info","ts":1587489564.9017959,"logger":"containerjfr_client","msg":"got connect response","resp":"<IP_ADDRESS>:9093"}
{"level":"info","ts":1587489564.9018178,"logger":"common_reconciler","msg":"Container JFR connected to service","service":"jmx-listener","namespace":"default","host":"<IP_ADDRESS>","port":9093}
{"level":"info","ts":1587489564.90183,"logger":"controller_recording","msg":"Looking for recordings for service","service":"jmx-listener","namespace":"default"}
{"level":"info","ts":1587489564.901937,"logger":"containerjfr_client","msg":"sent command","json":{"id":"1a1422fe-1b03-4dc9-98a0-9b142e19d9b4","command":"list","args":null}}
{"level":"info","ts":1587489565.0626113,"logger":"containerjfr_client","msg":"got response","resp":{"id":"1a1422fe-1b03-4dc9-98a0-9b142e19d9b4","commandName":"list","status":0,"payload":[{"id":1,"name":"example-recording","state":"RUNNING","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}}
{"level":"info","ts":1587489565.062732,"logger":"containerjfr_client","msg":"got list response","resp":[{"id":1,"name":"example-recording","state":"RUNNING","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}
{"level":"info","ts":1587489565.0689316,"logger":"controller_recording","msg":"Recording successfully updated","Request.Namespace":"default","Request.Name":"example-recording","Namespace":"default","Name":"example-recording"}
{"level":"info","ts":1587489565.0847034,"logger":"containerjfr_client","msg":"sent command","json":{"id":"0b6d1021-f59f-47f3-a205-8b3ce4dda709","command":"disconnect","args":null}}
{"level":"info","ts":1587489565.2382338,"logger":"containerjfr_client","msg":"got response","resp":{"id":"0b6d1021-f59f-47f3-a205-8b3ce4dda709","commandName":"disconnect","status":0,"payload":null}}
{"level":"info","ts":1587489565.2382677,"logger":"containerjfr_client","msg":"got disconnect response","resp":""}
{"level":"info","ts":1587489574.601903,"logger":"controller_recording","msg":"Reconciling Recording","Request.Namespace":"default","Request.Name":"example-recording"}
{"level":"info","ts":1587489574.6030428,"logger":"containerjfr_client","msg":"sent command","json":{"id":"23c79505-250e-4463-bf07-c8e01e9e7663","command":"is-connected","args":null}}
{"level":"info","ts":1587489574.8100536,"logger":"containerjfr_client","msg":"got response","resp":{"id":"23c79505-250e-4463-bf07-c8e01e9e7663","commandName":"is-connected","status":0,"payload":"false"}}
{"level":"info","ts":1587489574.8101735,"logger":"containerjfr_client","msg":"got is-connected response","resp":"false"}
{"level":"info","ts":1587489574.8133914,"logger":"containerjfr_client","msg":"sent command","json":{"id":"471f2250-c933-4782-9757-aa35d4dc78aa","command":"connect","args":["<IP_ADDRESS>:9093"]}}
{"level":"info","ts":1587489575.2065547,"logger":"containerjfr_client","msg":"got response","resp":{"id":"471f2250-c933-4782-9757-aa35d4dc78aa","commandName":"connect","status":0,"payload":"<IP_ADDRESS>:9093"}}
{"level":"info","ts":1587489575.2068381,"logger":"containerjfr_client","msg":"got connect response","resp":"<IP_ADDRESS>:9093"}
{"level":"info","ts":1587489575.2089894,"logger":"common_reconciler","msg":"Container JFR connected to service","service":"jmx-listener","namespace":"default","host":"<IP_ADDRESS>","port":9093}
{"level":"info","ts":1587489575.2090774,"logger":"controller_recording","msg":"Looking for recordings for service","service":"jmx-listener","namespace":"default"}
{"level":"info","ts":1587489575.2094152,"logger":"containerjfr_client","msg":"sent command","json":{"id":"30707205-cb86-46c1-bce9-bab08116912a","command":"list","args":null}}
{"level":"info","ts":1587489575.3964405,"logger":"containerjfr_client","msg":"got response","resp":{"id":"30707205-cb86-46c1-bce9-bab08116912a","commandName":"list","status":0,"payload":[{"id":1,"name":"example-recording","state":"RUNNING","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}}
{"level":"info","ts":1587489575.396497,"logger":"containerjfr_client","msg":"got list response","resp":[{"id":1,"name":"example-recording","state":"RUNNING","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}
{"level":"info","ts":1587489575.4115522,"logger":"controller_recording","msg":"Recording successfully updated","Request.Namespace":"default","Request.Name":"example-recording","Namespace":"default","Name":"example-recording"}
{"level":"info","ts":1587489575.413596,"logger":"containerjfr_client","msg":"sent command","json":{"id":"71af4631-87af-4ef7-8456-4449c49c4c2d","command":"disconnect","args":null}}
{"level":"info","ts":1587489575.593537,"logger":"containerjfr_client","msg":"got response","resp":{"id":"71af4631-87af-4ef7-8456-4449c49c4c2d","commandName":"disconnect","status":0,"payload":null}}
{"level":"info","ts":1587489575.5935805,"logger":"containerjfr_client","msg":"got disconnect response","resp":""}
{"level":"info","ts":1587489585.594346,"logger":"controller_recording","msg":"Reconciling Recording","Request.Namespace":"default","Request.Name":"example-recording"}
{"level":"info","ts":1587489585.5954921,"logger":"containerjfr_client","msg":"sent command","json":{"id":"9da35a1d-99eb-4f85-be38-9f8943e58a4d","command":"is-connected","args":null}}
{"level":"info","ts":1587489585.7931762,"logger":"containerjfr_client","msg":"got response","resp":{"id":"9da35a1d-99eb-4f85-be38-9f8943e58a4d","commandName":"is-connected","status":0,"payload":"false"}}
{"level":"info","ts":1587489585.7932181,"logger":"containerjfr_client","msg":"got is-connected response","resp":"false"}
{"level":"info","ts":1587489585.7933023,"logger":"containerjfr_client","msg":"sent command","json":{"id":"e66f4d58-2e1f-41ea-9e61-3a3eda6b8d72","command":"connect","args":["<IP_ADDRESS>:9093"]}}
{"level":"info","ts":1587489585.973801,"logger":"containerjfr_client","msg":"got response","resp":{"id":"e66f4d58-2e1f-41ea-9e61-3a3eda6b8d72","commandName":"connect","status":0,"payload":"<IP_ADDRESS>:9093"}}
{"level":"info","ts":1587489585.9738474,"logger":"containerjfr_client","msg":"got connect response","resp":"<IP_ADDRESS>:9093"}
{"level":"info","ts":1587489585.9738557,"logger":"common_reconciler","msg":"Container JFR connected to service","service":"jmx-listener","namespace":"default","host":"<IP_ADDRESS>","port":9093}
{"level":"info","ts":1587489585.9738672,"logger":"controller_recording","msg":"Looking for recordings for service","service":"jmx-listener","namespace":"default"}
{"level":"info","ts":1587489585.9739559,"logger":"containerjfr_client","msg":"sent command","json":{"id":"8ea3661e-5216-4af1-8c4e-b9d3851a5089","command":"list","args":null}}
{"level":"info","ts":1587489586.0919027,"logger":"containerjfr_client","msg":"got response","resp":{"id":"8ea3661e-5216-4af1-8c4e-b9d3851a5089","commandName":"list","status":0,"payload":[{"id":1,"name":"example-recording","state":"RUNNING","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}}
{"level":"info","ts":1587489586.0919375,"logger":"containerjfr_client","msg":"got list response","resp":[{"id":1,"name":"example-recording","state":"RUNNING","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}
{"level":"info","ts":1587489586.0991442,"logger":"controller_recording","msg":"Recording successfully updated","Request.Namespace":"default","Request.Name":"example-recording","Namespace":"default","Name":"example-recording"}
{"level":"info","ts":1587489586.0992603,"logger":"containerjfr_client","msg":"sent command","json":{"id":"daac2fa7-40d4-47e2-aaf1-4d9d64fc25a8","command":"disconnect","args":null}}
{"level":"info","ts":1587489586.218109,"logger":"containerjfr_client","msg":"got response","resp":{"id":"daac2fa7-40d4-47e2-aaf1-4d9d64fc25a8","commandName":"disconnect","status":0,"payload":null}}
{"level":"info","ts":1587489586.2181602,"logger":"containerjfr_client","msg":"got disconnect response","resp":""}
{"level":"info","ts":1587489596.2186265,"logger":"controller_recording","msg":"Reconciling Recording","Request.Namespace":"default","Request.Name":"example-recording"}
{"level":"info","ts":1587489596.2195327,"logger":"containerjfr_client","msg":"sent command","json":{"id":"25ab5c94-9c39-44ee-a83f-f49e3fd8d038","command":"is-connected","args":null}}
{"level":"info","ts":1587489596.3970282,"logger":"containerjfr_client","msg":"got response","resp":{"id":"25ab5c94-9c39-44ee-a83f-f49e3fd8d038","commandName":"is-connected","status":0,"payload":"false"}}
{"level":"info","ts":1587489596.3970683,"logger":"containerjfr_client","msg":"got is-connected response","resp":"false"}
{"level":"info","ts":1587489596.3971453,"logger":"containerjfr_client","msg":"sent command","json":{"id":"9c5bec5d-8c1c-4317-82f1-3d73513b6e9c","command":"connect","args":["<IP_ADDRESS>:9093"]}}
{"level":"info","ts":1587489596.5944672,"logger":"containerjfr_client","msg":"got response","resp":{"id":"9c5bec5d-8c1c-4317-82f1-3d73513b6e9c","commandName":"connect","status":0,"payload":"<IP_ADDRESS>:9093"}}
{"level":"info","ts":1587489596.594507,"logger":"containerjfr_client","msg":"got connect response","resp":"<IP_ADDRESS>:9093"}
{"level":"info","ts":1587489596.5945168,"logger":"common_reconciler","msg":"Container JFR connected to service","service":"jmx-listener","namespace":"default","host":"<IP_ADDRESS>","port":9093}
{"level":"info","ts":1587489596.594526,"logger":"controller_recording","msg":"Looking for recordings for service","service":"jmx-listener","namespace":"default"}
{"level":"info","ts":1587489596.5946658,"logger":"containerjfr_client","msg":"sent command","json":{"id":"626169b8-e457-4058-894d-ebe5907fe76f","command":"list","args":null}}
{"level":"info","ts":1587489596.7273676,"logger":"containerjfr_client","msg":"got response","resp":{"id":"626169b8-e457-4058-894d-ebe5907fe76f","commandName":"list","status":0,"payload":[{"id":1,"name":"example-recording","state":"STOPPED","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}}
{"level":"info","ts":1587489596.7274034,"logger":"containerjfr_client","msg":"got list response","resp":[{"id":1,"name":"example-recording","state":"STOPPED","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}
{"level":"info","ts":1587489596.7275016,"logger":"containerjfr_client","msg":"sent command","json":{"id":"5e27048f-ab59-46b1-b41d-efca9bc055c2","command":"save","args":["example-recording"]}}
{"level":"info","ts":1587489597.1177151,"logger":"containerjfr_client","msg":"got response","resp":{"id":"5e27048f-ab59-46b1-b41d-efca9bc055c2","commandName":"save","status":0,"payload":"172-30-47-85_example-recording_20200421T171956Z.jfr"}}
{"level":"info","ts":1587489597.1177492,"logger":"containerjfr_client","msg":"got save response","resp":"172-30-47-85_example-recording_20200421T171956Z.jfr"}
{"level":"info","ts":1587489597.1178277,"logger":"containerjfr_client","msg":"sent command","json":{"id":"1bfa864d-b29a-4e8c-98fd-525b28393052","command":"list-saved","args":null}}
{"level":"info","ts":1587489597.363862,"logger":"containerjfr_client","msg":"got response","resp":{"id":"1bfa864d-b29a-4e8c-98fd-525b28393052","commandName":"list-saved","status":0,"payload":[{"name":"172-30-47-85_example-recording_20200421T171956Z.jfr","downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/172-30-47-85_example-recording_20200421T171956Z.jfr","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/172-30-47-85_example-recording_20200421T171956Z.jfr"}]}}
{"level":"info","ts":1587489597.3639088,"logger":"containerjfr_client","msg":"got list-saved response","resp":[{"name":"172-30-47-85_example-recording_20200421T171956Z.jfr","downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/172-30-47-85_example-recording_20200421T171956Z.jfr","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/172-30-47-85_example-recording_20200421T171956Z.jfr"}]}
{"level":"info","ts":1587489597.3639176,"logger":"controller_recording","msg":"updating download URL","name":"example-recording","url":"https://containerjfr-default.apps-crc.testing:443/recordings/172-30-47-85_example-recording_20200421T171956Z.jfr"}
{"level":"info","ts":1587489597.3711433,"logger":"controller_recording","msg":"Recording successfully updated","Request.Namespace":"default","Request.Name":"example-recording","Namespace":"default","Name":"example-recording"}
{"level":"info","ts":1587489597.3717883,"logger":"containerjfr_client","msg":"sent command","json":{"id":"89967995-17dc-4230-99ad-64e9ebb0e290","command":"disconnect","args":null}}
{"level":"info","ts":1587489597.5242653,"logger":"containerjfr_client","msg":"got response","resp":{"id":"89967995-17dc-4230-99ad-64e9ebb0e290","commandName":"disconnect","status":0,"payload":null}}
{"level":"info","ts":1587489597.524306,"logger":"containerjfr_client","msg":"got disconnect response","resp":""}
{"level":"debug","ts":1587489597.5243192,"logger":"controller-runtime.controller","msg":"Successfully Reconciled","controller":"recording-controller","request":"default/example-recording"}
{"level":"info","ts":1587489597.5243566,"logger":"controller_recording","msg":"Reconciling Recording","Request.Namespace":"default","Request.Name":"example-recording"}
{"level":"info","ts":1587489597.5247097,"logger":"containerjfr_client","msg":"sent command","json":{"id":"6bdbb8d4-0ebe-4c95-ae85-f5ce4955a2ef","command":"is-connected","args":null}}
{"level":"info","ts":1587489597.5948262,"logger":"containerjfr_client","msg":"got response","resp":{"id":"6bdbb8d4-0ebe-4c95-ae85-f5ce4955a2ef","commandName":"is-connected","status":0,"payload":"false"}}
{"level":"info","ts":1587489597.594872,"logger":"containerjfr_client","msg":"got is-connected response","resp":"false"}
{"level":"info","ts":1587489597.5959613,"logger":"containerjfr_client","msg":"sent command","json":{"id":"0e73a347-a10d-4166-a5a3-ad34ea1793fe","command":"connect","args":["<IP_ADDRESS>:9093"]}}
{"level":"info","ts":1587489597.7750146,"logger":"containerjfr_client","msg":"got response","resp":{"id":"0e73a347-a10d-4166-a5a3-ad34ea1793fe","commandName":"connect","status":0,"payload":"<IP_ADDRESS>:9093"}}
{"level":"info","ts":1587489597.775051,"logger":"containerjfr_client","msg":"got connect response","resp":"<IP_ADDRESS>:9093"}
{"level":"info","ts":1587489597.775057,"logger":"common_reconciler","msg":"Container JFR connected to service","service":"jmx-listener","namespace":"default","host":"<IP_ADDRESS>","port":9093}
{"level":"info","ts":1587489597.7750654,"logger":"controller_recording","msg":"Looking for recordings for service","service":"jmx-listener","namespace":"default"}
{"level":"info","ts":1587489597.77526,"logger":"containerjfr_client","msg":"sent command","json":{"id":"b423ebd7-c73b-4b85-8da5-4bf50329291c","command":"list","args":null}}
{"level":"info","ts":1587489597.9709032,"logger":"containerjfr_client","msg":"got response","resp":{"id":"b423ebd7-c73b-4b85-8da5-4bf50329291c","commandName":"list","status":0,"payload":[{"id":1,"name":"example-recording","state":"STOPPED","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}}
{"level":"info","ts":1587489597.971004,"logger":"containerjfr_client","msg":"got list response","resp":[{"id":1,"name":"example-recording","state":"STOPPED","startTime":1587489564068,"duration":30000,"continuous":false,"toDisk":true,"maxSize":0,"maxAge":0,"downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/example-recording","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/example-recording"}]}
{"level":"info","ts":1587489597.979414,"logger":"controller_recording","msg":"Recording successfully updated","Request.Namespace":"default","Request.Name":"example-recording","Namespace":"default","Name":"example-recording"}
{"level":"info","ts":1587489597.9799933,"logger":"containerjfr_client","msg":"sent command","json":{"id":"a1f0ac44-f586-465b-9a2c-d3830da5aff2","command":"disconnect","args":null}}
{"level":"info","ts":1587489598.0740433,"logger":"containerjfr_client","msg":"got response","resp":{"id":"a1f0ac44-f586-465b-9a2c-d3830da5aff2","commandName":"disconnect","status":0,"payload":null}}
{"level":"info","ts":1587489598.0741768,"logger":"containerjfr_client","msg":"got disconnect response","resp":""}
{"level":"debug","ts":1587489598.0762432,"logger":"controller-runtime.controller","msg":"Successfully Reconciled","controller":"recording-controller","request":"default/example-recording"}
{"level":"info","ts":1587489615.432922,"logger":"controller_recording","msg":"Reconciling Recording","Request.Namespace":"default","Request.Name":"example-recording"}
{"level":"info","ts":1587489615.433669,"logger":"containerjfr_client","msg":"sent command","json":{"id":"31553071-688e-4703-b155-88a6fb2e1caa","command":"list-saved","args":null}}
{"level":"info","ts":1587489615.5462527,"logger":"containerjfr_client","msg":"got response","resp":{"id":"31553071-688e-4703-b155-88a6fb2e1caa","commandName":"list-saved","status":0,"payload":[{"name":"172-30-47-85_example-recording_20200421T171956Z.jfr","downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/172-30-47-85_example-recording_20200421T171956Z.jfr","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/172-30-47-85_example-recording_20200421T171956Z.jfr"}]}}
{"level":"info","ts":1587489615.5463102,"logger":"containerjfr_client","msg":"got list-saved response","resp":[{"name":"172-30-47-85_example-recording_20200421T171956Z.jfr","downloadUrl":"https://containerjfr-default.apps-crc.testing:443/recordings/172-30-47-85_example-recording_20200421T171956Z.jfr","reportUrl":"https://containerjfr-default.apps-crc.testing:443/reports/172-30-47-85_example-recording_20200421T171956Z.jfr"}]}
{"level":"info","ts":1587489615.5465171,"logger":"containerjfr_client","msg":"sent command","json":{"id":"0eb02df2-031a-47f0-b5e7-0f2ca4dbeab0","command":"delete-saved","args":["172-30-47-85_example-recording_20200421T171956Z.jfr"]}}
{"level":"info","ts":1587489615.6723466,"logger":"containerjfr_client","msg":"got response","resp":{"id":"0eb02df2-031a-47f0-b5e7-0f2ca4dbeab0","commandName":"delete-saved","status":0,"payload":null}}
{"level":"info","ts":1587489615.67639,"logger":"containerjfr_client","msg":"got delete response","resp":""}
{"level":"info","ts":1587489615.6780045,"logger":"controller_recording","msg":"saved recording successfully deleted","file":"172-30-47-85_example-recording_20200421T171956Z.jfr"}
{"level":"debug","ts":1587489615.780505,"logger":"controller-runtime.controller","msg":"Successfully Reconciled","controller":"recording-controller","request":"default/example-recording"}

Sorry about that. I think I identified the problem, and was an easy fix. How does it look now?


Overriding CSS

I am trying to override the class 'autocomplete__box' as i am trying to increase the padding and change the border radius. I included '!important' but it still doesnt work. any advice on how to override the auto complete box styling?

Hi sorry this is for tracking issues.
Perhaps you can try asking on Stack Overflow?


SSL Unable to verify certificate vagrant 1.7.0

Hi,
since I updated vagrant to the 1.7.0 version I get this error. The problem is not present with vagrant 1.6.5
vagrant status
/home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/ssl_socket.rb:121:in `connect_nonblock': Unable to verify certificate, please set `Excon.defaults[:ssl_ca_path] = path_to_certs`, `ENV['SSL_CERT_DIR'] = path_to_certs`, `Excon.defaults[:ssl_ca_file] = path_to_file`, `ENV['SSL_CERT_FILE'] = path_to_file`, `Excon.defaults[:ssl_verify_callback] = callback` (see OpenSSL::SSL::SSLContext#verify_callback), or `Excon.defaults[:ssl_verify_peer] = false` (less secure). (Excon::Errors::SocketError)
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/ssl_socket.rb:121:in `block in initialize'
	from /home/opt/vagrant/embedded/lib/ruby/2.0.0/timeout.rb:66:in `timeout'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/ssl_socket.rb:117:in `initialize'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/connection.rb:380:in `new'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/connection.rb:380:in `socket'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/connection.rb:105:in `request_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/mock.rb:47:in `request_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/instrumentor.rb:22:in `request_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/base.rb:15:in `request_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/base.rb:15:in `request_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/base.rb:15:in `request_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/connection.rb:232:in `request'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/idempotent.rb:26:in `error_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/base.rb:10:in `error_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/base.rb:10:in `error_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/connection.rb:255:in `rescue in request'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/connection.rb:203:in `request'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/idempotent.rb:26:in `error_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/base.rb:10:in `error_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/base.rb:10:in `error_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/connection.rb:255:in `rescue in request'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/connection.rb:203:in `request'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/idempotent.rb:26:in `error_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/base.rb:10:in `error_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/middlewares/base.rb:10:in `error_call'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/connection.rb:255:in `rescue in request'
	from /home/mario/.vagrant.d/gems/gems/excon-0.42.1/lib/excon/connection.rb:203:in `request'
	from /home/mario/.vagrant.d/gems/gems/fog-xml-0.1.1/lib/fog/xml/sax_parser_connection.rb:37:in `request'
	from /home/mario/.vagrant.d/gems/gems/fog-xml-0.1.1/lib/fog/xml/connection.rb:7:in `request'
	from /home/mario/.vagrant.d/gems/gems/fog-1.25.0/lib/fog/aws/compute.rb:522:in `_request'
	from /home/mario/.vagrant.d/gems/gems/fog-1.25.0/lib/fog/aws/compute.rb:517:in `request'
	from /home/mario/.vagrant.d/gems/gems/fog-1.25.0/lib/fog/aws/requests/compute/describe_instances.rb:71:in `describe_instances'
	from /home/mario/.vagrant.d/gems/gems/fog-1.25.0/lib/fog/aws/models/compute/servers.rb:63:in `all'
	from /home/mario/.vagrant.d/gems/gems/fog-1.25.0/lib/fog/aws/models/compute/servers.rb:150:in `get'
	from /home/mario/.vagrant.d/gems/gems/vagrant-aws-0.5.0/lib/vagrant-aws/action/read_state.rb:24:in `read_state'
	from /home/mario/.vagrant.d/gems/gems/vagrant-aws-0.5.0/lib/vagrant-aws/action/read_state.rb:15:in `call'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/action/warden.rb:34:in `call'
	from /home/mario/.vagrant.d/gems/gems/vagrant-aws-0.5.0/lib/vagrant-aws/action/connect_aws.rb:42:in `call'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/action/warden.rb:34:in `call'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/action/builtin/config_validate.rb:25:in `call'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/action/warden.rb:34:in `call'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/action/builder.rb:116:in `call'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/action/runner.rb:66:in `block in run'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/util/busy.rb:19:in `busy'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/action/runner.rb:66:in `run'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/machine.rb:212:in `action_raw'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/machine.rb:189:in `block in action'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/environment.rb:516:in `lock'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/machine.rb:176:in `call'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/machine.rb:176:in `action'
	from /home/mario/.vagrant.d/gems/gems/vagrant-aws-0.5.0/lib/vagrant-aws/provider.rb:32:in `state'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/machine.rb:478:in `state'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/machine.rb:141:in `initialize'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/vagrantfile.rb:75:in `new'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/vagrantfile.rb:75:in `machine'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/environment.rb:614:in `machine'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/plugin/v2/command.rb:168:in `block in with_target_vms'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/plugin/v2/command.rb:201:in `call'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/plugin/v2/command.rb:201:in `block in with_target_vms'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/plugin/v2/command.rb:200:in `map'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/plugin/v2/command.rb:200:in `with_target_vms'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/plugins/commands/status/command.rb:20:in `execute'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/cli.rb:42:in `execute'
	from /home/opt/vagrant/embedded/gems/gems/vagrant-1.7.0/lib/vagrant/environment.rb:301:in `cli'
	from /home/opt/vagrant/bin/../embedded/gems/gems/vagrant-1.7.0/bin/vagrant:174:in `<main>'

My environment is:
Ubuntu 14.10
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]
rvm 1.26.4 (stable) by Wayne E. Seguin<EMAIL_ADDRESS>Michal Papis<EMAIL_ADDRESS>[https://rvm.io/]
vagrant plugin list
vagrant-aws (0.5.0)
vagrant-hostmanager (1.5.0)
vagrant-login (1.0.1, system)
vagrant-share (1.1.3, system)
Regards,
Mario

This is should be fixed  fixed in 1.7.2
https://github.com/mitchellh/vagrant/issues/5001

I just tested this and i confirm that this bug is not happening anymore with Vagrant 1.7.2.


SupportsWildcards attribute needs to be added to Path parameter

Prerequisites

[X] Write a descriptive title.
[X] Make sure you are able to repro it on the latest released version
[X] Search the existing issues.

Steps to reproduce
The [SupportsWildcards()] is missing for the -Path parameter for the following cmdlets.

Import-MamlHelp
Import-MarkdownModuleFile
Import-YamlCommandHelp
Import-YamlModuleFile
Test-MarkdownCommandHelp

Expected behavior
The parameter metadata should show `SupportsWildcards: true` for these commands.

Actual behavior
The parameter metadata shows `SupportsWildcards: false` for these commands.

Error details
No response
Environment data
Microsoft.PowerShell.PlatyPS v2 branch commit 27d5ffe

Visuals
No response

@sdwheeler I'm confused, the supportswildcard attribute is on these parameters
> $cmds | %{ [pscustomobject]@{ n = $_; sw = (get-command $_).Parameters['Path'].Attributes.TypeId.Name.where({$_ -match "SupportsWildcards"}) }}

n                         sw
-                         --
Import-MamlHelp           {SupportsWildcardsAttribute}
Import-MarkdownModuleFile {SupportsWildcardsAttribute}
Import-YamlCommandHelp    {SupportsWildcardsAttribute}
Import-YamlModuleFile     {SupportsWildcardsAttribute}

@JamesWTruher I made an incorrect assumption about the attribute. The problem is in Update-MarkdownCommandHelp. I updated the title and description of the issue.

Fixed in OPS13


Receive 403 error on 17th or 18th video in Udemy Course

Checklist

[x] I'm reporting a broken site support issue
[x] I've verified that I'm running youtube-dl version 2019.08.13
[x] I've checked that all provided URLs are alive and playable in a browser
[x ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[x] I've searched the bugtracker for similar bug reports including closed ones
[x] I've read bugs section in FAQ

Verbose log

youtube-dl -u<EMAIL_ADDRESS>-p ********* -o %(playlist)s/%(chapter_number)s-%(chapter)s/%(playlist_index)s-%(title)s.%(ext)s https://www.udemy.com/the-ultimate-digital-painting-course-beginner-to-advanced/learn/v4/ --verbose
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-u', 'PRIVATE', '-p', 'PRIVATE', '-o', '%(playlist)s/%(chapter_number)s-%(chapter)s/%(playlist_index)s-%(title)s.%(ext)s', 'https://www.udemy.com/the-ultimate-digital-painting-course-beginner-to-advanced/learn/v4/', '--verbose']
[debug] Encodings: locale cp1252, fs mbcs, out cp850, pref cp1252
[debug] youtube-dl version 2019.08.13
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.17763
[debug] exe versions: none
[debug] Proxy map: {}
[udemy:course] Downloading login popup
[udemy:course] Logging in
[udemy:course] the-ultimate-digital-painting-course-beginner-to-advanced: Downloading webpage
[udemy:course] 869812: Downloading course curriculum
[download] Downloading playlist: 869812
[udemy:course] playlist 869812: Collected 124 video ids (downloading 124 of them)
[download] Downloading video 1 of 124
[udemy] Downloading login popup
[udemy] 15647678: Downloading webpage
[udemy] 15647678: Downloading lecture JSON
[udemy] 19199838: Downloading m3u8 information
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://h.udemycdn-a.com/869812/19199838/2019-07-29_12-26-54-1bca893ff72d4306aa14a46121138087/hls/hls_1080/aa0077aec149f600b24e3de0aa49c088f3e8.m3u8'
[download] 869812\1-Getting Started With The Course\001-Intro.mp4 has already been downloaded
[download] 100% of 81.65MiB
WARNING: 19199838: malformed AAC bitstream detected. Install ffmpeg or avconv to fix this automatically.
[download] Downloading video 2 of 124
[udemy] 15580896: Downloading webpage
[udemy] 15580896: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a.udemycdn.com/2019-07-23_23-07-54-8bbbda3bdd472e5acc702355d905e994/WebHD_720p.mp4?nva=20190820110741&token=094d7713839cf68c6f3e9'
[download] 869812\1-Getting Started With The Course\002-Tools and Software.mp4 has already been downloaded
[download] 100% of 34.19MiB
[download] Downloading video 3 of 124
[udemy] 15648148: Downloading webpage
[udemy] 15648148: Downloading lecture JSON
[udemy] 19200220: Downloading m3u8 information
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://h.udemycdn-a.com/869812/19200220/2019-07-29_13-01-45-e94fb006614476f1f1196a59eada2829/hls/hls_1080/aa005d2fce74383797ba7aa150481c357dce.m3u8'
[download] 869812\1-Getting Started With The Course\003-Join The Facebook Groups!.mp4 has already been downloaded
[download] 100% of 57.06MiB
WARNING: 19200220: malformed AAC bitstream detected. Install ffmpeg or avconv to fix this automatically.
[download] Downloading video 4 of 124
[udemy] 15564158: Downloading webpage
[udemy] 15564158: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a2.udemycdn.com/2019-07-23_22-59-31-4cbe29e08b173e5d0c704e4d794374a5/WebHD_720p.mp4?nva=20190820110745&token=05d36fefdfe7a857fcbeb'
[download] 869812\2-Anyone Can Learn to Digitally Paint\004-Canvas Settings.mp4 has already been downloaded
[download] 100% of 8.32MiB
[download] Downloading video 5 of 124
[udemy] 15566436: Downloading webpage
[udemy] 15566436: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a.udemycdn.com/2019-07-22_19-34-10-188a1358503663b9623bff80f16135e7/WebHD_720p.mp4?nva=20190820110747&token=0020e7233f66a0a266710'
[download] 869812\2-Anyone Can Learn to Digitally Paint\005-Drawing The Human Eye.mp4 has already been downloaded
[download] 100% of 44.82MiB
[download] Downloading video 6 of 124
[udemy] 15566498: Downloading webpage
[udemy] 15566498: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a2.udemycdn.com/2019-07-22_19-57-12-9ba6c85ae27c24e5be2dcf328b10d391/WebHD_720p.mp4?nva=20190820110749&token=0b0891915fc2a1c381531'
[download] 869812\2-Anyone Can Learn to Digitally Paint\006-Painting The Eye Part 1.mp4 has already been downloaded
[download] 100% of 226.08MiB
[download] Downloading video 7 of 124
[udemy] 15566524: Downloading webpage
[udemy] 15566524: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a.udemycdn.com/2019-07-22_19-58-05-eb3b0aa3b58c3b09202b651e6e134da0/WebHD_720p.mp4?nva=20190820110751&token=02c888b8c70a19e224c76'
[download] 869812\2-Anyone Can Learn to Digitally Paint\007-Painting The Eye Part 2.mp4 has already been downloaded
[download] 100% of 223.89MiB
[download] Downloading video 8 of 124
[udemy] 15588396: Downloading webpage
[udemy] 15588396: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a2.udemycdn.com/2019-07-24_16-38-04-dfe2f7b13c08ecd8d9fa989506e2b4f4/WebHD_720p.mp4?nva=20190820110752&token=015f4f70acc80c6e4d179'
[download] 869812\3-Learning to Use a Digital Brush\008-Opacity, Flow, and Size.mp4 has already been downloaded
[download] 100% of 44.67MiB
[download] Downloading video 9 of 124
[udemy] 15588422: Downloading webpage
[udemy] 15588422: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a.udemycdn.com/2019-07-24_16-38-54-571af31ba169c1bd570ecbf3935eeb68/WebHD_720p.mp4?nva=20190820110757&token=0a2a9f90ed350d0d41c77'
[download] 869812\3-Learning to Use a Digital Brush\009-Drawing and Painting Brushes.mp4 has already been downloaded
[download] 100% of 73.34MiB
[download] Downloading video 10 of 124
[udemy] 15588430: Downloading webpage
[udemy] 15588430: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a2.udemycdn.com/2019-07-24_16-38-58-dabe23c6f80885e6515aaeaa52fc4bac/WebHD_720p.mp4?nva=20190820110759&token=01e25ad6f5bd9eac9ffdf'
[download] 869812\3-Learning to Use a Digital Brush\010-Texture Brushes.mp4 has already been downloaded
[download] 100% of 33.21MiB
[download] Downloading video 11 of 124
[udemy] 15588452: Downloading webpage
[udemy] 15588452: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a2.udemycdn.com/2019-07-24_16-40-02-fd582950bb0fe3f7ac098f1348cf332b/WebHD_720p.mp4?nva=20190820110801&token=0e932083475e622520ed2'
[download] 869812\3-Learning to Use a Digital Brush\011-Special Brushes.mp4 has already been downloaded
[download] 100% of 73.32MiB
[download] Downloading video 12 of 124
[udemy] 15566570: Downloading webpage
[udemy] 15566570: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a.udemycdn.com/2019-07-22_19-44-06-2e417f9c9734d058bf20668f480a50dd/WebHD_720p.mp4?nva=20190820110803&token=0b96f8ffb2c7d3f83b810'
[download] 869812\4-Learn The Fundamentals of Drawing\012-The Drawing Fundamental Pyramid - IMPORTANT!.mp4 has already been downloaded
[download] 100% of 31.17MiB
[download] Downloading video 13 of 124
[udemy] 15579768: Downloading webpage
[udemy] 15579768: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a2.udemycdn.com/2019-07-23_15-13-02-83197c22dd0dd9e3e08b99b5f54f6952/WebHD_720p.mp4?nva=20190820110805&token=01bc5960bcf108f9b0f01'
[download] 869812\4-Learn The Fundamentals of Drawing\013-Line Fundamentals.mp4 has already been downloaded
[download] 100% of 58.75MiB
[download] Downloading video 14 of 124
[udemy] 15579802: Downloading webpage
[udemy] 15579802: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a2.udemycdn.com/2019-07-23_15-13-12-e8886fc059adec0ec12bdb32d53e26b9/WebHD_720p.mp4?nva=20190820110807&token=097c4dc459a839575bbdb'
[download] 869812\4-Learn The Fundamentals of Drawing\014-Contour Line Fundamentals.mp4 has already been downloaded
[download] 100% of 126.09MiB
[download] Downloading video 15 of 124
[udemy] 15579834: Downloading webpage
[udemy] 15579834: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a2.udemycdn.com/2019-08-09_15-46-33-26291de76525a7ed15c40f4695b45172/WebHD_720p.mp4?nva=20190820110810&token=06ad50957c38d08bf75b5'
[download] 869812\4-Learn The Fundamentals of Drawing\015-Shape Fundamentals.mp4 has already been downloaded
[download] 100% of 118.78MiB
[download] Downloading video 16 of 124
[udemy] 15579850: Downloading webpage
[udemy] 15579850: Downloading lecture JSON
[debug] Default format spec: best/bestvideo+bestaudio
[debug] Invoking downloader on 'https://a2.udemycdn.com/2019-07-23_15-13-16-2a4011aac44e61fe171a87921cda5eaf/WebHD_720p.mp4?nva=20190820110812&token=056efd7529346b4bc1ba3'
[download] 869812\4-Learn The Fundamentals of Drawing\016-Blocking Out Drawings With Shapes.mp4 has already been downloaded
[download] 100% of 60.59MiB
[download] Downloading video 17 of 124
[udemy] 15588460: Downloading webpage
ERROR: Unable to download webpage: HTTP Error 403: Forbidden (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp5b8vs72_\build\youtube_dl\extractor\common.py", line 627, in _request_webpage
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp5b8vs72_\build\youtube_dl\YoutubeDL.py", line 2229, in urlopen
  File "C:\Python\Python34\lib\urllib\request.py", line 470, in open
  File "C:\Python\Python34\lib\urllib\request.py", line 580, in http_response
  File "C:\Python\Python34\lib\urllib\request.py", line 508, in error
  File "C:\Python\Python34\lib\urllib\request.py", line 442, in _call_chain
  File "C:\Python\Python34\lib\urllib\request.py", line 588, in http_error_default

Description

The download begins and works fine until it reaches the 16th ot 17th video, the failing video is different each time.  When it reaches the failing video I recieve a 403 error.
I have tried using id and password, I have also tried using cookies, the result is the same.
The videos already downloaded work fine, so I am guessing I am logged in correctly.

I have this issue on all videos:
youtube-dl --cookies "cookies.txt"  --verbose https://www.udemy.com/course/.../
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--cookies', 'cookies.txt', '--verbose', 'https://www.udemy.com/course/.../']
[debug] Encodings: locale cp1256, fs mbcs, out cp720, pref cp1256
[debug] youtube-dl version 2019.08.13
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.18362
[debug] exe versions: ffmpeg 4.1.1, ffprobe 4.1.1, rtmpdump 2.4
[debug] Proxy map: {}
[udemy:course] course: Downloading webpage
[udemy:course] 1366282: Downloading course curriculum
[download] Downloading playlist: 1366282
[udemy:course] playlist 1366282: Collected 46 video ids (downloading 46 of them)
[download] Downloading video 1 of 46
[udemy] 8122690: Downloading webpage
[udemy] 8122690: Downloading lecture JSON
[udemy] 8122690: Downloading lecture JSON
ERROR: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp5b8vs72_\build\youtube_dl\extractor\common.py", line 627, in _request_webpage
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp5b8vs72_\build\youtube_dl\YoutubeDL.py", line 2229, in urlopen
  File "C:\Python\Python34\lib\urllib\request.py", line 470, in open
  File "C:\Python\Python34\lib\urllib\request.py", line 580, in http_response
  File "C:\Python\Python34\lib\urllib\request.py", line 508, in error
  File "C:\Python\Python34\lib\urllib\request.py", line 442, in _call_chain
  File "C:\Python\Python34\lib\urllib\request.py", line 588, in http_error_default

I am also having the same issue when I started it's quite fine but later
"ERROR: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by HTTPError());"

I also am getting Udemy download error: "ERROR: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by HTTPError());"
Here is my whole verbose:

tiger:/Volumes/bigsilver/udemy/arduino bootcamp squirrel2$ youtube-dl -o '~/MyVideos/%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s' https://www.udemy.com/course/arduino-bootcamp/
[debug] System config: []
[debug] User config: [u'-o', u'~/Movies/%(playlist)s/%(playlist_index)s - %(title)s-%(id)s.%(ext)s', u'--restrict-filenames', u'--netrc', u'-C', u'-v', u'--write-sub', u'--fixup', u'detect_or_warn', u'--download-archive', u'/Volumes/bigsilver/video_log/archive.txt']
[debug] Custom config: []
[debug] Command-line args: [u'-o', u'~/MyVideos/%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s', u'https://www.udemy.com/course/arduino-bootcamp/']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2019.08.13
[debug] Python version 2.7.14 (CPython) - Darwin-18.7.0-x86_64-i386-64bit
[debug] exe versions: none
[debug] Proxy map: {}
[debug] Public IP address: <IP_ADDRESS>
[udemy:course] Downloading login popup
[udemy:course] Logging in
[udemy:course] course: Downloading webpage
[udemy:course] 1001214: Downloading course curriculum
[download] Downloading playlist: 1001214
[udemy:course] playlist 1001214: Collected 47 video ids (downloading 47 of them)
[download] Downloading video 1 of 47
[udemy] Downloading login popup
[udemy] 6012140: Downloading webpage
[udemy] 6012140: Downloading lecture JSON
[udemy] 6012140: Downloading lecture JSON
ERROR: Unable to download JSON metadata: HTTP Error 403: Forbidden (caused by HTTPError()); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type  youtube-dl -U  to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 627, in _request_webpage
return self._downloader.urlopen(url_or_request)
File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 2229, in urlopen
return self._opener.open(req, timeout=self._socket_timeout)
File "/usr/local/lib/python2.7/urllib2.py", line 435, in open
response = meth(req, response)
File "/usr/local/lib/python2.7/urllib2.py", line 548, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/local/lib/python2.7/urllib2.py", line 473, in error
return self._call_chain(*args)
File "/usr/local/lib/python2.7/urllib2.py", line 407, in _call_chain
result = func(*args)
File "/usr/local/lib/python2.7/urllib2.py", line 556, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)

Also, how do I tell it to use python3.7 (.3 or .4) with an alias? On a Mac the default python is 2.7 which I have update to 2.7.14. I have other pythons installed under .pyven directories.
Thank you.

I suspect a rate limit by Udemy. I tried a new cookie with incognito window and no change - I suspect it's by IP.

@DarissAK I also think Rate Limit is the culprit. I get this error when I was downloading my second course. The first course was downloaded just fine.

Have you guys found a solution? I am waiting for a solution for several weeks now...

@luizconrado Recently I had a similar problem with being throttled/rate limited by YouTube.
Try experimenting with the --http-chunk-size flag (in my case I think I set it to 1M). You could also perhaps try different values of --limit-rate.
After waiting several minutes between attempts, this now seems to be working for Udemy as well.

I tried the @vlur method with any luck.
I followed the instructions from here: How to download your Udemy course videos using youtube-dl


Scrollable horizontal container component

Would be usable, but since the clip issues with shadows are solved and because it is not an Orbit component, closing here.


Configure GitHub Actions to run Super-Linter

This Pull Request sets up a GitHub Actions workflow that runs the GitHub Super-Linter on the entire codebase. It also formats the files according to the standards specified by the linters.
Super-Linter is a collection of bash scripts that run various "standard" linters for many different types of files. The hope is that this helps to:

Prevent broken code from being uploaded to the default branch (main)
Help establish coding best practices across multiple languages
Build guidelines for code layout and format
Automate the process to help streamline code reviews

The linters that are in use right now are:

Markdown-lint - .markdown-lint.yml
Flake8 - .flake8
Pylint - .python-lint -> .pylintrc
Black - .python-black - Note that black will actually reformat your code for you, so just run black . before committing to fix everything up.
isort - .isort.cfg - isort also automatically formats files for you (isort .)

The python linters can all be installed via pip. To make it simpler to install them on a development machine, this PR creates a requirements/dev.txt file that can be used to create a virtual environment with the linters installed in addition to the core dependencies. Using requirements.txt or requirements/prod.txt will install only those things needed for production.
Finally, the configuration for the linters is borrowed from Super-Linter which attempts to provide some "best-practices" and also help ensure the linters all get along. There are two changes to the defaults:

.isort.cfg

Added config to include our Django apps as first party packages. For some reason running under Super-Linter didn't do this in GitHub actions.

.flake8

ignore E231 There should be whitespace after the characters ,, ;, and :. black; fixed in black 20 (https://github.com/psf/black/issues/1289)

Resolved all comments. Full speed ahead!


make_latest missing in action.yml

https://github.com/softprops/action-gh-release/pull/304

Thanks I'll take a look.

this should be fixed now


Sassafras consensus - Prototype #1

Partially Addresses https://github.com/paritytech/substrate/issues/11515

This PR is not supposed to be reviewed yet.
It has been opened to share work and eventually gather suggestions in early stages of the development from anyone who may be interested

As already said this PR contains a first prototype. This first iteration is not supposed to be:

efficient
perfectly designed
resilient

There are still gray areas that may need heavy refactory and inspection.
These kind of stuff will be addressed in the second iteration of the protocol.
Meanwhile this branch will be merged in the main tracking branch for Sassafras

Sorry for the bogus broadcast review request / removal


C++ compilation error with v0.12.3 and AVX-512F

Hey @bab2min,
Hope things are good with you! I'm working on updating the Ruby gem from 0.12.2 to 0.12.3, but am running into a few errors when -march=native is set on Linux and Mac with AVX-512F. The full logs are here, but I've tried to capture the relevant parts below:
Error 1
/home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/../Utils/EigenAddonOps.hpp:162:20: error: no matching function for call to ‘p_to_f32(const type&)’
  162 |     return p_to_f32(a);
      |            ~~~~~~~~^~~
In file included from /home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/LDAModel.hpp:5,
                 from /home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/CTModel.hpp:2,
                 from /home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/CTModel.cpp:1:
/home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/../Utils/EigenAddonOps.hpp:42:32: note: candidate: ‘Eigen::internal::Packet8f Eigen::internal::p_to_f32(const Packet8i&)’
   42 |   EIGEN_STRONG_INLINE Packet8f p_to_f32(const Packet8i& a)
      |                                ^~~~~~~~
/home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/../Utils/EigenAddonOps.hpp:42:57: note:   no known conversion for argument 1 from ‘const type’ {aka ‘const __vector(16) float’} to ‘const Packet8i&’ {aka ‘const __vector(4) long long int&’}
   42 |   EIGEN_STRONG_INLINE Packet8f p_to_f32(const Packet8i& a)
      |                                         ~~~~~~~~~~~~~~~~^
In file included from /home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/LDAModel.hpp:5,
                 from /home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/CTModel.hpp:2,
                 from /home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/CTModel.cpp:1:
/home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/../Utils/EigenAddonOps.hpp:77:32: note: candidate: ‘Eigen::internal::Packet4f Eigen::internal::p_to_f32(const Packet4i&)’
   77 |   EIGEN_STRONG_INLINE Packet4f p_to_f32(const Packet4i& a)
      |                                ^~~~~~~~
/home/runner/work/tomoto-ruby/tomoto-ruby/vendor/tomotopy/src/TopicModel/../Utils/EigenAddonOps.hpp:77:57: note:   no known conversion for argument 1 from ‘const type’ {aka ‘const __vector(16) float’} to ‘const Packet4i&’ {aka ‘const Eigen::internal::eigen_packet_wrapper<__vector(2) long long int, 0>&’}
   77 |   EIGEN_STRONG_INLINE Packet4f p_to_f32(const Packet4i& a)
      |                                         ~~~~~~~~~~~~~~~~^

Error 2
/home/runner/work/tomoto-ruby/tomoto-ruby/vendor/eigen/Eigen/src/Core/CoreEvaluators.h:944:58: error: cannot convert ‘Eigen::internal::mapbase_evaluator<Eigen::Map<Eigen::Matrix<int, -1, 1>, 0, Eigen::Stride<0, 0> >, Eigen::Matrix<int, -1, 1> >::PointerType’ {aka ‘int*’} to ‘const type*’ {aka ‘const float*’}
  944 |     return internal::ploadt<PacketType, LoadMode>(m_data + index * m_innerStride.value());

Error 3
/home/runner/work/tomoto-ruby/tomoto-ruby/vendor/eigen/Eigen/src/Core/CoreEvaluators.h:245:50: error: cannot convert ‘const int*’ to ‘const type*’ {aka ‘const float*’}
  245 |     return ploadt<PacketType, LoadMode>(m_d.data + index);
      |                                         ~~~~~~~~~^~~~~~~
      |                                                  |
      |                                                  const int*

It works great without -march=native/-mfma -mavx512f.
If you have any ideas, please let me know. If not, thanks for taking the time to read!

Hi @ankane,
Actually tomotopy doesn't support AVX512 yet. I'm not sure how it was compiled well at 0.12.2 version.
I'll work to support AVX512 in the next update.
Thank you for your suggestion.

That was fast. Thanks as always @bab2min!
It looks like compiling with -march=native -mno-avx512f works, so can use that for Ruby.


feat(util): add ButtonBuilder

This PR adds a new builder to the utils crate to make the creations of buttons a little bit easier.
Example:
// Without the builder
let button = Button {
    style: ButtonStyle::Primary,
    emoji: None,
    label: Some("example".to_owned()),
    custom_id: Some("custom-id").to_owned(),
    url: None,
    disabled: false,
}

// With the builder
let button = ButtonBuilder::primary("custom-id".to_owned())
    .label("example".to_owned())
    .build()?;

This is what I thought of implementing it. Suggestions are welcome.
Edit: Anyone knows why the doc build is failing even though the ButtonErrorType is public?

I like this idea, going to change that.

Codecov Report

Merging #1296 (a9d5e93) into main (78f853a) will increase coverage by 0.21%.
The diff coverage is 80.59%.

@@            Coverage Diff             @@
##             main    #1296      +/-   ##
==========================================
+ Coverage   31.08%   31.29%   +0.21%
==========================================
  Files         364      365       +1
  Lines       14458    14525      +67
==========================================
+ Hits         4494     4546      +52
- Misses       9964     9979      +15

Impacted Files
Coverage Δ

util/src/builder/button.rs
80.59% <80.59%> (ø)

http/src/routing/route.rs
5.91% <0.00%> (-0.32%)
:arrow_down:

http/src/routing/route_display.rs
10.66% <0.00%> (-0.20%)
:arrow_down:

Continue to review full report at Codecov.

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

I'd like to reopen these PRs targeted at next, but I would like to have a Component builder system. We can repurpose much of the code here. I would like it to be similar to the Command builder where there are separate builders for kinds of components, and a main Component builder that ensures each component is where it is meant to be (action rows and such). If this sounds like word soup, I can write out a full design document if needed.

This was actually my plan (adding a general Component) builder. With these PRs I just wanted to build some kind of base for it.

Going to close this in favor of just a Component builder.


ibm-sw-tpm2: add Darwin support

Description of changes
The upstream sources ship with a dedicated Makefile for macOS. This commit conditionally uses the macOS makefile if build on Darwin.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[x] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[x] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[x] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

@ofborg build ibm-sw-tpm2

This change causes a large amount of rebuilds (I was suspecting this would be the case, see above), thus it needs to be rebased to staging: https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#rebasing-between-branches-ie-from-master-to-staging

This won't be necessary if inherit makefile; is made conditional on darwin, I think? Something like adding // lib.optionalAttrs stdenv.isDarwin { inherit makefile; } to the end of the file.

I think I'd rather have this go to staging and have a clean / more maintainable derivation for the future, rather than accumulating hacks like this to try and reduce rebuilds. I'm not 100% against your suggestion, but I don't think that in the case of this PR specifically anything warrants not going through staging.


Swap brightBlack/black in the Solarized color schemes

Original notes from @M-Pixel:

Console applications assume that backgrounds are black, and that
lightBlack/DarkGrey are lighter than black/Black.  This
assumption is accounted for by all color schemes in defaults.json,
except for the Solarized themes.
The Solarized Dark theme, in particular, makes -Parameters invisible
against the background in PowerShell, which is obviously an unacceptable
usability flaw.
This change makes black and background to the same (which is common
throughout the color schemes), and makes brightBlack (DarkGray in
.NET) lighter than black (which is obviously more correct given the
meanings of those words).

Out of the box, we ship a pretty bad behavior.
If I look at all of the existing shipped color schemes--and that
includes things like Tango and One Half--we are universally following a
background == black rule.
If I consult gnome-terminal or xterm, they do the same thing; Xterm by
default, gnome-terminal for solarized. The background generally matches
color index 0 across all their dark schemes.  Konsole and
lxterminal disagree and map background to 0 intense for Solarized.
I want to put our Solarized schemes on a deprecation path, but
unfortunately we still need to ship something for users who we're
going to strand on them.
I'm going to have to swallow my bitter and say that yes, we should
probably just change the index mapping and go with something that works
right out of the box while we figure out how to do perceptual color
nudging and eventually remove bad defaults (like Solarized).
From #6618.
Closes #4047.
Closes #6618.

I'll note that this is not much better, but the colors are at least ... uh, readable. Sorta.

However, it is better than it was:

Just curious -- what website/app did you use to generate those contrast ratios?

I used “Accessibility Insights for Windows”!

I just saw this change... I think it's faulty. It's also going to be more-wrong in any application that is configured to use Solarized via the ANSI/terminal codes, as the Solarized Dark background base03 is canonically brblack, index 8.
I'd suggest, if you want to go this way, to adopt the cmd-colours variation of Solarized, which swaps all the bright/non-bright attributes. Using it requires modifying colour mappings for 16-colour Solarized themes, but at least it's a consistent swap rather than individual replacement, and already a known quantity for people coming from Conhost-based Solarized setups.

(Side-note: I was confused because this commit appears in the list of commits to master since 1.2.2022.0 was tagged, linked from the release. Is the git tag incorrect compared to the release?)

Results with canonical Solarized colours:

Results on Terminal 1.2.2022.0 with newly-modified Solarized Dark:

The gain is that $ESC[48;5;0m is now the same as $ESC[40m, i.e. hiding #293. The loss is that $ESC[48;5;0m and $ESC[48;5;8m (and hence $ESC[40m and $ESC[100m are reversed which means your dark background has the wrong brightness relationship to your dark foreground.
Why were you testing with #073642 (base02) on #002b36 (base03) BTW? Those are both background colours in Solarized, so you should never actually see that combination. If this is the problem we're trying to solve, then indeed just punting Solarized from the codebase is probably the best option, since it always requires further configuration than just switching a colour palette.
My Terminal-colour test script, the Solarized-specific part is at the bottom.
# Based on https://github.com/fikovnik/bin-scripts/blob/master/color-test.sh
#   Author: Giles Orr
#   URL: http://gilesorr.com/bashprompt/howto/c350.html
#   License: GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation;
#            http://gilesorr.com/bashprompt/howto/a1004.html
#   Termcolor and Solarized outputs (the last three sections) by Paul "TBBle" Hampson
# and https://www.reddit.com/r/PowerShell/comments/b06gtw/til_that_powershell_can_do_colors/

$NL=[char]13
$ESC=[char]27
$TAB=[char]9

$T='gYw'   # The test text

Write-Host "$NL                 40m     41m     42m     43m     44m     45m     46m     47m";

$FGList = '    m', '   1m', '  30m', '1;30m', '  31m', '1;31m', '  32m', '1;32m', '  33m', '1;33m', '  34m', '1;34m', '  35m', '1;35m', '  36m', '1;36m', '  37m', '1;37m'

foreach ($FGs in $FGList) {
  $FG=$FGs -replace ' ',''
  Write-Host -NoNewline " $FGs $ESC[$FG  $T  "
  foreach ($BG in "40m", "41m", "42m", "43m", "44m", "45m", "46m", "47m") {
    Write-Host -NoNewline " $ESC[$FG$ESC[$BG  $T  $ESC[0m";
  }
  Write-Host
}
Write-Host

#Write-Host "$ESC[0mCOLOR_NC (No color)"
#Write-Host "$ESC[1;37mCOLOR_WHITE$TAB$ESC[0;30mCOLOR_BLACK$ESC[0m"
#Write-Host "$ESC[0;34mCOLOR_BLUE$TAB$ESC[1;34mCOLOR_LIGHT_BLUE$ESC[0m"
#Write-Host "$ESC[0;32mCOLOR_GREEN$TAB$ESC[1;32mCOLOR_LIGHT_GREEN$ESC[0m"
#Write-Host "$ESC[0;36mCOLOR_CYAN$TAB$ESC[1;36mCOLOR_LIGHT_CYAN$ESC[0m"
#Write-Host "$ESC[0;31mCOLOR_RED$TAB$ESC[1;31mCOLOR_LIGHT_RED$ESC[0m"
#Write-Host "$ESC[0;35mCOLOR_PURPLE$TAB$ESC[1;35mCOLOR_LIGHT_PURPLE$ESC[0m"
#Write-Host "$ESC[0;33mCOLOR_YELLOW$TAB$ESC[1;33mCOLOR_LIGHT_YELLOW$ESC[0m"
#Write-Host "$ESC[1;30mCOLOR_GRAY$TAB$ESC[0;37mCOLOR_LIGHT_GRAY$ESC[0m"
#Write-Host

Write-Host "Termcolors FG"
Write-Host "$ESC[0;30mblack$TAB$ESC[1;30mbrblack$ESC[0m"
Write-Host "$ESC[0;31mred$TAB$ESC[1;31mbrred$ESC[0m"
Write-Host "$ESC[0;32mgreen$TAB$ESC[1;32mbrgreen$ESC[0m"
Write-Host "$ESC[0;33myellow$TAB$ESC[1;33mbryellow$ESC[0m"
Write-Host "$ESC[0;34mblue$TAB$ESC[1;34mbrblue$ESC[0m"
Write-Host "$ESC[0;35mmagenta$TAB$ESC[1;35mbrmagenta$ESC[0m"
Write-Host "$ESC[0;36mcyan$TAB$ESC[1;36mbrcyan$ESC[0m"
Write-Host "$ESC[0;37mwhite$TAB$ESC[1;37mbrwhite$ESC[0m"
Write-Host

Write-Host "Solarized FG (aixterm)"
#Write-Host "base03$TAB$ESC[38;2;0;43;54mRGB$TAB$ESC[38;5;8mfg$TAB$ESC[90mbrblack$ESC[0m$TAB$TAB<== DARK BG"
#Write-Host "base02$TAB$ESC[38;2;7;54;66mRGB$TAB$ESC[38;5;0mfg$TAB$ESC[30mblack$ESC[0m$TAB$TAB<== DARK BG HIGHLIGHT"
Write-Host "base01$TAB$ESC[38;2;88;110;117mRGB$TAB$ESC[38;5;10mfg$TAB$ESC[92mbrgreen$ESC[0m$TAB$TAB<== DARK FG SECONDARY, LIGHT FG HIGHLIGHT"
Write-Host "base00$TAB$ESC[38;2;101;123;131mRGB$TAB$ESC[38;5;11mfg$TAB$ESC[93mbryellow$ESC[0m$TAB<== LIGHT FG"
Write-Host "base0$TAB$ESC[38;2;131;148;150mRGB$TAB$ESC[38;5;12mfg$TAB$ESC[94mbrblue$ESC[0m$TAB$TAB<== DARK FG"
Write-Host "base1$TAB$ESC[38;2;147;161;161mRGB$TAB$ESC[38;5;14mfg$TAB$ESC[96mbrcyan$ESC[0m$TAB$TAB<== DARK FG HIGHLIGHT, LIGHT FG SECONDARY"
#Write-Host "base2$TAB$ESC[38;2;238;232;213mRGB$TAB$ESC[38;5;7mfg$TAB$ESC[37mwhite$ESC[0m$TAB$TAB<== LIGHT BG HIGHLIGHT"
#Write-Host "base3$TAB$ESC[38;2;253;246;227mRGB$TAB$ESC[38;5;15mfg$TAB$ESC[97mbrwhite$ESC[0m$TAB$TAB<== LIGHT BG"
Write-Host "yellow$TAB$ESC[38;2;181;137;0mRGB$TAB$ESC[38;5;3mfg$TAB$ESC[33myellow$ESC[0m"
Write-Host "orange$TAB$ESC[38;2;203;75;22mRGB$TAB$ESC[38;5;9mfg$TAB$ESC[91mbrred$ESC[0m"
Write-Host "red$TAB$ESC[38;2;220;50;47mRGB$TAB$ESC[38;5;1mfg$TAB$ESC[31mred$ESC[0m"
Write-Host "magenta$TAB$ESC[38;2;211;54;130mRGB$TAB$ESC[38;5;5mfg$TAB$ESC[35mmagenta$ESC[0m"
Write-Host "violet$TAB$ESC[38;2;108;113;196mRGB$TAB$ESC[38;5;13mfg$TAB$ESC[95mbrmagenta$ESC[0m"
Write-Host "blue$TAB$ESC[38;2;38;139;210mRGB$TAB$ESC[38;5;4mfg$TAB$ESC[34mblue$ESC[0m"
Write-Host "cyan$TAB$ESC[38;2;42;161;152mRGB$TAB$ESC[38;5;6mfg$TAB$ESC[36mcyan$ESC[0m"
Write-Host "green$TAB$ESC[38;2;133;153;0mRGB$TAB$ESC[38;5;2mfg$TAB$ESC[32mgreen$ESC[0m"
Write-Host

Write-Host "Solarized BG (aixterm)"
Write-Host "base03$TAB$ESC[48;2;0;43;54mRGB$TAB$ESC[48;5;8mbg$TAB$ESC[100mbrblack$ESC[0m$TAB$TAB<== DARK BG"
Write-Host "base02$TAB$ESC[48;2;7;54;66mRGB$TAB$ESC[48;5;0mbg$TAB$ESC[40mblack$ESC[0m$TAB$TAB<== DARK BG HIGHLIGHT"
#Write-Host "base01$TAB$ESC[48;2;88;110;117mRGB$TAB$ESC[48;5;10mbg$TAB$ESC[102mbrgreen$ESC[0m$TAB$TAB<== DARK FG SECONDARY, LIGHT FG HIGHLIGHT"
#Write-Host "base00$TAB$ESC[48;2;101;123;131mRGB$TAB$ESC[48;5;11mbg$TAB$ESC[103mbryellow$ESC[0m$TAB<== LIGHT FG"
#Write-Host "base0$TAB$ESC[48;2;131;148;150mRGB$TAB$ESC[48;5;12mbg$TAB$ESC[104mbrblue$ESC[0m$TAB$TAB<== DARK FG"
#Write-Host "base1$TAB$ESC[48;2;147;161;161mRGB$TAB$ESC[48;5;14mbg$TAB$ESC[106mbrcyan$ESC[0m$TAB$TAB<== DARK FG HIGHLIGHT, LIGHT FG SECONDARY"
Write-Host "base2$TAB$ESC[48;2;238;232;213mRGB$TAB$ESC[48;5;7mbg$TAB$ESC[47mwhite$ESC[0m$TAB$TAB<== LIGHT BG HIGHLIGHT"
Write-Host "base3$TAB$ESC[48;2;253;246;227mRGB$TAB$ESC[48;5;15mbg$TAB$ESC[107mbrwhite$ESC[0m$TAB$TAB<== LIGHT BG"
#Write-Host "yellow$TAB$ESC[48;2;181;137;0mRGB$TAB$ESC[48;5;3mbg$TAB$ESC[43myellow$ESC[0m"
#Write-Host "orange$TAB$ESC[48;2;203;75;22mRGB$TAB$ESC[48;5;9mbg$TAB$ESC[101mbrred$ESC[0m"
#Write-Host "red$TAB$ESC[48;2;220;50;47mRGB$TAB$ESC[48;5;1mbg$TAB$ESC[41mred$ESC[0m"
#Write-Host "magenta$TAB$ESC[48;2;211;54;130mRGB$TAB$ESC[48;5;5mbg$TAB$ESC[45mmagenta$ESC[0m"
#Write-Host "violet$TAB$ESC[48;2;108;113;196mRGB$TAB$ESC[48;5;13mbg$TAB$ESC[105mbrmagenta$ESC[0m"
#Write-Host "blue$TAB$ESC[48;2;38;139;210mRGB$TAB$ESC[48;5;4mbg$TAB$ESC[44mblue$ESC[0m"
#Write-Host "cyan$TAB$ESC[48;2;42;161;152mRGB$TAB$ESC[48;5;6mbg$TAB$ESC[46mcyan$ESC[0m"
#Write-Host "green$TAB$ESC[48;2;133;153;0mRGB$TAB$ESC[48;5;2mbg$TAB$ESC[42mgreen$ESC[0m"

So, a couple notes outside of the discussion about Solarized:

This change was cherry-picked into the release branches (release-1.1 at cb52de02e70b8872471db39e4945d560f8736d29, release-1.2 at ccf201fe440fd8163115f8630eb4a0529d420f50), and the tags are made on the commits in the release branches.
#293 is fixed to the best of our ability

James fixed color representation through the entire stack, which exacerbated an issue in PowerShell (PowerShell/PSReadline#830)
Because of that issue, we broke 40 specifically for PowerShell (#6810). This is very narrowly targeted. Once the change that fixes PowerShell/PSReadline#830 (PowerShell/PSReadline#1626) has a wider install base, we'll revert the workaround and 40 will work fine.

You're right that we're not following Solarized's "canonical" color mappings... but neither is gnome-terminal. Generally, though, I'm concerned about this:

"your dark background has the wrong brightness relationship ..."

That's fair and well-specified from a Solarized standpoint, but any other terminal would consider the default Solarized mappings to have the wrong brightness relationship between "black" and "bright black". Nobody has strictly defined that "bright black" must indeed be brighter than "black", but it's right there in the name.
I'm checking base02 on base03 because we do see that color combination in the wild. PowerShell's default configuration prints 90 on 49 (or 90 on 40 in traditional consoles predating Windows 10). If we use cmd-colors-solarized or the official upstream mapping, that means printing one base color on another base color.
Personally I'd rather yank all reference to Solarized from this repo forever than move color indices back and forth for all time, but that doesn't mean I'm not amenable to discussing it :smile:

As far as the releases go, it might be less confusing if the Release page gives the "commits to release-1.2 since..." instead of "commits to master since..." it does now. I'm not sure if that's under your control, but I've seen it in other repos using release-branches. I would have assumed it was automatic...
I was unaware of the PowerShell-specific colour hack, and now that I try my script (have a shell version of it too) in MSYS2 bash and WSL2 Ubuntu bash (which I meant to do at the time, but got distracted with upgrading my vim config...), the output is perfect with canonical Solarized Dark, and shows the same swappage with the new-default Terminal scheme, as you'd expect.
It just happens that PowerShell is the main thing I use where Solarized is implemented using the 16-colour palette instead of RGB values, so it was the first place I went to enjoy the resolution of #293. -_-

It's absolutely fair that Solarized isn't really interested in the colour naming. 8 of the sixteen colours in the palette are tones of grey, despite their names, and the other 8 are colours. The names names of the colours suggest 12 colours and four shades, so clearly it's never going to map cleanly.
I agree it's reasonably out-of-purview for this app to maintain upstream support for Solarized, given it requires more than just a palette swap, and an important shell generates "brightblack on background" output by default. It'd be easy enough to add the relevant config block to the Solarized docs, for example.

I noticed on the Microsoft App Store you all mentioned that this is an open source project and encourage community participation. I'm not sure if this is wasting your time posting comments like this here but I extremely appreciate you all trying to fix the Solarized Light and Dark themes (even if some of you might not particularly like the themes at all). I have a really bad medical condition that induces severe migraines when I look at something with too much contrast and using Solarized, along with other visual tools, has been one of the only themes to seriously help me over the last 7 years that I have been using it. It might sound counterintuitive but I feel that for many a theme that makes things stand out less is kind of a blessing. I feared you all were going to remove Solarized from the default themes and try to make the users just figure out a custom Solarized theme, but if it is not trivial for you all to get working, I can't imagine it being easy for a common user to resolve. I read up through other pull requests regarding this issue and can definitely tell it has been frustrating to handle and I just wanted to express gratitude for the work you are all putting forward to resolve this.

@ArthVader Thank you so much for sharing your story. It's been definitely appreciated here on the dev team - we haven't really heard any requests from people who want schemes to have less contrast, so it's good to be reminded to balance both the people who are currently happy with Solarized against the vocal people who are unhappy with it. I don't think Solarized is going to go anywhere, but hopefully we can make it just a little more usable ☺

And again, since this is the last place I'm aware of this being discussed, I just came across Selenized, which is a rework of Solarized. Although I'm personally not planning on switching to it (it doesn't have the neat magic-switch properties of Solarized), it does have four distinct variants and the large advantage of mapping to terminal colours in a way that is rational out-of-the-box.
So it might be a good candidate for Windows Terminal to support in place of (or as well as) the current some-colour-swapped-Solarized schemes, for people who like that style of colour scheme but not fiddling with their console application configuration.


After switching tab,Instead of playing current video, all other are playing at once in Andoird

When i come on tab which has video component, video is not playing.
I have flat list which has video componnt, to render multiple videos,video play smoothly on home screen but when i switch from Home screen to Another screen and come back to home screen, instead of playing current video its playing remaining videos on Android,
I'm using react-navigation's createMaterialBottomTabNavigator
Here id my Video Compoent  code
        <View key={this.state.videoIndex} style={{ width: SCREEN_WIDTH, }} >
            <Video
                repeat
                paused={this.state.videoPaused}
                muted={this.state.videoMute}
                source={{ uri: this.state.source }}
                ref={ref => {
                    this.player = ref;
                }}
                // onBuffer={this.onVideoBuffer}
                style={{
                    width: SCREEN_WIDTH,
                    height: this.state.height,
                }}
            />

        </View>

Here is my Home Screen code
renderItemVideoLike = ({ item, index }) => {
    console.log('video Numer', index, this.state.videoNumber);
    return (
                <View>

                    <VideoComponent
                        item={item}
                        source={source}
                        height={height}
                        videoIndex={index}
                        videoPaused={this.state.videoNumber !== index}
                        videoMute={false}

                    />
      </View>

}
<FlatList
                horizontal={true}
                bounces={false}
                pagingEnabled={true}
                keyExtractor={(item) => item.toString()}
                removeClippedSubviews
                showsHorizontalScrollIndicator={false}
                // key={this.state.key}
                viewabilityConfig={this.viewabilityConfig}
                data={this.state.videoList}
                extraData={this.state}
                renderItem={this.renderItemVideoLike}
                onViewableItemsChanged={this.onViewableItemsChanged}
            />

can you show the whole Video Component code please

I think they use of key prop is related
Can you try to set the same key to the video instance?

I switch to to android player instead of exoplayer and then my problem was
solved


Build/cloud subtree update

Update cloud subtree
Description of the Change
git-subtree-dir: packages/manager/apps/cloud
git-subtree-split: 446bb03acc2ef5b6d8af3b3a262757af793f8de1
526e96a0f0 — Squashed 'packages/manager/apps/cloud/' changes from 18d3302b56..446bb03acc
4506cedef4 — Merge commit '526e96a0f0c4bed354f54346a15a30be4ee7bef9' into build/cloud-subtree-update

We might consider to close this following Pull request then: ovh-ux/ovh-manager-cloud#1589


Exponents with sign should be recognized as decimal numbers.

Python 3.9 -
>>> a = 1e2
>>> a
100.0
>>> a = 1e-2
>>> a
0.01

Pocketpy -
>>> a = 1e2
>>> a
100.0
>>> a = 1e-2
  File "<stdin>", line 1
    a = 1e-2
          ^
SyntaxError: invalid number literal
>>> a = 1e+2
  File "<stdin>", line 1
    a = 1e+2
          ^
SyntaxError: invalid number literal

This is not really an error in code but an extension of the partial implementation of exponentiation that is already supported in pocketpy. Hence, I didn't open it up as a bug.

I know about this. But I am reluctant to fix it.

Could this be noted in https://pocketpy.dev/features/differences/, as this kind of literals are quite common?

As mentioned in the documentation pocketpy is a project also being heavily used for scientific computing. In that context it is crucial to have special numbers/constants like (Inf, eps, e, pi etc.) and their various formats.
Hence I'm a bit confused on the reluctance to support this literal.


Multiplying double array with "castable non-doubles" throws exception

Description
Types such as int or float are normally "automatically" casted to double if needed. However, when multiplying a double array with an int or float, a NullReferenceException is thrown. The same kind of problem seems to happen when a "castable non-double" is assigned as an element in a double array.
Minimal example
static void Main(string[] args)
{
    NDArray arr = np.random.rand(2, 2);
    // Debug.WriteLine($"{arr}");

    double myDouble = 5;
    NDArray result_d = arr * myDouble; // works just fine

    float myFloat = 5;
    NDArray result_f = arr * myFloat; // throws System.NullReferenceException

    int myInt = 5;
    NDArray result_i = arr * myInt; // throws System.NullReferenceException

    // Debug.WriteLine($"{result_f}");
    // Debug.WriteLine($"{result_d}");
}

Expected result
It should be possible to multiply arr with 5, no matter if the 5 is declared as a double, float, or int.

Related to #281 and is a WIP by me.

This issue has been resolved in the new release of NumSharp 0.11.0-alpha2 and available on nuget.
If it persists, Reopen the issue let us know please.


How to use MSI with Azure storage emulator?

Currently I am using MSI in my code. But when I test it locally I want to use azure storage emulator and blob storage in it. MSI is working well with the cloud storage, but when it comes to the local storage emulator, I don't know how to do it. Because local storage emulator requires fixed account and key. Does local storage emulator supports MSI? How should I use it?
My code is like this
const string StorageResource = "http://<IP_ADDRESS>:10000/devstoreaccount1";
AzureServiceTokenProvider tokenProvider = new AzureServiceTokenProvider();
AppAuthenticationResult authResult = await tokenProvider.GetAuthenticationResultAsync(
                StorageResource, null, cancellationToken).ConfigureAwait(false);

@yangyadi1993 Thanks for your question. We are checking on this and will respond to you soon.

@yangyadi1993 Can you share me the documented which you are referring too?

@yangyadi1993 There is similar thread discussion in [SO] forum, refer to the suggestion mentioned in that link. (https://stackoverflow.com/questions/57384205/how-to-use-msimanaged-service-identity-with-azure-storage-emulator)
Since we have not heard back from you we will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly reopen the issue and continue the discussion.
For the best possible response, we recommend posting your issue on either our Storage Forum Channel where one of our engineers will engage asap.

Yes that is me asking that question in stackoverflow. Basically I am referring to this document and thought maybe it is possible to use MSI in local storage.
https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/services-support-managed-identities
But it seems that I can not. Thank you very much!


Migration from EC2 to ECS

@drAlberT I've put env vars as parameters so I can configure them easily, even to create different env (dev, staging) using the same cfn tpl. Is there a better way? (100% open to improvements)

it's the right way. but maybe better to use a tag such as composer:1 or
composer:2 just to avoid unintended upgrades to latest, possibly BC
breaking, stuff
Il giorno gio 27 ago 2020 alle ore 09:51 Andrea Giannantonio <
<EMAIL_ADDRESS>ha scritto:

@JellyBellyDev commented on this pull request.
In sys/docker/Dockerfile
https://github.com/PUGX/badge-poser/pull/322#discussion_r478225101:

@@ -31,7 +30,7 @@ RUN apt-get update
&& cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
&& rm -rf /var/lib/apt/lists/*

-RUN wget https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -O - -q | php -- --quiet
+RUN curl -sL https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer | php -- --quiet \
what do you think about override with COPY --from=composer
/usr/bin/composer /usr/bin/composer?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/PUGX/badge-poser/pull/322#pullrequestreview-476470039,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AALAHDG5R4KW2IORVDKXHFDSCYGA3ANCNFSM4NGYQ7AQ
.

--
Emiliano Gabrielli

if it is in the PATH, I'd COPY the binary in /usr/local/bin instead of
/usr/bin
Il giorno gio 27 ago 2020 alle ore 10:21 Emiliano Gabrielli <
<EMAIL_ADDRESS>ha scritto:

it's the right way. but maybe better to use a tag such as composer:1 or
composer:2 just to avoid unintended upgrades to latest, possibly BC
breaking, stuff
Il giorno gio 27 ago 2020 alle ore 09:51 Andrea Giannantonio <
<EMAIL_ADDRESS>ha scritto:

@JellyBellyDev commented on this pull request.
In sys/docker/Dockerfile
https://github.com/PUGX/badge-poser/pull/322#discussion_r478225101:

@@ -31,7 +30,7 @@ RUN apt-get update
&& cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
&& rm -rf /var/lib/apt/lists/*

-RUN wget https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer -O - -q | php -- --quiet
+RUN curl -sL https://raw.githubusercontent.com/composer/getcomposer.org/76a7060ccb93902cd7576b67264ad91c8a2700e2/web/installer | php -- --quiet \
what do you think about override with COPY --from=composer
/usr/bin/composer /usr/bin/composer?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/PUGX/badge-poser/pull/322#pullrequestreview-476470039,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AALAHDG5R4KW2IORVDKXHFDSCYGA3ANCNFSM4NGYQ7AQ
.

--
Emiliano Gabrielli

--
Emiliano Gabrielli

@fabiocicerchia The failing check is somehow wrong, but maybe a more pedantic way to do the job could be less error prone in fact.
It is saying that a previously defined build layer (a FROM) should be referenced, even if the docker documentation states that "In case a build stage with a specified name can’t be found an image with the same name is attempted to be used instead." .. it could make sense, a bit pedantic but safer.
So the solution should be to add a first empty layer FROM composer:1 as composer and remove the version tag in the COPY statement.

I set codacy to ignore the issue! ;)

LGTM! 👍

@fabiocicerchia The failing check is somehow wrong, but maybe a more pedantic way to do the job could be less error prone in fact.
It is saying that a previously defined build layer (a FROM) should be referenced, even if the docker documentation states that "In case a build stage with a specified name can’t be found an image with the same name is attempted to be used instead." .. it could make sense, a bit pedantic but safer.
So the solution should be to add a first empty layer FROM composer:1 as composer and remove the version tag in the COPY statement.

I set codacy to ignore the issue! ;)

Mind a cosmic truth: "the linter is alway right", mutatis mutandis ;)

@drAlberT can we merge?


(docs): enabled syntax highlighting in logging.rst

I enabled Syntax Highlighting in logging.rst.

Can someone of Maintainers please tell me how to fix the style test? :)

Syntax highlighting is already enabled: https://flask.palletsprojects.com/en/1.1.x/logging/. In rST, :: denotes a code block in the document's default syntax. I do prefer the .. code-block:: style, but I'd like to either do this consistently everywhere, or switch it naturally while editing docs. Going to close this for now, thanks for taking a look.

You can see what failed in the test log: https://github.com/pallets/flask/pull/3641/checks?check_run_id=743424268#step:9:16

Trim Trailing Whitespace.................................................Failed
- hook id: trailing-whitespace
- exit code: 1
- files were modified by this hook

Fixing docs/logging.rst

pre-commit hook(s) made changes.
If you are seeing this message in CI, reproduce locally with: `pre-commit run --all-files`.
To run `pre-commit` as part of git workflow, use `pre-commit install`.


Upgrade to cert-manager 1.13.0

Which also upgrades the K8s and C/R dependencies.

/cc @inteon

Thanks @erikgb!
/approve
/lgtm
Could you also take a look at this PR that should allow dependabot to automatically create these kind of PRs?
https://github.com/cert-manager/approver-policy/pull/265


Error: double free or corruption (!prev): 0x0000000000c6c780

when I run Imagenet， Error in `/home/anaconda2/envs/tensorflow/bin/python': : double free or corruption (!prev): 0x0000000000c6c780
I do such step :
i). Download and generate ImageNet TFRecord
I do it like you say and get TFrecord 1024 train and 128 validation
ii). Build and run ImageNet
I do it like you say:
cd ${TERNGRAD_ROOT}/terngrad
bazel build inception/imagenet_train
bazel build inception/imagenet_eval
bazel-bin/inception/imagenet_train
--optimizer momentum
--net alexnet
--image_size 224
--num_gpus 2
--batch_size 256
--train_dir /tmp/imagenet_train
--data_dir ~/dataset/imagenet-data/
but at this step ,
Error in `/home/anaconda2/envs/tensorflow/bin/python': : double free or corruption (!prev): 0x0000000000c6c780.
I would appreciate for your answer. thank you

Did you try to bazel clean, and built from scratch?

I try to bazel clean , and then do
bazel build inception/imagenet_train
bazel build inception/imagenet_eval
bazel-bin/inception/imagenet_train
--optimizer momentum
--net alexnet
--image_size 224
--num_gpus 2
--batch_size 256
--train_dir /tmp/imagenet_train
--data_dir ~/dataset/imagenet-data/'
still the same error

This might help. Seems it would not being a problem of terngrad, which has only python code. Please try to reinstall your tensorflow.