Improve Ui of Login And Sign up Form

Hii @Anuj3553 in your website we can improve the ui of from making the user experience even better and adding smooth animation and transition on buttons.
Screenshot

Hii @Anuj3553 Could you please assign this task to me. i wanted to work on this issue. : )

Thank you for your suggestion, @iamsohelx! Improving the UI and adding smooth animations and transitions sounds like a great idea to enhance the user experience. I have assigned this task to you. Looking forward to your updates!

@Anuj3553 Thank you brother.
it it good or should i change something?

Can you design like this @iamsohelx ?

@Anuj3553 yeah sure

I will provide code of designs if you needed ensure that login and signup is working.

Ohh sure brother please give me code @Anuj3553

Login Page ->
import React from 'react';
const Login = () => {
return (

{/* Left section (form) /}

LOGIN
{/ Login heading underline /}

{/ Username */}

                            <input type="password" class="peer py-3 pe-0 ps-8 block w-full bg-transparent border-t-transparent border-b-2 border-x-transparent border-b-gray-200 text-sm focus:border-t-transparent focus:border-x-transparent focus:border-b-blue-500 focus:ring-0 disabled:opacity-50 disabled:pointer-events-none dark:border-b-neutral-700 dark:text-neutral-400 dark:placeholder-neutral-500 dark:focus:ring-neutral-600 dark:focus:border-b-neutral-600" placeholder="PASSWORD" />

                                <svg class="shrink-0 size-4 text-gray-500 dark:text-neutral-500" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                                    <path d="M2 18v3c0 .6.4 1 1 1h4v-3h3v-3h2l1.4-1.4a6.5 6.5 0 1 0-4-4Z"></path>
                                    <circle cx="16.5" cy="7.5" r=".5"></circle>
                                </svg>

                    {/* Links and buttons */}

                        Forgot Password
                        Create Account

                    {/* Login Button */}

                        <button className="w-full bg-primarybtn text-white py-2 px-4 rounded-full hover:bg-primary transition duration-300">
                            LOGIN
                        </button>

                    {/* Sign-up text */}

                        Don't have an account?{' '}

                            Sign Up

                </form>

            {/* Right section (welcome text) */}

WELCOME BACK !

                        Lorem ipsum is simply dummy text of the printing and typesetting industry. Lorem ipsum has been the
                        industry's standard dummy.

);

};
export default Login;
Singup Page ->
import React from "react";
const Signup = () => {
return (

{/* Left Section */}

WELCOME BACK !

Lorem ipsum is simply dummy text of the printing and typesetting
industry. Lorem ipsum has been the industry's standard dummy.

            {/* Right Section (Form) */}

SIGN UP

                {/* Signup heading underline */}

                <form className="space-y-6">
                    {/* Full Name */}

                            <input
                                id="name"
                                type="text"
                                placeholder="FULL NAME"
                                className="peer py-3 pe-0 ps-8 block w-full bg-transparent border-t-transparent border-b-2 border-x-transparent border-b-gray-200 text-sm focus:border-t-transparent focus:border-x-transparent focus:border-b-blue-500 focus:ring-0 disabled:opacity-50 disabled:pointer-events-none dark:border-b-neutral-700 dark:text-neutral-400 dark:placeholder-neutral-500 dark:focus:ring-neutral-600 dark:focus:border-b-neutral-600"
                            />

                                <svg
                                    className="shrink-0 size-4 text-gray-500 dark:text-neutral-500"
                                    xmlns="http://www.w3.org/2000/svg"
                                    width="24"
                                    height="24"
                                    viewBox="0 0 24 24"
                                    fill="none"
                                    stroke="currentColor"
                                    strokeWidth="2"
                                    strokeLinecap="round"
                                    strokeLinejoin="round"
                                >
                                    <path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"></path>
                                    <circle cx="12" cy="7" r="4"></circle>
                                </svg>

                        {/* Email */}

                            <input
                                id="email"
                                type="email"
                                placeholder="EMAIL"
                                className="peer py-3 pe-0 ps-8 block w-full bg-transparent border-t-transparent border-b-2 border-x-transparent border-b-gray-200 text-sm focus:border-t-transparent focus:border-x-transparent focus:border-b-blue-500 focus:ring-0 disabled:opacity-50 disabled:pointer-events-none dark:border-b-neutral-700 dark:text-neutral-400 dark:placeholder-neutral-500 dark:focus:ring-neutral-600 dark:focus:border-b-neutral-600"
                            />

                                <svg
                                    className="shrink-0 size-4 text-gray-500 dark:text-neutral-500"
                                    xmlns="http://www.w3.org/2000/svg"
                                    width="24"
                                    height="24"
                                    viewBox="0 0 24 24"
                                    fill="none"
                                    stroke="currentColor"
                                    strokeWidth="2"
                                    strokeLinecap="round"
                                    strokeLinejoin="round"
                                >
                                    <path d="M16 12V8a4 4 0 0 0-8 0v4H6a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2h-2z"></path>
                                </svg>

                        {/* Phone */}

                            <input
                                id="phone"
                                type="tel"
                                placeholder="PHONE"
                                className="peer py-3 pe-0 ps-8 block w-full bg-transparent border-t-transparent border-b-2 border-x-transparent border-b-gray-200 text-sm focus:border-t-transparent focus:border-x-transparent focus:border-b-blue-500 focus:ring-0 disabled:opacity-50 disabled:pointer-events-none dark:border-b-neutral-700 dark:text-neutral-400 dark:placeholder-neutral-500 dark:focus:ring-neutral-600 dark:focus:border-b-neutral-600"
                            />

                                <svg
                                    className="shrink-0 size-4 text-gray-500 dark:text-neutral-500"
                                    xmlns="http://www.w3.org/2000/svg"
                                    width="24"
                                    height="24"
                                    viewBox="0 0 24 24"
                                    fill="none"
                                    stroke="currentColor"
                                    strokeWidth="2"
                                    strokeLinecap="round"
                                    strokeLinejoin="round"
                                >
                                    <path d="M22 12H2"></path>
                                    <polyline points="16 6 22 12 16 18"></polyline>
                                </svg>

                        {/* Password */}

                            <input
                                id="password"
                                type="password"
                                placeholder="PASSWORD"
                                className="peer py-3 pe-0 ps-8 block w-full bg-transparent border-t-transparent border-b-2 border-x-transparent border-b-gray-200 text-sm focus:border-t-transparent focus:border-x-transparent focus:border-b-blue-500 focus:ring-0 disabled:opacity-50 disabled:pointer-events-none dark:border-b-neutral-700 dark:text-neutral-400 dark:placeholder-neutral-500 dark:focus:ring-neutral-600 dark:focus:border-b-neutral-600"
                            />

                                <svg
                                    className="shrink-0 size-4 text-gray-500 dark:text-neutral-500"
                                    xmlns="http://www.w3.org/2000/svg"
                                    width="24"
                                    height="24"
                                    viewBox="0 0 24 24"
                                    fill="none"
                                    stroke="currentColor"
                                    strokeWidth="2"
                                    strokeLinecap="round"
                                    strokeLinejoin="round"
                                >
                                    <path d="M6 12V8a6 6 0 0 1 12 0v4"></path>
                                    <rect x="6" y="12" width="12" height="8" rx="2"></rect>
                                </svg>

                        {/* Confirm Password */}

                            <input
                                id="confirm-password"
                                type="password"
                                placeholder="CONFIRM PASSWORD"
                                className="peer py-3 pe-0 ps-8 block w-full bg-transparent border-t-transparent border-b-2 border-x-transparent border-b-gray-200 text-sm focus:border-t-transparent focus:border-x-transparent focus:border-b-blue-500 focus:ring-0 disabled:opacity-50 disabled:pointer-events-none dark:border-b-neutral-700 dark:text-neutral-400 dark:placeholder-neutral-500 dark:focus:ring-neutral-600 dark:focus:border-b-neutral-600"
                            />

                                <svg
                                    className="shrink-0 size-4 text-gray-500 dark:text-neutral-500"
                                    xmlns="http://www.w3.org/2000/svg"
                                    width="24"
                                    height="24"
                                    viewBox="0 0 24 24"
                                    fill="none"
                                    stroke="currentColor"
                                    strokeWidth="2"
                                    strokeLinecap="round"
                                    strokeLinejoin="round"
                                >
                                    <path d="M12 22v-2a4 4 0 0 1 4-4h1a4 4 0 0 1 4 4v2"></path>
                                    <circle cx="12" cy="7" r="4"></circle>
                                </svg>

                    {/* Submit Button */}

                        <button
                            type="submit"
                            className="w-full bg-primarybtn hover:bg-primary text-white py-3 px-4 rounded-full transition duration-300"
                        >
                            SUBMIT
                        </button>

                    {/* Login Prompt */}

                        Already have an account?{" "}

                            Login

                </form>

);

};
export default Signup;

@Anuj3553 Thank you

@Anuj3553 Yeah sure brother, could you please give this level 2

@Anuj3553 is it good or should i add something?

Can you change color - blue as our website color pallate and under welcome text please give more text as well as give more width...please provide the video of your work.

@Anuj3553 Yeah sure brother, could you please give this level 2

No i can provide only label - level1 for this work .

Can you change color - blue as our website color pallate and under welcome text please give more text as well as give more width...please provide the video of your work.

Yeah sure

@Anuj3553 Now brother?
Video
Brother I can not send you the video here because, it only can send files less than 10 mb, give me your WhatsApp number I will send then

@Anuj3553 Now brother?
Video
Brother I can not send you the video here because, it only can send files less than 10 mb, give me your WhatsApp number I will send then

8081718102

@Anuj3553 Now brother?
Video
Brother I can not send you the video here because, it only can send files less than 10 mb, give me your WhatsApp number I will send then

8081718102

Done

Well done, @iamsohelx, on completing the issue! 🎉
Your efforts are truly valued. Keep up the great work, and continue contributing your talents!

Hyy @iamsohelx, Can you do star mark this repo?

@Anuj3553 Yeah sure brother

Hyy @iamsohelx, Can you do star mark this repo?

Done ✅


refactor(util): simplify processPotential and move to private helper

@bryanrsmith  Looks good to me. Go ahead and merge.


docs(examples): add descriptions to examples #149

Alaska Airlines Pull Request
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes: #149
Summary:
Add descriptive text where missing to api examples.
Type of change:
Please delete options that are not relevant.

[ ] New capability
[ ] Revision of an existing capability
[ ] Infrastructure change (automation, etc.)
[x] Other (doc updates)

Checklist:

[x] My update follows the CONTRIBUTING guidelines of this project
[x] I have performed a self-review of my own update

By submitting this Pull Request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
Pull Requests will be evaluated by their quality of update and whether it is consistent with the goals and values of this project. Any submission is to be considered a conversation between the submitter and the maintainers of this project and may require changes to your submission.
Thank you for your submission!
-- Auro Design System Team

:tada: This PR is included in version 2.9.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


RTMP video: Video is not honoring height and width properties of video tag

Hi,
We are trying to use the latest version of mediaelement player in our application to play the videos and audios. We observed one issue while playing RTMP video. The video is not rendering based on the width and height that we provided for the video tag. However, the issue is not observed once we maximize the video and then exit the full screen.
Here is the sample file which has rtmp url also.
videoTestWithLatestPlayer.html.txt
Below is the screenshot for your reference:

Could you please look into this.

@milax can you check this please?

@krishnapriyaMandadi please test again; I found a typo that was causing this. Let me know. Thanks and please star the project to support it

Verified with latest bits. Working fine. Thanks


expose FileReader, for Blob to ArrayBuffer conversion

Exposes FileReader, for Blob -> ArrayBuffer conversion.

:+1:


JSON Diff

What feature or new tool do you think should be added to DevToys?
I think a simple JSON difference tool would be nice. Something like json diff
Why do you think this is needed?
My team and I use DevToys but we found it only has text comparison, so something like that for JSON would be nice.
Solution/Idea
I think this design would be nice to have.

Comments
No response

Hi,
This is a good idea for an extension, but I don't think it fits DevToys' default tools.
Thanks


Fixed typo in README.md locations example code

added new line so that the $locations_api variable gets set

This is fixed in our next release! Thank you for contributing!


[OpPerf] Fixes the issue when you pass NDArray to run_perf_test

Description
Upon running run_performance_test, user can input shape (as tuple) or NDArray directly in parameters that need NDArray.
Internally, opperf creates an NDArray if user has given shape as input. (default initializer is random_normal)
Now, when I pass an NDArray to run_perf_test follow issues occur

Fix typeError in isinstance check for NDArray
It errors out

run_performance_test(nd.gather_nd, inputs=[{"data": (2, 22), "indices":nd.random_uniform(low=0,high=1,shape=(1,2))}], run_backward=T
rue, warmup=1, runs=1)
TypeError: isinstance() arg 2 must be a type or tuple of types

The issue is at this line
elif isinstance(in_tensor, mx.ndarray):
It should check for nd.NDArray and not mx.ndarray

subsequently, as_in_context doesn't take keyword argument. Fixed that by removing 'ctx='

Test
run_performance_test(nd.gather_nd, inputs=[{"data": (2, 22), "indices":nd.random_uniform(low=0,high=1,shape=(1,2))}], run_backward=True, warmup=1, runs=1)
INFO:root:Begin Benchmark - gather_nd
INFO:root:Complete Benchmark - gather_nd
[{'gather_nd': [{'avg_time_forward_gather_nd': 0.099, 'avg_time_backward_gather_nd': 0.048, 'max_storage_mem_alloc_cpu/0': 0.09, 'inputs': {'data': (2, 22), 'indices':
[[0.5488135 0.5928446]]
<NDArray 1x2 @cpu(0)>}}]}]

Checklist
Essentials
Please feel free to remove inapplicable items for your PR.

[x] Changes are complete (i.e. I finished coding on this PR)
[x] All changes have test coverage:
[x] Code is well-documented:
[x] To the best of my knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

@mxnet-label-bot add [pr-awaiting-review]


Can't create a new Project

Task
Fix the issue where a user can't create a new project.
Getting a 400 status error.
Background:
I tested the API by making a POST request on the project endpoint. It was successful, so I assume the bug is on the Front End.

Screenshots
Project Creation Page

After pressing Create, redirects to /project with status code 400

This is a frontend bug, yeah.
The initialData in a new project (ProjectNewPage) does not contain a client. It's set by a change handler on the client dropdown component, so you have to change it to something other than the default value (and back to the default value if you want to select one :P) to set a client href to the project data.


Add backend method for deleting a connector

The user can create connector(s) via the UI, but cannot delete them.  Add a method to the backend service which would allow delete of a connector.

hey @mdrillin @indraraj @uidoyen, I added the delete connector endoint in #193
The request is a HTTP DELETE request to /connectors/{cluster}/{connector-name}


Support \Closure for DataFilter::attributeMap

In REST controller who use ActiveDataFilter
The property attributeMap (not searchModel) can be use (additional) to resolve alias, who we use in resources definition
$filter = new ActiveDataFilter([
'searchModel' => \api\models\PostSearch::class,
'attributeMap' => ['aliasId' => 'realFieldId'],
]);

class \api\models\PostSearch extends app\models\Post {
    public function fields(){
        $fields = parent::fields();
        unset($fields['realFieldId']);
        $fields['aliasId'] = function () {
            return $this->realFieldId;
        };
        return $fields;
    }
}

So... I think we need options to move $attributeMap from controller (definition of DataFilter) to the model searchModel
class \api\models\PostSearch extends app\models\Post {
    public static function attributeMap(){
         return ['aliasId' => 'realFieldId'];
    }
    public function fields(){
        $fields = parent::fields();
        unset($fields['realFieldId']);
        $fields['aliasId'] = function () {
            return $this->realFieldId;
        };
        return $fields;
    }
}

$filter = new ActiveDataFilter([
'searchModel' => \api\models\PostSearch::class,
'attributeMap' => [ \api\models\PostSearch::class, 'attributeMap'],
]);

i.e. we need closure support of attributeMap property too
@klimov-paul
what you think?
Additional info

Q
A

Yii version
dev

Could be a good idea but I'd like to hear @klimov-paul.


Parse query shortcut should not use ctrl+alt by default

"Ctrl+Alt+ keybindings should not be used by default under Windows. Offender:  [object Object]  for  parseQueryAction"
Ctrl+Alt+ keybinds on Windows are by default mapped to accessibility features, so to prevent us from blocking the use of those we should not have any default keybindings that use those.

@alanrenmsft FYI


OSX; default agent mac=true or similar is needed

Windows agent includes window=true, OSX showed n/a

We shouldn't actually set meta data like this by default. We've got plans to allow platform targeting at Buildkite directly.

Sounds good to me.


Don't reset iteration on changed attr

Since we've already determined that everything preceding this attribute hasn't changed, there's no reason to reset and update them all.

Looks good!


Fix Builder::getAggregation $options parameter type

Q
A

Type
bug

BC Break
no

Fixed issues

Summary
I specify this one wrong, I'll try to check and keep an eye if there are more 😞

Thanks for noticing!


GUVNOR-3236: Rearrange menus structure

Part of an ensemble:

https://github.com/AppFormer/uberfire/pull/798
https://github.com/kiegroup/kie-wb-common/pull/1053
https://github.com/kiegroup/drools-wb/pull/572
https://github.com/kiegroup/kie-wb-distributions/pull/578

@ederign Thanks for the review! I think it's best if I create a new presenter for the mega menu, and don't use the existent one. This way all the issues you pointed out would be solved. Wdyt?

@ederign Hi, could you take another look? There are also new associated PRs, mentioned on the first comment in this PR. Thanks!

Also, please check on home button if user has access (if (hasAccessToPerspective("changeme")) {)

@ederign All fixed!


fix: add pacmod3_msgs repository for pacmod_interface

Description

pacmod_interface depends on pacmod3_msgs https://github.com/tier4/pacmod_interface/blob/main/pacmod_interface/package.xml#L19, but it's not available when doing a source checkout via the autoware.repos file.
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

@esteve It's added by this Ansible role. Is there any trouble with this? https://github.com/autowarefoundation/autoware/blob/964ad927cd6695cd6645dbafda6f43224f274307/ansible/roles/pacmod/tasks/main.yaml

@kenji-miyake ah, I see, thanks for the info. I was building Autoware from source for https://github.com/autowarefoundation/autoware/issues/3222, and pacman_interface requires pacmod3_msgs. I added the pacmod3_msgs Git repository to the autoware.repos file to satisfy the dependency, but I'll see if I can add external rosdep rules to the Github action so that it's not necessary to build the messages from source. Thanks!

No longer needed if using the latest version of ros-deb-builder-action and the following configuration:
ROSDEP_SOURCE: yaml https://s3.amazonaws.com/autonomoustuff-repo/autonomoustuff-public-humble.yaml
SBUILD_CONFIG: $extra_repositories = ["deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ focal main"];


[Feature Request]: Preview BYON Display When Creating Instance

See associated issue for more details: https://github.com/opendatahub-io/odh-dashboard/issues/375

@kywalker-rh let us talk about this issue on Monday. I think you meant this for another board. You modified our board maybe on accident?
Anything logged in ODH Dashboard gets added to our board for triage -- open & in done state is an invalid state for our board.


[BIOMAGE-2357] No tabs in cell sets and metadata

Description

Details
URL to issue
https://biomage.atlassian.net/browse/BIOMAGE-2357
Link to staging deployment URL (or set N/A)
https://ui-ivababukova-ui157.scp-staging.biomage.net/
Links to any PRs or resources related to this PR

Integration test branch
master

Merge checklist
Your changes will be ready for merging after all of the steps below have been completed.

Code updates
Have best practices and ongoing refactors being observed in this PR

[ ] Migrated any selector / reducer used to the new format.

Manual/unit testing

[ ] Tested changes using InfraMock locally or no tests required for change, e.g. Kubernetes chart updates.
[ ] Validated that current unit tests for code work as expected and are sufficient for code coverage or no unit tests required for change, e.g. documentation update.
[ ] Unit tests written or no unit tests required for change, e.g. documentation update.

Integration testing
You must check the box below to run integration tests on the latest commit on your PR branch.
Integration tests have to pass before the PR can be merged. Without checking the box, your PR
will not pass the required status checks for merging.

[ ] Started end-to-end tests on the latest commit.

Documentation updates

[ ] Relevant Github READMEs updated or no GitHub README updates required.
[ ] Relevant Wiki pages created/updated or no Wiki updates required.

Optional

[ ] Staging environment is unstaged before merging.
[ ] Photo of a cute animal attached to this PR.

Is it possible to change 'Cell sets and Metadata' into Cell sets and Metadata? And the same for 'Custom cell sets'?
I think it will look nicer. Otherwise it is a clear message.

I also like that they are all collapsed. Is there a reason it reads louvain clusters and not Louvain clusters?

Is it possible to change 'Cell sets and Metadata' into Cell sets and Metadata? And the same for 'Custom cell sets'?
I think it will look nicer. Otherwise it is a clear message.

@jildoubaarsma unfortunately I could not find an easy way to do it. I checked the Antd component that we use for messages: https://ant.design/components/message

Is there a reason it reads louvain clusters and not Louvain clusters?

It's a problem in the way the clusters are created (if from the pipeline they are named "louvain clusters", if from the worker "Louvain clusters").
The fix for that is something that should be done in the pipeline and shouldn't be too much work

Thanks for your reply, @ivababukova. Let's then for now leave it as is, with the quotation marks. Maybe if at some point someone finds out how to do it, we can fix it at that point.

Suggest changing 'Cell sets and Metadata tab' -> 'Cell sets and Metadata tile'.

Otherwise, looks good. Having the functionality to easily creating a new cell set with e.g. cluster 0 in sample 1 is awesome. (Had to do this by hiding things previously.)

Otherwise, looks good. Having the functionality to easily creating a new cell set with e.g. cluster 0 in sample 1 is awesome. (Had to do this by hiding things previously.)

I didn't even realise that this made this functionality possible. I am glad to hear it :) Changed the "tab" to "tile" and I will merge the PR shortly.


word2vec_basic.py line 54, yield instead of return

# Read the data into a string.
def read_data(filename):
  f = zipfile.ZipFile(filename)
  for name in f.namelist():
    return f.read(name).split() ### SHOULD BE: yeild  f.read(name).split()?
  f.close()

Oringial sample data got one big txt file in the zip file.
def read_data(filename):
  with zipfile.ZipFile(filename) as f:
    for name in f.namelist():
      yield f.read(name).split()

(Feel free to send us a pull request to fix this if you'd like)

@fivejjs: Would you be for sending a PR?  Your suggested code is indeed much better.

this looks like it has been changed already by a different commit


error TS18046: 'e' is of type 'unknown'.

error missing type in this line:
https://github.com/fortana-co/react-dropzone-uploader/blob/89aa88acf753962398fee967d0e4b5ac5d53065a/src/Dropzone.tsx#L503

i have the  same problem

same

Same

solved with https://github.com/ds300/patch-package

Would love to see this fixed in the lib itself
For now I just updated my tsconfig:
{
  "compilerOptions": {
    // ...
    // added this line
    "useUnknownInCatchVariables": false,
  },
  // ...
}


Have Xcode highlight Bazel file syntax in generated projects

Short description 📝
Have Xcode highlight Bazel file syntax in generated projects.
Solution 📦
When generating Xcode projects from Bazel using XCHammer, the included BUILD.bazel files didn't get syntax highlighting. This change updates the allExtensions dictionary to treat .bazel and .bzl files as text.script.python.
Implementation 👩💻👨💻

Detail in a checklist the steps that you took to implement the PR.

[X] add the file extensions and the xcode file type identifiers to Xcode.swift

Codecov Report

Merging #730 (98a7530) into main (d85034e) will decrease coverage by 2.68%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main     #730      +/-   ##
==========================================
- Coverage   84.88%   82.20%   -2.69%
==========================================
  Files         158      158
  Lines        9270     9270
==========================================
- Hits         7869     7620     -249
- Misses       1401     1650     +249

Impacted Files
Coverage Δ

Sources/XcodeProj/Project/Xcode.swift
100.00% <ø> (ø)

...ces/XcodeProj/Objects/Targets/PBXProductType.swift
11.42% <0.00%> (-42.86%)
:arrow_down:

...Workspace/XCWorkspaceDataElementLocationType.swift
57.14% <0.00%> (-22.23%)
:arrow_down:

...deProjTests/Extensions/XCTestCase+Assertions.swift
50.00% <0.00%> (-16.67%)
:arrow_down:

...es/XcodeProj/Extensions/Dictionary+Enumerate.swift
61.53% <0.00%> (-15.39%)
:arrow_down:

...es/XcodeProj/Objects/BuildPhase/PBXBuildRule.swift
80.00% <0.00%> (-14.00%)
:arrow_down:

Sources/XcodeProj/Errors/Errors.swift
34.72% <0.00%> (-12.50%)
:arrow_down:

...urces/XcodeProj/Scheme/XCScheme+PathRunnable.swift
87.50% <0.00%> (-12.50%)
:arrow_down:

...ces/XcodeProj/Objects/Files/PBXFileReference.swift
77.55% <0.00%> (-12.25%)
:arrow_down:

...ources/XcodeProj/Objects/Files/PBXSourceTree.swift
62.29% <0.00%> (-11.48%)
:arrow_down:

... and 63 more

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Closes: #1 updated validations.py

Fixes #1

It's a good idea to open an issue first for discussion.

[ ] Tests pass
[ ] Appropriate changes to README are included in PR

@googlebot I signed it!


9 ➡ 10

➡ Forward port
Port ign-transport9 to main
Branch comparison: https://github.com/ignitionrobotics/ign-transport/compare/main...ign-transport9
Note to maintainers: Remember to Merge with commit (not squash-merge or rebase)

There are a few references to ign-transport9. Should these be updated toign-transport10?
$ git grep -in transport9
tutorials/02_installation.md:92:sudo apt-get remove libignition-transport9-dev
tutorials/02_installation.md:227:  If you installed to a custom location, you may need to specify ``-DCMAKE_PREFIX_PATH``, pointing to the directory containing the file ``ignition-transport9-config.cmake``.

There are a few references to ign-transport9

Fixed


bug: tailwind autocomplete not working

Did you check docs and existing issues?

[X] I have read all the LazyVim docs
[X] I have searched the existing issues of LazyVim
[X] I have searched the existing issues of plugins related to this issue

Neovim version (nvim -v)
0.9.2
Operating system/version
Arch Linux (kernel 6.5.6)
Describe the bug
Tailwind autocomplete does not work when enabled through the :LazyExtras  command or in lazy.lua:
{ import = "lazyvim.plugins.extras.lang.tailwind" },

Opening an HTML file and running :LspInfo I see:
 Language client log: /home/hakon/.local/state/nvim/lsp.log
 Detected filetype:   html

 0 client(s) attached to this buffer:

 Other clients that match the filetype: html

 Config: tailwindcss
 	filetypes:         aspnetcorerazor, astro, astro-markdown, blade, clojure, django-html, htmldjango, edge, eelixir, elixir, ejs, erb, eruby, gohtml, gohtmltmpl, haml, handlebars, hbs, html, html-eex, heex, jade, leaf, liquid, mdx, mustache, njk, nunjucks, php, razor, slim, twig, css, less, postcss, sass, scss, stylus, sugarss, javascript, javascriptreact, reason, rescript, typescript, typescriptreact, vue, svelte
 	root directory:    Not found.
 	cmd:               /home/hakon/.local/share/nvim/mason/bin/tailwindcss-language-server --stdio
 	cmd is executable: true
 	autostart:         true
 	custom handlers:

 Configured servers list: lua_ls, tailwindcss

Opening an TSX file in a React project and running :LspInfo I see:
 Language client log: /home/hakon/.local/state/nvim/lsp.log
 Detected filetype:   typescriptreact

 1 client(s) attached to this buffer:

 Client: tailwindcss (id: 1, bufnr: [3])
 	filetypes:       aspnetcorerazor, astro, astro-markdown, blade, clojure, django-html, htmldjango, edge, eelixir, elixir, ejs, erb, eruby, gohtml, gohtmltmpl, haml, handlebars, hbs, html, html-eex, heex, jade, leaf, liquid, mdx, mustache, njk, nunjucks, php, razor, slim, twig, css, less, postcss, sass, scss, stylus, sugarss, javascript, javascriptreact, reason, rescript, typescript, typescriptreact, vue, svelte
 	autostart:       true
 	root directory:  /home/hakon/print-buddy/frontend
 	cmd:             /home/hakon/.local/share/nvim/mason/bin/tailwindcss-language-server --stdio

 Configured servers list: tailwindcss, lua_ls

I have followed the installation steps in the docs and have deleted all cache/swap files before re-installing LazyVim.
Steps To Reproduce

Install extras.lang.tailwind.
Open a HTML or TSX file and observe the autocomplete is not working.

Expected Behavior
Enabling extras.lang.tailwind should work.
Repro
No response

This has probably something to do with your LSP configuration. In a Lazyvim starter template, while enabling only the extra for tailwind from LazyExtras, when opening a .html file the LSP tailwind attaches correctly and auto-completion works as expected.

Yep, same here. Works in html and tsx files. We also don't do any special config, so must be something on your end.

Okay. How would I go about debugging something like this? I have already deleted everything related to neovim, and my config is completely untouched. Running the following commands:
rm -rf ~/.config/nvim ~/.local/share/nvim ~/.local/state/nvim ~/.cache/nvim
git clone https://github.com/LazyVim/starter ~/.config/nvim

Then updating LazyVim, enabling only tailwind using the :LazyExtras command, and restarting neovim the issue persists.

Tailwind (and every LSP server) searches for patterns to determine your root_dir. You can see the order of patterns it searches for in the corresponding tailwind lspconfig docs](https://github.com/neovim/nvim-lspconfig/blob/8f3ddc448769f563248654a5099c943c7139137e/lua/lspconfig/server_configurations/tailwindcss.lua#L102-L110). I believe if you take a similar approach to issue #1307, it might help you (but I don't anything about your file structure so can't be sure). Maybe setting tailwind searching first for .git` and then for the rest would be a solution to your problem or some other pattern that is distinct at the root of your project.

I've had a few issues with this language server not working.  I had it today and it was accompanied by an error like:
Error executing vim.schedule lua callback: /path/to/nvim/runtime/lua/vim/lsp.lua:1314: RPC[Error] code_name = InternalError, message = "Request initialize failed with message: Bad file descriptor"

In my case, this was due to files anywhere in the project that are not owned by my user.  For me, I was launching docker and mounting a directory into a container running as a different UID.  Once I fixed that, I had completion again.


Re-add 'get deeplink URL' links

The current svelte.dev and sapper.svelte.dev sites have links you can hover over to the left of each section and subsection name in the main document, and this gives you a link to that specific section on the page. This appears to have been lost at some point in kit.svelte.dev.

fixed


Write a Swift program to check even or odd number

Description
Write a Swift program to check even or odd number
Input  : 3
Output : Odd Number

How to contribute

Save the solution in CheckEvenOrOddNumber.swift file
Add CheckEvenOrOddNumber.swift file in check-even-or-odd-number folder

!assign


Nhentai

Source information
Nhentai 1.4.40
Source language
English
Steps to reproduce
İ don't know
Expected behavior
This extension work
Actual behavior
This extension doesn't work. İt's not open.
Mihon/Tachiyomi version
0.16.5
Android version
Android 11
Other details
No response
Acknowledgements

[X] I have searched the existing issues and this is a new ticket, NOT a duplicate or related to another open or closed issue.
[X] I have written a short but informative title.
[X] I have updated the app to version 0.15.3.
[X] I have updated all installed extensions.
[X] I have tried the troubleshooting guide.
[X] If this is an issue with the app itself, I should be opening an issue in the app repository.
[X] I will fill out all of the requested information in this form.

This plugin doesn't work no matter what I do. I tried changing VPN or changing user agent but it never works. Even the cloudflare section does not open when viewing via webview

Working fine in me too!
Download warp <IP_ADDRESS> from playstore and use it. It have dns and vpn inbuilt and work for every sites available! I also use it as my country have banned this site ... but hey, who cares? We r not gonna leave it just because it's banned!! Ahahaha


Update issue templates

Codecov Report

Merging #7 (c2ed309) into main (17ee0af) will not change coverage.
The diff coverage is n/a.

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

@@           Coverage Diff           @@
##             main       #7   +/-   ##
=======================================
  Coverage   97.67%   97.67%
=======================================
  Files           2        2
  Lines          43       43
=======================================
  Hits           42       42
  Misses          1        1

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 17ee0af...3ba76a3. Read the comment docs.


refactor: switch from numtide/flake-utils to flake-parts

Since using numtide/flake-utils is getting controversial for many reasons, this PR uses flake-parts (https://github.com/hercules-ci/flake-parts).

Do you have a reference for the controversy?
To be honest, I am not really fond of switching to these opinionated flake helpers since they veer too far from how flakes work, making them harder to understand without looking at the implementation. Especially when there is so many of them, each slightly different.

I understand and I overall share the same feeling.
That said, from my thin experience with Nix flakes and Nix in general, I always found this a bit odd to require an external contrib package to build a flake for different architectures.
As seen on Reddit, flake-parts is by default in Nix package and:

IMO, flake-parts has quite a bit better potential as well as being more useful today. NixOS-modules style option declaration and typing has much more opportunity for ergonomic and modular flake consumption.

Also, on Matrix, I often see people confirming those sayings.

Yeah, I am still not convinced. It would just be trading one flake input for another, still just to get a single mostly trivial function. (I did not even bother switching to flake-utils in my personal config when flake-utils became popular.) And while I like the API, it is still new and deviates from Flakes too much. Maybe we can re-evaluate later, perhaps when https://github.com/NixOS/nix/issues/3843 moves along.

Ok, let's see how it goes!

Closing the PR in the meantime.


[PaddlePaddle] support paddlejob

What this PR does / why we need it:
Since stand-alone operator is not preferred, we integrate with the unified one. Discussion goes here https://github.com/kubeflow/community/issues/520.
Thanks to the scaffold and PyTorch implementation, this implementation profits a lot.
Checklist:

[v] Docs included if any changes are user facing

Awesome! Thanks for this @kuizhiqing

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

322 of 883 (36.47%)  changed or added relevant lines in 9 files are covered.
4 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.3%) to 39.268%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/controller.v1/register_controller.go
0
3
0.0%

pkg/apis/kubeflow.org/v1/paddlepaddle_validation.go
27
32
84.38%

pkg/apis/kubeflow.org/v1/zz_generated.defaults.go
0
10
0.0%

pkg/controller.v1/paddlepaddle/envvar.go
84
115
73.04%

pkg/apis/kubeflow.org/v1/paddlepaddle_defautls.go
0
46
0.0%

pkg/apis/kubeflow.org/v1/zz_generated.deepcopy.go
0
99
0.0%

pkg/controller.v1/paddlepaddle/paddlepaddle_controller.go
207
358
57.82%

pkg/apis/kubeflow.org/v1/openapi_generated.go
0
216
0.0%

Files with Coverage Reduction
New Missed Lines
%

pkg/controller.v1/mpi/mpijob_controller.go
4
77.39%

Totals

Change from base Build<PHONE_NUMBER>:
-0.3%

Covered Lines:
2662

Relevant Lines:
6779

💛  - Coveralls

Can you add one e2e test in https://github.com/kubeflow/training-operator/tree/master/sdk/python/test/e2e?

Can you add one e2e test in https://github.com/kubeflow/training-operator/tree/master/sdk/python/test/e2e?

@johnugeorge , e2e test is added and test locally, plz help rerun the CI.

e2e tests failed. Can you try this locally ?

e2e tests failed. Can you try this locally ?

I did pass the e2e test locally,

while the CI test errors related to the last 2 commits are quite confused.
@johnugeorge could you give some tips to handle those errors, thx.

Can you do a rebase to get fix from https://github.com/kubeflow/training-operator/pull/1676

Can you do a rebase to get fix from #1676 ?

Hi @johnugeorge ，all tests are passed, ready for review.

Can you do a rebase to get fix from #1676 ?

Thanks @johnugeorge , all tests passed, ready to review.

/cc @gaocegege
/cc @terrytangyuan

Thanks @kuizhiqing for this PR. This is a great addition to our supported frameworks.
Can you also create a PR in https://github.com/kubeflow/website for updating website docs ?

Thanks @kuizhiqing for this PR. This is a great addition to our supported frameworks.
Can you also create a PR in https://github.com/kubeflow/website for updating website docs ?

PR has been created here https://github.com/kubeflow/website/pull/3388.

Can you fix the tests?

/lgtm
/assign @terrytangyuan

@johnugeorge plz help with the CI test.

@terrytangyuan , PTAL


Refactored composite string index test

I changed the isarCodeVersion to '2.5.29', since I was getting 404's with version '2.5.28'. Feel to let me know if it should be '2.5.28'.
I refactored the composite string index test and added more test based on strings (startsWith, greaterThan, lessThan, between)

Great! Thanks yes sorry for the incorrect isarCoreVersion.


Fix deleting temp file not using full path.

The filename is passed around and most methods then prefix it with the Temp folder, but DeleteTempFileAsync wasn't. Instead, it was incorrectly trying to delete the file from the current folder rather than the temp folder. Note: I'm not addressing it in this PR, but I'd recommend passing the full path around rather than the file name to avoid inconsistencies like this.
Removed unnecessary and inconsistent Task from signature and Task return statement. I did this because the return value wasn't used, what to return is questionable given the above bug; there weren't any await calls in the method; and no interface with a Task return to satisfy. Note: I'm not addressing it in this PR but I also saw some other unnecessary methods with a Task return and Async name suffix that could do with a tidy-up.

(I rebased your branch so that it could be merged)


Enhance Javalin to support try with resources

Hi Tipsy,
First, thank you so much for creating and maintaining this wonderful project.
This PR simply makes Javalin implement AutoClosable so that it's compatible with try-with-resources. See tests for examples. Please let me know your thoughts and about any improvements I can make. Did my best to follow existing code style.
Thanks.

Thank you @signedbit ! The code looks fine (tests too!), but could you elaborate on why you want this? What problem does this solve?

Hi @tipsy. In short, try-with-resources allows all exceptions to be caught correctly without prior exceptions magically disappearing and ensures the client can't forget to close the resource. See official docs for more. It is very helpful for me because my application has many resources that need to be gracefully cleaned up, Javalin being one. It also allows for an elegant idiom for integration/e2e tests, particularly helpful for running tests concurrently:
try (final Javalin app = Javalin.create().start(0)) {
    // ...
}

@signedbit I have to admit I am intrigued, but it doesn't seem quite right. If you look at the other classes implementing AutoCloseable, they are mostly streams, channels, sockets. Not full servers. It is sort of elegant though, in particular for tests. I can't really think of any downsides to doing this, can you?

No, there are no downsides, it's optional and fully backwards compatible. The only "downside" in this specific case is that both stop and close methods exist, which can cause confusion. Personally, I would rename stop to close for no ambiguity and make it idempotent, but that'd be a breaking change requiring a major version bump.
Servers are in fact resources that need to be closed. Composite resources if you will because they're composed of multiple primitive resources (like sockets) Among other resources, they take up one of the finite number of bindable ports on the host system. The fact that a stop method exists proves "closeability", this PR simply integrates it better with JVM.

If you write a class that represents a resource that must be closed, your class should implement AutoCloseable too.

-- Effective Java 3rd Edition, Joshua Bloch, Item 9: Prefer try-with-resources to try-finally

Thanks @signedbit, it's easy to agree with everything you're saying. I will merge it tomorrow.
If you haven't already, could you write a few words about stop vs close in the javadoc for both methods?

Happy to add Javadocs. Also, maybe stop() should be deprecated and docs updated? Let me know what you think.

Looks good! I think deprecating stop is taking it one step too far. Javalin is a wrapper on top of Jetty, which uses start/stop. A lot of people are familiar with this pattern. I think people would be confused if they couldn't find stop, and wouldn't necessarily think that close was a stopping method (in my experience, most people don't reads docs or javadocs carefully).


INC2097603 - show quote amount and billed amount on projects table

It would be useful, mostly for completed projects for the PI to see these amounts directly on the table.
Maybe display under the progress bar as quote/amount or amount of quote...
Don't think we want to add another column, but might need to.

Need to consider if there is no quote...


[BUG] Unable to format CSI volumes on Nomad using juicefs-csi-driver >= v0.23.3

What happened:
I deployed the latest version of the CSI image for Controller and Node (v0.24.7), and created a volume.  That all worked fine.
However, when I then deployed a Nomad Job that mounts that previously created CSI volume, the Node job threw a series of errors:
I0917 01:41:15.835499       8 main.go:121] Run CSI node
I0917 01:41:15.836540       8 driver.go:50] Driver: csi.juicefs.com version v0.24.7-dirty commit ebd4ee6686fab6ec9655b39362a5363454058d3d date 2024-09-04T06:00:07Z
I0917 01:41:16.019738       8 driver.go:115] Listening for connection on address: &net.UnixAddr{Name:"/csi/csi.sock", Net:"unix"}
I0917 01:41:29.375543       8 node.go:107] NodePublishVolume: volume_id is database-juicefs
I0917 01:41:29.375591       8 node.go:118] NodePublishVolume: volume_capability is mount:<fs_type:"ext4" mount_flags:"noatime" > access_mode:<mode:SINGLE_NODE_WRITER >
I0917 01:41:29.375713       8 node.go:124] NodePublishVolume: creating dir /local/csi/per-alloc/43574280-6cea-0311-6996-268521cdc791/database-juicefs/rw-file-system-single-node-writer
I0917 01:41:29.375930       8 node.go:139] NodePublishVolume: volume context: map[capacity:1000000000 subPath:database-juicefs]
I0917 01:41:29.375978       8 node.go:149] NodePublishVolume: mounting juicefs with secret [bucket metaurl name secret-key storage access-key], options [noatime]
W0917 01:41:29.376019       8 juicefs.go:352] Get PV with volumeID database-juicefs error: k8s client is nil
I0917 01:41:29.378418       8 juicefs.go:984] ceFormat cmd: [/usr/local/bin/juicefs format --storage=minio --bucket=http://minio.nomad.kitchen.example.org:9000/kitchen --access-key=administrator --secret-key=${secretkey} ${metaurl} database-juicefs]
I0917 01:41:29.487111       8 juicefs.go:1004] Format output is 2024/09/17 01:41:29.480359 juicefs[19] <INFO>: Meta address: $'etcd://root:****@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1&server-name=juicefs.kitchen.example.org' [interface.go:504]
2024/09/17 01:41:29.480516 juicefs[19] <FATAL>: Invalid meta driver: $'etcd [interface.go:507]
I0917 01:41:29.487135       8 juicefs.go:1007] Format error: exit status 1
E0917 01:41:29.487206       8 driver.go:102] GRPC error: rpc error: code = Internal desc = Could not mount juicefs: juicefs format error: 2024/09/17 01:41:29.480359 juicefs[19] <INFO>: Meta address: $'etcd://root:****@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1&server-name=juicefs.kitchen.example.org' [interface.go:504]
2024/09/17 01:41:29.480516 juicefs[19] <FATAL>: Invalid meta driver: $'etcd [interface.go:507]
: exit status 1
I0917 01:41:30.189715       8 node.go:212] NodeUnpublishVolume: volume_id is database-juicefs
I0917 01:41:30.190200       8 process_mount.go:257] ProcessUmount: /local/csi/per-alloc/43574280-6cea-0311-6996-268521cdc791/database-juicefs/rw-file-system-single-node-writer target not mounted
I0917 01:41:30.190563       8 process_mount.go:302] ProcessUmount: /local/csi/per-alloc/43574280-6cea-0311-6996-268521cdc791/database-juicefs/rw-file-system-single-node-writer target not mounted
I0917 01:42:01.284579       8 node.go:107] NodePublishVolume: volume_id is database-juicefs
I0917 01:42:01.284605       8 node.go:118] NodePublishVolume: volume_capability is mount:<fs_type:"ext4" mount_flags:"noatime" > access_mode:<mode:SINGLE_NODE_WRITER >
I0917 01:42:01.284655       8 node.go:124] NodePublishVolume: creating dir /local/csi/per-alloc/b0f64a60-ff22-a829-72f0-6c8025507b85/database-juicefs/rw-file-system-single-node-writer
I0917 01:42:01.284917       8 node.go:139] NodePublishVolume: volume context: map[capacity:1000000000 subPath:database-juicefs]
I0917 01:42:01.284938       8 node.go:149] NodePublishVolume: mounting juicefs with secret [bucket metaurl name secret-key storage access-key], options [noatime]
W0917 01:42:01.284952       8 juicefs.go:352] Get PV with volumeID database-juicefs error: k8s client is nil
I0917 01:42:01.285226       8 juicefs.go:984] ceFormat cmd: [/usr/local/bin/juicefs format --storage=minio --bucket=http://minio.nomad.kitchen.example.org:9000/kitchen --access-key=administrator --secret-key=${secretkey} ${metaurl} database-juicefs]
I0917 01:42:01.385773       8 juicefs.go:1004] Format output is 2024/09/17 01:42:01.374316 juicefs[26] <INFO>: Meta address: $'etcd://root:****@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1&server-name=juicefs.kitchen.example.org' [interface.go:504]
2024/09/17 01:42:01.374730 juicefs[26] <FATAL>: Invalid meta driver: $'etcd [interface.go:507]
I0917 01:42:01.385796       8 juicefs.go:1007] Format error: exit status 1
E0917 01:42:01.385854       8 driver.go:102] GRPC error: rpc error: code = Internal desc = Could not mount juicefs: juicefs format error: 2024/09/17 01:42:01.374316 juicefs[26] <INFO>: Meta address: $'etcd://root:****@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1&server-name=juicefs.kitchen.example.org' [interface.go:504]
2024/09/17 01:42:01.374730 juicefs[26] <FATAL>: Invalid meta driver: $'etcd [interface.go:507]
: exit status 1
I0917 01:42:02.129180       8 node.go:212] NodeUnpublishVolume: volume_id is database-juicefs
I0917 01:42:02.129530       8 process_mount.go:257] ProcessUmount: /local/csi/per-alloc/b0f64a60-ff22-a829-72f0-6c8025507b85/database-juicefs/rw-file-system-single-node-writer target not mounted
I0917 01:42:02.129817       8 process_mount.go:302] ProcessUmount: /local/csi/per-alloc/b0f64a60-ff22-a829-72f0-6c8025507b85/database-juicefs/rw-file-system-single-node-writer target not mounted
I0917 01:42:32.952950       8 node.go:107] NodePublishVolume: volume_id is database-juicefs
I0917 01:42:32.952970       8 node.go:118] NodePublishVolume: volume_capability is mount:<fs_type:"ext4" mount_flags:"noatime" > access_mode:<mode:SINGLE_NODE_WRITER >
I0917 01:42:32.953003       8 node.go:124] NodePublishVolume: creating dir /local/csi/per-alloc/f9ffab7c-602d-7a5b-2232-c34b3f368ed2/database-juicefs/rw-file-system-single-node-writer
I0917 01:42:32.953170       8 node.go:139] NodePublishVolume: volume context: map[capacity:1000000000 subPath:database-juicefs]
I0917 01:42:32.953189       8 node.go:149] NodePublishVolume: mounting juicefs with secret [metaurl name secret-key storage access-key bucket], options [noatime]
W0917 01:42:32.953208       8 juicefs.go:352] Get PV with volumeID database-juicefs error: k8s client is nil
I0917 01:42:32.953441       8 juicefs.go:984] ceFormat cmd: [/usr/local/bin/juicefs format --storage=minio --bucket=http://minio.nomad.kitchen.example.org:9000/kitchen --access-key=administrator --secret-key=${secretkey} ${metaurl} database-juicefs]
I0917 01:42:33.070526       8 juicefs.go:1004] Format output is 2024/09/17 01:42:33.065408 juicefs[32] <INFO>: Meta address: $'etcd://root:****@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1&server-name=juicefs.kitchen.example.org' [interface.go:504]
2024/09/17 01:42:33.065661 juicefs[32] <FATAL>: Invalid meta driver: $'etcd [interface.go:507]
I0917 01:42:33.070557       8 juicefs.go:1007] Format error: exit status 1
E0917 01:42:33.070598       8 driver.go:102] GRPC error: rpc error: code = Internal desc = Could not mount juicefs: juicefs format error: 2024/09/17 01:42:33.065408 juicefs[32] <INFO>: Meta address: $'etcd://root:****@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1&server-name=juicefs.kitchen.example.org' [interface.go:504]
2024/09/17 01:42:33.065661 juicefs[32] <FATAL>: Invalid meta driver: $'etcd [interface.go:507]
: exit status 1
I0917 01:42:33.912007       8 node.go:212] NodeUnpublishVolume: volume_id is database-juicefs
I0917 01:42:33.912299       8 process_mount.go:257] ProcessUmount: /local/csi/per-alloc/f9ffab7c-602d-7a5b-2232-c34b3f368ed2/database-juicefs/rw-file-system-single-node-writer target not mounted
I0917 01:42:33.912497       8 process_mount.go:302] ProcessUmount: /local/csi/per-alloc/f9ffab7c-602d-7a5b-2232-c34b3f368ed2/database-juicefs/rw-file-system-single-node-writer target not mounted

What you expected to happen:
Format and mount using Nomad CSI works fine.
How to reproduce it (as minimally and precisely as possible):

Apply these Nomad Jobs:
https://gist.github.com/kmott/7d34abacf46b92ad69193f9619101b3f
Review logs, notice job fails

Anything else we need to know?
Environment:

JuiceFS CSI Driver version (which image tag did your CSI Driver use):

Anything >= v0.23.3 (<= v0.23.2 works okay)

Kubernetes version (e.g. kubectl version):

N/A, using Nomad (v1.6.3)

Object storage (cloud provider and region):

Minio locally

Metadata engine info (version, cloud provider managed or self maintained):

ETCD locally

Network connectivity (JuiceFS to metadata engine, JuiceFS to object storage):

localhost

Additional Information
I dug around a little bit, and I think the v0.23.3 has a fix in place for #843 that introduced a regression.
Speciifcally, there is a lot going on in the ceFormat func, however, I think around L965, the text ${metaurl} is getting escaped to $'<whatever your metaurl text is>', which obvisouly won't work, as reported by L998 just a bit later, after the command is invoked.
I would take a stab at submitting a PR, however, there's some stuff going on that I'm not entirely sure about--namely why cmdArgs + args are declared (L934 + L935) and filled with identical information, but cmdArgs is never actually used anywhere except logging statements (from what I can tell)--maybe it's a different codepath for ce vs ee versions?  The actual invocation of the cmd happens on L988 using args only.
At any rate, I'm happy to help submit a PR, if it would be useful.  Thank you!

try URL Encoding for metaurl

try URL Encoding for metaurl

Hi @zxh326 , are you saying the EscapeString func should instead use URL Encoding?

pre-escape metaurl in secret spec
if metaurl has special character password need to be replaced by url encoding, such as | needs to be replaced with %7C

pre-escape metaurl in secret spec
if metaurl has special character password need to be replaced by url encoding, such as | needs to be replaced with %7C

Hi, I am still not following, sorry.  The metaurl I am using is:
etcd://root:dead-beef@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1&server-name=juicefs.kitchen.example.org
Which has a password of dead-beef.  If I pass that thru rawurlencode, it doesn't change, so I am assuming it doesn't need further escaping in this case?

Which has a password of dead-beef. If I pass that thru rawurlencode, it doesn't change

yes!
could you try changing insecure-skip-verify=1&server-name toinsecure-skip-verify=1%26server-name？

could you try changing insecure-skip-verify=1&server-name toinsecure-skip-verify=1%26server-name？

Okay, I gave that a try, and while it doesn't seem to error out on the formatting of metaurl, it does not succeed in formatting the actual volume:
I0919 17:00:32.441384       7 node.go:107] NodePublishVolume: volume_id is database-juicefs
I0919 17:00:32.441416       7 node.go:118] NodePublishVolume: volume_capability is mount:<fs_type:"ext4" mount_flags:"noatime" > access_mode:<mode:MULTI_NODE_MULTI_WRITER >
I0919 17:00:32.441483       7 node.go:124] NodePublishVolume: creating dir /local/csi/per-alloc/d98ff0e3-09d8-bb47-388a-695fd8be4afb/database-juicefs/rw-file-system-multi-node-multi-writer
I0919 17:00:32.441627       7 node.go:139] NodePublishVolume: volume context: map[capacity:0 subPath:database-juicefs]
I0919 17:00:32.441656       7 node.go:149] NodePublishVolume: mounting juicefs with secret [name secret-key storage trash-days access-key bucket capacity metaurl], options [noatime]
W0919 17:00:32.441700       7 juicefs.go:352] Get PV with volumeID database-juicefs error: k8s client is nil
I0919 17:00:32.446697       7 juicefs.go:984] ceFormat cmd: [/usr/local/bin/juicefs format --storage=minio --bucket=http://minio.nomad.kitchen.example.org:9000/kitchen --access-key=administrator --trash-days=0 --capacity=1 --secret-key=${secretkey} ${metaurl} database-juicefs]
I0919 17:00:48.458570       7 juicefs.go:1004] Format output is 2024/09/19 17:00:32.544408 juicefs[20] <INFO>: Meta address: etcd://root:****@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/01j80mr2r201qkeyzkesbc2s0w?insecure-skip-verify=1%26server-name=juicefs.kitchen.example.org [interface.go:504]
I0919 17:00:48.458655       7 juicefs.go:1007] Format error: signal: killed
E0919 17:00:48.458902       7 driver.go:102] GRPC error: rpc error: code = Internal desc = Could not mount juicefs: juicefs format error: juicefs format 16s timed out
I0919 17:00:49.794729       7 node.go:212] NodeUnpublishVolume: volume_id is database-juicefs
I0919 17:00:49.795228       7 process_mount.go:257] ProcessUmount: /local/csi/per-alloc/d98ff0e3-09d8-bb47-388a-695fd8be4afb/database-juicefs/rw-file-system-multi-node-multi-writer target not mounted
I0919 17:00:49.795601       7 process_mount.go:302] ProcessUmount: /local/csi/per-alloc/d98ff0e3-09d8-bb47-388a-695fd8be4afb/database-juicefs/rw-file-system-multi-node-multi-writer target not mounted

can you check *.kitchen.example.org is reachable in the container?

could you try changing insecure-skip-verify=1&server-name toinsecure-skip-verify=1%26server-name？

Okay, I gave that a try, and while it doesn't seem to error out on the formatting of metaurl, it does not succeed in formatting the actual volume:
I0919 17:00:32.441384       7 node.go:107] NodePublishVolume: volume_id is database-juicefs
I0919 17:00:32.441416       7 node.go:118] NodePublishVolume: volume_capability is mount:<fs_type:"ext4" mount_flags:"noatime" > access_mode:<mode:MULTI_NODE_MULTI_WRITER >
I0919 17:00:32.441483       7 node.go:124] NodePublishVolume: creating dir /local/csi/per-alloc/d98ff0e3-09d8-bb47-388a-695fd8be4afb/database-juicefs/rw-file-system-multi-node-multi-writer
I0919 17:00:32.441627       7 node.go:139] NodePublishVolume: volume context: map[capacity:0 subPath:database-juicefs]
I0919 17:00:32.441656       7 node.go:149] NodePublishVolume: mounting juicefs with secret [name secret-key storage trash-days access-key bucket capacity metaurl], options [noatime]
W0919 17:00:32.441700       7 juicefs.go:352] Get PV with volumeID database-juicefs error: k8s client is nil
I0919 17:00:32.446697       7 juicefs.go:984] ceFormat cmd: [/usr/local/bin/juicefs format --storage=minio --bucket=http://minio.nomad.kitchen.example.org:9000/kitchen --access-key=administrator --trash-days=0 --capacity=1 --secret-key=${secretkey} ${metaurl} database-juicefs]
I0919 17:00:48.458570       7 juicefs.go:1004] Format output is 2024/09/19 17:00:32.544408 juicefs[20] <INFO>: Meta address: etcd://root:****@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/01j80mr2r201qkeyzkesbc2s0w?insecure-skip-verify=1%26server-name=juicefs.kitchen.example.org [interface.go:504]
I0919 17:00:48.458655       7 juicefs.go:1007] Format error: signal: killed
E0919 17:00:48.458902       7 driver.go:102] GRPC error: rpc error: code = Internal desc = Could not mount juicefs: juicefs format error: juicefs format 16s timed out
I0919 17:00:49.794729       7 node.go:212] NodeUnpublishVolume: volume_id is database-juicefs
I0919 17:00:49.795228       7 process_mount.go:257] ProcessUmount: /local/csi/per-alloc/d98ff0e3-09d8-bb47-388a-695fd8be4afb/database-juicefs/rw-file-system-multi-node-multi-writer target not mounted
I0919 17:00:49.795601       7 process_mount.go:302] ProcessUmount: /local/csi/per-alloc/d98ff0e3-09d8-bb47-388a-695fd8be4afb/database-juicefs/rw-file-system-multi-node-multi-writer target not mounted

I noticed that your other PR has the same metaurl, but it can be mount normally

can you check *.kitchen.example.org is reachable in the container?

Yes, this is accessible from the container (I have a custom juicefs-csi-driver image I run that bypasses the escaping, and the volume can get formatted and mounted just fine).
I ran the command manually after execing into the juicefs-node alloc, and got this output (with the pre-escaped & in the metaurl)--note that it stayed there for a long time (~30 mins) before I manually did ctrl+c.
Let me know if you need anything else.
Failure
root@nomad-n3-debian12:/app# juicefs -v --trace format --storage=minio --bucket=http://minio.nomad.kitchen.example.org:9000/kitchen --access-key=administrator --trash-days=0 --secret-key=dead-beef 'etcd://root:dead-beef@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1%26server-name=juicefs.kitchen.example.org' database-juicefs
2024/09/20 19:07:40.270276 juicefs[59] <DEBUG>: maxprocs: Leaving GOMAXPROCS=4: CPU quota undefined [maxprocs.go:47]
2024/09/20 19:07:40.270482 juicefs[59] <INFO>: Meta address: etcd://root:****@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1%26server-name=juicefs.kitchen.example.org [interface.go:504]
2024/09/20 19:07:40.270612 juicefs[59] <DEBUG>: Debug agent listening on <IP_ADDRESS>:6060 [main.go:321]
2024/09/20 19:07:40.272739 juicefs[59] <DEBUG>: Debug agent listening on <IP_ADDRESS>:6061 [main.go:321]
^C

root@nomad-n3-debian12:/app# date --utc
Fri Sep 20 19:38:12 UTC 2024

Success
Using my custom image, if I re-run the command with the &, it works just fine:
root@nomad-n3-debian12:/app# juicefs -v --trace format --storage=minio --bucket=http://minio.nomad.kitchen.example.org:9000/kitchen --access-key=administrator --trash-days=0 --secret-key=dead-beef 'etcd://root:dead-beef@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1&server-name=juicefs.kitchen.example.org' database-juicefs
2024/09/20 19:40:36.385106 juicefs[68] <DEBUG>: maxprocs: Leaving GOMAXPROCS=4: CPU quota undefined [maxprocs.go:47]
2024/09/20 19:40:36.385448 juicefs[68] <INFO>: Meta address: etcd://root:****@node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/database-juicefs?insecure-skip-verify=1&server-name=juicefs.kitchen.example.org [interface.go:504]
2024/09/20 19:40:36.385492 juicefs[68] <DEBUG>: Debug agent listening on <IP_ADDRESS>:6060 [main.go:321]
2024/09/20 19:40:36.386385 juicefs[68] <DEBUG>: Debug agent listening on <IP_ADDRESS>:6061 [main.go:321]
2024/09/20 19:40:36.556775 juicefs[68] <DEBUG>: Creating minio storage at endpoint http://minio.nomad.kitchen.example.org:9000/kitchen [object_storage.go:167]
2024/09/20 19:40:36.557066 juicefs[68] <INFO>: Data use minio://minio.nomad.kitchen.example.org:9000/kitchen/database-juicefs/ [format.go:484]
2024/09/20 19:40:36.687929 juicefs[68] <DEBUG>: txn with 0 conds and 1 ops took 22.522412ms [tkv_etcd.go:191]
2024/09/20 19:40:36.688121 juicefs[68] <INFO>: Volume is formatted as {
  "Name": "database-juicefs",
  "UUID": "bcd747a6-339a-484a-8eee-c44922cae96d",
  "Storage": "minio",
  "Bucket": "http://minio.nomad.kitchen.example.org:9000/kitchen",
  "AccessKey": "administrator",
  "SecretKey": "removed",
  "BlockSize": 4096,
  "Compression": "none",
  "EncryptAlgo": "aes256gcm-rsa",
  "KeyEncrypted": true,
  "TrashDays": 0,
  "MetaVersion": 1,
  "MinClientVersion": "1.1.0-A",
  "DirStats": true,
  "EnableACL": false
} [format.go:521]

FWIW, I switched to tikv metadata engine, and it shows the same behaviour (I am specifying TLS connection properties, so I need a valid '&' that is not encoded).  When I use my custom image that does not do the escaping, it works fine:
I0925 22:06:22.356287       7 node.go:107] NodePublishVolume: volume_id is minio-data-juicefs
I0925 22:06:22.356307       7 node.go:118] NodePublishVolume: volume_capability is mount:<fs_type:"ext4" mount_flags:"noatime" > access_mode:<mode:MULTI_NODE_MULTI_WRITER >
I0925 22:06:22.356375       7 node.go:124] NodePublishVolume: creating dir /local/csi/per-alloc/a504818f-f852-2040-9c2c-97b5461dec24/minio-data-juicefs/rw-file-system-multi-node-multi-writer
I0925 22:06:22.356498       7 node.go:139] NodePublishVolume: volume context: map[capacity:1073741824 subPath:minio-data-juicefs]
I0925 22:06:22.356527       7 node.go:149] NodePublishVolume: mounting juicefs with secret [access-key bucket metaurl name secret-key storage trash-days], options [noatime]
W0925 22:06:22.356542       7 juicefs.go:352] Get PV with volumeID minio-data-juicefs error: k8s client is nil
I0925 22:06:22.356804       7 juicefs.go:984] ceFormat cmd: [/usr/local/bin/juicefs format --storage=minio --bucket=http://minio.nomad.kitchen.example.org:9000/kitchen --access-key=administrator --trash-days=0 --secret-key=${secretkey} ${metaurl} minio-data-juicefs]
I0925 22:06:22.487702       7 juicefs.go:1004] Format output is 2024/09/25 22:06:22.471000 juicefs[28] <INFO>: Meta address: $'tikv://node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/minio-data-juicefs?ca=/tls/kitchen/rootCA.pem&cert=/tls/kitchen/default.pem&key=/tls/kitchen/default-key.pem&verify-cn=juicefs.kitchen.example.org' [interface.go:504]
2024/09/25 22:06:22.471214 juicefs[28] <FATAL>: Invalid meta driver: $'tikv [interface.go:507]
I0925 22:06:22.487744       7 juicefs.go:1007] Format error: exit status 1
E0925 22:06:22.487879       7 driver.go:102] GRPC error: rpc error: code = Internal desc = Could not mount juicefs: juicefs format error: 2024/09/25 22:06:22.471000 juicefs[28] <INFO>: Meta address: $'tikv://node1.nomad.kitchen.example.org:2379,node2.nomad.kitchen.example.org:2379,node3.nomad.kitchen.example.org:2379/minio-data-juicefs?ca=/tls/kitchen/rootCA.pem&cert=/tls/kitchen/default.pem&key=/tls/kitchen/default-key.pem&verify-cn=juicefs.kitchen.example.org' [interface.go:504]
2024/09/25 22:06:22.471214 juicefs[28] <FATAL>: Invalid meta driver: $'tikv [interface.go:507]
: exit status 1

I also face the same problem with a Postgresql metadata engine and a Minio cluster.
I'm not sure what has to be URL encoded in the metaurl.
For example, in postgres://juicefs_user:MyPassword*!!@<IP_ADDRESS>:5432/juicefs?sslmode=disable, has only the MyPassword*!! to be encoded or the whole connection string ?
Moreover, beside formatting the volume, can I upgrade the CSI driver over running volumes by only registering the volume with updated metaurl ?

Thanks for your answer.
I finally looked at the code and found what I was looking for.
For the question about migration, I figured out by myself.
Thanks again


XXE Mitigation & Code Cleanup

@famod Would you be kind enough to do a quick code review here.
Nothing too drastic in terms of code cleanup, BUT there are a couple XXE related security issues that are addressed with how we were using DocumentBuilderFactory and TransformerFactory in QuarkusCxfProcessor.  Both issues were identified in a local Sonar scan, more details at the link below:
https://rules.sonarsource.com/java/RSPEC-2755

Can you comment on the removed classes? IIRC, at some point I had a look at QuarkusJaxWsProxyFactoryBean (don't remember why) so now I'm surprised it's gone.

Can you comment on the removed classes? IIRC, at some point I had a look at QuarkusJaxWsProxyFactoryBean (don't remember why) so now I'm surprised it's gone.

Thanks @famod I used the jacoco agent and jacoco cli libraries to put together some coverage reports (for both unit tests and, more importantly, runtime integration tests).  These three deleted classes (VertxConduit, QuarkusJAXBBeanInfo and QuarkusJaxWsProxyFactoryBean) were not used at all in any of the flows.
Also, searching through references in the codebase confirms the same.  For example, if we search for QuarkusJaxWsProxyFactoryBean in the existing code, there are no Java references to the class, and nothing indicating that it's used in the native flows either.  So, I concluded that these classes may have been used at some point in the past, but they are currently no longer needed.  Let me know your thoughts!

Awesome, thank you - I had removed the leftover bit in a subsequent commit.  Thanks again!

@shumonsharif I just read all commit since I left and good catch. BTW to explain the history, I create VertxConduit because of cxf doc about how to build a custom VertxConduit because when I need to plus vertx to cxf without other http server, I used this doc : https://cxf.apache.org/docs/custom-transport.html
and it need to build conduit and transport but conduit is for client side so I do not need a custom one to switch to vertx and I forget to clean it up.

@dufoli It's great to hear from you!  Are you back?  Or just dropping in for a quick visit?  :)  Hope all is well.


[BUG] saveImage.sh should check for multiple occurences

Some users have short delays and long module processing times which means multiple saveImage.sh's might run at once which can cause read and write errors.
saveImage.sh should only allow one instance to run at a time.
It should keep track of the number aborts just like upload.sh does.
The "process lock" code should be generalized and added to functions.sh since it's already in upload.sh and timelapse.sh.

Closing Issue - fixed in point release.


Weekend Update ™

Added updates for importing contract addr with n number params.
Added updates to user wallet.
updated UA string.
updated NeoNode functionality

Coverage decreased (-0.07%) to 51.045% when pulling 990d3d194eac761e973673e00770077d4a6ffdf5 on development into 12dee9f4b34dc437a2bf26a60a0a4ae276d0a879 on master.


Clustering - How to keep models synchronized among the servers?

If some Cluster member be down during add sentence event (single or tmx), the model in this node will not be updated, correct?
I see a message in log files showing that replication is not available in this version and that brings me to the following question:
Is there any kind of synchronization or data replication in place for engine models directory, embedded in MMT?
Thanks.

Ok, I see that internal sync has been removed some time ago.
What are te sync options?
NFS - since files will be the same, I had some issues with Kafka index files. Also, I believe I can face some issues with file locking.
Bind mounting  same as NFS.
Dis not try yet:
rsync
Clustering block device (ie. drbd) as  active-active
Any other option?

Hi @rptl
all the info about setting up the cluster are available here: MMT Cluster.
Long story short: once you created an engine from scratch, you have to manually copy the engines/<engine_name> folder to all the members of your cluster. But that must be done only the very first time.
Once done that, you can start your cluster and, from that point on, all the contributions (import and single source/target contributions) will be automatically synched to all nodes of the cluster. Even if a node lost the connection for a while, as soon as it will re-join the cluster it will receive all the updates, no one will be lost (thanks to the Kafka queue).
So no need for NFS setup or rsync, consistent delivery of updates and new domains is handled automatically by the system.
One last thing: the default MMT Cluster has a Leader-Followers scheme (datastream is Kafka, while database is Cassandra). In this configuration you have a single point of failure: if the Leader node goes down, the Cluster will be in trouble.
However MMT also allows a Peer-to-Peer configuration, which I recommend for production, where any node of the cluster can go down without harming the overall functioning. This configuration is described more in details here: MMT peer-to-peer cluster, an example configuration is also available here.
Hope this helps!
Cheers

I'm closing this issue right now, if you need more help please don't hesitate to re-open it!


Skip

TLDR;
We might want to break skip into three functions:

prepend
append
skip (yup)

And we have an issue with keyed elements and skip, leaving an invalid keyMap with references to zombie children nodes that are no longer in the tree.

To start with, I'm curious how you see skip being used. It actually solves a problem with the Glimmer render I'm working on.
The way I see this working is like so:
function render(data) {
  return

;
};

// - - -
// Translates to something like

function render(data) {
  var elements = render.elements = [];
  elements.push(elementOpen("div"));
  elementVoid("div", null, null, "id", data.id);
  elementClose('div');
  return elements[0];
}

// A more efficient rerender function, since we don't need to walk the _entire_ tree
render.secondRender = function(data) {
  patch(render.elements[0], (data) => {
    elementVoid("div", null, null, "id", data.id);
  }, data);

  // Use skip to prevent clearing from outer patch context,
  // since `secondRender` was called like so:
  //     patch(container, render.secondRender, data)
  skip();
  return render.elements[0];
};

patch(container, render, data);
// Later, repatch
patch(container, render.secondRender, data);

Specifically, I imagine opening an element, skipping, and then immediately closing it — no children. The children route is an option, but there are issues. Obviously we don't want to clear children, but means we could be creating a whole slew of new elements without ever garbage collecting the old:
function render(data) {
  elementVoid('div', data.key);
  skip();
}

patch(container, render, { key: i++ });
patch(container, render, { key: i++ });

That could be useful for prepending to lists... :smile:. But actually, that example won't work because of a niggle in our alignment algorithm. We'll replaceChild the old keyed element (because it has a key), and it'll just be left sitting in the keyMap, even though it's no longer in the DOM (and keyMapValid === false).
Instead, we might want to break skip into three functions:

prepend - Useful for my hypothetical case above

Required to be first call inside elementOpen
allows children elements after the call

turns off the replaceChild alignment

skips clearing of children

append - Useful for the opposite case, appending to the list

Required to be first call inside elementOpen
allows children elements after the call
sets currentNode to null and previousNode to currentParent.lastChild

skips clearing of children, by virtue of our current algorithm

skip - Useful for my Glimmer case

Required to be the only call inside elementOpen

doesn't allow children elements

skips clearing of any children

I had originally planned on using the placeholder attribute to conditionally stop at rendering a subtree, but found skip to be a much better API. What I plan on using it for is to do is something like:
function render(data) {
  elementOpen('div');
    if (needsUpdate(currentElement(), data) {
     // more calls
    } else {
      skip();
    }
  elementClose('div');
  }

where needsUpdate could stash data on the element and check against the previous data. It basically allows you to not have to use elementPlaceholder with a nested patch and just do the work in a single patch context.
I wonder if for your case having a patch function that patches an element itself rather than the children might be more useful. It is something that I have considered, but have done yet.

but found skip to be a much better API. What I plan on using it for is to do is something like:
It basically allows you to not have to use elementPlaceholder with a nested patch and just do the work in a single patch context.

That actually looks very nice, and fits in with my suggested skip changes. :smile:

and just do the work in a single patch context.

Something like that won't work for my Glimmer example, since I could be patching children at arbitrary indexes. Without using nested patches, I would have to do something like:
function render() {
  // Static
  elementOpen('div');
    skip();
  elementClose('div');
  // Static
  elementOpen('div');
    skip();
  elementClose('div');
  // Dynamic
  elementOpen('div', dynamicDiv);
    elementVoid('div', null, null, 'id', id++);
  elementClose('div');
  // Skip the rest
  skip();
}

// Instead of just
function render() {
  patch(dynamicDiv, () => elementVoid('div', null, null, 'id', id++));
  skip();
}

I wonder if for your case having a patch function that patches an element itself rather than the children

That would be very interesting. I definitely wouldn't want to get rid of our current patch, but providing a patchElement(el: Element, render: function, data: *, statics: ?Array, ...dyanmics). That would allow skip to assert that there are no children because we're opening a new patch context.

How about something like skipWithKey(key)
Used like
//First Render:
elementVoid("input", "newtodoinput");
elementOpen("div", "todolist");
elementClose();

//Second Render:
elementVoid("input", "newtodoinput");
skipWithKey("todolist");

This solves the problem of having different functions like prepend or append. (But we will need keys for all other elements).
Well the most important reason I'm pushing for this is that if I know that my component does not need to update, I don't need to know its tagName.
Or else somehow identify the tagName from the template and use it for any future (componentShouldUpdate() == false) patches.
But this does bring the added problem of when rendering from an array and the sort order of the array changes, but that is something which the component library should handle.


Render Latex without spaces between the segments

class Example1LaTeX(Scene):
    def construct(self):
        tex = Tex(r'$\xrightarrow{Hello}$ \LaTeX').scale(3)
        self.add(tex)

this example produces the following output:

Note that the arrow is not completely continuous, but has some black lines in between.
I think it would be nice when there would be a solution to print it continiously

Same e.g. here:
class ABC(Scene):
    def construct(self):
        text = MathTex(r" S_1(",r"t",r")= R \left( \begin{array}{c} "
                                     r"cos(\omega t) "
                                     r"\\ sin(\omega t)"
                                     r"\\ bt \end{array} \right)")
        self.add(text)
        self.wait(1)

ugh!
That's not good at all.
Is this also in the SVG images? Or does it only show up in manim?

Screenshot of the svg, that looks good:

I could solve it! :)
See #570


String Literal of "</script>" should not be rewritten to ''

A close script tag literal, i.e. "<\/script>" is rewritten to '</script>'. This is incorrect behavior because an unescaped close script tag ends javascript execution.
The correct behavior would be to leave the backslash in the rewritten tag: '<\/script>'.

What do you mean by "rewritten"? Esprima creates an AST from the source code, it doesn't actually "write" anything. Are you talking about the value of the Literal?

value contains the literal content of the string. Because / is not an escape character, \/ is converted to /, just as defined in the ECMAScript specification:

The CV of SingleStringCharacter :: \ EscapeSequence is the CV of the EscapeSequence.
[...]
The CV of EscapeSequence :: CharacterEscapeSequence is the CV of the CharacterEscapeSequence.
The CV of CharacterEscapeSequence :: NonEscapeCharacter is the CV of the NonEscapeCharacter.

This doesn't seem to be an issue with esprima.

Nor is it an issue with escodegen, the tool you are probably using to codegen the AST. This a a problem with how you are encoding JavaScript in an HTML context. This issue has nothing to do with esprima. Also, use backticks to delimit code on Github and you won't have issues with talking about HTML.

@ameeshg Shall we close this? I think this issue doesn't apply here.

Closing this as Invalid.


Explosion of .cf-before-edit suffixed files is created if any file in /etc/sudoers.d is repaired

One promise statement covers both /etc/sudo and /etc/sudoers.d/*
https://github.com/Lex-2008/sudo-requires-passwords/blob/187ce4b0444f56b2b4db0a0bbb85b6232a1a00bf/sudo-requires-password.cf#L9-L10
The current implementation results in many .cf-before-edit suffixed files being created and left in /etc/sudoers.d/.
    info: Replaced pattern '^([^#]*)NOPASSWD\s*:(.*$)' in '/etc/sudoers.d/vagrant'
    info: replace_patterns promise '^([^#]*)NOPASSWD\s*:(.*$)' repaired
    info: Edited file '/etc/sudoers.d/vagrant'
    info: Replaced pattern '^([^#]*)NOPASSWD\s*:(.*$)' in '/etc/sudoers.d/vagrant.cf-before-edit'
    info: replace_patterns promise '^([^#]*)NOPASSWD\s*:(.*$)' repaired
    info: Edited file '/etc/sudoers.d/vagrant.cf-before-edit'
    info: Replaced pattern '^([^#]*)NOPASSWD\s*:(.*$)' in '/etc/sudoers.d/vagrant.cf-before-edit.cf-before-edit'
    info: replace_patterns promise '^([^#]*)NOPASSWD\s*:(.*$)' repaired
    info: Edited file '/etc/sudoers.d/vagrant.cf-before-edit.cf-before-edit'
[root@hub cfbs]# ls /etc/sudoers.d/
vagrant                                               vagrant.cf-before-edit.cf-before-edit.cf-before-edit.cf-before-edit
vagrant.cf-before-edit                                vagrant.cf-before-edit.cf-before-edit.cf-before-edit.cf-before-edit.cf-before-edit
vagrant.cf-before-edit.cf-before-edit                 vagrant.cf-before-edit.cf-before-edit.cf-before-edit.cf-before-edit.cf-before-edit.cf-before-edit
vagrant.cf-before-edit.cf-before-edit.cf-before-edit
You have new mail in /var/spool/mail/root

Some services (like yum for example) will try to slurp these files up as part of the configuration, but sudo is not affected by these extra files:
#includedir /etc/sudoers.d

sudo will read each file in /etc/sudoers.d, skipping file names that end in '~' or contain a '.' character to avoid causing problems with package manager or editor temporary/backup files. Files are parsed in sorted lexical order. That is, /etc/sudoers.d/01_first will be parsed before /etc/sudoers.d/10_second. Be aware that because the sorting is lexical, not numeric, /etc/sudoers.d/1_whoops would be loaded after /etc/sudoers.d/10_second. Using a consistent number of leading zeroes in the file names can be used to avoid such problems.

Since includedir doesn't cause sudo to read files that contain a dot it should be sufficient to exclude this pattern with your lsdir()

https://github.com/Lex-2008/sudo-requires-passwords/compare/master...nickanderson:patch-1

good point, thanks! Suggestion merged


Mechanism similar to the Spring Data JPA Projections

Dear Spring Data Aerospike Team,
For the reasons of performance, it is sometimes needed to read only a part (some particular bins) of the document as not all the information from the document is required for the particular use-case, and it makes no sense to fetch all the details. It seems, that this goal cannot be achieved with the current implementation of Spring Data Aerospike. Technically it may be possible to imitate projections by creating a separate entity (Projection Entity) with a more narrow subset of fields compared to the main entity, mapping it to the same document, and creating a separate Repository. But this approach has significant downfalls.

It is not safe to create a separate Repository as it is possible to save the Projection Entity and lose some part of the information.
The current implementation of the AerospikeTemplate#findById method does not pass the list of bins to the client. The same is true also for the AerospikeTemplate#findAllByIds. This means that all the bins for the given PK are fetched from the Aerospike anyway.

Having all this said, it may be really helpful to have the mechanism similar to projections for the Aerospike implementation of the Spring Data. I believe that it is technically possible, as the client has a way to retrieve the subset of bins for the given PK.

@bcherniakh Projection PR is now merged (https://github.com/aerospike-community/spring-data-aerospike/pull/415) and will be officially supported in the next release of Spring Data Aerospike (3.5.0) which we plan to release soon.