Omnisharp ignores runtime and architecture in global.json

I have a variation of https://github.com/Microsoft/vscode/issues/126. I'm running VSCode 0.10.6 on Win 7 x64. My global.json:
{
  "sources": ["src", "test"],
  "sdk": {
        "version": "1.0.0-rc1-update1",
        "runtime": "coreclr",
        "architecture": "x64"
  }
}

and dnvm list shows
Active Version           Runtime Architecture OperatingSystem Alias
------ -------           ------- ------------ --------------- -----
       1.0.0-rc1-update1 clr     x64          win             clr
  *    1.0.0-rc1-update1 coreclr x64          win             coreclr, default

When I start VS Code I see this in the Omnisharp log:
[INFORMATION:OmniSharp.Dnx.DnxPaths] Looking for sdk version in 'c:\Users\blabla\Development\oslo-group\global.json'.
[ERROR:OmniSharp.Dnx.DnxPaths] The specified runtime path '1.0.0-rc1-update1' does not exist. Searched locations C:\Users\blabla\.dnx\runtimes\dnx-clr-win-x<IP_ADDRESS>-rc1-update1
C:\Users\blabla\.dnx\runtimes\kre-clr-win-x<IP_ADDRESS>-rc1-update1

Apparently it searches for runtime clr and x86, which of course is not installed on my system.
Any ideas how to fix this?

This issue was moved to OmniSharp/omnisharp-vscode#12


Refactor DependencyInterface

to use DependencyContext instead of FileOccurence and DependencyType, so that we do not add a new method to the interface and constructor parameters every time we want to add a piece of information about the dependency.
Created to enable https://github.com/qossmic/deptrac/pull/1359
BC break: Yes

Please update the git origin for development to https://github.com/qossmic/deptrac-src and reopen the PR.
Thank you very much!


refactor: assign numerics to align with convention used

refactor: assign numerics to align with convention used

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

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


Interpolation

It would be cool to have some interpolation for the measurements. It might also make sense to take the thickness of the annotated line into account and average over a small region. For that, we should figure out, how exactly this is done in other tools such as ImageJ

At this point it may be useful to look at skimage.measure.profile_line()

Would like to take this task over? I have zero experience with that function but would love to see our custom implementation here replaced with something more sophisticated. :-)


matrix: send the display name instead of the user name

This PR set the default behavior to sending the matrix display name instead of the user name, as asked by #441.
For example, this means '@thobys:server' will be translated to the nickname I chose on server.
In addition, if the user didn't set a display name, this will fallback to the user name.
To turn off this behavior, we use the option UseUserName, as it seems to be the very meaning this option was intended for in the discord bridge.

@nightmared thanks for you work! 👍
I've got a few comments

looks good, can you rebase as I just merged your previous PR ? :)

Could you also add the UseUsername option to the discord section in matterbridge.toml.sample ?

Hmm, maybe I should move some functions to a new helpers.go to make codeclimate happy.

LGTM, thank you.
As it is a breaking change in behavior I'm going to put it in release 1.20.0 instead of 1.19.1
I'll merge it after 1.19.1 is released.


No valid date - not counting files

Given the following format for an owned book in front matter
library: owned

The following query returns No valid Y value found in notes.
searchType: text
searchTarget: 'library: owned'
summary:
  template: "I own {{sum()}} books"

According to the error messages that means I need to add textValueMap but I have been unable to find any specific documentation on how to use it to map my text value so that if it's present it will be true and start to count the books I own.

Hope it is not too late, have you tried this?


Record keys are inferred to be values when using extends string conditional in a generic type

Bug Report

🔎 Search Terms

inference generic extends record
🕗 Version & Regression Information

This is the behavior in every version I tried, and I reviewed the FAQ for entries about "extends"

⏯ Playground Link

Playground link with relevant code
💻 Code

type TestType<Keys extends string> = string extends Keys ? Record<Keys, string> : Record<Keys, string>

function inferHelper<Keys extends string>(data: TestType<Keys>) {
  return data;
}

export const a = inferHelper({
  // key1 is inferred to be value1 here
  key1: "value1"
})

🙁 Actual behavior
ts2345
Argument of type '{ key1: string; }' is not assignable to parameter of type 'Record<"value1", string>'.
  Object literal may only specify known properties, and 'key1' does not exist in type 'Record<"value1", string>'

🙂 Expected behavior
no error, and the record is inferred as Record<"key1", string>

3.8 -> 3.9 regression, actually


Outdated examples

One issue is that they use old SyncConnection(), but there might be some other problems as well.

Good point, this would have been noticed more quickly if something like https://github.com/rigetticomputing/pyquil/issues/160 was done as well


ubuntu bionic package doesn't work

Steps to reproduce the problem:

install ubuntu-bionic (server)
apt install mitmproxy
mitmproxy

Any other comments? What have you tried so far?
$ /usr/bin/mitmproxy
pkg_resources.ContextualVersionConflict: (urwid 2.0.1 (/usr/lib/python3/dist-packages), Requirement.parse('urwid<1.4,>=1.3.1'), {'mitmproxy'})
# vi /usr/lib/python3/dist-packages/mitmproxy-2.0.2.egg-info/requires.txt
$ mitmproxy
pkg_resources.DistributionNotFound: The 'setuptools!=29.0.0,>=11.3' distribution was not found and is required by mitmproxy
# apt install -y python3-setuptools
$ mitmproxy
pkg_resources.DistributionNotFound: The 'ruamel.yaml<0.14,>=0.13.2' distribution was not found and is required by mitmproxy
# vi /usr/lib/python3/dist-packages/mitmproxy-2.0.2.egg-info/requires.txt
$ mitmproxy
pkg_resources.DistributionNotFound: The 'pyperclip<1.6,>=1.5.22' distribution was not found and is required by mitmproxy
# vi /usr/lib/python3/dist-packages/mitmproxy-2.0.2.egg-info/requires.txt
$ mitmproxy
pkg_resources.DistributionNotFound: The 'pyasn1<0.3,>=0.1.9' distribution was not found and is required by mitmproxy
# vi /usr/lib/python3/dist-packages/mitmproxy-2.0.2.egg-info/requires.txt
$ mitmproxy
pkg_resources.DistributionNotFound: The 'pyOpenSSL<17.0,>=16.0' distribution was not found and is required by mitmproxy
# vi /usr/lib/python3/dist-packages/mitmproxy-2.0.2.egg-info/requires.txt
$ mitmproxy
pkg_resources.DistributionNotFound: The 'html2text<=2016.9.19,>=2016.1.8' distribution was not found and is required by mitmproxy
# vi /usr/lib/python3/dist-packages/mitmproxy-2.0.2.egg-info/requires.txt
$ mitmproxy
...
pkg_resources.DistributionNotFound: The 'brotli<0.7,>=0.5.1' distribution was not found and is required by mitmproxy
# vi /usr/lib/python3/dist-packages/mitmproxy-2.0.2.egg-info/requires.txt
$ mitmproxy

System information

Mitmproxy version: 2.0.2 (release version)
Python version: 3.6.5
Platform: Linux-4.15.0-22-generic-x86_64-with-Ubuntu-18.04-bionic
SSL version: OpenSSL 1.1.0g  2 Nov 2017
Linux distro: Ubuntu 18.04 bionic

Fwiw, here's what I ended up doing:

apt install -y python3-setuptools

I picked these random versions (roughly replacing the first digit with a 9):

# egrep $(egrep 'ContextualVersionConflict|DistributionNotFound' /tmp/09 |sed -e "s/' .*//;s/.* '//;s/[<!=].*//;s/.*'//"|tr "\n" '|'|sed -e 's/.$//') /usr/lib/python3/dist-packages/mitmproxy-2.0.2.egg-info/requires.txt
brotli<9.7,>=0.5.1
html2text<=9016.9.19,>=2016.1.8
pyOpenSSL<97.0,>=16.0
pyasn1<9.3,>=0.1.9
pyperclip<9.6,>=1.5.22
ruamel.yaml<9.14,>=0.13.2
setuptools!=29.0.0,>=11.3
urwid<9.4,>=1.3.1

This might be better suited as a bug against debian/ubuntu, but, this is where I as a user came looking, and #868 was filed here...
Offhand, if setuptools is needed by the app, then it should be a dependency. As for the versions (or why making them arbitrarily large made things work)...

For completeness, noting there is an open ticket for this on Ubuntu's bug tracker
https://bugs.launchpad.net/ubuntu/+source/mitmproxy/+bug/1809179

I think there are some typos in @jsoref 's package list. Below works for me:
brotli<0.7,>=0.5.1
html2text<=2016.9.19,>=2016.1.8
pyOpenSSL<17.0,>=16.0
pyasn1<0.3,>=0.1.9
pyperclip<1.6,>=1.5.22
ruamel.yaml<0.14,>=0.13.2
urwid<1.4,>=1.3.1


New UI: snake skin

Cool! We might wanna keep the red background around errors ?

Thanks for all the great work you guys put into this!
By permission of @nitriques I will try to give some feedback. I will also try to be as objective as possible, but as things go with design stuff there is always a great deal of things that depend more on taste than anything else.
I know this is work in progress, so please excuse me if I go too far :)
Nice

Roboto and apparent material design inspired approach
Clean and minimal
Top-right save button and back-arrow for current section

UI-design issues

Light font weight seems finicky on non-retina devices
Fieldset labels in caps are hard to read und get longish
header h1 background orb seems unneccessary
site titles of medium length already breaks the layout
input fields feel inverted, when following the brighter=more-important dogma

Minor UI-design issues

Gray text contrast seems to low (already on @nitriques’ radar)
Fieldset legends seem oversized (when in »blue mode«)
Fieldset labels in caps are hard to read

Possibly a question of subjective taste?

Our customers are always very fond of the simplicity of the current UI. The fact that everything important can be found in the main horizontal nav makes it very clean. I do like the fact that the new vertical navigation shows everything at once, but the page feels much more cluttered in L-form.
Using lines as dividers: I feel this could lean more towards the concept of structure/layers/areas in the material design guidelines.
border-radius and padding seems to large on inputs and sections. Maybe we should consider material design here too?

Since you have been going the Roboto-way I wonder if there aren’t a lot more design-cues from the Material design guidelines we could implement. Even though I don’t even own an android device I strongly feel that the whole visual and ux-approach seems to be a lot more consistent and thought through than f. e. iOS 7+.

Codecov Report

Merging #2 into 3.0.x will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##              3.0.x       #2   +/-   ##
=========================================
  Coverage     31.39%   31.39%
  Complexity     1849     1849
=========================================
  Files            52       52
  Lines          5173     5173
=========================================
  Hits           1624     1624
  Misses         3549     3549

Continue to review full report at Codecov.

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


Interesting logic to add words to valid

This rule is using filterto add words
https://github.com/redhat-documentation/vale-at-red-hat/blob/main/.vale%2Fstyles%2FRedHat%2FSpelling.yml
I think it difdersfrom adding a words to vocabulary (Vocab.txt) as it avoid that vale would suggest them (to be checked)

Filter isn't useful in our case since they can only be used with Vale rules that extend spelling.
Vale explains filters and ignorefiles in "Ignoring non-dictionary words", below the spelling extension:

Filters are added to rules as case-sensitive regex exceptions to spelling rules
Ignorefiles are plain-text files where the first letter of each word is not case-sensitive.

Then comes in Vocabulary which is far more customizable since they can be case-sensitive or not. This depends on whether the style guide author uses Vale.terms, as explained below the title "Case sensitivity" within the same page.
Vale generally seems to suggest ignore files and vocabularies for long term solutions in "Relation to ignore files" by stating that "ignore files are for style creators while vocabularies are for style users". This seems sensible since organizing and maintaining filters within the rules requires much more effort and those filters would only apply within the context of that specific rule.
As such, I suggest closing this issue as filter functionality is limited and easily replaced by ignorefiles or the Vocabulary functionality.


Align AEVM instruction gas to recent EVM ones

Delivers https://www.pivotaltracker.com/story/show/159950428
Please refer to commit messages for details.
TODO:

[x] Check actual code changes performed against expected recent EVM changes based on specs and yellow paper
[x] Sanity check actual code changes against go implementation

Checked the 6 affected gas values.

[x] Double check if any direct impacts on transactions fees or microblock gas limit

No direct impact.
Only related PR recently merged in master is #1722 that does not impact this.

[x] Release notes line
[x] Rebase on recent master
[x] Bump DB folder of environments

Rebased this PR (https://github.com/aeternity/epoch/commits/263ec878449e9058d4756108c434f3ee38d50be9 based on master as f48a7f741e708fded2caafc3d9f7875dc596d39b) on current master.
Bumped DB folder.

CI workflow with full system tests running in auxiliary CI workflow.

Rebased on master for conflict on governance and DB folder.


Ability to set X & Y transform scale

With zoom.x() and zoom.y() removed, there doesn't appear to be an elegant way to zoom a single axis while leaving the opposite axis's domain untouched.
I'd like to propose the idea of extending the transform methods to support 1 or 2 scales, replacing the single k value with kx and ky values and extending the transform.scale method to accept an optional second parameter. By default, when called with a single parameter, kx and ky would be assigned with the same scale, resulting in the same functionality as today. However, users would have more control over their transforms through the added ability to compress and expand axises as needed.
I'm happy to work on this functionality but wanted to get a feel for it's perceived viability before I dove in.

Here’s an example of one-dimensional zooming:
https://bl.ocks.org/mbostock/34f08d5e11952a80609169b7917d4172
If you want to zoom the x-scale, use transform.rescaleX. If you want to zoom the y-scale, use transform.rescaleY.

That doesn't solve the problem for all cases, just for that specific use case where you only need to work off of a single zoom scale. What about the case where X and Y need to be transformed at different scales? Take this example: http://bl.ocks.org/jgbos/9752277
The above block is essentially a hack to accommodate dual scales in v3. They essentially wipe the scale clean by reapplying the zoom behavior, thus effectively setting the scale back to 1. Not a great solution, as it prevents you from using the provided zoom extents, however it was an okay workaround.
However, in v4, the transform is a bit more engrained, which feels like a huge step forward until you realize you're still limited to a single scale and now working around that limitation is far more difficult. rescale, invert, apply, and scale all operate under the assumption that you will never need to control k and that the transform.k is the scale you want to use for all scaling. For example, switching from X axis to XY axis zooming will result in a reset of the X axis to the same scale as Y, which is not the desired functionality.
There doesn't appear to be a feasible method of managing individual kx and ky scales that doesn't require writing your own implementation of the transform state and methods that accept kx and ky. Correct me if I'm wrong?
In my opinion, it would be very beneficial and likely a low risk feature to extend the transform to 4 values, x, y, kx, ky. The provided methods can be updated as follows:
Proposed changes:
d3.zoomTransform(node)
Return a slight different, but still two dimensional matrix: kx 0 tx 0 ky ty 0 0 1
transform.scale(kx [, ky = kx])
Returns a transform whose scale kx₁ is equal to kx₀ × kx, and whose scale ky₁ is equal to ky₀ × ky, where kx₀ is this transform’s x scale and ky₀ is this transform’s y scale.
transform.apply(point)
Returns the transformation of the specified point which is a two-element array of numbers [x, y]. The returned point is equal to [x × kx + tx, y × ky + ty].
transform.applyX(x)
Returns the transformation of the specified x-coordinate, x × kx + tx.
transform.applyY(y)
Returns the transformation of the specified x-coordinate, x × ky + ty.
transform.invert(point)
Returns the inverse transformation of the specified point which is a two-element array of numbers [x, y]. The returned point is equal to [(x - tx) / kx, (y - ty) / ky].
transform.invertX(x)
Returns the inverse transformation of the specified x-coordinate, (x - tx) / kx.
transform.invertY(y)
Returns the inverse transformation of the specified y-coordinate, (y - ty) / ky.
transform.toString()
Returns a string representing the SVG transform corresponding to this transform. Implemented as:
function toString() {
  return "translate(" + this.x + "," + this.y + ") scale(" + this.kx + "," + this.ky + ")";
}

d3.zoomIdentity
The identity transform, where kx = ky = 1, tx = ty = 0.

Okay, I see what you mean now. And yes the zoom behavior is limited to uniform scaling at the moment; you can ignore one of those dimensions in how you apply the transform, but the zoom behavior internally represent the transform with a single k for both x and y.
It feels a bit weird to me to introduce a feature that is only accessible programmatically—I can’t think of a natural way to allow independent zooming of x and y in the current model (outside of multitouch and even then I don’t think you would want it enabled by default). Also I expect this would have ramifications on how zoom transitions are calculated.
(Somewhat related, but supporting rotation would be nice in the future, too.)
I guess I am not sure whether this makes more sense as a feature on the zoom behavior or another class of behavior. And adding this as a feature to the existing zoom behavior would likely not be backwards compatible, so maybe a new class makes more sense?

It feels a bit weird to me to introduce a feature that is only accessible programmatically—I can’t think of a natural way to allow independent zooming of x and y in the current model (outside of multitouch and even then I don’t think you would want it enabled by default).

I agree to an extent. Axis specific zooming has it's use cases, even if there's not a common pattern for it. I don't see an issue with providing the programmatic controls to allow people to build functionality that is outside of the box, considering that feels like the whole purpose of D3 in the first place.

Also I expect this would have ramifications on how zoom transitions are calculated.

That's possible. I haven't found any issues with zooming in the first pass I took, but I haven't tried transitions yet. I don't think it'll be an issue though, personally.
You can view the proposed changes in action here: http://bl.ocks.org/joshuahiggins/2512b0790c0feb2afec70c372530edbd
As well as a diff against the prod build of D3 here: https://www.diffchecker.com/hgtigw7g
A couple notes on the code:

It's an afternoon monkey patch against the distributable code, so it clearly needs some love.
It addresses all instances of scaling in the d3-zoom package that I could find.
To expedite the patch, I updated Transform(k, x, y) to Transform(k, x, y, ky)... Obviously would need to address that before sending a proper PR.
I added a zoom.scaleLock([x, y]) method which accepts an array of 2 booleans or a function that returns an array of 2 booleans. This is the magic sauce to making the proposed changes worthwhile to developers. This function adds in a check at the very start of a zoom event that allows the user to essentially stop each axis individually before an event even fires. You can see that in action in the Block.
The changes in the patch are backwards compatible, as ky is simply an option parameter that defaults to k.

Somewhat related, but supporting rotation would be nice in the future, too.

Agreed. In that case, it might be good for Transform to become a helper function for a more robust Matrix function that takes all 6 parameters.

Oh and now that I've posted it, I realize my hover events are garbage and sometimes don't trigger the proper mouseover events to unlock the axis for scaling. Just hover out and hover back in if it gives you trouble, hah.

I recently ran into this issue while working on a chart that had brushes on the X & Y axes.
Using uniform scaling:

Using independent scaling:

I'm not sure of the solution, but I think the use case is reasonable.

I have D3 v4 working with a forked build of the d3-zoom library which allows for dual scaling. Been using it for a few weeks without and issues and no apparent conflicts with core functionality of D3. I haven't had time to open a PR yet, but I'm hoping to get one submitted in the next week or two.

(Somewhat related, but supporting rotation would be nice in the future, too.)

Agreed. Any thoughts on the skew, matrix, or the *3d properties? Is there any interest in a d3-transform?
I don't want to hijack this thread, so I'll stop here, but I want to mention I made a related library. It uses matrices internally, and allows you to create/update transforms using .translate(x,y,z), .rotate(x,y,z), etc. That particular lib is made to match a specific interface, but I'm glad to supply any code or tests 1 2

Here's the monkey-patch I apply. It's definitely "just get it done" quality, but ...
Object.assign(Transform.prototype, {
  invertY(y) {
    const scaleY = this.ky || this.k;
    return (y - this.y) / scaleY;
  },
  scaleY(k) {
    this.ky = k;
    return this;
  },
  toString() {
    const translate = `translate(${this.x},${this.y})`;
    const scale = `scale(${this.k},${this.ky || this.k})`;
    return `${translate} ${scale}`;
  }
});

Then I use it like const transform = (new Transform(scaleX, xPos, yPos)).scaleY(scaleY). Again, not ideal, but posting in case it helps anyone.

i've the same issue.
https://github.com/d3/d3/issues/2970

I'd like to be able to set a different scaleExtent for each of x and y too. This would make it easier to disable zoom on a single axis.

I just learned about https://github.com/trinary/d3-transform/
There's also a PR to update it for V4 https://github.com/trinary/d3-transform/pull/19

Hi, I'm working on this subject too because I need user to zoom out only on a single axis once scaling on the other would not respect translate extent constraints. Moreover, in my use case, I sometimes need to zoom with a different "scale factor" on x and y.
As @joshuahiggins did, I rewrite the Transform object which now has 4 values (x, y, kx, ky). Thus, it is possible to constrain scales so that translate extent constraints are respected, even on zoom out. This is done on the zoom object each time zoom.extent() or zoom.translateExtent() is called with this function:
function constrainScaleExtent() {
  kx0 = Math.max(kx0, (extent()[1][0] - extent()[0][0]) / (x1 - x0));
  ky0 = Math.max(ky0, (extent()[1][1] - extent()[0][1]) / (y1 - y0));
}

Moreover, it adds the zoom.scaleRatio() method in which you can provide a scale factor for x and y axis. It has an impact on event listeners (touch events currently not supported).
Demo.
Diff
Github repo
I'm not sure about the consequences of what I'm doing. Except touch support and zoom transition, it seems to work great for my use case. Any advise?

I released an independent d3 plugin: d3-xyzoom.

Perhaps as d3-zoom 2.0 we should generalize the matrix to match CSS 2D matrix transformations:
a c tx
b d ty
0 0 1
This corresponds to matrix(a b c d tx ty). Then d3-zoom could express both independent scaling of x and y, as well as rotation and skew. We could still define the default user interaction to be limited to translate and symmetric scale, but have options to allow rotation or other more general transformations, as well as being exposed programmatically.

Great discussion and glad to see that this is being considered for a future release. I just wanted to pipe in with another use case:
I have been struggling for a couple of days to implement a line chart with a button/checkbox that lets you switch between panning/scroll-zoom mode and a 2-D rectangular brush based zooming a-la MATLAB/Matplotlib. Due to the lack of support for independent zoom scales for X and Y, you are forced to use a separate path to implement the 2D brush zoom (Mike's block for Brush and Zoom II was invalauable), while the panning/scroll-zooming can be implemented in the tradition manner using d3.zoom. This led to 2 related issues:

Having duplication of code since each path requires very similar code for updating plot elements/scales/axes

It is tricky to update the zoom.transform when zooming with the 2-D brush. I believe that this was possible in d3 v3, but not in the new version? The only way to update it seems to be to use something like selection.call(zoom.transform, newTransform); which also fires off a bunch of events that I don't really want it to do due to having performed the rectangular 2D selection based zooming externally.

Perhaps this is easily accomplished within D3 v4 (I only just dipped my feet into the world of D3 a couple of weeks back), but I couldn't achieve this without a bit of a hacky approach that works but results in unnecessary overhead of the update operation on DOM elements being performed twice (once by the 2D brush method and once by the selection.call method to update the zoom transform so that subsequent pan/scroll-zoom operations are aware of the changes due to the 2D brush based zooming).

Hi,
I have the same problem. Is there a time when this ticket will be solved?
Thanks

I use a zoom event for each axis and one for the global chart. Each zoom works fine but in combination the chart jumps.
See https://jsfiddle.net/DaWa/vn0rxd5g/
I think it has something to do with that problem. I am happy about any help.

Hi guys, any news about this issue?
We really need to achieve an zoom on a single axis together with an "global" multi axis zoom.
Just like @DaWaD3's example shows.
@mbostock could you please consider declaring this issue as bug, as this works on d3v3?
I'm confident that this is a regression to some point.

@Root-Core I had same trouble about this issue too ..   it had work easily in  d3 v3 .
One change about zoom in v4  is  that transform being held  in selection . so   i try to  modify/reset  the  __zoom prop in selection . look at this  demo : https://jsfiddle.net/1g68fggd/2/
but  i not think it 's  a  nice way .  @mbostock  ,  hope your advice .
hi, @joshuahiggins  ,  i can't find your version.  what about your fork/pr  now ?

If you want to apply the transformation of two scales to an given html-element, this should work with a bit of work.
But the problem here is, that we acquire the data dynamically and draw it scaled, but do not apply the events transform to the svg element. The data can be "infinitely" long, gets prefiltered to have one value per pixel and might be "live". This is why we need to restore the behavior from v3. ;)

I am quite not sure if it is the right way to do it but I think I have a solution for a multiple axis zoom.
https://jsfiddle.net/DaWa/dLmp8zk8/2/
In that example I always reset the transform for each zoom to ensure that I start zooming and do not have to pay attetion on the other zooms.
Does that make sense or am I doing something terribly wrong?

Hello guys, do you know what's the ratio zoom on each transform.k.
like i have a range of date [startDay, endDate]
we all know when we do zoom. like from k=1 to k=2..I'll change to another range..
So i do need the ratio of those change ( I need to do some tricky stuff :))
Thanks all

Just started with trying to chart stuff and immediately have this issue. Basically I wanted to just say on ctrl + mousewheel zoom / stretch or shrink the Y axis and retain that scale for Y when doing regular zoom but instead it they both just spring back to the same scale.
Any plans to resolve this issue? I need the functionality and am having a hard time getting the builds to work when forking and linking locally. Since I already need to rescale both X and Y where in this case I conditionally choose to not rescale X, I don't see why they should be linked?

@DaWaD3 Resetting the current transform state held in the selection seems to be the only viable solution as of now.
The only problem could be that any set scale extent would be useless since the scale would always be at 1. Moreover if you for example set a scale extent of [1, Infinity] you would be unable to zoom out, so not such a nice thing...
As a work around i fear that for applying this method to a scale extent you'd have to store the initial state of the graph and then at each redraw check to see if it's matched or not: Say compare the current axis domain with an instance of the same axis initial domain previously saved somewhere in your code.

@DaWaD3's solution works (and works well), but it requires re-drawing the elements with updated x and y scales.
It looks like the __zoom internal representation is an object with k, x, and y. Is there a way to access the actual matrix [[k, 0, x], [0, k, y], [0, 0, 1]]? If we can convert the 2-d Affine Transformation Matrix to a 1-d subspace transformation, we should be able to keep track of all transforms (and update the 3 handlers manually) in order to work with scale() and translate() and the other css transformations.
Is there any way to access the matrix, or is only the __zoom object available?

So I’m about to go crazy trying to solve this... There is definitely a use case for this.
I need to be able to zoom the time axis (x-axis) while controlling zoom on the price axis (y-axis) separately. Lastly when i drag the window i want to be able to drag both the x and the y axis.
Are there any plans to add support for kx and ky? @DaWaD3 solution is only for a spesific use case.

@ohenrik Would https://github.com/d3/d3-zoom/issues/48#issuecomment-243957022 help? You can see it in action in https://github.com/d3/d3-zoom/issues/48#issuecomment-243953357

Thank you for responding :) @jfsiii, It looks close to what i want, however how do i make this? Do you have any example code?
This is another example that is close to what i want:
https://jsfiddle.net/o8vaecyn/35/
However i need to be able to be able to zoom the y-axis by scrolling over the Y axis. In the example above Y is forever unzoomable.

I tried implementing the code from https://github.com/d3/d3-zoom/issues/48#issuecomment-243957022 however Transform is not defined. What object is this? Do i get it from d3?

@jfsiii i managed to implement the code from https://github.com/d3/d3-zoom/issues/48#issuecomment-243957022. And it does work for panning. However... it does not work for zooming. when i zoom the y scale seems not to be taken into account. I have inspected the Transform code, however i cannot completely understand it. Got any tips on how to modify this so that zoom is taken care of?

Hello All,
I am  wondering what could be an appropriate way to zoom in matrix scatter plot.
For example , in this https://bl.ocks.org/Fil/6d9de24b31cb870fed2e6178a120b17d
we can see both x and y axis have different scales.
Could anyone please suggest what can be ideal approach to apply zooming feature in this visualization or share any example which has zoom in matrix scatter plot d3 V4.
Thanks in advance

Late to join the party, been bit by the same horrible problem. Wondering if any of you guys have come up to any of the cleaner or more stable solutions than described above?
(since it doesn’t look it’s making it in d3-zoom prod anytime soon)

I haven’t had any time to work on this feature, but I’d be willing to review an implementation of https://github.com/d3/d3-zoom/issues/48#issuecomment-264541988 if anyone is willing to work on it.

I made a hack-like workaround to achieve zooming only one axis and pan both x and y axes.
I am not completely sure it addresses the exact problem of this thread, as long as panning is involved in my case.
I would appreciate some comment with better(proper) solution or some final word if this feature is going to be implemented or not.
https://jsfiddle.net/pomcvusk/
What is going on in short: In transform function i check the property d3.event.sourceEvent.type and decide if it is zooming or panning. If it is panning, I store the delta y corresponding either to zooming or panning. Then I am able to tell, which portion of the t.y belongs to zooming vs panning in the past transforms.
Thanks

Here's a working example using d3-xyzoom if anyone's interested: https://codepen.io/aldanor/pen/WabmoL

Here's a working example using d3-xyzoom if anyone's interested: https://codepen.io/aldanor/pen/WabmoL

aldanor, How could I get the complete code for your working copy?  It looks pretty clean. Thanks

@kaltal the linked codepen contains a complete self-contained example.

I released an independent d3 plugin: d3-xyzoom.
How do I apply this plugin to d3 v4. I'm using react 16.4 and create-react-app 2.0. Thanks

I am currently working on a new release for this library, but I would like to add support for multitouch rotation (as is now commonly supported by vector sloppy maps, for instance), along with easier support for one-dimensional zooming. I plan to revisit this after d3-zoom 2.0 is released.

Here's a working example using d3-xyzoom if anyone's interested: https://codepen.io/aldanor/pen/WabmoL

I liked it. But there are two libraries added.

I am facing some similar type of issue - https://stackoverflow.com/questions/60412324/in-my-d3-chart-appended-rect-is-not-coming-properly can you guide me

The best workaround is to simply create faux data entries. This allows to simulate asymmetric X, Y zoom and pan. See my answer here for more info: https://stackoverflow.com/a/61164185/1996066

Have been struggling with this implementation for several weeks.
https://stackoverflow.com/questions/61071276/d3-synchronizing-2-separate-zoom-behaviors
Open bounty, any help appreciated.

I've made this example of a double zoom chart; somewhat arbitrarily, the features are:

zoom both dimensions at the same rate when mousing within the main part of the chart
reversed the zoom rate on the vertical axis when holding the shift key
zoom only one dimension when mousing on any of the axes

I tried to write it in a way that I hope is somewhat readable, and can be adapted to varuous needs.
Let me know if there are things that are unclear, and don't hesitate to send suggestions.
https://observablehq.com/d/0b496b3c9cf2144e

The solution / example notebook is published https://observablehq.com/@d3/x-y-zoom

This looks slick. Going to poke around the code later, but from a quick glance over it it looks like an elegant solution to the problem. Appreciate it!

The solution / example notebook is published https://observablehq.com/@d3/x-y-zoom

For those of you trying to make use of this example, I'd recommend changing
const point = e.sourceEvent ? d3.pointer(e) : [width / 2, height / 2];

to
const point = e.sourceEvent ? d3.pointer(e, e.sourceEvent.target) : [width / 2, height / 2];

wheelEvent from zooming works correctly, and d3.pointer(e) correctly uses the svg element from currentTarget.
However  mouseEvent from dragging returns the pageX and pageY coordinate because it uses the window as the currentTarget. I'm not sure if this is a chrome specific behavior, but basically always passing the svg element solves this.
You can see this behavior by dragging the graph above vertically, and if it's near the bottom x axis, it will not drag. However as you drag upwards toward the top of the page, it'll start dragging properly.

The solution / example notebook is published https://observablehq.com/@d3/x-y-zoom

For those of you trying to make use of this example, I'd recommend changing
const point = e.sourceEvent ? d3.pointer(e) : [width / 2, height / 2];

to
const point = e.sourceEvent ? d3.pointer(e, e.sourceEvent.target) : [width / 2, height / 2];

wheelEvent from zooming works correctly, and d3.pointer(e) correctly uses the svg element from currentTarget.
However  mouseEvent from dragging returns the pageX and pageY coordinate because it uses the window as the currentTarget. I'm not sure if this is a chrome specific behavior, but basically always passing the svg element solves this.
You can see this behavior by dragging the graph above vertically, and if it's near the bottom x axis, it will not drag. However as you drag upwards toward the top of the page, it'll start dragging properly.

Thanks! I've fixed this issue (using this instead of e.sourceEvent.target, but it's the same thing), and made it work with touch events too by switching from d3.pointer to d3.pointers.

Thanks! I've fixed this issue (using this instead of e.sourceEvent.target, but it's the same thing), and made it work with touch events too by switching from d3.pointer to d3.pointers.

I appreciate the example posted by @Fil (https://observablehq.com/@d3/x-y-zoom), but that seems to me to be a workaround rather than a real resolution to this issue and so I don't agree that this issue should be closed.
There are some quirks about that solution:

It only works on pure translation and pure scaling events. Touch users can do both at the same time by pinching, and d3-zoom fully supports this.
It is not straightforward to combine that solution with other programmatic control of the zoom/pan.
The user must track previous zoom state.
Half of the information in each d3-zoom instance is ignored, but this isn't so clear, which can make code harder to understand.

Again, it is a nice workaround, but I think a resolution to this issue would mean supporting different transform scales within the existing d3 zoom API, not a workaround that tracks the transformations manually and combines multiple d3 zoom instances.

I appreciate the example posted by @Fil (https://observablehq.com/@d3/x-y-zoom), but that seems to me to be a workaround rather than a real resolution to this issue and so I don't agree that this issue should be closed.
There are some quirks about that solution:

It only works on pure translation and pure scaling events. Touch users can do both at the same time by pinching, and d3-zoom fully supports this.
It is not straightforward to combine that solution with other programmatic control of the zoom/pan.
The user must track previous zoom state.
Half of the information in each d3-zoom instance is ignored, but this isn't so clear, which can make code harder to understand.

Again, it is a nice workaround, but I think a resolution to this issue would mean supporting different transform scales within the existing d3 zoom API, not a workaround that tracks the transformations manually and combines multiple d3 zoom instances.

An additional issue with the workaroud example above is that it is not possible to apply translationExtent to the zoom behaviour: they are not scaled along the axes correctly.

Please re-open this issue and provide an API for it via a .scaleFactor as shown in https://github.com/wiremind/d3-xyzoom, f.ex. 5-years later this is still a perfect common problem that needs addressing.

I have been trying to read the source code to solve the problem, but after two days, I found it too difficult for me. It would be great if there is an interface called transform(k, screenX, screenY): ZoomTransform, which takes the parameters k and the mouse position in the SVG and returns a ZoomTransform. This would solve the problem, as users can manage the zoom level themselves.


标题已编辑

± # telnet localhost 3354                                                                                !10023
Trying ::1...
Trying <IP_ADDRESS>...
Connected to localhost.
Escape character is '^]'.
{"id":3,"method":"eth_submitLogin","params":["0xe69390bb3c1c0a4d5a671c8ed62ab3669bfa0c91"],"worker":"GGGGGG.001"}
{"id":3,"result":null,"error":[25,"Not subscribed",null]}
Connection closed by foreign host.

正在修复

似乎以下编译选项才是造成问题的原因:joy:
-DPOOL__WORK_WITH_STRATUM_SWITCHER=ON

已确认-DPOOL__WORK_WITH_STRATUM_SWITCHER=OFF不存在问题。issue标题已修改。


Phaser.Text TypeScript issue

Version: Phaser-CE 2.7.7
Other stuff:
FireLoop backend,
Angular CLI / 2 frontend
Hi!
I have a problem with my self made Phaser project. I built a small game on top of Angular CLI generated project. It is located in it's own TypeScript Class. Everything works fine, except that for some reason, I cannot save Phaser.Text variable. It keeps losing it somewhere between functions. Here is my code:
/// <reference path="../../../node_modules/phaser-ce/typescript/phaser.d.ts" />
import { SessionInterface, Session, FireLoopRef } from '../shared/sdk/models';
import { RealTime } from '../shared/sdk/services';
import { LoopBackConfig } from '../shared/sdk';

export class SimpleGame {
    session: Session;
    sessions: Session[] = new Array<Session>();
    sessionRef : FireLoopRef<Session>;

    game: Phaser.Game;
    private sessionsText: Phaser.Text;

     constructor(private rt: RealTime) {
       this.game = new Phaser.Game(800, 600, Phaser.AUTO, 'content', { create: this.create });
       this.rt.onReady().subscribe(() => {
         this.sessionRef = this.rt.FireLoop.ref<Session>(Session);
         this.sessionRef.on('change').subscribe((sessions: Session[]) => {
           this.sessions = sessions;
           this.updateText();
          });
          // this.sessionRef.stats().subscribe((stats: any) => console.log("stats:", stats));
        });
        this.rt.onDisconnect().subscribe((error: string) => {
          console.log('Disconnected', error);
        });
        this.rt.onUnAuthorized().subscribe((error: string) => {
          console.log('UnAuthorized', error);
        });
        this.rt.onAuthenticated().subscribe((error: string) => {
          console.log('Authenticated', error);
        });
    }

    create() {
        let text = "Hello World!";
        let headerStyle = { font: "65px Arial", fill: "#ff0000", align: "center" };
        let textStyle = { font: "24px Arial", fill: "#ff0000", align: "center" };
        this.game.add.text(0, 0, "Hello Phaser!", headerStyle);
        this.sessionsText = this.game.add.text(0, 100, "Initializing...", textStyle);
         console.log("Phaser.Text var at create:", this.sessionsText);
    }

    updateText() {
      let sessionsString: string;
      if (this.sessions) {
        sessionsString =
          "Hosts: " + this.sessions.map(session => session.host) +
          ", Clients: " + this.sessions.map(session => session.client);
        console.log("the string:", sessionsString);
        console.log("Phaser.Text variable: ", this.sessionsText);
        if (this.sessionsText) this.sessionsText.setText(sessionsString);
      }
    }
}

The console log at the end of create function prints out the correct object, but then at updateText function it prints out undefined. The variable has lost somewhere or maybe it haven't been saved at all somehow. I have no clue what could be wrong. So is this a bug?
Here's also a screenshot

I found out that I had to put
this.game = new Phaser.Game(800, 600, Phaser.AUTO, 'content', this);
Instead of
this.game = new Phaser.Game(800, 600, Phaser.AUTO, 'content', { create: this.create });


Search Key Has Stopped Working in Crouton with the  Latest Stable Release of Chrome.

Please paste the output of the following command here: sudo edit-chroot -all

chronos@localhost / $ sudo edit-chroot -all
name: xenial
encrypted: no
Entering /mnt/stateful_partition/crouton/chroots/xenial...
crouton: version 1-20160518095657~master:fd37bb79
release: xenial
architecture: amd64
xmethod: xiwi
targets: xiwi,keyboard,lxde
host: version 8350.60.0 (Official Build) stable-channel gnawty
kernel: Linux localhost 3.10.18 #1 SMP Wed Jul 20 21:05:40 PDT 2016 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
Unmounting /mnt/stateful_partition/crouton/chroots/xenial...
name: xenial-i3
encrypted: no
Entering /mnt/stateful_partition/crouton/chroots/xenial-i3...
crouton: version 1-20160715134041~master:0dc76a22
release: xenial
architecture: amd64
xmethod: xiwi
targets: keyboard,xiwi,lxde
host: version 8350.60.0 (Official Build) stable-channel gnawty
kernel: Linux localhost 3.10.18 #1 SMP Wed Jul 20 21:05:40 PDT 2016 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
Unmounting /mnt/stateful_partition/crouton/chroots/xenial-i3...
Please describe your issue:
On my Acer c730 the latest stable release of Chrome seems to have disabled the Search key in Crouton (it works fine in Chrome OS).
If I run xev no output is produced, although other keys work as expected. I am using i3 and have stripped my .xinitrc back to a minimum:
setxkbmap gb
exec i3
I am using Ubuntu xenial.
If known, describe the steps to reproduce the issue:

Just an extra datapoint. I have transferred the chroot to my Tosiba Chromebook 2 and the Search Key is detected by xev.

I have the same issue on Asus C100PA on chrome beta

Same issue on an Acer C720: I have Search and Ctrl swapped in ChromeOS resulting in neither Ctrl key being picked up by xev in crouton but the Search key sends a 37/Ctrl_L code + sym.

I believe this is the same issue as #2639.

Duping to #2639.


exposing a constructor for PrivateRef

NB: Feature requests will only be considered if they solve a pain
Summary: Exposing a constructor for PrivateRef
Problem
The only way to obtain the root private key of WNFS-RS and use it on antoher device(login), right now, is to call .get_private_ref() on the directory on the first device and then serialize it and move it over to the other device. This doesn't allow deriving it deterministically.
In both the current version of fs used in webnative and WNFS go there is a constructor interface available to the programmer that can feed the private key that WNFS uses for the root. However, it is not exposed in WNFS rust version. exposing it allows application developer to feed the private key from their own login process (whatever it is) and it is deterministic,  and based on users' login and not random.
Impact
We can then decrypt WNFS tree on any device that the user has without needing to transfer the keys as long as users logs in on different devices and the program can create the same keypair. It gives more flexibility to the application developer on what approach they want and also gives the user more control over which private key to use. If developer wants to feed a deterministic key, they can, if they want a random key, they still can do it.
Solution
Exposing the constructor for PrivateRef
Detail
Is your feature request related to a problem? Please describe.
It's frustrating where the login cannot be linked to WNFS encryption and we still need to transfer the private key between multiple devices even when the user completes a login process.
Describe the solution you'd like
Like webnative js version and go version, I want to be able to construct the Private_ref myself from a keypair or seed hash (both work).
Describe alternatives you've considered
The only way to obtain the root private key of WNFS-RS and use it on antoher device(login), right now, is to call .get_private_ref() on the directory on the first device and then serialize it and move it over to the other device. This doesn't allow deriving it deterministically.
Additional context
It is also discussed on IPFS Discord on #wnfs with Matheus and Boris

Thanks for filing this @ehsan6sha :pray:
The proposed solution sounds great.
If you want this to happen sooner, please feel free to open a PR that makes this change, perhaps additionally adds a doc comment for the constructor (if not present already), and I'd be happy to have that merged soon! :)

Actually there's already PrivateRef::from_revision_key. It's public, but not documented, and I think it may just not have been released yet.
I think what you want to do is deterministically derive the root PrivateRef from a shared secret on two devices.
You'd both have to deterministically generate the inumber and Ratchet for the root PrivateDirectory.
It'd work like this:
fn derive_private_ref(shared_secret: [u8; 32]) -> PrivateRef {
    // blake3 or some other keyed hashing function
    let inumber = blake3::keyed_hash(&shared_secret, b"derived inumber");
    let ratchet_seed = blake3::keyed_hash(&shared_secret, b"derived ratchet seed");
    let ratchet = Ratchet::zero(ratchet_seed);
    let revision_key = RevisionKey::from(&ratchet);
    let mut namefilter = Namefilter::default();
    namefilter.add(&inumber);
    namefilter.add(&revision_key.0.as_bytes());
    namefilter.saturate();
    let saturated_name_hash = Sha3_256::hash(&namefilter);
    PrivateRef::from_revision_key(saturated_name_hash, revision_key)
}

Actually there's already PrivateRef::from_revision_key. It's public, but not documented, and I think it may just not have been released yet.
I think what you want to do is deterministically derive the root PrivateRef from a shared secret on two devices.
You'd both have to deterministically generate the inumber and Ratchet for the root PrivateDirectory.
It'd work like this:
fn derive_private_ref(shared_secret: [u8; 32]) -> PrivateRef {
    // blake3 or some other keyed hashing function
    let inumber = blake3::keyed_hash(&shared_secret, b"derived inumber");
    let ratchet_seed = blake3::keyed_hash(&shared_secret, b"derived ratchet seed");
    let ratchet = Ratchet::zero(ratchet_seed);
    let revision_key = RevisionKey::from(&ratchet);
    let mut namefilter = Namefilter::default();
    namefilter.add(&inumber);
    namefilter.add(&revision_key.0.as_bytes());
    namefilter.saturate();
    let saturated_name_hash = Sha3_256::hash(&namefilter);
    PrivateRef::from_revision_key(saturated_name_hash, revision_key)
}

The remaining problem is that this requires the original PrivateDirectory to have been generated with the same inumber and revision_key. That's not possible today unless we expose some operators that allow this. We could work on that!

So basically you created the PrivateRef from an external key here and now we need to do modifications to feed this PrivateRef to the PrivateDirectory? I think it would be in this method, right?
https://github.com/wnfs-wg/rs-wnfs/blob/80dbe82dd41e9eebda77960b930458d4d1feeb69/wnfs/src/private/node.rs#L500

So basically we have a public function available to create the PrivateRef from an external key here and now we need to do modifications to feed this PrivateRef to the PrivateDirectory? I think needed changes would be in the methods below, right?

Not quite.

We will probably only add some methods to support your use case and
It's not possible to create a PrivateDirectory that fits a given PrivateRef. You need to create both from a common seed.

@matheus23 If the private key can be hashed, we can expose the seed part of the ratchet generation to make it available for deterministic key gen cases. I believe we wanted to do this at one point but it didn't make it in after some refactor.
pub fn with_seed<R: RngCore>(parent_bare_name: Namefilter, ratchet_seed: HashOutput, rng: &mut R) -> Self {
    Self {
        bare_name: {
            let mut namefilter = parent_bare_name;
            namefilter.add(&utils::get_random_bytes::<HASH_BYTE_SIZE>(rng));
            namefilter
        },
        ratchet: Ratchet::zero(ratchet_seed),
        inumber,
    }
}

pub fn new<R: RngCore>(parent_bare_name: Namefilter, time: DateTime<Utc>, ratchet_seed: HashOutput, rng: &mut R) -> Self {
    Self {
        version: Version::new(0, 2, 0),
        header: PrivateNodeHeader::with_seed(parent_bare_name, ratchet_seed, rng),
        metadata: Metadata::new(time),
        entries: BTreeMap::new(),
    }
}

Yeah this is practically almost what we want I think. The only thing missing is that the inumber shouldn't be random.
Technically you could achieve that by just passing in the same deterministic impl RngCore to both methods, but at this point it may be easier to just pass in the inumber directly.

Yeah passing in a deterministic Rng would work too but it is more work than necessary and can easily break with future changes depending on how we call rng.
I also considered exposing the inumber but a user of the interface might not pay too much attention to its randomness. Maybe a warning in the doc that screams the importance of it being crypto secure to avoid collision.


Kamal is not recognizing the service as healthy

I'm trying to use Kamal to deploy a FastAPI application on the same server that is running my Ruby on Rails application. The server currently is running Ruby on Rails application using Caddy. Caddy is using port 80 and the Rails app is using port 9000.
For the FastAPI application, I created the following Dockerfile:
FROM python:3.11 as requirements-stage

WORKDIR /tmp
RUN pip install poetry
COPY ./pyproject.toml ./poetry.lock* /tmp/
RUN poetry export -f requirements.txt --output requirements.txt --without-hashes

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.11-slim

ENV MODULE_NAME=src.baheth_ss.main
ENV WEB_CONCURRENCY=2
ENV PORT=3000
ENV TIMEOUT=1500
ENV GUNICORN_CMD_ARGS="--preload"

WORKDIR /code
COPY --from=requirements-stage /tmp/requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY ./ /code/

EXPOSE 3000

And the following Kamal deploy.yml config:
service: baheth_ss
image: ieasybooks/baheth_ss
servers:
  web:
    hosts:
      - x.x.x.x
    options:
      cpus: 2.0
      memory: 5g
registry:
  username: ieasybooks
  password:
    - KAMAL_REGISTRY_PASSWORD
env:
  secret:
    - USE_ONNX_RUNTIME
    - HF_ACCESS_TOKEN
    - HF_MODEL_ID
    - HADITHS_DATA_FILE_PATH
    - HADITHS_DATA_FILE_URL
traefik:
  host_port: 81
healthcheck:
  path: /are_you_healthy
  port: 3000
  max_attempts: 25

I'm using host_port: 81 for Traefik as Caddy is using port 80 as mentioned before. When I run kamal deploy it fails with exception container not ready, but while the deployment is running (Before Kamal stops the container), I tried to run curl commands against the container like this:
curl 127.0.0:3000/are_you_healthy

Which outputs:
curl: (7) Failed to connect to <IP_ADDRESS> port 3000 after 0 ms: Connection refused

While running:
curl 127.0.0:3999/are_you_healthy

Returns "Yes" as expected.
The deployment logs are not showing any errors, the gunicorn server is running and I can see:
[2023-09-17 05:59:08 +0000] [15] [INFO] Application startup complete.
[2023-09-17 05:59:08 +0000] [14] [INFO] Application startup complete.

From the 2 workers.
Am I missing something in the Dockerfile or Kamal configs?

The issue came from tiangolo/uvicorn-gunicorn-fastapi:python3.11-slim  image that I'm using, it doesn't have curl installed by default, so I installed it.
Could you please update the documentation to mention that the image should contain curl installed?

Thanks to tbuehlmann from Kamal Discord server on helping me on this. Also, they mentioned that the curl thing mentioned already on the documentation. Closing this issue.


When I set CGO_ENABLED to 1 Go programs typically use dynamic linking instead of static linking. I have this flag -extldflags "-static"' in my code but after after setting CGO_ENABLED to 1 Go program is using dynamic linking instead of static linking
What did you see happen?
Go program is using dynamic linking instead of static linking with CGO_ENABLED set to 1
What did you expect to see?
How can I configure it to use static linking

Related Issues and Documentation

smaller binaries when compiled with static ldflag #18450 (closed)
cmd/go: -buildmode=pie requires external (cgo) linking, but cgo is not enabled #64875
cmd/link: Go 1.12: depending on source, "go build" generates dynamically linked binaries (uses shared libs) #30419 (closed)
build: CGO_ENABLED=0 ./make.bash does not force default in later runs of cmd/go #12808 (closed)
cmd/go: import runtime/cgo when externally linking
cmd/go: -compiler=gccgo: -buildmode=c-archive can't produce an archive with statically linked libgo #61549
proposal: go build static when cgo use libc #65297 (closed)
cmd/go/internal/load: -ldflags should be included in buildinfo when -trimpath is set and CGO_ENABLED=0 #63558 (closed)
go test does not work without CGO_ENABLED=1 #32287 (closed)
cmd/link: showing many ld warnings of "building for macOS, but linking in object file"  #33214

(Emoji vote if this was helpful or unhelpful; more detailed feedback welcome in this discussion.)

Unlike many projects, the Go project does not use GitHub Issues for general discussion or asking questions. GitHub Issues are used for tracking bugs and proposals only.
For questions please refer to https://github.com/golang/go/wiki/Questions


[TS-4091] addressing internal headers

@bcall addresses problem seen with internal headers

I discussed this with Daniel and it seems the correct fix to me.


depth_raw error with demo app

(cv_depthai) iotuser@iotuser-Blade:~/depthai$ python3 depthai_demo.py -s metaout previewout depth_raw -ff -bb
Using depthai module from:  /home/iotuser/cv_depthai/lib/python3.6/site-packages/depthai.cpython-36m-x86_64-linux-gnu.so
Using Custom Calibration File: depthai.calib
Using Arguments= {'config_overwrite': None, 'board': None, 'shaves': None, 'cmx_slices': None, 'NN_engines': None, 'rgb_resolution': 1080, 'rgb_fps': 30.0, 'mono_resolution': 720, 'mono_fps': 30.0, 'disparity_confidence_threshold': 200, 'field_of_view': 71.86, 'rgb_field_of_view': 68.7938, 'baseline': 9.0, 'rgb_baseline': 2.0, 'swap_lr': True, 'store_eeprom': False, 'clear_eeprom': False, 'override_eeprom': False, 'device_id': '', 'dev_debug': None, 'force_usb2': None, 'cnn_model': 'mobilenet-ssd', 'cnn_model2': '', 'cnn_camera': 'rgb', 'disable_depth': False, 'draw_bb_depth': True, 'full_fov_nn': True, 'sync_video_meta': False, 'streams': [{'name': 'metaout'}, {'name': 'previewout'}, {'name': 'depth_raw'}], 'video': None}
XLink initialized.
Sending internal device firmware
Successfully connected to device.
Loading config file
Attempting to open stream config_d2h
watchdog started
Successfully opened stream config_d2h with ID #0!
Closing stream config_d2h: ...
Closing stream config_d2h: DONE.
EEPROM data: valid (v5)
  Board name     : BW1098OBC
  Board rev      : R0M0E0
  HFOV L/R       : 71.86 deg
  HFOV RGB       : 68.7938 deg
  L-R   distance : 7.5 cm
  L-RGB distance : 3.75 cm
  L/R swapped    : yes
  L/R crop region: center
  Rectification Rotation R1 (left):
    0.999987,   -0.001160,    0.004909,
    0.001150,    0.999997,    0.002119,
   -0.004912,   -0.002113,    0.999986,
  Rectification Rotation R2 (right):
    0.999988,   -0.003005,    0.003789,
    0.003013,    0.999993,   -0.002110,
   -0.003782,    0.002122,    0.999991,
  Calibration intrinsic matrix M1 (left):
  869.771057,    0.000000,  647.535095,
    0.000000,  871.483765,  418.473907,
    0.000000,    0.000000,    1.000000,
  Calibration intrinsic matrix M2 (right):
  869.137817,    0.000000,  644.909241,
    0.000000,  870.417175,  407.580444,
    0.000000,    0.000000,    1.000000,
  Calibration rotation matrix R:
    0.999998,    0.001861,    0.001134,
   -0.001866,    0.999989,    0.004226,
   -0.001126,   -0.004228,    0.999990,
  Calibration translation matrix T:
   -7.487395,
    0.022499,
   -0.028367,
  Calibration Distortion Coeff d1 (Left):
    0.106500,   43.963959,    0.000695,    0.002498,   23.748280,    0.125551,   42.827187,
   26.160654,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,
  Calibration Distortion Coeff d2 (Right):
    2.987483,   69.966843,    0.000401,    0.001771,   14.714975,    3.052096,   68.236557,
   17.965635,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,
Available streams: ['meta_d2h', 'left', 'right', 'disparity', 'depth', 'metaout', 'previewout', 'jpegout', 'video', 'object_tracker', 'rectified_left', 'rectified_right', 'color']
CNN configurations read: /home/iotuser/depthai/resources/nn/mobilenet-ssd/mobilenet-ssd_depth.json
444
445
config_h2d json:
{"_board":{"calib_data":[0.9999873042106628,-0.001159933628514409,0.004909291863441467,0.0011495426297187805,0.999997079372406,0.0021188806276768446,-0.004911735188215971,-0.0021132102701812983,0.9999856948852539,0.999988317489624,-0.0030048189219087362,0.0037885296624153852,0.0030128289945423603,0.9999932050704956,-0.0021103511098772287,-0.00378216290846467,0.0021217407193034887,0.9999905824661255,869.7710571289063,0.0,647.5350952148438,0.0,871.4837646484375,418.4739074707031,0.0,0.0,1.0,869.1378173828125,0.0,644.9092407226563,0.0,870.4171752929688,407.5804443359375,0.0,0.0,1.0,0.999997615814209,0.0018608927493914962,0.001133509329520166,-0.001865667407400906,0.9999893307685852,0.00422582495957613,-0.0011256333673372865,-0.004227929748594761,0.9999904036521912,-7.4873948097229,0.02249852940440178,-0.02836654894053936,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10649976134300232,43.963958740234375,0.0006948882946744561,0.002498225774616003,23.748279571533203,0.1255507916212082,42.827186584472656,26.160654067993164,0.0,0.0,0.0,0.0,0.0,0.0,2.987483263015747,69.96684265136719,0.00040063654887489974,0.0017713055713102221,14.714975357055664,3.052095651626587,68.23655700683594,17.965635299682617,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"mesh_left":[0.0],"mesh_right":[0.0]},"_load_inBlob":true,"_pipeline":{"_streams":[{"name":"metaout"},{"name":"previewout"},{"name":"depth_raw"}]},"ai":{"NCEs":1,"blob0_size":13441536,"blob1_size":0,"calc_dist_to_bb":true,"camera_input":"rgb","cmx_slices":7,"keep_aspect_ratio":false,"num_stages":1,"shaves":7},"app":{"sync_video_meta_streams":false},"board":{"clear-eeprom":false,"left_fov_deg":71.86000061035156,"left_to_rgb_distance_m":0.019999999552965164,"left_to_right_distance_m":0.09000000357627869,"name":"","override-eeprom":false,"revision":"","rgb_fov_deg":68.7938003540039,"stereo_center_crop":true,"store-to-eeprom":false,"swap-left-and-right-cameras":true},"camera":{"mono":{"fps":30.0,"resolution_h":720,"resolution_w":1280},"rgb":{"fps":30.0,"resolution_h":1080,"resolution_w":1920}},"depth":{"confidence_threshold":0.5,"depth_limit_mm":10000,"lr_check":false,"median_kernel_size":7,"padding_factor":0.30000001192092896,"warp_rectify":{"edge_fill_color":-1,"mirror_frame":true,"use_mesh":false}},"ot":{"confidence_threshold":0.5,"max_tracklets":20}}
size of input string json_config_obj to config_h2d is ->2398
size of json_config_obj that is expected to be sent to config_h2d is ->1048576
Attempting to open stream config_h2d
Successfully opened stream config_h2d with ID #1!
Writing 1048576 bytes to config_h2d
!!! XLink write successful: config_h2d (1048576)
Closing stream config_h2d: ...
Closing stream config_h2d: DONE.
Creating observer stream host_capture: ...
Attempting to open stream host_capture
Successfully opened stream host_capture with ID #0!
Creating observer stream host_capture: DONE.
Read: 13441536
Attempting to open stream inBlob
E: [global] [    681193] [python3] XLinkOpenStream:87	Cannot find stream id by the "inBlob" name
E: [global] [    681193] [python3] XLinkOpenStream:88	Max streamId reached!
Failed to open stream inBlob ! Retrying ...
E: [global] [    681243] [Scheduler00Thr] dispatcherEventSend:53	Write failed (header) (err -4) | event XLINK_CREATE_STREAM_REQ

E: [global] [    681243] [python3] XLinkOpenStream:87	Cannot find stream id by the "inBlob" name
E: [global] [    681244] [python3] XLinkOpenStream:88	Max streamId reached!
Failed to open stream inBlob ! Retrying ...
E: [xLink] [    681243] [Scheduler00Thr] sendEvents:1027	Event sending failed
E: [global] [    681294] [Scheduler00Thr] dispatcherEventSend:53	Write failed (header) (err -4) | event XLINK_CREATE_STREAM_REQ

E: [global] [    681294] [python3] XLinkOpenStream:87	Cannot find stream id by the "inBlob" name
E: [global] [    681294] [python3] XLinkOpenStream:88	Max streamId reached!
Failed to open stream inBlob ! Retrying ...
E: [xLink] [    681294] [Scheduler00Thr] sendEvents:1027	Event sending failed
E: [global] [    681344] [Scheduler00Thr] dispatcherEventSend:53	Write failed (header) (err -4) | event XLINK_CREATE_STREAM_REQ

E: [global] [    681344] [python3] XLinkOpenStream:87	Cannot find stream id by the "inBlob" name
E: [global] [    681344] [python3] XLinkOpenStream:88	Max streamId reached!
Failed to open stream inBlob ! Retrying ...
E: [xLink] [    681344] [Scheduler00Thr] sendEvents:1027	Event sending failed
E: [global] [    681394] [Scheduler00Thr] dispatcherEventSend:53	Write failed (header) (err -4) | event XLINK_CREATE_STREAM_REQ

E: [xLink] [    681394] [Scheduler00Thr] sendEvents:1027	Event sending failed
E: [global] [    681394] [python3] XLinkOpenStream:87	Cannot find stream id by the "inBlob" name
E: [global] [    681394] [python3] XLinkOpenStream:88	Max streamId reached!
Failed to open stream inBlob ! Retrying ...
Stream not opened: inBlob
depthai: pipelineConfig write error: Blob size too big: 13441536
Error: device does not provide stream: depth_raw
Pipeline is not created.
=== New data in observer stream host_capture, size: 4
Writing 4 bytes to host_capture
!!! XLink write successful: host_capture (4)
E: [global] [    681532] [Scheduler00Thr] dispatcherEventSend:53	Write failed (header) (err -4) | event XLINK_WRITE_REQ

Stopping threads: ...
Stopping threads: DONE 0.000s.
Closing all observer streams: ...
Closing stream host_capture: ...
E: [xLink] [    681532] [Scheduler00Thr] sendEvents:1027	Event sending failed
Closing stream host_capture: DONE.
Closing all observer streams: DONE.
Reseting device: 0.
E: [global] [    681532] [Scheduler00Thr] dispatcherEventSend:53	Write failed (header) (err -4) | event XLINK_RESET_REQ

E: [xLink] [    681532] [Scheduler00Thr] sendEvents:1027	Event sending failed
Reseting: DONE.
(cv_depthai) iotuser@iotuser-Blade:~/depthai$

Hi @abhatikar ,
Sorry about the trouble.
So we relabeled the CLI for depth_raw to depth to match the naming conventions of other streams.  So please use this command instead:
python3 depthai_demo.py -s metaout previewout depth -ff -bb
And if you don't mind, where did you see the reference to depth_raw?  If that is still in our documentation somewhere I'd like to get it fixed so others don't run into this.
Thanks,
Brandon

Thanks Brandon. https://docs.luxonis.com/faq/

(cv_depthai) iotuser@iotuser-Blade:~/depthai$ python3 depthai_demo.py -cnn mobilenet-ssd -s metaout previewout depth -ff -bb
Using depthai module from:  /home/iotuser/cv_depthai/lib/python3.6/site-packages/depthai.cpython-36m-x86_64-linux-gnu.so
Using Custom Calibration File: depthai.calib
WARNING: Depth calculation with raw output format is not supported! It's only supported for YOLO/mobilenet based NNs, disabling calc_dist_to_bb
XLink initialized.
Sending internal device firmware
Successfully connected to device.
Loading config file
Attempting to open stream config_d2h
watchdog started
Successfully opened stream config_d2h with ID #0!
Closing stream config_d2h: ...
Closing stream config_d2h: DONE.
EEPROM data: valid (v5)
  Board name     : BW1098OBC
  Board rev      : R0M0E0
  HFOV L/R       : 71.86 deg
  HFOV RGB       : 68.7938 deg
  L-R   distance : 7.5 cm
  L-RGB distance : 3.75 cm
  L/R swapped    : yes
  L/R crop region: center
  Rectification Rotation R1 (left):
    0.999987,   -0.001160,    0.004909,
    0.001150,    0.999997,    0.002119,
   -0.004912,   -0.002113,    0.999986,
  Rectification Rotation R2 (right):
    0.999988,   -0.003005,    0.003789,
    0.003013,    0.999993,   -0.002110,
   -0.003782,    0.002122,    0.999991,
  Calibration intrinsic matrix M1 (left):
  869.771057,    0.000000,  647.535095,
    0.000000,  871.483765,  418.473907,
    0.000000,    0.000000,    1.000000,
  Calibration intrinsic matrix M2 (right):
  869.137817,    0.000000,  644.909241,
    0.000000,  870.417175,  407.580444,
    0.000000,    0.000000,    1.000000,
  Calibration rotation matrix R:
    0.999998,    0.001861,    0.001134,
   -0.001866,    0.999989,    0.004226,
   -0.001126,   -0.004228,    0.999990,
  Calibration translation matrix T:
   -7.487395,
    0.022499,
   -0.028367,
  Calibration Distortion Coeff d1 (Left):
    0.106500,   43.963959,    0.000695,    0.002498,   23.748280,    0.125551,   42.827187,
   26.160654,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,
  Calibration Distortion Coeff d2 (Right):
    2.987483,   69.966843,    0.000401,    0.001771,   14.714975,    3.052096,   68.236557,
   17.965635,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,
['metaout', 'previewout', 'depth']
Available streams: ['meta_d2h', 'left', 'right', 'disparity', 'depth', 'metaout', 'previewout', 'jpegout', 'video', 'object_tracker', 'rectified_left', 'rectified_right', 'color']
CNN configurations read: /home/iotuser/depthai/resources/nn/mobilenet-ssd/mobilenet-ssd.json
444
445
config_h2d json:
{"_board":{"calib_data":[0.9999873042106628,-0.001159933628514409,0.004909291863441467,0.0011495426297187805,0.999997079372406,0.0021188806276768446,-0.004911735188215971,-0.0021132102701812983,0.9999856948852539,0.999988317489624,-0.0030048189219087362,0.0037885296624153852,0.0030128289945423603,0.9999932050704956,-0.0021103511098772287,-0.00378216290846467,0.0021217407193034887,0.9999905824661255,869.7710571289063,0.0,647.5350952148438,0.0,871.4837646484375,418.4739074707031,0.0,0.0,1.0,869.1378173828125,0.0,644.9092407226563,0.0,870.4171752929688,407.5804443359375,0.0,0.0,1.0,0.999997615814209,0.0018608927493914962,0.001133509329520166,-0.001865667407400906,0.9999893307685852,0.00422582495957613,-0.0011256333673372865,-0.004227929748594761,0.9999904036521912,-7.4873948097229,0.02249852940440178,-0.02836654894053936,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10649976134300232,43.963958740234375,0.0006948882946744561,0.002498225774616003,23.748279571533203,0.1255507916212082,42.827186584472656,26.160654067993164,0.0,0.0,0.0,0.0,0.0,0.0,2.987483263015747,69.96684265136719,0.00040063654887489974,0.0017713055713102221,14.714975357055664,3.052095651626587,68.23655700683594,17.965635299682617,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"mesh_left":[0.0],"mesh_right":[0.0]},"_load_inBlob":true,"_pipeline":{"_streams":[{"name":"metaout"},{"name":"previewout"},{"data_type":"uint16","name":"depth"}]},"ai":{"NCEs":1,"blob0_size":13441536,"blob1_size":0,"calc_dist_to_bb":false,"camera_input":"rgb","cmx_slices":7,"keep_aspect_ratio":false,"num_stages":1,"shaves":7},"app":{"sync_video_meta_streams":false},"board":{"clear-eeprom":false,"left_fov_deg":71.86000061035156,"left_to_rgb_distance_m":0.019999999552965164,"left_to_right_distance_m":0.09000000357627869,"name":"","override-eeprom":false,"revision":"","rgb_fov_deg":68.7938003540039,"stereo_center_crop":true,"store-to-eeprom":false,"swap-left-and-right-cameras":true},"camera":{"mono":{"fps":30.0,"resolution_h":720,"resolution_w":1280},"rgb":{"fps":30.0,"resolution_h":1080,"resolution_w":1920}},"depth":{"confidence_threshold":0.5,"depth_limit_mm":10000,"lr_check":false,"median_kernel_size":7,"padding_factor":0.30000001192092896,"warp_rectify":{"edge_fill_color":0,"mirror_frame":true,"use_mesh":false}},"ot":{"confidence_threshold":0.5,"max_tracklets":20}}
size of input string json_config_obj to config_h2d is ->2415
size of json_config_obj that is expected to be sent to config_h2d is ->1048576
Attempting to open stream config_h2d
Successfully opened stream config_h2d with ID #1!
Writing 1048576 bytes to config_h2d
!!! XLink write successful: config_h2d (1048576)
Closing stream config_h2d: ...
Closing stream config_h2d: DONE.
Creating observer stream host_capture: ...
Attempting to open stream host_capture
Successfully opened stream host_capture with ID #0!
Creating observer stream host_capture: DONE.
Read: 13441536
Attempting to open stream inBlob
Successfully opened stream inBlob with ID #1!
Writing 13441536 bytes to inBlob
!!! XLink write successful: inBlob (13441536)
Closing stream inBlob: ...
Closing stream inBlob: DONE.
depthai: done sending Blob file /home/iotuser/depthai/resources/nn/mobilenet-ssd/mobilenet-ssd.blob
Attempting to open stream outBlob
Successfully opened stream outBlob with ID #2!
Closing stream outBlob: ...
Closing stream outBlob: DONE.
CNN input width: 300
CNN input height: 300
CNN input num channels: 3
CNN to depth bounding-box mapping: start(68, 38), max_size(1144, 643)
Host stream start:depth
Opening stream for read: depth
Attempting to open stream depth
Successfully opened stream depth with ID #1!
Starting thread for stream: depth
Started thread for stream: depth
Host stream start:metaout
Opening stream for read: metaout
Attempting to open stream metaout
Successfully opened stream metaout with ID #2!
Starting thread for stream: metaout
Host stream start:previewout
Opening stream for read: previewout
Attempting to open stream previewout
Started thread for stream: metaout
Successfully opened stream previewout with ID #3!
Starting thread for stream: previewout
depthai: INIT OK!
Started thread for stream: previewout
=== New data in observer stream host_capture, size: 1
Writing 1 bytes to host_capture
!!! XLink write successful: host_capture (1)
Traceback (most recent call last):
  File "depthai_demo.py", line 375, in <module>
    dai.startLoop()
  File "depthai_demo.py", line 362, in startLoop
    keypress_handler(self, key, stream_names)
  File "depthai_demo.py", line 148, in keypress_handler
    cam_l = depthai.CameraControl.CamId.LEFT
AttributeError: module 'depthai' has no attribute 'CameraControl'
malloc_consolidate(): invalid chunk size
Aborted (core dumped)

Brandon,
this is develop branch
(cv_depthai) iotuser@iotuser-Blade:~/depthai$ python3 depthai_demo.py -s metaout previewout depth -ff -bb
Using depthai module from:  /home/iotuser/cv_depthai/lib/python3.6/site-packages/depthai.cpython-36m-x86_64-linux-gnu.so
Using Custom Calibration File: depthai.calib
WARNING: Depth calculation with raw output format is not supported! It's only supported for YOLO/mobilenet based NNs, disabling calc_dist_to_bb
XLink initialized.
Sending internal device firmware
Successfully connected to device.
Loading config file
watchdog started Attempting to open stream config_d2h

Successfully opened stream config_d2h with ID #0!
Closing stream config_d2h: ...
Closing stream config_d2h: DONE.
EEPROM data: valid (v5)
  Board name     : BW1098OBC
  Board rev      : R0M0E0
  HFOV L/R       : 71.86 deg
  HFOV RGB       : 68.7938 deg
  L-R   distance : 7.5 cm
  L-RGB distance : 3.75 cm
  L/R swapped    : yes
  L/R crop region: center
  Rectification Rotation R1 (left):
    0.999987,   -0.001160,    0.004909,
    0.001150,    0.999997,    0.002119,
   -0.004912,   -0.002113,    0.999986,
  Rectification Rotation R2 (right):
    0.999988,   -0.003005,    0.003789,
    0.003013,    0.999993,   -0.002110,
   -0.003782,    0.002122,    0.999991,
  Calibration intrinsic matrix M1 (left):
  869.771057,    0.000000,  647.535095,
    0.000000,  871.483765,  418.473907,
    0.000000,    0.000000,    1.000000,
  Calibration intrinsic matrix M2 (right):
  869.137817,    0.000000,  644.909241,
    0.000000,  870.417175,  407.580444,
    0.000000,    0.000000,    1.000000,
  Calibration rotation matrix R:
    0.999998,    0.001861,    0.001134,
   -0.001866,    0.999989,    0.004226,
   -0.001126,   -0.004228,    0.999990,
  Calibration translation matrix T:
   -7.487395,
    0.022499,
   -0.028367,
  Calibration Distortion Coeff d1 (Left):
    0.106500,   43.963959,    0.000695,    0.002498,   23.748280,    0.125551,   42.827187,
   26.160654,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,
  Calibration Distortion Coeff d2 (Right):
    2.987483,   69.966843,    0.000401,    0.001771,   14.714975,    3.052096,   68.236557,
   17.965635,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,    0.000000,
['metaout', 'previewout', 'depth']
Available streams: ['meta_d2h', 'left', 'right', 'disparity', 'depth', 'metaout', 'previewout', 'jpegout', 'video', 'object_tracker', 'rectified_left', 'rectified_right', 'color']
CNN configurations read: /home/iotuser/depthai/resources/nn/mobilenet-ssd/mobilenet-ssd.json
444
445
config_h2d json:
{"_board":{"calib_data":[0.9999873042106628,-0.001159933628514409,0.004909291863441467,0.0011495426297187805,0.999997079372406,0.0021188806276768446,-0.004911735188215971,-0.0021132102701812983,0.9999856948852539,0.999988317489624,-0.0030048189219087362,0.0037885296624153852,0.0030128289945423603,0.9999932050704956,-0.0021103511098772287,-0.00378216290846467,0.0021217407193034887,0.9999905824661255,869.7710571289063,0.0,647.5350952148438,0.0,871.4837646484375,418.4739074707031,0.0,0.0,1.0,869.1378173828125,0.0,644.9092407226563,0.0,870.4171752929688,407.5804443359375,0.0,0.0,1.0,0.999997615814209,0.0018608927493914962,0.001133509329520166,-0.001865667407400906,0.9999893307685852,0.00422582495957613,-0.0011256333673372865,-0.004227929748594761,0.9999904036521912,-7.4873948097229,0.02249852940440178,-0.02836654894053936,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.10649976134300232,43.963958740234375,0.0006948882946744561,0.002498225774616003,23.748279571533203,0.1255507916212082,42.827186584472656,26.160654067993164,0.0,0.0,0.0,0.0,0.0,0.0,2.987483263015747,69.96684265136719,0.00040063654887489974,0.0017713055713102221,14.714975357055664,3.052095651626587,68.23655700683594,17.965635299682617,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"mesh_left":[0.0],"mesh_right":[0.0]},"_load_inBlob":true,"_pipeline":{"_streams":[{"name":"metaout"},{"name":"previewout"},{"data_type":"uint16","name":"depth"}]},"ai":{"NCEs":1,"blob0_size":13441536,"blob1_size":0,"calc_dist_to_bb":false,"camera_input":"rgb","cmx_slices":7,"keep_aspect_ratio":false,"num_stages":1,"shaves":7},"app":{"sync_video_meta_streams":false},"board":{"clear-eeprom":false,"left_fov_deg":71.86000061035156,"left_to_rgb_distance_m":0.019999999552965164,"left_to_right_distance_m":0.09000000357627869,"name":"","override-eeprom":false,"revision":"","rgb_fov_deg":68.7938003540039,"stereo_center_crop":true,"store-to-eeprom":false,"swap-left-and-right-cameras":true},"camera":{"mono":{"fps":30.0,"resolution_h":720,"resolution_w":1280},"rgb":{"fps":30.0,"resolution_h":1080,"resolution_w":1920}},"depth":{"confidence_threshold":0.5,"depth_limit_mm":10000,"lr_check":false,"median_kernel_size":7,"padding_factor":0.30000001192092896,"warp_rectify":{"edge_fill_color":0,"mirror_frame":true,"use_mesh":false}},"ot":{"confidence_threshold":0.5,"max_tracklets":20}}
size of input string json_config_obj to config_h2d is ->2415
size of json_config_obj that is expected to be sent to config_h2d is ->1048576
Attempting to open stream config_h2d
Successfully opened stream config_h2d with ID #1!
Writing 1048576 bytes to config_h2d
!!! XLink write successful: config_h2d (1048576)
Closing stream config_h2d: ...
Closing stream config_h2d: DONE.
Creating observer stream host_capture: ...
Attempting to open stream host_capture
Successfully opened stream host_capture with ID #0!
Creating observer stream host_capture: DONE.
Read: 13441536
Attempting to open stream inBlob
Successfully opened stream inBlob with ID #1!
Writing 13441536 bytes to inBlob
!!! XLink write successful: inBlob (13441536)
Closing stream inBlob: ...
Closing stream inBlob: DONE.
depthai: done sending Blob file /home/iotuser/depthai/resources/nn/mobilenet-ssd/mobilenet-ssd.blob
Attempting to open stream outBlob
Successfully opened stream outBlob with ID #2!
Closing stream outBlob: ...
Closing stream outBlob: DONE.
CNN input width: 300
CNN input height: 300
CNN input num channels: 3
CNN to depth bounding-box mapping: start(68, 38), max_size(1144, 643)
Host stream start:depth
Opening stream for read: depth
Attempting to open stream depth
Successfully opened stream depth with ID #1!
Starting thread for stream: depth
Host stream start:Started thread for stream: depth
metaout
Opening stream for read: metaout
Attempting to open stream metaout
Successfully opened stream metaout with ID #2!
Starting thread for stream: metaout
Host stream start:previewout
Opening stream for read: previewout
Attempting to open stream previewout
Started thread for stream: metaout
Successfully opened stream previewout with ID #3!
Starting thread for stream: previewout
depthai: INIT OK!
Started thread for stream: previewout
=== New data in observer stream host_capture, size: 1
Writing 1 bytes to host_capture
!!! XLink write successful: host_capture (1)
Traceback (most recent call last):
  File "depthai_demo.py", line 375, in <module>
    dai.startLoop()
  File "depthai_demo.py", line 362, in startLoop
    keypress_handler(self, key, stream_names)
  File "depthai_demo.py", line 148, in keypress_handler
    cam_l = depthai.CameraControl.CamId.LEFT
AttributeError: module 'depthai' has no attribute 'CameraControl'

So @abhatikar
It looks like you are partially using the develop branch, and partially using main.  And the code are not cross-compatible.
Can you do the following to update?
https://docs.luxonis.com/api/#usingtesting-a-specific-branchpr

Probably worth doing a git pull as well before running:
python3 -m pip install -U pip
python3 -m pip install -r requirements.txt

This should take care of the incompatibility issue you are seeing.  I'll test develop real quick just to double-check.

Yes, develop works for me:

I also just noticed that a difference between we are running the script is:

I am running from the local repository with ./depthai_demo.py -s metaout previewout depth -ff -bb and you are running from your site packages with depthai_demo.py -s metaout previewout depth -ff -bb.

So likely the site package needs to be upgraded to develop as well in that case.  Looking how to do that.

Oh, sorry, disregard - you had simply added depthai_demp.py to your path I think.  Anyway, the above should fix it.  If not please do ping us.  :-)


Complete modules sample.

Code snippets for https://cloud.google.com/appengine/docs/php/modules/

Coverage remained the same at 86.822% when pulling 0a8eb8f3b0a3d87ab0381073a4dcaa3605566fa5 on adding-modules into d8d2b4c4d0d25223fc0fd451a3ab24cfaacf97a6 on master.

Coverage remained the same at 86.822% when pulling de277acc0c68b743329c393705e1ffdd334b9c35 on adding-modules into d8d2b4c4d0d25223fc0fd451a3ab24cfaacf97a6 on master.

Coverage remained the same at 86.822% when pulling 1ad4cc52611421773d6828c0c2c1d39debd633bc on adding-modules into d8d2b4c4d0d25223fc0fd451a3ab24cfaacf97a6 on master.

Coverage remained the same at 86.822% when pulling e0c5ebfaf408a5ecf7c17b7817a4be731f8391d1 on adding-modules into d8d2b4c4d0d25223fc0fd451a3ab24cfaacf97a6 on master.

Coverage decreased (-0.2%) to 86.649% when pulling 2e77914cd0b9e9e16535ac3c02a4de5e05ae354b on adding-modules into d8d2b4c4d0d25223fc0fd451a3ab24cfaacf97a6 on master.

Coverage remained the same at 86.822% when pulling 2e77914cd0b9e9e16535ac3c02a4de5e05ae354b on adding-modules into d8d2b4c4d0d25223fc0fd451a3ab24cfaacf97a6 on master.

Coverage increased (+0.3%) to 87.08% when pulling 9caee1bd061f501881f2df4ed940050c8908d4d1 on adding-modules into d8d2b4c4d0d25223fc0fd451a3ab24cfaacf97a6 on master.

Coverage decreased (-0.2%) to 86.649% when pulling 320d252e26d9e1d975ec00dd9199f49317ff93c5 on adding-modules into d8d2b4c4d0d25223fc0fd451a3ab24cfaacf97a6 on master.

Coverage increased (+0.3%) to 87.08% when pulling 3eae10fdb21c1bf0cc4786a9ea952f1b18a97337 on adding-modules into d8d2b4c4d0d25223fc0fd451a3ab24cfaacf97a6 on master.

Coverage decreased (-0.2%) to 86.649% when pulling de83195f62c80cb44e0bcad83af397e7b850d9a6 on adding-modules into d8d2b4c4d0d25223fc0fd451a3ab24cfaacf97a6 on master.

Coverage decreased (-0.4%) to 86.649% when pulling dd5d96364247dcfc3f1be4ec698d551a8400ab20 on adding-modules into 1c606172a0750f7c716d092ae56b01e79487f0ee on master.

Coverage increased (+0.3%) to 87.339% when pulling 05204368e27229cf25c7393e601b421583986a47 on adding-modules into 1c606172a0750f7c716d092ae56b01e79487f0ee on master.

Coverage decreased (-0.4%) to 86.649% when pulling 0233b664eae32517c35c1653c6798055af2fdb5e on adding-modules into 1c606172a0750f7c716d092ae56b01e79487f0ee on master.

Coverage decreased (-0.8%) to 86.305% when pulling 2cd9e018cf489e4bca620e4966e158f829a28557 on adding-modules into 1c606172a0750f7c716d092ae56b01e79487f0ee on master.

Finally the LocalTestTrait started to work on Travis. The current failure is about Mailgun rate limiting.
Can you take a look @bshaffer ?

Coverage decreased (-0.8%) to 86.305% when pulling 30f2632eef17800aecfa78670e3d2cf8ac96a536 on adding-modules into 1c606172a0750f7c716d092ae56b01e79487f0ee on master.

Coverage decreased (-0.3%) to 86.822% when pulling f1de5485570f99a24f75e3f44a4434ca350a9f7e on adding-modules into 1c606172a0750f7c716d092ae56b01e79487f0ee on master.

Coverage decreased (-0.3%) to 86.822% when pulling f1de5485570f99a24f75e3f44a4434ca350a9f7e on adding-modules into 1c606172a0750f7c716d092ae56b01e79487f0ee on master.

Coverage decreased (-0.4%) to 86.649% when pulling 7baa727868e1390d7bb11ab6106a3ac324fc1a7b on adding-modules into 1c606172a0750f7c716d092ae56b01e79487f0ee on master.

@bshaffer Sorry for lots of changes, but it's ready for another look PTAL

LGTM, although I'd love to see an explanation (in comment or readme) for backend.php

@bshaffer Thanks!
Added a comment in backend.php, and squashed the commits. I will merge this once the test passes.

Coverage decreased (-0.5%) to 86.822% when pulling 6f95c8b5014aaaeaea5904424c8b5808c7311fdf on adding-modules into dba8e3a531046200e3a423e223c56b53b6c50821 on master.


Add pylint GitHub Action

Is your feature request related to a problem? Please describe.
Add GitHub Action on pull request for pylinting on PR

assugn me


[Epic] Database layer performance and stability

Completed

[x] IAVL state export --height bug

Appears to have fixed the app hash mismatch being observed

[x] #1037
[x] Backport 7.0.3 IAVL changes to v6.4.0
[x] #1042
[x] https://github.com/osmosis-labs/iavl/issues/22
[x] #1065
[x] https://github.com/osmosis-labs/osmosis/issues/932
[x] https://github.com/osmosis-labs/osmosis/issues/1137
[x] https://github.com/osmosis-labs/cosmos-sdk/pull/155
[x] https://github.com/osmosis-labs/iavl/issues/24
[x] #1041
[x] #1175
[x] https://github.com/osmosis-labs/cosmos-sdk/issues/149

In progress

[ ] https://github.com/osmosis-labs/osmosis/issues/1140

[ ] https://github.com/osmosis-labs/osmosis/issues/1163

Medium Priority

[ ] https://github.com/osmosis-labs/cosmos-sdk/issues/148

Blocked

[ ] #1090

Planning to not spend too much time on investigating on nodes, until we get an improved mainnet node setup automation, via ansible & prometheus. Otherwise we spend all the time in node setup / attempts at reproducing
We also want to try reproducing in the e2e test suite once its further along

As discussed in sprint planning, this epic is getting closed. #1163 and https://github.com/osmosis-labs/cosmos-sdk/issues/148 are getting moved as frogs to the current sprint while all the remaining issues are moved to be tracked #1172 without specific priority assigned to them


Management Certificate support for WebSiteManagementClient

Hi,
At Octopus, we currently support both Azure Management Certificates and Service Principals as connection options for querying and deploying Azure web apps.
We're trying to upgrade our libraries to use your latest Azure SDK, but can't find a way to connect with a Management Certificate.
If we use the older SDK @ Microsoft.WindowsAzure.Management.WebSites, we can create a WebSiteManagementClient using a Management Certificate (via CertificateCloudCredentials) and query the subscription's web apps just fine. But we believe this library is deprecated and quite limited in the data that it returns (especially since we want to start querying Azure Functions as well as Web Apps).
If we use this SDK @ Microsoft.Azure.Management.WebSites, is there anyway to establish a WebSiteManagementClient login non-interactively if all you have is a subscription's Management Certificate (X509) and the SubscriptionId, like you used to be able to do with the older SDK?
If not, as a workaround, is there a way we could obtain an AccessToken using just a Management Certificate + SubscriptionId? Are there any code examples of this?
Any advice appreciated
Thanks
Mark

@schaabs will this be solved when the management libraries are released on top of Azure.Identity?

I believe the ClientCloudCredentials class mentioned here is for authenticating "classic" deployment requests. Currently our management plane libraries only support ARM, not the "classic" ASM/RDFE deployments which are in the process of being deprecated. So there are no plans to support this authentication mechanism in Azure.Identity or Azure.Core.
The closest analog to this in Azure.Identity would be the ClientCertificateCredential. This is also certificate based authentication, however it authenticates a specific service principal. To authenticate in this manner you need to create a service principal and assign that service principal the desired roles within your subscription to grant it access.

I'm closing this issue as we are not planning support. @MarkSiedle If you disagree please feel free to reopen.


Use v2 of codecov action

Codecov Report

Merging #33 (dd9d0ce) into master (4b9c644) will increase coverage by 0.38%.
The diff coverage is 85.71%.

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

@@            Coverage Diff             @@
##           master      #33      +/-   ##
==========================================
+ Coverage   56.56%   56.95%   +0.38%
==========================================
  Files           8        8
  Lines         221      223       +2
==========================================
+ Hits          125      127       +2
  Misses         96       96

Impacted Files
Coverage Δ

napari_arboretum/plugin.py
23.07% <50.00%> (+1.50%)
:arrow_up:

napari_arboretum/graph.py
97.05% <100.00%> (+0.04%)
:arrow_up:

Continue to review full report at Codecov.

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


iohook\builds\electron-v64-win32-ia32\build\Release\iohook.node is not a valid Win32 application

Expected Behavior
The electron app should work properly on both 64 bit and 32 bit machines
Current Behavior
The app is working properly on 64 bit machine
Not working on 32 bit machine getting following error
[Screenshot] (https://github.com/gvahuja/electron-issue/blob/master/Screenshot (3).png)
Possible Solution
I thought the possible solutions would be:

Compile electron-app and build executable for 32 bit in 32 bit machine (didn't work)
Copy the 32 bit binaries of iohook from here and paste them in the respective build folder to work. (not working)

Context
I want to run my electron app in 32 bit windows machine
My package.json config for iohook
 "iohook": {     "targets": [       "node-64",       "electron-64"     ],     "platforms": [       "win32",       "darwin",       "linux"     ],     "arches": [       "x64",       "ia32"     ]   }
Your Environment

Version used: iohook 0.3.1
Environment name and version: node-v64 electron-v64
Operating System and version (desktop or mobile): Windows 10 x64 and Windows 7 x86

I referred this comment and build executable with electron-v57 it worked for windows 32-bit machine also but I want to use electron-v64. I'll also try the same steps for v64 as the author of this comment has mentioned for v-57 and will comment if it works.

I was able to build win32 ia32 binaries for electron v3.0.0 (ABI v64) and node v10.14.1 (ABI v64). I just followed the steps of this comment.
Here are the builds, follow the steps in Readme to resolve the issue. I am using the builds and it's working properly on Windows 32bit machine.


buster warnings

Hey Stephan,
Thanks again for having put this together!
When executing docker-compose run buster, Im wondering if those issue are normal:

curl: (23) Failed writing body (0 != 16123)
0Warning: Failed to create the file static/talks/index.html: No such file or Warning: directory

0Warning: Failed to create the file static/talks/index.html: No such file or
Warning: directory
curl: (23) Failed writing body (0 != 1791)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0Warning: Failed to create the file static/rss/index.html: No such file or
Warning: directory
curl: (23) Failed writing body (0 != 16123)
Fixing links to https
Fixing some blog posts
Removing index.html from links
Starting ghostbuster_preview_1

Cheers!

 I guess we can close this!

Yes, that page wasn't rendered to HTML automatically. Feel free to adjust buster.sh to your needs.

Sure. Thanks again for sharing this :)


BSERV-13539: Fix yaml not being parsed correctly

Reported again in PS-123025
Unsure if it's to do with formatting. Done that anyway on main


Bump containerd to remove (unaffected) CVEs

Fixes CVE-2022-23648

Codecov Report

Merging #933 (da3174b) into main (1b6bab0) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #933   +/-   ##
=======================================
  Coverage   69.66%   69.66%
=======================================
  Files         119      119
  Lines        5364     5364
=======================================
  Hits         3737     3737
  Misses       1265     1265
  Partials      362      362

Continue to review full report at Codecov.

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


no argument named profile

The run command is failing here. See the output below:
➜ cargo build --release
   Compiling proc-macro2 v1.0.36
   Compiling unicode-xid v0.2.2
   Compiling syn v1.0.86
   Compiling cc v1.0.73
   Compiling serde_derive v1.0.136
   Compiling serde v1.0.136
   Compiling memchr v2.4.1
   Compiling autocfg v1.1.0
   Compiling pkg-config v0.3.24
   Compiling erased-serde v0.3.20
   Compiling once_cell v1.9.0
   Compiling rustc-hash v1.1.0
   Compiling compleet v0.1.0 (/[HIDDEN_PATH]/nvim-compleet)
error: there is no argument named `profile`
  --> build.rs:10:15
   |
10 |     @cp ./target/{profile}/libcompleet.so ./lua/compleet.so
   |                  ^^^^^^^^^

error: there is no argument named `profile`
  --> build.rs:11:15
   |
11 |     @cp ./target/{profile}/deps/*.rlib ./lua/deps
   |                  ^^^^^^^^^

error: could not compile `compleet` due to 2 previous errors
warning: build failed, waiting for other jobs to finish...
error: build failed

What your rustc --version? I believe that syntax is only supported for 1.58+.

That was it. I made sure to update to the latest version while trying, but didn't notice that there was two install paths, and the old one was the one being used. Thanks!

OK, I was able to run the cargo build --release successfully although, I don't see the .so file:
nvim-compleet on master ≡
➜ make install
cp: ./target/release/libcompleet.so: No such file or directory
make: *** [install] Error 1
nvim-compleet on master ≡ x
➜ ls target/release
 build   deps   examples   incremental   libcompleet.d   libcompleet.dylib
nvim-compleet on master ≡

Mh, try renaming libcompleet.dylib to libcompleet.so and run make install again.