Allow a subset of a scope's handlers have separate middleware stacks via "groups"?

In the Go HTTP router package Chi, it supports grouping a set of handlers along the same routing path into a "group" that has a fresh middleware stack. For example:
import (
	"net/http"
	"time"

	"github.com/go-chi/chi"
	"github.com/go-chi/chi/middleware"
)

func main() {
	r := chi.NewRouter()
	r.Get("/ping", func(w http.ResponseWriter, r *http.Request) {
		w.Write([]byte("pong"))
	})
	// Slow handlers / operations.
	r.Group(func(r chi.Router) {
		// Stop processing after 2.5 seconds.
		r.Use(middleware.Timeout(2500 * time.Millisecond))
		r.Get("/slow", func(w http.ResponseWriter, r *http.Request) {
			// Processing will take 1-5 seconds.
		})
	})
}

@rousan, do you know if there's a way to achieve this with how scopes work now?

I've written an integration test to demonstrate the desired behavior (and the test is failing):

#[tokio::test]
async fn test_grouping_handlers_via_scopes() {
    const AUTH_HEADER_KEY: &str = "X-TEST";
    const AUTH_HEADER_VALUE: &str = "AUTHORIZED";

    // If the request does not contain the required header with the correct value, the response
    // should be some form of error or refusal to serve the request.
    async fn authorizer_middleware(req: Request<Body>) -> Result<Request<Body>, routerify::Error> {
        match req.headers().get(AUTH_HEADER_KEY) {
            None => Err(routerify::Error::new("required header not found")),
            Some(v) => {
                if v != HeaderValue::from_str(AUTH_HEADER_VALUE).unwrap() {
                    Err(routerify::Error::new("required header has incorrect value"))
                } else {
                    Ok(req)
                }
            }
        }
    }

    // Build a router with one route that does not require the header, and one which does require
    // the header with the correct value. They are scoped using "/", which means only one group
    // is allowed per scope (as multiple "/" scopes would likely collide).
    let router: Router<Body, routerify::Error> = Router::builder()
        .get("/", |_| async move { Ok(Response::new("Hello world".into())) })
        .scope(
            "/",
            Router::builder()
                .middleware(Middleware::pre(authorizer_middleware))
                .get(
                    "/authorized",
                    |_| async move { Ok(Response::new("Secret world".into())) },
                )
                .build()
                .unwrap(),
        )
        .build()
        .unwrap();
    let serve = serve(router).await;

    // Test GET /
    let resp = Client::new()
        .request(
            Request::builder()
                .method("GET")
                .uri(format!("http://{}/", serve.addr()))
                .body(Body::empty())
                .unwrap(),
        )
        .await
        .unwrap();
    assert_eq!(200, resp.status().as_u16());

    // Test GET /authorized failure.
    let resp = Client::new()
        .request(
            Request::builder()
                .method("GET")
                .uri(format!("http://{}/authorized", serve.addr()))
                .body(Body::empty())
                .unwrap(),
        )
        .await
        .unwrap();
    assert_eq!(500, resp.status().as_u16());

    // Test GET /authorized success.
    let resp = Client::new()
        .request(
            Request::builder()
                .method("GET")
                .header(AUTH_HEADER_KEY, HeaderValue::from_str(AUTH_HEADER_VALUE).unwrap())
                .uri(format!("http://{}/authorized", serve.addr()))
                .body(Body::empty())
                .unwrap(),
        )
        .await
        .unwrap();
    assert_eq!(200, resp.status().as_u16());

    serve.shutdown();
}

This test fails with the following stacktrace:
running 2 tests
test test_hello_world ... ok
test test_grouping_handlers_via_scopes ... FAILED

failures:

---- test_grouping_handlers_via_scopes stdout ----
thread 'test_grouping_handlers_via_scopes' panicked at 'assertion failed: `(left == right)`
  left: `200`,
 right: `500`', tests/integration.rs:83:5

The failure is in the initial request made to GET /, which should not perform the "authorization" step and always serve the request. What are your thoughts on a feature like this?

@seanpianka , right now, all the scoped routes, handlers and middlewares are just merged with the scoped path. So, here, the middleware is available for /, /authorized and /authorized2.
The workaround to get the expected result:
let router: Router<Body, routerify::Error> = Router::builder()
        .get("/", |_| async move { Ok(Response::new("Hello world".into())) })
        .scope(
            "/",
            Router::builder()
                .middleware(Middleware::pre_with_path("/authorized", authorizer_middleware))
                .get(
                    "/authorized",
                    |_| async move { Ok(Response::new("Secret world".into())) },
                )
                .middleware(Middleware::pre_with_path("/authorized2", authorizer_middleware))
                .get(
                    "/authorized2",
                    |_| async move { Ok(Response::new("Secret world2".into())) },
                )
                .build()
                .unwrap(),
        )
        .build()
        .unwrap();
    let serve = serve(router).await;

or in a clean way:
let router: Router<Body, routerify::Error> = Router::builder()
        .get("/", |_| async move { Ok(Response::new("Hello world".into())) })
        .scope(
            // set a prefix for all the authorization routes
            "/auth",
            Router::builder()
                .middleware(Middleware::pre(authorizer_middleware))
                .get(
                    "/authorized",
                    |_| async move { Ok(Response::new("Secret world".into())) },
                )
                .get(
                    "/authorized2",
                    |_| async move { Ok(Response::new("Secret world2".into())) },
                )
                .build()
                .unwrap(),
        )
        .build()
        .unwrap();
    let serve = serve(router).await;

Just to translate the solution into English: the solution is to create a middleware using pre_with_path, where the given path exactly matches the path which requires the middleware.
Do you think adding a separate concept of "groups" would be difficult design-wise? Instead of having to specify the middleware explicitly for both /authorized and /authorized2.
I'm essentially looking to have "scopes" for middlewares... I don't have a lot of spare time, but if you have any suggestions on what part of the project would need to be changed, I could make a PR.

I tried writing an integration test to see if I understood your suggested solution correctly, however it appears the middlewares added to routes using middleware::pre_with_path is not being called (at least when I use the suggested approach):
Integration Test
#[tokio::test]
async fn can_use_different_middleware_for_routes_in_same_scope() {
    const AUTH_HEADER_KEY: &str = "X-AUTHZ";
    const AUTH_HEADER_VALUE: &str = "AUTHZ";

    const SECRET_HEADER_KEY: &str = "X-SECRET";
    const SECRET_HEADER_VALUE: &str = "SECRET";

    // Ensure the request contains a header with a specific value.
    async fn authz_middleware(req: Request<Body>) -> Result<Request<Body>, routerify::Error> {
        println!("running authz middleware...");
        match req.headers().get(AUTH_HEADER_KEY) {
            None => Err(routerify::Error::new("required header not found")),
            Some(v) => {
                if v != HeaderValue::from_str(AUTH_HEADER_VALUE).unwrap() {
                    Err(routerify::Error::new("required header has incorrect value"))
                } else {
                    Ok(req)
                }
            }
        }
    }

    // Ensure the request contains a header with a specific value.
    async fn secret_middleware(req: Request<Body>) -> Result<Request<Body>, routerify::Error> {
        println!("running secret middleware...");
        match req.headers().get(SECRET_HEADER_KEY) {
            None => Err(routerify::Error::new("required header not found")),
            Some(v) => {
                if v != HeaderValue::from_str(SECRET_HEADER_VALUE).unwrap() {
                    Err(routerify::Error::new("required header has incorrect value"))
                } else {
                    Ok(req)
                }
            }
        }
    }

    // Two sets of routes that require different header key-value pairs.
    const AUTHZ_ROUTE: &str = "/authorized";
    const SECRET_ROUTE: &str = "/secret";
    let router: Router<Body, routerify::Error> = Router::builder()
        .get("/", |_| async move { Ok(Response::new("Hello world".into())) })
        .get(AUTHZ_ROUTE, |_| async move { Ok(Response::new("authz".into())) })
        .middleware(Middleware::pre_with_path(AUTHZ_ROUTE, authz_middleware).unwrap())
        .get(SECRET_ROUTE, |_| async move { Ok(Response::new("secret".into())) })
        .middleware(Middleware::pre_with_path(SECRET_ROUTE, secret_middleware).unwrap())
        .build()
        .unwrap();
    let serve = serve(router).await;

    // Ensure we get a 200 OK response from the route with no authorization middleware.
    // (Sanity check!)
    let resp = Client::new()
        .request(serve.new_request("GET", "/").body(Body::empty()).unwrap())
        .await
        .unwrap();
    assert_eq!(200, resp.status().as_u16());

    // Ensure we get an error response from the route with authorization middleware when not passing the required header.
    let resp = Client::new()
        .request(serve.new_request("GET", AUTHZ_ROUTE).body(Body::empty()).unwrap())
        .await
        .unwrap();
    assert_eq!(500, resp.status().as_u16());
    // Ensure we get 200 OK from the route with authorization middleware when passing the required header + value;
    let resp = Client::new()
        .request(
            serve
                .new_request("GET", AUTHZ_ROUTE)
                .header(AUTH_HEADER_KEY, HeaderValue::from_str(AUTH_HEADER_VALUE).unwrap())
                .body(Body::empty())
                .unwrap(),
        )
        .await
        .unwrap();
    assert_eq!(200, resp.status().as_u16());

    // Ensure we get an error response from the route with secret middleware when not passing the required header.
    let resp = Client::new()
        .request(serve.new_request("GET", SECRET_ROUTE).body(Body::empty()).unwrap())
        .await
        .unwrap();
    assert_eq!(500, resp.status().as_u16());
    // Ensure we get 200 OK from the route with secret middleware when passing the required header + value.
    let resp = Client::new()
        .request(
            serve
                .new_request("GET", SECRET_ROUTE)
                .header(SECRET_HEADER_KEY, HeaderValue::from_str(SECRET_HEADER_VALUE).unwrap())
                .body(Body::empty())
                .unwrap(),
        )
        .await
        .unwrap();
    assert_eq!(200, resp.status().as_u16());

    serve.shutdown();
}

Expected Behavior
Get an error response from the route with using the authorization middleware if I'm not passing the required header/value.
    let resp = Client::new()
        .request(serve.new_request("GET", AUTHZ_ROUTE).body(Body::empty()).unwrap())
        .await
        .unwrap();
    assert_eq!(500, resp.status().as_u16());

Actual Behavior
running 1 test
test can_use_different_middleware_for_routes_in_same_scope ... FAILED

failures:

---- can_use_different_middleware_for_routes_in_same_scope stdout ----
thread 'can_use_different_middleware_for_routes_in_same_scope' panicked at 'assertion failed: `(left == right)`
  left: `500`,
 right: `200`', tests/integration.rs:167:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

failures:
    can_use_different_middleware_for_routes_in_same_scope

test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 2 filtered out

@rousan Can you take a look at this test failure? ☝ I wrote a test to try your suggested solution, but I'm running into assertion failures.


Add new specialist roles for DOS3

For this trello ticket.
Adds required questions and manifest entries for data architects,
engineers and scientists.

Role descriptions have now been added, and I'll go through removing the [WIP] markers from the depending PRs after this gets merged.


Need exact width and height

Hi, I need to resize image as for mobile device width and height exactly. I tried like below but not successful
e.g w=720&h=1280&fit=crop" but the resulting image is of size width=720 & height=480 and this does not fulfill my requirement. I also tried with fit=fill but result is same.
Please help.

That is the correct way to do that, as per our documentation:
<img src="kayaks.jpg?w=300&h=300&fit=crop">

What often happens in these situations is that your URL is loaded the source image directly, and it's not going through PHP. You'll want to make sure that isn't the case. Test this by "dying-and-dumping" in your Glide controller/endpoint to make sure it's getting there.

I am doing like this
$app = new \Slim\App();

$app->get('/img[/{params:.*}]', function ($request, $response) {
    $w = $request->getParam('h');
    if (!empty($w))
    {
        $server = ServerFactory::create([
                    'source' => '../test_images',
                    'cache' => '../test_images/cache',
                    'response' => new SlimResponseFactory(),
        ]);

        return $server->getImageResponse($request->getAttribute('params'), $request->getQueryParams());
    }

});

$app->run();

what should i change?


fix docker ci release, cleanup readme and release.md

📝 Summary

Fixed portable Docker image tag in CI
Readme + Release.md cleanup

✅ I have run these commands

[x] make lint
[x] make test-race
[x] go mod tidy

Codecov Report

Merging #380 (69013ef) into main (1a11894) will increase coverage by 0.67%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #380      +/-   ##
==========================================
+ Coverage   66.02%   66.70%   +0.67%
==========================================
  Files           7        7
  Lines         889      889
==========================================
+ Hits          587      593       +6
+ Misses        265      262       -3
+ Partials       37       34       -3

Flag
Coverage Δ

unittests
66.70% <ø> (+0.67%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

server/service.go
79.28% <0.00%> (+1.42%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Consider SwzDeviceFeed field device information used assist in representing mobile work zones

Summary
This issue is intended to start discussion on what information could or should be added to the field devices represented in a SwzDeviceFeed to help represent and clarify mobile operations.
Currently, the ArrowBoard field device has an is_moving property (boolean) which is defined as:

A yes/no value indicating if the arrow board is actively moving (not statically placed) as part of a mobile work zone operation.

The ArrowBoard is the only type of device with this property and it is not clear if it provides any value.
Motivation
Representing mobile operations was identified as the top priority for enhancements or clarifications to the WZDx specification by SWZ Subgroup Survey results.
Items for discussion

Is there value in adding a new value of moving-operation or mobile-operation to the MarkedLocationType enumerated type, to enable explicitly representing a mobile operation using a LocationMarker?
It is not clear how a consumer benefits from the is_moving property on the ArrowBoard device. Also, it is confusing that only the ArrowBoard has the is_moving property. We should discuss the value of knowing a device is moving (update frequency is a separate property, the is_moving should not be used to determine how often a consumer fetched the feed)—if there is value, is_moving should possibly be added to the FieldDeviceCoreDetails so that any device can be moving.

I like this idea (adding the moving property). Specifically the idea of frequent updates never predicts future locations. Adding the concept of a movable work-zone, lets the user comprehend that the provided location today may not be representative of the actual work-zone location tomorrow. It allows a forecasting element to become available (not a good one, but at least a hint).  At some point in the future, i can see adding a velocity and heading to this attribute.

I would agree that it makes sense to include the is_moving field to all devices. The currently defined list of devices all can, and often are employed in mobile work zones.
Assuming the list continues to expand and include all types of typical ITS devices, the main one that doesn't work in a mobile operation would be vehicle detection units. Obviously, some caveats exist around certain models of other generic ITS devices, but it's simple enough to mark no for those.
The biggest benefit is logic can be built to determine whether or not a specific device should be included in breadcrumbing type applications.
To discussion points:

I think moving_operation is a bit more concise and clear language.
is_moving should be added to all Core Details. It's simple enough to mark as no, and it's not like humans should be doing the interpretation of the data anyway. If it's not relevant at data consumption time, the consumer can choose to ignore the field.

A few history here.  back in 2017, The ENTERPRISE Transportation Pooled Fund Study TPF-5 (231) was released. This document was the first giving a clear definition, requirements and use cases related to Smart arrow Board.  The document is giving some rules related to mobile operation and one of them specifies that an arrow on a mobile operation shall provide an update status more often.
An arrow board was and is still the more often traffic control device used in mobile operation. That is why it was the only one with that attribute.   DMS/VMS are used but in a lesser %,  probably in a ratio of 80% arrow and 20% DMS/VMS currently.
Now in 2022 I agree that this goes beyond the 2017 intent of the above document.   Variable message sign, start/end of workzone, worker/truck presence beacon, why not hybrid sign (speed limit) can all become part of a mobile operation.
I agree that this should be more generic for any SWZdevicesfeed element.
For that reason, maybe  it should be a value of the FieldDeviceCoreDetails  object.

is_moving was added in #266.

Resolved in #266.


[BugFix] fix unstable ut testRollbackExceptionOnSetupCluster

What type of PR is this：

[x] bug
[ ] feature
[ ] enhancement
[ ] refactor
[ ] others

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

use 2 * txn_rollback_limit to avoid automatical recover after somehow one txn grows.

[FE PR Coverage check]
:heart_eyes: pass : 0 / 0 (0%)


[Edition] "I don't have this perm" while bot has perm

What cog are you reporting for?
Edition
What command(s) inside the cog are you reporting for?
[p]edition
What were you expecting from the output of the command?
Nickname change to OofChair - OofChair Edition
What actually happened?

How long has this been occuring for?
Today
What is your Discord username?
OofChair#0001
Additional information:
Bot has permissions, but doesn't work. I am also the admin in this server.

Hey there, unfortunately, server owners have an 'invisible role' at the top of the role heirarchy. Discord's permission system does not allow for any member of the server to change the nickname of the owner (or other members who have a higher top role) regardless of if they are a bot or not. This is quite an annoying system but nothing can be done about it, unfortunately. Thankyou for reporting this to me however, I should make this clear in the docstring. Any further questions feel free to reach out I'll keep this issue open for a bit.

Hey there, unfortunately, server owners have an 'invisible role' at the top of the role heirarchy. Discord's permission system does not allow for any member of the server to change the nickname of the owner (or other members who have a higher top role) regardless of if they are a bot or not. This is quite an annoying system but nothing can be done about it, unfortunately. Thankyou for reporting this to me however, I should make this clear in the docstring. Any further questions feel free to reach out I'll keep this issue open for a bit.

To continue on what Kreusada said if the bot's top role is below or equal to your top role it can't change your nickname. Even if both had administrator roles as long as the top role is equal or lower in the hierarchy it won't be able to change your nickname.

To continue on what Kreusada said if the bot's top role is below or equal to your top role it can't change your nickname. Even if both had administrator roles as long as the top role is equal or lower in the hierarchy it won't be able to change your nickname.

Before I close this issue, the way that edition works, you become an edition of the editioner. There wouldn't be any sense in becoming the edition of yourself, instead, other's become an edition of you. The logic of the cog should disregard this unfixable issue if used correctly.

Before I close this issue, the way that edition works, you become an edition of the editioner. There wouldn't be any sense in becoming the edition of yourself, instead, other's become an edition of you. The logic of the cog should disregard this unfixable issue if used correctly.


PacketEvents API support as an alternative to protocolLib

Description
PacketEvents API by retrooper as an alternative option instead of protocolLib. Mainly related to efficiency reasons.
Configuration
Nothing in configs of note, just detects PacketEvents API instead of protocolLib and boots up, or is an alternate fork of WM.
Payment (optional)

[ ] I'm willing to pay for this feature

I'll have to look into the API to check how much work this is. Either way, I do not want to maintain alternate forks given how often I have to update 1 fork already. The solution would definitely be a compatibility layer to detect whether to use ProtocolLib or PacketEvents

I'm going to close this since for a few reasons:

I doubt that PacketEvents is faster. They call the Bukkit Events API for every packet, which is something that Spigot themselves try to avoid doing because of lag issues
Adding a compatibility layer to support both ProtocolLib and PacketEvents would introduce overhead that is not worth the effort
The usage of ProtocolLib in WeaponMechanics is quite minimal

Basically, https://stackify.com/premature-optimization-evil/


Scoped NPM packages fail

Flow doesn't seem to properly import scoped NPM packages.
Example:
 14: import ExNavigator from '@exponent/react-native-navigator';
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @exponent/react-native-navigator. Required module not found

When installed, this package is found in node_modules/@exponent/react-native-navigator.
I'm using Flow 0.20.1 and npm 3.3.6.

Sorry, turns out this was actually due to an error in the react-native-navigator package.

@corbt I'm facing the same issue, could you tell what was the problem with module?

@gleb-lobastov did you figure out how to solve this?


How docked is working can anyone explain???

I m not getting how docked is decreasing or resizing content can any one explain??

I don't really understand the question. Feel free to reopen the issue if you still want answers after all this time :jack_o_lantern:


Smoke test for Docfx v3

Docs Build status updates of commit 339e62e:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

microsoft-edge/SmokeTest.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Cross-compile onnxruntime on Ubuntu 18.04 not working

[x] [WIP] need to try again after changing Ubuntu 18.04 to Ubuntu 16.04

Solved


Remove white space around flags

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
In some of the exercises there can be spaces before or after the flag when copied, so when people tries to insert the flag it returns invalid flag.
Describe the solution you'd like
A clear and concise description of what you want to happen.
I think that the validateflag function could be changed to remove potential white space around the flags.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

Fixed e04897a1b704504b499dfaccbbce14e70ba22242


use ocrApiSimple own solution

closes #168

Codecov Report

Merging #170 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff          @@
##           master   #170   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files           2      2
  Lines          20     20
  Branches        2      2
=====================================
  Hits           20     20

Impacted Files
Coverage Δ

lib/ocrSpaceApiSimple.js
100% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


Add Fixed Grid Support

What's the best way of going about having a fixed (non-flud) grid? I've found that setting a width on your element containing outer-container and body::before seems to work for both the grid and visual grid but I'm not sure if there's a better way of doing this or if its even supported by Neat?

+1 for fixed widths


Introduce a setting similar to DAX Studio to not query direct lake tables for columns statistics but just get the memory footprint as is.

Is your feature request related to a problem? Please describe.
if you run vertipaq analyzer - the dax studio supports a setting called "read statistics from data" in the options which prevents reading actual data (from Direct Query or Direct Lake) models.
As it was noted in the function signature it is necessary to not query the model otherwiese all columns will be loaded into memory. But also querying with Spark can introduce a very long runtime / cost if those queries are run on the lakehouse via spark. I need to wait for 20+ Minutes, while I am actually only interested in the current memory usage of the model (and not so much of not loaded columns)
Describe the solution you'd like
Please introduce new parameter of generic configuration to disable the Querying of vertipaq analyzer column statistics via Spark.
Describe alternatives you've considered
An alternative would be to just not do that - as dax studio supports.
Additional context
See problem description

While I have been working on this for a while, more and more I get to the considerationt hat the "Vertipaq Analyser" Results should be selfcontained by the PowerBI engine.
It would not do anything with Spark.
I wanted to get the Memory Foot of all models on our Capacity - but the Models are not fully functional.
the DAX Studio do not create if a column references a column that does not exist in the Lakehouse / Warehouse.
If outputs the memory from the model - what is loaded.
I on the other hand now just find Errors in the Models because the columsn where never used - but are in the model - and the Spark Queries do fail because of that.
a Validation is good - but not in the Veripaq Analyzer Function - there I want to get the Memory footprint as its.

This was actually on my to do list already. A new parameter will be added to the vertipaq_analyzer function called 'read_stats_from_data'. It will default to False. Setting it to True will use spark to query the lakehouse (for Direct Lake models) or use DAX (for non-Direct Lake models) to obtain values for Column Cardinality and Missing Rows.

Added to 0.3.2


Tagged Release Checklist - 0.3.6 and 0.3.7

[x] Update the version in package.json
[x] npm i to regenerate package-lock.json
[x] npm publish to publish the version to npm registry.
[x] Git annotated tag and push to Github

[x] git tag -a v{version} -m "{your message}" to create an annotated tag
[x] git push origin v{version} to push up to the project's
releases

[x] Docker build and publish tagged Image, see See documentation for more information

[x] Build a tagged Docker image i.e. docker build -t ld4p/sinopia_editor:{version} .
[x] Push the tagged version to Dockerhub with docker push ld4p/sinopia_editor:{version}

[x] Create Release notes for the tagged version on Github
[x] Once tagged release is live on https://development.sinopia.io, this ticket will be assigned to the product owner who will approve the tagged release for deployment on

[ ] Staging at https://stage.sinopia.io/
[ ] Production at https://sinopia.io

@aaron-collier, can we close this ticket as it is absorbed into ticket #1078?


Required input field X cannot be deprecated does not work when composition

Component(s)
composition
Component version
0.89.1
wgc version
0.53.2
controlplane version

router version
0.89.1
What happened?
Description
If you put the @deprecated directive on a mandatory field, cosmo builds the schema even though it shouldn't before the field is made optional (for schema compatibility)
apollo – GraphQLError: Required input field TestInput.testField cannot be deprecated.
graphql-schema-linter – Required input field TestInput.testField cannot be deprecated. (invalid-graphql-schema)
cosmo – OK, composite schema!
Steps to Reproduce
Initial scheme
input TestInput {
    testField: String!
}

Set the directive and expect an error during composition
input TestInput {
    testField: String! @deprecated
}

Cosmo doesn't cotton on to composition errors
Environment information
OS: 14.4 (23E214)
Package Manager: npm
Compiler(if manually compiled): go version go1.22.1 darwin/arm64
Router configuration
-

Router execution config
-

Log output
apollo:
GraphQLError: Required input field TestInput.testField cannot be deprecated.
      at Object.err (/builds/node_modules/@apollo/federation-internals/dist/error.js:11:32)
      at Validator.addError (/builds/node_modules/@apollo/federation-internals/dist/validate.js:100:57)
      at Validator.validateInputObjectType (/builds/node_modules/@apollo/federation-internals/dist/validate.js:188:22)
      at Validator.validate (/builds/node_modules/@apollo/federation-internals/dist/validate.js:64:26)
      at validateSchema (/builds/node_modules/@apollo/federation-internals/dist/validate.js:11:34)
      at Schema.validate (/builds/node_modules/@apollo/federation-internals/dist/definitions.js:1175:62)
      at Subgraph.validate (/builds/node_modules/@apollo/federation-internals/dist/federation.js:1129:25)
      at buildSubgraph (/builds/node_modules/@apollo/federation-internals/dist/federation.js:839:21)
      at subgraphsFromServiceList (/builds/node_modules/@apollo/federation-internals/dist/federation.js:1004:27)
      at Object.composeServices (/builds/node_modules/@apollo/composition/dist/compose.js:44:75) {
    message: '[test-service] Required input field TestInput.testField cannot be deprecated.',
    path: undefined,
    locations: [ [Object], [Object] ],
    extensions: { code: 'INVALID_GRAPHQL' }
  }

graphql-schema-linter:
Required input field TestInput.testField cannot be deprecated. (invalid-graphql-schema)
cosmo:
OK, composite schema!

Hi @flymedllva,
This is a known issue with a ticket in our backlog. We'll address it in due course.
Thanks,
The WunderGraph Team


Error reading data from stream

I have deployed the Hologram server to an EC2 instance running Debian and when I run hologram use foo I see the connection opened on the server but then something is closing it. BTW, I'm building the binaries from the credential_keys_in_text_file branch.
[INFO   ] 2017-05-02T19:33:23Z Hologram server is online, waiting for termination.
[INFO   ] 2017-05-02T19:33:34Z Enabling debug mode.
[DEBUG  ] 2017-05-02T19:33:41Z (/go/src/github.com/AdRoll/hologram/server/server.go:59) Opening new connection handler.
[DEBUG  ] 2017-05-02T19:33:41Z (/go/src/github.com/AdRoll/hologram/server/usercache.go:328) Could not find derp in the keys file cache; updating from the file.
[ERROR  ] 2017-05-02T19:33:41Z (/go/src/github.com/AdRoll/hologram/server/server.go:65) Error reading data from stream: read tcp y.y.y.y:3100->x.x.x.x:33059: use of closed network connection

So first, I'd consider that branch WIP.  Want to get it working but I don't think anyone has it deployed anywhere.
Is there an error on your client in /var/log/hologram/hologram.log?  I'd guess the agent got some response it didnt like and closed the connection there

The agent is getting an EOF response back.

Here's the agent log:
[DEBUG  ] 2017-05-02T15:55:08-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:59) SSH_AUTH_SOCK included in this request: /private/tmp/com.apple.launchd.vH14PCyzO0/Listeners
[DEBUG  ] 2017-05-02T15:55:08-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:64) SSH keyfile included in this request.
[DEBUG  ] 2017-05-02T15:55:08-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:70) Handling AssumeRole request.
[ERROR  ] 2017-05-02T15:55:08-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:79) EOF

Also, here's my server config (I guessed at the config for a keys file):
{
  "userstorage": "file",
  "keysfile": {
    "filepath": "/etc/hologram/keys",
    "roleattr": "businessCategory",
    "defaultroleattr": "employeeType"
  },
  "aws": {
    "account":      "xxxxx",
    "defaultrole":  "hologram"
  },
  "listen": "<IP_ADDRESS>:3100",
  "cachetimeout": 3600,
  "debug": true
}

And keys file:
{
    "keys": [
        {
            "username": "bantonelli",
            "password": "foo",
            "sshPublicKeys": [ "ssh-rsa xxxxxx OpenShift-Key" ]
        }
    ]
}

It looks like the error is happening when the client agent is attempting to do the read:
https://github.com/AdRoll/hologram/blob/credential_keys_in_text_file/agent/client.go#L185

The keys file should be:
{
    "ssh-rsa xxxxxx OpenShift-Key":
        {
            "username": "bantonelli",
            "roles": ["engineer"]
        }
    ]
}```

and in the server.json:

{
"userstorage": "file",
"keysfile": {
"filepath": "/etc/hologram/keys",
"roleattr": "roles",
"userattr": "username"
},
"aws": {
"account":      "xxxx",
"defaultrole":  "hologram"
},
"listen": "<IP_ADDRESS>:3100",
"cachetimeout": 3600,
"debug": true,
"enableServerRoles": true
}
(the line in each about roles being optional)

I made the changes you noted, but I'm still hitting the same error.
hologram use hologram
Client Log:
[DEBUG  ] 2017-05-18T11:07:39-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:75) hologram
[DEBUG  ] 2017-05-18T11:07:39-04:00 (/go/src/github.com/AdRoll/hologram/agent/client.go:158) in client.AssumeRole()
[DEBUG  ] 2017-05-18T11:07:39-04:00 (/go/src/github.com/AdRoll/hologram/agent/client.go:177) in c.requestCredentials()
[DEBUG  ] 2017-05-18T11:07:39-04:00 (/go/src/github.com/AdRoll/hologram/agent/client.go:196) got err
[DEBUG  ] 2017-05-18T11:07:39-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:77) ran client.AssumeRole()
[DEBUG  ] 2017-05-18T11:07:39-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:84) got an error from client.AssumeRole()
[ERROR  ] 2017-05-18T11:07:39-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:85) EOF
[DEBUG  ] 2017-05-18T11:07:39-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:94) set agentResponse
[DEBUG  ] 2017-05-18T11:07:39-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:96) wrote message
[DEBUG  ] 2017-05-18T11:07:39-04:00 (/go/src/github.com/AdRoll/hologram/agent/cli_handler.go:47) error from read

Server Log:
[INFO   ] 2017-05-18T15:06:59Z Enabling debug mode.
[DEBUG  ] 2017-05-18T15:07:22Z (/go/src/github.com/AdRoll/hologram/server/server.go:59) Opening new connection handler.
[DEBUG  ] 2017-05-18T15:07:22Z (/go/src/github.com/AdRoll/hologram/server/usercache.go:328) Could not find derp in the keys file cache; updating from the file.
[ERROR  ] 2017-05-18T15:07:22Z (/go/src/github.com/AdRoll/hologram/server/server.go:65) Error reading data from stream: read tcp <IP_ADDRESS>:3100-><IP_ADDRESS>:15647: use of closed network connection


Can't start the background design-time process

Describe the Bug with repro steps
The background design-time is set to auto start, but vscode cannot start it anymore.
Since this appears, data mappers that are created previously are missing all connections and cannot load schemas.
Screenshots or Videos
When VSCode is opened

When I try to load data mapper

Version

Extension version [v2.86.5]

Additional context
No response

Hi @yunn246 thank you so much for raising this issue, it seems that command we use to from functions core tools to start the design time process its failing. Is there any chance we can get a screenshot from the terminal and from the output console log in vscode when this issue is happening?

Hi, I don't see anything in terminal, but here are screenshots from the output when the issue happened. I was trying to open an existing lml in data mapper.

Hi @yunn246 it does seem that the azure functions core tools version is the one having troubles. Checking the binaries installation after opening vscode should install/update the function core tools automatically, it does looks like something is wrong with updating it. To get the latest versions, as a workaround, could you please remove the complete folder C:\Users\yuw\.azurelogicapps\depedencies and restart vscode? This will install the latest version.
I will work on try to fix this issue. Thanks!

Hi @yunn246 I was able to repro the exact same scenario. Azure Logica Apps extension will ask the user to update azure function core tools whenever this extension setting is set to true. Could you verify if this setting is set to true?
Therefore a popup will appear in the UI asking if you would like to update function core tools and you would need to update it

Hi @ccastrotrejo, I checked the setting and it's already set to true. I didn't see the warning message pop-up.

I have also tried remove the dependencies folder and let it install automatically, but background design-time process still can't start.

@yunn246 Does the output logs say something about the function core tools?


List of APIs that require declared reasons now available

推荐收录
链接
https://developer.apple.com/news/?id=z6fu1dcu
理由
Apple is committed to protecting user privacy on our platforms. We know that there are a small set of APIs that can be misused to collect data about users’ devices through fingerprinting, which is prohibited by our Developer Program License Agreement. To prevent the misuse of these APIs, we announced at WWDC23 that developers will need to declare the reasons for using these APIs in their app’s privacy manifest. This will help ensure that apps only use these APIs for their intended purpose. As part of this process, you’ll need to select one or more approved reasons that accurately reflect how your app uses the API, and your app can only use the API for the reasons you’ve selected.
Starting in fall 2023, when you upload a new app or app update to App Store Connect that uses an API (including from third-party SDKs) that requires a reason, you’ll receive a notice if you haven’t provided an approved reason in your app’s privacy manifest. And starting in spring 2024, in order to upload your new app or app update to App Store Connect, you’ll be required to include an approved reason in the app’s privacy manifest which accurately reflects how your app uses the API.
If you have a use case for an API with required reasons that isn’t already covered by an approved reason and the use case directly benefits the people using your app, let us know.
View list of APIs and approved reasons
Submit a request for a new approved reason
推荐人信息
如果收录这个资源，我们会在点评后面说明推荐信息人。

主要是他上的时候，又把两周前出现过的 _CMTimebaseCreateWithMasterClock 的 API 误判又带上去了。。。我怀疑苹果没有测试。。。


Create App

Create and app of this game. This includes adding buttons for controls, and being able to host the server through app

I think hosting through app should be a different issue


[PE-D][Tester C] User Guide: Inaccurate description of advfilter format

In the Notes about the command format section in the user guide, it is stated:

In the advfilter section in the user guide, it is stated that advfilter has the following format:

To a user reading the user guide, this could imply that the additional parameters t\TAG, operator, and value are all optional parameters.
However, in the application, advfilter requires all the additional parameters to execute properly.

As such, there is a discrepancy between what is suggested in the User Guide and what the system accepts

Labels: type.DocumentationBug severity.Low
original: shizy/ped#9

#273


NUTCH-2373 Index writer plugin for hbase implemented

An index writer for HBase like index writer for Solr, ElasticSearch etc. Expected HBase table description and NutchDocument to HBase mapping is read using a indexer-solr alike mapping file and write NutchDocument fields into the table of a HBase server.
TODO: Functionality to send and set kerberos authentication configuration for secure hdfs

I've used {{HBase-0.98.18-hadoop2}} version and APIs. I was really confused which HBase version should I use? Should I use HBase 1.x ? Please review the changes.

Very frustrating for newcomers like me. Not even a single initial response :( :'(

Hi @kaidul, sorry about any delays. We are a small projects and a small community and a careful review including a test setup will take its time. I hope to get some hours during this week but cannot promise anything.
Regarding the HBase version: Gora 0.6.1 uses HBase 0.98.8, to avoid any conflicts (if Hbase is used also for storage via Gora) it's for sure not a bad idea to use the same version. But I do not feel really competent in any questions regarding Gora.

Hi @sebastian-nagel , Really thanks for your response. Always appreciate your effort and sorry for my impatience. Without no initial response, I thought my PR might seem somewhat irrelevant for Nutch. Now I know, this PR is on the queue no matter how many days to wait :)
Yes, Fortunately my current PR uses hbase 0.98.8-hadoop2 (sorry for I mistakenly mentioned 0.98.18 which is not correct), so I think this is the same version with gora 0.6.1.

Hi @sju Thanks for your participation. I've added the commit() on close() and pushed it.

Hi @kaidul yes I shadow @sebastian-nagel comments, apologies for not getting around to this earlier. It is not because the committers don't care, it may have to do with the fact that not everyone has HBase running... regardless thank you for the patch. I managed to try it out with HBase 0.98.X tonight and I am glad to report that it performed flawlessly.
The only comment I really have is if you could implement parameterized logging for Slf4j logging instances.
Thanks again, if you are able to address the logging issue then I would more than happily commit this to master branch.

Hi @lewismc Thanks for your effort to test my patch and I am very glad that everything worked perfectly and the PR is more likely to be merged :D I've added parameterized logging where possible and pushed the changes. However, here and here, the log-messages need to be created to throw RuntimeException no matter log is enabled or not. So I used String.format here.
Please let me know what you're thinking :)

Thank you @kaidul

You're welcome @lewismc  I really love this project and hope I will be active in this community :)


Surface TODOs separately from other warnings

Currently (in Intellij at least) the TODOs are marked as warnings indistinct from other warnings. It would be nice to see
3 TODOs
4 typos
1 warning

I am assuming that the analyzer is not surfacing this information. If it is then I will refile in the dart plugin for intellij

The analysis server sends back a different error kind for TODO's, so IntelliJ should be able to display them differently.

This issue was moved to dart-lang/sdk#25132


Redis 4.0.6 Issue?

I am using the latest Redis version 4.0.6 and get an error:

ERR Error running script (call to f_445a715b8b2cc8394ed6f020cbaac190a5468109): @user_script:125: @user_script: 125: Lua redis() command arguments must be strings or integers

I see that in the past [https://github.com/jruizgit/rules/issues/51] you said that this error is because of incompatibility issue with redis.
Is it the same now?
should i use only a specific version of redis that is compatible? if so... what is it?
Thanks!
UPDATE:
not sure why but I got the error because I was posting a fact with a property of type object where i stores my application's rule_id - for example:
{ rule: {id: xxxx}, value: 5, value2: 10 }
after changing the fact to:
{ rule_id: xxxx, value: 5, value2: 10 }
the issue was resolved

Hi, thanks for reporting this issue. There was a bug when posting events or asserting facts with a nested object with a property named "id". I have pushed a fix and uploaded a new version to npm (0.36.81 for node.js).


Left your keys in tests

Just a heads up, you left your AWS keys in your tests

Hey! Can you point out where exactly they are?

If you're referring to this https://github.com/CargoSense/ex_aws/blob/master/test/lib/ex_aws/auth/credentials_test.exs#L9 they have the word EXAMPLE in them, they aren't real keys


Inertial scroll for mobile devices

When defining a fixed height for the table, vertical scroll is enabled, however it's not inertial on mobile devices. Wondering if there is a recommended way to address this. Thanks!

@sidewayskumara the lazy load will be the best solution or fixed the header column. In this situation, you only remove the height as a workaround currently. I'll consider to make table more fit for mobile device in react-bootstrap-table2

@AllenFang Yup I'm happy to fix the header.
Looking at issue #695 it looks like lazy loading is no longer working? If it is could you point me to some documentation on it please. Thanks!

@sidewayskumara actually, we dont support the lazy load currently :P

Cool thanks for the clarification :)


No onReady event firing in React when using pre-computed peaks

Bug description
When using @wavesurfer/react with pre-computed peaks, the onReady event is never triggered, so there's presumably no occasion to bind the wavesurfer object to state, and thus no opportunity to initialize other controls.
Environment

Browser: Chrome

Minimal code snippet
Clone this demo repo https://github.com/njbair/wavesurfer-react.git then run npm start and browse to localhost:3000. Open dev tools to monitor the JS console.
Expected result
We should get a ready event when the file loads.
Obtained result

We do not get a ready event when the file loads.
In the version without peaks, the ready event is triggered.
In the Vanilla JS versions, both with and without peaks, the ready event is triggered.
It's not included in this demo repo, but I first encountered this bug while using the useWavesurfer hook instead of the WavesurferPlayer component. This makes sense to me, since the component is just a basic wrapper around the hook.

Screenshots
Here is a screenshot of the console only displaying redraw and redrawcomplete events:

Additional info: my suspicion is that this is a race condition between mounting the component and loading the audio. Since pre-calculated audio loads basically instantly, it looks like the wavesurfer library is emitting the ready event before the React component subscribes to it.
I'm testing out a local copy of both @wavesurfer/react and wavesurfer.js, adding some console output to confirm my suspicions, and it does indeed look like that's what's happening here:

I believe this was fixed in wavesurfer.js, the react package just needs to be updated.

I believe this was fixed in wavesurfer.js, the react package just needs to be updated.

The React package seems to do very little other than pulling in the wavesurfer.js core library and then React-ifying it.
I wonder if there's a way to wrap the wavesurfer ready event in a promise, then have that promise handled by useEffect? You would also need to defer loading of the URL until after that event is fired.
Looking at the wavesurfer.js API, I don't see a good place for useEffect to hook into. If you have any suggestions, I would be happy to take a stab at a PR to address this.
Thanks.

AFAIR this event is already promisified, even with predecoded peaks. Probably use effect is still being triggered too late.

@njbair a fix is now live in 7.8.1. Cheers!


s3 Trigger Lambda function permission update to include s3 iam bug

Describe the bug
When adding s3 read permission to an existing s3 trigger the generated iam policy is not correct.
Notice how the Resource name is set to arn:aws:s3:::storagetestBucketName/*

Here is the IAM policy
        {
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::storagetestBucketName/*"
            ],
            "Effect": "Allow"
        }

It seems like it is using the newly added environment variable. This is added to my function index.js var storageTestBucketName = process.env.STORAGE_Test_BUCKETNAME
I will also note that the Environment Variable is not visible in the Lambda console. I only see ENV, REGION and the two others related to API access API_TEST_GRAPHQL...
To Reproduce
Steps to reproduce the behavior:

amplify function update
choose s3 trigger
Select yes to change permission and select Storage
Give the Storage category read access

Expected behavior
The policy is added correctly and the function can read from s3.

@oste So the issue is that the process.env.STORAGE_Test_BUCKETNAME is undefined in your lambda function?

Yes and I don't think the Ian policy is correct. I could be wrong if that's using a variable of some sort.

@oste Could you please check the lates version of the CLI and test it end to end? it seems to be working for me. Please comment on this issue if you're still getting permission issues.


[Feature] - Add support for k3d

🚀  Is your feature request related to a problem? Please describe.
Currently, k3ai doesn't have support for k3d.
k3s is known to have issues with WSL2 deployment (systemd requirement, etc.), so it would be better to have k3d support.
💡  Describe the solution you'd like
We can add k3d support to k3ai in a subsequent release. (would require some work on pkg/io/execution).

After the merge of k3d plugin, I had to edit some code and run it manually in order to make it work, and yes, it does work!
❯ go run main.go cluster deploy -t k3d -n myk3d
 🚀 Starting installation...

 ⏳     Working...
 🚀 k3d v5.0.3 is already latest
 🚀 Run 'k3d --help' to see what you can do with it.
 🚀 INFO[0000] Prep: Network
 🚀 INFO[0000] Created network 'k3d-myk3d'
 🚀 INFO[0000] Created volume 'k3d-myk3d-images'
 🚀 INFO[0000] Starting new tools node...
 🚀 INFO[0001] Creating node 'k3d-myk3d-server-0'
 🚀 INFO[0003] Creating LoadBalancer 'k3d-myk3d-serverlb'
 🚀 INFO[0003] Starting Node 'k3d-myk3d-tools'
 🚀 INFO[0003] Using the k3d-tools node to gather environment information
 🚀 INFO[0003] Starting existing tools node k3d-myk3d-tools...
 🚀 INFO[0003] Starting Node 'k3d-myk3d-tools'
 🚀 WARN[0009] failed to resolve 'host.docker.internal' from inside the k3d-tools node: Failed to read address for 'host.docker.internal' from command output
 🚀 INFO[0009] HostIP: using network gateway...
 🚀 INFO[0009] Starting cluster 'myk3d'
 🚀 INFO[0009] Starting servers...
 🚀 INFO[0009] Starting Node 'k3d-myk3d-server-0'
 🚀 INFO[0009] Deleted k3d-myk3d-tools
 🚀 INFO[0024] Starting agents...
 🚀 INFO[0024] Starting helpers...
 🚀 INFO[0024] Starting Node 'k3d-myk3d-serverlb'
 🚀 INFO[0033] Injecting '<IP_ADDRESS> host.k3d.internal' into /etc/hosts of all nodes...
 🚀 INFO[0033] Injecting records for host.k3d.internal and for 2 network members into CoreDNS configmap...
 🚀 INFO[0034] Cluster 'myk3d' created successfully!
 🚀 INFO[0034] You can now use it like this:
 🚀 kubectl cluster-info

 ✔ Installation Done.

❯ k3ai cluster list -d
┌───────────────────────────┐
│ CLUSTERS DEPLOYED         │
├────────┬──────┬───────────┤
│ NAME   │ TYPE │ STATUS    │
├────────┼──────┼───────────┤
│ MYK3AI │ kind │ Installed │
├────────┼──────┼───────────┤
│ MYK3D  │ k3d  │ Installed │
└────────┴──────┴───────────┘

❯ k3ai plugin deploy -n mlflow -t myk3d
 🚀 Starting installation...

 🚀 Working on the installation...
persistentvolume/minio-pv created

 🚀 Working on the installation...
secret/minio-conf created

 🚀 Working on the installation...
service/minio-service created

 🚀 Working on the installation...
statefulset.apps/minio created

 🚀 Working on the installation...
configmap/postgres-config created

 🚀 Working on the installation...
persistentvolume/postgres-pv created

 🚀 Working on the installation...
secret/postgres-secret created

 🚀 Working on the installation...
statefulset.apps/postgres created

 🚀 Working on the installation...
service/postgres-service created

 🚀 Working on the installation...
deployment.apps/mlflow created

 🚀 Working on the installation...
service/mlflow-service created

We tried to publish MLFLow at:http://<IP_ADDRESS>:30500
 ✔ Installation Done.

Since it's working, can we move the status of the k3d infra from In Development to Available?

I would say yes you may do it if you like so I'll mark you as owner of the plug-in :)

I would say yes you may do it if you like so I'll mark you as owner of the plug-in :)

Sure! I don't have much experience working with k3d; I'll make a PR to make it Available.

No worries I can fix it later in case :)!!!!


Feature Request: Add Alternative Checkboxes toggle in Style Settings

Feature Requested
This request comes as part of the initiative I've started for Obsidian October 2024. Additional information and progress on this project can be found here: https://github.com/damiankorcz/Alternative-Checkboxes-Reference-Set
The current goal is to make it easier for users to implement their own CSS Snippets with Alternative Checkboxes, regardless of the theme they use. At the moment, any theme that doesn't present an option to disable their Alternative Checkboxes implementation, requires the snippet to overwrite the existing theme's code. This can become complicated and hard to maintain as currently 44 themes implement Alternative Checkboxes. Ideally, if all themes have the option to disable their implementation, the snippets can be simpler, and work universally across all themes.
Relevant Screenshots
This Feature Request is refering to the following feature:

Light Theme
Dark Theme

Checklist
If this is something you are interested in implementing, it would require the following code to be added to your theme:
body.enable-alternative-checkboxes {

/* Encapsulate all code relevant to Altenative Checkboxes here */

}

Add a toggle in the Style Settings code:
-
    id: enable-alternative-checkboxes
    title: Enable Alternative Checkboxes
    description: Disable this if you are using your own implementation via a CSS Snippet.
    default: true
    type: class-toggle
-

Since your theme already implements the feature, the code above enables it by default, in order to not change the existing functionality for users.
When the theme implementation is disabled, all additional checkboxes should be styled the same as the default - [x] checked checkbox; removing any changes to color, icons, fonts, backgrounds, etc.
If you need any help implementing this, let me know! I can also look into making a Pull Request if you would prefer.

Thanks for your work, just implement it

Release in v0.8.21


Patch dune.2.7.1 for multicore OCaml

To get dune.2.7.1 working, I copied @dra27's patch for dune.2.7.0, and only updated two fields in the opam file: the tarball's URL, and its hash values.

Thank you @ckoparkar.


168 check idempotence on dappaddress

I think you're missing some other repositories

@fabiooshiro , it's about the app_contract, and this field exists only in the convenience_input table. Therefore, I created this just to generate the input in the convenience_table. I noticed that for other repositories (report and output), there are respective create functions using the idempotence approach.


Wallet - An error in console then navigated to enable payments page

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

issue found when executing PR https://github.com/Expensify/App/pull/25458
Action Performed:

Go to URL https://staging.new.expensify.com/
Login with any account
Open enable payments page http://staging.new.expensify.com/enable-payments

Expected Result:
No any error in console
Actual Result:
Error in console appears
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] Widows / Chrome
[ ] MacOS / Desktop

Version Number: 1.3.58-1
Reproducible in staging?: Yes
Reproducible in production?: Yes
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/295cf060-fe66-4c7e-b3d3-658bb12cfd06

Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal team
Slack conversation:
View all open jobs on GitHub

Hmm, I don't get the error that you're seeing:

Can we confirm that this is not just a local issue @lanitochka17?

I don't see any error with attached video, is this an issue?

Same — I don't see the error in the video, only the screenshot

@lanitochka17 bump on the comments above ^^^

Issue reproducible on Build 1.3.62-1
Console error displayed
Windows10/Chrome
https://github.com/Expensify/App/assets/78819774/c9b9ada8-0609-410f-810c-13248a34ad88

@lanitochka17 I think those errors are way before, it's issue with how browser and HTTP works. @CortneyOfstad We can ask in the slack weather to continue or not. I saw quite a few related to same issue.

Going to get some internal eyes on this as well 👍

@youssef-lr bump on this — thanks!

@youssef-lr bump on the above. Thanks!

I'm guessing this is coming from a library we use. I think we can make this external to look into it further.

Proposal
Please re-state the problem that we are trying to solve in this issue.
Error in console appears in enable payments page
What is the root cause of that problem?
Some content origins are not whitelisted using the Content-Security-Policy HTTP header.
What changes do you think we should make in order to solve the problem?
Add a whitelist for some external resources that we deem safe, e.g.:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://polyfill.io 'unsafe-inline' 'unsafe-eval';** ">

What alternative solutions did you explore? (Optional)
N/A

@ArekChr any thoughts on the proposal?

I could not reproduce the issue on macOS using Chrome, and I don't have access to a Windows machine for testing. @CortneyOfstad Could you please reassign me, as I won't be able to complete the review for this checklist?

I can be assigned (discussed with @ArekChr on slack) but to me, this happens on mac chrome as well.

@situchan This console error shows randomly?

Bump @ArekChr on @situchan's comment above

Issue not reproducible during KI retests. (First week)

Alright, @youssef-lr any thoughts on this? We can consistently seem to recreate this. Any ideas?

Bump @youssef-lr

Can't reproduce either, closing!


Replace tremolo with vibrato

The tremolo label text should be vibrato (see #24). This is only a visual change.

These knobs control the amount of frequency (pitch) modulation, known commonly as "vibrato", which is applied to the oscillators, as opposed to amplitude (loudness) modulation, which is known as "tremolo".


Plugin disables usage of DateTime picker on iOS

I'm submitting a ...  (check one with "x")
[ X] any problem or bug report
plugin version:  (check one with "x")
[ X] 2.0.0-beta2
cordova information:  (run $> cordova plugin list)
com.googlemaps.ios 2.3.0 "Google Maps SDK for iOS"
cordova-plugin-console 1.0.7 "Console"
cordova-plugin-datepicker 0.9.3 "DatePicker"
cordova-plugin-googlemaps 2.0.0-beta2-20170721-1617 "cordova-plugin-googlemaps"
cordova-plugin-whitelist 1.3.2 "Whitelist"
cordova-plugin-wkwebview-engine 1.1.3 "Cordova WKWebView Engine"

Current behavior:
Individually, both plugins seem to work fine. But when I use both on the same project, the date picker is not clickable. It will appear on the screen, but clicking on it does nothing.
Debugging through xCode shows that the event doesn't even get called, like there is some kind of layer above the date picker that disables clicking. No errors are shown both in xCode and JS console.
Any ideas on what might be causing this?
The date picker that I'm using is:
https://github.com/VitaliiBlagodir/cordova-plugin-datepicker

Expected behavior:
I would expect that these plugins can be used individually within a single project.
Steps to reproduce:
In order to reproduce this issue, I've copied the demo project and just added the DatePicker plugin.
https://github.com/missCorduroy/maps-picker.git
Related code, data or error log (please format your code or data):
No errors.

Sorry, but I don't support the compatibilities with other plugins, because it's too much work always, ant the datepicker is not HTML element.
But if you donate some amount to the project, I will check it. Otherwise please find another solution.

Ive found a fix for this issue - the problem is MyPluginLayer.m assumes that any non-map clicks are meant to the webview. But some plugins (like datepicker, listpicker, etc) add a subview on top of webview and they are ignored.
#1875


Fix error setMetadataServiceUri

Motivation
1、BK setMetadataServiceUri  will set a ArrayList, If a string with comma delimiter. eg zk1:2181,zk2:2181/test will get result ["zk1:2181", "zk2:2181/test"]
getMetadataServiceUri only return the first part in list zk1:2181.
2、If you set metadataServiceUri in bk conf with  semicolon, like  zk1:2181;zk2:2181/test, without replace  semicolon with comma.  metadataStore will be failed created.
Modifications
Replace   comma  with semicolon in ZK connection string when set setMetadataServiceUri.
Then replace semicolon with comma  when metadata store created.
Documentation
Check the box below or label this PR directly (if you have committer privilege).
Need to update docs?

[ ] doc-required
(If you need help on updating docs, create a doc issue)

[x] no-need-doc
(Please explain why)

[ ] doc
(If this PR contains doc changes)

/pulsarbot run-failure-checks

Mabye these is another problem if set MetadataServiceUri with a prefix metadata-store:
bkConf.setMetadataServiceUri("metadata-store:" + metadataStoreUrlNoIdentifer);

then execute BookKeeperAdmin.format
if (!localStore.exists(BookKeeperConstants.DEFAULT_ZK_LEDGERS_ROOT_PATH).get()
                && !BookKeeperAdmin.format(bkConf, false /* interactive */, false /* force */)) {
                throw new IOException("Failed to initialize BookKeeper metadata");
            }

which will get MetadataBookieDriver first
try (MetadataBookieDriver driver = MetadataDrivers.getBookieDriver(
            URI.create(conf.getMetadataServiceUri())
        ))

So the URI created here has a  scheme metadata-store, getting MetadataBookieDriver will throw an exception since bookie only has zk  and  etcd as scheme.

I think we should add some unit tests

+1

Mabye these is another problem if set MetadataServiceUri with a prefix metadata-store:
bkConf.setMetadataServiceUri("metadata-store:" + metadataStoreUrlNoIdentifer);

then execute BookKeeperAdmin.format
if (!localStore.exists(BookKeeperConstants.DEFAULT_ZK_LEDGERS_ROOT_PATH).get()
                && !BookKeeperAdmin.format(bkConf, false /* interactive */, false /* force */)) {
                throw new IOException("Failed to initialize BookKeeper metadata");
            }

which will get MetadataBookieDriver first
try (MetadataBookieDriver driver = MetadataDrivers.getBookieDriver(
            URI.create(conf.getMetadataServiceUri())
        ))

So the URI created here has a scheme metadata-store, then getting MetadataBookieDriver will throw an exception since bookie only has zk and etcd as scheme.

No, metadata-store had been registered.  @aloyszhang
public class PulsarMetadataBookieDriver extends AbstractMetadataDriver implements MetadataBookieDriver {

    // register myself
    static {
        MetadataDrivers.registerBookieDriver(METADATA_STORE_SCHEME, PulsarMetadataBookieDriver.class);
    }

    @Override
    public MetadataBookieDriver initialize(ServerConfiguration serverConfiguration,
                                           RegistrationManager.RegistrationListener registrationListener,
                                           StatsLogger statsLogger) throws MetadataException {
        super.initialize(serverConfiguration);
        return this;
    }

    @Override
    public RegistrationManager getRegistrationManager() {
        return registrationManager;
    }

    @Override
    public LedgerManagerFactory getLedgerManagerFactory() throws MetadataException {
        return ledgerManagerFactory;
    }

    @Override
    public LayoutManager getLayoutManager() {
        return layoutManager;
    }
}

Unit test added. @codelipenghui  @315157973  @eolivelli  @aloyszhang

Ohh, I see, pulsar register the metadata-store scheme from broker side

/pulsarbot run-failure-checks

/pulsarbot run-failure-checks

@eolivelli  If we want to support set comm delimiter metadataServiceUri configuration  in bookkeeper.conf, We should also setDelimiterParsingDisabled =true in this places.
Also, Bookkeeper also should make change on this  as issue https://github.com/apache/bookkeeper/issues/2900 said.

@gaozhangmin your answer is not clear to me....
why aren't we adding setDelimiterParsingDisabled=true everywhere ?

@gaozhangmin your answer is not clear to me.... why aren't we adding setDelimiterParsingDisabled=true everywhere ?

@eolivelli  I agree  to set setDelimiterParsingDisabled to support comma delimiter.  I suggest open a new pr. This pr is aimed to solve failed initialized cluster metadata.

This pr is aimed to solve failed initialized cluster metadata.

This makes sense to me.
but if we merge this and we don't do the other changes in any case users won't be able to run Pulsar with this configuration.
So this patch by itself is useless.

This pr is aimed to solve failed initialized cluster metadata.

This makes sense to me. but if we merge this and we don't do the other changes in any case users won't be able to run Pulsar with this configuration. So this patch by itself is useless.

Without this change,
1、neither  initialize-cluster-metadata --metadata-store zk:zk1:2181,zk2:2181/test nor initialize-cluster-metadata -metadata-store zk:zk1:2181;zk2:2181/test supported.
2、 neither set metadataServiceUri="metadata-store:zk:zk1:2181,zk2:2181/test" nor metadataServiceUri="metadata-store:zk:zk1:2181;zk2:2181/test"  in bookkeeper.conf supported.
That's what problem this pr tries to solve.
other changes  try to  support  setting metadataServiceUri="metadata-store:zk:zk1:2181,zk2:2181/test" in bookkeeper.conf.  @eolivelli


Add support of PC_ProjectivePinholeInverse

I an considering adding another function suffixed with Inverse. So I'd rather keep PC_ProjectivePinholeInverse for now.


Add restorePreviousWindowsOnStart setting

Supersedes and closes #9042.
This PR adds a couple of small changes to the above PR, so that:

:racehorse: Atom opens slightly faster when restorePreviousWindowsOnStart is false;
:white_check_mark: Specs ensure that such config parameter gets checked on start, rather than on exit;

Many thanks to @jordanbtucker for providing the original implementation and moving this forward! :sparkles:
/cc: @atom/core

@as-cii Thanks for implementing your own suggestions and merging! You can close #6605 with this, too.


Remove @Delimiter from the documentation

Remove @Delimiter from the documentation. Support was dropped in cucumber-jvm:3.0.0

We're not doing this for anything else though? Type registry was introduced in 3.0.0.

Imho we should, if functionality was specifically introduced in a particular version. This was discussed but not resolved afaik.

Related to #175 / #172

Also @mpkorstanje - is it no longer possible to pass a list using comma's/delimiters as of v3?


flutter devicelab mac-11 shows no connected device

2020-10-02T17:09:51.300081: "/Users/flutter/.cocoon/flutter/bin/flutter" exit code: 0
2020-10-02T17:09:51.313776: Task failed: DeviceException: No connected iOS devices found.2020-10-02T17:09:51.314048:

Stack trace:
2020-10-02T17:09:51.330516: package:flutter_devicelab/framework/adb.dart 675:7         IosDeviceDiscovery.discoverDevices
===== asynchronous gap ===========================
dart:async                                                 _asyncErrorWrapperHelper
package:flutter_devicelab/framework/framework.dart         _TaskRunner._performTask.<fn>
package:stack_trace                                        Chain.capture
package:flutter_devicelab/framework/framework.dart 169:11  _TaskRunner._performTask
package:flutter_devicelab/framework/framework.dart 101:41  _TaskRunner.run

2020-10-02T17:09:51.330836:

Seems like it was resolved


Submission email

Send email to submitter upon resource submission.

Coverage increased (+0.004%) to 91.395% when pulling 43f38be51b97970ec396b81dd4df06f6b8305420 on submission-email into 37d4889786728cd692192f9aa1a7bc6174b0fc5f on master.


Adds glob support for filepath in tools command

[ ] I added CHANGELOG entry for this change.
[ ] Change is not relevant to the end user.

Changes
Adds glob check for filepaths provided via cli. Checks for each matching file path and throws Matching file not found error if no file matches the pattern.

Verification

Also, I guess this change should not affect e2e :thinking:, not sure why its failing :\


Xpath for gmail body content div

Hi,
This is not an issue. I was wondering if there is way or get Xpath for the gmail content div.
You have prepared a very comprehensive documentation for the API's. Since you provide html content of the email content body. I was thinking about also getting the XPATH for that div. I was looking at the source code to add this functionality but i thought discussing with you first will really help me move in the right direction.
Thanks
Ajay

This is not an issue. I was wondering if there is way or get Xpath for the gmail content div.

I'm sure there is, but from gmail.js alone.

Since you provide html content of the email content body. I was thinking about also getting the XPATH for that div.

I think this is a pretty generic kind of problem, and I don't see any very pressing use-cases for reverse-resolving the Xpath query for a given DOM node within gmail.js.
That said, we do have access to the exact HTML element which contains the email, and from this element you should be able to get an Xpath-query using any kind of generic JS-approach you see fit.
One example of such a generic solution to your problem can be found here, in the form of a jQuery-plugin: https://gist.github.com/MartijnR/5118908
Or here for a smaller solition which doesn't involve jQuery at all: https://gist.github.com/iimos/e9e96f036a3c174d0bf4
All you need is the body element, which you can get this way:
var email_id = gmail.get.email_id();
var email_dom = new gmail.dom.email(email_id);
var body_node = email_dom.dom("body");
// get your xpath here.

Hope that helps.

thanks


Add codeowners file

Code owners
Add code owners file
Why
To define individuals or teams that are responsible for code in a repository.
What
Add CODEOWNERS file to the root of the codebase
Links to relevant material
See: About code owners

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 93.11%. Comparing base (fa3f064) to head (7c90d1c).

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1183      +/-   ##
==========================================
- Coverage   93.12%   93.11%   -0.01%
==========================================
  Files         582      582
  Lines       44041    44041
  Branches     3181     3181
==========================================
- Hits        41011    41008       -3
- Misses       2413     2416       +3
  Partials      617      617

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


Extract table cell value from cell renderer rather than model (Fixes #32)

Suggested fix incl. test for https://github.com/renatoathaydes/Automaton/issues/32
It reads the cell's value from the renderer component, if it is a JLabel (as is the case in the DefaultTableCellRenderer). If the renderer component isn't a JLabel it returns the model value itself as previously.
This may break existing tests if they rely on the difference between model value and rendered value. But I can't think of a reason why you'd want that other than to work around the issue itself.

Cool, I'll look into those!

Very nice PR, thanks for the effort! Please have a look at my comments before I can merge this.
I have run the Swing tests and everything seems to be passing! Why do you think this may break some test?

Thanks! I meant tests that another developer has written for their software using Automaton, i.e. it might be a breaking change. People might be testing against their model values rather than the values that are rendered. Just something to keep in mind.. but maybe differences between value und rendered text aren't very common?

That's a good point... but Automaton is meant to be used by testers who need to test what they can actually see, not what the underlying Table model or whatever looks like... so this change is a big improvement in any case.

Done!
I just noticed that in listItem2FakeComponent there's also a listComp instanceof JLabel check. Maybe we should also change it to callMethodIfExists(rendererComp, 'getText')? I can chip that in if you want, although it doesn't really belong in this PR, I'll open another :)

Great! Feel free to change that other call. Will merge from home tonight (I hope).

Merged master, everything is fine!
I created a PR for the list change: https://github.com/renatoathaydes/Automaton/pull/34


Some JTokenTypes are not Differentiable

JTokenTypes like Guid and Uri is not distinguishable from String when serialized, as such they should be removed.
The problem is you will get differing results from deployment and testing if you don't realize that when deserialized it changes to the more general type even though it was more specific.
Steps to reproduce
var payload = new JObject();
payload["sub"] = Guid.Empty;
var serializedPayload = payload.ToString();
var deserializedPayload = JsonConvert.DeserializeObject<JObject>(serializedPayload);

var result1 = payload["sub"].Type == JTokenType.Guid;
var result2 = deserializedPayload["sub"].Type == JTokenType.Guid;

Assert.IsTrue(result1 == result2);

That's because there is no way for Json.NET to know that it should be a GUID. It's just a string when parsing.
Cast instead of using Value(), e.g. (Guid)obj["id"]

Reference: Guid becomes string in JObject.ToString + JObject.Parse #1060

JTokenTypes like Guid and Uri is not distinguishable from String when serialized, as such they should be removed.

So is date. So it decimal and double. But if that information isn't kept then errors, especially to do with floating point numbers, creep in when values are cast back to their original type.


Draw container IDs in /containers from both container and app metrics

The /containers endpoint currently works by finding all container metrics in memory and returning the set of their container IDs.
Unfortunately, it's possible for a container to exist which does not have associated container metrics (see https://issues.apache.org/jira/browse/MESOS-7918 for context). Since the ID for this container is never given in /containers, it cannot be discovered via the API.
This PR updates the logic in the /containers handler. It now finds all container and app metrics in memory and returns the set of their container IDs.

All feedback responded to/fixed up, as far as I know.


make build fails with error

make build fails with:
% make build
docker build -f Dockerfile-Bakeware -t eigr/massa-proxy:0.1.36 .
[+] Building 1.1s (14/21)
 => [internal] load build definition from Dockerfile-Bakeware                                                                                0.0s
 => => transferring dockerfile: 1.03kB                                                                                0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                0.0s
 => [internal] load metadata for docker.io/library/alpine:3                                                                                0.0s
 => [internal] load metadata for docker.io/library/elixir:1.12-alpine                                                                                0.6s
 => [builder 1/8] FROM docker.io/library/elixir:1.12-alpine@sha256:557c1597322d0b10f255d3c208b24e51755ce64b9faee675940ca0f06ffe093c                                                                                0.0s
 => [internal] load build context                                                                                0.2s
 => => transferring context: 2.86MB                                                                                0.1s
 => [stage-1 1/8] FROM docker.io/library/alpine:3                                                                                0.0s
 => CACHED [stage-1 2/8] RUN apk add --no-cache --update openssl zstd                                                                                0.0s
 => CACHED [stage-1 3/8] WORKDIR /home/app                                                                                0.0s
 => CACHED [builder 2/8] RUN mkdir -p /app/massa_proxy                                                                                0.0s
 => CACHED [builder 3/8] WORKDIR /app/massa_proxy                                                                                0.0s
 => CACHED [builder 4/8] RUN apk add --no-cache --update git build-base zstd                                                                                0.0s
 => [builder 5/8] COPY . /app/massa_proxy                                                                                0.0s
 => ERROR [builder 6/8] RUN rm -rf /app/apps/massa_proxy/mix.exs     && mv /app/apps/massa_proxy/mix-bakeware.exs           /app/apps/massa_proxy/mix.exs                                                                          0.2s
------
 > [builder 6/8] RUN rm -rf /app/apps/massa_proxy/mix.exs     && mv /app/apps/massa_proxy/mix-bakeware.exs           /app/apps/massa_proxy/mix.exs:
#14 0.186 mv: can't rename '/app/apps/massa_proxy/mix-bakeware.exs': No such file or directory
------
executor failed running [/bin/sh -c rm -rf /app/apps/massa_proxy/mix.exs     && mv /app/apps/massa_proxy/mix-bakeware.exs           /app/apps/massa_proxy/mix.exs]: exit code: 1
make: *** [build] Error 1

This file was removed after some refactors.....
We forgot to fix the make.
This week I'll take a look at it but apparently it's pretty simple to solve

@marcellanz please try again

@sleipnir It works, thanks!


Cannot Install Go Programs that use Replace Directives

Go version
go version go1.21.0 windows/amd64
What operating system and processor architecture are you using (go env)?
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\krixa\AppData\Local\go-build
set GOENV=C:\Users\krixa\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\krixa\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\krixa\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.21.0
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set GOMOD=C:\Users\krixa\Dev\misfin-server\go.mod
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:\Users\krixa\AppData\Local\Temp\go-build301712887=/tmp/go-build -gno-record-gcc-switches

What did you do?
go install gitlab.com/clseibold/misfinmail/v2@4eb9fba57e4d26d79e0ef6460b2e85084269087b
What did you expect to see?
It should install the damn program, using the well-defined replace directive in the go mod file. It makes absolutely no sense to assume that replace directives are for developer debug runs only.
What did you see instead?
A limitation that is the result of terrible golang developers that keep making terrible decisions, even though everyone told them how terrible it was in this very issue: https://github.com/golang/go/issues/44840

working as intended


translated some Chinese curriculum files

Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the master branch of freeCodeCamp.
[x] All the files I changed are in the same world language, for example: only English changes, or only Chinese changes, etc.

Do we have a process for keeping track of what files have been fixed or looked over? Should we just check the box next to each lesson on the issue after this gets merged? I think some files don't need any changes - we can probably just remove those from the issues when they are found - just trying to get on the same page for these.

Do we have a process for keeping track of what files have been fixed or looked over? Should we just check the box next to each lesson on the issue after this gets merged? I think some files don't need any changes - we can probably just remove those from the issues when they are found - just trying to get on the same page for these.

Just saw this comment. If I understand right, I've checked the first four boxes of issues #40463. For the last one (task #5), we'll fix them on Crowdin later as Randy and I agreed before. Not sure if we can merge this PR now. All the content is fine. Do you want to take a look? @RandellDawson

Do we have a process for keeping track of what files have been fixed or looked over? Should we just check the box next to each lesson on the issue after this gets merged? I think some files don't need any changes - we can probably just remove those from the issues when they are found - just trying to get on the same page for these.

Just saw this comment. If I understand right, I've checked the first four boxes of issues #40463. For the last one (task #5), we'll fix them on Crowdin later as Randy and I agreed before. Not sure if we can merge this PR now. All the content is fine. Do you want to take a look? @RandellDawson

Just saw this comment. If I understand right, I've checked the first four boxes of issues #40463. For the last one (task #5), we'll fix them on Crowdin later as Randy and I agreed before. Not sure if we can merge this PR now. All the content is fine. Do you want to take a look? @RandellDawson

@miyaliu666 Since we do not have a finalized date for Crowdin integration, it would probably be better to go ahead and translate as many of these as possible.  We will upload all these changes the Chinese translation team as been working on (via GitHub PRs) into Crowdin's translation memory before opening up the translation of challenges on Crowdin.

Just saw this comment. If I understand right, I've checked the first four boxes of issues #40463. For the last one (task #5), we'll fix them on Crowdin later as Randy and I agreed before. Not sure if we can merge this PR now. All the content is fine. Do you want to take a look? @RandellDawson

@miyaliu666 Since we do not have a finalized date for Crowdin integration, it would probably be better to go ahead and translate as many of these as possible.  We will upload all these changes the Chinese translation team as been working on (via GitHub PRs) into Crowdin's translation memory before opening up the translation of challenges on Crowdin.

I am merging this PR, so we can push the changes up to Crowdin.

I am merging this PR, so we can push the changes up to Crowdin.

@miyaliu666 Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 🎉

@miyaliu666 Thank you for your contribution to the page! 👍
We're happy to accept these changes, and look forward to future contributions. 🎉


NPM running issue facing

Describe the bug
After Installation when I command npm start then getting some error. I can not understand why showing this error.
I installed by this command yarn add @vuepic/vue-datepicker
I need some assistance on how to solve it. Can anyone help me?
my node: v18.0.0
npm version: 8.6.0
Screenshots

This error comes from the vueuse/shared library, it is possible that it was in a lock file but removed from package.json, and when you added a new package, the lock file was regenerated. Try running yarn add @vueuse/shared or reinstall vueuse


Array parsing error and struggle to use read

I am struggeling with the output from the getProperties and read methods from the class Client. The method getStatus works and affirms an established connection to the opcxmlda server. Another tool can also access the server properly.

getProperties: I am able to extract and display the value of an item from the opc server as long as the item contains a single value such as an int. If the value of the server-item is an array, in my case an arrayofdoubles the value will not be displayed and the response is empty. The raw response contains the wanted information but it seems that it cannot be parsed and displayed.
read: With read on the other hand I can't seem to get any information from the server whatshowever and the payload shows: "Request Options pointer is NULL", even if I know there is a value that can be requested (e.g. can display it with getProperties)

Code for 1.:
from pyopcxmlda import Client
from pyopcxmlda.tag import Tag

__HOST = "<IP_ADDRESS>" //exemplary
__PORT = 1234      //exemplary
__ITEMS = [
    Tag(itemName="Loc/Wec/Plant1/P")
]
with Client(host=__HOST, port=__PORT) as plc:
    response = plc.getProperties(itemList=__ITEMS)
    print(response)

response = {list: 1}  [,Loc/Wec/Plant1/P,xsd:int,'1294',2023-11-02T09:48:23.707-01:00,readable,2310,good,noEnum,]
As we can see: I can get the value 1294.
1.1 If I want to read an array value (change itemName="Loc/Wec/Plant1/Log/Wecstd/Month/Val-1")
If I look into the raw response (bytes):
b'<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://opcfoundation.org/webservices/XMLDA/1.0/" xmlns:ns2="Service"><SOAP-ENV:Header></SOAP-ENV:Header><SOAP-ENV:Body id="_0"><GetPropertiesResponse xmlns="http://opcfoundation.org/webservices/XMLDA/1.0/"><GetPropertiesResult xsi:type="ns1:ReplyBase" ServerState="running" RevisedLocaleID="en-us" ReplyTime="2023-11-02T12:55:21.546+00:00" RcvTime="2023-11-02T12:55:21.546+00:00"></GetPropertiesResult><PropertyLists xsi:type="ns1:PropertyReplyList" ItemName="Loc/Wec/Plant1/Log/Wecstd/Month/Val-1" ItemPath=""><Properties xsi:type="ns1:ItemProperty" Description="Item access rights" Name="ns1:accessRights" ItemName="Val-1" ItemPath="Loc/Wec/Plant1/Log/Wecstd/Month/"><Value xsi:type="xsd:string">readable</Value></Properties><Properties xsi:type="ns1:ItemProperty" Description="Item canonical data type" Name="ns1:dataType" ItemName="Val-1" ItemPath="Loc/Wec/Plant1/Log/Wecstd/Month/"><Value xsi:type="xsd:QName">ArrayOfDouble</Value></Properties><Properties xsi:type="ns1:ItemProperty" Description="Item EU type" Name="ns1:euType" ItemName="Val-1" ItemPath="Loc/Wec/Plant1/Log/Wecstd/Month/"><Value xsi:type="xsd:string">noEnum</Value></Properties><Properties xsi:type="ns1:ItemProperty" Description="Item quality" Name="ns1:quality" ItemName="Val-1" ItemPath="Loc/Wec/Plant1/Log/Wecstd/Month/"><Value xsi:type="ns1:OPCQuality" VendorField="0" LimitField="none" QualityField="good"></Value></Properties><Properties xsi:type="ns1:ItemProperty" Description="Fastest rate (in milliseconds) at which the server could obtain data from the underlying data source" Name="ns1:scanRate" ItemName="Val-1" ItemPath="Loc/Wec/Plant1/Log/Wecstd/Month/"><Value xsi:type="xsd:float">0</Value></Properties><Properties xsi:type="ns1:ItemProperty" Description="Item timestamp" Name="ns1:timestamp" ItemName="Val-1" ItemPath="Loc/Wec/Plant1/Log/Wecstd/Month/"><Value xsi:type="xsd:dateTime">2023-10-30T22:00:00.000-01:00</Value></Properties><Properties xsi:type="ns1:ItemProperty" Description="Item value" Name="ns1:value" ItemName="Val-1" ItemPath="Loc/Wec/Plant1/Log/Wecstd/Month/"><Value xsi:type="ns1:ArrayOfDouble"><double>44165</double><double>7.9000000000000004</double><double>22.199999999999999</double><double>14.17</double><double>20.079999999999998</double><double>972</double><double>2448</double><double>720</double><double>715908</double><double>1</double><double>43</double><double>322</double><double>-542</double><double>971</double><double>971</double><double>970</double><double>971</double></Value></Properties></PropertyLists></GetPropertiesResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>'
you can see the values with correct types (e.g. 44165) but after parsing the response is empty: response = {list: 0} [].

The problem I have with read is that if I use the same code but with read instead of getProperties the response is empty regardless what value is in the item (int or array) and the raw payload (bytes) shows "Request Options pointer is NULL"

Code for 2.:
from pyopcxmlda import Client
from pyopcxmlda.tag import Tag

__HOST = "<IP_ADDRESS>" //exemplary
__PORT = 1234       //exemplary
__ITEMS = [
    Tag(itemName="Loc/Wec/Plant1/P")
]
with Client(host=__HOST, port=__PORT) as plc:
    response = plc.read(itemList=__ITEMS)
    print(response)

response = {list: 0} []
raw payload (str):
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://opcfoundation.org/webservices/XMLDA/1.0/"><SOAP-ENV:Header></SOAP-ENV:Header><SOAP-ENV:Body><ns0:Read><ns0:ItemList><ns0:Items ItemPath="" ItemName="Loc/Wec/Plant1/P" ClientItemHandle="Loc/Wec/Plant1/P" ></ns0:Items></ns0:ItemList></ns0:Read></SOAP-ENV:Body></SOAP-ENV:Envelope>
raw response (bytes):
b'<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://opcfoundation.org/webservices/XMLDA/1.0/" xmlns:ns2="Service"><SOAP-ENV:Header></SOAP-ENV:Header><SOAP-ENV:Body id="_0"><SOAP-ENV:Fault><faultcode>LiXMO Read:</faultcode><faultstring>The Request Options pointer is NULL</faultstring></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>'
For me it seems like a problem with correctly creating the payload and parsing the response. Can you help me to figure it out?
Thanks!

I found that the values i want to get from the opc server get picked up from the p object (line 324 in pyopcxmlda/client.py) captures all values one by one as it should but properties cant get the values. It seems that the elif function (line 337) uses value=value.text and this doesnt go deep enough into the xml so it can't see what is in the array and therefore ignores it.

@dernate,
Sorry for late response.  I wrote this, but forgot to hit the Comment button.... anyway...  If you think that you have figured out a solution, please feel free to PR.
Yes, I can take a look at this.  Could you do me a favor and enable logging and send me the output?  If it contains "sensitive" information that you can't freely share to a wide audience, maybe send directly to my email instead.
Thanks,

I can send you the output.log that I got from enabling logging in your Client.py. In output(getProperties).log and output(read).log: the first entry is about the array and the second one is about the single value (e.g. int).
output(getProperties).log
output(read).log
Hope this helps, if you need any further information you can message me.

Depending on how the server is implemented, it could be finicky.  Looking at the provided logs, it could be because of empty ItemPath, incorrect namespace, etc.  Could you try a quick test and specify these parameters for read?
ItemPath as Loc/Wec/Plant1/Log/Wecstd/Month/
ItemName as Val-1

So for read I tried changing the itemName to be the item e.g. Val-2 that contains the data and the itemPath to the path that contains the item: Loc/Wec/Plant1/Log/Wecstd/Month but it doesn't seem to make a difference.
output(getProperties).log
output(read).log

Could you send a message to my email?  Let's figure this out offline since we might need to do a live call for troubleshooting.  Once we resolve, I'll update code base and resolve issue.

Hey, sorry but I don't see an email on your profile. Sorry for mixing up two problems: First the "GetProperties" challenges and then the "Read" errors. I'm trying to solve it myself, I'll keep you updated.

I fixed the problems with the read method and created a pull request.


LiveServer not rendering mp4 videos in Safari

Video animations in .mp4 do not display when serving a website on localhost in the Safari (tested in macOS 10.15.7, Safari 15.6.1). Videos are embedded as
~~~
<center>
  <video width="80%" autoplay loop controls src="/assets/porous_convection_2D.mp4"/>
</center>
~~~

All works fine for the website version deployed on GH pages, and locally on other browsers (tested also with Chrome).
It is seemingly a Safari only issue. From web search, it may be that there is an issue such as https://stackoverflow.com/a/36299252.
Webpage of interest: https://github.com/eth-vaw-glaciology/course-101-0250-00/blob/main/website/index.md

@fonsp or @quinnj could I maybe get your input here please? I'm not sure what's the best approach, whether it's to return a 206 or a custom header when serving the file.
Here's a demo repo, serving with LiveServer and opening with Safari will fail, with FF, Chrome and co, will work fine. SO seems to mention returning a 206 with a range but I'm not sure about any of this.
Thanks in advance

One difference between Safari and the rest is that Safari will only render a video if the web server supports range requests: an HTTP GET request with a Range header (see MDN).
So to support mp4 in safari, LiveServer should implement the range request protocol, which means checking for the Range request header, responding with partial data, adding the Content-Length and Content-Range headers to the response and the 206 status code. I think it's fine to skip multiple range support and conditional range support.
Here is an example of the network tab in safari when watching a video:


Disabling Flannel results in connectivity problems (pods, nodes, deployments)

Hello Vito, thank you for you excelent work.
I am using as a playground your script and it works like a charm. I would like to disable flannel, as per the config line
disable_flannel: true # set to true if you want to install a different CNI
but i did not find any documentation on this, so i have tried 3/4 times and results are alwasy the same: the script finishes to create the workers but from lens i can see that pods (calico, dns, etc) fails to start and to comunicate with each others
i have tried many combos (different datacenter, different types of VM) but no luck.

i am using Ubuntu 22.04 as default image
i am using stable k3s version v1.28.5+k3s1

my goal is to build the cluster succesfully then install Cilium as CNI.
thank you

hi @vitobotta at the end it was correct: just create the cluster with "disable_flannel" set to true and even if there are many failed pods or exception, just hang tight. I have installed Calico CNI and after installation pods restarted and connectivity was back to normal.
So ye, who wants to swap flannel for other CNI, just don't look at the connectivity issues as soon cluster comes up, but just procede with CNI installation

Hi, glad you got it sorted. Sorry for the late reply but I am quite busy with work at the moment.


update capstone dependency to 0.12.0

this is only used for benchmarking, so the cargo vet is just an exemption which I updated to the latest version.
Closes https://github.com/bytecodealliance/wasmtime/issues/8009

@pchickey this may have gotten lost in the email but looks like CI is failing here due to some bindings needing an update

Thanks this fell off my notifs but it was trivial to fix.


rework redoer

currently perf uses a redo producer and loader.  Update the perf CFT to use a redoer with a redo subcommand

PR merged