Bilevel BW png

Linux64 Slackware Tesseract 4.0.0
Tesseract PDF output from BW /bilevel type/ png is white on black.

Png  is generated from IM or ghostscript .
From BW type grayscale is OK.

Attach the input PNG please.

interesting: tesseract i2059.png i2059 pdf get.image dumpes internal pix as  tessinput.tif which is correct...

Next Leptonica will have a fix. We can also add a workaround in Tesseract
which will for force transcode for 1 bit per pixel PNG in pdfrenderer.cpp

I observe the same color inverted problem in PDF output using the latest code.
Version:
tesseract 5.0.0
leptonica-1.78.0 (Mar 23 2019, 10:29:44) [MSC v.1916 DLL Release x86]
libgif 5.1.4 : libjpeg 9c : libpng 1.6.36 : libtiff 4.0.10 : zlib 1.2.11 : libwebp 1.0.1 : libopenjp2 2.3.0

out.pdf

Thought we fixed this already in Leptonica. Dan will take a look.

I don't remember what we did.  I can't work on this for 2 weeks.  Jeff, can you figure out what needs to be done to fix the problem?

@jbreiden @DanBloomberg : issue is still valid for the latest code of tesseract and leptonica.

https://github.com/DanBloomberg/leptonica/blob/master/src/pdfio2.c#L656
Reproduces in pure Leptonica, using converttopdf from leptonica-progs.
Leptonica sees this image is binary
(1 bit per sample) and decides to transcode. It calls pixRead()
then pixGenerateFlateData(). The input image
does have a colormap. Need to do a bit more tracing to see where it goes
wrong.
Colormap entries: 2
Colormap:
0: (  0,  0,  0) #000000 gray(0)
1: (255,255,255) #FFFFFF gray(255)

the colormap is opposite to the standard photometry for 1 bpp.
So it's likely that we're just ignoring the fact that there is a colormap, which would give us a video-inverted image.   If so, the fix is to check for the colormap and remove it first.

Or the colormap doesn't make it into the PDF.

Looked at the code, both in pngio.c and pdfio2.c.
Leptonica appears to be doing the right thing.  When
identify -verbose
indicates a colormap in a b/w png, there is an ambiguity.  It may in fact have a colormap, or it may not, in which case 'identify' pretends that it does.  For a b/w pix without a colormap, png stores the values inverted, so the png reader must invert the pixel value.  However, if the 1 bpp png actually has a colormap, the reader removes it, and in doing so, it compares the color components of index 0 and 1. For a b/w colormap, it inverts if 1 is 255 and 0 is 0.  (Removal of the colormap must be lossless -- i.e., not change the values of the pixels)
So much for png.  For pdf generation, as Jeff mentioned, a 1 bpp image will be transcoded.  The first step is reading the image.  As described above, a b/w pix (with or without a colormap), after being written to png and read back to a pix, is unchanged.  The pdf generator doesn't change the polarity either.
If someone can find a 1 bpp (b/w) image, as a png file, with or without a colormap, that gets inverted as a pdf (e.g., using convertToPdf), please attach it to this issue.

Perhaps the problem is in tesseract.  Are the 1 bpp images being transcoded?

@jbreiden: convertToPdf with above mentioned images create "not inverted" pdf.
tessinput.tif created during
tesseract 48639675-31a07680-e9cc-11e8-9e47-00130ea102c1.png a get.images pdf is correct...

@jbreiden: did you have a chance to have a look at this?

Taking time now to look again. Let's use this image and trace.
https://user-images.githubusercontent.com/1501035/59963730-d03e0a00-94bc-11e9-804a-f7f20e17bb4e.png
pixGenerateCIData runs, which dispatches to pixGenerateFlateData.  It gets
back this:
cid->type = L_FLATE_ENCODE.
cid->ncolors = 0

That causes us to write a PDF object containing this metadata, which I
think is the only possible choice.
/ColorSpace /DeviceGray
/BitsPerComponent 1
/Filter /FlateDecode
/DecodeParms << /Colors 1 /BitsPerComponent 1 >>
I think this isolates where we are going wrong. Either the pixels need to
be inverted, or we need to keep the colormap. Either way, I think the
answer is going to be in pixGenerateFlateData.

Looking even more carefully at code in pdfrenderer.cpp, I see that all PNG
files are routed through pixGenerateCIData().
https://github.com/tesseract-ocr/tesseract/blob/master/src/api/pdfrenderer.cpp#L679
if (pixGetInputFormat(pix) == IFF_PNG)
sad = pixGenerateCIData(pix, L_FLATE_ENCODE, 0, 0, &cid);
That is the proximate cause of this bug. When I originally wrote this code,
my intention was to route as much PNG as possible
through l_generateCIDataForPdf, which is the most "hands off" code path and
handles this image just fine. This is what the code looked like last time I
touched it, on 2016-07-21.
if (pixGetSpp(pix) == 4 && format == IFF_PNG) {
Pix *p1 = pixAlphaBlendUniform(pix, 0xffffff00);
sad = pixGenerateCIData(p1, L_FLATE_ENCODE, 0, 0, &cid);
pixDestroy(&p1);
} else {
sad = l_generateCIDataForPdf(filename, pix, kJpegQuality, &cid);
}
My suggestion is for solving this bug is:
(a) Review change history and find out why Tesseract started routing all
PNG to pixGenerateCIData
(b) Set everything (or as much as possible) back to  l_generateCIDataForPdf
(c) Test with the various tricky flavors of PNG from bug reports over the
years
(d) Once all is well, lock it down with a unit test

Thank you for looking at this, Jeff.
I haven't been able to prove that the change you found is responsible for the inversion problem.
Someone needs to substitute l_generateCIDataForPdf() for pixGenerateCIData() to see if the problem is fixed.
I did a little experimentation with that image.  The test program is attached (I had to call it ".txt" to upload it).
Calling pixGenerateCIData() on a 1 bpp pix with a colormap generates a proper pdf with the colormap embedded.
Calling l_generateCIDataForPdf() from a pdf file of 1 bpp image with a colormap: causes the colormap to be removed, and then generates a proper pdf.
pdftest_invert.txt

Someone needs to substitute l_generateCIDataForPdf() for
pixGenerateCIData() to see if the problem is fixed.

I did. It works for the image in this bug. However, I did not test against
the images from other bugs, e.g.
https://github.com/tesseract-ocr/tesseract/issues/1914
https://github.com/tesseract-ocr/tesseract/issues/1361
[ I'm sure there were some more, not sure how to find them ]

Calling pixGenerateCIData() on a 1 bpp pix with a colormap generates a
proper pdf with the colormap embedded.

This contradicts my tests from yesterday. Send me the output PDF, please.

The attached pdf with a colormap is generated in lines 35-38 of pdftest_invert  (attached above).
bitinvert1.pdf

@jbreiden : I am afraid problem is somewhere else: regardless I used l_generateCIDataForPdf or pixGenerateCIData I got inverted image in pdf.
So I made simple test: create pdf from cid with:
  l_uint8 *test_data;
  size_t test_nbytes;
  cidConvertToPdfData(cid, "testing issue 2059", &test_data, &test_nbytes);
  l_binaryWrite("test_i2059.pdf", "w", test_data, test_nbytes);
  delete test_data;
  printf("test finished.\n");

after
https://github.com/tesseract-ocr/tesseract/blob/048f729785c84c750ecf637e1bd143a8b4abd537/src/api/pdfrenderer.cpp#L678-L683
and test_i2059.pdf has not inverted image...

@jbreiden: when I add to result pdf /Decode [1 0] to PDF object metadata after /ColorSpace /DeviceGray - result image is shown correctly. See i2059_org.pdf and i2059_fixed.pdf.

@zdenop is right.  This "/Decode [1 0]" was the missing piece of the
puzzle. An immediate fix is to add that to pdfrender.cpp in Tesseract,
similar to how Leptonica does it.
https://github.com/tesseract-ocr/tesseract/blob/master/src/api/pdfrenderer.cpp#L724
https://github.com/DanBloomberg/leptonica/blob/master/src/pdfio2.c#L1953
However, I would still like to send most or all PNG files to
l_generateCIDataForPdf,to avoid transcoding. It would be super helpful to
have various flavors on PNG on hand to test, such as:
(1) 1 bit per pixel, not indexed
(2) 1 bit per pixel, indexed with 0 = black, 1 = white (from this bug)
(3) 1 bit per pixel, indexed with 1 = black, 0 = white
(4) 1 bit per pixel, indexed with 2 colors that are not black or white
(5) That fun image from
https://github.com/tesseract-ocr/tesseract/issues/369

fixed with 4a37cde0d9faa8b12d387aee932d23a7ae1b1fdf.

(4) - is it possible to create such png? I tried convert 3_colors_no_bw.png -colors 2 +dither image.bmp (irfanview) reports is has 2 colors (1 BitsPerPixel). When I tried convert 3_colors_no_bw.png -colors 2 +dither image.png irfanview reports is has 16,7 Million (24 BitsPerPixel)...

I'm not sure what you're trying to do, but if you add dithering, the value
of every pixel depends on its neighbors, and if there is color, there are
in general no restrictions on the rgb values that the pixels can achieve.
The only way to represent such an image is in a full color space, because
colormaps with 8 bit pixels can only have 256 different values.
On Sun, Oct 27, 2019 at 6:36 AM zdenop<EMAIL_ADDRESS>wrote:

(4) - is it possible to create such png? I tried convert
3_colors_no_bw.png -colors 2 +dither image.bmp (irfanview) reports is has
2 colors (1 BitsPerPixel). When I tried convert 3_colors_no_bw.png
-colors 2 +dither image.png irfanview reports is has 16,7 Million (24
BitsPerPixel)...
[image: 3_colors_no_bw]
https://user-images.githubusercontent.com/574156/67635398-eb83b080-f8c6-11e9-8457-1f73c66f9503.png
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tesseract-ocr/tesseract/issues/2059?email_source=notifications&email_token=AD7KMLFHGC7UW6QYRZHO3B3QQWDMFA5CNFSM4GE2MKZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECK6QJQ#issuecomment-546695206,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD7KMLE3DSEN4Y7YEHG3ODTQQWDMFANCNFSM4GE2MKZQ
.

Jeff wants in (4) png "1 bit per pixel, indexed with 2 colors that are not black or white" image

you can make it with leptonica, as I did in the test program I attached to
this bug.
Read the 1 bpp image.  Make a colormap consisting of two colors with any
rgb values.
The first color is applied to the 0 pixels, the second to the 1 pixels.
Then add the
colormap to the pix and save as png.
If you want, I'll do this tomorrow with your cat and mouse story image
(btw, I don't entirely trust that cat ...)
On Sun, Oct 27, 2019 at 8:58 AM zdenop<EMAIL_ADDRESS>wrote:

Jeff wants in (4) png "1 bit per pixel, indexed with 2 colors that are not
black or white" image
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tesseract-ocr/tesseract/issues/2059?email_source=notifications&email_token=AD7KMLCVG7QQF7ULAE4DYZ3QQWUDFA5CNFSM4GE2MKZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECLBTFA#issuecomment-546707860,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD7KMLEDVEONUHITKIMRM5LQQWUDFANCNFSM4GE2MKZQ
.

It would be great Dan. BTW: text is begin of fairy tale CAT AND MOUSE IN PARTNERSHIP By The Brothers Grimm.

Goal is to make a set of test images, and find out what types of PNG can
safely move from pixGenerateCIData to l_generateCIDataForPdf. If we are
super lucky, it will be everything.
PS. I feel like I am living in a fairy tale with today's power outage.
https://www.sfchronicle.com/california-wildfires/article/PG-E-outages-loom-for-up-to-2-million-in-14564579.php

@zdenop
Took your cat-and-mouse example image (antialiased, with 16 colors) and converted it to 1 bpp with colors similar to those in the original, using:
   pix1 = pixRead("cat-and-mouse-orig.png");     pix2 = pixConvertTo32(pix1);     pix3 = pixConvertTo1(pix2, 225);     cmap = pixcmapCreate(1);     pixcmapAddColor(cmap, 254, 240, 185);     pixcmapAddColor(cmap, 50, 50, 130);     pixSetColormap(pix3, cmap);     pixWrite("cat-and-mouse.png", pix3, IFF_PNG);
The output image is attached.

I've incorporated some tests into the leptonica test prog/pdfio1_reg.c
Namely, lines 221 - 272.  It has a new function I wrote that converts an RGB image to a colormapped one, if the number of colors <= 256.
The reason for this function is that the image cat-and-mouse.png has a colormap, but when it is read in to make a pix, it is converted into a 32 bpp RGB.  This function converts it back to a 1 bpp pix.
pdftest.txt
The input image is

@jbreiden : will you be able to create unittests for this?

Ahoi !
Since commit 4a37cde0d9faa8b12d387aee932d23a7ae1b1fdf the output is inverted for my images. The images are created by scantailor .
inverted result.pdf
MSR - messen steuern regeln 5 1984 0018_1L.tar.gz

@ShinjiLE : thanks for example. Your files are missing part for this puzzle. In this case there should be   /Decode [0 1] instead of  /Decode [1 0].
I wonder if this can not be handled by leptonica instead for coding it in tesseract...

@DanBloomberg @jbreiden: what about create function at leptonica for this? It would take cid as argument that will return string with all needed information? I feel like we will copy this part of leptonica to tesseract step by step and I think it would be better to manage (possible) problem in place (in leptonica).

I haven't looked carefully at the tesseract code, and do not know why there
is this apparent duplication.
Once the cid (L_COMP_DATA struct) is built, there is just one call to make
the pdf data:
cidConvertToPdfData()
This makes an lpd (L_PDF_DATA struct), and launches
l_generatePdf(&data, &size, lpd)
to make the pdf string.  l_generatePdf()  uses this lpd to sequentially
call:
generateFixedStringsPdf(lpd);
generateMediaboxPdf(lpd);
generatePageStringPdf(lpd);
generateContentStringPdf(lpd);
generatePreXStringsPdf(lpd);
generateColormapStringsPdf(lpd);
generateTrailerPdf(lpd);
generateOutputDataPdf(pdata, pnbytes, lpd);
I agree it would be nice if tesseract can use as many of these generators
as possible.
On Thu, Nov 7, 2019 at 4:45 AM zdenop<EMAIL_ADDRESS>wrote:

@DanBloomberg https://github.com/DanBloomberg @jbreiden
https://github.com/jbreiden: what about create function at leptonica
for this? It would take cid as argument that will return string with all
needed information? I feel like we will copy this part of leptonica
https://github.com/DanBloomberg/leptonica/blob/8d696ce2997e68e0cf8a7fe1d175fe2584f549c0/src/pdfio2.c#L1914-L2007
to tesseract step by step and I think it would be better to manage
(possible) problem in place (in leptonica).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tesseract-ocr/tesseract/issues/2059?email_source=notifications&email_token=AD7KMLDXLWXNTPFLDHTCFATQSQEW5A5CNFSM4GE2MKZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDMJD4I#issuecomment-551064049,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD7KMLCLBQKQ6BPWN7J74DTQSQEW5ANCNFSM4GE2MKZQ
.

I am sick, but willing and (hopefully) able to spend time figuring this out
gracefully when I feel better. In meantime g4 Tiff is broken and that is a
very important format. Please narrow as per my previous comment. I can't do
it myself because I lost my GitHub 2-factor authentication.

understand. done. 2d6f38eebf9a14d9fbe65d785f0d7bd898ff46cb

There was a new issue #2771 reported which has a similar problem, but with TIFF instead of PNG. It claims that 4.1 worked correctly, so that might be different.


Do we need main branch anymore?

This repo is primarily for hosting the website deployed from the gh-pages branch. Do we even need main anymore?
I think we can get the mybinder stuff to work from gh-pages.

duplicate of #29


change recvmsg() to take a buffer

Alternatively, can turn this into a separate method to not break the API. I don't know if there's a naming convention for allocating vs. non-allocating methods.

I think I'm OK making this breaking change, since this new version better aligns with how UDT itself works, and how other rust APIs work.
Can you please:

Bump the version in Cargo.toml to 0.2
Make sure that the tests run

Thanks!

sounds good! fixed the tests, bumped the version.

This change has been published as version v0.2.0


support both vertical and horizontal scroll for on cdkDrag

hi @volser , can on cdkDrag item work with two scroll containers? vertically in the cdkDropList and horizontally within the cdkDropListGroup (like in a trello board ).

hi @volser,  is this possible when drag item scrolling effect work on body element


ReadStream: Cannot read property 'prototype' of undefined

I am getting this issue:
https://github.com/isaacs/node-graceful-fs/issues/70
On these lines:
https://github.com/isaacs/node-graceful-fs/blob/master/graceful-fs.js#L165-L166
var fs$ReadStream = fs.ReadStream // ReadStream is undefined!
ReadStream.prototype = Object.create(fs$ReadStream.prototype)

But I am NOT on Meteor. I am using Angular2

I can confirm the issue.
Apparently fs contains only fs.FileReadStream (and fs.FileWriteStream) which may (?) be meant.

I have the same problem

same here,using webpack2 & react

+1 having this issue

i have the same problem with react and webpack

I have the same problem as well when trying to require mongodb

I have the same problem with create-react-app

I have the same issue with a clean project that i created with create-react-app.
As i use chokidar in the App component i get this error on yarn start.

+1 having same issue

Hi all,
i have fixed my issue.
The problem was, that i have created an electron app in that i used react.
If you want to use chokidar in this constelation, you must import ist with the following code:
const chokidar = window.require('chokidar');
Maybe anyone has the same constelation and problem.

i have same issue.
i have fixed my issue.
npm i<EMAIL_ADDRESS>
it work fine.
i think it would help some one!

I have the same problem;
React + Webpack 2
In webpack config, I added
node: {         fs: 'empty'     }
But the issue still remains.

@medkhelifi did't you try replace your chalk version to 2.0.1？

I am having the same issue. Any updates? I used create-react-app ejected it.

+1

using electron with nodejs.
same here..
updating chalk version to 2.0.1 => did not work for me.
updating chalk version to 2.3.1 => did not work for me either.

with FS you are trying to get file from clients computer? fs must be used on back ) no webpack

Dear Isaacs,
Could you close issues #121 and this after fixing this bug.
I tried to rewrite two last lines in your code by the above pattern in my local node_modules and solved this problem in React app.
But I finded this precription for a long time, because no one issues not closed.
Best regards, Anela.

Issue not fully resolved on my end after applying @spirosbax's fix manually. See: https://github.com/isaacs/node-graceful-fs/pull/135#issuecomment-430634423

@rekmarks yeah, just think about using git... nobody would ever include the node_modues folder

This issue should be resolved by latest graceful-fs. Please let us know if you continue to have problems after updating.


imageuploader.fileready is broken

When these lines are executed after an attempt to upload a file:
dialog.addEventListener('imageuploader.fileready', function (ev) {
       var file = ev.detail().file;
       ...

Result: "TypeError: ev.detail(...) is undefined"

Hi @etlel thanks for highlighting this, the event was being dispatched without the file information. I missed it when converting the event over to the new system I've resolved now.


[Bug Report] Popovers don't work with elements that are not visible on initial page load via v-if

Element UI version
1.4.4
OS/Browsers version
All
Vue version
2.4.4
Reproduction Link
https://jsfiddle.net/bnvystdw/
Steps to reproduce
It appears that if an element containing a popover is not rendered on initial page load because it's excluded via v-if, it won't show the popover when it's later added to DOM.

Create a popover and give it a ref
Place a button and have it reference the popover, but also bind it to a condition via v-if that is false on mount
Make the condition return true thus enabling the button
Attempt to trigger the popover

It is possible to circumvent this by hiding the activators with v-show instead of v-if.
What is Expected?
The popover should trigger
What is actually happening?
The popover is not triggered

I think what I am looking for is using a manual trigger and a custom property as popover v-model.

That is still a bug, the events being added on mounted to the reference but with a v-if, the reference doesn't exist when it is mounted
The events should be reloaded everytime the component is updated rather than on mount


Cannot interpret std::string

I'm trying to read a branch, no issue with all the double elements but I cannot read std::string elements.
See the sample file : https://www.dropbox.com/s/nvqb3tqa0zbn5mk/survey.root?dl=0
import uproot
uproot.open("survey.root")['Beam']['Beam.GMAD::BeamBase.beamParticleName'].array()

raising ValueError: cannot interpret branch b'Beam.GMAD::BeamBase.beamParticleName' as a Python type in file: survey.root.

Thanks! Actually, it had nothing to do with not being able to read strings (I see that it generated the right code for reading strings from an unsplit version of the object); it's that the object has been split but I didn't manage to pass the information down about which branch corresponds to which field, so that it knows that 'Beam.GMAD::BeamBase.beamParticleName' is a string, for instance. (The information is not actually attached to the branch; it has to be inferred by walking down the nested branches and the class structure at the same time. Somehow, that got lost and I'm going to figure out where.)

PR #405; the problem was that when I was walking from branches to sub-branches in the TTree and simultaneously walking down classes to class members in the streamers, there was an extra branch associated with the fact that members like beamParticleName came from a base class, GMAD::BeamBase. Instead of searching the direct children of a branch, I now recursively search all of the branch's descendants and thus can find the right class member for each branch and associate it with a type.

Perfect, thanks.


Schedule weekly CI runs

Run the tests, builds and docs workflows on Sundays.

Codecov Report

Merging #269 (24dd5b9) into master (59d6b88) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #269   +/-   ##
=======================================
  Coverage   65.43%   65.43%
=======================================
  Files          57       57
  Lines        5511     5511
=======================================
  Hits         3606     3606
  Misses       1905     1905

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 59d6b88...24dd5b9. Read the comment docs.


Fix back and forward button behavior

Replaced the previous fix for popstate loop error (#12030) with jquery eventhandler, overrode default popstate action (to load div on back/forward button and stop menu from refreshing), replaced code for opening external urls (combined with jquery eventhandler code), reorg menu highlighting code to support new popstate behavior, and combined code for menu animation.
Fixes #12151
Fixes #12156
Fixes #12154

manually tested, seems solid


Bug:idea plugin can't support @SuperBuilder

@SuperBuilder
public abstract class Parent {
  Number number;
}

@SuperBuilder
public class Child extends Parent {

  @Singular
  ImmutableList<Long> ids;
}

compile error,excute success.

It's a problem of the IntelliJ plugin, and there is already an issue for it: mplushnikov/lombok-intellij-plugin#513

https://github.com/mplushnikov/lombok-intellij-plugin

I think you want to say "the IntelliJ plugin finally supports @SuperBuilder". Yeah! :clap: :smiley:

I think you want to say "the IntelliJ plugin finally supports @SuperBuilder". Yeah! 👏 😃

👍

Ah, you did say it, just my Github app did not show the image. :expressionless:

Ah, you did say it, just my Github app did not show the image. 😑

I saw the image.
Yes, the Last version (0.27) plugin supports @SuperBuilder.


Make code formatting follow our style

Currently SpaceCommander is doing some real weird things around blocks especially. See if this can be configured or how to otherwise fix it.

Could be http://stackoverflow.com/questions/25990881/how-to-format-objective-c-block-with-clang-format


Can't remove eslintls

It looks like eslintls is installed by default. LspUninstall eslintls doesn't remove it. I already use eslint with null-ls. So I don't need it installed at all.

denols that was the culprit. However, eslintls still seems to be magically installed for some reason.

Are you sure it's actually considered installed (server:is_installed() or :LspPrintInstalled)? What I believe is happening is that once eslintls is added into lspconfig here, it's registered as a server with lspconfig and will show up in certain places, such as :LspInfo.
Actually we already do some stuff to avoid this very same issue by deferring interactions with lspconfig, we should be able to do something similar for eslint.

@mystilleef Could you see if the branch defer-eslint-server-definition (https://github.com/williamboman/nvim-lsp-installer/pull/62) fixes it? Seems like it does the trick for me, but I'm not sure we're talking about the same thing yet :D

@mystilleef Could you see if the branch defer-eslint-server-definition (#62) fixes it? Seems like it does the trick for me, but I'm not sure we're talking about the same thing yet :D

Yeap, that fixes it.


fix: rename _words to prefix, do not assign lowered to str

When I ported it to CashAddr, I noticed some points that could be made clearer:

Do not use _words variable name because the same name is used in the upper scope. data name matches with the error message.
Do not assign lowered to function parameter str for readability and original str in error message.

@mahnunchik all good with regards to the port itself?

@paulmillr I'm working on it.
It was right idea to have separate module because I've to reuse btc-signer for legacy normal addresses.

If something doesn't work, please prepare a pr with all needed changes to make it work, so we can put it into one version: I don't want to release many scure-base releases in a row.


Support 0.12

Uses latest node-sass, consolidate and juice to support 0.12

Migrates back to upstream Juice
Travis now supports 0.12 and io.js

@niftylettuce please take a look and if good let's go ahead and close a lot of issues.

Coverage remained the same at 83.44% when pulling 9976248b64d375f1756b2b0b34d39e5043fcc39c on support-0.12 into eb2c75a05cc05661b0057f6c8a1d4250bba61598 on master.

:+1: I have switched to 0.12 and got bit by this.  Wasted a bit of time assuming it was a bug in my project.

Looks good to me :+1:

Awesome thanks!! :love_hotel:   What is the release cycle to the npm registry?

Published as 1.2.0 in npm


stm8gal contains non-free binary blobs

stm8gal currently contains some non-free binary blobs for some target devices. They should be replaced by free software.
Philipp

See also:
https://community.st.com/thread/44550-the-missing-piece-for-a-fully-free-toolchain-st-link-firmware
Philipp

hi Philipp,
I see your point.
To my understanding the RAM code blobs under question interface to some bootloader routines in ROM of the respective STM8. Without API documentation, the only way I see is to reverse engineer the hexfiles, and then re-implement them differently...? Or do you see another option?
Two more questions / thoughts:

the new, more liberal SW license now does allow re-distribution. Besides, even with new RAM routines, the ROM code would remain proprietary.  So what exactly is the point to re-implement the RAM routines?

does reverse-engineering code and re-implementing it already make it free in a legal sense? Or, to ask differently, how different does the code need to be to free it from the proprietary license?

Thanks, Georg

hi again,
in the meantime I disassembled the RAM routines using "naken_asm". Depending on the respective STM8 device and BL version, the code is VERY simple or quite long. Is your proposal to re-engineer the function of the routines, and re-write them while keeping the same entry addresses? And as I am not savvy with ASM, would you or anybody else be willing to support?
For your feedback (and ideally help) thanks a lot in advance!
Regards, Georg

I have been investigating the disassembly of the current ST erase/write routines to see what exactly it is they do. To aid in understanding, I also dumped and disassembled the ROM bootloader from an STM8S208 I have - see attached.
My observations so far about the erase/write routines are as follows. They focus only on the bootloader_write_erase_128k_ver2.4 version.

There are two entry points: one at 0xA0 for the erase function, one at 0x180 for the write function. These locations are fixed and must be maintained for compatibility.
The code does not use the stack. All input and output is done using global variables, whose locations are also fixed. Again, their usage will be necessary for compatibility.
The write routine is only used for block programming. The UM0560 documentation talks about how the bootloader's 'write' command does either word (although it sounds like they mean byte) or block writing as appropriate, but the ROM code must handle the word/byte-wise writing itself, and only call the RAM write routine for block operations.
Both write/erase code call back to a ROM function (at 0x608A) in several places - particularly within loops. I have deduced from the ROM disassembly that this is simply a watchdog refresh function. This will need to be retained in any substitute code. No other function calls are made.
At least a small portion of any substitute erase/write routines will need to be written in assembly due to the absence of 24-bit 'far' pointer support in SDCC, which would be necessary when writing to flash locations >32KB (using ldf instruction).

I'm going to attempt to transcribe the erase/write routines in to C code, such that perhaps we can then have a base upon which we could build our own open-source-licensed version that is embedded with stm8gal.

Some more observations:

The earliest versions of the 32K and 128K routines do not include any nop padding. I guess the ST engineers at one point modified the first version of code but then found they had to adjust all calls to it in the ROM code, so decided to add some future-proofing and pad the code out to give room for any future changes.
The differences between versions are small. Excluding the oldest non-padded version (too difficult to compare, so I didn't bother yet), the changes are almost exclusively just different addresses for global variables and the watchdog function call.
Differences between newest 32K and 128K versions are also small:

Erase: For 32K, only handles sectors up to 0x20; for 128K, up to 0x81. Code for translating sector numbers to addresses is correspondingly smaller for the former.
Write: code is essentially identical. Not surprising, as 32K and 128K devices share a flash block size of 128 bytes.

I have created a GitHub repository with my work so far at transcribing the erase/write routines to C code.
https://github.com/basilhussain/stm8-bootloader-erase-write
I only worked with the 128K v2.4 so far. I also just focused on replicating the logic and structure of the code. Didn't bother to try and assign names to the global variables yet, as their meaning is not 100% clear yet.
The code at present compiles and everything is located at the correct addresses, but has not been tested in any way whatsoever. There is also one significant problem that needs resolving: that both erase and write code are too large! The erase code spills over  0x180 and the write code past 0x1FF.

great, thanks! This is a base I can start with :-)

You've probably seen that I've now adapted it so it covers both 32K and 128K devices of various bootloader versions (but not the earliest versions yet). :)
I'm currently seeing if I can reduce the size of the compiled code, as it doesn't fit as-is - far too large!

:-)  great! I will wait for you then. Somehow I have the vague feeling you can do better than me  :-)

PS: is calling the WD service routine bigger than setting 2 WD registers?

PS: is calling the WD service routine bigger than setting 2 WD registers?

Unfortunately, no. The ROM watchdog refresh routine actually sets 4 registers:
0x608a:  35 55 50 e0    mov $50e0, #$55                          cycles=1
0x608e:  35 05 50 e1    mov $50e1, #$05                          cycles=1
0x6092:  35 aa 50 e0    mov $50e0, #$aa                          cycles=1
0x6096:  35 7f 50 d1    mov $50d1, #$7f                          cycles=1
0x609a:  81             ret                                      cycles=4

17 versus 3 bytes... :)

I have created a new branch in my repo, called size-reduce, with efforts made to reduce the size of the code.
Managed to get it to squeeze in, but only just! The erase routine area has 1 byte to spare!
Georg, if you have any further ideas for size optimisation, please make any amendments to that branch.

Basil,
just checked the version you created with a modified stm8gal. Specifically I (only) skip upload of the STM RAM routines and uploaded your RAM code prior to flash upload. For compatibility I use a 128kB STM8S207MB. Unfortunately I get an error.
Here is the command:
./stm8gal -p /dev/ttyUSB0 -w RAM_Routines/erase_write.ihx -w dummy.s19 -v 3
And here the output:
stm8gal (v1.4.0)
reset STM8 and press
open serial port '/dev/ttyUSB0' with 115.2kBaud ... done
synchronize ... done (ACK)
check UART mode ... done (duplex)
get device info ... done (STM8S; 128kB flash; BSL v2.1)
load 'erase_write.ihx' ... done (938B)
convert Intel HEX file ... done (385B in 0xa0 - 0x220)
write 385B / 385B in 0xa0 to 0x22f ... done
read 223B / 223B from 0xa0 to 0x17e ... done
read 114B / 114B from 0x180 to 0x1f1 ... done
read 48B / 48B from 0x200 to 0x22f ... done
verify memory ... done
load 'dummy.s19' ... done (590B)
convert Motorola S19 file ... done (210B in 0x8000 - 0x80d1)
write 210B in 0x8000 to 0x80d1 Error: in 'bsl_memWrite()': at 0x8000 ACK3 failure (expect 0x79, received 0x1f)
As you can see, RAM upload works. The verify is in 3 steps as write, erase and common are not consecutive. But when I try to upload to flash I get a 0x1F = NACK. Any idea what could be wrong here?
By the way, do you have a means of debugging this procedure via ucsim? I understand you have the ROM code as ASM, so in principle that should be possible...!? Because with only a NACK it's hard to dig deeper...  ;-)

Basil,
for sector erase the story is a bit different: I get no error message, but the flash is not erased.
Here is the command:
./stm8gal -p /dev/ttyUSB0 -v 3 -w RAM_Routines/erase_write.ihx -e 0x8000
And here the output:
stm8gal (v1.4.0)
reset STM8 and press
open serial port '/dev/ttyUSB0' with 115.2kBaud ... done
synchronize ... done (ACK)
check UART mode ... done (duplex)
get device info ... done (STM8S; 128kB flash; BSL v2.1)
load 'erase_write.ihx' ... done (938B)
convert Intel HEX file ... done (385B in 0xa0 - 0x220)
write 385B / 385B in 0xa0 to 0x22f ... done
read 223B / 223B from 0xa0 to 0x17e ... done
read 114B / 114B from 0x180 to 0x1f1 ... done
read 48B / 48B from 0x200 to 0x22f ... done
verify memory ... done
erase flash sector 0 @ 0x8000 ... done, time 16ms
jump to address 0x8000 ... done
done with program
But if I then read out the flash @ 0x8000, the data is still there. Maybe it's passing the address...?
However, mass erase seems to work  :-)
But I have to run now. I will check more thoroughly over the weekend. Sorry!

As you can see, RAM upload works. The verify is in 3 steps as write, erase and common are not consecutive. But when I try to upload to flash I get a 0x1F = NACK. Any idea what could be wrong here?

The flowchart figure 22 in UM0560 indicates if the bootloader gives a NACK at that stage (ACK3, after no. of bytes and data sent), then it did the write and got an incorrect checksum. Perhaps the write is not succeeding, or writing incorrect data. I will have another look at the disassembly and C code to see if I got it right.

By the way, do you have a means of debugging this procedure via ucsim? I understand you have the ROM code as ASM, so in principle that should be possible...!? Because with only a NACK it's hard to dig deeper... ;-)

I suppose in principle it should be possible to run the ROM bootloader Hex file in ucSim. Just need to load it and tell simulator to run from 0x6000. Judging from the docs, if it doesn't find special values in first byte of flash at 0x8000 (INT or JPF instruction), it will consider the chip 'virgin' and continue with bootloader, which ties nicely with the fact that flash memory is all zeroes by default in ucSim. However, some way of communicating through the simulated UART will need to be found.
ucSim docs says it can redirect UARTs to a file, but only gives examples for Linux. As I am on Windows I tried a named pipe, but it doesn't seem to work properly. You may have seen my SDCC user mailing list post on the subject. Also, stm8gal doesn't seem to support giving a named pipe as the port argument:
stm8gal (v1.3.0)
  reset STM8 and press <return>
  open serial port '\\.\pipe\ucsim' ... Error: in 'set_port_attribute()': get port attributes failed with code 1

Perhaps this simulator stuff would succeed on Linux. :-)

See also:
https://community.st.com/thread/44550-the-missing-piece-for-a-fully-free-toolchain-st-link-firmware

This link seems to be defunct. It just leads to a page requesting a login.
I found the thread in question now here: https://community.st.com/s/feed/0D50X00009XkVtYSAV

proprietary STM flash w/e RAM routines replaced by OSS routines fromhttps://github.com/basilhussain/stm8-bootloader-erase-write
(thanks Basil!)

proprietary STM flash w/e RAM routines replaced by OSS routines fromhttps://github.com/basilhussain/stm8-bootloader-erase-write
(thanks Basil!)


Discord bot verification

I will soon be starting the verification process of FlandersBOT, any updates regarding this process will be posted here. This issue will be closed if FlandersBOT is successfully verified. Verification process will begin once issue #8 is closed.

It appears that the verification process isn't available until January 11th.
The verification form is currently closed for the holidays. We have increased the maximum guild limit for bots to 250 until the form re-opens. The form will re-open on January 11, 2021.
I will continue with the verification process on that date.

Applied for verification this morning, expected verification time is ~4-5 business days, depending on queue length.

Applied for verification this morning, expected verification time is ~4-5 business days, depending on queue length.

Flanders is now verified!

Flanders is now verified!


[SMALLFIX] Removed variables and removed equals check in some classes

Introduced equals check in AllocatorTestBase
Removed two not needed variables in AlluxioURITest
Removed variable in BaseFileSystemTest
Removed variable in BlockWorkerTest
Introduced equals check in GCSUnderStorageCluster
Introduced equals check in S3UnderStorageCluster

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/12019/
Test PASSed.

@aaudiber Thanks for the comment. I updated the PR accordingly.


Kiota Client

What are you generating using Kiota, clients or plugins?
API Client/SDK
In what context or format are you using Kiota?
Windows executable
Client library/SDK language
Csharp
Describe the bug
I've using Kiota (version 1.19.1+d294e04ba7f756896878a7015df1648f9dc0bcde) to generate HubSpot clients from their OpenAPI catalog which contains ~85 separate specs.  4 of which failed with a stack overflow exception:
 at Kiota.Builder.Extensions.OpenApiSchemaExtensions.GetDiscriminatorPropertyName(Microsoft.OpenApi.Models.OpenApiSchema)
   at System.Linq.Enumerable+SelectListIterator`2[[System.__Canon, System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
   at System.Linq.Enumerable.TryGetFirst[[System.__Canon, System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,Boolean>, Boolean ByRef)
   at System.Linq.Enumerable.FirstOrDefault[[System.__Canon, System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,Boolean>)
   at Kiota.Builder.Extensions.OpenApiSchemaExtensions.GetDiscriminatorPropertyName(Microsoft.OpenApi.Models.OpenApiSchema)
   at System.Linq.Enumerable+SelectListIterator`2[[System.__Canon, System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
   at System.Linq.Enumerable.TryGetFirst[[System.__Canon, System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,Boolean>, Boolean ByRef)
   at System.Linq.Enumerable.FirstOrDefault[[System.__Canon, System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Func`2<System.__Canon,Boolean>)
   ... repeats

Expected behavior
Should generate a c# client.
How to reproduce
kiota generate --openapi https://api.hubspot.com/public/api/spec/v1/specs/Automation/Automation%20V4/versions/144908 --language csharp
kiota generate --openapi https://api.hubspot.com/public/api/spec/v1/specs/CRM/Exports/versions/95922 --language csharp
kiota generate --openapi https://api.hubspot.com/public/api/spec/v1/specs/Conversations/Conversations%20Inbox%20&%20Messages/versions/54902 --language csharp

Open API description file
https://api.hubspot.com/public/api/spec/v1/specs/Automation/Automation V4/versions/144908
https://api.hubspot.com/public/api/spec/v1/specs/CRM/Exports/versions/95922
https://api.hubspot.com/public/api/spec/v1/specs/Conversations/Conversations Inbox & Messages/versions/54902
Kiota Version
1.19.1+d294e04ba7f756896878a7015df1648f9dc0bcde
Latest Kiota version known to work for scenario above?(Not required)
No response
Known Workarounds
None
Configuration

OS: Windows 11 x64.

Debug output
--debug flag didn't work.

Other information
No response

Thanks for raising this @damianh

--debug flag didn't work.

This looks to be related to the PR created at https://github.com/microsoft/kiota/pull/5780. Any chance you can obtain a trace using --ll debug instead?

With the description from https://api.hubspot.com/public/api/spec/v1/specs/Automation/Automation V4/versions/144908
The stackoverflow seems to be caused by the method at https://github.com/microsoft/kiota/blob/4c383b7819590479d63b26802fe6915f54c65de5/src/Kiota.Builder/Extensions/OpenApiSchemaExtensions.cs#L249
The description defines the schema below with two oneOfs.
      "ApiFlowCreateRequest" : {
        "properties" : { },
        "oneOf" : [ {
          "$ref" : "#/components/schemas/ApiContactFlowCreateRequest"
        }, {
          "$ref" : "#/components/schemas/ApiPlatformFlowCreateRequest"
        } ]
      },

However the referenced oneOfs end up referencing the same schema in the AllOf as
"ApiContactFlowCreateRequest" : {
        "properties" : { },
        "allOf" : [ {
          "$ref" : "#/components/schemas/ApiFlowCreateRequest"
        }, {
          "required" : [ "actions", "blockedDates", "canEnrollFromSalesforce", "customProperties", "flowType", "isEnabled", "objectTypeId", "suppressionListIds", "timeWindows", "type" ],
          "type" : "object",
          "properties" : {
            "type" : {
              "type" : "string",
              "default" : "CONTACT_FLOW",
              "enum" : [ "WORKFLOW", "ACTION_SET", "UNKNOWN" ]
            },
.....

So as the code recursively looks for the discriminator name from the base, the oneOfs end up referencing the base again in the allOf to end up in an infinite loop.
One thing I'm not sure if this is valid OpenApi or should Kiota detect the oneOfs in such a scenario as possible derived types(rather than trying to create a union type) given that what we ideally expect is an empty schema with a discriminator property name? cc @baywet

Thanks for raising this @damianh

--debug flag didn't work.

This looks to be related to the PR created at #5780. Any chance you can obtain a trace using --ll debug instead?

dbug: Kiota.Builder.KiotaBuilder[0]
      kiota version 1.19.1
dbug: Kiota.Builder.KiotaBuilder[0]
      cache file C:\Users\damian\AppData\Local\Temp\kiota\cache\generation\10B428847C2EF34D3D888CC60E23691E9BCFB7DEE7C73F0385B65D8D3FC0590E\144908 is up to date and clearCache is False, using it
info: Kiota.Builder.KiotaBuilder[0]
      loaded description from remote source
dbug: Kiota.Builder.KiotaBuilder[0]
      step 1 - reading the stream - took 00:00:00.0077677
warn: Kiota.Builder.KiotaBuilder[0]
      OpenAPI warning: #/ - The schema ApiFlow is a polymorphic type but does not define a discriminator. This will result in a serialization errors.
dbug: Kiota.Builder.KiotaBuilder[0]
      step 2 - parsing the document - took 00:00:00.1070247
dbug: Kiota.Builder.KiotaBuilder[0]
      step 3 - updating generation configuration from kiota extension - took 00:00:00.0000564
dbug: Kiota.Builder.KiotaBuilder[0]
      step 4 - filtering API paths with patterns - took 00:00:00.0027410
info: Kiota.Builder.KiotaBuilder[0]
      Client root URL set to https://api.hubapi.com
dbug: Kiota.Builder.KiotaBuilder[0]
      step 5 - checking whether the output should be updated - took 00:00:00.0124735
dbug: Kiota.Builder.KiotaBuilder[0]
      step 6 - create uri space - took 00:00:00.0025629
dbug: Kiota.Builder.KiotaBuilder[0]
      InitializeInheritanceIndex 00:00:00.0020791

That's as much output I was able to capture from a trace before the SOE occurs.

Thank you for the additional information.
Thanks @andrueastman for the analysis here.
I authored #5828 to address this issue.


Fix: temporarily disable GridPlus (Lattice)

What it solves
Resolves #2792
How this PR fixes it
Temporarily disables GridPlus until it's fixed in onboard.js

@francovenica @liliya-soroka I've tested on mainnet and rinkeby, the wallet is now hidden. ✅


Should Events trait take self by value?

I'm new to Rust, so pardon my ignorance; however, it seems like the Events trait should take self by reference (or the WindowSettings implementation should be copyable) so that calling window_settings.events() doesn't move the WindowSettings object. Because Rc<RefCell<WindowSettings>> implements Events, we can get around the problem, but it seems like it shouldn't be necessary to use runtime sharing to invoke multiple read methods from different contexts (a la the following code sample). If there's another solution or some reason reference counting is necessary, please inform me.
fn main() {
    let opengl = OpenGL::V3_2;

    // Create an Glutin window.
    let window = WindowSettings::new("spinning-square", [200, 200])
                     .opengl(opengl)
                     .exit_on_esc(true)
                     .build()
                     .unwrap();

    let mut app = App {
        gl: GlGraphics::new(opengl),
        x: 0.0,
        y: 0.0,

        // hanging onto the reference so the app can query window size
        // in its `update()` method
        window: &window,
    };

    // `events()` takes `self` by value, but `window` is not copyable,
    // so it must be moved (except it can't be moved because `window`
    // is borrowed by `app`)
    for e in window.events() {
        if let Some(r) = e.render_args() {
            app.render(&r);
        }

        if let Some(u) = e.update_args() {
            app.update(&u);
        }
    }
}

Put the window in an Rc<RefCell<T>>:
let window = Rc::new(RefCell::new(window));

Then put one copy using .clone() in the App structure. When accessing the window you need to use .borrow() or .borrow_mut().
The reason you can't do &window is because the event loop need to mutate the window. While the window is not mutated at the same time, the Rust compiler is not that smart and we need Rc<RefCell<T>> for dynamic borrow checking.
My common advice to people new to Rust: Learn to use smart pointers where they are appropriate. Think of lifetimes as an optimization more than a design feature. You will be more productive.

I see. It seems like Rust isn't living up to it's promise of zero-cost abstraction here. :( Thanks very much for the advice and explanation, nevertheless.

Closing.

@ns-cweber @bvssvni Just for the record, I don't think it would be a big problem to make the event loop not borrow the window, i.e. instead of making Events an iterator, we could do something like this:
let mut events = window.events();
while let Some(event) = events.next(&mut window) {
    // Here we still have unique access to the window as the event loop
    // only requires mutable access to the window for the duration of
    // the call to `event.next(&mut window)`.
}

This would remove the need for any smart pointers providing a nice zero-cost abstraction for the loop. We also use this same method to solve ownership issues during graph traversal in daggy and petgraph - we use this Walker abstraction which only borrows for the lifetime of next, rather than Iterator whose borrow lasts for the lifetime of the iterator itself.
Also, I would be weary of recommending Rc<RefCell<T>> to newcomers for a few reasons:

although it may feel more productive initially, it can cause limitations further into a project as ownership over T can become ambiguous
it immediately sacrifices one of the properties that makes rust nice in the first place which is the compile-time no-aliasing guarantees
it can be difficult to refactor if the user ends up deciding they want to thread parts of their program

In my limited experience I've found that, although it can be slightly more work to find a non-Rc<RefCell<T>> solution, the pay-off is normally worth it in the long-run.
At the same time, I totally acknowledge that it can be useful at times :) for example, it assists us a lot with sharing the GlyphCache in conrod, and it can also be useful for thread_local global storage. Though now that I mention it, I think these are the only use-cases I've personally come across for RefCell. I'm not suggesting that others don't exist, just pointing out to @ns-cweber that most of the time, nice zero-cost solutions do exist.

@mitchmindtree I think this is a good idea!

@mitchmindtree Thanks very much for the detailed response. Very informative!


Inconsistency With Other Page for .Net Core 3.1 Supported Windows 10 Version

Hi,
The current page (https://docs.microsoft.com/en-us/dotnet/core/install/windows?tabs=netcore31), in the Dependency section (tab for .Net Core 3.1), says that .Net Core 3.1 is compatible with Windows 10 Version 1609+.
However, in the other page specifically for .Net Core 3.1 (https://github.com/dotnet/core/blob/master/release-notes/3.1/3.1-supported-os.md), we see that it is compatible with Windows 10 Version 1607+.
You could update the page that is wrong.
Thank!
If you have a way to let me know directly that the correction was done (and what is the correct information), I would like to know what is the minimum Windows 10 version compatible with .Net Core 3.1.

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

ID: 1eeab451-820f-de42-983e-4d0d5764f6ab
Version Independent ID: d11d0d14-8a03-50e4-5c00-9a4417ad4d0a
Content: Install .NET on Windows
Content Source: docs/core/install/windows.md
Product: dotnet-fundamentals
GitHub Login: @adegeo
Microsoft Alias: adegeo

Thank you for noting that. I'll fix this page. The guidance in the release notes is correct.


todo: make fast-chess throw error when opening book seed is not specified

i notice engine devs have a bad habit of not specifying the book seed or randomseed on tests. theres currently a warning for it but they tend to ignore this. making a pr soon

Wouldn't this go against the spirit of having order default to random. That would rather suggest to use randomseed as default, too. It's a design decision. Maybe now is the right time to think carefully of what is best. Options are to leave master as is, follow exactly what cute-chess is doing, or mandating order and seed to be specified.

my thinking is to make the seed specification mandatory only when the order is random

And random is currently the default? Hence my point.

What is wrong with not specifying one?

What is wrong with not specifying one?

concerns of overfitting to the first N openings of the book, as with the default seed the opening sequences doesnt change after each test. also having opening book seed randomized by default makes the behavior consistent with cutechess, which is necessary for the cutechess build


REST API for spring cloud stream consumer of Kafka Topic

From @vsrahul82 on July 14, 2016 19:44
The consumer example in documentation polls the Kafka topic and returns  instantly when a message arrives on the topic. If i wanted the message to be read from queue only when i invoke the consume method, kind of like provide a REST API that will return a message from Kafka topic  when invoked how can i do that?  Please provide code example.
Copied from original issue: spring-cloud/spring-cloud-stream#591

From @mbogoevici on July 14, 2016 21:25
Spring Cloud Stream is currently entirely message-driven. We do not currently support pollable bindings. Can you describe your use case and we could perhaps introduce a new feature.

@vsrahul82: Thoughts?

Closing for now. @vsrahul82 - please get back to us if you have an update on this.


IGMP support

related to #51
I am seeking review early as recommended so I can easily fix and move things around.
This daily snapshot contains:

adds optional feature protocol-igmp so the multicast is optional
starts a minimal implementation of IGMPv2 protocol (v3 should be a future expansion)

As mentioned, this is not a full PR as things are not working yet, but I am looking for feedback/suggestions!

OK, adding another daily snapshot. Added parse/emit functions and simple tests to verify that parsing/creating IGMP packets works.
The next step is to:

test sending/receiving IGMP packets over Ethernet iface
add application logic for subscribing/leaving groups

@whitequark let me know if you prefer daily snapshots or rather larger chunks of code.

Closing for now, will reopen with more complete feature set.


Update README.md to fix typo

It seems like this issue was fixed some time ago. Thank you for your PR.


Can you provide a documentation? How to call this work? How to use this work in your own python program? Thank you!

我有一个数据集含一万余条问答数据集（以维基百科为背景知识库来构建的），想使用您的工作来做做RAG，首先一个问题通过检索维基百科，反馈相关的段落内容，然后提供给不同的大模型（我要做的实验大模型有chatglm llama glm 文心），您的工作可以实现吗？如何来处理呢？期待您的回复，谢谢啦！

I have a dataset containing more than 10,000 questions and answers (built with Wikipedia as the background knowledge base). I want to use your work to do RAG. First, a question is retrieved from Wikipedia, and the relevant paragraph content is fed back, and then provided to different large models (the experimental large models I want to do are chatglm llama glm Wenxin). Can your work be implemented? How to deal with it? Looking forward to your reply, thank you!

We use our own RAG Chat package in this repo which does most of the heavy-lifting for us when doing RAG. You can look at the examples in the RAG Chat repository and this project as a reference.
From what I understand, you just need to upsert your questions and answers as context to the vector database, that should be enough.


⚠ Orpheus has degraded performance

In 132f612, Orpheus ($OPS) experienced degraded performance:

HTTP code: 200
Response time: 1291 ms

Resolved: Orpheus performance has improved in 51a1450 after 6 minutes.


Display times as milliseconds in the profiler and performance monitors

Small values are easier to read as milliseconds compared to seconds.
Preview

Cherry-picked for 3.2.1.


Feature Request: clicking on the keyboad icon in the assistant should raise the keyboard

After triggering the assistant, to type text manually I have to press the keyboad icon, then press the text field.
I think only pressing once would maybe be better UI?

Added in 3.20


sbt-coursier loses callers for dependencies that are both pulled transitively and directly from the module

steps
Using sbt 1.3.8.
Write a plugin that fetches the UpdateReport and analyzes the callers tree.
problem
On contrary to ivy, sbt-coursier loses transitive callers when a dependency is also pulled directly from the module. Problem doesn't happen when coursier is disabled.
It seems to me the issue is here: https://github.com/coursier/sbt-coursier/blob/master/modules/lm-coursier/src/main/scala/lmcoursier/internal/SbtUpdateReport.scala#L224
We have 2 Map[Dependency, Seq[Dependency]] and the ++ drops the values for the clashing keys in the left Map that contains the entries for the transitive dependencies. The 2 Maps should be merged instead so no values are lost.
expectation
Behavior should be the same with and without Coursier enabled.
Update report should report the full dependency graph.

PR: https://github.com/coursier/sbt-coursier/pull/209

sbt-coursier doesn't exist anymore, coursier is built in. maybe we should close this, and offer to reopen if someone presents evidence the problem exists in current sbt?

@SethTisue This issue should have been closed when the PR against sbt-coursier was merged 3 years ago (GitHub couldn't do it because 2 different orgs).


Copy the bytes kept in resources

Scanners do not promise to leave byte buffers alone --
https://golang.org/pkg/bufio/#Scanner.Bytes -- so make a copy when
constructing resources, since they keep the bytes given to them.
Fixes #883.

(merged without review, on the basis that it's small and harmless and useful)


mgmt, support HttpPipelinePosition in pipeline creation

fix https://github.com/Azure/azure-sdk-for-java/issues/25060

You may want to check with Haoling about coding styles.


Integration with Github releases

In general, it adds lot of friction to deploy app and all required metadata.

It can be overkill to set up some complicated flow to keep all stuff in sync and deploy it running one single command.
I have following suggestion to discuss. Right now, Github has it's own way to distribute apps: Releases. There are few ways to manage it:

git tags
REST API v3
GraphQL API v4
Manual management.

In general, it'll lead to following actions to do:

Make separate tasks to deploy app (thin wrapper of this for Gradle, and this for Maven).
Support additional tag in manifest.
Support downloading from Github (using API library or REST/GraphQL API). Here usage of plain REST API is preferred, to keep fxlauncher.jar size as small as possible.

If plans like this aligns well with your vision of project, I can help with implementation.

Honestly I don't feel that much friction from deployment, sure you need to set it up once, but after that it's a matter of running a build and it's done. That said, I absolutely see the value in the ability to deploy a GitHub release, and a PR for this functionality would be most welcome indeed :)

@edvin I'll hope to work on it soon. I'm not experienced with Maven plugins at all, so I'd like to start with Gradle counterpart, and then work on Maven (or even leave it to someone else to implement). I'd like to stick for now with v3 REST API — it looks much easier to implement without introducing dependencies to FxLauncher.

That sounds like a good idea. Gradle will be a little less involved anyways, and I can probably port it to Maven myself when things cool down a little here.


Feature Request: Ability to create lower scoped access for a given user/SSH key

Along the same veins as GitHub's PAT system [link], it would be great if there was a way to be able to attach a given SSH key to a given scope within your Lagoon user.
e.g.

Have an SSH key that is read-only access
Have an SSH key that is for developer only access
Have an SSH key that is full access to everything you can do (current status quo)

This is the principle of least privilege.
As a developer, you can use your 'development SSH key' and add this to your SSH agent, and use this most of the time. You might reserve access to production systems to another SSH key, that is FIDO backed.
At present, the only way to achieve something similar to this, is creating multiple Lagoon user accounts for the same human, and granting different roles to each Lagoon user.

Closing here, but tracking internally as part of other long-term feature requests.
Implementation of this will become a consideration for a full users&permissions systems overhaul, which itself is still only at the idea stage.


[MKLDNN]Add quantized relu

Description
This PR is to add quantized relu op and its MKLDNN implementation.
@pengzhao-intel @ZhennanQin @TaoLv
Checklist
Essentials
Please feel free to remove inapplicable items for your PR.

[x] The PR title starts with [MXNET-$JIRA_ID], where $JIRA_ID refers to the relevant JIRA issue created (except PRs with tiny changes)
[x] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage:
Unit tests are added for small changes to verify correctness (e.g. adding a new operator)
Nightly tests are added for complicated/long-running ones (e.g. changing distributed kvstore)
Build tests will be added for build configuration changes (e.g. adding a new build option with NCCL)
[x] Code is well-documented:
For user-facing API changes, API doc string has been updated.
For new C++ functions in header files, their functionalities and arguments are documented.
For new examples, README.md is added to explain the what the example does, the source of the dataset, expected performance on test set and reference to the original paper if applicable
Check the API doc at http://mxnet-ci-doc.s3-accelerate.dualstack.amazonaws.com/PR-$PR_ID/$BUILD_ID/index.html
[x] To the my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes

[ ] Feature1, tests, (and when applicable, API doc)
[ ] Feature2, tests, (and when applicable, API doc)

Comments

If this change is a backward incompatible change, why must this change be made.
Interesting edge cases to note here

Thanks for your contributions @huangzhiyuan.
Can you please look into the CI failures ?

@mxnet-label-bot Add [MKLDNN, pr-awaiting-review]

cc @anirudh2290

Please retrigger the CI

@TaoLv @ZhennanQin @ciyongch please help review the PR again.

@huangzhiyuan please rebase the code since I have merged the quantize v2 changes.
Let's see if there are any impact on your change.
I will merge the PR if everything is fine.

Merging now, thanks for your contribution :)


TabControl messes up the DataContext.

A control added as the child of a TabItem in a TabControl will have its DataContext set to the TabItem. This shouldn't happen.

Fixed (hopefully) by https://github.com/Perspex/Perspex/pull/209.


Steps in this document are wrong/misleading, please correct ASAP!

+The steps under section "Convert to BYOS using the Azure CLI" are incorrect:
Section "Convert to BYOS using the Azure CLI"
Steps 2 should NOT be there when converting to BYOS:
This will enable Azure Hybrid Benefit to fetch software updates for SLES Standard repositories
az vm update -g myResourceGroup -n myVmName --license-type SLES
This will enable Azure Hybrid Benefit to fetch software updates for SLES SAP repositories
az vm update -g myResourceGroup -n myVmName --license-type SLES_SAP
This will enable Azure Hybrid Benefit to fetch software updates for SLES HPC repositories
az vm update -g myResourceGroup -n myVmName --license-type SLES_HPC
By running "az vm update -g myResourceGroup -n myVmName --license-type SLES_SAP" for example, we actually switch a BYOS to a PAYG. This step should not be there when converting to BYOS.
+Please also review the entire document, as some other steps descriptions seem very misleading and confusing as well.
Thanks!

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

ID: a237c483-819b-bd1a-6c6d-3eea20b64c42
Version Independent ID: 21469b9a-ad6f-76c6-a26b-4e264dee77df
Content: Azure Hybrid Benefit for Linux virtual machines - Azure Virtual Machines
Content Source: articles/virtual-machines/linux/azure-hybrid-benefit-linux.md
Service: virtual-machines
Sub-service: billing
GitHub Login: @Dhiraj3030
Microsoft Alias: dkulkarni

@kevinzbjws
Thanks for your feedback! We will investigate and update as appropriate.

@kevinzbjws
Thanks for your feedback! I've assigned this issue to the author who will investigate and update as appropriate.

#reassign: @mattmcinnes

Hi @kevinzbjws , thanks for the feedback!
Since this issue was created we've re-vamped the AHB documentation significantly. There were some duplicate code snippets in the incorrect locations (one of which you pointed out in this issue) so we've now resolved them.
#please-close


ImportError: cannot import name 'create_choice_model'

After installation using pip import pylogit fails with ImportError: cannot import name 'create_choice_model'

Python version 3.5

Hi sash-ko, sorry for the delayed reply. There may be all sorts of errors if one tries to use Python 3. I haven't added support for Python 3.x yet.


feat: Add Parcel Example for GraphiQL

Parcel Example for GraphiQL

@acao can you review this

awesome work! I'll get around to reviewing this and the other example this week

Hi @harshithpabbati ,
Running yarn format should fix the failing check.
I am sorry that I didn't notice that you had already made a PR for parcel-bundler example. I will be closing #1512 since this was prior to mine and has been acknowledged :)

Hi @harshithpabbati ,
Running yarn format should fix the failing check.
I am sorry that I didn't notice that you had already made a PR for parcel-bundler example. I will be closing #1512 since this was prior to mine and has been acknowledged :)

Thanks for your help @daemon1024 :)


Mandarin Hubert

Feature request
Is your feature request related to a problem? Please describe.
Tencent has released the hubert trained on Mandarin speech, which I believe could be a good addition to the toolkit.
Describe the solution you'd like
This is the huggingface link that holds the four models.

Sounds good!
I can add that today.

Hi @ftshijt ,
In #445, I add some new entries for wav2vec2 and hubert to load custom models from fairseq / huggingface.
So, with the name wav2vec2_custom, you can give
url = "https://dl.fbaipublicfiles.com/fairseq/speech_to_speech/s2st_finetuning/w2v2/es/transformer_B.pt"
model = S3PRLUpstream("wav2vec2_custom", url, extra_conf=dict(fairseq=True))

while of course with the fairseq=True, the user will need to install the fairseq to load the model, but this dependency is only required for this condition and not a general package dependency. (Some people still want this function to be more convenient.)
Or, with the name hf_wav2vec2_custom, you can give
name="TencentGameMate/chinese-wav2vec2-base"
model = S3PRLUpstream("hf_wav2vec2_custom", name)

These new entries is enabled in s3prl>=0.4.9
Also, the new usage is reflected in the doc
Let me know if anything can be improved.

Thanks for the update! This is super exciting update. May I ask if it is also possible to have such entry for data2vec? Some of my friends working on music have published a music2vec with the architecture similar to data2vec (see https://huggingface.co/m-a-p/music2vec-v1)

Sure!


New Chart - Netsil

Change-Id: Iad73f7ea7e10c364c32a39252b784c62541ce83c
This chart adds Netsil's AOC tooling to a Kubernetes cluster.

cc @luhkevin

@unguiculus changes are in

@unguiculus how do we look now?

Marking this as stale. Please update within one week.

I'm on vacation now. Please give me some time for the review.

@unguiculus updated maintainer to be github username to align with new practice.

/ok-to-test

Marking as stale. Please update within one week.

/retest

Closing as stale. Feel free to reopen if/when you decide to work on this again.


opt: extent hint_fresh to pre-empt stale fetches

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#157  👈
#151
#149 : 1 other dependent PR (#150 )
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @rphmeier and the rest of your teammates on  Graphite


Error processing query: "Built-in function "URI" not yet implemented"

In this example query, the built-in function "URI" works:
https://qlever.cs.uni-freiburg.de/wikidata/oBu1nn
in my local setup, or in another demo dataset, the qlever server returns an error:
https://qlever.cs.uni-freiburg.de/olympics/PR4RCK
Invalid SPARQL query: Built-in function "uri" not yet implemented; if you need it, just add it to SparqlQleverVisitor.cpp::visitTypesafe(Parser::BuiltInCallContext following the already implemented functions there

@Stiksels The URI function was added to QLever only last week: https://github.com/ad-freiburg/qlever/pull/1401 .
You should update to the latest version of QLever.
I also just updated  https://qlever.cs.uni-freiburg.de/olympics to the latest version of QLever. The query you posted works there now.

Thank you, @hannahbast , now it works indeed!


No longer internally call .reset_index()

HoloViews is going to better support Pandas indexes in https://github.com/holoviz/holoviews/pull/6061 so it doesn't have to internally call .reset_index() when a reference is made to an index column. This change will come with some great performance improvements. hvPlot itself calls in several places .reset_index(). To fully benefit from HoloViews' improvements, hvPlot will have to remove these calls to .reset_index().

Bugs identified and fixed when working on addressing this:

https://github.com/holoviz/hvplot/pull/1363
https://github.com/holoviz/holoviews/pull/6299

Closed by #1350


Quality statement new is ready for review

Hey, I am done with the refinement of the qualitystatements. I've already merged the master into the branch. Can you please review the code, so we can merge it into the master? Thank you, Isabel

Adapted branch and merged master again into this branch.


Fixing few properties for DiskRP Api Version 2020-05-01

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[x] I have reviewed the documentation for the workflow.
[x] Validation tools were run on swagger spec(s) and have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[x] Service team MUST add the "WaitForARMFeedback" label if the management plane API changes fall into one of the below categories.

adding/removing APIs.
adding/removing properties.
adding/removing API-version.
adding a new service in Azure.

Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs.

[x] If you are blocked on ARM review and want to get the PR merged urgently, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.
Please follow the link to find more details on API review process.

/azp run automation - sdk

/azp run automation - sdk

Removing the ARM feedback label since the ARM review board will not be reviewing property level changes/additions going forward.
Has this api-version already been released? As per the api-versioning guidance, adding properties require a new api-version.

/azp run automation - sdk

HI @NullMDR, could you pls help to look at the Python Track2 SDK failure?Although it's not required task, just want to make sure no blocking issue for Python Trakc2 generation. thanks.

@chetmaddula @yungezz There is an error while running autorest:
 ERROR (PreCheck/DuplicateSchema): Duplicate Schema named UpdateResource -- properties.id: undefined => {"description":"Resource Id","readOnly":true,"$ref":"#/components/schemas/schemas:1026"},properties.name: undefined => {"description":"Resource name","readOnly":true,"$ref":"#/components/schemas/schemas:1027"},properties.type: undefined => {"description":"Resource type","readOnly":true,"$ref":"#/components/schemas/schemas:1028"}

@changlong-liu for more comments.

Hi @NullMDR , the Duplicate Schema issue has no relation with this PR. It's an issue in the master, and will be fixed after this is merged: https://github.com/Azure/azure-rest-api-specs/pull/9848

thanks @changlong-liu @NullMDR . hi @changlong-liu when will the PR https://github.com/Azure/azure-rest-api-specs/pull/9848 be merged? otherwise next Track2 compute SDK generation will fail

Hi @yungezz , I don't have permission to merge it. But I see it's already approved, should be merged soon.


Build pipeline

ddd

ok

dd

@microsoft-github-policy-service agree [company="{DNV}"]
From: microsoft-github-policy-service[bot] @.>
Sent: Wednesday, October 26, 2022 11:03 AM
To: MicrosoftDocs/mslearn-tailspin-spacegame-web @.>
Cc: Yost, Timothy @.>; Mention @.>
Subject: Re: [MicrosoftDocs/mslearn-tailspin-spacegame-web] Build pipeline (PR #6733)
@TimothyPYosthttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FTimothyPYost&data=05|01|tim.yost%40dnv.com|e83f8a0647ab4974d0a808dab76329cb|adf10e2bb6e941d6be2fc12bb566019c|0|0|638023933787817768|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=viwvV4gnaL6%2F6SVITrT4DW%2FfSVgtoQcczFyvDPR8UKk%3D&reserved=0 please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]
Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.
(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term "You" includes me and my employer.
Contributor License Agreement
Contribution License Agreement

This Contribution License Agreement ("Agreement") is agreed to by the party signing below ("You"),
and conveys certain license rights to Microsoft Corporation and its affiliates ("Microsoft") for Your
contributions to Microsoft open source projects. This Agreement is effective as of the latest signature
date below.

Definitions.
"Code" means the computer software code, whether in human-readable or machine-executable form,
that is delivered by You to Microsoft under this Agreement.
"Project" means any of the projects owned or managed by Microsoft and offered under a license
approved by the Open Source Initiative (www.opensource.orghttps://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.opensource.org%2F&data=05|01|tim.yost%40dnv.com|e83f8a0647ab4974d0a808dab76329cb|adf10e2bb6e941d6be2fc12bb566019c|0|0|638023933787817768|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=M%2BqL5KpxGEcl60M4QzTL0YbjBC68SqwOnrtlsfH79sE%3D&reserved=0).
"Submit" is the act of uploading, submitting, transmitting, or distributing code or other content to any
Project, including but not limited to communication on electronic mailing lists, source code control
systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of
discussing and improving that Project, but excluding communication that is conspicuously marked or
otherwise designated in writing by You as "Not a Submission."
"Submission" means the Code and any other copyrightable material Submitted by You, including any
associated comments and documentation.
Your Submission. You must agree to the terms of this Agreement before making a Submission to any
Project. This Agreement covers any and all Submissions that You, now or in the future (except as
described in Section 4 below), Submit to any Project.
Originality of Work. You represent that each of Your Submissions is entirely Your original work.
Should You wish to Submit materials that are not Your original work, You may Submit them separately
to the Project if You (a) retain all copyright and license information that was in the materials as You
received them, (b) in the description accompanying Your Submission, include the phrase "Submission
containing materials of a third party:" followed by the names of the third party and any licenses or other
restrictions of which You are aware, and (c) follow any other instructions in the Project's written
guidelines concerning Submissions.
Your Employer. References to "employer" in this Agreement include Your employer or anyone else
for whom You are acting in making Your Submission, e.g. as a contractor, vendor, or agent. If Your
Submission is made in the course of Your work for an employer or Your employer has intellectual
property rights in Your Submission by contract or applicable law, You must secure permission from Your
employer to make the Submission before signing this Agreement. In that case, the term "You" in this
Agreement will refer to You and the employer collectively. If You change employers in the future and
desire to Submit additional Submissions for the new employer, then You agree to sign a new Agreement
and secure permission from the new employer before Submitting those Submissions.
Licenses.

Copyright License. You grant Microsoft, and those who receive the Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license in the
Submission to reproduce, prepare derivative works of, publicly display, publicly perform, and distribute
the Submission and such derivative works, and to sublicense any or all of the foregoing rights to third
parties.
Patent License. You grant Microsoft, and those who receive the Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license under
Your patent claims that are necessarily infringed by the Submission or the combination of the
Submission with the Project to which it was Submitted to make, have made, use, offer to sell, sell and
import or otherwise dispose of the Submission alone or with the Project.
Other Rights Reserved. Each party reserves all rights not expressly granted in this Agreement.
No additional licenses or rights whatsoever (including, without limitation, any implied licenses) are
granted by implication, exhaustion, estoppel or otherwise.

Representations and Warranties. You represent that You are legally entitled to grant the above
licenses. You represent that each of Your Submissions is entirely Your original work (except as You may
have disclosed under Section 3). You represent that You have secured permission from Your employer to
make the Submission in cases where Your Submission is made in the course of Your work for Your
employer or Your employer has intellectual property rights in Your Submission by contract or applicable
law. If You are signing this Agreement on behalf of Your employer, You represent and warrant that You
have the necessary authority to bind the listed employer to the obligations contained in this Agreement.
You are not expected to provide support for Your Submission, unless You choose to do so. UNLESS
REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE WARRANTIES
EXPRESSLY STATED IN SECTIONS 3, 4, AND 6, THE SUBMISSION PROVIDED UNDER THIS AGREEMENT IS
PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY OF
NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
Notice to Microsoft. You agree to notify Microsoft in writing of any facts or circumstances of which
You later become aware that would make Your representations in this Agreement inaccurate in any
respect.
Information about Submissions. You agree that contributions to Projects and information about
contributions may be maintained indefinitely and disclosed publicly, including Your name and other
information that You submit with Your Submission.
Governing Law/Jurisdiction. This Agreement is governed by the laws of the State of Washington, and
the parties consent to exclusive jurisdiction and venue in the federal courts sitting in King County,
Washington, unless no federal subject matter jurisdiction exists, in which case the parties consent to
exclusive jurisdiction and venue in the Superior Court of King County, Washington. The parties waive all
defenses of lack of personal jurisdiction and forum non-conveniens.
Entire Agreement/Assignment. This Agreement is the entire agreement between the parties, and
supersedes any and all prior agreements, understandings or communications, written or oral, between
the parties relating to the subject matter hereof. This Agreement may be assigned by Microsoft.

Reply to this email directly, view it on GitHubhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fmslearn-tailspin-spacegame-web%2Fpull%2F6733%23issuecomment-1292189119&data=05|01|tim.yost%40dnv.com|e83f8a0647ab4974d0a808dab76329cb|adf10e2bb6e941d6be2fc12bb566019c|0|0|638023933787973986|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=hYj6vcVhXEzPLHBCP3dWtCj4Awb3JQ0D%2BOJUlG%2F%2F1%2Bk%3D&reserved=0, or unsubscribehttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FADCDWB7WJPLD23DF7XWZLF3WFFBZ5ANCNFSM6AAAAAARPC43KY&data=05|01|tim.yost%40dnv.com|e83f8a0647ab4974d0a808dab76329cb|adf10e2bb6e941d6be2fc12bb566019c|0|0|638023933787973986|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=R8%2BNc7%2BITgAAxnxAWbASFWlqPRr8isXcPRKfFQQwRfM%3D&reserved=0.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>
This e-mail and any attachments thereto may contain confidential information and/or information protected by intellectual property rights for the exclusive attention of the intended addressees named above. If you have received this transmission in error, please immediately notify the sender by return e-mail and delete this message and its attachments. Unauthorized use, copying or further full or partial distribution of this e-mail or its contents is prohibited.

@microsoft-github-policy-service agree
From: microsoft-github-policy-service[bot] @.>
Sent: Wednesday, October 26, 2022 11:05 AM
To: MicrosoftDocs/mslearn-tailspin-spacegame-web @.>
Cc: Yost, Timothy @.>; Mention @.>
Subject: Re: [MicrosoftDocs/mslearn-tailspin-spacegame-web] Build pipeline (PR #6733)
@TimothyPYosthttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FTimothyPYost&data=05|01|tim.yost%40dnv.com|434a56f890d0446de3dd08dab7636e0e|adf10e2bb6e941d6be2fc12bb566019c|0|0|638023934930222100|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=VDeTU7g6iaWGUz0SkYfDTYpNbkC7K71Ce%2FQuYItFO5w%3D&reserved=0 the command you issued was incorrect. Please try again.
Examples are:
@microsoft-github-policy-service agree
and
@microsoft-github-policy-service agree company="your company"

Reply to this email directly, view it on GitHubhttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fmslearn-tailspin-spacegame-web%2Fpull%2F6733%23issuecomment-1292191761&data=05|01|tim.yost%40dnv.com|434a56f890d0446de3dd08dab7636e0e|adf10e2bb6e941d6be2fc12bb566019c|0|0|638023934930222100|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=1Jv7jXwEX1D08tOZQRqz4RjCUKO141%2FatDn%2BJutTvMw%3D&reserved=0, or unsubscribehttps://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FADCDWB6AQZCVWKQ3OKTCRETWFFCBDANCNFSM6AAAAAARPC43KY&data=05|01|tim.yost%40dnv.com|434a56f890d0446de3dd08dab7636e0e|adf10e2bb6e941d6be2fc12bb566019c|0|0|638023934930222100|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=eUsG0wlG3nnrHGXQqOdoSZuspMhWvaHv1EnjzX3mrm8%3D&reserved=0.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>
This e-mail and any attachments thereto may contain confidential information and/or information protected by intellectual property rights for the exclusive attention of the intended addressees named above. If you have received this transmission in error, please immediately notify the sender by return e-mail and delete this message and its attachments. Unauthorized use, copying or further full or partial distribution of this e-mail or its contents is prohibited.


a=connection:new is not parsed correctly

Trying to parse
a=connection:new

produces and invalid attribute:
invalid: [ { value: 'connection:new' } ]

yeah, there's no grammar for it at the moment, hadn't seen this line before. Feel free to add some - I'll merge a reasonable addition with tests. Am a bit busy at the moment.


Rebuild theme support on top of ThemeBuilder.

Is your feature request related to a problem? Please describe.
Themes have been a thorn in the side of designer for a long time, they expose far too much of the graphics plugin's internal workings and are exceedingly difficult to understand unless you've read the source code. This is obviously far from ideal, and a better solution is needed. Further, they are difficult to upgrade with the user needing to delete the file and then code generator rebuild, which again is far from optimal.
Describe the solution you'd like
Now that ThemeBuilder exists, it is possible to make the designer generate themes based on theme builder, which wraps all the complexity up and provides simple, easy to understand methods, which should be easier to deal with programmatically. Along with this if we provide a weakly implemented method (like the Arduino yield method), then we can allow users the option to extend the behaviour at build time.
Further, recent changes to create in memory bitmaps for the bitmap editor mean we can now even show a preview of the theme that looks like the real thing with only a small amount of work. This means that there would even be some degree of feedback as the theme was edited.
Additional context
See the TcThemeBuilder class in the TcMenuLib library. See that some examples have already been upgraded, such as PicoSDK OLED Encoder.
We are open to as much feedback as possible on this.

After thinking about this for a long time, IMHO there should be a couple of inbuilt "starter" themes that can be chosen in code generator, which get deployed into the theme header file (as now). Importantly, we should then document the theme builder support well enough that people can easily modify the provided template to meet their needs. @vzahradnik @Ales-Svoboda  what do you think?

I agree. Currently, the logic is so complex that even I am using just the default code generated by the TcMenu generator.

I also agree.


Added .videojs-wavesurfer class

Use videojs-wavesurfer class when plugin is initialized

Thanks. Please fix this error: https://travis-ci.org/collab-project/videojs-wavesurfer/builds/314579428#L511


Add support for skview978 and dump978-fa

When available from Flightaware (probably April 2019), please add support for skyview978 and dump978-fa.
This will allow us to use alternative SDRs for dump978, not just rtl-sdr.
It uses soapysdr
https://github.com/pothosware/SoapySDR

After performance issues with the portal which I am working on fixing I am at a point I need a break from HTML/JavaScript/maps side of things. I am planning to spend some time this week working on UAT and ACARS. ACARS will be first being I went out today and bought the copper needed for an antenna. I will be paying attention to UAT at this time as well being my modest antenna mast will be brought down once the ACARS antenna is made and a new homebrew UAT antenna added at the same time.

@jthawkes
skyview978? Where can one find information on this?

Looking at the source for the latest development branch of dump978 I am guessing skyview978 is the web side of dump978. I hate to constantly put off work on v3 for new features which should be added ASAP. This might be something to get out right away depending on how stable the dev branch is at this time.

Just an update being the milestone has changed for this "issue".
Looking at the source for the latest development branch of dump978 I am guessing skyview978 is the web side of dump978. I hate to constantly put off work on v3 for new features which should be added ASAP. This might be something to get out right away depending on how stable the dev branch is at this time.
Not going to guarantee a 2.8.0 release comes before 3.x but honestly I am torn on how to go with the v3.x portal. I have OpenLayers being a P.I.T.A. causing performance issues with what I thought was close to alpha quality release. The mid numbing issues have spawned ideas to go with a new application server beside PHP such as .NET core which would be more native to me or maybe node.js which honestly offers me a new learning path.  GRRRR!
However, I am about 75% through the script portion of v3.x which is a good thing!
In order to not fall far behind again v2.8.0 MIGHT be released in the meantime which may include support for this.
Anyways about to miss the Spacex launch!


Add support to update all motors in groupmotors with a single mutual goal

Adds option to use a single goal to update all motors in a groupmotor. This is useful when you want to add a mutual goal for all motors without having to type out each one.
motor:setGoal(Flipper.Spring.new, 0, { frequency = 2, dampingRatio = 1, })

An alternative implementation would be to take in the 3 args in a single table so it is consistent with the parameters for a table of goals. That would require this syntax though -
motor:setGoal({ Flipper.Spring.new, 0, { frequency = 2, dampingRatio = 1, } })

@chriscerie, looks like it needs a rebase...

I don't entirely like this syntax because it assumes that all goals have a target, which is not always the case.
It also just feels really awkward in general, and doesn't seem very TS-compatible (it's pretty uncommon to specifically reference a constructor, if not downright impossible).
I've brought up this issue multiple times in the past because it's the only thing holding back typed motors, but there just really isn't a solution that would work that doesn't require a complete remaking of the API as a whole.


Task Manager available memory is often wrong

Environment

Item
Value

OS, Version / Build
Win32NT             10.0.19041.0 Microsoft Windows NT 10.0.19041.0

Processor Architecture
AMD64

Processor Type & Model
Intel Core i7-7820HQ @ 2.90 GHz

Memory
32 GB

Storage Type, free / capacity (e.g. C: SSD 128GB / 512GB)
SSD, 32GB / 254 GB

Relevant apps installed
Python

Description
The Task Manager "Available Memory" value on the Memory section of the Performance tab shows how much physical memory is available for allocation and it includes free memory, zeroed memory, and standby memory. Perfect. It is great to have a single number which represents how much memory is available for programs to allocate.
But! Physical memory is just one possible limiting factor. It is possible to have 10 GB of available memory but have zero commit available. Due to the limited size of my SSD and therefore the limited size of my page file I hit this problem quite frequently. In this context the current Available memory calculation is misleading. It would be much better if "Available" was set to the minimum of the current calculation and the amount of commit remaining.
Steps to reproduce
Have a fixed-size page file. Have a program that allocates a lot of memory but doesn't touch it, preferably using VirtualAlloc. The amount of commit will drop, but Available memory will stay steady.
Expected behavior
Available memory should drop when commit is dropping.
Actual behavior
Available memory pays no attention to commit.

The original twitter thread with supporting thoughts and screen shots is here:
https://twitter.com/BruceDawson0xB/status/1357735446449516545

Hey Bruce! This issue is actually to be handled by the Task Manager team and they take their feedback via the Feedback Hub. Can you file this issue in Feedback Hub under Desktop Environment -> Task Manager? Once you've done that, please paste the link here and I can upvote the feedback 🙂. I've also reached out to the team about this issue so they're aware of it now and are investigating a fix. Once you include the Feedback Hub link I'll close out this issue as out-of-scope.

I filed the issue here:
https://aka.ms/AAce5h8
I had to edit quite a bit to fit within the 1,000 (???) character limit, and I had to file the issue on my home laptop whereas the issue occurs on my work laptop where Feedback hub is disabled. Therefore the report does not include a recording of the issue happening - I hope it doesn't get discarded because of this.

I've alerted the team of your issue. It shouldn't get discarded. Thanks for reporting Bruce!


Orchestrator segfaulting on agent discovery.

I'm still trying to chase down the root cause of this issue, but I'm seeing Orchestrator segfault periodically on trying to discover against a MySQL instance with orchestrator-agent installed and running.
It seems to croak at least daily on us.
[martini] Completed 200 OK in 3.544196ms
[mysql] 2018/05/31 08:16:25 packets.go:36: unexpected EOF
[mysql] 2018/05/31 08:16:25 packets.go:36: unexpected EOF
2018-05-31 08:16:25 ERROR invalid connection
2018-05-31 08:16:25 ERROR ReadTopologyInstance(prod-mysql-infrastructure-useast1a-01:3306) show variables like 'maxscale%': invalid connection
[mysql] 2018/05/31 08:16:25 packets.go:36: unexpected EOF
[mysql] 2018/05/31 08:16:25 connection.go:372: invalid connection
[mysql] 2018/05/31 08:16:25 connection.go:372: invalid connection
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x8d473d]

goroutine 43943905 [running]:
github.com/github/orchestrator/go/agent.DiscoverAgentInstance(0xc422b54d06, 0x25, 0xbba, 0x111fd40, 0xc421bbe280)
        /home/shlomi-noach/go/src/github.com/github/orchestrator/go/agent/agent_dao.go:142 +0x33d
created by github.com/github/orchestrator/go/agent.SubmitAgent
        /home/shlomi-noach/go/src/github.com/github/orchestrator/go/agent/agent_dao.go:123 +0x20e

[martini] Completed 200 OK in 661.474µs
[mysql] 2018/05/29 18:16:25 packets.go:36: unexpected EOF
[mysql] 2018/05/29 18:16:25 packets.go:36: unexpected EOF
2018-05-29 18:16:25 ERROR invalid connection
2018-05-29 18:16:25 ERROR ReadTopologyInstance(prod-mysql-infrastructure-useast1a-01:3306) show variables like 'maxscale%': invalid connection
[mysql] 2018/05/29 18:16:25 packets.go:36: unexpected EOF
[mysql] 2018/05/29 18:16:25 connection.go:372: invalid connection
[mysql] 2018/05/29 18:16:25 connection.go:372: invalid connection
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x8d473d]

goroutine 2053620 [running]:
github.com/github/orchestrator/go/agent.DiscoverAgentInstance(0xc4219c2496, 0x25, 0xbba, 0x111fd40, 0xc4208528a0)
        /home/shlomi-noach/go/src/github.com/github/orchestrator/go/agent/agent_dao.go:142 +0x33d
created by github.com/github/orchestrator/go/agent.SubmitAgent
        /home/shlomi-noach/go/src/github.com/github/orchestrator/go/agent/agent_dao.go:123 +0x20e
2018-05-29 19:01:54 INFO starting orchestrator, version: 3.0.11, git commit: 351af88a4b6a449307fda2f669cbe7d8323b6dfd

[mysql] 2018/05/26 08:16:25 packets.go:36: unexpected EOF
[mysql] 2018/05/26 08:16:25 packets.go:36: unexpected EOF
2018-05-26 08:16:25 ERROR invalid connection
2018-05-26 08:16:25 ERROR ReadTopologyInstance(prod-mysql-infrastructure-useast1a-01:3306) show variables like 'maxscale%': invalid connection
[mysql] 2018/05/26 08:16:25 packets.go:36: unexpected EOF
[mysql] 2018/05/26 08:16:25 connection.go:372: invalid connection
[mysql] 2018/05/26 08:16:25 connection.go:372: invalid connection
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x8d473d]

goroutine 48432576 [running]:
github.com/github/orchestrator/go/agent.DiscoverAgentInstance(0xc422745066, 0x25, 0xbba, 0x111fd40, 0xc421eaad00)
        /home/shlomi-noach/go/src/github.com/github/orchestrator/go/agent/agent_dao.go:142 +0x33d
created by github.com/github/orchestrator/go/agent.SubmitAgent
        /home/shlomi-noach/go/src/github.com/github/orchestrator/go/agent/agent_dao.go:123 +0x20e

It's always against the same host from what I've seen, so there's very likely something misconfigured there, but that shouldn't be enough to cause Orchestrator to throw a SIGSEGV. :)
note: Nothing is actually being discovered here! The node referenced here itself is already in an Orchestrator cluster topology, it just seems to hit the code to refresh and discover it and gets confused.
Other notes: We upgraded directly from Orchestrator 3.0.2 to 3.0.11 via the debian package; and our agents are some release of 1.2.1.
orchestrator config: https://gist.github.com/cswingler/5f79a00830b09fc1a205fc70346fe9d4
orchestrator-agent config: https://gist.github.com/cswingler/b769e4311bb1a0c35ca49fcb7a006d7e

Thanks, I'll give that a whirl and report back.

That fixed the segfault issue, thanks!
Log now reads:
[mysql] 2018/06/13 15:22:22 connection_go18.go:22: invalid connection
[mysql] 2018/06/13 15:22:22 packets.go:36: unexpected EOF
2018-06-13 15:22:22 ERROR invalid connection
2018-06-13 15:22:22 ERROR ReadTopologyInstance(prod-mysql-infrastructure-useast1a-01:3306) show variables like 'maxscale%': invalid connection
[mysql] 2018/06/13 15:22:22 connection.go:372: invalid connection

and carries on.

Can you please set "SkipMaxScaleCheck": true in your config file?