Add global_path variable to use as fallback when there is a global pa…

Add global_path variable to use as fallback when there is a global password defined or a members area shares the same password.

Hey,
First, thanks for the PR. If I understood correctly, you want to limit the use of the global password to a specific area of the site (/members/ in your example).
But currently this plugin does not know how to protect a page based on its access path (URL). The global password protects ALL pages by default (Or nothing / And not the page with blank password meta). To be specific, you must use "meta" tags in your markdown files. You can do the same things by specifying in each of your pages, in your member area, the password in the "meta" header. Which can be tedious depending on the number of pages you have.
Currently the changes you have made in your PR are not sufficient to create this functionality.
You only modify the JS method for retrieve password, in the case of using the "remember password" function.
I'm missing something ?

Hi,
if a global password is set the script looks for the local storage at / as a fallback - which is a good idea, because you only want to enter the global password once.
The problem in my case was that my site doesn't render to "/" but to "/site", so the fallback didn't work in this case... maybe it would be better to name it root_path or fallback_path instead of global_path.

Hmm, I think I understand your problem.
Using the global password, with the remember password feature, set by default an "/" in the local storage location.
But on your site, root URL is changed and the root can be /foo/ as described here : https://www.mkdocs.org/user-guide/configuration/#site_url.
Do you use this feature of Mkdocs ?
This fallback check in JS configuration comes from the fact that before being in local storage, the password was stored in browser cookies. I had to modify some functionalities for notions of security, related to JS access to cookies on modern browsers.
But I digress. In this case, it could be that the fallback/search of the default password no longer works because it is defined with "/" which is no longer the root URL of your site. I have not tested and validated this problem for the moment it is only a hypothesis based on your explanations. But that seems possible to me.
Could you confirm :
1 - You don't want to make a default password based on the url (Because it's very complicated for me) ?
2 - You are using a default root which is not "/" by default (Like example.com/foo/)
3 - Do you use the "site_url" variable in your mkdocs.yaml configuration to specify the new root path ?
I will do some tests on my side during the week to validate my hypothesis and correct this problem ASAP if it's validated.

1(no, I don't want that), 2(yes), 3(yes).
see these two example configurations:
encryptcontent_global_password_site_url.zip
encryptcontent_members_area.zip
I probably should have thought more about this PR.. Is it possible to convert it to an issue or change the commit it is referrig to? Because I found a better soltion:
plugin.py:
@@ -66,6 +66,7 @@ class encryptContentPlugin(BasePlugin):
         ('hljs', config_options.Type(bool, default=True)),
         ('mermaid2', config_options.Type(bool, default=True)),
         ('remember_password', config_options.Type(bool, default=False)),
+        ('fallback_path', config_options.Type(string_types, default='/')),
         ('default_expire_dalay', config_options.Type(int, default=int(24))),
         ('tag_encrypted_page', config_options.Type(bool, default=True)),
         ('password_button', config_options.Type(bool, default=False)),
@@ -130,6 +131,7 @@ class encryptContentPlugin(BasePlugin):
             'hljs': self.config['hljs'],
             'mermaid2': self.config['mermaid2'],
             'remember_password': self.config['remember_password'],
+            'fallback_path': self.config['fallback_path'],
             'default_expire_dalay': int(self.config['default_expire_dalay']),
             'encrypted_something': self.config['encrypted_something'],
             'reload_scripts': self.config['reload_scripts'],
@@ -262,6 +264,8 @@ class encryptContentPlugin(BasePlugin):
                 config['theme'].dirs.append(path)
                 if 'search/main.js' not in config['extra_javascript']:
                     config['extra_javascript'].append('search/main.js')
+            if self.config['fallback_path'] == '/' and config['site_url'] != '':
+                self.config['fallback_path'] = '/' + config['site_url'].split('/',3)[3]
         except Exception as exp:
             logger.exception(exp)

decrypt-contents.tpl.js:
@@ -52,7 +52,7 @@ function getItemExpiry(key) {
     var remember_password = localStorage.getItem('encryptcontent_' + encodeURIComponent(key));
     if (!remember_password) {
         // fallback to search default password defined by path
-        var remember_password = localStorage.getItem('encryptcontent_' + encodeURIComponent("/"));
+        var remember_password = localStorage.getItem('encryptcontent_' + encodeURIComponent("{{ fallback_path }}"));
         if (!remember_password) {
             return null
         }

I did some tests and when i use a subdirectory in the root url the fallback works for me. The URL always contains a first "/", regardless of the following subdirectories, this plugin creates a default key using "/" (Becomes %2F once URL encoded). And so the global password is correctly found and used.
Your problem seems to be related to the use of the same FQDN to host 2 different sites, with common paths, but with different global passwords. Which leads to overriding the value of one or other of your sites each time the global password is set. Problem that is not present on classic passwords, because the key created in the storage is more specific (Contains part of the URL of the page).
Your problem will be exactly the same with the search index, since by default mkdocs creates a "search_index.json" file related to your site's URL. So this file will also be overwritten depending on the browsing page (No global search for both sites at the same time). And so the problem will also be present on my search index management function...
IWe could theoretically parse the "site_url" or "site_dir" configuration variable to add a base path in the default password keyname, but in your examples both sites have the same base path and no "site_dir" directive.
Besides, I wonder how do you manage to host this configuration ?
On my side, I had to modify the "site_url" of you'r configurations, to finally have a hosting configuration (nginx) such as:
server {
    listen 80;
    server_name test.coink0in.local;
    location / {
        root /var/www/site/root/;
    }
    location /members {
        root /var/www/site/members/;
    }
}

The 2 "site_url" directives look like this now :
site_url: http://test.coink0in.local/
site_url: http://test.coink0in.local/members

And with this configuration I have the fallback problem described above. Due to global password variable overload. Same thing if I add a "subdir" subdirectory. /subdir/ (main root path) and /subdir/members (Area members) with nginx configuration changes (of course). Even if i use site_dir directive for specify the subdir part.
In this case of configuration with your code, I get the desired effect by using only the parsing of the "site_url" variable (if it is different between the two sites). But your fallback variable brings an advantage to force configure the variable.
I merge your PR on my side. The time to see if I find a better solution for reloading the script and a method to allow modification of the HTML template. Then I will push version 2.3.0

Hi,
in the "encryptcontent_global_password_site_url.zip" from above I set site_url: http://localhost/foo.
If you run mkdocs serve and the open up a browser at http://localhost it will redirect to http://localhost/foo.
If you run mkdocs build the site/ subdirectory won't contain a foo folder, because you need to upload it somewhere where it is served at https://example.com/foo.
The remember_password fallback will look for "/", but won't find anything there because the password entered at the site root will be saved at "/foo/".

The remember_password fallback will look for "/", but won't find anything there because the password entered at the site root will be saved at "/foo/".

I don't understand that. It doesn't matter what page or part of your site you are on. In the password field, if you enter a password and use "CTRL+ENTER" to send the password (instead of classic ENTER), it is necessarily created in storage with the key encryptcontent_%2F. And so it will necessarily be the default password found by the global password fallback search performed on "/".

if the site is not hostet at "/" of the "example.com", then the password you entered at "/foo/" wil be saved at encryptcontent_%2Ffoo%2F and not encryptcontent_%2F. so if you browse the site at "/foo/bar" and the "/foo/bar" page shares the same password as "/foo/" I'd like that it at least tries the password that was saved as encryptcontent_%2Ffoo%2F...

if the site is not hostet at "/" of the "example.com", then the password you entered at "/foo/" wil be saved at encryptcontent_%2Ffoo%2F and not encryptcontent_%2F. so if you browse the site at "/foo/bar" and the "/foo/bar" page shares the same password as "/foo/" I'd like that it at least tries the password that was saved as encryptcontent_%2Ffoo%2F...

I'm not agree, that's not what I'm seeing on my side ..

I'm using python 3.10.4, with the following packages
mkdocs                       1.3.1
mkdocs-encryptcontent-plugin 2.3.0
mkdocs-material              8.4.2
mkdocs-material-extensions   1.0.3

My mkdocs.yml configuration file looks like this:
site_name: PoC_encryptcontent_plugins
site_url: http://coink0in.github.io/subdir/
site_dir: subdir/
theme:
  name: material
  custom_dir: my_theme_customizations/
  features:
    - navigation.tabs
plugins:
  - search: {}
  - encryptcontent:
      global_password: "321"
      remember_password: True
      session_storage: True
      password_button: True
      password_button_text: 'TESTME'
      encrypted_something:
        mkdocs-encrypted-toc: [nav, class]
nav:
  - Home: index.md
  - Tests:
    - Protection:
      - No Password: "Tests/0-no_password.md"
      - Blank Password: "Tests/1-blank_password.md"
      - With Password: "Tests/2-with_password.md"
      - Diff Password: "Tests/3-diff_password.md"

Each file looks like this :
# index.md
PoC

# 0-no_password.md
PoC

password:
# 1-blank_password.md
PoC

password: 321
# 2-with_password.md
PoC

password: 654
# 3-diff_password.md
PoC

I'm browsing my site for the first time and when I enter the URL, I'm redirected to /subdir/ which is the root.
WARNING - [xx:xx:xx] "GET / HTTP/1.1" code 302
DEBUG - [xx:xx:xx] "GET /subdir/HTTP/1.1" code 200

I going to the index.md page which has no default password. But since there is a global password, it is used to protect this page. When I enter a password 321 then use the [ENTER] key or the TESTME button, the page is correctly decrypted and a key is created in the SessionStorage with encryptcontent_%2Fsubdir%2F and as value the password 321 (+ the expires which is useless in session).
Then if I navigate on my site in the Tests tab, no page is decrypted by default, except the subdir/Tests/1-blank_password/ page since it has an empty password by default which prevents encryption. For all other pages the remember password function does not decrypt the content.
Next step (cf: .gif)
If now, I opened a new tab, I'm at the encrypted index page, then I enter my global password 321 and use the [CTRL]+[ENTER] keys to send the password (Does not work with the button), the page is correctly decrypted and a key is created in the SessionStorage with encryptcontent_%2F and as value the password 321 (+ the expires which is not used for nothing in session).
Then if I browse my site in the Tests tab, all the pages with the same password are decrypted.

0-no_password because it is encrypted by default with the global password 321.
1-blank_password because it is not encrypted by default, so visible but not really decrypted.
2-with_password because it uses the same password as the global password 321.

If I navigate to the 3-diff_password page it is not decrypted because it does not share the same password (654). But if I enter the password 654 on this page, then it is correctly decrypted.

Could you explicitly describe the actions you do and your configuration, to never get the key encryptcontent_%2F ?
Do you only use the button to decrypt the pages ? Cause this button cannot be used as a global password is described in the documentation here.

Hi,
I use Firefox 91.13.0esr. I don't use a button.
You're right: if I press Ctrl+Enter then it is saved as encryptcontent_%2F. But if I just press Enter then it is saved as encryptcontent_%2Fdigistarch%2F.
According to your documentation this is intentional ("If remember password feature is activated, use button to decrypt generate a 'relative' key on your local storage"), the button does the same as just pressing Enter...
What was the reason to require Ctrl+Enter if a global password was used? I don't think this is very intentional, as users who access the encrypted content might not dive in to the documentation of this plugin.
I'm closing the request. Maybe not-requiring Ctrl+Enter (Just Enter) in case of global_password + remember_password is a better approach.

Of course, users are not going to read the documentation for this plugin.
Maybe i can add this information in the default placeholder of the password field ..
The main reason for CTRL+ENTER is to identify the nature of the password used and to be able to create the corresponding entry. Without this distinction, when a user enter a password, how do we know if it is global or not ? And if the password is global, if the user navigate to another page with a different password, when he enters this new password, I overwrite the previous one ?
And same problem if we use the location to define the global password. No longer possible to enter from any page, you will have to go to the /members page and enter the password there, so that it is "global" ? And if I try, on each page to use the passwords stored with a common root path, in addition to making the process slow, there will be side effects such as the permanent display of the password error message pass.
Personally, I don't see how to do otherwise while retaining both the possibility of entering the global password from everywhere and entering specific passwords. But I am open to proposals, if you have an idea it is welcome.


Add uploading snapshot to the client

This PR adds the implementation of snapshot uploading using reqwest's multipart feature.
Once again, I couldn't test this on an actual cluster since the integration-tests.sh file only spins up a single node.
I didn't know whether you'd want the upload functionality should be behind a feature flag like the download_snapshot or not.
Another implementation detail, the part name: "snapshot" in
https://github.com/qdrant/rust-client/blob/fefaae08cafa855e7850e957037efac61007b249/src/client.rs#L1195
is coupled to the struct field name in
https://github.com/qdrant/qdrant/blob/d632cfbf274410ea52bb46dfb35ab21c64d89e94/src/actix/api/snapshot_api.rs#L41
so, if it for some reason changes in the future, the client will have to adapt too. Which is definitely not ideal but I can't think of a better way to solve the issue without some kind of relationship between the two crates.

You could test the feature manually by spinning a cluster using your knowledge of our test Python infrastructure.
Either create a new test that only creates a cluster or take an existing one and add a thread sleep to keep it up :)

Good idea. Although the testing was so convoluted but it works.
I tested it by modifying the upload_snapshot test and creating a cluster but instead of uploading the snapshot in the python test, it sleeps for some time and wrote a rust driver test that given the ports and snapshot location, uploads it using the newly created function. The python test then resumes verifying that the recovery was successful by checking the shards and what not.


Canary doesn't progress over 5%

Thanks for the great project!
I'm a first time user and trying to set Flagger up with Nginx. My issue is that when I update the image tag, the canary CRD doesn't move above 5%. The controller seems to start from scretch every iteration:
{"level":"info","ts":"2019-08-11T08:15:27.148Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:15:37.140Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:15:37.151Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:15:47.141Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:15:47.151Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:15:57.137Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:15:57.146Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:07.142Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:07.148Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:17.143Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:17.152Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:27.149Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:27.159Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:37.115Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:37.118Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:47.141Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:47.151Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:57.142Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:16:57.155Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:17:07.141Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:17:07.150Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:17:17.144Z","caller":"controller/controller.go:261","msg":"Starting canary analysis for podinfo.test","canary":"podinfo.test"}
{"level":"info","ts":"2019-08-11T08:17:17.153Z","caller":"controller/controller.go:261","msg":"Advance podinfo.test canary weight 5","canary":"podinfo.test"

The only difference I noticed compared to https://docs.flagger.app/usage/nginx-progressive-delivery is that ingresses.extensions/podinfo-canary is not created for me when I create the CRD.
# generated
deployment.apps/podinfo-primary
horizontalpodautoscaler.autoscaling/podinfo-primary
service/podinfo
service/podinfo-canary
service/podinfo-primary
ingresses.extensions/podinfo-canary

I see no errors, the load generator is running..
Does anyone have an idea where to look for an error?

Hi can you post here the canary yaml please?

Thanks for coming back to me so quickly! This is it:
apiVersion: flagger.app/v1alpha3
kind: Canary
metadata:
  name: podinfo
  namespace: test
spec:
  # deployment reference
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: podinfo
  # ingress reference
  ingressRef:
    apiVersion: extensions/v1beta1
    kind: Ingress
    name: podinfo
  # the maximum time in seconds for the canary deployment
  # to make progress before it is rollback (default 600s)
  progressDeadlineSeconds: 60
  service:
    # container port
    port: 9898
  canaryAnalysis:
    # schedule interval (default 60s)
    interval: 10s
    # max number of failed metric checks before rollback
    threshold: 10
    # max traffic percentage routed to canary
    # percentage (0-100)
    maxWeight: 50
    # canary increment step
    # percentage (0-100)
    stepWeight: 5
    # NGINX Prometheus checks
    metrics:
    - name: request-success-rate
      # minimum req success rate (non 5xx responses)
      # percentage (0-100)
      threshold: 99
      interval: 1m
    # load testing (optional)
    webhooks:
      - name: load-test
        url: http://flagger-loadtester.test/
        timeout: 5s
        metadata:
          type: cmd
          cmd: "hey -z 1m -q 10 -c 2 http://foo.bar.com/"

The spec looks ok, when you installed Flagger did you set the mesh provider to nginx?
You could add the provider to the canary yaml with:
apiVersion: flagger.app/v1alpha3
kind: Canary
metadata:
  name: podinfo
  namespace: test
spec:
  provider: nginx

That was it. I did not set the provider.
Was trying to avoid Helm at all costs, probably skipped the wrong step :)
Kudos for the project!


Not correct distance between eyes in iPhone

Hi
When i'm watching your samples on iPhone, it have not correct distance between eyes.
How  fix it?

Please elaborate. Which phone? How do you know the eye distance is incorrect? Which viewer?

@borismus
iPhone 5s
Image is double
I seen your samples.
And i used your webvr-manager in my project.
And double image in cardboard.app. If used custom profile - it's ok. But in other apps image is good.
How can fix in webvr-manager?

I can confirm this and offer some insight:
determineIPhone_ only checks against the device width, and the iPhone 4 and iPhone 5 both have the same pixel width. So you have to match both the height and the width. But before we implement this, I'm not sure if there are any other phone models with vague screen dimensions where this might cause a problem.
That said, having tested that solution, it's not a sufficient fix. The source of specs for DeviceInfo code says iPhone 5 screen is 640 x 1136. If I simulate iPhone 5 in Chrome Dev Tools, it matches and the solution works fine. But when I try it on a real iPhone 5 and the one in the simulator that comes with xcode, the resolution is 640 x 1096. It's missing 20 pixels (times the pixel ratio of 2).
I suspect this is related to #102.

@borismus Have you considered using screen.height instead of screen.availHeight? It seems to make up the 20px discrepancy.

Would avail* solve the problem? You mention in your other post that there
were detection problems using availWidth.
On Wed, Jan 20, 2016 at 1:40 PM Brian Chirls<EMAIL_ADDRESS>wrote:

@borismus https://github.com/borismus Have you considered using
screen.height instead of screen.availHeight? It seems to make up the 20px
discrepancy.
—
Reply to this email directly or view it on GitHub
https://github.com/borismus/webvr-boilerplate/issues/105#issuecomment-173368501
.

No, I don't think availHeight or availWidth is working because I'm seeing that 20px discrepancy that shows up. According to MDN, screen.availWidth is "amount of horizontal space in pixels available to the window" and screen.width is width of the screen. The latter gives the full screen dimension, which is unlikely to change, while the former is affected by whatever junk the OS decides to add.
I think we need to check both screen.width and screen.height. I wanted to check with you before making a PR in case there was a specific reason you picked availWidth instead of width in the first place.

Hi!
Yes, i fixed this part:
var width = screen.width;
var height = screen.height;
var pixelWidth = width * window.devicePixelRatio;
var pixelHeight = height * window.devicePixelRatio;
// Match the screen dimension to the correct device.
for (var id in iOSDevices) {
var device = iOSDevices[id];
// Expect an exact match on width.
if (device.width == pixelWidth && device.height == pixelHeight) {
Detect device = iPhone5
Whatever.
I see double image if i used: CardboardV1 or CardboardV2

It looks to me like #103 fixed this. It's using screen.width and screen.height, and my own code with #103 incorporated seems to look okay on my iPhone 5. (Though it's very slow, but that's a whole batch of other issues.)
@iRomano can you confirm?
@borismus Perhaps this is a good time to update the gh-pages branch?

@brianchirls
Excellent, it's working!
Thanks a lot!
P.S.
If use the dev version of the Three.js, stereo picture - don't work.
If take Three.js from your build - it works.

@iRomano: Thank @btco for this one.
Getting three.js r74 to work here is a whole other project. There is an ongoing discussion here:
https://github.com/mrdoob/three.js/issues/7732

@brianchirls Thank you for the link.
@btco Thanks a lot!

Hi!
I downloaded new version webvr-boilerplate.
And i have same troubles:
iPhone 5s
Image is double
@btco
@borismus

@iRomano @borismus
Probably this: https://github.com/borismus/webvr-boilerplate/issues/115

Assuming it's related to r74 and closing.

@borismus: I don't believe this is specifically related to r74. It was mostly fixed by #103, but there are at least a couple outstanding cases, including iPhones with Display Zoom turned on (see #102). And I think the default iPhone and Android devices are sometimes way off because the distortion is not centered...or something. Not sure.


How do I set window flags?

Pretty much what it says on the tin.

It turns out that I'm supposed to pass window flags like this
imgui.BeginV("window", nil, flag1|flag2|flag3)

This is a bitmask. I think it is worth including this in the docs where it is relevant.
To help people who aren't familiar with C.


feat: add namespaces for beginners easy start

Add use of namespaces for easy copy and paste in beginners start using the API in README

@p-delorme any update to merge this? Thanks for your time

Thanks for your PR @shakaran.


Eliminating  KRML_HOST_IGNORE(TRUE)?

Hi Jonathan,
I am extracting some source code that looks like

let res =
  let _ = some_effectful_function in
  true
in
some continuation //that does not use res

This is extracted by Karamel correctly, but it leaves a
KRML_HOST_IGNORE(TRUE)

in the generated code.
Is there some way to get Karamel to drop this altogether? E.g., KRML_HOST_IGNORE of a constant can always be dropped?

sure, do you have a minimal repro? probably something silly / easily fixable

This F* file
module KrmlTrue

let some_effectul_function (x:unit) : Dv unit = ()

let test (x:unit)
: Dv unit
= let res =
    let _ = some_effectul_function x in
    true
  in
  some_effectul_function x

When run with krml -verify KrmlTrue.fst
produces
/*
  This file was generated by KaRaMeL <https://github.com/FStarLang/karamel>
  KaRaMeL invocation: ../krml -verify KrmlTrue.fst
  F* version: 0ddc7c1c
  KaRaMeL version: 9de4665d
 */

#include "KrmlTrue.h"

void KrmlTrue_some_effectul_function(void)
{

}

void KrmlTrue_test(void)
{
  KrmlTrue_some_effectul_function();
  KRML_HOST_IGNORE(true);
  KrmlTrue_some_effectul_function();
}


Tag based on Dataset column

The main use case I have for this tool is to analyze samples for a classification task.
It would be great if samples could be automatically tagged by their label.
It would also be great if the points in the visualization could have some visual distinction based on their tag.
Also, a minor note: boolean values don't seem to be ingested properly from a CSV, they appear empty in the UI.

@oersted Would you be able to share a sample of the data you were importing? I'd like to see exactly how the booleans get treated (I'm just reading with pandas.read_csv).
In terms of using a label, would it be helpful to have the option to color by label (and have a legend) rather than coloring by cluster? Another feature I've been thinking about is the ability to filter by a field in the dataset, so you could choose a label and see those points highlighted on the umap.

You can now filter on categorical columns (with 20 or fewer unique values) in 0.2.0
you can then bulk tag or change their cluster when filtering by column


Fix automated tests

The KIF tests seem to have trouble with the latest version of Xcode 5. Perhaps they should be replaced with Apple's UIAutomation? Either way, we need to get the automated tests running again.

They are workin' now. Close this?


Specify programs being used

This was a suggestion made by @thiagoritto, so that newcomers to the project (or online collaborators) can know straight away which applications they should install and what they do.

One idea would be to have a section "Dependencies" on README.md.
There we could list the main dependencies and python versions that can be used.
But the user won't have to worry about installing all dependencies since pip will take care of this by looking at the packages listed on the setup.py file (REQUIRED variable).

What Ritto had in mind when suggesting this issue was more of a way to integrate people to the project than help them run the code. So it would explain applications like pycharm, git, and black more than numpy, matplotlib, etc, specially for people not used to them. But you're right: explaining in the readme that the dependencies are listed on setup.py and how to install them should also be included.

I'll work on it.


Listview with shrinkwrap on the cross axis - impossible?

I have a column and I want to add an horizontal listview inside of it, but I can't seem to find a way to make the height of that listview fit. Shrinkwrap seems to apply only to the listview main axis (width/horizontal, in this case). I tried googling, asking on gitter, and even found some unanswered question on stackoverflow.
Is it really impossible? is it a feature one could implement and send a PR? is anyone working on it? or perhaps I'm just going about this the wrong way completely? what am I missing?

@matanshukry @vejmartin Option 1, with the SingleChildScrollView has one problem: it cannot be used in the case you want infinite loading. Maybe we can, somehow, make it smarter to not render the widgets that are not visible? Will CustomScrollView help?
I think Option 2 should be added as a widget inside Flutter's library of widgets.

Any updates on this?

Anything new on this?

I thought it should just work by default

I think there is definitely value in adding this as functionality to ListView. My particular use case is a carousel of cards (Horizontal ListView with PageScrollPhysics), where I need the ListView to adjust its height to match the tallest child (which is an unknown height at build time). Implementations using SingleChildScrollView won't work for this use case because you cannot use any sort of page physics.

@vejmartin wow, thanks, it works. I use it for my project.
Is it able to add something like scrollToIndex in your UnboundedListView ?

Is there perhaps potential to meet this by adding a prototype builder but for cross axis dimension for the case where you know all the widgets will be the same in crossAxis but not in scroll dimension?

Any news on this topic?


Graph has incorrect width, gets crushed to right side

Hello,
First of all thanks for the great plotting library.
However, I think I encountered an issue with c3js. When I run the following code everything gets crushed to the right. But it only happens on these values and if I set the y range in decimal values.
var chart = c3.generate({
                            bindto: '#chart1',
                            size: {
                                height: 50,
                                width: 150
                            },
                            data: {
                              columns: [
                                ['d1', 2.88,2.94,3.06,2.84,2.83,2.9,2.96,3.1,3.32,3.35,3.58, 3.96]

                              ],
                              //type: "spline",
                              colors: {
                                d1: '#099998'
                              }
                            },
                            axis: {
                                y: {
                                    tick:{
                                        count: 2
                                    },
                                    default: 0,
                                    padding: {top:0, bottom:0}

                                },
                                x: {
                                    show:false,
                                    tick: {
                                        fit:false
                                    }
                                }
                            },
                            legend: {
                                show: false
                            },
                            tooltip: {
                                show: false
                            },
                            point: {
                                show:false
                            }
                        });

It produces the following result:

But if I set Y axis min and max values to integer numbers it works. For example in the data set above I'd set min max with the following values:
y: {
tick:{
count: 2
},
default: 0,
min: 2,
max: 4,
padding: {top:0, bottom:0}
},
And we got the following result:

The width is correct, however I still need to have decimal points as my min max values otherwise the graph cannot be properly viewed and looks too smooth.
I'm using c3-0.4.10 and d3-3.5.6

Screens not available anymore. Chart doesn't seems to be crushed IMO.
Probably fixed.


pipenv downgrades dependency after finding conflict resolution

pipenv downgrades dependency after finding conflict resolution
issue:
For example:
splinter depends on latest selenium > 3.5.  and pipenv successfully installs it.   But if we install a package like huxley which also depends on selenium < 2.5 , the pipenv install command does give error and halts, but it downgrades the version of selenium which was already installed.
Expected result
I was expecting the commands fails and the system would not have updated my already installed package.
Actual result
selenium got downgraded to lower version
Steps to replicate
$ pipenv graph
splinter==0.9.0
  - selenium [required: >=3.14.0, installed: 3.14.1]
    - urllib3 [required: Any, installed: 1.23]

$ pipenv install huxley
Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
  First try clearing your dependency cache with $ pipenv lock --clear, then try the original command again.
 Alternatively, you can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
  Hint: try $ pipenv lock --pre if it is a pre-release dependency.
Could not find a version that matches selenium==2.35.0,>=3.14.0
Tried: 0.9.2, 1.0.1, 1.0.3, 2.0.0, 2.0.1, 2.1.0, 2.2.0, 2.3.0, 2.4.0, 2.5.0, 2.6.0, 2.7.0, 2.8.0, 2.8.1, 2.9.0, 2.10.0, 2.11.0, 2.11.1, 2.12.0, 2.12.1, 2.13.0, 2.13.1, 2.14.0, 2.15.0, 2.16.0, 2.17.0, 2.18.0, 2.18.1, 2.19.0, 2.19.1, 2.20.0, 2.21.0, 2.21.1, 2.21.2, 2.21.3, 2.22.0, 2.22.1, 2.23.0, 2.24.0, 2.25.0, 2.26.0, 2.27.0, 2.28.0, 2.29.0, 2.30.0, 2.31.0, 2.32.0, 2.33.0, 2.34.0, 2.35.0, 2.36.0, 2.37.0, 2.37.1, 2.37.2, 2.38.0, 2.38.1, 2.38.2, 2.38.3, 2.38.4, 2.39.0, 2.40.0, 2.41.0, 2.42.0, 2.42.1, 2.43.0, 2.44.0, 2.45.0, 2.46.0, 2.46.1, 2.47.0, 2.47.1, 2.47.1, 2.47.2, 2.47.3, 2.47.3, 2.48.0, 2.48.0, 2.49.0, 2.49.0, 2.49.1, 2.49.1, 2.49.2, 2.49.2, 2.50.0, 2.50.0, 2.50.1, 2.50.1, 2.51.0, 2.51.1, 2.52.0, 2.53.0, 2.53.0, 2.53.1, 2.53.1, 2.53.2, 2.53.2, 2.53.3, 2.53.3, 2.53.4, 2.53.4, 2.53.5, 2.53.5, 2.53.6, 2.53.6, 3.0.0, 3.0.0, 3.0.1, 3.0.1, 3.0.2, 3.0.2, 3.3.0, 3.3.0, 3.3.1, 3.3.1, 3.3.2, 3.3.2, 3.3.3, 3.3.3, 3.4.0, 3.4.0, 3.4.1, 3.4.1, 3.4.2, 3.4.2, 3.4.3, 3.4.3, 3.5.0, 3.5.0, 3.6.0, 3.6.0, 3.7.0, 3.7.0, 3.8.0, 3.8.0, 3.8.1, 3.8.1, 3.9.0, 3.9.0, 3.10.0, 3.10.0, 3.11.0, 3.11.0, 3.12.0, 3.12.0, 3.13.0, 3.13.0, 3.14.0, 3.14.0, 3.14.1, 3.14.1
Skipped pre-versions: 2.0.dev0, 2.0.dev1, 2.0.dev2, 2.0.dev3, 2.0.dev4, 2.0.dev5, 2.0.dev6, 2.0.dev9138, 2.0.dev9212, 2.0.dev9231, 2.0.dev9284, 2.0.dev9306, 2.0.dev9307, 2.0.dev9310, 2.0.dev9338, 2.0.dev9340, 2.0.dev9341, 2.0.dev9429, 2.0a5, 2.0b2, 2.0b3.dev0, 2.0b3, 2.0b4.dev0, 2.0rc1, 2.0rc2, 2.0rc3, 3.0.0b1, 3.0.0b1, 3.0.0b2, 3.0.0b2, 3.0.0b3, 3.0.0b3
There are incompatible versions in the resolved dependencies.

/usr/local/lib/python2.7/site-packages/pipenv/vendor/vistir/compat.py:109: ResourceWarning: Implicitly cleaning up <TemporaryDirectory '/var/folders/94/1kxvhgmd2z52q1g150zmzzr14h6bqf/T/pipenv-muPkID-requirements'>
  warnings.warn(warn_message, ResourceWarning)

$ pipenv graph
Huxley==0.5
  - jsonpickle [required: ==0.4.0, installed: 0.4.0]
  - Pillow [required: ==2.2.1, installed: 2.2.1]
  - plac [required: ==0.9.1, installed: 0.9.1]
  - selenium [required: ==2.35.0, installed: 2.35.0]
splinter==0.9.0
  - selenium [required: >=3.14.0, installed: 2.35.0]
urllib3==1.23

$ pipenv --support
Pipenv version: '2018.10.13'
Pipenv location: '/usr/local/lib/python2.7/site-packages/pipenv'
Python location: '/usr/local/opt/python/bin/python2.7'
Python installations found:

2.7.13: /usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/bin/python2.7
2.7.10: /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
2.6.9: /System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6
2.7.10: /usr/bin/pythonw
2.7.10: /usr/bin/python

PEP 508 Information:
{'implementation_name': 'cpython',
 'implementation_version': '0',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '16.7.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 16.7.0: Thu Jun 21 20:07:39 PDT 2018; root:xnu-3789.73.14~1/RELEASE_X86_64',
 'python_full_version': '2.7.13',
 'python_version': '2.7',
 'sys_platform': 'darwin'}

System environment variables:

TERM_PROGRAM_VERSION
LOGNAME
USER
PATH
HOME
PS1
TERM_PROGRAM
LANG
TERM
Apple_PubSub_Socket_Render
SHLVL
SECURITYSESSIONID
XPC_FLAGS
TMPDIR
TERM_SESSION_ID
XPC_SERVICE_NAME
SSH_AUTH_SOCK
SHELL
PYTHONDONTWRITEBYTECODE
PIP_PYTHON_PATH
_
OLDPWD
__CF_USER_TEXT_ENCODING
PWD
PIP_SHIMS_BASE_MODULE

Pipenv–specific environment variables:
Debug–specific environment variables:

PATH: /usr/local/opt/node@8/bin:~/.toolbox/bin/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/kkhanz/bin:/Applications/MySQLWorkbench.app/Contents/MacOS
SHELL: /bin/bash
LANG: en_US.UTF-8
PWD: /Users/kkhanz/Documents/programming/piptry

Contents of Pipfile ('/Users/kkhanz/Documents/programming/piptry/Pipfile'):
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[dev-packages]

[packages]
splinter = "*"
huxley = "*"

[requires]
python_version = "2.7"

Contents of Pipfile.lock ('/Users/kkhanz/Documents/programming/piptry/Pipfile.lock'):
{
    "_meta": {
        "hash": {
            "sha256": "52f555bccab2f7552f73d41abb8b3f58ed353487dfd6240805f0dc422bb4283c"
        },
        "pipfile-spec": 6,
        "requires": {
            "python_version": "2.7"
        },
        "sources": [
            {
                "name": "pypi",
                "url": "https://pypi.org/simple",
                "verify_ssl": true
            }
        ]
    },
    "default": {
        "selenium": {
            "hashes": [
                "sha256:ab192cd046164c40fabcf44b47c66c8b12495142f4a69dcc55ea6eeef096e614",
                "sha256:fdb6b1143d8899e8a32e358ad05bf5d89a480dbac359dbbd341592aa8696dcd1"
            ],
            "version": "==3.14.1"
        },
        "splinter": {
            "hashes": [
                "sha256:08c6ed2209ce0520c2f898ad30822ba8f52ed9226bda10c0253c5ea9fe418146",
                "sha256:c8442149e03b0e4c3cf721c4dc1fb00feb1faf52872f85921e07b0cbde467e93"
            ],
            "index": "pypi",
            "version": "==0.9.0"
        },
        "urllib3": {
            "hashes": [
                "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf",
                "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5"
            ],
            "version": "==1.23"
        }
    },
    "develop": {}
}

We are already aware of this phenomenon, however the way Python packaging works induces difficulties to introducing a solution. The best we can do now is to show the warning message you see.

I am closing this report because I cannot reproduce it on pipenv==2022.1.8 which is now partly because of the example bug report, has a python2.7 version requirement--I tried to run with a python3 version but down stream of huxley which was last published in 2014, requires plac==0.9.1 which seems to not be py3 compatible.   I suggest that @ik-nitk if you find this is still an issue, check the recent versions of pipenv and see if this is still an issue, if so check recent issue reports to see if there is already a report of it.  Thanks!


 Here is how the user would access them:

Click Details in failed Validate / Front matter problems check:

See the check results

User can click the annotation to see it in context

FYI @giantswarm/sig-docs - see main comment


cannot implement custom view no clear documentation

cannot make custom view for eg: in recycler view holder.textview and here i cannot call like this . in this i can implement video only

@dayanithi06 ViewHolder implementation is a part of original RecyclerView, please refer it else where. You only need to implement ToroPlayer or extend pre-define BaseViewHolder to get support from Toro.

If you want to call field of ViewHolder like holder.mTextView then you need to have a public field of mTextView, this is normal java constraint and not a part of Toro.

Thank you @eneim  But if you make a documentation it will be useful


fix(kno-5254): hide inaccessible connected channels

This handles the case where a user has a slack channel connected in Knock, but it isn't found in the list of Slack channels from the API, potentially because the bot doesn't have access to it (like a private channel it doesn't belong to). In this case it also wouldn't be able to post to the channel so it is accurate to show to the user that it is not connected.
It also updates some minor styling issues.

see the real PR here: https://github.com/knocklabs/javascript/pull/69


Remove resourcemanagerhybrid from main

Remove special handling of resourcemanagerhybrid https://github.com/Azure/azure-sdk-for-java/commit/2baaf1957185ca067db74eb25626c523a1d779ab
There is some code in eng/scripts/Generate-ServiceDirectories-From-Project-List.ps1 that I am not sure how it works, so I didn't change code in this script.
Feature branch https://github.com/Azure/azure-sdk-for-java/tree/feature/resourcemanagerhybrid
Description
Please add an informative description that covers that changes made by the pull request and link all relevant issues.
If an SDK is being regenerated based on a new swagger spec, a link to the pull request containing these swagger spec changes has been included above.
All SDK Contribution checklist:

[x] The pull request does not introduce [breaking changes]
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[x] I have read the contribution guidelines.

General Guidelines and Best Practices

[x] Title of the pull request is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

/azp run java - core - ci

/azp run java - resourcemanager - ci

/azp run java - core

/azp run java - resourcemanager

/azp run java - keyvault

Pls wait for @sarathys to approve. he is back on 7/18

/azp run java - core


Including multiple plugins in an empty app exceeds the Android dex limit

Including multiple firebase_ plugins simultaneously in a pubspec.yaml file is enough to exceed the amount of Java methods that can be included in an Android APK by default, so compilation breaks.
Repro steps

flutter create foo
Edit the pubspec.yaml to add the extra deps below.

dependencies:
  cloud_firestore: any
  firebase_core: any
  firebase_database: any
  firebase_ml_vision: any
  firebase_performance: any
  firebase_remote_config: any
  firebase_storage: any

flutter build apk

Error output
flutter build apk
Initializing gradle...                                              0.7s
Resolving dependencies...                                           1.4s
D8: Cannot fit requested classes in a single dex file (# methods: 76505 > 65536)

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForRelease'.

Fix for affected apps
This can be addressed in affected apps using the plugins by turning on multidexing in their build following the same steps as a typical Android app.
Fix for the plugins?
It's not clear to me what should be done about this. It ties into wider ongoing discussions about abstracting underlying platform code.

We could grep or lint for this error in flutter tool and print out a log pointing users to something explaining this error, what multidexing is, how to turn it on.
We could warn for this in the README of the firebase plugins themselves since they're likely to be used in combination.
There may be a way to turn on multidexing for an app within a plugin? I'm not sure if this is actually preferable here even if it's possible. Multidexing has downsides.
Could we proguard the plugins without turning proguard on for entire apps that include them? This would prune unused methods and make it a lot harder to hit this error, but wouldn't totally prevent it.

/cc @Sun3
/cc @dnfield @Hixie @amirh

There's some discussion of this at https://github.com/flutter/flutter/issues/21009

Turning multi-indexing on works for sdk >21
But the app auto closes in any device running lower api.
In my use-case I wanted to support at least Lollypop.
So, I just made use of Proguard to help shrink the method counts.
I wrote about my experience here: https://medium.com/@wtoalabi/android-flutter-64k-methods-dex-limit-how-to-use-proguard-in-development-29da38970737
Would love to know if there is a better approach, especially for my use-case.

Apparently it's possible to hit this basic error even from just one plugin: #20747.

@wtoalabi Your link has gone. I cannot have the Proguard work even under sdk 28.

@jackyq2015 Sorry about that...
I changed the username:
Here it is

@mklim
This issue has been moved to https://github.com/FirebaseExtended/flutterfire/issues/455. Any further collaboration will be done there.


[SPARK-30248][SQL] Fix DROP TABLE behavior when session catalog name is provided in the identifier

What changes were proposed in this pull request?

If a table name is qualified with session catalog name spark_catalog, the DROP TABLE command fails.
For example, the following
sql("CREATE TABLE tbl USING json AS SELECT 1 AS i")
sql("DROP TABLE spark_catalog.tbl")

fails with:
org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException: Database 'spark_catalog' not found;
   at org.apache.spark.sql.catalyst.catalog.ExternalCatalog.requireDbExists(ExternalCatalog.scala:42)
   at org.apache.spark.sql.catalyst.catalog.ExternalCatalog.requireDbExists$(ExternalCatalog.scala:40)
   at org.apache.spark.sql.catalyst.catalog.InMemoryCatalog.requireDbExists(InMemoryCatalog.scala:45)
   at org.apache.spark.sql.catalyst.catalog.InMemoryCatalog.tableExists(InMemoryCatalog.scala:336)

This PR correctly resolves spark_catalog as a catalog.
Why are the changes needed?

It's fixing a bug.
Does this PR introduce any user-facing change?

Yes, now, the spark_catalog.tbl in the above example is dropped as expected.
How was this patch tested?

Added a test.

cc: @cloud-fan

Test build #115283 has started for PR 26878 at commit 4d2bc2e.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/20091/
Test PASSed.

Test build #115283 has finished for PR 26878 at commit 4d2bc2e.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/115283/
Test FAILed.

retest this please

Test build #115289 has started for PR 26878 at commit 4d2bc2e.

good catch! LGTM

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/20098/
Test PASSed.

Test build #115289 has finished for PR 26878 at commit 4d2bc2e.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/115289/
Test PASSed.

thanks, merging to master!


RustDesk down

Down again. I refuse to open XTwitter account.

https://twitter.com/rustdesk/status/1760628045504020847

https://twitter.com/rustdesk/status/1760690192489615817


Assign work items from previous changeset

Requested through Slack:
Developer check-in new code
A build is triggered
This build uses your extension to upload artifacts to source control
The lask checkin could be associated with the same WorkItems as the first check-in

Looks like this task uses the right methods to  connect to the REST API and grab the stuff: https://github.com/rfennell/vNextBuild/blob/master/Extensions/GenerateReleaseNotes/GenerateReleaseNotesTask/GenerateReleaseNotes.ps1


Tesseract not found

Hi
I found the function to get an OCR from an image great
But from some time now, when I call M-x mpvi-seeking-ocr-to-kill-ring, I get the message: "mpvi-ocr-by-tesseract: Program ‘tesseract’ not found".
Although I can launch tesseract using the shell, since I added it to the path.
What could be the cause of not being able to launch tesseract from mpvi?
OS: WIN 11
GNU Emacs 29.3 (build 2, x86_64-w64-mingw32) of 2024-03-24
Org mode version 9.8-pre

Solved adding this:
(add-to-list 'exec-path "C:/ruta/a/tesseract")


Create network Services module tests + test Services API in dual-stack network configs

What this PR does / why we need it:
This PR refactors the networking tests a bit, exporting all the service related tests in tests/vmi_networking
to a dedicated module.
It then builds on this premise, by extending those tests (currently only executed on Bridge mode) to run
also on Masquerade binding mode.
The tests ran on Masquerade binding are ran in dual stack mode, when the test lane support that particular
networking configuration.
Special notes for your reviewer:
...
Release note:

NONE

Could you please extract the dual-stack distinction logic to wrapper function for creating and deleting services (lines 212-224, 258-266)?

Please do the same for the functions assertConnectionToExposedService assertConnectionToExposedServiceFailsat the commitnetwork, tests: use assert / failed connectivity checks`

I honestly think you're attempting to prematurely optimize this, without having a clear picture of what other tests require (at this moment, I don't think anyone has the clear picture of it).
What I want, is to have one service on ipv4 based lanes, and 2 services on dual-stacked lanes. Then I want to check that all services have / don't have connectivity.
Other tests will operate on dual stack on a different way. I don't pretend I know what it will be. In time, if such a pattern arises, we can refactor it.
I think the test is pretty clear as is, and consistently makes a single question: is the cluster in dual stack mode ? If so, it will:

setup test: create 2 services instead of one
test: check connectivity to 2 services instead of one
teardown: remove 2 services instead of removing one

I see 0 advantages on encapsulating that on functions - e.g. testSingleStackService , testDualStackService ...
What I could do, if you really insist, is to push all services to an array, then check connectivity to all services in the array, and delete all services in the array in the teardown. That would enable me to make 'the' question a single time, and represents better what the tests do.

It will keep the flow of the code and make it more clean,
Having such encapsulate make it easier to maintain and extend (for example; in case we will need to do the same for single stack IPv6 )

AFAIK, single stack IPv6 is simply not a thing we'll ever support.
The encapsulation is already done: I have a 'connectivity checker' and I point it at a service name + port. Then I expect it to work / fail. Depending on the use case at hand (dual-stack) I might need to point at more than one thing.

I understand what you did and I think its great that you moved it to another file
and exported most of the test code to functions :)
Dont get me wrong I am not trying to optimize something we dont understand fully yet
nor search for a silver built to all tests adapting to dual stack.
In this test I saw a classic case we can improve by encapsulating "distingush cluster is dual-stack logic".
The big advantage is that we wont disrupt the flow of the test code with if statements,
making it easy to follow and understand.
Is also make the code easy to maintain if we will need to change anything (IPv6 stack was just an example I know its not a thing right now)
I am not sure how using services array will encapsulate that mentioned logic,
I think you will have to check if cluster is dual stack to add the ipv6 service to the array.

I forgot about a known issue we have with the jobs (which have been changed from simple pods to controler jobs).
We assumed these are deleted with the TTL options, but they are not (it is feature gated).
We need to delete the jobs, like it is done here: https://github.com/kubevirt/kubevirt/pull/3871/files#diff-f911024a391a99cfdef2241f409a4748R850
Previously this has been mitigated by cleaning the namespace from time to time, but now we do not have it here so this may be an issue.
Said that, we can fix it in a following PR, up to you.

I forgot about a known issue we have with the jobs (which have been changed from simple pods to controler jobs).
We assumed these are deleted with the TTL options, but they are not (it is feature gated).
We need to delete the jobs, like it is done here: https://github.com/kubevirt/kubevirt/pull/3871/files#diff-f911024a391a99cfdef2241f409a4748R850
Previously this has been mitigated by cleaning the namespace from time to time, but now we do not have it here so this may be an issue.
Said that, we can fix it in a following PR, up to you.

Thanks for raising it; I had noticed it when running locally, but I am not used to the namespace being kept in the tests this folder, and as such, didn't take it into account.
I think it's only fair to do it in this PR; shouldn't take that much more effort.

/lgtm
Checking CI test case on dual stack mode is working and the rest of CI is failures are not related, also we are going to do small follow up on pending non critical comments.

/approve
po 31. 8. 2020 v 14:46 odesílatel Edward Haas<EMAIL_ADDRESS>napsal:

@EdDev approved this pull request.
I am good with the general approach but have some issues with some of its
details.
Nevertheless, as an exception, lets get this in and then work on the
improvements as a following change.
Thanks!
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/kubevirt/kubevirt/pull/4035#pullrequestreview-478582257,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA2U7RRJUU4IRJ73M6QJNJTSDOLTVANCNFSM4QHF7EJA
.

/retest

/approve

/hold
Let's wait a bit on this until we decide the dual stack detection mechanism (flag or no flag) .

The latest push uses an approach where service setup / test / teardown are done per each primary pod interface, rather than based on a flag injected by the user.

/retest

/retest

/hold cancel
The discussion blocking this PR was moved to #4139 .

/lgtm

/approve cancel
Changes were introduced

/retest

/test pull-kubevirt-generate

/test pull-kubevirt-generate

Exact case where i would suggest to override it,
its really flaky, just if you would have really lucky it would pass.
There is an issue and couple people that work on it.

/test pull-kubevirt-generate

Exact case where i would suggest to override it,
its really flaky, just if you would have really lucky it would pass.
There is an issue and couple people that work on it.

I am not interested in this discussion, least of all in this PR.

/approve cancel
Changes were introduced

See please the message below it,
did it actually approved ?
see there is the label approve
(and it say the same time as your message, but it say Daniel approved)

/retest

/hold cancel

Had to rebase since it had a merge conflict after #4139 was merged (build.bazel).

/lgtm

/test pull-kubevirt-e2e-k8s-1.17

/test pull-kubevirt-e2e-kind-k8s-1.17.0-ipv6

/retest


Make symlink relative

So you don't have to have mapbox-gl-styles checked out in a specific directory in order to build the mc and mc-car styles

Thank you very much!


[Bug]: Combobox breaks down when there are more than 100 options

Environment
Developement/Production OS: Arch Linux x86_64 6.9.2-arch1-1
Node version: 22.1.0
Package manager<EMAIL_ADDRESS>Radix Vue version: 1.8.4+
Vue version: 3.4.30
Nuxt version: N/A
Nuxt mode: N/A
Nuxt target: N/A
CSS framework: None
Client OS: Arch Linux x86_64 6.9.2-arch1-1
Browser: Chromium Version 125.0.6422.112 (Official Build)

Link to minimal reproduction
https://stackblitz.com/edit/cbpual?file=src%2FApp.vue
Steps to reproduce

Create a combobox with 100+ options
Open the combobox
Pick an option

Describe the bug
A warning is show in console, and selecting the option does not make the value show as selected.
Expected behavior
No warning to be logged, and the selector to work.
Context & Screenshots (if applicable)
This issue existed before and was fixed (#551), but it appears there is a regression in 1.8.4 (works just fine in 1.8.3) causing the issue to occur again.

Thanks for reporting the issue. Combobox will be refactored in v2, that would eliminate this issue and improve the performance 😁

Noting today's discoveries here: to have the ability to restrict the height in a similar fashion to Select in our component lib we now are using ComboboxPortal + position="popper" align="start"; and that seems to fix the issue as we no longer see any warning show up in 1.8.4+
That can be considered a workaround for those who want to update to get latest bugfixes and the upcoming components in 1.9 😄


Change targetsdk to 14

Task/Issue URL: https://app.asana.com/0/488551667048375/1206318340789538/f
Description
See attached task description
Steps to test this PR
Smoke test app

In this stack: 🚀 Enhancing Android App Compatibility and Functionality

develop

#4063   👈

#4064

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

Join @karlenDimla and the rest of your teammates on  Graphite


Scaffolder failed to fetch in gitlab

Expected Behavior
Using a scaffolder plugin to create file through template and commit the result in gitlab.

Current Behavior
The resources of scaffolder are loaded with success. In backstage home is show my custom template and I can filled all the fields (for tests I am using a simple template that it just have one field). After that, I clicked to create and an error is happening on the next screen.
Fetch Base step occur this error:
2022-01-21T00:01:59.000Z Beginning step Fetch Base
2022-01-21T00:01:59.000Z info: Fetching template content from remote URL {"timestamp":"2022-01-21T00:01:59.006Z"}
2022-01-21T00:02:00.000Z FetchError: invalid json response body at https://gitlab.luizalabs.com/users/sign_in reason: Unexpected token < in JSON at position 0
    at /home/makingthehand/Projects/backstage/node_modules/cross-fetch/node_modules/node-fetch/lib/index.js:272:32
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at async _GitlabUrlReader.readTree (/home/makingthehand/Projects/backstage/node_modules/@backstage/backend-common/dist/index.cjs.js:1738:39)
    at async UrlReaderPredicateMux.readTree (/home/makingthehand/Projects/backstage/node_modules/@backstage/backend-common/dist/index.cjs.js:1994:16)
    at async fetchContents (/home/makingthehand/Projects/backstage/node_modules/@backstage/plugin-scaffolder-backend/dist/index.cjs.js:271:17)
    at async Object.handler (/home/makingthehand/Projects/backstage/node_modules/@backstage/plugin-scaffolder-backend/dist/index.cjs.js:383:7)
    at async NunjucksWorkflowRunner.execute (/home/makingthehand/Projects/backstage/node_modules/@backstage/plugin-scaffolder-backend/dist/index.cjs.js:2353:11)
    at async TaskWorker.runOneTask (/home/makingthehand/Projects/backstage/node_modules/@backstage/plugin-scaffolder-backend/dist/index.cjs.js:2433:85)
    at async /home/makingthehand/Projects/backstage/node_modules/@backstage/plugin-scaffolder-backend/dist/index.cjs.js:2427:9

Possible Solution

Steps to Reproduce

Step 1: bootstrap configuration
-> Configure app-config.yaml
integrations:
  gitlab:
    - host: {{gitlab-host}} #gitlab.com
      token: {{token}}
      apiBaseUrl: {{gitlab-api}} # https://gitlab.com/api

scaffolder:
  defaultAuthor:
    name: Mateus Lima Fonseca
    email<EMAIL_ADDRESS>  defaultCommitMessage: "Testing"
  gitlab:
    api:
      baseUrl: {{https-gitlab-host}} #https://gitlab.com
      token: {{token}}
    visibility: internal # or 'internal' or 'private'

catalog:
  rules:
    - allow: [Component, System, API, Group, User, Resource, Location]
  locations:
    - type: url
      target: https://gitlab.com/templates/my-template.yaml
      rules:
        - allow: [ Template ]

step 2: Starting backstage
In backstage left menu click in "create..." and choose my-template. In my-template It is needed to fill all the fields and click in create.

Looks like your GitLab instance is redirecting to the sign-in page, seeing https://gitlab.luizalabs.com/users/sign_in in the logs. I'd say double check the host, token, and apiBaseUrl configuration, and make sure they're set correctly. I think in this case particularly the apiBaseUrl might be at fault

@Rugvip I checked the configurations and I made a mistake in apiBaseUrl. Thanks. It is working but I need to use backstage.io/v1beta2 to create a template.


Hierarchical Schematics and Design Libraries

Thanks for the great work!
How do I include schematic and symbol libraries?
Could the web viewer understand the directory hierarchy when providing a schematic from GitHub using the ?file selection in the URL?  i.e. Add directories above the schematic to XSCHEM_LIBRARY_PATH for it.
Example: https://xschem-viewer.com/?file=https://github.com/cascode-labs/bandgaps/blob/main/bandgaps/bandgap_sky130_v1/bandgap_1v_v01/bandgap_1v_v01.sch
Problem
You can see in the screenshot below from the web viewer that I am missing the amplifier symbol that is shown in the second screenshot using the desktop executable version of xschem.
Desktop Implementation
In the desktop version I just have to make sure the XSCHEM_LIBRARY_PATH is set in the xschemrc according to how I organize my design library files as explained in the xschem docs.
In order to define this more portably across projects without having seperate xschemrc file for each project, I add the following Tcl code to the end of my xschemrc.  This then allows me to define an environment variable using one of the file structures in the xschem docs.  In my case option 3 makes the most sense.
# allow a user-specific path add-on (https://github.com/iic-jku/iic-osic-tools/issues/7)
if { [info exists ::env(XSCHEM_USER_LIBRARY_PATH) ] } {
    append XSCHEM_LIBRARY_PATH :$env(XSCHEM_USER_LIBRARY_PATH)
}

A Possible Solution
Could we have the web viewer understand the file structure from github so that it can capture the schematics and symbols up to 2 levels above the provided schematic.  This would allow us to include the library from the same repo assuming you folllow a similar library structure.
Here's the library file structure in my example:

Issue in the web viewer
Here is the schematic from one of my github projects:
https://xschem-viewer.com/?file=https://github.com/cascode-labs/bandgaps/blob/main/bandgaps/bandgap_sky130_v1/bandgap_1v_v01/bandgap_1v_v01.sch

Expected Result
Here is the same schematic in the desktop app:

@urish, @StefanSchippers, @barakhoffer

Thanks for the detailed report!
The current logic for looking up symbol files is defined here:
https://github.com/TinyTapeout/xschem-viewer/blob/57c026d2f91b143bdc3d37347a9d8ae39811c025/src/model/LibraryLoader.ts#L43-L80
It's pretty complex already - it first tries to look if the given path starts in one of the libraries listed here, then it loads the file from that library:
https://github.com/TinyTapeout/xschem-viewer/blob/57c026d2f91b143bdc3d37347a9d8ae39811c025/src/model/libraries.ts
Otherwise, it looks if the file exists at the same directory level as the current schematic pointed by ?file=. Finally, if it can't find it, and the URL looks like a github repo, it'll make one last attempt to fetch from the root of the GitHub repo.
Here are some things to take into account when finding a solution:

The viewer can't currently read the tree from the GitHub repo (and introducing this feature will most likely require signing in to GitHub to perform API queries). This only applies to the online version.
The viewer can make queries against specific files (if we can guess the path of the file, we can ask if it exists), but each query has a non trivial latency, so we'd like to reduce the number of queries (e.g. 2-5 queries per file are still acceptable, more than that can be an issue). Again, latency only applies to the online version.
One way to solve it would be to either add another query variable, or, alternatively, some JSON file to the root of the repo, that will tell the viewer which strategy to use for looking up files. The query variable is only relevant for the online version, and a JSON file could be used by either the online version of the VS Code extension, and perhaps in the future by xschem itself if that proves popular.


Base copycat client

This would be shared between L-SPACE, indexer, et al
Should receive journal updates and have a hook to do "something" upon receipt
Partially done in #66

Decided to make this stateless so N/A


Kuzu Explorer only updates data after restarting docker

I'm on a Mac, running Kuzu Explorer via docker.
I'm making inserts / deletes on the db via jupyter notebook outside the docker.
I need to restart the docker to see changes reflect on the data within Kuzu Explorer.  It never updates on the same docker session.

This is a know issue (see #69).

A quickfix if realtime db updates are not so simple would be to add a refresh data button from the UI.

I have implemented the button to reset the database connection in settings.

Just tested and it is working perfectly!

Closing this for now. If we figured out a way to handle this in the kernel without requiring manual resetting, I will let you know. Further discussions about this issue can continue in #69.


Why the depth is 6n+4, rather than 6n+2?

Thanks for your great work!
I wonder why the depth of network is 6n+4 for WRN for cifar. I could understand that 6n means there are n blocks and 6 layers per block. Besides, there is an extra convolutional layer before all blocks and a linear layer after all blocks. So I think the depth should be 6n+2, which is same as original Resnet.
Hope for your reply!

https://www.zhihu.com/question/403515516

@18445864529  Got it. Thanks!


Honor incoming Content-Type encoding

The encoding is currently ignored and we assume UTF-8 on the way in and out.

The linked comment is from when the invoker directly handled remote http request that could come in with any encoding. Now the http adapter handles all requests and converts them to the streaming protocol which the invoker speaks.
What if we defined text in the streaming protocol to always be utf-8 and converted any other encoding to utf-8 in the http adapter?

@scothis This sounds reasonable ; and then individual invokers do not need to implement transcoding themselves. It should be explicitly laid out in the invoker spec I imagine.
If a user function expected a different charset for their payload, they will have to transcode it from utf-8 specifically, but I guess this doesn't happen very often ?
On a side note, I took a look at the http-adapter, and it does not support the HTTP accept-charset header: streaming-http-adapter code / accept-charset header ; so we might want to open an issue for that.

Here are some notes from my research on encoding in node, in case we still want to do it at the invoker level:

Node only supports UTF-8 and UTF-16 by default (https://nodejs.org/api/util.html#util_whatwg_supported_encodings)
Node can support more encodings, but it needs to be built with ICU data. https://nodejs.org/api/intl.html
This ICU data can be quite big, as it contains lots of stuff related to i18n, not just charsets (e.g. datetime locales)
The current riff images for Node do not contain extra charsets, this was run on a riff image:

> let dec = new TextDecoder('latin1');
Thrown:
RangeError [ERR_ENCODING_NOT_SUPPORTED]: The "latin1" encoding is not supported
    at new TextDecoder (internal/encoding.js:372:15)

The other widespread way to do transcoding in node is to use iconv-lite . It's a small-ish library, about 300Kb of charsets.
Fun fact: node's TextDecoder can decode all available charsets, but the TextEncoder only supports UTF-8, because it is considered Best Practice™

I'd rather have support for any encoding in the streaming case as well

Now the http adapter handles all requests and converts them to the streaming protocol which the invoker speaks.

The http adapter is not involved with streaming functions. While we may want to encapsulate / ease the crafting of input signals, I think the payload encoding will still be user-defined.

I'm advocating that the streaming protocol itself define utf-8 as the encoding for text based content. Of course, binary data is still binary data and a text content could be encoded in any character set and treated as binary data. But, if we set utf-8 as the standard, then it alleviates the invokers from needing to support all encodings. Supporting an additional encoding is the same as supporting an additional content-type (an opt-in behavior that may limit compatibility).

Maybe we're saying the same thing: utf-8 should be a mandatory supported encoding for everything text based (where it makes sense), which doesn't preclude authors from supporting other encoding if they want. In the same way that text/plain, application/json and octet-stream are the 3 mandatory content-types today. In which case I +1

I'm not sure I understand what the different arguments are here. Suppose I make an HTTP request with the following headers:
Content-Type: application/json;charset=iso-8859-1
Accept: application/json
Accept-Charset: iso-8859-1

Whose responsibility is it to decode the payload and encode the response ? To me there are 4 possibilities, here's my current understanding. I think noone advocates for Option 4, but I'm not sure about the others :)
Option 1: The streaming http adapter

The streaming http adapter takes the incoming requests, decodes the payload from iso-8859-1 to an utf-8 string, and then makes a riff call specifying the payload is applicaton/json encoded in utf8
The invoker receives the payload, reads it as an utf-8 string, makes an object by parsing the json, and then forwards the object to the user function (with keys and string values as utf-8)
The user function reads the payload, performs computation and returns an object with keys and string values in utf-8
The invoker marshalls the content as JSON, without changing any encoding, and writes it to the output stream
It receives the response, as application/json and utf8, then encodes the response to iso-8859-1

In this case this requires changes to the stream-http-adapter to support encoding. The streaming input/output processors should also have encoding/decoding capabilities.
However, the invokers all speak utf-8 only, and there's no need to update this particular invoker.
Option 2: The node invoker

The streaming http adapter receives the request and forwards it to the invoker as is
The invoker receives the requests, the decodes the payload from iso-8859-1 into a utf-8 string, then makes the json object, etc.
[rest is left as an exercise for the reader]

This means virtually no changes to the streaming-http-adapter or streaming in/outs.
However this particular invoker (and others !) should support all possible encodings for text/plain and application/json content-types/accept-charset ; and honor the user-defined charsets.
(Small caveat, the streaming-http-adapter probably needs to capture the "Accept-Charset" http header and pass it in the Expected content types of the start frame)
Option 3: A user-provided un-marshaller

The streaming http adapter receives the request and forwards it to the invoker as is
The invoker detects that despite the request having an application/json content-type, the charset is not utf-8 ; so it looks up user-provided unmarshallers for an application/json+iso-8859-1 unmarshaller
If it finds one, it uses that to make the object passed to the function
[rest is left as an exercise for the reader]

Same as option 2, little changes are required for the streaming-http-adapter and streaming endpoints.
This particular invoker needs to detect that it receives a textual payload in an unsupported encoding ; and look up an (un)marshaller for that, instead of trying to make an object from a string (which it now supposes is utf-8). If I understand correctly, custom (un)marshallers are not implemented yet but will be, see #87
Option 4: Riff only supports utf-8 throughout the entire process

The streaming http adapter receives the request and forwards it to the invoker as is
The invoker detects an unsupported encoding, and calls the function with a byte array and potentially params specifying the encodings; it's up to the function to decode the payload and make whatever it wants with it.

Same as option 2, little changes are required for the streaming-http-adapter and streaming endpoints.
This particular invoker needs to detect unsupported encoding and avoid all decoding, passing pure binary data in that case. And it needs to signal to the function which encoding the end-user/caller specified.

@Kehrlann thanks for laying out the options so clearly.
I'm advocating to explore Option 1 as it centralizes where character encodings need to be dealt with.
Options 2 and 3 are effectively the same from the backplane's perspective. It would be up to each invoker to choose if/how to expose supporting additional content-types (and likewise for charsets). The difference is in who's is responsible for providing the codec once the message is passed to the invoker.

I think we're indeed all saying the same thing: the adapter converts to utf-8, which is a required encoding for invokers to support, yet not forcing them to support only that encoding.


LUCENE-10577: enable quantization of HNSW vectors to 8 bits

This is PR #3 for this feature. It is very close to the previous one, just "rebased" on top of the Lucene93 Codec. In this PR I moved the new vector utility methods as package private in util.hnsw so they would be easier to change in the future. I did not attempt any loop-unrolling optimizations. I have tried some incubating vector api implementations, but nothing is ready to share. I re-ran luceneutil tests, and will open a separate PR for adding support for this format to luceneutil. Results continue to look promising

Task QPS
baseline
StdDev
candidate
StdDev
Pct diff
p-value

PKLookup
134.03
(19.3%)
135.28
(15.9%)
0.9% ( -28% -   44%)
0.868

LowTermVector
637.48
(9.0%)
695.72
(10.7%)
9.1% (  -9% -   31%)
0.003

AndHighMedVector
445.66
(8.0%)
559.35
(11.8%)
25.5% (   5% -   49%)
0.000

HighTermVector
578.16
(9.5%)
737.93
(16.2%)
27.6% (   1% -   59%)
0.000

AndHighHighVector
418.25
(9.8%)
555.38
(15.2%)
32.8% (   7% -   64%)
0.000

MedTermVector
383.02
(8.4%)
550.12
(13.5%)
43.6% (  20% -   71%)
0.000

AndHighLowVector
450.92
(9.5%)
713.77
(20.1%)
58.3% (  26% -   97%)
0.000

I'm looking to address various comments; just pushed a commit that makes the vector encoding explicit by adding a new enum and parameter "vectorEncoding", splitting this out from "similarityFunction".

During merging when writing a merged vector field it looks like we first expand vector values only to again to compress them later? Would be nice to avoid this.

Oh good catch, @mayya-sharipova I will look into addressing this.

Not sure if possible at this stage, but it would be nice if HnswGraphBuilder and HnswGraphSearcher were not aware of different calculations needed for different similarity functions, and refer all this calculations (dotProduct(BytesRef a..)) to VectorSimilarityFunction

I don't see how to do this efficiently (without many conversions from byte to float) and neatly (without code duplication in tricky algorithmic areas) and with complete API purity, so I sacrificed some purity. If you have any ideas how to do it better, I'm open to changing it though.

OK, this last round of commits moves the new vector encoding parameter out of IndexableField and FieldInfo into Codec constructor and internally to the codec, in FieldEntry. It certainly has less visible surface area now. I also merged from main and resolved a bunch of conflicts with the scoring change. I think it is correct (all the unit tests pass), but it wasn't trivial and I think it would be worth running some integration/performance tests just to make sure all is still well.
There's a little bit of code duplication in HnswGraphSearcher where we now have the logic for switching from approximate to exact knn in two places that I don't like. Maybe that can be factored better?

I pushed an updated luceneutil PR adapting to these changes https://github.com/mikemccand/luceneutil/pull/181. Running that perf test I saw consistent gains (20-55% depending on the test case) as compared to the earlier test runs.
I also noticed that the profiler shows the most expensive function during indexing is FixedBitSet.clear(), which makes me think we mioght want to use sparse bitsets for the "upper" layers of the graph which have many fewer nodes.

I think the title of the PR is wrong? We shouldn't be quantizing anything. The user should be supplying a byte[] vector for 8-bit vectors. Floats should not be involved.


HALON-501: Make process restart check process comes online.

Created by: nc6
Previously, the process restart rule terminated as soon as systemd
terminates. If Mero never sends its updated status, then the process
can hang in 'PSStarting' state indefinitely.
This commit now makes the restart job await notification that the
process has come up. If no such notification arrives within 180s,
the process will be marked as "failed to start" and the node will
be failed.
If notification that the process has failed is received before the
process starts, then we check a restart counter, and attempt to
restart it up to 5 times before bailing and failing the node.

Closing as an obsolete


Datastore template and converter/mapper produces fluxes

In effort to provide reactive repositories for Datastore we need to modify the converter/mapper to produce a flux from result set instead of doing the row-by-row iteration itself.
The standard template can then also use this converter and simply consumes the entire flux before returning.

Closing, since we decided not to pursue reactive datastore.


SubjectLocation (FocalPoint) sometimes only appears on second pageload

Hi @szuliq I can't reproduce this issue anymore in current filer version 1.2.0. Do you still have this problem? Thank you for your feedback.

I will not be able to confirm this in a predictable time frame. Sorry.
Let's just assume it's working if you've checked with images that were loaded from browser's cache.

@szuliq I have checked and it works fine. I will close this issue. If you will find this problem again please let us know. Thank you.


Suggestion: Change elemental filter/button colours to improve readability

The current element main stat filters on the build page are quite hard to read in either the grey or the green state.
However we already have a case on the site that does this differently, the elemental filter on the character index page.

I suggest we make the element icons white and use these colours inplace of the green "on" state for the main stat filters:

This method would also help significantly for the Swirl conditionals on Anemo characters and the VV set.

Might need to update IConditional, to instead of only name, change to
label:{
  name: Displayable,
  variant: string
}

To allow further customization

You might have noticed, that pysical dmg button will be grey, even when activated. It might be a case where it goes "green" on active.


Remove provider and aws_region from examples

Fixes #49.
I’m removing the provider block and aws_region variable from the examples in this repo so that they work properly with the instructions you get from the auto-generated docs on the Terraform Registry page for this module:
module "consul" {
  source  = "hashicorp/consul/aws"
  version = "0.3.3"
}

I believe the Getting Started Docs should be updated to reflect this change:
https://www.terraform.io/intro/getting-started/modules.html
Following those directions, I encounter:
Error: module "consul": "aws_region" is not a valid argument

Ah, good catch. Those docs are in a separate repo, but I'll submit a PR.

https://github.com/hashicorp/terraform/pull/18338

Thanks!


[Improve] Improve streampark-console core package module service name base on [3.1 Naming Style]

[Improve] Improve streampark-console core package module service name base on [3.1 Naming Style]

What changes were proposed in this pull request
Issue Number: fix #3295

Brief change log

Verifying this change

This change is a trivial rework / code cleanup without any test coverage.
(or)
This change is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:

Does this pull request potentially affect one of the following parts

Dependencies (does it add or upgrade a dependency): (yes / no)

cc @RocMarshal

Potentially, the inconsistency arises from methods such as:

org.apache.streampark.console.core.mapper.ApplicationMapper#selectAppsByTeamId
org.apache.streampark.console.core.service.VariableService#getDependAppsPage
org.apache.streampark.console.core.mapper.ApplicationMapper#selectProbeApps
...and others.

This discrepancy creates a lack of harmony in the codebase. Therefore, I am inclined to believe that renaming 'app' to 'application' may not be the most advantageous course of action.

Potentially, the inconsistency arises from methods such as:

org.apache.streampark.console.core.mapper.ApplicationMapper#selectAppsByTeamId
org.apache.streampark.console.core.service.VariableService#getDependAppsPage
org.apache.streampark.console.core.mapper.ApplicationMapper#selectProbeApps
...and others.

This discrepancy creates a lack of harmony in the codebase. Therefore, I am inclined to believe that renaming 'app' to 'application' may not be the most advantageous course of action.

thank your reply


Exchange "-" with "_" and vice versa

Stems from https://github.com/INCF/pybids/issues/18.
Currently a filename in BIDS would look like: sub-03_ses-audio_run-08_bold.nii.gz. The delimiters are such that _ separates categories and - separates category from its value.
When debugging it is often desirable to scroll fast and systematically through chunks of text at a time instead of hitting the left arrow key and having to scroll through each letter. On my mac I use option+arrow_key.
The issue that I want to raise is that the way mac keyboards parse text is it jumps through _ and stops at the -. For that reason I'd like to propose a change to the standard.
from: sub-03_ses-audio_run-08_bold.nii.gz
to: sub_03-ses_audio-run_08-bold.nii
This makes scrolling through filenames and paths more attuned to the way keyboards parse text when scrolling and therefore easier to select copy paste chunks that belong together.

Original authors: @andrebeu

@thomasbeaudry wrote:
I disagree with this. we have been programmed to associate underscores with new words, It would require relearning how to parse information

@chrisgorgo wrote:
Yes - in fact there is a current proposal for doing this withing BIDS 1.x Hava a looka najoin in at https://groups.google.com/forum/#!topic/bids-discussion/ABOJ57ObXGM

@TheChymera wrote:
I also disagree with this suggestion. It's a big change and the rationale is really insubstantial.

@tsalo I would like to re-state my opposition to this and elaborate. Really this sounds more like an issue with mac or whatever shell implementation you are using. Tweaking a standard to fit to one particular UX design I think is a mistake likely to cause a lot more problems in the future. Manual debugging workflows know no bounds in their variety, and a standard cannot be formulated to accommodate them all. But UX choices can be made to allow you to deal with any standard. Perhaps you can tweak your shell (or if impossible, switch to a more hackable shell like zsh) to make your usage of this and any other format easier.
@thomasbeaudry 's remark I think is correct, and in addition, even in the absence of such a convention, the broader width of the underscore and its lower position compared to the minus make it a visually more substantial delimiter.

@TheChymera To clarify- I'm also opposed to the change. I just copied over existing conversations from the BIDS 2.0 Google Doc.

@tsalo sorry, from the phrasing of the text I thought you were the original author. corrected ^

I think this is a clear wontfix so I will just close it


cupertino context menu: the menu options don’t look like the native ones in dark mode

Related to https://api.flutter.dev/flutter/cupertino/CupertinoContextMenu-class.html

Labeling, for further investigation.
It appears that the flutter font is bolder than the native font.

notes app
flutter sample

code sample
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

/// Flutter code sample for [CupertinoContextMenu].

void main() => runApp(const ContextMenuApp());

class ContextMenuApp extends StatelessWidget {
  const ContextMenuApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const CupertinoApp(
      theme: CupertinoThemeData(brightness: Brightness.dark),
      home: ContextMenuExample(),
    );
  }
}

class ContextMenuExample extends StatelessWidget {
  const ContextMenuExample({super.key});

  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
      navigationBar: const CupertinoNavigationBar(
        middle: Text('CupertinoContextMenu Sample'),
      ),
      child: Center(
        child: SizedBox(
          width: 100,
          height: 100,
          child: CupertinoContextMenu(
            actions: <Widget>[
              CupertinoContextMenuAction(
                onPressed: () {
                  Navigator.pop(context);
                },
                isDefaultAction: true,
                trailingIcon: CupertinoIcons.doc_on_clipboard_fill,
                child: const Text('Copy'),
              ),
              CupertinoContextMenuAction(
                onPressed: () {
                  Navigator.pop(context);
                },
                trailingIcon: CupertinoIcons.share,
                child: const Text('Share'),
              ),
              CupertinoContextMenuAction(
                onPressed: () {
                  Navigator.pop(context);
                },
                trailingIcon: CupertinoIcons.heart,
                child: const Text('Favorite'),
              ),
              CupertinoContextMenuAction(
                onPressed: () {
                  Navigator.pop(context);
                },
                isDestructiveAction: true,
                trailingIcon: CupertinoIcons.delete,
                child: const Text('Delete'),
              ),
            ],
            child: const ColoredBox(
              color: CupertinoColors.systemYellow,
              child: FlutterLogo(size: 500.0),
            ),
          ),
        ),
      ),
    );
  }
}

flutter doctor -v
[!] Flutter (Channel stable, 3.22.3, on macOS 14.5 23F79 darwin-arm64, locale en-GB)
    • Flutter version 3.22.3 on channel stable at /Users/nexus/dev/sdks/flutter
    ! Warning: `flutter` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/nexus/dev/sdks/flutters/bin/dart, which is not inside your current Flutter SDK checkout at /Users/nexus/dev/sdks/flutter. Consider adding /Users/nexus/dev/sdks/flutter/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b0850beeb2 (13 days ago), 2024-07-16 21:43:41 -0700
    • Engine revision 235db911ba
    • Dart version 3.4.4
    • DevTools version 2.34.3
    • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.

[✓] Flutter (Channel master, 3.24.0-1.0.pre.347, on macOS 14.5 23F79 darwin-arm64, locale en-GB)
    • Flutter version 3.24.0-1.0.pre.347 on channel master at /Users/nexus/dev/sdks/flutters
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision dfedcfe702 (5 hours ago), 2024-07-29 23:23:37 -0400
    • Engine revision c58d87d62c
    • Dart version 3.6.0 (build 3.6.0-91.0.dev)
    • DevTools version 2.37.1

Thank you!

@dkwingsmt Can you assign me this ?

@abdalmonem What do you plan to change? (Or more like I'm questioning the validity of this issue.) If it's about the boldness of fonts, or anything related to text, I don't think it's viable. Flutter's text rendering system is different from iOS's native one and there are a lot of things we just can't match, including font weight, text spacing, etc.

@dkwingsmt Yes that's exactly what i am thinking to do.
I was thinking to overlap tow pictures (native and flutter) of context menu with a same text and same and tracing the native one into flutter until got the same results.
Within take a many factors need to but under considerations such as device accessibility preferences like always bold text.


Crash with SevTech Ages (forge 2635)

Mod Version:
<IP_ADDRESS>
Forge Version:
2635
Link to crash log (if applicable):
crash-2018-03-28_19.36.49-client.txt
Description:
Crash with Sevtech ages? Figured it was part of the whole sound engine change but even when updating my mod it happens. If I remove dynamic surroundings I no longer have sound, but the game loads. Always at the very end of the loading process, "finalizes" then goes straight to the launcher with a crash.

Update AmbientSounds to 2.2.5.

Yikes! I forgot I had installed that! Thanks my dude.

This may also be related to #300.

Pushed v<IP_ADDRESS> that has some changes to startup sound processing.  I believe it will also have an impact on this particular issue.  Let me know if the problem persists.


Disallow positional arguments after optional arguments

Thank you for contributing to pyo3!
Please consider adding the following to your pull request:

an entry in CHANGELOG.md
docs to all new functions and / or detail in the guide
tests for all new or changed functions

Be aware the CI pipeline will check your pull request for the following:

Rust tests (Just cargo test or make test if you need to test examples)
Rust lints (make clippy)
Rust formatting (cargo fmt)
Python formatting (black . --check. You can install black with pip install black)
Compatibility with all supported Python versions for all examples. This uses tox; you can do run it using make test_py.

You can run a similar set of checks as the CI pipeline using make test.
When a rust binding has an optional parameter followed by a required parameter it may cause a hard to follow panic in python.
To reproduce:
use pyo3::prelude::*;

#[pyclass]
struct Foo {
    #[pyo3(get, set)]
    pub a: i32
}

#[pymethods]
impl Foo {
    #[new]
    fn new() -> Self {
        Self { a: 0 }
    }

    fn opt_first(&mut self, a: Option<i32>, b: i32) {
        self.a = a.unwrap_or(b)
    }
}

#[pymodule]
fn pyo3test(_py: Python, m: &PyModule) -> PyResult<()> {
    m.add_class::<Foo>()?;
    Ok(())
}

>>> import pyo3test
>>> foo = pyo3test.Foo()
>>> foo.opt_first()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Foo.opt_first() missing 1 required positional argument: 'a'
>>> foo.opt_first(1)
thread '<unnamed>' panicked at 'Failed to extract required method argument', src/lib.rs:24:48
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
pyo3_runtime.PanicException: Failed to extract required method argument
>>> foo.opt_first(1, 2)
>>> foo.a
1
>>> foo.opt_first(None, 1)
>>> foo.a
1
>>>

While the python type hinting states that there is only one required positional argument, the function behaves as if there are two required arguments, and even if one were optional, it would be 'a', not 'b'. Additionally, this behavior leads to illegal python, as def opt_first(a: Optional[int]=None, b: int) triggers the "non-default argument follows default argument" syntax error.
Reworking the proc-macro so that an Option followed by a required positional parameter must be provided would make the behavior of Options inconsistent, so we should explicitly disallow required parameters that follow optional parameters.
Both of the following now fail at compile time rather than runtime,
#[pymethods]
impl Foo {
    fn opt_first(&mut self, a: Option<i32>, b: i32) {
        self.a = a.unwrap_or(b)
    }

    #[args(a = "1")]
    fn default_first_provided(&mut self, a: i32, b: i32) {
        self.a = a + b;
    }
}

While these still compile and work as expected,
#[pymethods]
impl Foo {
    #[args(b = "5")]
    fn default_last_provided(&mut self, a: Option<i32>, b: i32) {
        self.a = a.unwrap_or(b)
    }

    fn opt_last(&mut self, a:i32, b: Option<i32>) {
        self.a = b.unwrap_or(a)
    }
}

Looks correct to me.

Test failures need rebase on #2040 I think.

Rebased. Looks like a need a maintainer to approve running the workflow though.

Don't worry about the CI failure, the main branch is currently broken. I'll try to fix it, unless @davidhewitt beats me to it.

Can you rebase again? Apologies for the inconvenience 🙏🏻

Rebased and added to the change log


Runtime error when simulating LIF neuron

Steps to reproduce

Run the default LIF code string in the original LIF sandbox
Change the resolution inside of the LIF.simulate() call from 10 to 1 and run the code

Resolved in this commit