Export image

Amazing tool!!

Is there any way of exporting the graphs as JPG/PNG ?
Can the dark theme be retained while capturing?
Any way of embedding the graphs on other sites? - without losing interactivity?

Thanks for the feedback @rajvijay68 .
You can get the canvas element and get the PNG as a data url:
const sdcanvas = document.querySelector('.sanddance-gl canvas');
const base64PNGDataUrl = sdcanvas.toDataURL('image/png');

To change the background color, you can use a 2nd canvas:
let darkcanvas = document.createElement('canvas');
darkcanvas.height = sdcanvas.height;
darkcanvas.width = sdcanvas.width;
const ctx = darkcanvas.getContext('2d');
ctx.fillStyle = 'black';
ctx.fillRect(0,0,sdcanvas.height, sdcanvas.width);
ctx.drawImage(sdcanvas, 0, 0);
const darkBase64PNGDataUrl = darkcanvas.toDataURL('image/png');

To embed within another site, you can use an iframe. Go to the Snapshots tab, then create a snapshot. The snapshot will have a link that you can use as the iframe src.

Thank you @danmarshall !
But the data url doesn't seem to be working when using as src of img tag.
Also the theme doesn't change  as mentioned above.
And when we use the iframe of the snapshot, the whole webpage comes, as opposed to what a user might want - only the plot.
Any plans to integrate these features ? These seem very natural right?

If using the data url in an img src, remember to add formatting before the payload:

see https://css-tricks.com/data-uris/
As for the theme, did you try the extra code I provided above, using the 2nd canvas technique? I wrote it for just you, and tested it too, so please give it a try :) Otherwise please let me know exactly what isn't working and provide your own code sample, and we can fix it up.
I like your idea about hosting only the plot. Although without interactivity, is it much better than the screenshot? Perhaps you might add what features would be best for the scenario.

@danmarshall, this is what I get when I use the URL in browser
In firefox

In chrome

I used it as
<img src="data:image/png;base64,[encoded data, 17248 characters]" />
Sorry for this long string, I just wanted to show how I used it.

@rajvijay68 - are you using the app from https://sanddance.js.org/app/ ?

Yes @danmarshall .

Hi @rajvijay68 - I can repro your issue in Firefox. I'll keep looking at why this happens. However, if you execute this code in Chrome:
const sdcanvas = document.querySelector('.sanddance-gl canvas');
const base64PNGDataUrl = sdcanvas.toDataURL('image/png');
copy(base64PNGDataUrl);

Then past in a new tab, it works. Please let me know if it works for you.

Thanks @danmarshall ! It does work on chrome perfectly! And works on firefox too, but the colors aren't retained properly.
Chrome :

Firefox :

Any idea about embedding interactive plots as such on other websites?

The data URL worked for what I needed. Thanks for the tip!

@danmarshall - I'm also getting a blank image - I did the exact code above using react sanddance.
export function snapshotSanddance() {
  const sdcanvas = document.querySelector<HTMLCanvasElement>(
    '.sanddance-gl canvas'
  );

  // The default snapshot is a white background so we
  // have to convert it to be dark background like the app
  const darkcanvas = document.createElement('canvas');
  darkcanvas.height = sdcanvas.height;
  darkcanvas.width = sdcanvas.width;
  const ctx = darkcanvas.getContext('2d');
  ctx.fillStyle = '#070910';
  ctx.fillRect(0, 0, sdcanvas.height, sdcanvas.width);
  ctx.drawImage(sdcanvas, 0, 0);

  return sdcanvas.toDataURL('image/png');
}

and the versions:
    "@msrvida/sanddance-react": "3.0.1",
    "vega": "5.17.0"
<EMAIL_ADDRESS>"8.3.7",
<EMAIL_ADDRESS>"8.3.7",
<EMAIL_ADDRESS>"8.3.1",

@amcdnl you might need to call it in the onAfterRender pass of deck.gl, see https://github.com/microsoft/SandDance/blob/master/packages/vega-deck.gl/src/presenter.ts#L314 and https://github.com/microsoft/SandDance/blob/master/packages/vega-deck.gl/src/presenter.ts#L330

@danmarshall - I don't do onAfterRender as an option in react-sanddance. I figured out the problem though, you need to set preserveDrawingBuffer ( I only know this from doing it in ThreeJS ). After setting that it works great. Thanks!


Remove duplicate packages

Rules out the possibility that install GA and upgrade to latest will point to the same version.
Additional TC's added.
@stevekuznetsov PTAL

LGTM

One comment about typo

@smarterclayton comment addressed

LGTM as well


x1167 (client)—As TS (Katy), I want to use n/a for life stage in all registration pages to accommodate organoid/cell culture work

@sabrine33 if possible that would be great thanks

@khelwood @sabrine33 Harriet tested the file upload and left that column blank and it allowed the upload to happen without that information filled. can you change it so the that column needs to be filled in please? works on the manual version as you have to select one/adult is default

@sabrine33 @khelwood when its upload the display on the lab-ware details page has it as "N/a" can I be picky and get it to display as either "N/A" or "n/a" please:

@KatyTudor, I would if that is the value specified in the file, the client should display 'N/A', if any exist.

@sabrine33 I think when Harriet tested it she also tested the manual registration and that gave the same N/a. I will be updating the form to be dropdown and only allow N/A


remove devcontainer

I'm supportive, but let's poll the Discord before doing this

I asked on Discord last month, no one manifested any interest in keeping it.

I would love to see this remain in the repo, I've relied heavily on it, even if my work is sporadic.

Let's see if we can make this good, so people on other distros can use it without bugs.
But still excluding using it on macOS - unless magically this also gets fixed.


luajit: switch to moonjit

Alpine did so as well:

moonjit is now luajit

Our luajit package switched to the alive moonjit fork which has, among other things, s390x support and actual development.

https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.12.0#moonjit_is_now_luajit

There are so many forks of LuaJIT... which one do we choose? Also, it looks like there's still active development in the original repository? https://github.com/LuaJIT/LuaJIT.

Oh I wongly thought it was a dead project...


API: decrease Y and ZA currents

overview
Small PR, lowering the default Y-axis current from 1.5 amps to 1.25 amps, and the Z/A axes current from 1.0 amps to 0.8amps.
A percentage of stepper-drivers have been overheating on the Y axis during production, and lowering the current on both Y and Z/A axes will decrease the heat built. (also fyi we'll be adding heatsinks to the stepper-drivers in the coming weeks).
These change has been thoroughly tested on 4 machines in the office, testing their accuracy over a 24-hour testing period, and all machines have passed at this new current. The test used on these machines has been added to the tools directory, so it can be used by the production team.
Example calling this 24-hours test (using nohup so it continues after ending ssh session):
nohup python -m opentrons.tools.overnight_test &

Looks like you have some linter errors. I will test this PR on Young-Moon as soon as I get into the office since I have the same hardware revision as most beta users.


ore generation is too aggressive

sulfur overtakes gold in my world seed and is easily one of the most common ores

This is already user-configurable. See oreSulfurSize, oreSulfurRange, and oreSulfurCount in your config/intercontinentalballisticredux-common.toml file.
As for the current default values, I've had no issue. I just ran a test, and in a 3x3 chunk area WorldEdit counted 89 gold ore, 25 diamond ore, and 42 uranium ore. This is, of course, drastically less than the 1761 sulfur ore in the same area, but it shows that sulfur ore is not prohibiting others from generating, and is (as intended) basically replacing stone near bedrock.
If you prefer a different generation pattern, I encourage you to tweak the aforementioned parameters 👍


Compiling help: Couldn't find a included file hxCodec 2.6.1

Which target are you using?
[x] Windows
[ ] Linux
[ ] Mac
Explain your issue
When I try to compile I always get an error message saying "Error: Could not find include file "C:/HaxeToolkit/haxe/lib/hxCodec/2,6,1/vlc/lib/LibVLCBuild.xml" I already installed hxCodec 2.6.1 but it didn't work. I even ran update.bat and installed everything on there. Any help please?

have you already run update.bat?

never mind i fixed it


name should support nested objects

@ts-safeql/check-sql rule supports only first-level objects as db connection handler object.
For example,
connections: [
          { ..., name: 'entityManager' }
]

entityManager.query('SELECT * FROM a')
Ir doesn't support nested objects:
connections: [
          { ..., name: 'this.a.entityManager' }
]

this.a.entityManager('SELECT * FROM a')
A possible solution is to support only the last object, that calls the query method:
connections: [
          { ..., name: 'entityManager' }
]

Will match this.a.entityManager.query(), a.entityManager.query(), entityManager.query()

resolved in 1.0.0


Cleaning the mess and setting project rules - Refactoring / Optimization / Documentation

1 DOCS:

[ ] 1 Create pull request checklist
[ ] 2 Create styleguide and rules for JS code
[ ] 3 Create styleguide and rules for HTML code
[ ] 4 Create "Working with components" docs  with components list
[ ] 5 Create "Working with filters" docs
[ ] 6 Create "Working with stores" docs
[ ] 7 Create "Contribution rules" docs
[ ] 8 Create 'Contributor's starter" docs with basic information about project architecture and where to find what you want
[ ] 9 Add component props example data to documentation

2 CODE:

[ ] 1 Decide which components should be in core and which whould be only in theme (in other words which components aren't connected to defaul ttheme or fashion industry)
[ ] 2 Refactor css mess written by other people to follow CSS project rules
[ ] 3 Move active theme name to config file and add webpack aliases based on this config
[ ] 4 Split repeatable code to reusable components
[ ] 5 Move data processing scripts to services and filters
[ ] 6 Refactor HTML & js code to follow the contribution rules
[ ] 7 Change event-bus.js to index.js and get rid of event-bus/event-bus imports
[ ] 8 Add component props validation
[ ] 9 Remove unused data from 'resource/'

@kacperknapik @mercs600 1.9, 1.8, 1.2, 1.7, 1.3 can be done now, maybe you guys can help?

@filrak I will take 2.7 right now


contributing.md clarfications

remove the extra character in the aws console switch role link. IDK how i missed this....................
Let's add what we need in this PR so that the asset contribution instructions are clear and reasonably self-contained. @LordDeatHunter

TODO: Add a short summary of this guide, with DESTINATION being the Thetawave asset storage.
Also, an updated .gitignore:
.aws/
*.png
*.wav
*.glb


what is the difference of seata-dubbo and seata-dubbo-alibaba？

what is the difference of seata-dubbo and seata-dubbo-alibaba？

It seems same？

oh, I know
one is for old alibaba dubbo
another is for apache dubbo
the spi is different


Add build files

@ear-dev @PrajvalRaval I have added the new build files in this PR

@ear-dev Can you approve and merge? None of us have rights to merge. Thanks 😄


Addexistingpartcount

Just putting this potential contrib in a proper PR.  No worries if you don't want the change.

Resolved conflicts


Pass log level flag to helmfile

See: https://github.com/jenkins-x/jx-admin/issues/51

/close

@ankitm123: Closing this issue.

In response to this:

/close

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the jenkins-x/lighthouse repository.


Validated + Semantic Types are awkward to use

Firstly, this package fills a hole, especially for DDD-style applications where it becomes important to be able to guarantee that a variable is valid. So that's awesome :)
However, using both Validated and Semantic Types together is slightly more awkward than it would ideally be. Both in terms of creating the values, but more so in terms of using them.
Creating a new Validated+Semantic Type is this:
type ValidatedName = VString<`1,300`>;
const nameVSpec: VSpecOf<ValidatedName> = '1,300';
export type Name = SemType<ValidatedName, 'name'>;

Which is fine.
Creating a new instance of it, however, is this:
export function newName(input: string): Name {
  const validatedName: ValidatedName = VString.tryCreate(nameVSpec, input);

  return new SemType({ 'name': validatedName });
}

Which isn't too bad, but feels like it could be a bit easier.
Using it, however, is this:
  const result = newName(input);

  expect(result.value.value).toEqual(expected);

Note the requirement to have result.value.value to dereference the value twice. That's not instantly obvious and just feels a bit clunky.
Given that both SemType and VString are classes, it would be nice if there was some way to get the innermost value in a single step without needing the double de-reference.
Cheers

Hi,
I can make some improvements. I'll let you know in 1-2 days.

Hi,
I have created a new version of the library: 1.7.0
It will contain following new types:

SemVInt
SemVFloat
SemVString

You can use them like this:
import { SemVInt } from 'validated-types';

type HttpPort = SemVInt<'httpPort', '1,65535'>;
const httpPort: HttpPort = SemVInt.tryCreate('httpPort', '1,65535', 8080);
console.log(httpPort.value); // Prints 8080

import { SemVFloat } from 'validated-types';

type LoanInterest = SemVFloat<'loanInterest', '0,100'>;
const loanInterest: LoanInterest = SemVFloat.tryCreate('loanInterest', '0,100', 4.99);
console.log(loanInterest.value); // Prints 4.99

import { SemVString } from 'validated-types';

type LoginUrl = SemVString<'loginUrl', '1,8192,url'>;
const loginUrl: LoginUrl = SemVString.tryCreate('loginUrl', '1,8192,url', "https://server.com");
console.log(loginUrl.value) // Prints https://server.com


Funding, acknowledgement statements are not split into sentences

I've noticed that while the data availability is split into sentences, the funding statement is not. Is this by design or should be implemented?
Example:

		<back>

Funding: This work was supported by the <rs type="funder">National Natural Science Foundation of China</rs> (<rs type="grantNumber">51561009</rs>), the <rs type="funder">Natural Science Foundation of Jiangxi Province</rs> (<rs type="grantNumber">20192BAB206004</rs> and <rs type="grantNumber">20202BAB214003</rs>), the <rs type="funder">Key Research and Development Program of Jiangxi Province</rs> (<rs type="grantNumber">20202BBE53014</rs>), the <rs type="funder">Open Foundation of Guo Rui Scientific Innovation Rare Earth Functional Materials Co</rs>., Ltd.(<rs type="grantNumber">KFJJ-2019-0004</rs>), the <rs type="funder">Doctoral Start-up Foundation of Jiangxi University of Science and Technology<PHONE_NUMBER>10)</rs>, and the <rs type="funder">Foundation of Jiangxi Educational Department</rs> (<rs type="grantNumber">GJJ200832</rs> and <rs type="grantNumber">GJJ190478</rs>).Institutional Review Board Statement: Not applicable.Informed Consent Statement: Not applicable.

			<listOrg type="funding">
				<org type="funding" xml:id="_3wHAxav">
					<idno type="grant-number">51561009</idno>
				</org>
				<org type="funding" xml:id="_NRNDwrU">
					<idno type="grant-number">20192BAB206004</idno>
				</org>
				<org type="funding" xml:id="_uNWJMnb">
					<idno type="grant-number">20202BAB214003</idno>
				</org>
				<org type="funding" xml:id="_2MPuZAy">
					<idno type="grant-number">20202BBE53014</idno>
				</org>
				<org type="funding" xml:id="_B7kBgef">
					<idno type="grant-number">KFJJ-2019-0004</idno>
				</org>
				<org type="funding" xml:id="_tk7RJ29">
					<idno type="grant-number">GJJ200832</idno>
				</org>
				<org type="funding" xml:id="_mCAyMcx">
					<idno type="grant-number">GJJ190478</idno>
				</org>
			</listOrg>

<s xml:id="_9cHCbev" coords="11,167.27,420.46,292.63,8.63">Data Availability Statement: Data sharing is not applicable to this article.</s>

Conflicts of Interest:
<s xml:id="_uN9vzJZ" coords="11,252.96,438.15,165.99,8.63">The authors declare no conflict of interest.</s>

energies-14-08509.pdf

Good question. Maybe we could ask Tim about sentence-level granularity in general in any section. It does come at some cost. Maybe we should support 2 modes.
I don't know what the significance of splitting into sentences is in the system. I know it doesn't play a role in deliverables to customers (unless it influences the rules - e.g. number of sentences with a specific value). It may be primarily for debugging purposes.

I also found that the acknowledgement is not split into sentences. I'm assuming can be the same case.

Digging deeper I notice that the funding statement is correctly split into sentences, however they are lost when it's passed through the acknowledgment/funding parser:

fundingStmt = getSectionAsTEI("funding",
                "\t\t\t",
                doc,
                SegmentationLabels.FUNDING,
                teiFormatter,
                resCitations,
                config);
            if (fundingStmt.length() > 0) {
                MutablePair<Element, MutableTriple<List<Funding>,List<Person>,List<Affiliation>>> localResult =
                    parsers.getFundingAcknowledgementParser().processingXmlFragment(fundingStmt.toString(), config);

                if (localResult != null && localResult.getLeft() != null){
                    String local_tei = localResult.getLeft().toXML();
                    local_tei = local_tei.replace(" xmlns=\"http://www.tei-c.org/ns/1.0\"", "");
                    annexStatements.add(local_tei);
                } else {
                    annexStatements.add(fundingStmt.toString());
                }

Hello, indeed, everywhere the funding-acknowledgement parser is applies, the sentence segmentation is ignored. The reason is that it would require to take into account the (numerous) annotations produced by this model when re-segmenting into sentences, which was not supported by the sentence segmentation (it only supports reference marker annotations).
As the current sentence segmentation is already quite complex, I thought about another approach, a more generic sentence segmentation, which I developed working on the final TEI XML directly and I think supporting any existing and future inline markup - this is available here:
https://github.com/kermitt2/Pub2TEI/blob/master/src/main/java/org/pub2tei/document/XMLUtilities.java#L194
One idea would be to move to this simple generic sentence segmentation, instead of extending and complexifying the existing one.

Hello, indeed, everywhere the funding-acknowledgement parser is applies, the sentence segmentation is ignored. The reason is that it would require to take into account the (numerous) annotations produced by this model when re-segmenting into sentences, which was not supported by the sentence segmentation (it only supports reference marker annotations).

Understood. It become more clear once I saw the TEIFormatter part related to funding and acknowledgments.

As the current sentence segmentation is already quite complex, I thought about another approach, a more generic sentence segmentation, which I developed working on the final TEI XML directly and I think supporting any existing and future inline markup - this is available here: https://github.com/kermitt2/Pub2TEI/blob/master/src/main/java/org/pub2tei/document/XMLUtilities.java#L194
One idea would be to move to this simple generic sentence segmentation, instead of extending and complexifying the existing one.

Sure, at the moment the current segmentation was just extended to avoid URLs being split between sentences (#1097). Because once the offset positions are collected is just a matter of extending the list of forbidden positions.
Since the work to output the URL into the TEI might take some time and substantially more effort, I made two separate PRs (eventually changes in the segmenter might be reverted in this PR).

(as visible on Pub2TEI the other advantage of the generic approach working on TEI XML directly is that it can be applied to any TEI XML from Pub2TEI or from LaTeXML, making possible sentence segmentation consistent for all these sources, even if they introduce unexpected/new markup inline with the text in the future)

About that, I have another question related to it.
I think we would need to have a more generic method to handle and inject customised information, such as, for example notes, URLs, italic/bold (PR #495  - delving into the code of the TEIFormatter, I understood why has not been merged yet 😅 ). Now, see here: https://github.com/kermitt2/grobid/blob/be9e6523d71518544e1394f5be56bda0e55819ef/grobid-core/src/main/java/org/grobid/core/document/TEIFormatter.java#L1521 it's quite complex to add further information so I would try to make a method that does for an eterogeneous number of items.

I think, with this approach (segmenting after the "final" markup is built) we won't be able to generate coordinate for each sentences because we have lost the layout token information after the transformation to XML.
One solution would be to work before the TEI transformation and collect all the item in a list and apply them in order given that they are not overlapping, the same I did here: https://github.com/kermitt2/grobid/blob/0b5e2321737e6c2f9675f10661832b338b58cf54/grobid-core/src/main/java/org/grobid/core/document/TEIFormatter.java#L1570

After few days struggling trying different solutions, I implemented by modifying the processXMLfragment. In this way the sentneces are just reused and the funding-acknowledgment entities are applied on them, rathern than on the stripped text from the paragraph.
This approach also preserve the sentence coordinates and the reference markers that were lost as well.

I've started testing and noticed that in rare cases (although possible), the sentence segmentation, which is performed before the funding-acknowledgment model, result in sentences that fall on funding-acknowledgment annotations.
e.g. The first is the original version, without the sentence segmentation:

        Acknowledgments:

We thank
            <rs type="person">Drs. Carsten Korth</rs> and
            <rs type="person">Nick Brandon</rs> for generously providing anti- DISC1 antibodies.

Here the first sentence falls on the annotation "Drs.Carsten Korth":

        Acknowledgments:

            <s>We thank Drs.</s>
            <s>Carsten Korth and
                <rs type="person">Nick Brandon</rs> for generously providing anti- DISC1 antibodies.
            </s>

I've then worked out a solution that allow merging and updating sentences that are in this situation, including their coordinates.
Here the result:

                    Acknowledgments:

                        <s coords="31,191.82,493.44,63.87,9.57;31,258.46,493.44,280.48,9.57;31,72.00,522.72,81.26,9.57">We thank
                            <rs type="person">Drs.Carsten Korth</rs> and
                            <rs type="person">Nick Brandon</rs> for generously providing anti- DISC1 antibodies.
                        </s>


[ci] Fix relativePath from pom

In reference to #998, making adjustment here which should hit 3.x (master) eventually.

thanks @hazendaz !


fix the encoding issue with through2

related to https://github.com/rvagg/through2/issues/14
I don't have time to debug further again and see what's what, but the thing is some messages are lost without this fix.
Consider the following example:
process.env.DEBUG = 'test'

var debugStream = require('./')('test')
var net = require("net")
var MessageStream = require("irc-message-stream");

var messageStream = new MessageStream

messageStream.on("line", function(line) {
  console.log("Got raw line: " + line)
})

messageStream.on("data", function(message) {
  console.log("Got parsed message: " + JSON.stringify(message))
})

var freenode_conn = net.connect(6667, "orwell.freenode.net")
freenode_conn.pipe(messageStream).pipe(debugStream())

setTimeout(function() {
  freenode_conn.write('NICK debugStreamBot\r\n')
  freenode_conn.write("USER debugStreamUser 8 * :debugStreamRn\r\n")
}, 3000)

to run it do:
npm i irc-message-stream
node example.js

Now run the same example with my fix.
The second time the output should be bigger and you will notice the MOTD (message of the day) is present.
As I said, sorry I didn't have time to figure out what the exact problem again, but it has to do with node core.

debugStream is a passthrough stream so you need to call .pipe(debugStream()).resume() for your example to work. Otherwise the pipeline will be backpressured


Add support for additional languages (Portuguese)

This task is not for doing the actual translation of the app, but to set up the i18n/localization we need before we start implementing anything.
Currently the two languages we need are English and Portuguese.
https://docs.flutter.dev/development/accessibility-and-localization/internationalization

This is already done. Waiting first PR to be accepted to push it and not crash branches again.


Added a tiny bit of error handling

this is legit the tiniest bit of error handling i could've possible added lmao

Gonna add a lot more later


Look at Density or other new secondary compression options

Density promises improved performance over Snappy.

+1 for this. i was going to suggset
there is an issue though that density leaks memory when it encounters corrupt data

There were recently a bunch of commits and releases on density, also besides of lots of other issues the one with the memory leak got closed.
So maybe now would be a good time to have another look on adding density to hap. Unfortunately I doubt I would be capable of doing a commit on this myself.

the biggest issue is that this would break backwards compatibility. So would be best placed for an entirely new HAP codec variant, rather than as an incremental update to existing codec variants.
examples of when this might happen:

HAP v2 (i.e. update all existing codec variants with a set of backwards-compatibility-breaking features)
HAP-L (a new lossless variant - but i presume it would be ideal to consider some gpu-side entropy / quad-tree decoding. Or just rely on improvements in PCIe bandwidth)
HAP-F (A 'fast' version with the same characteristics as an existing codec. probably least likely if snappy isn't the bottleneck)

yeah, I see, that this would be somewhat of an issue.
But on the other hand HAP is a very specialized Codec with a userbase that is pretty aware of handling complex codec details like different encoding flags or codec variants.
And I think such an benificial feature could be easily promoted for quick implementation by most of the developers listed in the supported software.
And as far as I understand this repo should just be just a sample on how to implement the codec based on the HapVideoDraft.md, but actual implementation could vary. For example as seen in the FFMPEG implementation (at least last time I checked) that has no support for HapM or HapY, and is handling the textures a bit differently, what could result in slightly different but visible results.

This also might worth investigating: https://github.com/Blosc/c-blosc

Changing the lossless compression algo is a good idea, will need to see if they are fitted for the DXT data feeded to them.
Side question : what about turning those algo into lossy compression ? i.e. the algo could detect small changes in the input that would perform better compression. Just curious about the artifacts it could generate

Also, is the CPU -> GPU memory transfer a bottleneck in general ? That would mean that a decompression algo that could run on the GPU would increase playback performance

Squash is a compression abstraction library. Implementing squash means you can easily switch between underlying compression codecs (e.g. density, snappy, etc).
Probably not a good idea to use it for HAP since it's probably not a good idea to support a diverse set of compression algorithms in HAP. But they have some amazing benchmark results comparing all the different compression algorithms.
https://quixdb.github.io/squash-benchmark/
NB : doesn't seem like they support blosc just yet
also in terms of lossy encoding : HAP already uses a  DXT texture compression (lossy) which happens in addition to the Snappy compression (lossless). If you want to have a lossy compression algorithm which is directly GPU decoded, then you will probably end up with something similar to h264/h265, which has widespread GPU support for decoding up to 8k resolutions already.
To see what your GPU supports, open Google Chrome and type chrome://gpu/ in the address bar. Scroll down to the Video Acceleration Information section and it will tell you what (lossy) codecs your GPU natively supports, e.g. for a GeForce 1080:

https://quixdb.github.io/squash-benchmark/

It's missing a dataset with DXT textures :p

If you want to have a lossy compression algorithm which is directly GPU decoded, then you will probably end up with something similar to h264/h265

In theory no, HAP without Snappy fits into your definition and a lot of others codecs. We could even create our own codec that is decodable with a custom compute shader. But good idea to look into H264 and compare it to HAP : how many playback can you have at the same time in a real time environment ?
I think this company is trying to do similar stuff than HAP : http://www.binomial.info/

Btw I've just took at look at benchmarks and it looks like density have lower decompression speed (which is most crucial for Hap case I guess) compared to snappy (40Mb/s vs 110Mb/s) in some cases at least - I've chosen the X-ray medical picture dataset.

Also, lz4 looks quite promising

I've made a really quick prototype of Hap with different 2nd stage compressors couple of weeks ago, and I will just post it here, so everyone can work on it further

Hap fork
https://github.com/DemolitionStudios/hap/tree/new_compressors

FFmpeg fork (encoder only)
https://github.com/DemolitionStudios/FFmpeg/tree/hap_new_compressors

`
    { "lz4",        "lz4", 0, AV_OPT_TYPE_CONST, {.i64 = HAP_COMP_LZ4 }, 0, 0, FLAGS, "compressor" },

    { "lz4fast3",    "lz4fast (level 3)", 0, AV_OPT_TYPE_CONST, {.i64 = HAP_COMP_LZ4FAST3 }, 0, 0, FLAGS, "compressor" },

	{ "lz4fast17",    "lz4fast (level 17)", 0, AV_OPT_TYPE_CONST, {.i64 = HAP_COMP_LZ4FAST17 }, 0, 0, FLAGS, "compressor" },

	{ "lz4hc4",    "lz4hc (level 4)", 0, AV_OPT_TYPE_CONST, {.i64 = HAP_COMP_LZ4HC4 }, 0, 0, FLAGS, "compressor" },

	{ "lizard10",    "Lizard (level 10)", 0, AV_OPT_TYPE_CONST, {.i64 = HAP_COMP_LIZARD10 }, 0, 0, FLAGS, "compressor" },

	{ "lizard12",    "Lizard (level 12)", 0, AV_OPT_TYPE_CONST, {.i64 = HAP_COMP_LIZARD12 }, 0, 0, FLAGS, "compressor" },

	{ "zstd1",    "zstd (level 1)", 0, AV_OPT_TYPE_CONST, {.i64 = HAP_COMP_ZSTD1 }, 0, 0, FLAGS, "compressor" },

{ NULL },`

I've used different DDS files to estimate the possible speed impovement over snappy.
LZ4 family compressors and Lizard showed best decompression speed results in my lzbench benchmark - that's why I've decided to go on with trying them inside Hap.
Initially I've though that the performance gain could be 2-3x. Though I did get only roughly 20-30% improvement when used LZ4/Lizard inside 8k*8k Hap video (no chunks), and when many chunks are used it is even smaller. The good news is that Lizard/LZ4HC also tend to give 20-30% smaller file size, while having similar or higher decompression speed compared to Snappy.
My guess is that new compressors work faster with bigger input, though I couldn't fully confirm that with lzbench results yet, so it looks like I'm missing something here.
Some of my DDS compression benchmark results using lzbench:


Getting AssertionError when executing python3 -m pip install flask-socketio fastapi uvicorn datamodel_code_generator

Before proceeding, is there an existing issue or discussion for this?

[X] I have done a search for similar issues and discussions.

OS and version
22.04
Open-RMF installation type
Binaries
Other Open-RMF installation methods
https://github.com/open-rmf/rmf#binary-installation
Open-RMF version or commit hash
2.3.0
ROS distribution
Humble
ROS installation type
Binaries
Other ROS installation methods
No response
Package or library, if applicable
No response
Description of the bug
When executing python3 -m pip install flask-socketio fastapi uvicorn datamodel_code_generator in rmf setup section (https://github.com/open-rmf/rmf), the following error is received

Did I missed out anything?
Steps to reproduce the bug

Follow the instruction in rmf setup section (https://github.com/open-rmf/rmf)
execute python3 -m pip install flask-socketio fastapi uvicorn datamodel_code_generator
datamodel_code_generator will produce the error.

Expected behavior
No response
Actual behavior
No response
Additional information or screenshots
No response

Please refrain from posting screenshots of logs or errors, this makes it difficult to search or selectively copy any meaningful text for debugging, use https://gist.github.com/ instead in the future. As of now, we are unable to see error's entire output.
I believe the issue is that the package is called datamodel-code-generator, could you try python3 -m pip install flask-socketio fastapi uvicorn datamodel-code-generator instead?

Hi @aaronchongth, noted on the screenshot comment.
I have tried the command you suggested, the errors are still the same. The output is as follows
https://gist.github.com/Steven-NYP/b0d86383a9a2322d8cc44ce74ecc60c2

Hello @Steven-NYP! After some internal discussions we have decided that the proper fix is to remove datamodel_code_generator from the main installation instructions, as it is only used in dev. https://github.com/open-rmf/rmf/pull/375 removes it. You can proceed with the installation without it, python3 -m pip install flask-socketio fastapi uvicorn

@aaronchongth, thanks for the update. Installation is working now.


Fix a typo in a path in the resources definition.

Add tox.ini to be able to run the tests of the package to prevent such bugs in future.

@delijati Thank you for the fast reaction and the release.


multiple password reset by user - incorrect rule logic

Describe the bug
Analytic Rule "multiple password reset by user" may have issues with Self-Service password reset service when a match is found in AuditLogs.
To Reproduce

Make this rule trigger for AuditLogs by using the Self-Service password reset service and you will find this in the Evidence>events:
See screenshot 1
Open Evidence> events and check the Total password resets
See screenshot 2
Open Azure AD > navigate to the concerned user > open AuditLogs
See screenshot 3
Here (screenshot 3) you find the actions seen as password reset by the Analytic Rule
*note: Screenshots are from different cases, that explains the time difference, so ignore that ;)

Expected behavior
I would like to see that there is some way in the analytic rule that only checks for a real password reset in the audit logs and considers the status reason (steps) that could be part of a password change process, in this case the Self-Service password reset service
Screenshots
Screenshot 1:

Screenshot 2:

Screenshot 3:

Best option is to avoid records where OperationName "Self-service password reset flow activity progress" is success. I have modified query as below.
AuditLogs | extend User = tostring(TargetResources[0].userPrincipalName), IPAddress = tostring(InitiatedBy.user.ipAddress) | where LoggedByService == "Core Directory" and (OperationName contains "Reset user password" or OperationName contains "Change user password") or LoggedByService == "Self-service Password Management" | summarize StartTimeUtc = min(TimeGenerated), EndTimeUtc = max(TimeGenerated),ActionCount  = countif((OperationName=="Self-service password reset flow activity progress" and Result=="success")==0),IPAddress=make_set_if(IPAddress,isnotempty(IPAddress)) by User,OperationName


Assorted Fixes To Logging System

+ Warnings now printed by flow_fail and at the end of noninteractive flow runs
+ Created warnings.log, errors.log with all warnings and errors
~ Version mismatches now cause the flow to fail, straight up
~ flow_summary.log -> openlane.log
~ Various warning messages updated
~ Version checking moved to prep
~ return -code error added to flow_fail, removed after all flow_fail invocations

Resolves #850

Looks good. But we also need to capture warnings generated by the flow tools.

You can go ahead and do that if you'd like.

Now, what's interesting here is that the macro placement test runs absolutely fine locally but craps itself in CI.  APPARENTLY??? IT WORKS FINE WITH ROOT PERMISSIONS??????
AND NOT THE UID/GID????

Why is this showing up NOW???

Ah, okay. This issue exists when the PDK and the run do not share the same permissions, which causes magic to not read some cells properly and then the DRC goes haywire. This wasn't an issue outside the CI because we ensure the permissions match, but it doesn't work when CI is root. Horrendous dockerism. However, on top of that, it's never been noticed because the Magic DRC check was one of those fabled flow_fails that just forgot to return -code error.
What a mess.


Not starting in Ubuntu

Here's the debug file. Seems to be an issue with sudo npm install not creating ./dist
0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node', '/usr/local/bin/npm', 'start' ]
2 info using<EMAIL_ADDRESS>3 info using<EMAIL_ADDRESS>4 verbose run-script [ 'prestart', 'start', 'poststart' ]
5 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>6 silly lifecycle<EMAIL_ADDRESS>no script for prestart, continuing
7 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>8 verbose lifecycle<EMAIL_ADDRESS>unsafe-perm in lifecycle true
9 verbose lifecycle<EMAIL_ADDRESS>PATH: /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/home/wadi/Desktop/Gravebot/node_modules/.bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
10 verbose lifecycle<EMAIL_ADDRESS>CWD: /home/wadi/Desktop/Gravebot
11 silly lifecycle<EMAIL_ADDRESS>Args: [ '-c', 'node index.js' ]
12 silly lifecycle<EMAIL_ADDRESS>Returned: code: 1  signal: null
13 info lifecycle<EMAIL_ADDRESS>Failed to exec start script
14 verbose stack Error<EMAIL_ADDRESS>start: `node index.js`
14 verbose stack Exit status 1
14 verbose stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/lifecycle.js:239:16)
14 verbose stack     at emitTwo (events.js:100:13)
14 verbose stack     at EventEmitter.emit (events.js:185:7)
14 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/spawn.js:24:14)
14 verbose stack     at emitTwo (events.js:100:13)
14 verbose stack     at ChildProcess.emit (events.js:185:7)
14 verbose stack     at maybeClose (internal/child_process.js:850:16)
14 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5)
15 verbose pkgid<EMAIL_ADDRESS>16 verbose cwd /home/wadi/Desktop/Gravebot
17 error Linux 4.2.0-23-generic
18 error argv "/usr/local/bin/node" "/usr/local/bin/npm" "start"
19 error node v5.8.0
20 error npm  v3.7.3
21 error code ELIFECYCLE
22 error<EMAIL_ADDRESS>start: `node index.js`
22 error Exit status 1
23 error Failed at the<EMAIL_ADDRESS>start script 'node index.js'.
23 error Make sure you have the latest version of node.js and npm installed.
23 error If you do, this is most likely a problem with the gravebot package,
23 error not with npm itself.
23 error Tell the author that this fails on your system:
23 error     node index.js
23 error You can get information on how to open an issue for this project with:
23 error     npm bugs gravebot
23 error Or if that isn't available, you can get their info via:
23 error     npm owner ls gravebot
23 error There is likely additional logging output above.
24 verbose exit [ 1, true ]

Your npm isn't firing postinstall probably due to permission issues. Run npm postinstall and you'll be good to go!

I now get this error when attempting to run 'sudo npm run postinstall'
0 info it worked if it ends with ok 1 verbose cli [ '/usr/local/bin/node', 1 verbose cli   '/usr/local/bin/npm', 1 verbose cli   'run', 1 verbose cli   'postinstall' ] 2 info using<EMAIL_ADDRESS>3 info using<EMAIL_ADDRESS>4 verbose run-script [ 'postinstall' ] 5 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>6 verbose lifecycle<EMAIL_ADDRESS>unsafe-perm in lifecycle true 7 verbose lifecycle<EMAIL_ADDRESS>PATH: /usr/local/lib/node_modules/npm/bin/node-gyp-bin:/home/wadi/Desktop/Gravebot/node_modules/.bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 8 verbose lifecycle<EMAIL_ADDRESS>CWD: /home/wadi/Desktop/Gravebot 9 silly lifecycle<EMAIL_ADDRESS>Args: [ '-c', 'npm run build' ] 10 silly lifecycle<EMAIL_ADDRESS>Returned: code: 1  signal: null 11 info lifecycle<EMAIL_ADDRESS>Failed to exec postinstall script 12 verbose stack Error<EMAIL_ADDRESS>postinstall: npm run build12 verbose stack Exit status 1 12 verbose stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/lifecycle.js:239:16) 12 verbose stack     at emitTwo (events.js:100:13) 12 verbose stack     at EventEmitter.emit (events.js:185:7) 12 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/spawn.js:24:14) 12 verbose stack     at emitTwo (events.js:100:13) 12 verbose stack     at ChildProcess.emit (events.js:185:7) 12 verbose stack     at maybeClose (internal/child_process.js:850:16) 12 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:5) 13 verbose pkgid<EMAIL_ADDRESS>14 verbose cwd /home/wadi/Desktop/Gravebot 15 error Linux 4.2.0-23-generic 16 error argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "postinstall" 17 error node v5.8.0 18 error npm  v3.7.3 19 error code ELIFECYCLE 20 error<EMAIL_ADDRESS>postinstall:npm run build 20 error Exit status 1 21 error Failed at the<EMAIL_ADDRESS>postinstall script 'npm run build'. 21 error Make sure you have the latest version of node.js and npm installed. 21 error If you do, this is most likely a problem with the gravebot package, 21 error not with npm itself. 21 error Tell the author that this fails on your system: 21 error     npm run build 21 error You can get information on how to open an issue for this project with: 21 error     npm bugs gravebot 21 error Or if that isn't available, you can get their info via: 21 error     npm owner ls gravebot 21 error There is likely additional logging output above. 22 verbose exit [ 1, true ]

Why are you running with sudo? Also the bot uses Node 4, not 5.

If I don't use sudo node tells me to run it with admin privileges, and is it really necessary to downgrade to Node 4? The readme says

Install node.js v4.0 or higher

You install node and npm incorrectly if it requires sudo. And no it's not required, but I can't offer full support with node 5.


[4.0] IRGen: Fix partial applies of generic functions capturing the generic parameters in an argument

The code assumed if there is no context object but rather the captured argument
is reused as the context object that the parameter index for this argument is
going to be the last one. This is not true if there are empty types in the
parameter list.
rdar://33502272
Explanation: We would get closure construction wrong (compiler crash) if the closure captured on generic class and an empty type.
The code assumed if there is no context object but rather the captured argument
is reused as the context object that the parameter index for this argument is
going to be the last one. This is not true if there are empty types in the
parameter list.
Scope: The fix addresses this by ignoring empty types in the index calculation
Origination: This got introduced with my fix for restoring generic class captures. It would not have worked before either though.
Reviewed by: John McCall
Testing: A regression test was added to the swift test suite

@swift-ci Please test


Changes to AudioListener.volume affect mouth shape

Currently, when reducing AudioListener.volume, the lips move less and lip movement is exaggerated when increasing AudioListener.volume (for lip sync blend shapes). It appears the data in the OnAudioFilterRead is affected by the volume received by the audio listener.
Would it be possible to for the lip sync volume multiplier to be solely based on the AudioSource volume separate from the AudioListener? I am currently trying to implement a global volume slider, but lip sync is breaking due to this issue.

Update A way around this is to just pass the audio through audio mixers which I probably should have been doing anyway.

Sorry for the late reply. As an alternative, instead of changing the AudioSource volume, you can adjust the Output Sound Gain in uLipSync component.


Does not work with Acumatica 2022 R1 or later...

The connector does not work with Acumatica release 2022 R1 or 2022 R2.  Acumatica has not committed to a timeline for upgrading the connector, and Smartsheet is using this as an opportunity to sell their "Data Shuttle" connector.  Unless  Acumatica or someone else is willing to update and share their solution, this connector is effectively dead.  I find it somewhat surprising that this has fallen to the side so soon given that Acumatica was really promoting it at Summit 2020 and still promotes it on their website.

@ScottMichael-CSS a compatible version will be available for both releases in the upcoming days.

@famadoz  Can you please provide a little more detail on the timeline for this?

All the time Acumatica has no native sub-task capability within Project Accounting / Construction, no planning board for construction and no visual planning tool this integration is much needed. Unfortunately I do not personally have the skillset to keep this maintained. I very much welcome your comment @famadoz and feel your pain @ScottMichael-CSS. I recently received a notification from Acumatica that 2021 R1 is EOL from Jan '23 so it won't be that far in the future that 2021 R2 also goes that way, meaning customers will not be able to upgrade and VARs will be penalised for not keeping their customers up to date with the latest release. I would welcome any comment or suggestion as to how we can resolve this challenge before it becomes a real problem for customers and partners alike whilst we still have a reasonable time window ahead

@ScottMichael-CSS @GrahamTheHat
An updated version for 22R1 and 22R2 is now available

Wow! Thank you @famadoz - very much appreciated. Will deploy today and feed back result later

@famadoz Thanks for your updates above.  I'm getting an error when attempting to get the Smartsheets token from the user profile in Acumatica. When I select ALLOW on the popup I get an error message and am unable to connect Acumatica to Smartsheets.   This occurs in 2022 R1 and 2022 R2.  Any thoughts on remediation?

@ash6872 please share screenshots of the error messages

Hello,
Absolutely, thanks for getting back to me. The error occurs after the “Create New App” in Smartsheets is done and after the credentials  are setup in project preferences screen.   See steps below.

Select GET SMARTSHEETS TOKEN from User Profile page in Acumatica

Click ALLOW in the popup

@.***

Once I click ALLOW I get taken to the Acumatica login screen (for the site I’m already logged into).  I sign in and get this error.

@.***

Show Trace error message

@.***
From: famadoz @.>
Sent: Tuesday, November 15, 2022 4:30 PM
To: Acumatica/Acumatica-Smartsheet @.>
Cc: Hayes, Andrea @.>; Mention @.>
Subject: Re: [Acumatica/Acumatica-Smartsheet] Does not work with Acumatica 2022 R1 or later... (Issue #11)
@ash6872https://github.com/ash6872 please share screenshots of the error messages
—
Reply to this email directly, view it on GitHubhttps://github.com/Acumatica/Acumatica-Smartsheet/issues/11#issuecomment-1315953082, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A4GUIP6MV22WTFR5A3NICTTWIQFHZANCNFSM6AAAAAARNNMHMM.
You are receiving this because you were mentioned.Message ID: @.***>
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.

@ash6872 please replicate the error. After you get it, click on "Show Trace" and send a screenshot of that.
Is there anything particular about this tenant/instance? Is the login managed in the typical way or do you use Active Directory?

@famadoz
When will the 2023R1 version be made available?

Thanks for the work on this and we have it working in 2022 R2. We tried to upgrade to 2023 R1 and it fails publishing in 23R1
[2023-07-26 18:51:40.786] Validating Binary Files
[2023-07-26 18:51:40.926] PX.SmartSheetIntegration.dll Failed to resolve assembly: 'Microsoft.AspNet.SignalR.Core, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
[2023-07-26 18:51:40.942] Fixed binding: EmployeeContract from PX.Objects.PM.ProjectEntry
[2023-07-26 18:51:40.957] Validation failed.
It looks like we need a 2023 R1 Version. Is that possible?
Thanks again!


Circuit breaker false positive

Circuit breaker return false positive when wrapped policy returns no error but status is NOK. It may be related to #24 and #25.

Fixed by #30.


Roadmap update

Roadmap update following latest developments and including new work plan.

Crossing out items don't work fine on axis1 points


Unable to use "go vet" when using "dep ensure"

When I do "dep ensure -v" in order to fech dependencies, the "go vet" command fails with:
vet: /go/src/foo/bar/main.go:4:2: could not import github.com/Sirupsen/logrus (can't find import: foo/vendor/github.com/Sirupsen/logrus)

In order to be able to use the "go vet" command, I need to do a "go get" after "dep ensure"
In attachment: dep_issue.zip in order to reproduce the issue.
$ unzip dep_issue.zip && cd dep_issue && docker run --rm -v "$PWD":/go -w /go golang:1.8.0 ./build.sh
Archive:  dep_issue.zip
   creating: dep_issue/
  inflating: dep_issue/build.sh
   creating: dep_issue/src/
   creating: dep_issue/src/foo/
  inflating: dep_issue/src/foo/lock.json
 extracting: dep_issue/src/foo/manifest.json
   creating: dep_issue/src/foo/bar/
  inflating: dep_issue/src/foo/bar/main.go

-- installing dep --

github.com/golang/dep (download)
github.com/golang/dep/vendor/github.com/Masterminds/semver
github.com/golang/dep/vendor/github.com/pkg/errors
github.com/golang/dep/hack/licenseok
github.com/golang/dep/vendor/github.com/Masterminds/vcs
github.com/golang/dep/vendor/github.com/armon/go-radix
github.com/golang/dep/test
github.com/golang/dep/vendor/github.com/sdboyer/gps
github.com/golang/dep
github.com/golang/dep/cmd/dep

-- dependencies --

Root project is "foo"
 1 transitively valid internal packages
 1 external packages imported from 1 projects
(0)   ✓ select (root)
(1)	? attempt github.com/Sirupsen/logrus with 1 pkgs; at least 1 versions to try
(1)	    try<EMAIL_ADDRESS>(1)	✓ select<EMAIL_ADDRESS>w/1 pkgs
(2)	? attempt golang.org/x/sys with 1 pkgs; at least 1 versions to try
(2)	    try golang.org/x/sys@master
(2)	✓ select golang.org/x/sys@master w/1 pkgs
  ✓ found solution with 2 packages from 2 projects
         b-list-pkgs: 4.345450828s
     b-source-exists:  1.25669774s
  b-deduce-proj-root: 233.292086ms
              b-gmal:  17.279564ms
         select-atom:    381.247µs
             satisfy:    276.092µs
            new-atom:    124.264µs
         select-root:     57.709µs
               other:      7.003µs

  TOTAL: 5.853566533s

Solver wall times by segment:

-- vet --

vet: /go/src/foo/bar/main.go:4:2: could not import github.com/Sirupsen/logrus (can't find import: foo/vendor/github.com/Sirupsen/logrus)
Checking file /go/src/foo/bar/main.go

dep_issue.zip

Seems to be a vet bug instead of a dep issue (https://github.com/golang/go/issues/17571)


Remove allocations by stronger function typing

Turn operator(backend, f, x) into operator(backend, f::F, x) where {F} everywhere to avoid the performance pitfall https://docs.julialang.org/en/v1/manual/performance-tips/#Be-aware-of-when-Julia-avoids-specializing
Simplify allocation testing to have a nicer testset structure instead of parsing the BenchmarkDict

Codecov Report
Attention: Patch coverage is 80.83832% with 32 lines in your changes are missing coverage. Please review.

Project coverage is 90.26%. Comparing base (b341917) to head (32ee478).
Report is 1 commits behind head on main.

Files
Patch %
Lines

...rmarksExt/DifferentiationInterfaceChairmarksExt.jl
75.96%
31 Missing :warning:

src/hessian_vector_product.jl
66.66%
1 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #75      +/-   ##
==========================================
- Coverage   91.88%   90.26%   -1.63%
==========================================
  Files          48       48
  Lines        1638     1653      +15
==========================================
- Hits         1505     1492      -13
- Misses        133      161      +28

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


reduce number of menu items

This is from @andrewgelman, who wants to reduce the number of menu items on the top page in order to focus user search.  The plan will require more clicks to get to some things but there will be fewer choices at each stage.

What should we do about the workshop pages and other "hidden" content?

Any URLs that go away should forward somewhere reasonable or be replaced with a page to manually follow.

Here's the new plan from @andrewgelman:
Home Page
As is.
Top-level Menu Items
These will be the menu choices on the home page and the targets of the menu items:

Interfaces
Documentation
Issues
Community

The first three will remain the same.
Community will get a landing page with links to all the previous pages:

Users list and dev list (was what we called "Community" before)
Bug Reports & Feature Requests
Events
How to Cite & Citations
Team
Developer Resources
Contributions & Supporters

If we can figure it out, it might make sense to have a submenu of some kind.  Otherwise, each of the pages will only have the top-level menu items and it'll be a challenge as to how to lay out that community page index, as it'll require a bit of explanation for each item and some scrolling.
What we have now
Thsi is just an outline of the current site (as of this issue submission):
CAPS are menu pages.  Bold items have their own web page.
HOME

what is Stan
how to get started
how to donate  (remove NuMFOCUS logo and simplify link to contributions)

INTERFACES

Language

RStan, PyStan, ...

Higher Level

RStanArm
ShinyStan

Lower Level

Math library
Stan library

Useful tools

Loo
Bayesplot
rstantools

DOCS

Manual
Example Models
Case Studies
Tutorials

video
web tutorials
papers
books

ISSUES

Bug Reports
Feature Requests
Submit fixes

EVENTS

meetups
talks
courses
cons

COMMUNITY

users group
dev group

CITE

How to cite Stan
Books about Stan
Boosks with examples translated to Stan
Papers about Stan
Papers using Stan
Theses using Stan
Papers using NUTS
Software using Stan
Software using NUTS

TEAM

Core Developers
Alum developers

DEVELOP

suggest or discuss code patches
contribute code patches
to do list and projects
how to join the dev team
source repos

SHOP

US shop
UK shop

SUPPORT

Contribute to Stan
Donors
R&D grants
Industrial consulting

We also have a hidden page that doesn't have a menu item or any links to it from the site:
Workshops

birds
icl_epi
...

I've always found the most frustrating part of the website to be the lack of a table of contents (or something along those lines) at the top of each page. That is, not knowing what's on a page without having to scroll through the whole thing. For example, the current Citations page has "How to Cite Stan" as the header, which is fine, but there's a lot more on the page besides what is described by "How to Cite Stan". There are also books about Stan, papers using Stan, books with examples translated into Stan, etc.
Reducing the number of menu items sounds good to me, but then I think it will be even more important to have a table of contents at the top of each page linked to from the menu since there will now be even more content per page (or at least more content linked to from each page).

Good point.  But I don't like tables of contents.  It seems to
be trying to put a band aid on a problem that's more structural.
What if the pages are shorter, so that "how to cite Stan" and
"citations of Stan" are no longer on the same page?    Of course,
it makes the site deeper, but perhaps easier to navigate.  At least
I think that was Andrew's thinking.

Bob

On Dec 27, 2016, at 4:55 PM, Jonah Gabry<EMAIL_ADDRESS>wrote:
I've always found the most frustrating part of the website to be the lack of a table of contents (or something along those lines) at the top of each page. That is, not knowing what's on a page without having to scroll through the whole thing. For example, the current Citations page has "How to Cite Stan" as the header, which is fine, but there's a lot more on the page besides what is described by "How to Cite Stan". There are also books about Stan, papers using Stan, books with examples translated into Stan, etc.
Reducing the number of menu items sounds good to me, but then I think it will be even more important to have a table of contents at the top of each page linked to from the menu since there will now be even more content per page (or at least more content linked to from each page).
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Yeah I have no particular love for tables of contents, so if we can solve
the problem I described a different way that would be fine from my
perspective. More pages with less content per page is probably better than
having ToCs everywhere. As long as it's possible to know what information
the cite provides (at a high level) without actually having to scroll to
the bottom of a lot long pages it will be an improvement
On Tue, Dec 27, 2016 at 5:09 PM Bob Carpenter<EMAIL_ADDRESS>wrote:

Good point. But I don't like tables of acontents. It seems to
be trying to put a band aid on a problem that's more structural.
What if the pages are shorter, so that "how to cite Stan" and
"citations of Stan" are no longer on the same page? Of course,
it makes the site deeper, but perhaps easier to navigate. At least
I think that was Andrew's thinking.

Bob

On Dec 27, 2016, at 4:55 PM, Jonah Gabry<EMAIL_ADDRESS>wrote:

I've always found the most frustrating part of the website to be the
lack of a table of contents (or something along those lines) at the top of
each page. That is, not knowing what's on a page without having to scroll
through the whole thing. For example, the current Citations page has "How
to Cite Stan" as the header, which is fine, but there's a lot more on the
page besides what is described by "How to Cite Stan". There are also books
about Stan, papers using Stan, books with examples translated into Stan,
etc.

Reducing the number of menu items sounds good to me, but then I think it
will be even more important to have a table of contents at the top of each
page linked to from the menu since there will now be even more content per
page (or at least more content linked to from each page).

—

You are receiving this because you authored the thread.

Reply to this email directly, view it on GitHub, or mute the thread.

—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/stan-dev/stan-dev.github.io/issues/27#issuecomment-269389684,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AHb4Q3zV5H2UKKsnnj-pqTlF-PZG1clCks5rMYyggaJpZM4LWZ_R
.

@jgabry on the mailing list suggested that we not have deep nesting on a page like on the current citations and docs pages (where you have to scroll down to see what's there).  One solution would be a table of contents on each page and another would be shorter (but more deeply nested) pages.


Add docker image for running zhmccli

Use the approach from zhmc-prometheus-exporter (PR https://github.com/zhmcclient/zhmc-prometheus-exporter/pull/579)

Probably creates interesting questions such as how to save the session env vars. I think this idea needs to be postponed, at least until it is clear whether issue #580 has an outcome.


Nested elements with tooltip

Hi!
I have 2 divs with tooltips

but when I move cursor from child div to parent div tooltip data doesn't change
this is how it looks: https://prnt.sc/10h83bt
reproducible demo: https://codesandbox.io/s/react-tooltip-example-3116-forked-kh0oy
is there a way to solve this?

How i can use ReactTooltip.show(productRef.current); and ReactTooltip.hide(productRef.current); in "react-tooltip": "^5.26.4", Because my nested div element doesn't work.

How i can use ReactTooltip.show(productRef.current); and ReactTooltip.hide(productRef.current); in "react-tooltip": "^5.26.4", Because my nested div element doesn't work correctly.

@XDSeverussnape please open a new issue with some more details, and possibly with sample code to reproduce your problem.


small edit for conciseness

This looks good, but in the future this can just be a slight change that goes in with another branch. Spend more time focusing on visual changes to the live website rather than minor style adjustments. Thanks!


Show if Formula for Container Elements

Is your feature request related to a problem? Please describe.
I want to build a modular dashboard with a few container elements and an user should be able to choose if a specific container is visible for him or not.
Describe the solution you'd like
I extended the user table with an additional boolean field "show_current_tasks". Now it would be great if I could reference to this field in a Formula for a container but currently I can only select in the Show-if configuration which roles can view the element and not under which additional conditions.
Describe alternatives you've considered
Currently without alternative.

A cleaner way without the need for this nested views would be the formula field for container-elements in page edit forms.

+1👍
Also, the formula should have custom functions(in the constants and function code) available in the scope

I need this feature too! Thanks for posting!


Adding quick start doc section

Hello.
I found this project recently and it looks like it's well written and works as expected. But I think it lacks such dead-simple quick start guide for those who want to download and start using it immediately without digging into examples. This quick start guide should answer on every question developer may have to start working with it (imports, component name, prop types).
Thanks!

@Sapphire64 this is awesome, thanks!


Change default port

The default port 9129, is allocated to HAProxy log exporter, see https://github.com/prometheus/prometheus/wiki/Default-port-allocations. Either we should switch to the next free one (9181, currently), or possibly overlap with node_exporter, if this is intended as a Windows replacement.
I'd prefer a unique port, opinions?

lets go with a unique port


add CommuteMinimumDepth transpiler pass

Summary
Optimizes conversion from DagDependency to a DagCircuit to have as little depth as possible. A new transpiler pass, named CommuteMinimumDepth, is also introduced.
fixes #7387
Details and comments
This optimization is done by finding the depth of each node in the DagDependency via a depth-first-search, and then adding each node to the resulting circuit in order of it's depth from least to greatest. This DFS is done through python and not rustworkx because the DFS in some cases has to test the same edge multiple times, which I'm not sure if rustworkx supports.
The transpiler pass just converts a DagCircuit into a DagDependency and then back into a DagCircuit.
Please let me know any fixes I have to make as this is my first time contributing to this repository.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@ajavadia, @kdk  Pinging you because you were involved with the original issue, I think I am ready for review.

@Baritra1, thank you for your contribution! A depth reduction pass is certainly very useful.
This is not a complete review, just a few questions and suggestions:

Do I understand correctly that the depth of a node in DAGDependency (as computed by the function node_depths) follows the standard definition: a depth of a node is the length of the longest path to that node from an input node? Suppose that all of the nodes commute, for instance consider the quantum circuit CX(0, 1) CX(0, 2) CX(0, 3) CX(0, 4) CX(0, 5). The corresponding DAGDependency has no edges and the depth of every node is 0, do you agree?
In particular, there is no guarantee that a node with depth d in DAGDependency will also have depth d in QuantumCircuit/DAGCircuit constructed by adding nodes sorted by their depths. The problem is that the nodes in the same layer of the DAGCircuit must be over pairwise disjoint qubits. I believe I saw examples where the DAGCircuit depth becomes worse by converting the DAGCircuit to DAGDependency and back.
You do not need recursion to compute depths, you can simply examine nodes in topological order and set depth(node) = max depth(child) + 1.
You should also consider circuits with conditional gates and control-flow blocks.
At the moment you only have tests for the optimization pass. It might be nice to also add tests for dagdependency_to_circuit and dagdependency_to_dag. I am wondering if we can do something better than greedy.

BTW, I have toyed with similar ideas myself; please see #8319 and the heuristic greedy algorithm `collect_parallel_blocks``.

@alexanderivrii I apologize for the long silence.
Yes, the depth of a node in DAGDependency follows the standard definition. I definitely didn't do enough stresstesting with this commit, I now see that my commit can result in worse DAGCircuits.
I am now thinking of a different approach, and wanted to get your feedback on it.

We can look at the DAGDependency nodes in topological order and store for each node the closest index that is a parent node.
Then, for each node, look for other nodes that are pairwise distinct and move them to be after the original node. If this involves moving the node before any of it's parent nodes, do not execute the swap (this should maintain that the circuit does not get changed in the process of the optimization).
-Then, convert the nodes back to a DAGCircuit. This should result in more dense layers, which should reduce the number of layers in the resulting DAGCircuit.

I am worried about the efficiency of this approach, as I feel like there should be a faster way to do this. Do you have any ideas?


[ncnn] Support Vulkan feature

Resolve #35350

[x] Changes comply with the maintainer guide.
[ ] SHA512s are updated for each updated download.
[ ] The "supports" clause reflects platforms that may be fixed by this new version.
[ ] Any fixed CI baseline entries are removed from that file.
[ ] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

Feature ncnn tested successfully in the following triplet:

x86-windows
x64-windows
x64-windows-static
x64-linux


Face detection using dlib hog

Related Issuse or bug

Info about Issue or bug

Fixes: #46
Additional Info

The face detection using dlib hog is performed on the image and is displayed in README.md file

https://github.com/akshitagupta15june/Face-X/tree/master/Face-Detection here

https://github.com/akshitagupta15june/Face-X/tree/master/Face-Detection here


Default Credentials

Cant find credentials. Was able to package it and run but can not login. Nice application btw

Thanks,
As in the DBUtility.java file you can see the credentials. It was defined as root for the user and admin for the password.


mismatched version of api for DNS-A Records

Hello,
I was using Terraform recently to set up resources on Azure, but by recreating the cluster, I get some errors of not matching APIs now.
I tried the latest version of Terraform, which plugin imports this repository.
The message I got was the following:
azurerm_dns_a_record.tectonic-worker.1: dns.RecordSetsClient#CreateOrUpdate: Failure responding to request: StatusCode=400 -- Original Error: autorest/azure: Service returned an error. Status=400 Code="InvalidApiVersionParameter" Message="The api-version '2016-04-01' is invalid. The supported versions are '2017-06-01,2017-05-10,2017-05-01,2017-03-01,2016-09-01,2016-07-01,2016-06-01,2016-02-01,2015-11-01,2015-01-01,2014-04-01-preview,2014-04-01,2014-01-01,2013-03-01,2014-02-26,2014-04'."

Concerning arm/dns/recordset.go for example in this repository, the APIVersion is set to 2016-04-01.
I would be glad if a solution could be found to make the sdk and terraform working again.

Howdy @grundrauschen, thanks for reaching out!
There are a couple of things that could be wrong, would you mind helping speed up triage by including a small repro? Mostly, I want to determine if the Go SDK is targeting the wrong endpoint or if there is a fundamental flaw in the Swagger that defines the interactions with this service. That file can be found here:
Azure/azure-rest-api-specs/specification/dns/resource-manager/Microsoft.Network/2016-04-01/dns.json

Hey @grundrauschen

I tried the latest version of Terraform

In addition to what Martin has said, I just wanted to double-check a couple of things - are you referring to Terraform 0.9.11, or Terraform 0.10-rc1 with 0.1.4 of the AzureRM Provider here? In addition - which Azure region are you using out of interest?
@marstr taking a look at the error message posted above, the final version number listed in the supported versions looks suspicious to me: 2014-04 - could it be this is incorrect in this region? I'd noticed this previously and assumed it was the string being truncated - but perhaps not? ¯_(ツ)_/¯
Thanks!

Hello @marstr,
I used Terraform 1, which recently split up the components, so there is a new repo for the AzureRM plugin 2. Because I used it yesterday with a fresh initialization, I assume, the latest release of the the plugin was used (0.1.4).
The architecture I tried to initialize with it was a Kubernetes cluster using the Tectonic installer 3, which basically contains a bunch of terraform recipes.
Because we used the tools in a quite vanilla way, I hope the links are sufficient. If not, I am happy to try to help you with the unclear points.

@tombuildsstuff
Sure,
The error message above describes the behaviour of Terraform 0.10.0-rc1 with the 0.1.4 Azure Provider. I also tried out to use 0.9.11 before, but this resulted in the same error, but with a different version string (2015-05-04-preview)
I used Azure region West Europe for the tests yesterday, but a college of mine found the bug last week using 0.9.11 on West Europe and Azure Germany Region Northeast. Running them before (last time we recreated the cluster was round about 3 weeks ago) worked fine though.

this might be related to: https://github.com/terraform-providers/terraform-provider-azurerm/issues/192

Okay this is weird, according to the az cli the version should be supported:
$ az provider show --namespace Microsoft.Network | jq '.resourceTypes[]|select(.resourceType|startswith("dnszones"))'
{
  "aliases": null,
  "apiVersions": [
    "2016-04-01",
    "2015-05-04-preview"
  ],
  "locations": [
    "global"
  ],
  "properties": null,
  "resourceType": "dnszones"
}
{
  "aliases": null,
  "apiVersions": [
    "2016-04-01",
    "2015-05-04-preview"
  ],
  "locations": [
    "global"
  ],
  "properties": null,
  "resourceType": "dnszones/A"
}
{
  "aliases": null,
  "apiVersions": [
    "2016-04-01",
    "2015-05-04-preview"
  ],
  "locations": [
    "global"
  ],
  "properties": null,
  "resourceType": "dnszones/AAAA"
}
{
  "aliases": null,
  "apiVersions": [
    "2016-04-01",
    "2015-05-04-preview"
  ],
  "locations": [
    "global"
  ],
  "properties": null,
  "resourceType": "dnszones/CNAME"
}
{
  "aliases": null,
  "apiVersions": [
    "2016-04-01",
    "2015-05-04-preview"
  ],
  "locations": [
    "global"
  ],
  "properties": null,
  "resourceType": "dnszones/PTR"
}
{
  "aliases": null,
  "apiVersions": [
    "2016-04-01",
    "2015-05-04-preview"
  ],
  "locations": [
    "global"
  ],
  "properties": null,
  "resourceType": "dnszones/MX"
}
{
  "aliases": null,
  "apiVersions": [
    "2016-04-01",
    "2015-05-04-preview"
  ],
  "locations": [
    "global"
  ],
  "properties": null,
  "resourceType": "dnszones/TXT"
}
{
  "aliases": null,
  "apiVersions": [
    "2016-04-01",
    "2015-05-04-preview"
  ],
  "locations": [
    "global"
  ],
  "properties": null,
  "resourceType": "dnszones/SRV"
}
{
  "aliases": null,
  "apiVersions": [
    "2016-04-01",
    "2015-05-04-preview"
  ],
  "locations": [
    "global"
  ],
  "properties": null,
  "resourceType": "dnszones/SOA"
}
{
  "aliases": null,
  "apiVersions": [
    "2016-04-01",
    "2015-05-04-preview"
  ],
  "locations": [
    "global"
  ],
  "properties": null,
  "resourceType": "dnszones/NS"
}

Just an observation, but it looks like even the .NET SDK is still hardcoded to that version which was just deprecated. This could be a wider problem than just in this SDK.
https://github.com/Azure/azure-sdk-for-net/blob/master/src/ResourceManagement/Dns/DnsManagement/Generated/RecordSetOperations.cs#L249

@grundrauschen @discordianfish in that case would it be possible to confirm if the Terraform configuration posted here works for you, separate from Tectonic?
I've confirmed this works in West Europe, but I currently don't have access to Azure Germany to verify that (I've been trying to look into that this week)
Thanks!

@tombuildsstuff Thanks! But we decided to give up on Azure and move to AWS and our private cloud.. Thanks anyway.

As far as I'm aware, we don't deliberately drop support for API Versions at the service level. This is very troubling behavior. It sounds like the immediate need is outside of the scope of this repository, I'll forward on this complaint to the appropriate service teams so that they can diagnose the issue.
Thanks for getting back to me with your usage details, @grundrauschen. Sorry to hear you decided to move away from Azure, @discordianfish!

Hey @grundrauschen
We've just had a similar issue opened on the Terraform Repository but for Managed Disks (https://github.com/terraform-providers/terraform-provider-azurerm/issues/223) and in that case a Resource Group ID was specified in place of a Resource Group Name - which returned an error similar to one you're seeing.
Would it be possible to see the Terraform Configuration that you're using to confirm if this is the same issue? I've opened https://github.com/terraform-providers/terraform-provider-azurerm/issues/228 which proposes adding validation to check the Resource Group Name is a Name and not an ID
Thanks!
cc @marstr

Hey @tombuildsstuff,
I was on holidays the last weeks and therefor haven't read you message. I am sorry for that.
I am in the same team as @discordianfish, so because the company stopped the efforts on Azure, this problem is not blocking anymore.
It seems that nobody but us had the same issue here and Terraform as well as the Tectonic installer are moving forward.
Therefor I would suggest to close this ticket as obsoleted by events and if we investigate using Azure with Terraform again and stumble upon the same issue to reopen it, but until then not blocking any resources here with an open ticket.

Thanks for getting back to us with this, @grundrauschen. As you suggest, I'll close this issue out for now.


I am having one application with prisma1  there i am deploying schema to MYSQL.

I am having one application with prisma1  there i am deploying schema to MYSQL.
in another application i am using Prisma2 i want to deploy my schema to same Db which i used to deploy for Prisma1.
I tried same scenario  but at migration time of Prisma2 all table related to prisma1 is deleting and I am getting only prisma2 migration related table.
Help me to handle this scenario.
Thanks
Originally posted by @rahulybisen in https://github.com/prisma/prisma/discussions/5492

Duplicate of https://github.com/prisma/prisma/discussions/5492


[PROTOTYPE] RTL Support

RTL stands for right-to-left. Only a few languages use RTL text direction, but over a billion people use them.
Browsers support RTL direction via dir attribute and direction CSS property.
While DOM layout direction is automatically flipped by the browser, directional styles are not. For example, margin-left should usually be converted to margin-right and vice versa. Also, icons which have directional meaning, such as arrows, have to be flipped.
There are ways to compile an RTL version of SLDS styles. An RTL SLDS icon sprite will also be available. When DSR uses RTL SLDS styles and icons, several issues have been identified:

Icon should use RTL SLDS icon sprite
align prop of Dialog, Menu, and ComboBox has to be flipped
Left/right keyboard navigation has to be flipped because DOM layout is flipped

Note that the above list may be incomplete, but is the MVP.
High-level impl proposal
Introduce new components to support RTL:

a global Settings component (similar to IconSettings) which will contain setRTL() and isRTL() methods.
a private Higher Order Component (HOC) for each RTL component. The HOC will be used to wrap the SLDS React component. The HOC will check Setting.isRTL() and flip directional props accordingly on the wrapped component.

consumers will use the HOC in place of regular components.
composed DSR components which use other DSR components internally will have to use HOCs in place of regular components.
hard-coded alignments have to be converted to props

keyboard navigation handlers have to check Setting.isRTL()

Scope
The initial scope will include the following components:

Icon (use RTL sprite)
ComboBox (flip alignment)
MenuDropdown (flip alignment)
DatePicker (keyboard navigation)
ColorPicker (keyboard navigation)

I'm think I'm better understanding our conversation earlier. They already have onClickOutside, so we we could add another HOC.
Exploring the react-with-direction makes me wonder if we need to add wrapping span or div around components with a dir attribute on it. Do you know if that is needed? I'd guess that flips the built in  tags like
. I think we could just put it on the outer div of the "normal component," too.
As far as nested components go (such as Icon in a Combobox menu item), you are right--we'll want to use something like LanguageDirection(<Icon>)
The more I'm thinking about icon and all the "low level" places it is used--it makes me want to simplify the code and just export all icon ass in their default export as LanguageDirection(<Icon>).
I'm looking at https://github.com/airbnb/react-with-direction This also might be closer to what you originally proposed to me when were talking in San Francisco.
@minevskiy Could you provide some code samples to clarify?
I believe the React 16.3 Context now has publish/subscribe observables built into it, react-with-direction is using the old syntax.
import { DIRECTIONS } from 'components/utilities/private/direction-settings';
<DirectionSettings direction={DIRECTIONS.RTL}>
    <Combobox />
</DirectionProvider>

import LanguageDirection, { DIRECTIONS } from 'components/utilities/private/direction';

function MailForwardsLabel({ direction }) {
  return (

      Mail Forward
      {direction === DIRECTIONS.LTR && }
      {direction === DIRECTIONS.RTL && }

  );
}
ForwardsLabel.propTypes = {
// not publicly listed, but HOC passes in `direction="right"` prop
};

export default LanguageDirection(ForwardsLabel);

Would you prefer to just wrap the the default exports of those components?

We don't need to add dir='rtl' attribute - it will be added by consumers.
It's typically on the  node, but we do need a way to override the direction for certain branches of the React tree. Essentially, some components will not support RTL and will always render in LTR. This is achieved by hard-coding dir='ltr' on roots of such branches.
Having a single LanguageDirection HOC is what I was proposing in our conversation earlier. It is more manageable than having an HOC per component (which would flip component-specific props) at the expense of the component being aware of language direction. However, components which need to flip keyboard navigation will have to be aware of direction anyway.
I agree that code will be simpler if we just exported the wrapped version.
components/utilities/private/direction/direction-settings.jsx
export const DirectionSettings = React.createContext('ltr');

Consumer code
// ComboBox is wrapped with LanguageDirection
import { ComboBox } from 'components/combobox';
import DirectionSettings from 'components/utilities/private/direction/direction-settings';

<DirectionSettings.Provider value={document.querySelector('html').dir}>
	// use document direction
	<Combobox />

	<DirectionSettings.Provider value="ltr">
		// hard-coded to ltr
		<Combobox />
	</DirectionSettings.Provider>

</DirectionSettings.Provider>

components/utilities/private/direction/language-direction.jsx
export default function LanguageDirectionHOC(WrappedComponent) {
	const componentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';
	return class LanguageDirection extends Component {
		static displayName = `LanguageDirection(${componentName})`;
		static contextType = DirectionSettings;

		render() {
			let { props } = this.props;
			props.direction = this.context;
			return createElement(WrappedComponent, props);
		}
	};
}

combobox/index.jsx
import onClickOutside from 'react-onclickoutside';
import LanguageDirection from 'components/utilities/private/direction/language-direction';
import Combobox from './combobox';

export default LanguageDirection(onClickOutside(Combobox, {
	excludeScrollbar: true,
}));

combobox/combobox.jsx
import { DIRECTIONS } from 'components/utilities/private/direction/direction-settings';

getDialog({ menuRenderer }) {
	const align = this.props.direction === DIRECTIONS.RTL ? "bottom right" : "bottom left";
	return (
		<Dialog
			align={align}
			...
		>
			{menuRenderer}
		</Dialog>
	);

I agree this is the right approach. Thank you for being patient with me to come around. 🙏  I'll take a closer look at the detailed API tonight.

API is approved.
Let's be sure to documents in comments in the source about the expected html dir='rtl' so folks know how it's needed. We can probably have some Storybook examples with a div dir='rtl' wrapper, too.

@interactivellama I chatted with @minevskiy and I'll pick this up.

Sounds good.

Chatted with @interactivellama about the use of /private folder. The idea is that we don't want to make RTL a publicly supported feature. What we'll do is to prefix the component with UNSAFE_, similar to what React does with legacy life cycles methods instead of being in a /private folder. That should avoid confusion about the consumption of features from the /private folder in client code.

@davidlygagnon Thank you for suggesting another way to caution consumers.


different models were generated with the same input files

I really appreciate your hard work and dedication in creating this project.
In my case, several different models were generated separately when I used the same antibody-antigen sequence. So, how should I rank these models? Which one is more reliable?

Hi @cryingmyth,
We just released, as part of version 0.3.0 a confidence model. This adds confidence metrics for the predictions. The model will already sort predictions based on the confidence_score but you can also try to directly use the specific inter-chain ipTM relevant for your antibody-antigen interaction.
I hope this helps!


Video feed broken in iOS 14

I have not seen much about this, so I thought I would start a topic here. I have tested this both in QuaggaJS and Quagga2 with the same results.
After updating a device to iOS 14, the video feed appears as a thin line up the center of the display

I also tried looking at the examples on quagga's site, and it does the same thing for most of them. However, the "Scan barcode to input-field" does seem to display the video correctly, though I wasn't able to get it to actually scan anything.
I will continue to test things and update this as I find anything.

hmm.  "Scan barcode to input-field"?  Which example/demo is that?
I'll see if I can borrow an iThing that has 14 on it, but I don't really have a dev environment well suited for debugging things in iOS at the moment.
My gut feeling is that it might be necessary to add some width styling to the video element.

its one of the 1.0 beta examples here.
it opens the video as a full screen overlay, instead of as an inline video element, and I was actually able to get it to work on iOS  by copying the source scripts. (the ones being loaded, not the source code written on the page, which does not work)
Of course, while this works on iOS 14, it does not work on android. I get a notification stating that the camera is being used, but there is no visible camera feed.

Similar issue for here after iOS 14 update. The camera appears to be very zoomed in and view port seems to be smaller and not honoring the aspect ratio and orientation.  Happy to help debug this issue.

The camera appears to be very zoomed in and view port seems to be smaller and not honoring the aspect ratio and orientation.

Not sure that there's anything that we can do on our side if that's the case, it might be possible that there's actually some breakage in Safari's camera handling.  I don't know if iOS devices report multiple cameras, like many Android devices do, that might be a thing?  Perhaps it has different logical cameras at different aspect ratios, etc, and after the update, it's selecting a different camera by default?

I forgot to mention, I did try adding width styling to the video element, and other various things on the page

worrisome.  Normally what I try to do when I'm working with debugging things in my app that uses Quagga, is try to get it to do what i want it to do in a regular browser, first, load it to my local server, and then hit it with my cell phone.  I don't know of any way to get iOS or Android to allow camera access to a dev server, but in a desktop browser, it assumes that localhost is secure, and allows it.
So, what I would probably start with doing, is putting down a div element on the page, setting a border around it in css, getting it to look like it's supposed to, and then passing { inputStream: { target: ThatVideoElement } } into the Quagga config.  That should create the imagebuffer and drawingbuffer canvases as children of that element, which might shed some light on it.  As well, if you create two canvas elements, one with an id of "imgBuffer" and one with an id of "drawingBuffer", then Quagga shouldn't do any modifying of the document at all, and that might also shed some light.

we face the same issue....
It seems like the aspect ratio can't be calculated properly since the iOS14 update.
For some reason the seems to assume a width of 32768 instead of the real one like in iOS13.

So, what I would probably start with doing, is putting down a div element on the page, setting a border around it in css, getting it to look like it's supposed to, and then passing { inputStream: { target: ThatVideoElement } } into the Quagga config. That should create the imagebuffer and drawingbuffer canvases as children of that element, which might shed some light on it. As well, if you create two canvas elements, one with an id of "imgBuffer" and one with an id of "drawingBuffer", then Quagga shouldn't do any modifying of the document at all, and that might also shed some light.

I tried your suggestion:

          <canvas className={clsx('imgBuffer', classes.video)} />
          <canvas className={clsx('drawingBuffer', classes.canvas)} />

with these styles:
container: {
      // transformOrigin: 'top left',
      // transform: `scale(50%)`,
      background: 'red',
      position: 'relative',
      maxWidth: videoWidth,
      minWidth: videoWidth,
      maxHeight: videoHeight,
      minHeight: videoHeight,
    },
    viewport: {
      borderStyle: 'dotted',
      borderWidth: 'medium',
      position: 'relative',
      maxWidth: videoWidth,
      minWidth: videoWidth,
      maxHeight: videoHeight,
      minHeight: videoHeight,
    },
    video: {
      borderStyle: 'solid',
      borderWidth: 'medium',
      background:
        'linear-gradient(90deg, #fff 2px, transparent 90%) center, linear-gradient(#fff 2px, transparent 1%) center, green',
      position: 'absolute',
      top: 0,
      left: 0,
      maxWidth: videoWidth,
      minWidth: videoWidth,
      maxHeight: videoHeight,
      minHeight: videoHeight,
    },
    canvas: {
      borderStyle: 'dotted',
      borderWidth: 'thick',
      background:
        'linear-gradient(90deg, #fff 2px, transparent 90%) center, linear-gradient(#fff 2px, transparent 1%) center, blue',
      position: 'absolute',
      top: 0,
      left: 0,
      opacity: 0.4,
      maxWidth: videoWidth,
      minWidth: videoWidth,
      maxHeight: videoHeight,
      minHeight: videoHeight,
    },

the resulting html  on the iPhone with iOS14 is:

The video tag is generated, like in Chrome too, but with wrong dimensions as you can see in the image.
On Chrome it looks correct for this code:

To be clear in my understanding, is Quagga involved in either of those, or is it just HTML/CSS ?
If Quagga is not involved, then we've got a clear case of Safari doing something very different from Chrome.  If Quagga is, then I think we need to trace out if Quagga is causing the problem somehow in Quagga.init().
umm... right, i did think that there was supposed to be a video element as well as the canvases.. but i didn't find it.  It's been a while since I rewrote the init code,
So, I wonder if it might be possible to see the problem occurring in Safari on a Mac?  It might be possible if it does occur on desktop, to be able to apply some adjustments in the page on the fly to see if there's something that can be adjusted to solve it?  Or maybe that can be done in whatever debugger you were using above?
I'm here trying to get a handle on what might be a cause of a problem that I can't even see, since I don't have a modern iOS or macOS device, so I'm sorry if this goes slowly!

Hello Eric,
thanks for coming back on this.
Quagga is for sure involved. The video tag generated by Quagga can't be influenced from outside.
This video tag becomes strange dimension on the iPhone (iOS14) in portait mode. Very interesting is that it looks fine when turning the phone into landscape mode with all these fix css values I used in me last tests. But anyway no barcode is detected on the iOS14.
My last screenshot doesn't show, but the camera picture is shown in the imgbuffer canvas as well s in the video tag.
The picture itself inside that video-tag-bar looks fine, but the picture in the canvas looks like scaled and distorted. Maybe that's the reason why no barcode is detected.
I was not able to make the video tag having the correct dimensions.
So I tried further wrapper for zxing and found react-webcam-barcode-scanner which works out of the box.
I miss the flexibility in configuration of quagga2 but however it works with iOS14 and also support QR-codes beside barcodes which I will need in the near future too. Maybe you find some hints in that implementation why quagga stops working with iOS14.
Regarding to to debug an iOS device: I'm using "remotedebug_ios_webkit_adapter" (see: https://www.outsystems.com/blog/posts/how-to-troubleshoot-ios-on-windows/). It's not 100% stable and losses the connection sometimes when the phone turn off the display, but it's better than to be forced to use a mac. (hint: for iOS13 I needed to use port 9000 and for iOS14 9221).

OK, so, when you are creating a LiveStream in Quagga, it will search for an element id'd "video", and if that's not found, then it will document.createElement('video') and viewport.appendChild(video)
So, if there's a specific element you want to use giving it <video id="video" ...> should work, and if not, you can use CSS like video { border: 1px 'red'; }
Sure, Quagga can't read QR codes by itself right now, but it does have the (experimental) ability to pass an image onto other code that can :)  I don't know if this actually works in live mode yet, but it does for individual images https://github.com/ericblade/quagga2-reader-qr
I'm seeing from https://firt.dev/ios-14

I wonder if this is somehow related.

I tried ios13 and ios14 both, seems the line below throws an error as "Unable to play video stream. Is webcam working?" this is even though a thin line of preview is shown, If I change the css for the video element to use 100% width the preview does show up full screen but its highly zoomed and unusable (even as a human I cannot make out anything as its highly zoomed)
Quagga.init(this.state, function(err) {
    if (err) {
        console.log(err);
        App.attachListeners();
        return;
    }
    App.attachListeners();
    App.checkCapabilities();
    Quagga.start();
}

I would be happy to help debug this further as I managed to get hold of two devices one on ios13 and one on ios14

@lotusorrose would love for the assist there.  I don't really have access to any iOS devices.  IF you need any help with finding your way around or figuring out what something means, or is doing, lmk
That error is thrown by camera_access.ts, function waitForVideo, inner function checkVideo().  initCamera() calls waitForVideo() before returning. waitForVideo checks for the given video element's length and height to be > 10, then resolve, otherwise it fires again in 500 ms, up to 10 times.  If that all fails, then it throws.
This is in a section of code that Christoph probably wrote a long long time ago, and he's not been available for questions for a really long time.. so, i'm not entirely sure why that check does what it does, but I can certainly see why it's throwing a failure eventually.

Hey all -- we may have some sort of a way to handle -- and I was starting to think about this, but i hadn't quite figured out what the problem would be : https://github.com/serratus/quaggaJS/issues/444#issuecomment-704243664
@lotusorrose @reppard @harrybin @pearcemichal
could you post your constraints?  i'm having a feeling that perhaps iOS is giving us a totally unexpected result when we request the camera with certain constraints.

Thanks @ericblade for the link,  I have the same aspectRatio as mentioned in the link and yes if I comment the line with aspect ratio below it works as before, the constraint is as below
                        width: {min: 1024},
                        height: {min: 786},
                        aspectRatio: {min: 1, max: 100}, // commenting this line on ios14 works for ios14, ios13 and android devices
                        facingMode: "environment" // or user
                    }

This is making me wonder if iOS 14 is somehow supplying a 1 aspect ratio when you ask for it.

I was just reviewing my thoughts on the matter, and any relevant code, and it occurred to me that I was thinking incorrectly yesterday -- 1 isn't a totally bonkers aspect ratio, but anything higher than 2 really is, as aspect ratio is normally going to be a float of (width / height).  So, a sane range would be min: 1, max: 2 .  This is also what is used in the current example/live_w_locator .
Could someone try with aspectRatio set to min: 1 max: 2 and see if this also solves the issue?  I'm not sure where people picked up max: 100 setting, I don't see it in any of the examples that are in the current source.

Could someone try with aspectRatio set to min: 1 max: 2 and see if this also solves the issue? I'm not sure where people picked up max: 100 setting, I don't see it in any of the examples that are in the current source.

@ericblade this got my stream working again in iOS 14.0.1 in a test environment.  The styling is a bit off but that may be on my side.  This looks promising!

I was just reviewing my thoughts on the matter, and any relevant code, and it occurred to me that I was thinking incorrectly yesterday -- 1 isn't a totally bonkers aspect ratio, but anything higher than 2 really is, as aspect ratio is normally going to be a float of (width / height). So, a sane range would be min: 1, max: 2 . This is also what is used in the current example/live_w_locator .
Could someone try with aspectRatio set to min: 1 max: 2 and see if this also solves the issue? I'm not sure where people picked up max: 100 setting, I don't see it in any of the examples that are in the current source.

I tried both removing the line as well as changing the line both seem to work.
btw this aspectratio comes from https://serratus.github.io/quaggaJS/examples/live_w_locator.js

Thanks for finding that.  I'll submit a req to that repo, I don't know that it'll update the live sample, I don't know if that's autobuilt somehow.  We might never be rid of this problem :-D

I'm going to assume that we've fixed this, and no changes are necessary in the library itself?


DolphinContext.destroy() should be called on client session timeout.

DolphinContext.destroy() should be called on client session timeout.

This issue was moved to rico-project/rico#4


⚠ Bofrost.at has degraded performance

In e578080, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 3358 ms

Resolved: Bofrost.at performance has improved in 6195f33.


⚠ Minecraft has degraded performance

In f2b6290, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1107 ms

Resolved: Minecraft performance has improved in 39cc266.


How to hide the navigation bar menu?

This is not an issue. I just want to know can we hide the navigation bar menu which is show at the left hand side?

That's the sample component common/SimpleNav. You can remove it from component home/App. If you don't want sample code, you can create a clean app by rekit create my-app --clean.

ok, thank you