Parallelized dgetrf doesn't detect matrix as singular

I have the following matrix:
10,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,10,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,10,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,5.6353902507748659,0,0,-5.6353902507748659,0,0,0,0,0,0,0,
0,0,0,0,5.6353902507748659,0,0,-5.6353902507748659,0,0,0,0,0,0,
0,0,0,0,0,5.6353902507748659,0,0,-5.6353902507748659,0,0,0,0,0,
0,0,0,-5.6353902507748659,0,0,15.635391250774864,0,0,-10,-9.9999999999999995e-07,0,0,0,
0,0,0,0,-5.6353902507748659,0,0,25.635391250774866,0,-10,-10,-9.9999999999999995e-07,0,0,
0,0,0,0,0,-5.6353902507748659,0,0,25.635390250774865,-10,0,-10,0,0,
0,0,0,0,0,0,-10,-10,-10,30,0,0,0,0,
0,0,0,0,0,0,-9.9999999999999995e-07,-10,0,0,20.000001999999999,-10,-9.9999999999999995e-07,0,
0,0,0,0,0,0,0,-9.9999999999999995e-07,-10,0,-10,30.001000860019595,0,-10.000999860019597,
0,0,0,0,0,0,0,0,0,0,-9.9999999999999995e-07,0,5.635391250774866,-5.6353902507748659,
0,0,0,0,0,0,0,0,0,0,0,-10.000999860019597,-5.6353902507748659,15.636390110794462,

...which should be singular. At least getting its inverse in GNU Octave shows that it's singular to machine precision.
If I try to do LU decomposition for it using OpenBLAS:
#include <stdio.h>

#define lapack_int int
#define LAPACK_dgetrf dgetrf_
void LAPACK_dgetrf(const lapack_int*, const lapack_int*, double*, const lapack_int*, lapack_int*, lapack_int*);

double M[] = {
10,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,10,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,10,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,5.6353902507748659,0,0,-5.6353902507748659,0,0,0,0,0,0,0,
0,0,0,0,5.6353902507748659,0,0,-5.6353902507748659,0,0,0,0,0,0,
0,0,0,0,0,5.6353902507748659,0,0,-5.6353902507748659,0,0,0,0,0,
0,0,0,-5.6353902507748659,0,0,15.635391250774864,0,0,-10,-9.9999999999999995e-07,0,0,0,
0,0,0,0,-5.6353902507748659,0,0,25.635391250774866,0,-10,-10,-9.9999999999999995e-07,0,0,
0,0,0,0,0,-5.6353902507748659,0,0,25.635390250774865,-10,0,-10,0,0,
0,0,0,0,0,0,-10,-10,-10,30,0,0,0,0,
0,0,0,0,0,0,-9.9999999999999995e-07,-10,0,0,20.000001999999999,-10,-9.9999999999999995e-07,0,
0,0,0,0,0,0,0,-9.9999999999999995e-07,-10,0,-10,30.001000860019595,0,-10.000999860019597,
0,0,0,0,0,0,0,0,0,0,-9.9999999999999995e-07,0,5.635391250774866,-5.6353902507748659,
0,0,0,0,0,0,0,0,0,0,0,-10.000999860019597,-5.6353902507748659,15.636390110794462,
};

int main(int argc, char **argv)
{
        const int n = 14;
        int ipiv[14];
        int info = 0;
        LAPACK_dgetrf(&n, &n, M, &n, ipiv, &info);
        printf("Info %d\n", info);
        return 0;
}

...it prints info 0. However, if I set the environment variable OPENBLAS_NUM_THREADS to 1, it prints 14.
So it incorrectly detects the matrix as decomposable if I run it with many threads, and only detects it correctly as singular if I run it with one thread. The separator seems to be 3 vs 4 threads: with 3 threads it prints info 14 but with 4 threads it prints info 0.
I have OpenBLAS 0.3.8. I understand that in newer versions of OpenBLAS, small matrices are always handled with only one thread so it improves performance, so testing the issue with a new OpenBLAS isn't even possible. However, since the calculation happens differently depending on the number of threads, I think there's an issue somewhere that should be tracked down. I would expect OpenBLAS to give identical results no matter how many threads are in use.

I cannot immediately reproduce this with 0.3.26 (after disabling the code that enforces single-threading of course), what is your hardware please ?

The hardware is a VirtualBox virtual machine running Ubuntu 20.04 LTS on top of Windows 11 host. CPU is Intel Core i7-10510U and hardware virtualization is being used.

Thank you - that should be Haswell as far as OpenBLAS is concerned (unless your vbox setup hides the avx2 capability),
I cannot reproduce the problem there although I cannot immediately point to a particular code change that would have fixed it

Here are the cpuinfo flags:
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single fsgsbase avx2 invpcid rdseed clflushopt md_clear flush_l1d arch_capabilities
...so it doesn't hide the avx2.

something very weird going on, a NULL argument in the caller takes on a value in the actual getrf function when the cpu target is sandybridge but not for haswell... still looking for an explanation, no obvious overwrites

The old version may have used a different GEMM kernel, and GETRF behaviour depends on its unroll factor - which seems to explain the discrepancy I've found with Sandybridge. In one case, the workload gets split up again where it appears the problem comes in.

Interestingly, the plain unoptimized Fortran code of the "netlib" Reference-LAPACK implementation does not recognize this particular matrix as singular either. And so far I have not come across any other (trivially) singular matrix that similarly slips through either codes. This is looking more and more like a weird corner case of machine precision (and/or compiler code generation) to me.

Maybe this is more like an issue due to limited floating point precision rather than a real problem. I understand that in parallel versions, calculations can happen in different order and the usual mathematical rules of associativity for example do not necessarily apply. I encountered the matrix on a circuit nodal analysis problem that was incorrectly presented, and it should indeed be singular, since the problem presentation was incorrect and important elements were missing from the matrix.

Probably yes - and it is interesting that even the simple single-threaded Fortran code of the Reference LAPACK does not treat this matrix as singular on my machine, so compiler version or the math libraries on your system may play a role here as well. Not sure if I want to calculate the determinant by hand, but I don't think I see any obviously interdependent rows or columns that would make it unequivocally singular. (Octave probably uses either OpenBLAS or the Reference BLAS/LAPACK so is no independent proof)

It is known that small roundoff errors can lead to different outcomes of LU. (1) GETRF can fail on an ill-conditioned matrix (info > 0) because perturbations lead to a zero pivot and (2) GETRF runs to completion on a matrix that ought to have a zero pivot, but that is perturbed to a non-zero. This does not indicate an issue with LU. In my opinion, it is not a requirement for correctness that all implementations of LU (algorithmic variants, serial/parallel, different architectures) reach the exact same result.
If the task is to determine the rank, I would suggest to using rank-revealing QR decomposition.


bugfix - Dummy container for the purpose of width calculation, was be…

…ing created for columns that weren't being rendered, and therefore aren't part of the width calculation, which is a waste, but the bug is this dummy container also wasn't being removed from the DOM.
To recreate this bug, one only needs to call columnApi.autoSizeColumns on grid with columns that aren't being rendered. There will be extra DOM elements as siblings to the rows.
Tried to keep with the code style. Left putHeaderCellsIntoDummyContainer as a single line function for the comment.

Oops, forgot to change the if condition. I will make a new one.


fix(ios) issue #349 - navigate to cdvfile with wkwebview

Platforms affected
iOS
Motivation and Context

Fixes #349
This issue is only present when using the wkwebview engine, but since that is the future of iOS this should be addressed.  The wkWebview does not allow unknown schemes (eg. cdvfile://).
Description

These changes intercept navigation requests and check if the url is a cdvfile:// url.  If it is, it stops the request and creates a new request for the equivalent file:// url.
Alternative solution:
Use a similar workaround to what is proposed by @guylando in pull request #296.  This will get us past the unknown scheme, but I'm not sure how to get it to return the correct file from there.  (Other than loading a request for the equivalent file:// url).
Future (better) solution:
When the lowest cordova supported iOS version is 11.0 this work-around can potentially be removed.  WKWebview for iOS 11+ supports "WKURLSchemeHandler" and "setURLSchemeHandler" which should allow actual support for the cdvfile scheme.
Advice requested:
This is my first foray into objc and the ios side of cordova-plugin-file.

I'm not sure if my method nativeUrlFromCdvfileUrl is the most efficient way to get the equivalent file:// url, please advise.
This addition basically allows you to do window.location.href = 'cdvfile://...';  but the window.location.href after the page load will actually be file://..., can anyone see any issues that this could cause?  (Especially issues that could be worse than not being able to navigate to cdvfile:// url at all?)

Testing

Tested on ios 9.3.5 and 10.3.4 devices.  Tested with and without wkwebview.
Ran npm test passed.
Ran the automatic tests.  No change from before and after the change.  (One test failed before and after the additions (on andriod and ios), reported in issue #357)
Checklist

[x] I've run the tests to see all new and existing tests pass
[x] I added automated (manual) test coverage as appropriate for this change
[x] Commit is prefixed with (platform) if this change only applies to one platform (e.g. (android))
[x] If this Pull Request resolves an issue, I linked to the issue in the text above (and used the correct keyword to close issues using keywords)
[x] I've updated the documentation if necessary

Hi, I am trying to use your fix for problems with cdvfile on ios. But I can't figure it out how this works.
I'm trying to load .png image from phone app storage (Documents folder) with native URL (.toInternalURL())  cdvfile://url and get this error:
[Error] Failed to load resource: unsupported URL (cdvfile://localhost/persistent/image.png, line 0)
When using .toURL() for file:// link  I receive this error:
Failed to load resource: The operation couldn’t be completed. (kCFErrorDomainCFNetwork error 1.)
url like this :
[Log] file:///var/mobile/Containers/Data/Application/7ECD0022-9EA9-4BA5-8D45-0ECCD417625C/Documents/image.png

@tomaz-dugii
Gee, it's been a long time since I have worked with this stuff, but let me see....
Just to be clear, these changes are only relevant if you are trying to NAVIGATE to a cdvfile:// url from an https:// page
If you are trying to display an image with a cdvfile:// url on an https:// page this may also help (but it's been long and I can't remember for sure).
(If your situation is one of the above cases, I might be able to help.)
If you are just having trouble figuring out what the correct url is for file you should look here:
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#file-system-layouts
For your image in the documents folder, it should be something like:
cordova.file.documentsDirectory + '/image.png';
(personally, I just use the cordova.file.dataDirectory if you don't need to share image.png with the users)
Otherwise I would recommend reading through the quirks section:
https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/#ios-quirks

Hi, thanks for reply. I did a workaround for this issue.
So basically I used Swift, got the file, read file and convert to base64 string and send it to Cordova and just user in <img src="data:image/png;base64, 'file content'> in HTML and it worked.

This addition basically allows you to do window.location.href = 'cdvfile://...'; but the window.location.href after the page load will actually be file://..., can anyone see any issues that this could cause? (Especially issues that could be worse than not being able to navigate to cdvfile:// url at all?)

I think this may break location.reload() or page refreshes maybe?

Since you would be on a file:// url, the location.reload() should just reload the file:// url which 99% should be fine.  (But I am the OP, so of course I wouldn’t see any issues. :p)
(I have been using it in our app since Nov, and no problems.)
But, since cordova-ios has a minimum ios of 11 (I believe?), and with iOS 11+ there is WKURLSchemeHandler, which would probably be a better solution.

To be clear, I didn't test (i dont even have mac hardware to test with). It was just speculation.
I just have someone on slack who is on cordova-ios@6, using the schemes and is stating he has an issue using cdvfile urls on img nodes. It produces the same behavior as this pr is trying to fix... so it sounds like the same issue.

Ah okay, interesting.
I had/have high hopes for WKURLSchemeHandler.
You could possibly tell that person to look at cordova-plugin-ionic-webview 4.x because I believe it uses the WKURLSchemeHandler.
I have only used the 2.x version of cordova-plugin-ionic-webview (which hosts a local server), so I am able go from https to the local server no problem.
But an interesting test would be if you can go from https to local content via cordova-plugin-ionic-webview 4.x.

Since ios 11+ is the minimum now this isn't necessary.
If you enable the new scheme preference from<EMAIL_ADDRESS>you are able to go from https://... to app://localhost/....  (or whatever your scheme+hostname is.)
<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />

@Lindsay-Needs-Sleep desperately need your help please :/
cordova ios 6.1.1 / 10.0.0, ios 14.3
[blocked] The page at [mysite] was not allowed to run insecure content from dani://localhost/bundle/www/cordova.js. when trying to load my local cordova from the remote web page.
CORS =
Plugins:
cordova-plugin-dialogs 2.0.2 "Notification"
cordova-plugin-file 6.0.2 "File"
cordova-plugin-globalization 1.11.0 "Globalization"
cordova-plugin-iroot 2.0.2 "iRoot"
cordova-plugin-optionsmenu 1.0.23 "OptionsMenu"
cordova-plugin-whitelist 1.3.4 "Whitelist"
cordova-plugin-wkwebview-engine 1.2.1 "Cordova WKWebView Engine"
cordova-plugin-wkwebview-file-xhr 3.0.0 "Cordova WKWebView File XHR Plugin"
tried with both cdvfile:// scheme as well as the custom one you see above
WKURLSchemeHandler's startURLSchemeTask is not even called
Any thoughts, ideas, prayers ?
thanks

@LonestarX91
My first thought is that since you are on cordova-ios 6.1.1 you shouldn’t include cordova-plugin-wkwebview-engine anymore (since it is included by default in cordova-ios 6.x.x).
The next thing is you should make sure you have your scheme <preference’s set correctly.  (See my comment in this thread just above your post).
If that doesn’t work, you can post your config.xml.
(I use cordova-plugin-hostedwebapp to inject the cordova libraries onto our webpage.  I was including them by a script tag at one point long ago, can’t remember if I ever fully got it working or not.  I think it should be possible....)

@Lindsay-Needs-Sleep thanks a lot for the quick input !
So I did the following: removed wkwebview engine plugin, set my pref scheme to
```

set the CSP to
`<meta http-equiv="Content-Security-Policy" content="default-src * com.mycomp.myapp: gap://ready file: cdvfile: data:; script-src * 'self' com.mycomp.myapp: file: cdvfile: 'unsafe-inline' 'unsafe-eval'">`

and i still get

`[Warning] [blocked] The page at https://mywebsite.com/page.html?platform=ios was not allowed to run insecure content from com.mycomp.myapp://localhost/bundle/www/cordova.js.`

See config.xml below

test

        test

        test

<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<preference name="scheme" value="com.mycomp.myapp" />
<preference name="hostname" value="localhost" />
<preference name="AllowInlineMediaPlayback" value="false" />
<preference name="BackupWebStorage" value="cloud" />
<preference name="DisallowOverscroll" value="false" />
<preference name="EnableViewportScale" value="false" />
<preference name="KeyboardDisplayRequiresUserAction" value="true" />
<preference name="MediaTypesRequiringUserActionForPlayback" value="none" />
<preference name="SuppressesIncrementalRendering" value="false" />
<preference name="SuppressesLongPressGesture" value="false" />
<preference name="Suppresses3DTouchGesture" value="false" />
<preference name="GapBetweenPages" value="0" />
<preference name="PageLength" value="0" />
<preference name="PaginationBreakingMode" value="page" />
<preference name="PaginationMode" value="unpaginated" />
<preference name="OverrideUserAgent" value="Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0 Mobile/15E148 Safari/604.1" />
<preference name="ErrorUrl" value="error_page.html" />

```
I guess I'm gonna look into cordova-plugin-hostedwebapp for the moment, if you have any ideas why it's not working for me, please let me know
Thanks

@LonestarX91 Have you tired using this ionic plugin "cordova-plugin-ionic-webview".  I've modified the url to match plugin recommendation.
url = "ionic://localhost/cordova.js";
var el = document.createElement('script');
el.id = "123";
el.onerror = function () {
if (el.onerror) show_error("Cordova js not found")
}
el.onload = function () {}
el.src = url;
document.body.appendChild(el);
Can you give try once?

@LonestarX91 Have you tired using this ionic plugin "cordova-plugin-ionic-webview". I've modified the url to match plugin recommendation.
url = "ionic://localhost/cordova.js";
var el = document.createElement('script');
el.id = "123";
el.onerror = function () {
if (el.onerror) show_error("Cordova js not found")
}
el.onload = function () {}
el.src = url;
document.body.appendChild(el);
Can you give try once?

changed everything in prefs (scheme), allow-intent, etc to ionic, changed CSP on the server to
<meta http-equiv="Content-Security-Policy" content="
                           default-src * ionic: cdvfile: cdvfile://* data: blob: gap://ready file://*;
                           style-src * 'unsafe-inline';
                           script-src * ionic: ionic://* file://* cdvfile: cdvfile://* cdvfile://localhost/* 'unsafe-inline' 'unsafe-eval';">

changed my loading code to
var url = "ionic://localhost/" + localFolder + "/www/cordova.js";
                    var el = document.createElement('script');
                    el.id = "cordova";
                    el.type = "text/javascript";
                    el.onerror = function () {
                        console.error('error loading cordova script')
                    }
                    el.onload = function () {
                    }
                    el.src = url;
                    document.body.appendChild(el);

aaaaand i get....
Refused to load ionic://localhost/bundle/www/cordova.js because it does not appear in the script-src directive of the Content Security Policy.

it seems that no matter what I try (tried ios 5.1.1 with xhr (+ fix) plugin etc) CSP always bites me in the ass...
Refused to load cdvfile://localhost/bundle/www/cordova.js because it does not appear in the script-src directive of the Content Security Policy.
Any more ideas please ?
Thanks

it seems that no matter what I try (tried ios 5.1.1 with xhr (+ fix) plugin etc) CSP always bites me in the ass...
Refused to load cdvfile://localhost/bundle/www/cordova.js because it does not appear in the script-src directive of the Content Security Policy.
Any more ideas please ?

Exposing cordova.js to a remote source is a security vulnerability. It opens the door for someone to load that remote source and allows malicious actors to exploit your app by giving them the ability to remotely call native APIs on behalf of your app. Do not do this. This would also be indirectly against iOS app store terms of service because you're exposing native APIs to developers who may not have signed the Apple developer agreement.
I'm not sure what you're trying to accomplish but it sounds like you may be tackling your problem in the wrong way.

i'm beginning to think i am the only person in the world trying to load local cordova.js from remote, inside a wkwebview...

Exposing cordova.js to a remote source is a security vulnerability. It opens the door for someone to load that remote source and allows malicious actors to exploit your app by giving them the ability to remotely call native APIs on behalf of your app. Do not do this. This would also be indirectly against iOS app store terms of service because you're exposing native APIs to developers who may not have signed the Apple developer agreement.
I'm not sure what you're trying to accomplish but it sounds like you may be tackling your problem in the wrong way.

@LonestarX91
Sorry, I didn’t get any notifications.
It looks like you are doing everything right that I can think of.
I would suggest going with cordova-plugin-hostedwebapp.
The error you received when trying to use it is easy to fix (it is just modifying 1 line in plugin.xml)  You can see how to do it from any of the many forks of that plugin.  (in github, you can go: insights > network to see the most recently active forks).
Make sure you set up rules to only inject cordova onto your website to decrease the security vulnerability that breautek mentions.

@LonestarX91
Sorry, I didn’t get any notifications.
It looks like you are doing everything right that I can think of.
I would suggest going with cordova-plugin-hostedwebapp.
The error you received when trying to use it is easy to fix (it is just modifying 1 line in plugin.xml)  You can see how to do it from any of the many forks of that plugin.  (in github, you can go: insights > network to see the most recently active forks).
Make sure you set up rules to only inject cordova onto your website to decrease the security vulnerability that breautek mentions.


Website Internationalization Roadmap

As the new website is being built out bit-by-bit, we're adding support for internationalized content on a per-section basis. I've been working with l33t speak under the language "vo" to test out the infra as it is built.
I expect there are (at least) four main components for creating content on a per-language basis:

Website copy (navigation bar, index page, community page etc)
Website (and handbook) content (markdown files mainly)
Playground examples content, and on-screen copy
TSConfig reference content, and on-screen copy

Each one of these needs:

Working English documentation as reference
Infra for supporting the creation of internalized content
Infra for supporting the presentation of internationalized content

Current state of internationalization:

Website copy.

[x] English
[x] Creation
[x] Users

Website content (e.g. the handbook).

[x] English
[x] Creation
[x] Users

Playground examples:

[x] English
[x] Creation
[x] Users

TSConfig:

[x] English
[x] Creation
[x] Users

How To Contribute

Join the TypeScript Discord - come say hi the ts-web-translate

Clone the repo. The work will happen on the v2 branch. Deploys of the TS website have this static site set up at http://www.typescriptlang.org/v2/

git clone https://github.com/microsoft/TypeScript-Website
cd TypeScript-Website

code .
code README.md

# Follow setup instructions in README
# then start up the server
yarn start

Look below to see the sections, then come back up here

Read this PR to see an example of adding a language: https://github.com/microsoft/TypeScript-Website/pull/181

Pick one of the below sections to start with, it might be easiest to work with samples in the Playground first FWIW.

Website
The website supports localization via React-intl, as of today only the navigation bar it translatable, but with time this will grow. The infra just came in with https://github.com/microsoft/TypeScript-Website/pull/180
There are a series of keys and values for each language, with a fallback to English if you miss something. The TypeScript compiler will keep it all in check.
Playground
You can cover the examples in the dropdown in the playground (and in the site footer on desktops.) Full docs here

Make a subfolder with the code of the language in the copy folder of the 'playground-examples'
Ensure the filename are the same as English, (you can provide a different title via the JSON headers in the ts/js files)

TSConfig
Each TSConfig file is a unique markdown file which can be uniquely handled per language. Any markdown file not found will be replaced with English. Full docs here

Check out this folder
Ensure the filename is the same (we can provide a different title via the YML headers in the markdown files)

Recommendations
I'm pretty new to the translation game, but here's some notes from working with people so far on how translations can culturally work in the TS website.
Translate code to be a cultural fit. E.g.
const helloWorld = "Hi"

to
const olaMundo = "Olá`

Translate names in example
const user =  { name: "John" }

to
const usar =  { name: "João" }

Note: we aim to have a diverse set of nationalities and genders in our examples, so I'd recommend not changing all of them, but try keep it feeling like it was written with that in mind also.
Translate Technical Terms, but keep English around
This one is nuanced, but a term like Mapped Type is the name for this:
type MyPartialType<Type> = {
  // For every existing property inside the type of Type
  // convert it to be a ?: version
  [Property in keyof Type]?: Type[Property];
};

So, if you translate it to "mapeada type", then provide a reference to the original name the first time it is used: "mapeada type (Mapped Type em inglês)" so that readers can know how to find the English resources on a topic.

My long term goal will be to support the same style of infra which Gatsby and React use, but that requires having a full site ready with existing content for folks to work from - so it'll be piecemeal as I built it out

https://github.com/microsoft/TypeScript-Website/pull/163 adds the ability to create and present internationalized playground samples

@orta hi! I was talking to Daniel, that you can count on me about to translate this pages to Portuguese. :)

Hey @orta I would like to help out, are there any parts that still need internationalization support? (code wise) as I only know English so translations would be useless 😅

Hi @evanSe - Yeah, there's still quite a lot of English text in JSX which hasn't moved to the internationalization pattern yet!
For example there's the 'documentation' page (code), the same with the playground/tsx/handbook templates too
Here's an example of how the i8n works in the topnav as a reference

Create a file for the template
Link that to the english language
Create an i function in the React component
Use i("key")to get the text

Documentation is a solid place to start, think about bits which would change between languages (subheadings probably) vs which would never "React", "Angular" etc

I can help with Arabic translation support?

https://github.com/microsoft/TypeScript-Website/pull/790 wraps up localizing docs content (e.g. the handbook etc), at this point every page and string should be localized or localizable.
If it's not, that's my fault and generally 'getting it shipped'-ness for the site. I'm going to start making a list of 'safe to translate' docs later in the week which means we're not planning on making changes to the actual content of the page.

My general recommendations for reviewing localization are:

Does it provide enough english technical terms that you could google for the answer in English?
Is it readable without a deep knowledge of computer science?
Does it avoid overly gendered language?
Did you feel like you learned something from it?
General typoes etc I'm not too worried about, people will send PRs to fix them with time

Hi folks, I have a question - what do you think is better when it comes to making big updates to some docs already translated. For example in #873 I drastically rewrote the docs for the TSConfig esModuleInterop and allowSyntheticDefaultImports. This basically deprecates the Japanese and Portuguese translations.
When I do this should I:

Delete the translations and have them fall back to English?
Make an issue for replacing the specific files in a specific language?

I lean towards 1, but have reservations. So I'm asking people their opinions.
1, is a little rude!  However, deleting it does not force someone else to do work under any timeframe. The gap will show up in the internationalization issue for your language as something to pick up eventually.
I don't plan on doing this often (most of the English docs are solid) but I'd like to at least get a sense of whether this is the right idea if it comes up again.

I would opt for the second choice and have some sort of automated issue to keep track which files requires translation updates so translators don't get confused which file got already the new translation.

Hrm, yeah, maybe I could add a outdated: "08/07/2020" to the yml front-matter on those files and then the issue script can pick it up and place it at the top of the issue.

Perhaps it is an over engineered approach, but perhaps if the english content is newer than the translated content, a warning could be placed on top of the article, saying something like:
This documentation in Portuguese may be outdated. The original article was updated on 2020/08/07, but the last translation is from 2020/06/01. Maybe you can help us make it up to date! (Github Pinned Issue)

I like @KingDarBoja's idea, I think we can mix both of them. We could add an outdated label and also fallback these contents to the English Version.

Interlinking my proposal for moving to a separate repo for translations, which should be happening Feb 2021 -  https://github.com/microsoft/TypeScript-Website/issues/1480

Interlinking my proposal for moving to a separate repo for translations, which should be happening Feb 2021 -  https://github.com/microsoft/TypeScript-Website/issues/1480

It's February, and it's happening: https://github.com/microsoft/TypeScript-Website-Localizations/

This is done and shipped


Fix useState statement on Automatic sign-in section of Readme.md

fixes #1051
Checklist

[ ] This PR makes changes to the public API
[x] I have included links for closing relevant issue numbers

thanks for contributing


compose file version 3.2 is only supported by docker 17.04 and later

File: compose/compose-file/index.md, CC @londoncalling
The doc indicates that v3.2 is supported by 1.13.0+

@linusguan I might be missing something, but looking at the table on https://docs.docker.com/compose/compose-file/#compose-and-docker-compatibility-matrix, I see that it indicates only that Compose file version 3.2 is supported by 17.04 and above.
This matrix, though, on the Compose releases page, does indicate that v3.0-3.2 are supported by 1.13.0+: https://github.com/docker/compose/releases/
@shin- which is right?

Oddly enough, they both are.
Since nothing in v3.0 - 3.2 depends on any engine feature introduced after 1.13.0, docker-compose is able to use all three formats with Engine 1.13.0 or newer.
On the other hand, the Docker CLI introduced those formats progressively in 1.13.0, 1.13.1, and 17.04.0, and as such, you will need to use the corresponding version with docker stack deploy for the format to be recognized as valid.

The table has been updated recently so I am closing the issue.
@shin- thanks, the Docker CLI is the use case of mine.


improve boilerplate content in sample_content.yaml

Simplify and improve boilerplate content

Thank you. I will merge it, but the tests fail because the website doesn’t have a valid HTTP URL (https:// has been removed).
The https part is never printed on the resume, but we need it to ensure the link's validity in the PDF. So, we should add it back to the YAML. PDF won’t show the https part.

Thank you. I will merge it, but the tests fail because the website doesn’t have a valid HTTP URL (https:// has been removed).

What about the / at the end of the URL?

The https part is never printed on the resume, but we need it to ensure the link's validity in the PDF. So, we should add it back to the YAML. PDF won’t show the https part.

Will www. in URLs also be omitted? For reference, take a look at each of the URLs here https://imgur.com/7lJTTsN

portfolio.com
github.com/name
github.com/name/project
project.com
blog.com/projectname

www is the name of a subdomain; it's up to people whether to use it or omit it. Some people make their website only available to the www subdomain. Therefore, it's not being omitted automatically.

Maybe you can open an enhancement issue for that, and we can discuss  it under the issue. I don't understand why you would request that since the PDF automatically has the clean URL. I don't understand what you didn't like in the output.


[Feature][datasource] Change DataSource Connection Pool from Druid to HiKariCP (#6490)

Change DataSource Connection Pool from Druid to HiKariCP

This closes #6490

Codecov Report

Merging #6828 (9e8972f) into dev (e36d18b) will increase coverage by 0.02%.
The diff coverage is 37.73%.

@@             Coverage Diff              @@
##                dev    #6828      +/-   ##
============================================
+ Coverage     41.76%   41.79%   +0.02%
- Complexity     3614     3616       +2
============================================
  Files           641      641
  Lines         25909    25886      -23
  Branches       2797     2795       -2
============================================
- Hits          10821    10818       -3
+ Misses        14109    14089      -20
  Partials        979      979

Impacted Files
Coverage Δ

.../org/apache/dolphinscheduler/common/Constants.java
79.16% <ø> (ø)

.../org/apache/dolphinscheduler/dao/MonitorDBDao.java
10.52% <ø> (ø)

...hinscheduler/dao/datasource/ConnectionFactory.java
77.14% <ø> (ø)

...pache/dolphinscheduler/dao/upgrade/UpgradeDao.java
2.35% <ø> (ø)

.../datasource/api/client/CommonDataSourceClient.java
0.00% <0.00%> (ø)

...atasource/api/provider/JdbcDataSourceProvider.java
3.57% <0.00%> (ø)

...r/plugin/datasource/hive/HiveDataSourceClient.java
2.85% <ø> (ø)

...duler/service/quartz/HikariConnectionProvider.java
0.00% <0.00%> (ø)

...lphinscheduler/service/quartz/QuartzExecutors.java
0.00% <0.00%> (ø)

...eduler/dao/datasource/SpringConnectionFactory.java
96.15% <100.00%> (-0.19%)
:arrow_down:

... and 7 more

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 e36d18b...9e8972f. Read the comment docs.

Hi @kezhenxu94 , could you please check why e2e failed? @Narcasserun ask me but I could not find some detail reason 😭 .

6


Add Osvaldo's November workshop

With the workshop details available here, we would like to add it on our website. Additions would include:

[x] Creating a Markdown post in _posts with file name YYYY-MM-DD-workshop-title.md.
[x] Fill the file with appropriate contents inspired from other files.
[x] Take a picture representative of the workshop from Google Images, or even DALL·E 3 now that it has become available

Closed by 4fedea6. Thanks @jingwenji313 @jasperzyzhang !


BUG: read_hdf modifying passed columns list (GH7212)

Closes #7212. If this object is a list, make a copy and then pass to process_axes - otherwise, just pass the object directly (in this case it is most likely none).
A test for this behavior seems complex and somewhat contrived when compared with what exists in test_pytables.py, so I didn't add one --- let me know any thoughts on this.

I know it seems somewhat contrived, but we do try to add tests even for things like this.

@shoyer thanks for the feedback! much better solution. i'll get a test together as well.

@ajamian can you add a test for this?

@jreback absolutely, should be getting to it this weekend.

@shoyer @jreback thanks for the feedback --- let me know if you have any other comments

@ajamian one last thing -- can you add a note to the release notes for 0.17? otherwise this looks good to me!

yep lgtm as well - pls add a comment on the test with the issue number

I put the note into doc/source/whatsnew/v0.17.0.txt, I think this is where it belongs...and comment added to test. Thanks guys - let me know if you have any more comments.

Thanks!

thanks Tom!


docs/inspektor-gadget: Add docs for v0.5.0 and latest

Keep two entries for Inspektor Gadget documentation:

v0.5.0: points to our release (v0.5.0)
latest: points to our main branch

Merging given that the v0.5.0 release was done some days ago.


Use file extension when downloading a paste

Currently, .txt is always used, even if the user selected a lexer.
We could use File.lexer to grab the lexer the file was saved with, pygments.get_lexer_by_name() to fetch the Lexer instance, and then .filenames to get an (optional) list of valid file names, which the extension can be derived from

Duplicate of #160, sorry!


Format all nix files with nixfmt-rfc-style

nixfmt-rfc-style is the de facto formatting tool on nixpkgs, so it will be nice to mirror the same formatting here as well

Ye this will make the code cleaner, Ill try to run it in the future when committing new code, and run it on other PRs.


Storefront navigation app

There's an idea to add an app for managing the storefront navigation menus. Here is a draft of models that we could use:
Menu:
  slug

MenuItem:
  menu (foreign key)
  name
  sort_order
  url

Once defined, a menu would be referenced in templates with a template tag:
{% get_menu <slug> as menu %}
{% for item in menu %}

{{ item.name }}

{% endfor %}

The above idea covers flat menus, but if we wanted to add the ability to define dropdowns, we could use MPTT for menu items.

I'm sold on the idea of having a menu editor. I think most stores use at least two levels of navigation though so a flat structure may not cut it.
I'm 👎 on moving the logic to templates though. It's the controller's job to query the model layer.

So we should use MPTT for menu items. Instead of a template tag we can use a context manager, as menus will be accessed in most of the storefront views.

I forgot to mention, that in the dashboard we'll need a management view, that will make it easy to add menu items, by selecting from existing categories, collections or adding custom links.


Update tapir-akka-http-server, ... to 0.19.0

Updates

com.softwaremill.sttp.tapir:tapir-akka-http-server
com.softwaremill.sttp.tapir:tapir-enumeratum
com.softwaremill.sttp.tapir:tapir-json-circe
com.softwaremill.sttp.tapir:tapir-openapi-circe-yaml
com.softwaremill.sttp.tapir:tapir-openapi-docs

from 0.18.3 to 0.19.0.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.softwaremill.sttp.tapir" } ]

labels: library-update, early-semver-major, semver-spec-minor

Superseded by #231.


Corrections VIA Serial

Hello,
I intend on communicating with the Astrex SBi3 via Ethernet (TCP IP), but i would like to provide differential corrections via Serial (COM1-GPIO).
Reading the code, im not sure this is possible.
In the configureRx() function, the "device" parameter is parsed, and if proto=="tcp", the corrections are assumed to be provided over TCP.
The same "device" paramter is parsed in the initializeIO() when connecting to the device.
Is it possible to use tcp to connect to device, and serial to provide corrections (i am not using NTRIP, i have a radio on board that received corrections for a local base station).

Hello @Jad-Tawil ,
you are right, this combination was not implemented yet. It absolutely makes sense to provide corrections in this way and we will provide this option in a future version.
To use your setup right away you may use a hardcoded workaround like this. Disclaimer: I have no hardware to test this, butI hope it will work out.

Hello @thomasemter ,
In the hardcoded workaround, it seems like the serial port (settings_->rx_input_corrections_serial) is being used to receive differential corrections (settings_->rtcm_version), AND is outputting +SBG +NMEA messages. (Am i correct?)
My desired behavior is to receive differential corrections on this serial port, but to output the SBG and NMEA on the TCP/IP Port (the ethernet connection), which i use for all communications with the host PC.
I thought the following would be the hardcoded workaround. Let me know if i am correct:
Command Line commands:
sdio, IPS1, none, +SBF+NMEA  --- Here, the IPS1 server outputs SBF and NMEA
sdio, COM1, RTCMv2, none  --- Here, the COM1 port received RTCMv2 corrections, and outputs nothing.
C++ Code:
`{
std::stringstream ss;
ss << "sdio, IPS1, none, +SBF+NMEA \x0D";
send(ss.str());
}
{
std::stringstream ss;
ss << "sdio, " << settings_->rx_input_corrections_serial << "," << settings_->rtcm_version << ",none \x0D";
send(ss.str());
}`

You are partly correct.  SBG and NMEA output on the port for the corrections is indeed not necessary but as no streams are spawned, it makes no difference what is defined here.  The actual output of SBG and NMEA is on the dynamically assigned rx_port and not on IPS1. So for your application you do not need IPS1 at all.

Okay,
So because SBG and NMEA output is not needed on the port for the corrections, this is the only code i need:
std::stringstream ss; ss << "sdio, " << settings_->rx_input_corrections_serial << ", "    << settings_->rtcm_version << ", none \x0D"; send(ss.str());

Yes, exactly.

We are currently struggling with the same problem. We connect the receiver via serial an are able to publish the data on the ros topics. Is it possible to send corections via serial as well. If we confugure the ntrip in the receiver and connect the receiver via tcp-ip we are able to receive corrections. But instead of receiving the corrections from the ntrip client on the receiver , we  want to send them via serial. Is that possible? Has the rosaic suite a build in ntrip client?

This functionality is implemented in the newest version of the driver.
ROSaic has no NTRIP client built in but the receiver itself has.

Thank you for the fast response. So the receiver needs internet access to receive corrections from a ntrip client via https? I think it's not possible to share internet access to the receiver, if the connection to the machine which runs ROSaic node is via serial?

Yes, an NTRIP client can only receive data via https.
Serial and TCP connections need raw RTCM data. You may use a tool like (BKG Ntrip Client)[https://igs.bkg.bund.de/ntrip/bnc] to transfer NTRIP data as RTCM to a serial port of your PC.

Ok thanks for clarifying. I also read the improvements suggestions: Equip ROSaic with an NTRIP client such that it can forward corrections to the receiver independently of Data Link. I think this is what we are looking for:)

The mosaic provides multiple serial ports, which could be used. If that is not possible, you can use a send method in the communicator but you might have to implement another one because this waits for a response and I doubt RTCM data is provoking a response.

We just tested this combination. Sending corrections from the driver works without a problem. We just added a send method without the response and are able to send rtcm data. USB is used, not serial. I think a build in ntrip client would be much better, but currently we don't have enough time.

Great :-)
Out of interest, why don't you use ethernet via USB with the mosaic anymore (cf. issue #99)? USB provides two serial connections, i.e., it should be possible to send RTCM from BKG Ntrip Client via the second serial connection.
Lack of time is also the reason the NTRIP client has not yet been implemented. I think this is quite some effort .

The reason, why we don't use the built in ntrip client is, that we were faced with network problems unsing the module on the jetson Orin nano and tx2  boards. I think the main reason for this, is that the Thesyscon Usb Driver is not installed on arm. For example on the Orin, if we plug in the board, we cannot connect to wifi anymore, unless we connect with a different device to the same wifi. The Tx2 always creates a new wired connection which makes it difficult to configure the connection. On x86 linux we don't have any problems. So the main reason is, that we need this for Jetson nano boards. We also faced a strange error that we once have to kill the docker container on the jetson boards, because otherwise the gps is not recognized from the driver after a system start.

Thank you for the clarification.
I have not yet used any Septentrio receiver on Jetson, only on x86 as well and on a Raspberry Pi. So it might not be related to arm but merely to Jetson or Jetpack with its older Kernel.

Hi @thomasemter and @tiesus, I am struggling with the same problem. I want to send ntrip corrections over serial/usb to the Mosaic Go module with an external NTRIP client in ROS, while also receiving the GNSS measurements of the Mosaic Go module over serial. Is this possible on the same serial connection between the Mosaic Go and Jetson?
Or are there other options? For instance, use USB instead of a serial connection? Or will I run into network issues just like @thiesus was having (I am running a Jetson Xavier NX)

Hi, this should work with the following setup. We only use usb not serial port.
What we do is the following: We connect via tcp(usb emulated) like you find it in this line: https://github.com/septentrio-gnss/septentrio_gnss_driver/blob/d09c6761d3c24b89bee742f38716521df3f50bab/config/gnss.yaml#L5
To get ntrip-corrections to Mosaic module we use a ntrip client node. This ntrip client is publishing corrections via the rtcm message type implemented here: https://github.com/tilk/rtcm_msgs. To the  rosaic node we added a callback which receives the data on this topic and sends it to the to the device. For all communication we use the usb connection. What you have to change on the code is the following:

On communication_core.cpp add a send method for rtcm like this: `   void CommunicationCore::sendRtcm(const std::string& cmd)
{
manager_.get()->send(cmd);
}

2. Onrosaic_node` add a subscriber to the   and callback for the rtcm data and send it to the device via the above send method.

Thanks @thiesus! I have a NTRIP client which can output RTCM messages directly over serial, but I guess this is not an option since the septentrio node cannot process this?
The tcp(usb emulated) connection just works out of the box? What about also forwarding internet to the Mosaic Go over the same connection to the ntrip client of the module itself?

As said you can also take this corrections and send them over usb to the device. You can also forward internet to the mosaic Go, we just don't do it since we had problems with the configuration on some jetson boards which are probably based on the custom kernels. But you can try it. We go for the other option since we lower the configuration overhead and define the functionality in software.

Thanks, I'll give it a try and keep you updated!

Hi @tiesus,
I connected the module with USB to the jetson, forwarding internet did not seem to work.
The ntrip client I am using is able to send RTCM messages directly to a tty port, so I did not change the rosaic node with a callback like you said. After chosing one of the 2 ports provided by the septentrio module, I can see this in the septentrio interface:

But the menu on the top right does not show corrections coming in:

How do I know if the module is correctly interpreting the correction messages and everything is working? Any idea? (:

Hi @thomasemter ,
Thanks for the feedback. I connected a single (simple) GNSS antenna to the receiver and placed it outside:

How do I now see if the messages are interpreted correctly? And is there any information about the accuracy of the solution?

Hi @wvergouwenavular,
great :-).
You can see the uncertainties as the second values in the Position field. These are still too high for RTK but it usually takes a while to lock in.


Update WikiController

Error when WikiContents != null but the WikiContents have a count of 0 Changed to use .Any()

@leigh-pointer not sure why... but there is a conflict in this PR... can you investigate?


dApp: Displays notifications

Fixes #1758
Fixes #1374
Short description
This PR adds frontend logic and templates for receiving, viewing, and deleting notifications in the notification panel. A first notification to be added should be the notification regarding balance proof, issue #1374 . This needs additional work outside this PR, @kelsos is looking into that.
Definition of Done

[x] Steps to manually test the change have been documented
[x] Acceptance criteria are met
[ ] Change has been manually tested by the reviewer (dApp)

Steps to manually test the change (dApp)

Go to the UDC screen
Withdraw an amount
Wait 100 blocks
Notification area should show a small red dot and contain a notification
Enable receiving/ have enough in UDC
Send from python client some tokens
Close LC
Close channel from PyC
Wait for Settlement period to pass
Open LC
Notification area should show a small red dot and contain a notification

I've tested it, by locally rebasing on top of master. The notification did work, I can see a small red dot on the bell, but by clicking it, the actual notification is a little weird:

This was triggered by testing MS acting on a closed channel, which did work fine =)

Notice also that the duplicated notification is triggered by this event being a ConfirmableEvent, so I'd suggest filtering by payload.confirmed === undefined to get only the first, imediate emit (and which also works for non-confirmable events).

@taleldayekh Looking at André's comment above. What be shown in the grey square?

Good question. We have not decided on anything. An icon based on notification type, but we have not categorized the notifications. Perhaps some generic icon, or just remove/hide the square for now?

@taleldayekh Looking at André's comment above. What should be shown in the grey square?

Could we add first a generic icon and later on specify which one? The blue (i) - currenlty I cannot take a screenshot.


[Enhancement]: Proactive Warning when web.config is very large

Is there an existing issue for this?

[X] I have searched the existing issues

Description of problem
When installing extensions - especially on sites with many upgrades - the web.config can become so large that the system fails to start. The limit is ca. 250k
The problem is that any change in DLLs results in older references to the DLL being commented out - which is good, but the file can grow quickly on each module upgrade. This is especially visible when upgrading 2sxc a lot. Even if the DLLs don't change, the web.config grows a lot.
When this happens, the user is typically shocked and has no clue what to do - especially because he/she just installed something, so they tend to think the last installed extension caused problems.
Description of solution
I believe the UIs for installing extensions should have a warning when the web.config is bigger than 200k, linking to instructions what should be done. EG ca. here:

Description of alternatives considered
We could also

Place the commented out lines in a separate file - eg. web.history.config - I would kind of like this
Auto fix this (remove older comments) - very difficult and could remove things the user may still need
Auto-backup the web.config and auto fix - similar problems

Anything else?
No response
Do you be plan to contribute code for this enhancement?

[ ] Yes

Would you be interested in sponsoring this enhancement?

[ ] Yes

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I really like the idea of a warning, keeping the changes in context is a good idea!

@iJungleboy this would be a great enhancement.  I like the idea of a UI warning when a certain threshold is met.

I think that a 200K web.config is the largest I have ever heard of! That's an incredible size! and, like you said, much of it is likely commented out sections. I think a good element to consider as another feature, perhaps in the Config Manager screen, would be ability to "clean up" or "condense" the web.config by removing the commented out sections.
But back to the point of this ticket, I think that a warning before install action happening seems like a good place to ocurr

This would be amazing. We've run into this issue before too when doing lots of module updates resulting in a magnitude of commented out sections. We did not realize this would take down the entire site haha. Oops.


add update-images.sh for docker-host

Linked PR in Lagoon
https://github.com/amazeeio/lagoon/pull/2368

Closes: #151

hi @xantrix sorry this has languished a bit.. could you rebase onto main and we'll get this in ASAP.

no worries @smlx :) rebased


Use pkg-config to find zeromq

Even though zeromq's repository includes cmake files, the default build system for zeromq is autotools, and therefore, the cmake artefacts are not installed by default. (We happen to manually generate then in the case of conda but that is not the case for other package managers).
Cmake has the possibility of finding packages that have a .pc file using the PkgConfig module.
Now using PkgConfig so that @yurivict can continue on his work to package xeus and xeus-cling for freebsd.
cf #74

This also makes pkg-config a build-time dependency on linux and OS X.

Let's make the life of package maintainers easy ;)


Missing ability to add Feedback to page

Describe the bug
The ability to add feedback on the product or page page is not available.
To Reproduce
Steps to reproduce the behavior:

Go to https://docs.microsoft.com/en-us/sql/reporting-services/report-server-sharepoint/deploy-report-viewer-web-part?view=sql-server-ver15
Scroll down to the bottom of the page
the option add Feedback to the page is not available.

Expected behavior
I should be able to provide Feedback on every page in docs.
Screenshots
If applicable, add screenshots to help explain your problem.

should be something like

@DeanGross Thanks for taking the time to report this issue!
I'm currently researching why the feedback mechanism is not currently available on the docs repository and pages you reported. Agree that consistency across all Microsoft Docs pages is critical to achieving our goal of providing content that is easy to use.

Hi, @DeanGross -- You're right, feedback is not turned on for the Reporting Services content. I believe you have 2 options.

If you'd like to make a comment, under "Is this page helpful?" please select either Yes or No. You then have the option to provide feedback.
I believe you also have an Edit pencil in the upper right corner, right? You can click that to suggest changes to the article.

Hope that helps!
cc @mlottner


BlueYonder.Companion.Client.sln Lab 3

the BlueYonder.Companion.Client.sln project used in exercise 2 Mod 3 lab is throwing a System.NullReferenceException on line 165 in the App.xaml.cs. also several ApplicationViewState obsolete warnings. (Windows 10 Pro 1803 with VS 2017 15.7.2

problem is related to VS configuration. following the setup guide resulted in successful completion of lab


Display a message if you try to update this repo without updating to Talon 0.4

With all the changes to CSV handling, updating this repo without updating core Talon is going to cause extremely basic functionality to break, such as dictation of individual letters.

I think it's been long enough this isn't worth doing any more.


Styling the slider

where can i find the  StyleSheet.js and ViewStylePropTypes.js in the package ?

Second that - how can we customize this?

Second that - how can we customize this?

Any updates on this? I have no clue how I can style the slider in a more sophisticated way than just changing three colors.

try @sharcoux/slider
It's the web implementation of this slider made compatible with iOS and android. There are more customization possible.

There are 3 props to set colours of the slider
minimumTrackTintColor
maximumTrackTintColor
thumbTintColor

Rest of view styles can be passed with style prop

Yes, but which props can be used? They refer to stylesheet.js-

Was also looking around for StyleSheet.js and ViewStylePropTypes.js but could not find it in this repo...
For instance, if i want to change the size of the slider handel, how do i do that?

I am also looking for that @mansdahlstrom1, have you found a way?

Just use another slider. You can try @sharcoux/slider but anyone will do.

Just use another slider. You can try @sharcoux/slider but anyone will do.

That was also my solution. I used https://www.npmjs.com/package/rn-range-slider

I am also looking for that @mansdahlstrom1, have you found a way?

No not really, sorry

I also searched for this configuration setting, but no luck.
I had to look for another library

Is this still the case...can we not customise the styles?

Hi! There is still no way to change the slider handler's size?

By using the default thumb it's indeed currently still unsupported.
There's still an option to use the image as a thumb, and to customize the size of the image.
Thank you for the patience!

By using the default thumb it's indeed currently still unsupported. There's still an option to use the image as a thumb, and to customize the size of the image. Thank you for the patience!

Thanks for the response! Could you give me a code example where you pass an image as a prop?

@virginiab10 There are plenty of examples around, especially in the example app of this repository.
You can check these lines of example app or this line from the rn-slider-repro-app I prepared for this repository.

Still no update? It's a must have thing sadly


Allow to set a custom device & dtype in ASE calculator

One more step for #430
The idea is to allow the user to specify a custom device to run the model with. This should enable testing of models on GPU (even if the rest of ASE runs on CPU). If the user does not specify a device, we try the values in supported_devices in order.
Contributor (creator of pull-request) checklist

[x] Tests updated (for new features and bugfixes)?
[x] Documentation updated (for new features)?
[x] Issue referenced (for PRs that solve an issue)?

Reviewer checklist

[x] CHANGELOG updated with public API or any other important changes?

📚 Documentation preview 📚: https://metatensor--539.org.readthedocs.build/en/539/

This will be updated to only a custom device once #551 is merged

looks good to me ✅


Drag attachment from Outlook and upload

Is your feature request related to a problem? Please describe.
I often get files emailed to me from colleagues, which are to be uploaded to blob storage using Storage Explorer. If I try and drag the attachment from the Outlook message to Storage Explorer, nothing happens.
Describe the solution you'd like
When I drag a file from Outlook to Storage Explorer it is uploaded the same way as if I was to drag a file from File Explorer.
Describe alternatives you've considered
The current workaround is to save the attachment locally and then upload the file from the saved location. Another alternative is to grant my colleagues access to Azure Storage, but they are not technical staff and I would be concerned about them breaking something.
Additional context
I think that the way Outlook saves attachments in a temp directory is different to other programs, which is why drag-drop doesn't work to 3rd party programs, though I'm no expert and don't fully understand the issue.

Good idea, but I'd be a bit more careful in terms of drag-and-drop from outlook attachment directly to Azure Storage. If we add the functionality, we will need to consider the cases where the attachment contains malware or harmful stuff.

Yes that seems like a reasonable consideration. Perhaps there could be a setting where the user can specify what file types to allow drag-and-drop? In my scenario the files are images.


Controller.callBeforeHook not called anywhere?

HI
I have a simple route which needs a check to be run before the route is followed: If a token is not present I need to redirect the user to an error page.
Router.add('shopfront', '/enter/{token}', {
   before:  function(data) {
                     exlogger('shopfront:'+data);

                     if (data.token)
                       Session.set('authtoken', data.token);
                     else
                       if (!Session.get('authtoken'))
                         Router.go('noentry');

                   },
    regions: {
      content: {
        template: 'shopfront',
      }
    }
  });

I have traced this in Firebug and I cannot see my 'exlogger' being called so I believe the "before" function is not being called.
Looking in https://github.com/gfk-ba/carbon-router I can only see Controller.callBeforeHook being called in TinyTest routines.
thanks
Russell

@russellfeeed The bugfix was merged to master and will be published under the gfk maintainer so use meteor add gfk:carbon-router to add it to your project


week 3 review ticket

SCORE: 9/10
GRADER: Kian P.
Coding Review
Individual Coding:

[x] GitHub Pages showing key learnings and challenges conquered from Tech Talks

[x] GitHub commits you have made, show GitHub insights into your code commits.

[x] Show Code running on Replit as well as IntelliJ (-.5 code is there on intellij but does not run)

[x] Menu review illustrating use of Lists and navigation: show runtime, code organization, code and comments

[x] List and Loops: show runtime, code organization, code and comments

[x] Class review and understanding: show runtime, code organization, code and comments

[x] Show Crossover contribution:  Highlight work you did in crossover project: show their Replit runtime, code commit(s) in their GitHub repo

[x] Show anything you have done to enhance what you have learned from Python code (-.5 nothing special but lists and loops are personlized)

Total Score: 9/10
-0.5, Has code on intellij but it doesn't run
-0.5 Nothing too personalized, only has custom loops.


Embed UI server

What changed?
Embeds the new Temporal UI server and static assets.

Why?
Closes #22

How did you test it?
go run ./cmd/temporalite start

Potential risks
Binary size went from 76.6 to 99.4 MB. We might want to conditionally compile static assets into the binary in the future.
There's also a higher chance of port conflicts on 8080. In order to mitigate this, for now the web UI is just disabled when the --port flag is specified.

Is hotfix candidate?
No

Codecov Report

Merging #29 (1044352) into main (e046f4e) will decrease coverage by 0.64%.
The diff coverage is 28.00%.

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

@@            Coverage Diff             @@
##             main      #29      +/-   ##
==========================================
- Coverage   45.39%   44.75%   -0.65%
==========================================
  Files          11       11
  Lines         652      677      +25
==========================================
+ Hits          296      303       +7
- Misses        337      354      +17
- Partials       19       20       +1

Impacted Files
Coverage Δ

cmd/temporalite/main.go
1.69% <0.00%> (-0.20%)
:arrow_down:

options.go
51.16% <0.00%> (-5.25%)
:arrow_down:

server.go
62.82% <60.00%> (-0.20%)
:arrow_down:

internal/liteconfig/config.go
87.41% <100.00%> (+0.36%)
:arrow_up:

Continue to review full report at Codecov.

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

both have been merged!


fix: update def on widget property name update

Description
Fixes #14100
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
Cypress test

[x] Edit table column property name and then check in binding if autocompletion shows the new column name

Checklist:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes

/ok-to-test sha=f44c52b

/ok-to-test sha=768051e

/ok-to-test sha=49226a5

/ok-to-test sha=4cb0a3f

/ok-to-test sha=c950fdf

Tested and verified on DP for custom columns on table widget

@Aishwarya-U-R you can add the Test plan approved label once you're done with your checks


Include parents in function, decorator bodies

I customized the highlights.scm for my Helix language support for TypeSpec and noticed that functions' and decorators' bodies are inconsistent with operations' body when it comes to including (). Compared to other language support in Helix, a gesture like mif (select inside function) or mit (select inside type) includes the parents/brackets but this does not seem achievable with functions and decorators because the parens are not part of the parameter list token.
I'm happy to submit a PR if you're open to having them included like they are for operations' body / param list.

Sounds like this would improve consistency across different scopes, so yeah, I'm totally fine with you opening a PR for this. Thank you, and I'm happy to see this being used for other editors as well!

Thank you for starting the project! Will be nice seeing if VSCode ends up supporting tree-sitter and see your work included to make it better for TypeSpec.

Just to double check: was that pattern generated from https://github.com/microsoft/typespec/blob/main/grammars/typespec.json in some way that I should first upstream a change? Looking at https://github.com/microsoft/typespec/blob/fa704283140eb278d4c66a6e350969bd418d0575/grammars/typespec.json#L844 vs. https://github.com/microsoft/typespec/blob/fa704283140eb278d4c66a6e350969bd418d0575/grammars/typespec.json#L174, I'm assuming this was a hand-written transpilation, right?  Either way, I can work on a PR tonight or tomorrow night, but wanted to know if I should upstream a change to microsoft/typespec as well. I work in that team, though "adjacent".

No, I started off trying to automatically transpile the grammar, but in the end it wasn't feasible and I ended up using this grammar I was pointed to by one of the devs in this discussion.
I simply went through that grammar rule-by-rule and converted it, but I was also learning tree-sitter as I went, that's why there are small inconsistencies. The grammar for values is also not yet implemented, since I've been pretty busy, see #2.


Aggressive blocklists are ruining user experience

Hello, it seems like every few days a major website is broken and I think the whitelisting approach without addressing the main issue of detecting and removing the aggressive blocklists is counterproductive, so right now there is issues with syncing microsoft apps, so I suggest comparing the domains in the whitelist to the blocklists and seeing which list has blocked these sites and removing it. thank you and keep up the good work.
ps. also there are a lot of duplicates in the blocklists due to some of them being aggregates of the others

Thanks for the report @Tomatoide .

Hello, it seems like every few days a major website is broken and I think the whitelisting approach without addressing the main issue of detecting and removing the aggressive blocklists is counterproductive, so right now there is issues with syncing microsoft apps,

I'm really sorry that some sites are broken.
Every time I push some code changes to this repo, a new version of the adblock dns gets built and deployed automatically. So you'll see changes in the behavour of the adblock dns every few days if I'm active on this project. Changes depends also on upstream blocklist sources, which might cause unintentional changes.
In this case, if an upstream source included some legitimate microsoft syncing servers in their list, it would be included in the final blocklist, which causes websites to break.

so I suggest comparing the domains in the whitelist to the blocklists and seeing which list has blocked these sites and removing it.

Actually, the compiler script already does this for us automatically. It downloads all the blocklist, compare it to the whitelist that we defined, and removes any matching entries. I'm actually in the process of improving the whitelisting mechanism by adding regex support, so that we can have more concise whitelisting.

ps. also there are a lot of duplicates in the blocklists due to some of them being aggregates of the others

I think we don't have to worry too much about duplicates. The compiler script combines them all and runs a quick deduplication before output of the final blocklist. I'll admit that it is wasteful to download duplicate sources, but it shouldn't cause problems for us.
I haven't personally audited the sources, but if you are familiar with them, and you know which ones are duplicates and can be removed, I'm open to update/remove them.

Hi @Tomatoide ,

so right now there is issues with syncing microsoft apps

I don't personally use Microsoft apps or any of their syncing features. So I won't notice any broken features. Can you help me debug this one?
I assume you are using the server in France. Try the following links.
http://<IP_ADDRESS>:8080/
http://[2001:bc8:600:705::1]:8080/

Can you see what sites are being blocked? Maybe just copy them and paste them here. You don't have to paste everything. Just the ones that might be related to microsoft.

so I suggest comparing the domains in the whitelist to the blocklists and seeing which list has blocked these sites and removing it.

Actually, the compiler script already does this for us automatically. It downloads all the blocklist, compare it to the whitelist that we defined, and removes any matching entries. I'm actually in the process of improving the whitelisting mechanism by adding regex support, so that we can have more concise whitelisting.

sorry wasn't clear enough, what I meant is I think there is one or maybe two blocklists that is causing all these issues, so if it has the whitelisted entries, we remove the list(s).

I did some investigation and I think this list is the issue
https://blokada.org/blocklists/ddgtrackerradar/standard/hosts.txt

I did some investigation and I think this list is the issue
https://blokada.org/blocklists/ddgtrackerradar/standard/hosts.txt

Thanks for the suggestion. I'll exclude this list for now. However, if ads start to appear again, we should probably add it back and add the required sites to whitelist.
BTW, did you manage to find which Microsoft sync domains were blocked for you? If you do, share them with me so that I can whitelist them anyway.

Thank you, now the issues seem to be fixed. 👍
About the ddg list, I doubt removing it result in ads showing up, it's a small list and I read they advise against using it in domain filtering form due to reliability issues, which is clear.
It blocked a microsoft login server which was like login.msa. something something


Refactored combiners

This is the ABNF changes to object_items, array_items, group_items to align to Parslet code.
I've also moved position of spcCmnt? in above rules, and sequence_combiner and
choice_combiner to make the ABNF cleaner and align the Parslet with the ABNF.
Please ignore the "Failed attempt to avoid (repeat(1)/repeat(1)).maybe construct" commit message! I forgot to reset before making the second change!
Also, this version includes the addition of annotations to object-group etc. in abnf/jcr-abnf.txt.  I guess we didn't re-extract the ABNF after that change.

Removing the Ruby 2.0 build in master before merging this so the post-merge build doesn't fail. See my note in master commit message about why 2.0 is being removed.


Minimizse the Results and Messages panes

How can we hide the Results and Messages panes so that the code editing pane is maximized?
In SSMS this was Ctrl + R

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

ID: a6d68e91-6a5b-7f3b-0e72-1b88691b0c72
Version Independent ID: 6f4e07e3-eb0b-cd4c-cc82-399e4a2ad715
Content: Tutorial: Use the Transact-SQL editor to create database objects - Azure Data Studio
Content Source: docs/azure-data-studio/tutorial-sql-editor.md
Product: sql
GitHub Login: @stevestein
Microsoft Alias: sstein

@jn-altius Thanks for the question. Git issues in the repo are mainly for doc feedback on errors or enhancements to the articles. So this would probably be best answered in other forums like StackOverflow. However, I did look at Azure Data Studio, and there are several options to toggle full screen or to turn different panels on or off. Did you try these from the menu?
Also, if you go to File | Preferences | Keyboard shortcuts, you can probably assign a keyboard shortcut after you find the command from the menu that works for you.

Thanks.
Though I can't see any option in File -> Preferences that affects the behaviour of the Results pane.
Ah well, never mind.

@jn-altius Take a look at the keyboard shortcuts (under File | Preferences). I found a bunch of toggle commands that don't show up in the menu. It looks like SHIFT + WINDOWS + R might be what you need to hide the results pane. I hope this helps! I'm closing this issue now. Thanks.


Update allowed for 23J

Remove some constructs from m269.json. Copy over latest allowed from its repo.

Closed by commit 22856f7


Running Locally

Great project, I've been working on something similar, I think you've got a better approach here.
I'm trying to get this running locally on my server, the parser is running, but I'm not sure it's correct.
Are there step by step instructions to get it fully up and running?
I also see you are trying to get funding for a server, after I get this running and unpack how you built it maybe I can help out with the server.

Thank you ! There are many of us trying to do this it seems
Sure, what seems wrong ? It should be very clear that it's running. What do you see in the terminal ?
There were (./run.sh --datadir=$HOME/Developer/bitcoin) but I changed how things are running and forgot to update the readme. At the top of my had you also need to specify the rpcuser and rpcpassword. You can run ./run.sh -h for help I think. Everything is saved in a file though so you only need to do this once. Oh and you must run the program from the root of the project.
With everything said though, a huge update is coming (in a month hopefully) which will change many things and should make things clearer and easier
That would be very appreciated, thank you very much ! I'll be more helpful once I'll be able to be in front of my laptop

I ran it differently. From the /satonomics/parser dir I ran:
cargo build --release
cargo run --release -- --datadir /mnt/bitcoin --rpcport 8332 --rpcuser  --rpcpassword
It's running for a 3-4 days, but I'm a bit unclear where it's storing the data, how to see it and measure the progress.
I this output at the terminal.
2024-09-03 05:03:05 - binance: fetch 1mn
2024-09-03 05:03:55 - binance: fetch 1d
2024-09-03 05:05:36 - binance: fetch 1mn
2024-09-03 05:06:26 - binance: fetch 1d
2024-09-03 05:08:06 - binance: fetch 1mn
2024-09-03 05:08:57 - binance: fetch 1d
2024-09-03 05:10:37 - binance: fetch 1mn
2024-09-03 05:11:27 - binance: fetch 1d
2024-09-03 05:13:08 - binance: fetch 1mn
2024-09-03 05:13:58 - binance: fetch 1d
2024-09-03 05:15:38 - binance: fetch 1mn
2024-09-03 05:16:29 - binance: fetch 1d
Are you planning to use docker containers in the future?

The run.sh script is important to increase the limit of opened files and the stack size but it seems to not be a problem on your side since the parser would've just crashed
It's very weird, your output reminds me of a bug that I fixed a while ago, are you sure that you're up to date ? I just ran the parser with a clean slate and everything seems fine on my end
What you should see is something like this:
2024-09-03 09:26:48 - Processing 2009-04-19 (height: 11450)...
2024-09-03 09:26:48 - Processing 2009-04-20 (height: 11569)...
2024-09-03 09:26:48 - Processing 2009-04-21 (height: 11688)...
2024-09-03 09:26:48 - Processing 2009-04-22 (height: 11811)...
2024-09-03 09:26:48 - Processing 2009-04-23 (height: 11932)...
2024-09-03 09:26:49 - Processing 2009-04-24 (height: 12007)...
2024-09-03 09:26:49 - Processing 2009-04-25 (height: 12122)...
2024-09-03 09:26:49 - Processing 2009-04-26 (height: 12240)...
2024-09-03 09:26:49 - Processing 2009-04-27 (height: 12352)...
2024-09-03 09:26:49 - Processing 2009-04-28 (height: 12456)...
2024-09-03 09:26:49 - Processing 2009-04-29 (height: 12573)...
2024-09-03 09:26:49 - Processing 2009-04-30 (height: 12701)...
2024-09-03 09:26:49 - Parsing month took 1.8030503 seconds (last height: 12831)
2024-09-03 09:26:50 - Computing datasets: 1.0522441 seconds
2024-09-03 09:26:50 - Exporting...
2024-09-03 09:26:50 - WARNING: NOT SAFE TO STOP !!!
2024-09-03 09:26:52 - Datasets saved: 2.313546 seconds
2024-09-03 09:26:52 - States saved: 0.004140708 seconds
2024-09-03 09:26:52 - > Database txout_index_to_amount: 0.004773917 seconds
2024-09-03 09:26:53 - > Database txid_to_tx_data: 0.4433055 seconds
2024-09-03 09:26:53 - > Database address_index_to_empty_address_data: 0.002523292 seconds
2024-09-03 09:26:53 - > Database txout_index_to_address_index: 0.003224792 seconds
2024-09-03 09:26:53 - > Database address_index_to_address_data: 0.08278046 seconds
2024-09-03 09:26:53 - > Database address_to_address_index: 0.08280196 seconds
2024-09-03 09:26:53 - Databases saved: 0.52655804 seconds
2024-09-03 09:26:53 - Total save time: 2.8403459 seconds
2024-09-03 09:26:53 - Export done - Safe to stop now

2024-09-03 09:26:53 - Processing 2009-05-01 (height: 12832)...
2024-09-03 09:26:53 - Processing 2009-05-02 (height: 12953)...
2024-09-03 09:26:53 - Processing 2009-05-03 (height: 13079)...
2024-09-03 09:26:53 - Processing 2009-05-04 (height: 13185)...

Yes docker support is definitely on the roadmap ! Just have few things to do first

Thanks! I have it running now, parser is running, server is running and app is available in cloudflare.
Super cool.
If the primary goal is to build this system and make it FOSS for anyone to run how are you viewing the need for the server?
Is it to improve your ability to develop on a dedicated machine making it easier for you to push new updates?

Another question...are you planning to create UTXO based profit and loss metrics, coin days destroyed, etc type metrics?
I started working on building a historical view of all UTXOs by going through each block, recording inputs, outputs, price at the time UTXOs are created and spent.
It has been a bit difficult to get that working correctly. I see you have a UTXO folder, perhaps it's planned for the future.
Great work by the way...this is awesome.

Thanks! I have it running now, parser is running, server is running and app is available in cloudflare.
Super cool.
If the primary goal is to build this system and make it FOSS for anyone to run how are you viewing the need for the server?
Is it to improve your ability to develop on a dedicated machine making it easier for you to push new updates?

Amazing ! As you saw, the app is a bit different from the main instance, still working on it before doing an official release
The server is needed for several things:

Having an API which makes allows for an easy access to the datasets which are in a compressed binary format to save space
And soon host the app directly on it, which will remove the need for npm/pnpm/etc

Another question...are you planning to create UTXO based profit and loss metrics, coin days destroyed, etc type metrics?
I started working on building a historical view of all UTXOs by going through each block, recording inputs, outputs, price at the time UTXOs are created and spent.
It has been a bit difficult to get that working correctly. I see you have a UTXO folder, perhaps it's planned for the future.
Great work by the way...this is awesome.

Not really sure what you mean, could you provide an example ?
All the charts and thus datasets that aren't in the Addresses are UTXO based (and also their age in the Hodlers folder).
For example:

Date to coin days destroyed: https://api.satonomics.xyz/date-to-coindays-destroyed
Date to coin blocks destroyed: https://api.satonomics.xyz/date-to-coinblocks-destroyed
Date to input count: https://api.satonomics.xyz/date-to-input-count

But many more datasets related to inputs and outputs will come with time

I'm really interest in this project as well! I could write a Dockerfile and compose with no time. I just need this new version you said would come hopefully soon :)

Thanks! I have it running now, parser is running, server is running and app is available in cloudflare.
Super cool.
If the primary goal is to build this system and make it FOSS for anyone to run how are you viewing the need for the server?
Is it to improve your ability to develop on a dedicated machine making it easier for you to push new updates?

Amazing ! As you saw, the app is a bit different from the main instance, still working on it before doing an official release
The server is needed for several things:
* Having an API which makes allows for an easy access to the datasets which are in a compressed binary format to save space

* And soon host the app directly on it, which will remove the need for npm/pnpm/etc

* Finally, in the end a server is just a program that runs continuously similar to the parser and on a computer many things are a server without people even realizing so it doesn't really impact the FOSS-ness in any way really

Another question...are you planning to create UTXO based profit and loss metrics, coin days destroyed, etc type metrics?
I started working on building a historical view of all UTXOs by going through each block, recording inputs, outputs, price at the time UTXOs are created and spent.
It has been a bit difficult to get that working correctly. I see you have a UTXO folder, perhaps it's planned for the future.
Great work by the way...this is awesome.

Not really sure what you mean, could you provide an example ?
Most of the charts and thus datasets that aren't in the Addresses folder are UTXO based (and also based on their age in the Hodlers folder).
For example:
* Date to coin days destroyed: https://api.satonomics.xyz/date-to-coindays-destroyed

* Date to coin blocks destroyed: https://api.satonomics.xyz/date-to-coinblocks-destroyed

* Date to input count: https://api.satonomics.xyz/date-to-input-count

But many more datasets related to inputs and outputs will come with time.
And thank you !
EDIT: You can see a list of all the datasets available here, though I would recommend the open the link in a Firefox based browser for improved visibility

Regarding the UTXO metrics, I am thinking of profit and loss based UTXO metrics, Glassnode.com has these for example, percentage of UTXOs in profit. Maybe you already have this in there and I just didn't see it yet.
I need to spend more time looking at all the metrics you do have. Quite impressive, keep it up!

Dropped 300k sats in your geyser! LFG!

Regarding the UTXO metrics, I am thinking of profit and loss based UTXO metrics, Glassnode.com has these for example, percentage of UTXOs in profit. Maybe you already have this in there and I just didn't see it yet.
I need to spend more time looking at all the metrics you do have. Quite impressive, keep it up!

Right ! Then yes they're here too and you can have raw numbers (absolute) and percentages (relative):

Absolute supply in profit and loss: https://app.satonomics.xyz/date-to-profit-and-loss?from=2024-05-13&to=2024-11-12
Same relative to circulating: https://app.satonomics.xyz/date-to-profit-and-loss-relative-to-circulating-supply?from=2024-05-13&to=2024-11-12
Same relative to own supply: https://app.satonomics.xyz/date-to-supply-in-profit-and-loss-relative-to-own-supply?from=2024-05-13&to=2024-11-12

The last two are the same since it's for the whole supply (all utxos) anyway
Now if you want those but for the STH:

Absolute: https://app.satonomics.xyz/date-to-short-term-holders-profit-and-loss?from=2024-05-13&to=2024-11-12
Relative to circulating: https://app.satonomics.xyz/date-to-short-term-holders-profit-and-loss-relative-to-circulating-supply?from=2024-05-13&to=2024-11-12
Relative to own: https://app.satonomics.xyz/date-to-short-term-holders-supply-in-profit-and-loss-relative-to-own-supply?from=2024-05-13&to=2024-11-12

Though I do need to make the names clearer

Dropped 300k sats in your geyser! LFG!

Thank you so much ! Really appreciate it

You are welcome dude! I'm looking forward to the next release with the docker containers.

I'm really interest in this project as well! I could write a Dockerfile and compose with no time. I just need this new version you said would come hopefully soon :)

Hey ! happy to say that the new version has been released 🤙

When initially running the parser, as one would expect, it takes some time to process the chain and produce the dataset.
After it finishes, and you restart it or if it crashes and restarts is it designed to pick up where it left off or does the parser start over from the beginning?

When initially running the parser, as one would expect, it takes some time to process the chain and produce the dataset.
After it finishes, and you restart it or if it crashes and restarts is it designed to pick up where it left off or does the parser start over from the beginning?

To answer your question it is designed to pick up where it left off but it all depends on the scenario.
If you stop it properly (ctrl+c, or kill PID after a recent update) and run it again, it will be fine.
But there are not only datasets but also databases which are exported and used and they only hold the latest state, otherwise you'd need many many TB of disk space to store everything and if they get corrupted (by killing the program during their export), the program will detect that and recompute them which takes pretty much the same time as running the program for the first time.
If you run it after an update, if there are no new datasets, it will be all good.
If there are new datasets it will depend on their type (inserted (very slow to slowish) vs computed (very fast)) and what they need and it gets a little complicated. I try to not compute stuff that's not needed but it's not perfect and I'm sure that there is room for a lot of improvements

Right on, thanks for replying so quickly. I'll keep playing around, trying to get into the details of how designed it all. Good stuff.
Any updates on when the docker integration?

Hopefully soon but honestly it's better to run it natively, you only need rust as the performance will be better

@mroxso did you have a chance to look into it ? I'm close but not quite there yet

Nah sorry. Had no time yet. Do you have a Work in Progress branch? Maybe I can take a look at it.

Nah sorry. Had no time yet. Do you have a Work in Progress branch? Maybe I can take a look at it.

No worries and yes but only the parser container not yet the server (which will be much easier) and not in a branch but in the docker folder
build.sh to build the image and run.sh to run it
It seems to work but I haven't yet found how to set ulimit via docker run, my usual values make it crash
What's really important and that's why there is an exec is that is responds correctly to SIGINT (ctrl+c) and SIGTERM (kill) to not corrupt the databases. I think there is a timeout when stopping a container, which kills it if it's taking too long ? If there a way to increase it that'd be great, to avoid any frustration from users

I took a look at it.
It is possible to go this way, but it is definitely not the best one. You are compiling on runtime, which leads to big container images. This can be improved by building the rust application while building the docker image. I need more time to do this.
For now, I think the compiling on runtime is okay.

After cloning the directory onto my system, I run the parser giving it my bitcoin node credentials, datadir, etc. Parser starts but immediately says datasets are missing but continues to run.
I then start the server and it panic crashes saying it can't find datasets and some directories.
Is it expected for the parser to report missing datasets because it hasn't created them yet?
Will the server also crash until the parser has created some minimum amount of datasets?

So when it says dataset missing it means that it'll need to compute (or recompute if the version changed) it, which is one of the reasons why it can restart from the beginning. I understand how it can be confusing, would you word it differently ?
When it panics it's because the parser hasn't had the time to generate a particular file (server/in/disk_path_to_type.json) before you running the server but if you run it with ./run.sh instead of cargo run -r it will reload by itself

Got it, because it just started it's looking for certain metrics/files that haven't been created yet but will be created later.
Seeing "missing" on the initial run had me thinking maybe I missed something, or a misconfiguration.
All good, thanks for confirming.
This build I used ./run.sh, good to know it restarts.

Where can I find the code that orders the metric list for the front end?
The metric tree in the side bar for the charts.
Thx!

It's here: https://github.com/kibo-money/kibo/blob/main/website/scripts/options.js
but please contact me on nostr for something like this

Closing it if that's okay we went in too many directions, if you need more help please contact me or create a new issue


[Rust] Better writer API

I think we can do better than the current create() functions. Perhaps using a builder API?
Foo::builder().a(value).b(value).write(&mut builder);

This was fixed in #155


How to connect to a physical device and run tests

Please provide android configuration to connect to physical device using USB

Thank you


[Feature Request] Load un-minified JS and CSS in debug mode, and minfied otherwise.

I'm not sure if this is being worked on or not, but presently the develop branch appears to be loading a mix of minified and non-minified JS.
It would be preferable to always load minified JS and CSS, unless debug mode is enabled. In debug mode, loading un-minified versions of the scripts would be very helpful for developers (nobody likes debugging minified JS).
Such a feature would be similar to WordPress's SCRIPT_DEBUG feature.

An other solution could be generating sourcemaps.

Eh, source maps are only half a solution. They don't map mangled variables names to their original names in the debugger.

We released the Pagekit Beta today. I close this issue because the code base completely changed. Please open a new issue if it still exists.


profile page and code clean up

Describe the changes you've made

Removed unwanted footer section from the profile page
Added pages links to the main footer section
Removed extra dark mode toggle from the profile page
Added/modified header component of the profile page according to the Figma design.

Describe if there is any unusual behavior (Any Warning) of your code(Write NA if there isn't)
NA
Additional context (OPTIONAL)

Checklist

[x] My code follows the code style of this project.
[x] All new and existing tests passed.
[x] The title of my pull request is a short description of the requested changes.

Provide a Deployed link of route/page that needs to review
Preview: Deploy preview link here with the appropriate route

Please review @adarsh-technocrat

Sure @Abhishek-kumar09   Actually this PR requires changes  I'll add review comments for that!

@Abhijay007  please make this PR draft!

Resolved in #368


Joint limits in MPC

Add joint limits to MPC.
The limits config are in the task.info file. @jk-ethz, the UR5 task file needs to be updated accordingly.
Waiting for real robots tests for final merge.

Anyway I have to test on the robot and in sim before.

If this is tested now, can we merge?

If this is tested now, can we merge?

Yes


New backend fix : Modify the getUserPlaylists method

Description
Currently only 50 playlists are retrieved, but if the user has more than 50 playlists, we don't have them in the returned json.
The goal of this issue is to make a loop or something until there are no more playlists available.
In order to achieve this issue, we will need to call this method :
spotifyApi.getUserPlaylists({ limit: 50, offset: 0 }) but change the offset for all the other calls (for example offset:50 means that you're retrieving not the first 50 playlists but the playlists 50-100).
It is not possible to change the limit parameter because the API is capping the limit at 50.
Reproduction URL
https://github.com/HugoLAMOUREUX/Spotidata
Reproduction steps
1. Go to back/controllers/playListController.js
2. Modify the getUserPlaylists method

Screenshots
![DESCRIPTION](LINK.png)

Logs
No response
Browsers
No response
OS
No response

Hi, can I try to solve this?

Yes sure ! I assign you the issue

I tried to make a loop, so the method retrieves all the playlists from an user:
const getUserPlaylists = async (req, res) => {
  const spotifyApi = new SpotifyWebApi({
    accessToken: req.query.access_token,
  });

  let allPlaylists = [];
  let options = { limit: 50, offset: 0 };
  let data = await spotifyApi.getUserPlaylists(options);

  // Use a while loop to keep getting playlists until there are no more left
  while (data.body.items.length != 0) {
    allPlaylists = allPlaylists.concat(data.body.items);
    options.offset += 50;
    data = await spotifyApi.getUserPlaylists(options);
  }

  if (allPlaylists.body.href) {
    delete allPlaylists.body.href;
  }

  if (allPlaylists.body.items) {
    let count = 1;
    allPlaylists.forEach((item) => {
      item.rank = count;
      if (item.href) {
        delete item.href;
      }
      if (item.snapshot_id) {
        delete item.snapshot_id;
      }
      if (item.uri) {
        delete item.uri;
      }
      if (item.owner && item.owner.display_name) {
        item.owner_name = item.owner.display_name;
      }
      if (item.owner && item.owner.id) {
        item.owner_id = item.owner.id;
      }

      delete item.owner;

      count++;
    });
  }

  res.status(200).json(allPlaylists);
};

Nevertheless, when I test it on the web and click on the playlists section, after some seconds loading the page goes blank. I am not sure if this is related to how the playlists are being managed in the json file.

You can check my code here: https://github.com/AlexLunaP/Spotidata

I have tested your code and changed a few things.
First of all, when you were checking :
if (allPlaylists.body.href) {
    delete allPlaylists.body.href;
  }

there is an error since you only concat the data.body.items and not the href, so you can simply remove this href test.
Secondly, you're adding data.body.items to allPlaylist. So, when you're doing if (allPlaylists.body.items) there is a problem because allPlaylist contains simply a list of items but no longer the .body.items structure.
Finally, The front-end expect a structure like this to display the playlists :
{items: [ //your playlists ] }

So I have added in the return an "items" key with allPlaylists as value so that it could be displayed withouth changes on the front end.
So here is my modified version that works well for me :
const getUserPlaylists = async (req, res) => {
  const spotifyApi = new SpotifyWebApi({
    accessToken: req.query.access_token,
  });

  let allPlaylists = [];
  let options = { limit: 50, offset: 0 };
  let data = await spotifyApi.getUserPlaylists(options);

  // Use a while loop to keep getting playlists until there are no more left
  while (data.body.items.length != 0) {
    allPlaylists = allPlaylists.concat(data.body.items);
    options.offset += 50;
    data = await spotifyApi.getUserPlaylists(options);
  }

  if (allPlaylists.length != 0) {
    let count = 1;
    allPlaylists.forEach((item) => {
      item.rank = count;
      if (item.href) {
        delete item.href;
      }
      if (item.snapshot_id) {
        delete item.snapshot_id;
      }
      if (item.uri) {
        delete item.uri;
      }
      if (item.owner && item.owner.display_name) {
        item.owner_name = item.owner.display_name;
      }
      if (item.owner && item.owner.id) {
        item.owner_id = item.owner.id;
      }

      delete item.owner;

      count++;
    });
  }

  res.status(200).json({ items: allPlaylists });
};

You can test again if all works well for you and if yes submit a pull request :)

Thanks Hugo! I made the changes and now it works perfectly :smile:


[Add] Add new animated button with icons and hover effect

Details
Add new button component with cool hover effect animation with icons inside the button .
Screenshots

I would like to contribute on this project under GSSOC'23 by add a new button.
Type of Contribution

[ ] Update to an existing Animated Button
[X] Adding a new Button
[ ] Resolving a bug
[ ] Proposal to the Repository
[ ] Changes related to documentation or README.md
[ ] Other Changes

Checklist

[X] I have checked the existing issues
[X] I have read the Contributing Guidelines
[X] I am willing to work on this issue
[X] I am a GSSoC'23 contributor

Please check #1346