Add epoch functions

Codecov Report

Merging #43 (49e4c2c) into master (94f0bfb) will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master      #43   +/-   ##
=======================================
  Coverage   99.82%   99.82%
=======================================
  Files           4        4
  Lines        1155     1169   +14
=======================================
+ Hits         1153     1167   +14
  Misses          2        2

Flag
Coverage Δ

unittests
99.82% <100.00%> (+<0.01%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

pycep/transformer.py
100.00% <100.00%> (ø)

pycep/typing.py
100.00% <100.00%> (ø)

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 ace7fc9...49e4c2c. Read the comment docs.


Added 3d-boxes-background animations

Added 3d-boxes-background animations

@siddhi-244 Please Review this


Benchmark text rendering in languages not supported by Roboto

Currently, we only benchmark text layout/rendering in Latin script.
Roboto supports Latin, Cyrillic, and some Greek.
We should add benchmark(s) using CJK scripts.
We should investigate whether it would be faster if we specified Noto as the first font to avoid fallback when using CJK scripts.
/cc @goderbauer @jlavrova @jason-simmons fyi

We could look into injecting a different DefaultTextStyle if the app's local is not one supported by Roberto.


Add "..." after Text wrapping

On the main page, content text wrap , should have some dot .
Actually it looks like :
"Hello, Here is my new blog , I talk about the com"
It should be :
"Hello, Here is my new blog , I talk about the com ..."

Hi,
did you use the intro keyword at the beginning? If you use it ,you can write the abstract you want and what appears on your homepage will not be a (poorly-)truncated text. You have to keep in mind the character limit (which i dont know but you can guess easily). Also, feel free to add as many dots as you want to end this abstract!
Here is how i would write it:
Date: 2015-03-15
Title: My awesome title
Intro: Suspendisse potenti. Pellentesque tristique mi non nibh varius, a commodo orci egestas. Cras nec neque pulvinar, scelerisque massa at, malesuada est. Vestibulum aliquet nisl in ligula dictum facilisis nec sit amet dolor. Vivamus convallis mauris a augue sagittis imperdiet. Aenean id massa a enim commodo pretium. Quisque vestibulum ipsum ac sollicitudin molestie. Duis consequat felis at mauris eleifend, ac elementum orci accumsan. Nunc tincidunt ante massa, et mattis mi pretium vel. Integer ut orci sed est imperdiet pulvinar eu nec dolor........
Tags: myTag1, myTag2
Toc: yes
Status: public

BTW, I made few edits on my own JustWriting so I'm gonna fork it (officially) very soon :)
Cheers.
(as your 1st blog post mentions, it looks like you are not using Pelican anymore :) )

@jonathanlurie  good work!


multipart/form-data fixes

Fixes hangs that may occur with multipart/form-data file uploads. Influenced by https://github.com/jkyberneees/low-http-server/pull/13#issue-654476894 .

This fix doesn't fix the inability to use low-http-server with multer, like https://github.com/jkyberneees/low-http-server/pull/13, but is a smaller fix overall.
From what I understand, the remaining issue occurs in multer, but not its dependency, busboy. Here's the code I tried that uses only busboy:

const { router, server } = require('0http')({
  server: require('../src/server')()
})

const Busboy = require('busboy')

router.post('/upload', (req, res) => {
  const busboy = new Busboy({ headers: req.headers })
  busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
    console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype)
    file.on('data', function (data) {
      console.log(data.toString()) // this should show the data we are trying to send via curl
      console.log('File [' + fieldname + '] got ' + data.length + ' bytes')
    })
    file.on('end', function () {
      console.log('File [' + fieldname + '] Finished')
    })
  })
  req.pipe(busboy)
})

server.listen(3000, () => { })

I tried using curl to submit file:
cd ~/Desktop/
touch test.txt
echo 1234 > test.txt
curl -X "POST" "http://localhost:3000/upload"  -F<EMAIL_ADDRESS>
The busboy code produced the following result in terminal:
File [file]: filename: test.txt, encoding: 7bit, mimetype: text/plain
1234

File [file] got 5 bytes
File [file] Finished

So, my understanding is that multer uses some additional node.js APIs that low-http-server does not use

I'm try your code using busboy and still hang on twice request . .
server.js
...
     res.onData((bytes, isLast) => {
        if (!bytes.byteLength) {
          if (!isLast) return
          return handler(reqWrapper, resWrapper)
        }
        const chunk = Buffer.from(bytes)
        if (isLast) {
          reqWrapper.push(chunk)
          reqWrapper.push(null)
          if (!res.finished) {
            return handler(reqWrapper, resWrapper)
          }
          return
        }
        return reqWrapper.push(chunk)
      })
...

Example upload
const { router, server } = require('0http')({
  server: require('../src/server')()
})

const Busboy = require('busboy')

router.post('/upload', (req, res) => {
  const busboy = new Busboy({ headers: req.headers })
  busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
    console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype)
    file.on('data', function (data) {
      // console.log(data.toString()) // this should show the data we are trying to send via curl
      console.log('File [' + fieldname + '] got ' + data.length + ' bytes')
    })
    file.on('end', function () {
      console.log('File [' + fieldname + '] Finished')
    })
  })
  req.pipe(busboy)
})

server.listen(3000, () => { })

Hang screenshot

no error message or log...

Expect
File ['file]: filename: test.txt, encoding: 7bit, mimetype: text/plain
test 1234
File ['file] got 6 bytes
File ['file] Finished

any idea ? thanks...

@herudi have you tried the latest NPM version or the last commit in master

@schamberg97 yes, i use the last commit master and latest yarn... but the original last commit master error in here
_read (size) {
      return this.slice(0, size)
}

just modify file in request.js and server.js from u right? but still hang.. thanks

Yup, sorry, was in a bit of a rush. Yeah, I actually meant changes in this Pull Request. Does it work with changes in this PR? Because for me, it does work

sorry, for me it hangs for next requests. next request means, send with curl then stop curl and send again it will hang. so I tried it several times
thanks...

@herudi weird, I have no such issue while using this unmerged PR. I have tried it on MacOS, so I will try on Windows, perhaps I can reproduce it there

well,, maybe you should try it on windows too. i am also using nodejs 12.x version. in the meantime.
thanks...

Hi @schamberg97, thanks for supporting this issue. Should we go ahead and merge this PR?


Deploy Redis service on Kubernetes

https://github.com/airavata-courses/CloudElves/tree/deployments/deployments
https://github.com/airavata-courses/CloudElves/blob/deployments/deployments/new-cluster/platform.sh


BEIT on ImageNet1K

Hello,  @donglixp @addf400
Thank you for your great work and open-source code on BEIT. I've found that your published pre-trained models and logs are based on the ImageNet22K. And you know, it's hard to finish one experiment with limited computation resource on 22K dataset.
So, can you provide more details, like pre-trained models, logs, training hyper-parameters and others, on ImageNet 1K dataset, as you mentioned in your BEIT paper?
Thank u very much!

Hi @Vickeyhw ,
Sure, we can add the instructions for pre-training on INet-1k.

That would be great and look forward to your update.
Thank u~

https://github.com/microsoft/unilm/tree/master/beit#example-pre-training-beit-base-on-imagenet-1k

@Vickeyhw The instructions have been added.

Hi @donglixp,
Would it be possible to share BeiT weights pretrained on ImageNet-1K?
Thanks!


Fix response leaks & add basic InputStream support

There might be more response body leaks, yet to test all of them.
Concerning InputStream, it's a very basic implementation, that works fine and tested on small and big files (from a few KB to a few GB).

Any reason this is not merged?


Fixes #1822 Removed "Scottish Control (SCO_CTR)"

Removed reference to Scottish Control (SCO_CTR) on the VT-Guide.

:tada: This PR is included in version 5.8.4 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Use multiple databases

Been trying to figure this out. Is it possible to use a second database (second data context) inside a module?
I have a separate MSSQL database that I need to reference product data from at runtime.

Is there a proper reason to access a second database, if so I think you can register a second IDbContext then you can use DI to retrieve `IEnumerable

I just implemented the IdentityServer4 persistence layer using two additional DbContexts (same
postgres database like for SimplCommerce, different schema "security" though). I guess the schema of that separate database is maintained somewhere else? Do you really need to use EF for this purpose? Maybe it's enough to add a MSSQL server link and use a couple of views?


[release/1.2] bump runc to 029124da (v1.0.0-rc7-6-g029124da)

this updates runc to the same version as master (https://github.com/containerd/containerd/pull/3169); see https://github.com/containerd/containerd/pull/3180#discussion_r272423032
no changes in vendored files
full diff: https://github.com/opencontainers/runc/compare/v1.0.0-rc7...029124da7af7360afa781a0234d1b083550f797c

opencontainers/runc#2031 Add selinux validate in runc exec
opencontainers/runc#2032 Fix SELinux failures on disabled SELinux Machines
addresses opencontainers#2030 "container init caused "write /proc/self/attr/keycreate: invalid argument"

Signed-off-by: Sebastiaan van Stijn<EMAIL_ADDRESS>

Codecov Report

Merging #3183 into release/1.2 will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff              @@
##           release/1.2    #3183   +/-   ##
============================================
  Coverage        43.74%   43.74%
============================================
  Files              101      101
  Lines            10743    10743
============================================
  Hits              4700     4700
  Misses            5311     5311
  Partials           732      732

Flag
Coverage Δ

#linux
47.38% <ø> (ø)
:arrow_up:

#windows
40.85% <ø> (ø)
:arrow_up:

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 7f8cf85...e011773. Read the comment docs.

LGTM

runc rc8 was released in the meantime.


Create Backend API to Serve Health Statuses of Deployed services in a proj/venue

This is an API that the UI can query to get the health statuses.
Backed API is responsible for reading JSON health status file stored in S3 bucket, and parses file, and returns a JSON response that indicates the health statuses of the services.  The first consumer of this information will be a UI/UX web page displaying the statuses.
This API will:

Be implemented in the existing Go backend code/API area of the management console (https://github.com/unity-sds/unity-management-console)
Will be fronted by an API Gateway entry point that looks like: https://unity.com/project/venue/health

Acceptance Criteria:

[ ] Ticket for implementing lambda is complete : https://github.com/unity-sds/unity-cs/issues/367
[ ] Ticket for S3 bucket creation is complete : https://github.com/unity-sds/unity-cs/issues/380
[ ] Ticket for S3 SSM parameter creation is complete : https://github.com/unity-sds/unity-cs/issues/370
[ ] API Gateway setup gets created by the run.sh (deployment of a venue) chain of events
[ ] MC API can be successfully queried via the API GW URL, and returns health Check JSON that's stored in the S3 bucket.
[ ] The UI/UX "UI Navbar" component is happily able to request this data via the MC API

@jdrodjpl and @galenatjpl ping for status update

Making good progress, have the MC backend querying for the parameter and getting the values, just working now on the JSON output. On track for completion early next week.

@jdrodjpl ping for status, is this still on track for early this week?

So far, the only hitch (which I didn't realize) is that we don't yet have health check data being populated to the bucket. I'm working with @hargitayjpl to get the correct bucket created and populated with data so I can ensure that the end-to-end process is working.

@jdrodjpl ping for status.

I think we are dealing with a pretty serious issue that's keeping the MC from even booting up right now.
Otherwise, I have the code done and tested to create the bucket and parse the health check statuses and pass them along to the API Gateway, and I have the code done to create the Shared Services API Gateway but I'm unable to test it while we figure out what borked the MC (seems to be something in the stack startup that's not consistently populating the SSM param for the health check bucket location, right @hargitayjpl ?

Hi @jdrodjpl, I think we said we would have an internal team demo of this (where we are at) tomorrow (6/18), correct?

I was held up trying to figure out the API Gateway stuff but after some guidance from @mike-gangl I'm ready to go on my end. Probably just need to unify my work with what @hargitayjpl has been doing.

@mike-gangl this API work has been completed in 24.2, and we are marking this as done.  The API Gateway might need to be tweaked a bit in the future, and we will create a new ticket if necessary for this.  @hargitayjpl will do final testing, including hitting this API in https://github.com/unity-sds/unity-cs/issues/423.
A testing URL was handing off to the UI/UX Team last week, that exercises the returning of the JSON content.


[US] Attestation Read Interoperability

As an attestation consumer,
I want to be able to read from multiple registries from a single location,
So that I don't have to check which registry an attestation id refers to

Description
This feature involves creating a smart contract that accept an attestation id, and read from a number of registries
To begin with, we will default to interoperability with EAS, with a view to adding more registries later when needed.
This contract will expose a function called: getAttestation(bytes32 uid), which by default will return an EAS standard attestation.
This function will call the getAttestation function on the EAS registry, which can be found here:
https://github.com/ethereum-attestation-service/eas-contracts/blob/04a5846723bfc7fc7e9dc75582958aca66a1ba4a/contracts/EAS.sol#L378C25-L378C25
If no attestation is found (unsure how to determine this exactly), then the code will check the Verax registry by calling the function:  getAttestation(bytes32 attestationId) on the AttestationRegistry contract, which cane found here:
https://github.com/Consensys/linea-attestation-registry/blob/0362d40e124a751ae600241afc3967fefd586065/src/AttestationRegistry.sol#L236C12-L236C49
If the attestation is found in the Verax registry, then we will need to transform it from a Verax to EAS attestation, like so:
struct Attestation {
    bytes32 uid; // taken from "attestationId"
    bytes32 schema; // taken from "schemaId"
    uint64 time; // taken from "attestedDate"
    uint64 expirationTime; // taken from "expirationDate"
    uint64 revocationTime; // taken from "revocationDate"
    bytes32 refUID; // default to bytes32(0)
    address recipient; // taken from "subject". (will need to be converted from bytes to address)
    address attester; // taken from "attester"
    bool revocable; // will need to be looked up at the portal level
    bytes data; // taken from "attestationData"
}

As well as exposing a method for retrieving an attestation, we will also expose a method for retrieving a schema string, which will look like this:
  function getSchema(bytes32 schemaId) public view returns (string);

This will first call the getSchema function on the EAS SchemaRegistry, and if found, will return the schema property of the return schema.  If not found, then it will call the getSchema function on the Verax SchemaRegistry and return the schema property of the returned schema.

What is the reasoning for having this as a smart contract as oppose to just the SDK?


Backport changes from ODC-7312

This quickstart will be available in OpenShift Web Console based on the activity at https://github.com/openshift/console-operator/pull/760.
During that review, feedback was incorporated to change some sentences or clarify their meaning.

@sangeetaraghu I'm planning to backport these changes to this quickstart to keep it aligned with the one that will be available by default in the OpenShift Web Console.
I'm not sure if you want to backport them to our EAP documentation too? Changes are minimal except for the "Install Helm Chart" button that is now "Create" (on OCP 4.13+)


Document how to get the master xpub with origin info from commonly used wallet

@pythcoiner mentioned it could be useful in https://github.com/wizardsardine/liana/issues/451#issuecomment-1510489085.

will follow this way

@darosior can you assign me so I don't forget that (one more time :sweat_smile:)?

@darosior , i'm currently working on this, few points:

it looks like we cannot export an xpub easily from bitcoin core (and anyway it will be for an hot key if the key managed by core) or i miss something?
i detailled the process using async-hwi cli, should i also do it for bitcoin-core hwi?
Electrum give a zpub for segwit wallets instead xpub should i document it (with a way to convert zpub to xpub)?

@darosior

i detailled the process using async-hwi cli, should i also do it for bitcoin-core hwi?

I'm confused. This is about getting an xpub from the Bitcoin Core hot wallet right? When does the hardware wallet interface come into play?

Electrum give a zpub for segwit wallets instead xpub should i document it (with a way to convert zpub to xpub)?

I don't know.

I have to say the more it goes the more it feels to me this would confuse users more than anything else. "I gave my xpub from my wallet but i don't see my funds". I believe it's much easier and less footguny if all parties just use Liana directly. What was the rationale for this again?

Then i think it can be closed? Feel free to reopen if i misunderstood your last comment.


oracle 11gr2 line number for sql errors not visible - using default oracle driver

System information:
Operating system (distribution) and version: windows 10 enterprise 10.0.18363
DBeaver version: DBeaver 21.1.1
Additional extensions: NONE
Connection specification:
Database name and version : oracle 11gr2
Driver name : default oracle driver bundled with s/w
Do you use tunnels or proxies (SSH, SOCKS, etc)? : no tunnels/proxies
Describe the problem you're observing:
hello SMEs,
line numbers for sql errors not visible using Oracle 11gr2 db driver  using default oracle driver. it'll help to display the line numbers that have error for easy troubleshooting. in case I'm missing some config (in addition to what I tried searching in preferences/driver config) appreciate the insights.
oracle sql developer shows something like this:  "error at line: 12 column 44"
Steps to reproduce, if exist:
write any syntactically incorrect SQL.
Include any warning/errors/backtraces from the logs

dbeaver usually puts the cursor at the place of the error instead


5.7 regression, closure not accepted when function with same signature is

With this code:
struct Foo<T> {
    init(_: (T) -> Void) {}
}

protocol Bar {}

enum Baz: Bar {
    case someCase(Int)
}

let _: Foo<Bar> = Foo<Bar> { (a: Bar) -> Void in
    switch a {
    case let .someCase(value) as Baz:
        print(value)
    default:
        break
    }
}

Compiling with Swift 5.6 works fine. With Swift 5.7 (Xcode 14b6) I get:
% swiftc bar.swift
bar.swift:11:19: error: type of expression is ambiguous without more context
let _: Foo<Bar> = Foo<Bar> { (a: Bar) -> Void in
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

With Swift main @ https://github.com/apple/swift/commit/5bfef4fc4bfa6e424384a39533ceea3744a613cc I get:
/tmp/bar.swift:13:15: error: type 'any Bar' has no member 'someCase'
    case let .someCase(value) as Baz:
             ~^~~~~~~~

Which appears to hint at the issue. Changing the closure to a function with the same signature sidesteps the issue:
struct Foo<T> {
    init(_: (T) -> Void) {}
}

protocol Bar {}

enum Baz: Bar {
    case someCase(Int)
}

func b(a: Bar) -> Void {
    switch a {
    case let .someCase(value) as Baz:
        print(value)
    default:
        break
    }
}

let _: Foo<Bar> = Foo<Bar>(b)

This looks fixed on main: See https://godbolt.org/z/va5Ya5ccb
Can you please verify and close? Thanks!

So the warning is improved, but I guess I wouldn't say it's fixed unless it's expected that it still doesn't compile, but a function with the same signature and contents does compile? https://godbolt.org/z/qGTEdYWjz

Oh I see, just misunderstood the original case.

I updated the title and removed the DiagnosticsQol label since really the core issue seems to be the regression that previously you could use a closure, but now that doesn't work but using a function does


docs revision 1

Docs revision.

quick reference is now part of main docs site - https://docs.near.org/tools/near-api-js/quick-reference
fixed README

If we are removing examples/quick-reference.md, can we add a link to the docs? Can't find it on the docs.

@janewang Quick reference is here - https://docs.near.org/tools/near-api-js/quick-reference
But it's not titled 'quick reference' anymore.


New Email Signature Template

@codetamaracode Thanks for the PR. You may find a few more issues here!


Errors and stuck on VulnScan

Command Was
./osmedeus.py -m "screenshot, vuln" -t newrelic.com
O/P
[*] Loading config file from: /root/.osmedeus/client.conf
[RUN] Starting Django API
Performing system checks...
System check identified no issues (0 silenced).
September 02, 2020 - 16:23:00
Django version 2.2.13, using settings 'rest.settings'
Starting development server at http://<IP_ADDRESS>:8000/
Quit the server with CONTROL-C.
[+] Authentication success
[*] Workspaces already exists. Use '-w ' option if you want to create new one
---<---<--@ Target: newrelic.com @-->--->---
[RUN] Starting ScreenShot
[+] Clean old activities for newrelic.com:ScreenShot
[] Starting pre routine for ScreenShot
[] Waiting for ScreenShot module
[] Starting post routine for ScreenShot
[] Starting pre routine for ScreenShot
[+] Starting aquatone
[*] Execute: cat /root/.osmedeus/workspaces/newrelic.com/probing/resolved-newrelic.com.txt | /root/Osmedeus/plugins/go/aquatone -scan-timeout 1000 -threads 2 -out /root/.osmedeus/workspaces/newrelic.com/screenshot/newrelic.com-aquatone
aquatone v1.7.0 started at 2020-09-02T16:23:03Z
Unable to locate a valid installation of Chrome. Install Google Chrome or try specifying a valid location with the -chrome-path option.
Something went wrong with the command below:
cat /root/.osmedeus/workspaces/newrelic.com/probing/resolved-newrelic.com.txt | /root/Osmedeus/plugins/go/aquatone -scan-timeout 1000 -threads 2 -out /root/.osmedeus/workspaces/newrelic.com/screenshot/newrelic.com-aquatone
[+] Starting gowitness
[*] Execute: /root/Osmedeus/plugins/go/gowitness file -s /root/.osmedeus/workspaces/newrelic.com/probing/http-newrelic.com.txt -t 2  --log-level fatal --destination  /root/.osmedeus/workspaces/newrelic.com/screenshot/raw-gowitness/ --db /root/.osmedeus/workspaces/newrelic.com/screenshot/gowitness.db
time="2020-09-02 16:23:03" level=fatal msg="Unable to locate a valid installation of Chrome to use. gowitness needs at least Chrome/Chrome Canary v60+. Either install Google Chrome or try specifying a valid location with the --chrome-path flag"
Something went wrong with the command below:
/root/Osmedeus/plugins/go/gowitness file -s /root/.osmedeus/workspaces/newrelic.com/probing/http-newrelic.com.txt -t 2  --log-level fatal --destination  /root/.osmedeus/workspaces/newrelic.com/screenshot/raw-gowitness/ --db /root/.osmedeus/workspaces/newrelic.com/screenshot/gowitness.db
[] Waiting for ScreenShot module
[] Starting post routine for ScreenShot
[] Starting pre routine for ScreenShot
[+] Starting gowitness gen report
[] Execute: /root/Osmedeus/plugins/go/gowitness report generate -c 99999 -n /root/.osmedeus/workspaces/newrelic.com/screenshot/newrelic.com-raw-gowitness.html --destination /root/.osmedeus/workspaces/newrelic.com/screenshot/raw-gowitness/ --db /root/.osmedeus/workspaces/newrelic.com/screenshot/gowitness.db
time="2020-09-02 16:23:05" level=fatal msg="Unable to locate a valid installation of Chrome to use. gowitness needs at least Chrome/Chrome Canary v60+. Either install Google Chrome or try specifying a valid location with the --chrome-path flag"
Something went wrong with the command below:
/root/Osmedeus/plugins/go/gowitness report generate -c 99999 -n /root/.osmedeus/workspaces/newrelic.com/screenshot/newrelic.com-raw-gowitness.html --destination /root/.osmedeus/workspaces/newrelic.com/screenshot/raw-gowitness/ --db /root/.osmedeus/workspaces/newrelic.com/screenshot/gowitness.db
[] Waiting for ScreenShot module
[] Starting post routine for ScreenShot
[+] Cleaning for gowitness gen report:clean_gowitness
[-] Output not found: /root/.osmedeus/workspaces/newrelic.com/screenshot/newrelic.com-raw-gowitness-0.html
[ESTIMATED] ScreenShot module executed in 4.82 seconds.

[RUN] Vulnerability Scanning
[+] Clean old activities for newrelic.com:VulnScan
[] Starting pre routine for VulnScan
[+] Starting Nmap all port
[] Waiting for VulnScan module
[] Starting post routine for VulnScan
[] Starting pre routine for VulnScan
[+] Cleaning for Screenshot on ports found:clean_gowitness
[+] Update Summaries table from: /root/.osmedeus/workspaces/newrelic.com/vulnscan/formatted-summary-newrelic.com.txt
[+] Starting CSV beautify
[+] Starting Screenshot on ports found
[*] Execute: /root/Osmedeus/plugins/go/gowitness file -s /root/.osmedeus/workspaces/newrelic.com/vulnscan/scheme-newrelic.com.txt -t 30 --log-level fatal --destination  /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/raw-gowitness/ --db /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/gowitness.db
time="2020-09-02 16:23:09" level=fatal msg="Unable to locate a valid installation of Chrome to use. gowitness needs at least Chrome/Chrome Canary v60+. Either install Google Chrome or try specifying a valid location with the --chrome-path flag"
Something went wrong with the command below:
/root/Osmedeus/plugins/go/gowitness file -s /root/.osmedeus/workspaces/newrelic.com/vulnscan/scheme-newrelic.com.txt -t 30 --log-level fatal --destination  /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/raw-gowitness/ --db /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/gowitness.db
[] Waiting for VulnScan module
[] Starting post routine for VulnScan
[+] Cleaning for Screenshot on ports found:clean_gowitness
[*] Execute: /root/Osmedeus/plugins/go/gowitness report generate -n /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/newrelic.com-raw-gowitness.html --destination /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/raw-gowitness/ --db /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/gowitness.db
time="2020-09-02 16:23:10" level=fatal msg="Unable to locate a valid installation of Chrome to use. gowitness needs at least Chrome/Chrome Canary v60+. Either install Google Chrome or try specifying a valid location with the --chrome-path flag"
Something went wrong with the command below:
/root/Osmedeus/plugins/go/gowitness report generate -n /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/newrelic.com-raw-gowitness.html --destination /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/raw-gowitness/ --db /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/gowitness.db
[-] Output not found: /root/.osmedeus/workspaces/newrelic.com/vulnscan/screenshot/newrelic.com-raw-gowitness.html
[] Starting pre routine for VulnScan
[] Waiting for VulnScan module
[*] Starting post routine for VulnScan
[ESTIMATED] VulnScan module executed in 4.79 seconds.
Version - v2.2

The issue is no longer exist due to the repo having been upgraded to Osmedeus Next Generation v4.0

The issue is no longer exist due to the repo having been upgraded to Osmedeus Next Generation v4.0


Adds RubyConf AU 2019

This kicks off a new 2019 section. Hopefully I put it in the right place. Bring on 2019!

Thanks @philnash!
Looping @alexmackey @rbanks54 @robdmoore @luizbon in.
Gents, are we happy with having 2019 above 2018? You can check how it looks like here: https://github.com/Readify/DevEvents/blob/37efa39ddecbd5f9bab2cbe219b1aeda119720a4/readme.md
If anyone else has ideas and/or opinions, please fire away ✌

Just for a bit more explanation, I added the 2019 section at the top because then the page reads 2019 -> 2018 -> 2017. I'd have thought we'd want to see the newest events at the top so that people don't have to scroll forever to see the upcoming events.
To that point, a more radical reworking would be to reverse the order and show the latest announced events nearer to the top, with 2018 being sorted from December to January.
Could also add month skip links in for each year too, to give each year a table of contents?
What do you think?

I hadn't noticed 2017 was still there.
Does it make sense to keep it?
I'd say no but keen to hear others' opinions.

Makes sense to split it out to a different file...

Merging this PR so it's not blocked by us working out how to better organize our content. Raising an issue to psuedo-archive older events.


Fixed accounts users loading

Issue only in master, no public release is affected.
Resolves #764
Signed-off-by: Ivan Kozlovic<EMAIL_ADDRESS>

Coverage decreased (-0.2%) to 91.808% when pulling eab4af02a3e4303838d25dfa2112fcb867b8b24e on fix_account_users into e78828ce4cd988a6e484d8538311fb8c22175e69 on master.


refactor: Polish use of JUnit 5

👋 @tgianos hope all is well! @ExtendWith is no longer necessary for @SpringBootTest. Also moving a handful of asserts to JUnit 5. Let me know if you'd like to move to AssertJ and we can generate that change as well.
Co-authored-by: Moderne<EMAIL_ADDRESS>

hey @jkschneider! I think your Junit5 assertions change isn't working. In general as time has gone on we've standardized on AssertJ anyway so if you want to change those files to be AssertJ that would be fine. The build broke as it is anyway as the Junit5 assertions aren't on the classpath for that module I guess.
Hope things are well!


SHOW PROC '/statistic' with non-existent db id now fail loudly

What type of PR is this：

[x] enhancement

Problem Summary(Required) ：

When execute a SHOW PROC '/statistic/dbid' statement with non-existent db id like:
SHOW PROC '/statistic/12345';

It should thraw an error but follow
mysql> SHOW PROC '/statistic/12345';
+------------------+---------------------+----------------+
| UnhealthyTablets | InconsistentTablets | CloningTablets |
+------------------+---------------------+----------------+
| []               | []                  | []             |
+------------------+---------------------+----------------+

[FE PR Coverage check]
:disappointed: fail : 0 / 2 (00.00%)
file detail

path
covered line
new line
coverage

:large_blue_circle:
com/starrocks/common/proc/StatisticProcDir.java
0
2
00.00%

[FE PR Coverage check]
:heart_eyes: pass : 2 / 2 (100.00%)
file detail

path
covered line
new line
coverage

:large_blue_circle:
com/starrocks/common/proc/StatisticProcDir.java
2
2
100.00%

[FE PR Coverage check]
:heart_eyes: pass : 2 / 2 (100.00%)
file detail

path
covered line
new line
coverage

:large_blue_circle:
com/starrocks/common/proc/StatisticProcDir.java
2
2
100.00%


[3] Release 0.14

Of compliantkubernets-apps
Also check if kubespray has released a new version, in which case we should also release a version of compliantkubernetes-kubespray.

Closed by https://github.com/elastisys/compliantkubernetes-apps/pull/413


Shutter

Codecov Report

Merging #7 (ef39263) into main (1418eb0) will decrease coverage by 10.25%.
The diff coverage is 9.78%.

:exclamation: Current head ef39263 differs from pull request most recent head 733e8e3. Consider uploading reports for the commit 733e8e3 to get more accurate results

@@             Coverage Diff             @@
##             main       #7       +/-   ##
===========================================
- Coverage   70.61%   60.36%   -10.26%
===========================================
  Files          13       14        +1
  Lines         371      444       +73
===========================================
+ Hits          262      268        +6
- Misses        109      176       +67

Impacted Files
Coverage Δ

firebase.py
0.00% <0.00%> (ø)

main.py
0.00% <0.00%> (ø)

mclauncher/compute_engine.py
0.00% <0.00%> (ø)

mclauncher/shutter.py
0.00% <0.00%> (ø)

mclauncher/app.py
57.62% <31.81%> (-17.38%)
:arrow_down:

tests/test_app.py
96.77% <50.00%> (-3.23%)
: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 1418eb0...733e8e3. Read the comment docs.


StereoDepth: mesh rectification, disp/depth configurable resolution

StereoDepth mesh rectification support, mainly for fisheye camera usecase. The left and right meshes (files or byte arrays) need to be configured in the pipeline.
disparity/depth configurable output resolution, by rescaling the output. Available for now only when RGB-depth alignment is enabled (a warning is issued otherwise). For example, aligning ColorCamera preview and disparity/depth is possible as:

// Center cropping with no distortion
colorCamera->setPreviewKeepAspectRatio(true)  // Also default
colorCamera->setPreviewSize(300, 300)
stereoDepth->setOutputKeepAspectRatio(true)   // Also default
stereoDepth->setOutputSize(300, 300)

or
// No cropping on ColorCamera (the image will get squished).
// Slight cropping may be applied to disparity/depth to get it aligned, as the RGB FOV is narrower
colorCamera->setPreviewKeepAspectRatio(false)
colorCamera->setPreviewSize(300, 300)
stereoDepth->setOutputKeepAspectRatio(false)
stereoDepth->setOutputSize(300, 300)

rgb_depth_aligned example: lower mono camera resolution for now: 720p -> 400p, to fix the lag, while keeping 30fps. The alignment will be further optimized in the future.

Related PR: https://github.com/luxonis/depthai-shared/pull/36

Open PR for python bindings

Updated PR description with snippets for using the new StereoDepth API: setOutputSize (renamed from setOutputResolution) and setKeepAspectRatio.


Naming convention

should we remove admiral_ prefix?

remove admiral_

@pharmaverse/admiraldata
For datasets that are TA-specific, what do you think of using "domain_TA" (e.g., rs_onco) for naming instead of "TA_domain" (onco_rs)?

Happy to either way, will leave decision up to you.

I am happy with either way, too.

Where should additional fragments be placed? For example, should we use rs_onco_irecist, rs_irecist_onco, onco_rs_irecist, onco_irecist_rs, irecist_onco_rs, or something else?

how about domain_TA_others (others go from broader categories to more specific ones)?

how about domain_TA_others (others go from broader categories to more specific ones)?

Looks good to me.

When do we need to add prefix raw_? The naming for raw_ae and admiral_ae in admiral.test/data.R makes sense to me, but admiral_cm/admiral_dm are directly from CDSIC pilot data, should we rename them to raw_cm/raw_dm?
Can we have definition for those raw_ datasets? e.g., directly from CDISC pilot data

The following 31 datasets are from admiral.test data folder -

1st column: admiral_eg has no source indicated

2nd column: 14 datasets are directly from CDISC pilot data

rename them all to raw_domain? if agreed, update the last section of README.

3rd column:  6 datasets are updated based on CDISC pilot data.

can we use the same program ( dev/update_domain.R) to update Existing SDTM Datasets in the future?

4th column: 10 datasets are generated from scratch by dev/domain.R

tr, tu, rs are obvisously oncology domains,  is it still necessary to add suffix? e.g., rs_onco

no   source/program | Raw (directly from CDISC pilot   data) | Updated from raw | Program |
-- | -- | -- | -- | --
admiral_eg | raw_ae | admiral_ae | admiral_pc |
  | raw_ds | admiral_ds | admiral_pp |
  | raw_lb | admiral_lb | admiral_oe | (ophtha)
  | raw_mh | admiral_mh | admiral_sc | (ophtha)
  | raw_qs | admiral_qs | admiral_sdg_db |
  | raw_suppds | admiral_suppds | admiral_smq_db |
  | admiral_ex |   | admiral_tr | (onco)
  | admiral_suppae |   | admiral_supptr | (onco)
  | admiral_cm |   | admiral_tu | (onco)
  | admiral_sv |   | admiral_rs | (onco)
  | admiral_ts |   |   |
  | admiral_vs |   |   |
  | admiral_dm |   |   |
  | admiral_suppdm |   |   |

Regarding the 2nd column I would prefer option 2 because for the user it does not matter if the dataset is copied directly from the CDISC pilot, the dataset is a modified CDISC pilot dataset, or a completely new generated dataset. I think for the users it is easier if the name does not depend on the source. It also avoids that the users need to update their code. For example, if we use raw_dm now and change it later to dm because we added something, all users which used raw_dm would need to update their code to use dm.

Agree with @bundfussr. I think the most futureproof strategy is to:

name datasets copied directly from the CDISC pilot raw_<datasetname> eg raw_dm
name the resulting test dataset that we produce admiral_<domain> (or whatever naming convention we choose) even if we don't make any updates.

This way, we are more consistent with our naming approach, and also if we want to make updates in the future, we can just edit the file.

Hi @sophie-gem , we noticed that you previously renamed the admiral_eg data, do you happen to know the source of this dataset? Thanks!

Hi @kaz462, is this not the CDISC pilot EG dataset? I only ask as there is a template program in the inst/templates/ad_adeg.R that states:

and then it goes on to load the admiral_eg dataset.

If this is not the case - please let me know and I'll have another look

Thanks @sophie-gem for checking!

Hi @kaz462, is this not the CDISC pilot EG dataset? I only ask as there is a template program in the inst/templates/ad_adeg.R that states:

I thought so too -  STUDYID=CDISCPILOT01 in eg

But I couldn't find eg from the CDISC pilot data, is there another URL?

Closing this issue for naming convention.
A separate issue created for admiral_eg: https://github.com/pharmaverse/pharmaversesdtm/issues/56


Update metadata seo marvel 4_29 1

@DaniHaflin

@DaniHalfin - PR is ready for final review. This is related to the SEO project.
Thank you.
cc: @kenwith


Clean up loss computation in SCANVI

There are currently conditional cases that are never reached based on the arguments that are passed into scvi.module.SCANVAE.loss.

It's True inside compute_elbo. The idea is that compute_elbo computes elbo on the original labels without the classifier. I wouldn't remove this part.

Yes, it's just that feed_labels is not passed into the forward pass inside compute_elbo, so we don't really use that argument.

You can also see in one of our recent test coverage reports that this block is never reached

cc @PierreBoyeau -- at this point I would be careful because we don't want to "correct" something in a way that changes what the default is

I agree. From our previous discussions and due to the current usage of scanvi, I feel like we would need a very good reason - an overwhelming evidence of improvement in terms of integration, to justify “fixing” the scANVI code in scvi-tools.
Pierre
On Jul 3, 2023 at 9:10 PM +0200, Adam Gayoso @.***>, wrote:

cc @PierreBoyeau -- at this point I would be careful because we don't want to "correct" something in a way that changes what the default is
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>

Yes, we certainly don't want to change the default behavior of scanvi, I agree with that.
My point is that feed_labels=True is not the default case in the scanvi loss function, and the only way a user would modify this would be by passing in SCANVI.train(plan_kwargs={"feed_labels": True}. I'm not sure how likely someone is to do this considering there isn't documentation for it.
It also looks like we don't use that argument internally (compute_elbo has that argument defaulted to True but never passes it into scanvae's forward pass). If this isn't intended, then we should be changing this line to:
_, _, scvi_loss = vae(tensors, loss_kwargs={"feed_labels": True}, **kwargs)

Let me know if this makes sense!


Upsert Does not works!!!

I tried using the upsert flag option while updating data into salesforce. It failed saying cannot insert , but it should ideally update since it already exists.

What version of spark connector you are using?
This issue was fixed in 1.1.3

Hi Samuel
I am using com.springml:spark-salesforce_2.11:1.1.0 with databricks Python
3.
Read Code:
sf_soql="SELECT id,ds_status__c FROM DS_Recommendation__c where
ID='a1a1q000000ILDUAA4'"
SF_DF = spark.read
.format("com.springml.spark.salesforce")
.option("username",sfdc_username)
.option("password",sfdc_password)
.option("login",login_url)
.option("soql", sf_soql)
.option("version", "45.0")
.load()
Write Code:
SF_DF.write.format("com.springml.spark.salesforce")
.option("username",sfdc_username)
.option("password",sfdc_password)
.option("login",login_url)
.option("sfObject", "DS_Recommendation__c")
.option("upsert",True)
.save()
Read works and gives me 1 record. It fails to write back into the same
table as update throws below error.
java.lang.Exception: Batch '7511q000002ky9mAAA' failed. Number of
failed records is 1
Py4JJavaError Traceback (most recent call last)  in
() ----> 1 SF_DF.write.format("com.springml.spark.salesforce") .option(
"username",sfdc_username) .option("password",sfdc_password) .option("login",
login_url) .option("sfObject", "DS_Recommendation__c") .option("upsert",True
) .save() /databricks/spark/python/pyspark/sql/readwriter.py in save(self,
path, format, mode, partitionBy, **options) 732 self.format(format) 733 if
path is None: --> 734 self._jwrite.save() 735 else: 736 self._jwrite.save(
path) /databricks/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py
in call(self, *args) 1255 answer = self.gateway_client.send_command(
command) 1256 return_value = get_return_value( -> 1257 answer,
self.gateway_client, self.target_id, self.name) 1258 1259 for temp_arg in
temp_args: /databricks/spark/python/pyspark/sql/utils.py in deco(*a, **kw)
61 def deco(*a, **kw): 62 try: ---> 63 return f(*a, **kw) 64 except py4j.
protocol.Py4JJavaError as e: 65 s = e.java_exception.toString()
/databricks/spark/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py in
get_return_value(answer, gateway_client, target_id, name) 326 raise
Py4JJavaError( 327 "An error occurred while calling {0}{1}{2}.\n". --> 328
format(target_id, ".", name), value) 329 else: 330 raise Py4JError(
Py4JJavaError: An error occurred while calling o342.save. :
java.lang.Exception: Batch '7511q000002ky9mAAA' failed. Number of failed
records is 1 at
com.springml.salesforce.wave.impl.BulkAPIImpl.isCompleted(BulkAPIImpl.java:101)
at
com.springml.spark.salesforce.SFObjectWriter.writeData(SFObjectWriter.scala:44)
at
com.springml.spark.salesforce.DefaultSource.updateSalesforceObject(DefaultSource.scala:154)
at
com.springml.spark.salesforce.DefaultSource.createRelation(DefaultSource.scala:130)
at
org.apache.spark.sql.execution.datasources.SaveIntoDataSourceCommand.run(SaveIntoDataSourceCommand.scala:45)
at
org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:72)
at
org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:70)
at
org.apache.spark.sql.execution.command.ExecutedCommandExec.doExecute(commands.scala:88)
at
org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$1.apply(SparkPlan.scala:146)
at
org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$1.apply(SparkPlan.scala:134)
at
org.apache.spark.sql.execution.SparkPlan$$anonfun$executeQuery$5.apply(SparkPlan.scala:187)
at
org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
at
org.apache.spark.sql.execution.SparkPlan.executeQuery(SparkPlan.scala:183)
at org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:134) at
org.apache.spark.sql.execution.QueryExecution.toRdd$lzycompute(QueryExecution.scala:114)
at
org.apache.spark.sql.execution.QueryExecution.toRdd(QueryExecution.scala:114)
at
org.apache.spark.sql.DataFrameWriter$$anonfun$runCommand$1.apply(DataFrameWriter.scala:690)
at
org.apache.spark.sql.DataFrameWriter$$anonfun$runCommand$1.apply(DataFrameWriter.scala:690)
at
org.apache.spark.sql.execution.SQLExecution$$anonfun$withCustomExecutionEnv$1.apply(SQLExecution.scala:99)
at
org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:228)
at
org.apache.spark.sql.execution.SQLExecution$.withCustomExecutionEnv(SQLExecution.scala:85)
at
org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:158)
at
org.apache.spark.sql.DataFrameWriter.runCommand(DataFrameWriter.scala:690)
at
org.apache.spark.sql.DataFrameWriter.saveToV1Source(DataFrameWriter.scala:290)
at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:284) at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498) at
py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) at
py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:380) at
py4j.Gateway.invoke(Gateway.java:295) at
py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132) at
py4j.commands.CallCommand.execute(CallCommand.java:79) at
py4j.GatewayConnection.run(GatewayConnection.java:251) at
java.lang.Thread.run(Thread.java:748)
On Tue, Jul 2, 2019 at 10:26 PM samuel-pt<EMAIL_ADDRESS>wrote:

What version of spark connector you are using?
This issue was fixed in 1.1.3
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/springml/spark-salesforce/issues/42?email_source=notifications&email_token=AMQDS3JIVGIJ5POS2V5NYKLP5Q2CHA5CNFSM4H4YW43KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZDJUPA#issuecomment-507943484,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AMQDS3NCP52ER6L4HVLDG2LP5Q2CHANCNFSM4H4YW43A
.

@jignesh2012 - Please use 1.1.3 and let us know if you still facing the issue

So it means that other versions dont work?? If there is an issue with this
package, I will prefer to use some other open source package.
On Thu, Jul 4, 2019 at 5:31 AM samuel-pt<EMAIL_ADDRESS>wrote:

@jignesh2012 https://github.com/jignesh2012 - Please use 1.1.3 and let
us know if you still facing the issue
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/springml/spark-salesforce/issues/42?email_source=notifications&email_token=AMQDS3KZGTHOFOKP7I5NWMTP5XUSLA5CNFSM4H4YW43KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZHJFKY#issuecomment-508465835,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AMQDS3LZPEKQZZXFWR32BMDP5XUSLANCNFSM4H4YW43A
.

Fine

Hi Samuel
I was able to geth the bulk working finally.. something was wrong when I
give pkchunking values..
But now i have another issue where the write fails due batch records
exceeded issue .. one where we get 10002 records and Bulk API limit is
10000.
Are you aware of this issue?
Appreciate your help!!!
Thanks
Jignesh
On Thu, Jul 4, 2019 at 5:31 AM samuel-pt<EMAIL_ADDRESS>wrote:

@jignesh2012 https://github.com/jignesh2012 - Please use 1.1.3 and let
us know if you still facing the issue
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/springml/spark-salesforce/issues/42?email_source=notifications&email_token=AMQDS3KZGTHOFOKP7I5NWMTP5XUSLA5CNFSM4H4YW43KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZHJFKY#issuecomment-508465835,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AMQDS3LZPEKQZZXFWR32BMDP5XUSLANCNFSM4H4YW43A
.

Hi @jignesh2012 and @samuel-pt ,
just wanted to know the versions of dependent jars you used and working example for upsert. I am facing an issue very similar to https://github.com/springml/spark-salesforce/issues/45

@samuel-pt , I am able to insert data but when I am trying to update the records using batch process, it is failing. But I am able to update records manually through work bench. Is there any issue with the option I am using as below
SFWrite_DF.write.format("com.springml.spark.salesforce")
.option("username",sfdc_username)
.option("password",sfdc_password)
.option("sfObject", sfObjectName)
.option("login",login_url)
.option("bulk", True)
.option("upsert",True)
.option("version", "45.0")
.save()
Accessing https://tfs-3--beta.my.salesforce.com/services/async/45.0/job/7500v000008xP8PAAU/batch/7510v000006yhIHAAY/result failed. Status 400. Reason Bad Request


fix(frames.js): use image jsx urls instead of data urls

Change Summary

This change replaces the built-in image renderer which uses data URLs with the images worker handler which uses JSX in URLs by default.
Todo

[ ] docs
[ ] add option to use inline images
[x] fallback images route
[ ] customize images handler

Merge Checklist

[x] PR has a Changeset
[ ] PR includes documentation if necessary
[ ] PR updates the boilerplates if necessary

@stephancill what is the status here?


Adding support for other ESD platforms

For those who've bought FTL from the Origin, MS Store or GOG, here's the list of information that is required for the installer to support those platforms.

Where did you buy FTL?
SHA1 hash of FTLGame.exe, before AND after downgrading
SHA1 hash of unmodded (vanilla) ftl.dat
(Optional) If you have installed FTL in the default path, the path to the FTL installation
(Optional) A programmatic method to acquire the path to the FTL installation for your platform
(Optional, GOG) A programmatic method to order GOG Galaxy to downgrade FTL

You may acquire SHA1 hash by issuing a command to the PowerShell: Get-FileHash path/to/the/file -Algorithm SHA1 | Format-List.

Current data matrix

Platform
SHA1: latest FTLGame.exe
SHA1: downgraded FTLGame.exe
SHA1: unmodded ftl.dat
Default installation path
Acquiring the actual installation path
Downgrading method

Steam
✔
✔
✔
✔
✔
✔

GOG
✔
✔
✔

Humble Bundle
✔

✔
✔

N/A

Epic

✔

✔

Origin

✔

✔

Microsoft

✔

✔

After downgrading the FTLGame.exe should match Steam 1.6.9 so it shouldn't be different between systems (with the exception of GoG since it's directly the GOG 1.6.9 version)

A simple patcher could be made between the GOG Galaxy versions if needed, I'm not sure if we'd need to prevent GOG's auto update check or if it's similarly lazy like Steam and doesn't validate the files.

There is a way of launching games from the command line https://pastebin.com/EbyucR6p and there is the sqllite db of all the game info, I haven't been able to find if there's a command to force an install of a specific version but maybe? This might require asking GOG Support or disassembling the galaxyclient.exe to figure it out.

GOG Galaxy ftl.dat will differ between 1.6.13b & 1.6.9 due to it being the actual correct DATs for those versions
Other unmodded vanilla ftl.dat's may differ, best suggestion is just distributing the Steam 1.6.14 ftl.dat or GOG 1.6.9 ftl.dat with the installer.

Here's some data to get started
FTL 1.6.14 (Steam)
FTLGame.exe

MD5: 71e140a788d2f46aeddaed2ba9c57e93
SHA1: c58e5283b2c1996fa36158265423f8c94f3a8954
SHA256: 216ab7ec04af5c9c5d09c9c449d409a4cf0501e6c09c8cf252f650d5674d634c
SHA512: fcd2f5774bdf1ee86f933c94fb38953b51fcad32328b432adb3e9c212927bc434040237c2ae562e26d480a6cb43528fbe7d4299de8943883bb104859c9c54892

ftl.dat

MD5: 3629bb9aead6e589d1d591659a688cd9
SHA1: a0ecc84f16302b8851eff98ab3e01e2f376152d7
SHA256: d7c4744f91f96303c0342b30c2dcb63843050e0f489426200c683d02fb8abc7d
SHA512: 1df75a8cf5db5f9476cea4cbe91ee68277109045eabcd0a431e6419d2dce91b8cf10eb634f39b272d645af340243972299ff2176168c16fc2ac30e0a61342230

FTL 1.6.9 (Steam patched)
FTLGame.exe

MD5: dd47233709fffc14346055a6f9685166
SHA1: 8f23c8e704f793fb108d12c489644b5393c8bc2d
SHA256: 32f1459c22d5f268d323c5cc6ede0a8a704bc13b3a20d0c08b6da097a29c2daf
SHA512: e27254943be2ae7c10d9ea5f7d57052f5efbe89036d3b4329adf9e18341395e54bbd23d9cc8095150753fd63f69aa7231b7ab6cea011b1ff3b0c1151e3dbe4e8

GoG 1.6.13b (still shows as 1.6.13 in the lower right of  FTL)
This is the latest version, installed by default by GOG Galaxy
FTLGame.exe

MD5: a0a1fbfb14352146b24ffcd1961ad1a5
SHA1: 0db27c60ae7986cbeb19ffda3eee6470daf984db
SHA256: b0dda149c1417905c52b4e87009ce58c9232a7fdcf49389777b95e189b3fb788
SHA512: ef340747be4dee70ebcafad19c63886abd9c3e01645b6137aec93e16784ac0859db0047b3162f5c5af74270f0b3024081fdf61277f34e7d95b6f7f0c9c6aa147

ftl.dat

MD5: e0364cf230c1342c20fb56c5caa309fe
SHA1: 2b81ef942c56fd4025ba11eecfd8ac6100de206f
SHA256: 2f2d7107ced7498af188016fc2944e29572d9065119482803e094fc80b306b1d
SHA512: 9b3c7ab2130785f7a1842f11a974caef82008a5b7677b09a640dfff5d331939626ab0322542c14a0549344e280a58d35a4f64b37ca2599dd1a701f1fe4fef0f4

GoG 1.6.9
FTLGame.exe

MD5: 66e4b79bb830bd64bda9277c8d7173f9
SHA1: 609ef1bd507097e2b41bd57b9e81e7f2061aadc2
SHA256: 22b9b062e785b5da01048e0206d540ed648cc66dbe05301904495e1582960630
SHA512: 53e8ff44c04d35355211c7d679ea97fd503a2ff556d2223959cc236befe708ce391ef8ff33f3db2f7a13a9f6c8716ce54d980deb82e9c3ab7ebb0344eab8de99

ftl.dat

MD5: b45d67656c3575f5bba7b88681c04378
SHA1: b7c923866726607d172461454b8904b6d3dfb811
SHA256: f36a6ec07efd451af3ca4c4d48bcaf22fa366991d0540c6e477563cad63e50f9
SHA512: aa328e725ec1099d187916667d982cd610e21a9de0f8b633edeecf6ce6f2bfd4847ab9e4a040ee96122ce401142caaa2872c046c439a097e69d8c91cf8bfd0b2

Humble Bundle (Version 1.6.12)
Default install directory: C:\Program Files (x86)\FTL
FTLGame.exe

MD5: c9c503eb48761a96c12b47bc6eb6cb70
SHA1: b4eae8d8690c8bc7b80def6e8224fb17d34a5083
SHA256: e95f47b7f76b97f105d343daa2ecebb6301fa16a6eed359f0cbf93c707958cd7
SHA512:<PHONE_NUMBER>5e16c65c9f67d155a7dd25cbf818ec44dca53f20b2b42f2fb6ba1d7035bde3bb8b2383497c8d65cd4b59aec7c1303557e7603df2788149426be472

ftl.dat

MD5: 1166d956bb3d02578fa072b7a0006e2e
SHA1: 42270f1e2ab35b4a69fb6c5141a87196a43f9e63
SHA256: d4ae090884d567a7fd148760211b9da85c24a7fe983a9e2ad93b687613fc7830
SHA512: ddf15511e35bb8b587be72f1a3ff5f989dbd8c14f3904a54a430054b7e5b04c4743c2575442898f6976ab19a7dc907e31951c5d33cbf5acdffbe3a0216a0c011

@Nasa62 Thanks for the valuable compendium of those binaries!

From TheSwiftTiger
FTLGame_orig_epic.exe

CRC32: EBFB6528
MD5: 32a48d5047f7935b76908f157956a80c
SHA1: 7b8c4d0657e16edc98b9978bd9a9f851a613573a
SHA256: 6a7187a03fed3ae9d0197f117c329a8e9e974bdd41f84359ca3020308321cc28
SHA512: ae4824d9358cb49d1790c81a85820bb075c2c417dc345eb32f7ba538dbec70fac04baf5acf56be253823c49f3b1323926df788bb9c19d0cf4406ec11052032b6

FTLGame_orig_origin.exe

CRC32: A2EE31A4
MD5: 857041ab1aa6c22679bb32b4382333f4
SHA1: 16c2d7936e9bb5c40672ad7593b5285860b2a5db
SHA256: 3202f9406929e5994a5fdb20bfc43c8d4071babd6d9be8c7c3ac589b46c3b4e5
SHA512: a73d4883ca9e7de638f28d8c9d6dd0eb494ee6c480f836a7019ecdd0fe3167e5819cc5eb853d8519f85f092d843c44c7638c6cabfa7557ee98024122b9581751

Also I could probably make another patch for the HumbleBundle one to downgrade it to 1.6.9 just gotta figure out FLIPS

Thanks again! I'll add support for them briefly.

GoG, default instllation path provided by DarlieZ
C:\Program Files (x86)\GOG Galaxy\Games\FTL Advanced Edition
I didnt test yet though


Watchdog option

@miczyg1 Have you tested what happens if you disable the WDT in the setup menu? You mentioned that it may disable it permanently

@miczyg1 Have you tested what happens if you disable the WDT in the setup menu? You mentioned that it may disable it permanently

Yes I have tested disabling WDT and it works. Eventual misconfiguration I resolved by setting the WatchdogAvilable variable in coreboot to the correct value (based on Kconfig), so misconfiguration is now not possible.


High memory usage on Raspberry Pi4 8GB

Describe the bug
High memory usage on Raspberry Pi4 8GB
The gecko 0.5.7 version I compiled on Raspberry Pi 4 / Ubuntu 20.04 uses high ram.
Expected behavior
Using up to 4 GB of ram
Operating System
Ubuntu 20.04 Server Raspberry V.   On Docker  19.03.12

By submitting this issue I agree to the Terms and Conditions of the Developer Accelerator Program.

Same here. RasPi4 with 8GB. Some two hours into bootstrapping (without ever getting to 'fetched X vertices part'), memory shoots up considerably:

Then it starts to eat up swap space, and the whole computer becomes unusable so I have to stop the node.
Here's the complete log output:
gecko.out.txt
It might be interesting to note that, as far as I can tell, this started happening once I updated to the latest commit on the repo (did a git pull and rebuilt). Haven't noticed that behavior on the official 0.5.7 version (commit tagged with 0.5.7).

Tried bootstrapping again, ended up with runaway memory consumption again, two hours into the process. I am currently unable to run the node.
Attached are the profiles and the output.
profiles.zip

Something interesting happened
When I run the node again the next day, it continued using 1 GB of ram. I think this problem happens when the node first runs, similar problem happened in windows client .

@tolon Have you had this issue on 0.8.0?

Closing this. Thanks for reporting and let us know if you have this issue in the future.


CLATCH OpenCV version?

Hi @komrad36
There is a problem when I compiled the CLATCH. The error is caused by the following:
cv::Ptr<cv::ORB> orb = cv::ORB::create(numkps, 1.2f, 8, 31, 0, 2, cv::ORB::HARRIS_SCORE, 31, 20);

Would you like to tell me which OpenCV version you use to compile the CLATCH?

Hi,
OpenCV 3. If you still have trouble, share more details about the error you
receive.
Thanks,
Kareem
On 28 Feb 2017 08:56, "Yong Yuan"<EMAIL_ADDRESS>wrote:

Hi @komrad36 https://github.com/komrad36
There is a problem when I compiled the CLATCH. The error is caused by the
following:
cv::Ptrcv::ORB orb = cv::ORB::create(numkps, 1.2f, 8, 31, 0, 2, cv::ORB::HARRIS_SCORE, 31, 20);
Would you like to tell me which OpenCV version you use to compile the
CLATCH?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/komrad36/CLATCH/issues/2, or mute the thread
https://github.com/notifications/unsubscribe-auth/AMZ_gtRgkd3b9WMgHV-DkPlzSfbKjuobks5rhCd6gaJpZM4MObL8
.

Thank you for your fast reply. My development environment is based on OpenCV 2.X. Is't possible to replace ORB in OpenCV 3 with  ORB in OpenCV 2.X?

Sure. CLATCH is not dependent on OpenCV at all. The intent of lots of my
work is to improve on OpenCV or the status quo in general. In the CLATCH
project I just use it as an easy way to obtain keypoints. You can replace
that with any other desired method of obtaining them, including OpenCV 2,
my stuff (KFAST and FeatureAngle), or any other method.
On 28 Feb 2017 09:11, "Yong Yuan"<EMAIL_ADDRESS>wrote:

Thank you for your fast reply. My development environment is based on
OpenCV 2.X. Is't possible to replace ORB in OpenCV 3 with ORB in OpenCV 2.X?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/komrad36/CLATCH/issues/2#issuecomment-283048820, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AMZ_gp47enGVpgLnKDzKH_8n_mL3Iw2Aks5rhCsegaJpZM4MObL8
.


Examples of using this in Ember tests?

Hi,
First off, thanks for turning this into an Ember CLI addon! Appreciated.
Second, do you have any examples of how you're using this in your Ember tests? I'm fairly new to testing and struggling with this a bit.
Thanks!
James

Hi @jamesdixon. It is actually  just a wrapper for bower package so:
I add a test helper:
Ember.Test.registerHelper 'stubWebSocket', (app, url)->
  window.WebSocket = MockSocket
  mockServer = new MockServer(url)
  mockServer

then in tests
webSocketServer = stubWebSocket(user.get('id'))
webSocketServer.send(message)
andThen ->
  assertPageIncludes 'Something on the page after message received'

Sorry for coffeescript, but I think you get the idea.

Could you please be kind and link/add some more tests examples? I am as well finding it difficult to get my tests running


Fix clearing of GL depth buffer

Fixes #3202
It seems that the same issue could apply to the stencil and color buffers too (they have their own stencil_mask and color_mask functions which are not reset), but it would take some time for me to test that.
PR checklist:

[ ] make succeeds (on *nix)
[ ] make reftests succeeds
[x] tested examples with the following backends: gl
[x] rustfmt run on changed code

Wow this bot spams, could just notify about forgotten cargo fmt.
Sorry for another rewrite, but to fix the requested non-queued push_cmd I had to refactor push_cmd itself. I separated buffer storage into a separate struct so push_cmd does not need to borrow entire CommandBuffer. This also removes the ugly push_cmd_internal used to avoid borrow errors. If this is too much I can just revert to queueing commands into temporary vec.

Had a hiccup with squash but should be ok now

bors r-
actually, Travis looks really sad

My bad, some errors appeard due to merge with master. Travis succeeded now.


Feedback from Ida-Elin-Simone

1. The most elegant solution in the project was: (explain what and why)
It is a well done extension of the model in question 5, that shows creativity and coding skills. (A little hard to understand though, would be nice with more explanations). Also, all figures are very nicely done, with nice data labels.
2. The hardest section of code in the project to understand was: (explain what)
Error messages in all code in questions 3-5 (nothing could run). However, if we deleted the “discrete=False” part everywhere, it worked again.
In Question 4 it is quite difficult to understand what you are doing, especially in your illustration of how the model fits the data. It would benefit from a longer and clearer explanation of what exactly you are doing, and for what purpose.
3. This part of the project could be better documented: (explain what)
You are not consequently documenting what the functions that you define, do (in the ipynb file). Also you could comment better on the figures in question 4 and 5, since these are quite difficult to understand.
4. An idea for an improvement/clarification could be: (explain what and why)
It is not clear why you impose 0 < sigma < 1 in question 4, as sigma, being an elasticity, could be larger than 1.
Some parts of your code is repeated, e.g., you define the betas from Siminski and Yetsenga again in your estimate function, even though they are already defined in the parameter space at the beginning of the py-file.
You could explain your initial guesses (i.e. why you choose 5 in question 4)
5. An idea for an extension could be: (explain what and why)
An idea could be to present your results found in question 1 in a table instead of in text lines. This would give a better overview of the ratio as well as the combination of sigma and alpha.

Well done with the codes. intuition short and clearly. can´t say anything to question 5 since we make it wrong ;)
Question 4 difficult to understand why you taking 2 different lines in your graph i would rather only show the "grey" line.
(Great you show all the formulas to the questions with the intuition behind) maybe more intuition to question 4 and 5.
Maybe explain why you use 5 in your initial guesses in question 4.
Nothing much feel like overall its a good subject.


Desktop - Add "Check For Update" system menu item

Details

Add a "Check for Updates" system menu item
The "Check for Updates" appears until an update is downloaded (either manually or automatically), then it gets swapped by the "Update New Expensify" system menu item
Since the "Update available" notification is displayed only after an update is downloaded I've included a feedback dialog
The dialog is shown soon after clicking "Check for Updates" and the user is informed whether an update is available and being downloaded, or not update is available right now
Note: As other content (menu items) in desktop/main.js the texts are not localized.
Dialogs, notifications, menus localization is out current scope
Fixed Issues

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

To test in dev (temporarily) add the following file inside ./desktop/dev-app-update.yml
provider: s3
bucket: staging-expensify-cash
channel: latest
updaterCacheDirName: new.expensify.desktop-updater

This would allow the "Check For Update" menu item to work in dev (otherwise the checkForUpdates action fails with an error)
In DEV update checks resolve with no update available (even when there's a new version):

[ ] Verify "Check for updates" menu item appears in DEV
[ ] Verify pressing "Check for updates" shows a dialog with the result shortly
[ ] Verify "Update New Expensify" menu item does not appear

Build the desktop app for staging and/or prod
Since the version in this PR is older there is already a new version and hence an update is available almost as soon as app is launched
If you're quick enough you can tap on the system menu and see the "Check for updates" item before it gets replaced by "Update New Expensify"
(Alternatively go offline before launching App, so that the initial/automatic update check happens while offline, then resume connectivity)

[ ] quickly, as soon as launching App, press on the system menu to see the "Check for updates" option - pressing it should shortly display a dialog that an update is available. The update is being downloaded - sometimes it takes a few minutes, before we get the notification that the update is ready to be installed. At that point "Check for updates" should no longer be displayed in the system menu

[ ] You can discard or not press on the "Update ready" (downloaded) notification and see that "Check for updates" indeed is no longer in the system menu, but "Update New Expensify" is reviewed
[ ] Verify that pressing "Update New Expensify" still works - I couldn't easily check this, perhaps we can leave it for QA, otherwise we'd need to setup local update server
[ ] Verify pressing the "Update ready" notification still works the same way as before - it displays the in-app modal that lets you apply the update ASAP

To simulates that there are no updates available in staging or prod, go to main package.json and set the app version, to the latest released version or newer.
Now build the desktop app and launch it

[ ] Verify the "Check for updates" option appears in the system menu

[ ] Verify pressing it shows a dialog that there are no updates right now

[ ] Verify "Check for Updates" works offline

launch the app offline
press "Check for Updates" - see a dialog explaining the check for updates failed
optionally resume connectivity and retry - now you should get actual results whether update exists or no

QA Steps

Since the version in this PR is older there is already a new version and hence an update is available almost as soon as app is launched
If you're quick enough you can tap on the system menu and see the "Check for updates" item before it gets replaced by "Update New Expensify"

[ ] quickly, as soon as launching App, press on the system menu to see the "Check for updates" option - pressing it should shortly display a dialog that an update is available. The update is being downloaded - sometimes it takes a few minutes, before we get the notification that the update is ready to be installed. At that point "Check for updates" should no longer be displayed in the system menu

[ ] You can discard or not press on the "Update ready" (downloaded) notification and see that "Check for updates" indeed is no longer in the system menu, but "Update New Expensify" is reviewed
[ ] Verify that pressing "Update New Expensify" still works - I couldn't easily check this, perhaps we can leave it for QA, otherwise we'd need to setup local update server
[ ] Verify pressing the "Update ready" notification still works the same way as before - it displays the in-app modal that lets you apply the update ASAP

If by any chance you aren't able to open the menu quick enough you can uninstall the app and install it again
(Due to caching I think the update would appear very fast, but you can still beat it)
An alternative is to disconnect Wi-Fi, then launch App, wait a bit (e.g. 20-30 sec) (for the initial update check to fail), reconnect to Wifi - you should see and be able to interact with the "Check for updates" system menu item

[ ] Verify "Check for Updates" works offline

launch the app offline
press "Check for Updates" - see a dialog explaining the check for updates failed
optionally resume connectivity and retry - now you should get actual results whether update exists or no

PR Author Checklist

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

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

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

[x] iOS / native
[x] Android / native
[x] iOS / Safari
[x] Android / Chrome
[x] MacOS / Chrome
[x] MacOS / Desktop

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

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product was added in all src/languages/* files
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

PR Reviewer Checklist
The reviewer will copy/paste it into a new comment and complete it after the author checklist is completed

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

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

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

[ ] iOS / native
[ ] Android / native
[ ] iOS / Safari
[ ] Android / Chrome
[ ] MacOS / Chrome
[ ] MacOS / Desktop

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

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product was added in all src/languages/* files
[ ] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

https://user-images.githubusercontent.com/12156624/200919148-d70c05d1-3d4b-48ad-8898-866f42ea6cfd.mov

iOS

Android

I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.

Obviously the texts here are a fruit of my imagination so we'll need to update them,
I'll post about that on the original issue

I haven't provided screenshots for all platforms - I just verified they still run/build - as you can see nothing is changed there

Looks good we're waiting for a copy!
https://user-images.githubusercontent.com/85645967/201247752-9c408928-b600-45da-9b6d-a02831f0256b.mov

@kidroca Are we still waiting for copy here?

Still waiting for copy, posted a comment on the ticket

Updated copies, ready for review ✔

During development the app name in the menu is "Electron" and this Electron icon appear as default, for prod/staging the icon would be the Expensify icon like below

Note: there's a lot of code related to updates/auto-updates and creating menu items that can be extracted in separate files

updater.js
appMenu.js

desktop/main.js needs better organization, because it becomes very cluttered/tangled Can we capture a refactor ticket?

Please take this idea to slack, if not already!

In DEV update checks resolve with no update available (even when there's a new version):

[x]  Verify "Check for updates" menu item appears in DEV
[x]  Verify pressing "Check for updates" shows a dialog with the result shortly
[x]  Verify "Update New Expensify" menu item does not appear

https://user-images.githubusercontent.com/85645967/202795226-8dc918da-a844-4957-b960-d33b153abc99.mov

@kidroca
While building for production/staging, should I keep this file ./desktop/dev-app-update.yml or remove it?
Should I add anything else?
I can just clone your branch, and build desktop-staging should do right?

@Santhosh-Sellavel

While building for production/staging, should I keep this file ./desktop/dev-app-update.yml or remove it?

It shouldn't matter, but just to be safe you can deleted it first

Should I add anything else?

No
Depending whether you want to get "Update Available" or "Update Not Available" you can change the main package.json version before building desktop

I can just clone your branch, and build desktop-staging should do right?

Yes

@kidroca Not sure what I am doing wrong, app always crashes when I open the generated desktop build. I was unable to verify update available case alone.

@kidroca Not sure what I am doing wrong, app always crashes when I open the generated desktop build. I was unable to verify update available case alone.

Are you using an M1 mac?
Can you include a screenshot or the content of the crash dialog

@Santhosh-Sellavel
I remember I had a crash after building staging/prod as well
Could you check if this bug report and shared fix solves the crash for you: https://expensify.slack.com/archives/C01GTK53T8Q/p1667938306012479

Thanks, @kidroca It works!

Screen recording
Update Available & unable to check error
https://user-images.githubusercontent.com/85645967/203092549-6dd72f29-93d1-4274-a481-a93426f7b661.mov
No Update
https://user-images.githubusercontent.com/85645967/203098735-2b749b80-f2ad-4503-933b-abd5f50d433f.mov

@kidroca Need some clarification
Please check the above video for updates available flow

For some time Check for updates is disabled, I assume the update is downloading

Yes

When the download is complete there is no notification

Where do you look for notifications?
A system notification like this one should appear
Unless:

you or your mac is in a Focus/DND mode -> in that case you can still see the notification if you check all notification manually
you haven't allowed to receive notification by Expensify

Now Update New Expensify is shown in the menu, but clicking it does nothing. Is this expected for now?

It depends, it should work for QA with the staging app being built by Github Actions (I'll update Test/QA to mention testing this)
The Update New Expensify didn't nothing for me even before the changes in the current PR
I suspect it might be because:

I'm on a M1 mac
When building App electron sign the package with a local signature that doesn't match the signature of the downloaded update
Note: I think we also have to install New Expensify.dmg to applications

I see the following error in the log:
[2022-11-21 18:41:55.924] [info]  Checking for update
[2022-11-21 18:41:56.575] [info]  Found version 1.2.29-6 (url: New Expensify-1.2.29-6-mac.zip, NewExpensify.dmg)
[2022-11-21 18:41:56.576] [info]  Downloading update from New Expensify-1.2.29-6-mac.zip, NewExpensify.dmg
[2022-11-21 18:41:56.587] [info]  Checked for macOS Rosetta environment (isRosetta=false)
[2022-11-21 18:41:56.590] [info]  Checked 'uname -a': arm64=true
[2022-11-21 18:45:27.895] [info]  New version 1.2.29-6 has been downloaded to /Users/kidroca/Library/Application Support/Caches/new.expensify.desktop-updater/pending/New Expensify-1.2.29-6-mac.zip
[2022-11-21 18:45:27.928] [info]  / requested
[2022-11-21 18:45:27.933] [info]  /1849b1493dc-226e.zip requested
[2022-11-21 18:45:27.933] [info]  /1849b1493dc-226e.zip requested by Squirrel.Mac, pipe /Users/kidroca/Library/Application Support/Caches/new.expensify.desktop-updater/pending/New Expensify-1.2.29-6-mac.zip
[2022-11-21 18:45:29.376] [warn]  Error: Code signature at URL file:///Users/kidroca/Library/Caches/com.expensifyreactnative.chat.ShipIt/update.bWoM6v6/New%20Expensify.app/ did not pass validation: code failed to satisfy specified code requirement(s)
[2022-11-21 18:45:29.377] [error] Error: Error: Code signature at URL file:///Users/kidroca/Library/Caches/com.expensifyreactnative.chat.ShipIt/update.bWoM6v6/New%20Expensify.app/ did not pass validation: code failed to satisfy specified code requirement(s)

These items should be tested by QA as we can't simulate updates and applying updates locally
(We actually can, but it would just take a lot more time, instead since QA need to test it anyway it would be better to leave it to them)

Here's a video sample showing the system notification - because I'm in a Focus mode the notification does not appear, but I can see it in "Notifications"
https://user-images.githubusercontent.com/12156624/203119662-6aac38c0-62e9-44c5-8104-9333f6e488d2.mp4
I think since I have the App focused I should just see the in-app prompt that update is available, but that's another out of scope item

@kidroca
It occurs on the main too, yes I am using an M1 Mac.

@kidroca It seems the checks are failing on the PR author list, can ou double check nothing is missing from https://raw.githubusercontent.com/Expensify/App/main/.github/PULL_REQUEST_TEMPLATE.md?

@kidroca It seems the checks are failing on the PR author list, can ou double check nothing is missing from https://raw.githubusercontent.com/Expensify/App/main/.github/PULL_REQUEST_TEMPLATE.md?

@pecanoro Just did and updated the PR with the new list of checks

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by @pecanoro in version: 1.2.31-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@mvtglobally this works for me!

If there's no other way to test this right now - it can just be monitored over time

a "Check For Update" option should exist - it triggers a check "right now" and displays a result prompt (as seen in screenshots)
an "Update New Expensify" option is shown only when update have been downloaded and can be applied

@pecanoro Can you assign me to this issue for tracking payment thanks!

The production deploy comment failed for this PR, but this was deployed to production on v1.2.32-2 on Nov 28.

@pecanoro Can you assign me to https://github.com/Expensify/App/issues/11817 issue for tracking payment thanks!

@Santhosh-Sellavel You are already assigned, am I missing something? 😄

Rory Assigned me after I requested it here!


Suggestion: don't categorize this document as "Getting Started"

https://github.com/NoahStoryM/ctp/blob/e5cf9a1a59c644c0d972b84dd70cad1b5e9ca230/info.rkt#L20
This shows up next to—actually before—the "Getting Started" and "Racket Cheatsheet" on https://docs.racket-lang.org, which makes it seem more official than you perhaps intend.
(But this is only my opinion and not meant to offend. It's a cool project—I don't want to distract newcomers to Racket :P)

Thank you for your feedback. I initially assumed that setting (getting-started) would indicate this document as the starting point for the package itself, but I now realize it determines its placement in the root documentation page alongside other introductory resources. This unintended positioning indeed makes the document appear more official than I intended. What do you think about changing it to (teaching -22)?

No idea on that particular placement. Glad I'm not the only one that finds categorizing hard 😅


Fix for dv offset on issue #21

Offset is outside the bounds of the DataView on line 754

Thanks!


Tools not working in Angular 8

I am able to get the image to show, but editing the image or dicom is the issue. I tried the examples given, but the "activate" and "enable" functions are seen as non-existent on mouseInput and other actions. I saw something that said those lines are no longer needed, and that you add your own tools. I tried that way with "Pan", but nothing happens after implementation. I don't get any errors. It just does not work regardless of the example I've tried. The code I've included is just one attempt I tried with getting a single image to work with Pan tool. The WADOimage stuff in there is left over from attempts to get dicom functionality to work, but I wanted to try one thing at a time.

Can you include code snippets using triple backticks instead of images? If you're using activate and enable, then you're referencing outdated cornerstone-tools documentation.

I'm not using activate or enable. That was from a previous try. Currently I'm using addTool and setToolActive with cornerstoneTools.init()

import $ from 'jquery';
import Hammer from 'hammerjs';
import * as cornerstoneMath from 'cornerstone-math';
import * as dicomParser from 'dicom-parser';
// Cornerstone Libraries
import * as cornerstone from 'cornerstone-core/dist/cornerstone.js';
import * as cornerstoneTools from 'cornerstone-tools';
import * as cornerstoneWADOImageLoader from 'cornerstone-wado-image-loader';
// import * as cornerstoneWebImageLoader from 'cornerstone-web-image-loader'

cornerstoneTools.external.$ = $;
cornerstoneTools.external.Hammer = Hammer;
cornerstoneTools.external.cornerstone = cornerstone;
cornerstoneTools.external.cornerstoneMath = cornerstoneMath;

cornerstoneWADOImageLoader.external.cornerstone = cornerstone;
cornerstoneWADOImageLoader.external.dicomParser = dicomParser;

const config = {
  webWorkerPath : '/assets/cornerstoneWADOImageLoaderWebWorker.js',
  taskConfiguration: {
      decodeTask : {
          codecsPath: '/assets/cornerstoneWADOImageLoaderCodecs.js'
      }
  }
};
cornerstoneWADOImageLoader.webWorkerManager.initialize(config);
cornerstoneTools.init();

@Component({
  selector: 'app-viewer',
  templateUrl: './viewer.component.html',
  styleUrls: ['./viewer.component.css']
})
export class ViewerComponent implements OnInit {

  constructor() { }

  ngOnInit() {
        // Enable Canvas
        const canvas = $('.cornerstone-element')[0];
        cornerstone.enable(canvas);
        // ImageId that matches our registered image loader's 'http:' prefix
        // The webImageLoader uses this to make an xhr request to fetch an image
        // Under the hood, it creates a cornerstone "Image" object needed for display
        const imageUrl = 'https://pubs.rsna.org/na101/home/literatum/publisher/rsna/journals/content/radiographics/2018/'
          + 'rg.2018.38.issue-1/rg.2018170120/20171226/images/small/rg.2018170120.fig9b.gif';
        const wadoImageUrl = 'wadouri:https://www.asteris.biz/Keystone/ImageDownload.aspx?ClinicCode=TESTKEYSTONE&ImageId='
          + 'e9833676-1895-1f7c-1117-ffffff171206&ImageType=DicomImage&FrameIndex=0';
        // const wadoImageUrl = 'wadouri:https://pubs.rsna.org/na101/home/literatum/publisher/rsna/journals/content/radiographics/2018/'
        // + 'rg.2018.38.issue-1/rg.2018170120/20171226/images/small/rg.2018170120.fig9b.gif';
        cornerstone.loadImage(wadoImageUrl).then((image) => {
          // Display our loaded image on the target canvas
          cornerstone.displayImage(canvas, image);

          const apiTool = cornerstoneTools[`${'Pan'}Tool`];
          cornerstoneTools.addTool(canvas, apiTool);
          cornerstoneTools.setToolActive('Pan', { mouseButtonMask: 1 });
        });
  }

}

Here is the same class in the way that you asked to see it. Hope this helps.

const apiTool = cornerstoneTools[`${'Pan'}Tool`];
cornerstoneTools.addTool(canvas, apiTool);
cornerstoneTools.setToolActive('Pan', { mouseButtonMask: 1 });

const apiTool = cornerstoneTools[${'Pan'}Tool];
You're using string interpolation to concatenate two string. You can access the property directly:
const panToolClass = cornerstoneTools.PanTool;
There are two ways to add a tool:
cornerstoneTools.addTool( ToolClass, ToolProps );

cornerstoneTools.addToolForElement( CornerstoneEnabledElement, ToolClass, ToolProps );

The setToolActive call looks okay 👍
Your code becomes:
const PanToolClass = cornerstoneTools.PanTool;
cornerstoneTools.addTool(PanToolClass);
cornerstoneTools.setToolActive('Pan', { mouseButtonMask: 1 });

If you're use case is simple enough, you may want to init cornerstoneTools with globalToolSyncEnabled to avoid common timing pitfalls.
cornerstoneTools.init({
  globalToolSyncEnabled: true,
});

You'll also likely want to shift your library setup logic to a separate module that you call at an appropriate time/place.

The string interpolation was a change for a way I saw in an example. The other method you mentioned was my original way. I was planning to separate this after getting basic functionality to work. I'll try out the globalsync to see if that works. I'm, rewriting an existing app that used an older version of the tools. This link will show what it will eventually be like. http://images.rsna.org/index.html?doi=10.1148/radiol.2019182718&fig=fig1

It looks like the globalToolSyncEnabled works! Is there documentation on timing for this type of thing? I agree that this should be separated with proper timing

@dannyrb

👋 @kuehlc

Is there documentation on timing for this type of thing?

Sort-of-kind-of-not-really.
Cornerstone Tools gives you incredibly granular control over which tools are added, how they're configured, and their current bindings per enabled element. In previous versions of cornerstone-tools this was more evident as most top level API calls required you to specify the enabled element you want to apply the change to.
While having that kind of control is nice, in reality, the majority of our consumers want each enabled element to have the same tools, configured the same way, with the same bindings.
In @3, we created convenience methods like addTool. Normally, when you call addTool, under the hood, it calls addToolForElement for all currently enabled cornerstone elements. However, elements enabled after the addTool call would not have that tool.
When the globalToolSyncEnabled flag is enabled, addTool still calls addToolForElement for all currently enabled elements, but it also tracks the call in an internal ledger. Any elements that are enabled "after the fact" have the same call applied to them. This simplifies things quite a bit for the majority of use cases.


[FE][SYNC-233] Share article page blocks

Description:

Add functionality to share an article block
User can scroll to a specific block directly by using a block query block?={target_block}
Requested feature by @goeetw

Changes:

Added router query parameter block in Article.vue
Add "share" button for each article block
New "share block" modal

Test Scope:

http://localhost:8080/#/article/61a8b3ede87c83de83e105e2?block=61b758fe370b8db0d0b37d72

Screenshots (optional)

Before I was about to merge, I noticed a weird situation in which the scrolling does not scroll to the correct position/height when the address was directly given in the addressbar.
The case was easy to reproduce:
link: http://localhost:8080/#/article/61a8b3ede87c83de83e105e2?block=61a8b774e87c83de83e105f5
case: the current page could not be a SYNC page
expected:

result:

I've spend quite sometime finding out the cause, but couldn't find out the reason. Does anyone have any idea what is going on?

Before I was about to merge, I noticed a weird situation in which the scrolling does not scroll to the correct position/height when the address was directly given in the addressbar. The case was easy to reproduce: link: http://localhost:8080/#/article/61a8b3ede87c83de83e105e2?block=61a8b774e87c83de83e105f5 case: the current page could not be a SYNC page ...

So after a few tests, I found that the position of the block is inconsistent if there are images above. The problem is that images are lazy-loaded in the background. When the article view is mounted, the images just start to load. Therefore, by the time we fetch the reference of the block, it is not in the right place as we expected.
Maybe finding a way to detect whether the images are loaded should work.

Resolved by #72