refactor: better abstraction for visitors

This will close #2745,
In this PR I attempt to fix this issue using a combination of ideas discussed in the issue mentioned above, I've created this early draft so people can pitch in if there is something I should consider doing.
The first goal of this PR is to resolve the issue with the possible illegal references, As a result of my approach it would also end up with a bunch of walk_* and walk_*_mut functions to help with the abstraction. I want to eliminate enter_node and leave_node functions, but I still haven't started working on it since I first want to familiarize myself with all of its usage throughout the project. I'm hesitating to do it at the moment, When we want to do this it would require quite a bit of refactoring so we should make sure it is probably going to work and end up being a better implementation.

@Boshen somehow I can't get tasks to run on my system, Is there any possibility for me to have tasks run on GitHub? If there is no lack of resources for running my tasks remotely, it would help me to continue my work on it easier. Please consider approving this PR for running workflows.
It stopped me dead on track after the initial commit of mine, I need to get it to work before I can continue working on the issue on hand since I'm sure I've already broken some stuff with this change.
I suspect that it is because of external resource, I've found out that older releases(went around 5 to 8 months back), I can see there is no more submodules for including them, What is the approach now?

@Boshen somehow I can't get tasks to run on my system, Is there any possibility for me to have tasks run on GitHub? If there is no lack of resources for running my tasks remotely, it would help me to continue my work on it easier. Please consider approving this PR for running workflows.

Sure, Since this is your first time contributing to this repo we need to manually approve the run ci.

@Boshen somehow I can't get tasks to run on my system, Is there any possibility for me to have tasks run on GitHub? If there is no lack of resources for running my tasks remotely, it would help me to continue my work on it easier. Please consider approving this PR for running workflows.

Sure, Since this is your first time contributing to this repo we need to manually approve the run ci.

Thanks!

This PR should be ready to merge, I've managed to get rid of the transmutation in the VisitMut trait altogether. I've also made a few methods in that trait use a walk function for their underlying implementation. If you guys agree in another PR I can refactor all methods to use walk functions for abstraction.
Let me know if there is any issue, ambiguity, lack of documentation, or clarity in this PR.

@Dunqing Hi, Sorry to ping you here. Can you approve workflow actions for this PR once more? I've found a workaround for tests by running them on my fork but I can't get the benchmark result.
If there are no performance drops it should be ready to merge.

I wonder whether we should copy a VisitMut2 and move this to the transformer, so the transformer is all self-contained.
For two reasons:

I think there are downstream tools which depend on this, this'll be a huge breaking change.
The transformer will end-up with a few more iterations of overhaul. There are several people who are looking at the transformer from different angles. All self-contained code will make transitions easier.

I'm on vacation right now, please excuse me for the late response and the trouble.

Hello @Boshen, First off I wanna thank you for responding while on vacation. It means a lot!

I think there are downstream tools which depend on this, this'll be a huge breaking change.

I believe if this change goes through despite it being a breaking change it will be a net positive for the third-party tools since we don't enforce unsafe code without letting them know about our assumptions of the code. Plus we are in the minor versions so breaking changes should be expected as it is not a stable release. It is also fairly easy to achieve the same thing without the old design, And if you need the transmutation in a specific transformer or third-party tool? well, then it is on the implementor to handle it, not the core trait itself.
If we don't change how visitors work right now, It going to never change or at least it is going to be left untouched for quite a long time since we will be too scared to even touch it.

The transformer will end-up with a few more iterations of overhaul. There are several people who are looking at the transformer from different angles. All self-contained code will make transitions easier.
I didn't quite understand this statement, Can you let me know why is there going to be additional iteration as a result of this approach?

TL;DR I think since implementing a custom VisitMut with walk functions introduced in #2776 isn't going to be such a chore, People can implement their own custom implementations if there is a need for a specific visitor in a specific case.

Localizing the Visitor, in this case, means that people have a basic visitor that can visit any node if they want to handle scope or node events they can use these methods instead of having specific methods for those events. It would make specialized traits local to their own transformer/crate.

I just want to add this, We can have a local trait called ScopeVisit which adds the scope events and is a super trait of the Visit.

In future, we can also experiment with the use of reference counting for AstNode's reference to the node itself. This way we shouldn't need the transmutation to begin with at the cost of some runtime performance.

Sorry for speaking in such short comments, I'm just thinking about this PR out loud so you know my thought process and can give me some insight if there is something that I'm not aware of.
Take this for example
impl<'a> VisitMut<'a> for NewTarget<'a> {
    fn enter_node(&mut self, kind: AstKind<'a>) {
        if let Some(kind) = self.get_kind(kind) {
            self.kinds.push(kind);
        }
    }

    fn leave_node(&mut self, kind: AstKind<'a>) {
        if self.get_kind(kind).is_some() {
            self.kinds.pop();
        }
    }
}

While it does implement VisitMut it actually doesn't need it to work. If it was going to actually walk the nodes itself it would've been a lot slower.
I've just took the idea which was already there and rewrote it as such:
impl<'a> NewTarget<'a> {
    pub(crate) fn enter_method_definition(&mut self, def: &MethodDefinition<'a>) {
        let kind = match def.kind {
            MethodDefinitionKind::Get
            | MethodDefinitionKind::Set
            | MethodDefinitionKind::Method => NewTargetKind::Method,
            MethodDefinitionKind::Constructor => NewTargetKind::Constructor,
        };
        self.push(kind);
    }

    pub(crate) fn leave_method_definition(&mut self, _: &MethodDefinition) {
        self.pop();
    }

    pub(crate) fn enter_object_property(&mut self, prop: &ObjectProperty<'a>) {
        if prop.method {
            self.push(NewTargetKind::Method);
        }
    }

    pub(crate) fn leave_object_property(&mut self, prop: &ObjectProperty<'a>) {
        if prop.method {
            self.pop();
        }
    }

    pub(crate) fn enter_function(&mut self, func: &Function<'a>) {
        if let Some(kind) = self.function_new_target_kind(func) {
            self.push(kind);
        }
    }

    pub(crate) fn leave_function(&mut self, func: &Function<'a>) {
        if self.function_new_target_kind(func).is_some() {
            self.pop();
        }
    }

    fn function_new_target_kind(&self, func: &Function<'a>) -> Option<NewTargetKind<'a>> {
        // oxc visitor `MethodDefinitionKind` will enter `Function` node, here need to exclude it
        if let Some(kind) = self.kinds.last() {
            if !matches!(kind, NewTargetKind::Function(_)) {
                return None;
            }
        }
        func.id.as_ref().map(|id| NewTargetKind::Function(Some(id.name.clone())))
    }
}

Now with walk functions, we can have the main transformer(transformer/lib.rs) implement something like this:
    // from Transformer implementation of VisitMut
    fn visit_function(&mut self, func: &mut Function<'a>, flags: Option<ScopeFlags>) {
        self.es2015_new_target.as_mut().map(|t| t.enter_function(func));
        walk_function_mut(self, func, flags);
        self.es2015_new_target.as_mut().map(|t| t.leave_function(func));
    }

I would like to elaborate on this statement.

does less work, compiles easier(including compiler optimizations)

In the example I've mentioned above it wouldn't be noticeable, But when walking huge arrays if we don't call enter and leave functions it is going to let the compiler and CPU better use cache lines which in theory should minimize the cache misses while iterating the child nodes.


Rendering issues IE11, Firefox

Blank page on IE11
Firefox is unable to parse token

Token seems to work with FireFox 52.0.2, probably because of previous code changes.
IE11 is broken due to incorrect global Window reference


Does xtensor allow Union{Missing, String}

In a string vector, doesn xtensor allow mixing a "missing" value and strings? Or every element have to be a string?

Hi, I think what you might be looking for is missing values in xtensor:
https://xtensor.readthedocs.io/en/latest/missing.html
You can achieve what you want either by using the xarray_optional<std::string> or through xarray<xtl::xoptional<std::string>> whereby the first option should be more performant. Let me know if the docs are not clear enough.


Fix max retry

:recycle: Current situation
The value 0 cannot be used as it is evaluated in the same way as being unset.
:bulb: Proposed solution
Check the actual type of the value to allow 0 retries.
This is needed with v4.0.0+ as READ_TIMEOUT errors occur even on success, resulting in erratic retry behavior. Using v.3.7.0 is still the safest option.

Thanks!


Code . (no longer working)

Type code . in the terminal. When doing this for the first time, you should see VS Code fetching components needed to run in WSL. This should only take a short while, and is only needed once.
I have been using code . to open terminal but my ubuntu command line interface no longer recognizes it. I am getting this feedback
Command 'code' not found, did you mean:
command 'cdde' from deb cdde
command 'node' from deb nodejs
command 'tcode' from deb emboss
command 'cde' from deb cde
command 'ode' from deb plotutils
command 'cobe' from deb python-cobe
Try: sudo apt install
What's the remedy?
Please reach me on<EMAIL_ADDRESS>with the solution.

Have you recently updated your operating system?


How is this project deployed?

I am curious about the infrastructure for this project. I saw that the web frontend uses Next.js. Is this also deployed that way? How is the data stored?

For the website, we indeed use Next.js, and we are running this in a cluster, you can find a Dockerfile in that repository, which is the one we use for deployment of the website. We are unable to answer any questions based on how we store data internally.


Make enum argument values case insensitive

If we use an argument of a type that is an enum, argparse4j with options BLACK and RED, the options will only work if the user specifies them in uppercase on the command-line.
This is unfortunate since the Java language best practice for enum values is always all uppercase and that doesn't make for user-friendly CLI argument values.
How about allowing the values provided by the user to be case insensitive and still matching them to the correct enum value?

I agree that case insensitive match would increase usability.
FYI, we have Arguments.enumStringType() (http://argparse4j.sourceforge.net/usage.html#argument-type), which takes into account of toString override for enum types.  It does not perform case insensitive match (as it is the default behaviour for all other flags processing), but it can use the value of toString(), so you can supply the good name for enum.  But it  could be tedious to add toString for each enum, probably this is not ideal for you?

Unless I misunderstand how that functionality works, I wouldn't be able to accept both upper and lowercase, or mixed case, would I? So it's not exactly equivalent.

No.  Everything is case sensitive.  OK, then we already handle enum as special case, so let's make them case-insensitive.

:+1:

Thinking more carefully, although most users use uppercase name for enums in Java, nothing prevents us from doing like this:
enum Foo {
   BAR, bar, Bar
}

This means case insensitive match could be ambiguous, and if existing code has these enums (unlikely?), then we may break their code.
Sounds like we cannot change the default behaviour.
I think you can create a custom ArgumentType to achieve this.

Yes, you do have a point, that situation needs to be properly handled.
Suggestion: how about a test for that scenario where more than one enum option would collide if compared in a case-insensitive fashion, and the system sticks to case-sensitiveness in those situations only?

It probably works, unless application started to add new enums which collides previous ones, then suddenly match goes case-sensitive.

You right, that could happen. I think that would be really really uncommon, though. How many enums in Java have you seen where the values were not in all caps? :)
My suggestion is to clearly document this behavior but still move forward, as this will help user-friendliness for the overwhelming majority of people that use enums with argparse4j.
What do you think?

We made couple of incompatible changes, but we really avoid that if possible.
Because we have no history to hear this kind of request before, I think it is safer to add dedicated ArgumentType sub class to handle case-insensitive match for enum.

Ok, let me know if there's anything I can do to help!

Sorry, I forgot to mention this issue in https://github.com/tatsuhiro-t/argparse4j/pull/80. Does the latter do what you need?

Yes, it does. Thank you! 🙇


WIP authorize and set "author"

What does this pull request aim to achieve? 💯
Resolves #1470
I thought we should get at least something for preliminary review from backend perspective. Originally I though merging all would be more ideal but it's turned out the existing design we are targeting has too many question marks and we need to clarify a few things.
I was hoping there was some kind of very clear authentication policy option like we have with Laravel but I couldn't find anything I was sure about. Here are a few I considered:

CASL - https://github.com/stalniy/casl. Pros: Isomorphic (could re-use policies on frontend React), integrated with mongoose. Cons: A bit confusion and I wasn't sure exactly how to integrate. ?Perhaps limited when it comes to checking role within team (as opposed to overall)? Not sure how well used/maintained it is
Casbin -   https://casbin.org/en/. Pros multi platform, could re-use policies on frontend React, maybe even native clients? Cons. More than a bit confusing.... ?Perhaps limited when it comes to checking role within team (as opposed to overall)?
gateman.js - https://github.com/NwangwuOsitadinma/gateman. Pros: Works with mongo data model. Might be worth considering later. Cons: only BE, doesn't seem well used/maintained.

Anyways so far my code works with existing post as org/user and will be usable for FE when we find a way to comment/like as an org. But that's it for now (no viewing feed as if org).
@davidoduk @tejasm2 @emtay @CamilaArias
**When it comes to alignment with product item ** https://www.notion.so/fightpandemics/0562fe39e5364561a0e12f76f19f8996?v=f9b57e5e8a3448e0b63bc4154b38ddf5&p=dd17a9eea26143bf8782ef2a73a19042
Currently it will not quite work with this but could with some modifications... As I raised in Slack recently I think if we are going with this "universal switch" one problem currently is it we need add designs (mobile - to see who is active user) in Figma as well as revamp  flows for some others (e.g. clicking on Organisation in profile menu, create a post flow, more) before I think we can confidently code this approach.
I'm not saying this is the way it has to be forever but maybe adding the user/org toggle in the PostSocial section would be a better option for launch until we clarify requirements and have a comprehensive design in Figma? This is similar to Facebook (personally I think it's also better UX for our use case as well especially considering future org "roles" but that's just me...).
As a reminder from Facebook (IU = Individual User, OU = Organisation User):

By default the PostSocial is in the context of yourself (even if during last visit you were the "page/business")

But you can toggle and the context is updated, then you can like/comment etc as the selected org

When it comes to messaging it's pretty straight forward... You visit the org page and then the context is switched you can message as that org (OR not if you don't have the permission later).
Just ideas we can discuss further through some other forum

[x] I have checked that no one else is working on similar changes.
[x] I have read the latest README and understand the development workflow.
[x] The name of this branch is: feature/<branch_name>, or hotfix/<branch_name> if this is a hotfix, where <branch_name> briefly describes the issue(s) resolved and is prefixed with the issue number(s) (e.g. 1127-1130-update-git-branching-model). The branch is created in a cloned version of this repo, not a forked repo.
[x] This branch is rebased/merged with the latest staging (or the latest production if it is a hotfix).
[x] There are no merge conflicts.
[x] There are no console warnings and errors.
[x] On the right hand side of this PR, I have linked the appropriate issue(s) under "Issues" and added a project progress under "Projects".
[x] The title describes the issue(s) being addressed using format: <issue_numbers> - <brief_issue_description> (e.g. #1127/#1130 - Update Git Branching Model)

Closing as (different but related) changes applied in #1517


Fix spelling

@tmmueller : Thanks for your contribution! The author, @markingmyname, has been notified to review your proposed change.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

powerbi-docs/developer/migrate-from-powerbi-embedded.md
:white_check_mark:Succeeded

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.

Reviewed editorial correction.


Added a point of clarification in documentation, if the user is runni…

Just a small addition to the README.md which may help another server owner. By default, Garry's Mod won't allow addons to communicate with other processes on the server; you need to add -allowlocalhttp to the launch options.
Feel free to reject and put it somewhere else in the file if you feel more appropriate.

Just a couple of points of reference:
https://wiki.facepunch.com/gmod/Global.HTTP
https://github.com/marceltransier/ttt_discord_bot/issues/6


[$250] #admins room of newly created collect workspace incorrectly shows that a user changed the auto-reporting frequency

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

Version Number: 9.0.3-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
Expensify/Expensify Issue URL:
Issue reported by: @kevinksullivan
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1719530451877409
Action Performed:

Sign up on OldDot
Select "Business" in the welcome task
When the message from a guide opens in the right hand pane, select Chat with me
Land in #admins room

Expected Result:
There should be no system message about changing reporting frequency
Actual Result:
There is a system message that suggests the user changed their reporting frequency to Instant, which is not true
Workaround:
Unknown
Platforms:

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

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01fc53212e31364513
Upwork Job ID:<PHONE_NUMBER>338732989
Last Price Increase: 2024-07-03

Issue OwnerCurrent Issue Owner: @c3024

Note: This may somehow relate to https://github.com/Expensify/Web-Expensify/pull/42326, where I tried to fix a case where answering "Business" in the welcome task (in OldDot) was updating policy settings that it shouldn't be updating...
I didn't notice the #admins room changelog

I posted this one initially and can confirm it's reproducible each time.

I was able to reproduce it. At first glance looks like a backend issue, because Inbox_Task_Complete response states that the auto reporting frequency of the policy has been set to instant.

We don't create the #admins room on workspace creation anymore. I can also see it's not here when I generate the #admins room.
https://github.com/user-attachments/assets/0dd8e6c0-fd4c-402c-968d-c59e4622d617

Closing!


'wrap_comments' do not support Chinese or Japanese comments.

When set 'wap_comments = true', it works fine for English comments. But when write comments in Chinese or Japanese, the long lines more than comment_width do not be wrapped.

I believe this is kinda already recognized problem but I just write this for my note.
TL;DR: This is very difficult problem.
https://github.com/rust-lang-nursery/rustfmt/blob/87edd75ecf26c9084969f431bb5e363693a8a4ca/src/string.rs#L46-L148
https://github.com/rust-lang-nursery/rustfmt/blob/87edd75ecf26c9084969f431bb5e363693a8a4ca/src/utils.rs#L329-L350
Currently rustfmt's line wrapping is not considering much about East-Asian scripts like Japanese, Chinese.
I just took a quick glance but I can point out at least 2 problems:

The styleguide is not saying anything about this but I think neither str::len() nor Chars::count() should be considered as "line length". The string "ゆゆ式" 's str::len() is 9 and Chars::count() is 3 but in normal monospace glyph it occupies 6 width. Unicode has a TR for this: UAX#11 (rust impl). Though this spec is still leaving us to decide which "context" we should use between CJK and non-CJK contexts. Maybe we can add this setting into rustfmt.toml?

Current line-breaking algorithm is not considering into non-space-separating languages (e.g. CJK). The current implementation is partially using Unicode TR [UAX#29] (rust impl) but it's not something working for CJK. I also feel like we would rather use [UAX#14] to decide the place to insert newline, but unfortunately we don't have official implementation under the official unicode-rs directory today because the TR is not trivial.

So... maybe we should start from implementing [UAX#14]? (just kidding)

Thanks for the useful info! I'm sorry this still doesn't work. This is covered by #6, so closing this issue, but I do want to fix this.


doesn't work + can't uninstall

The value inside the bracket is always the same as the starting value.
So I tried disabled the module, brackets are still here. I uninstall the module and it dosn't change anything...

FoundryVersion?
Do you have any modules that are changing something for the Ruler tool? (maybe there is an incompatibility that i dont know of)
Could you also tell me what the browser console is saying?  On Chrome its F12 and then then console tab. Do you see some errors there?
Did you also try to close foundry and reopen it after deactivating the module?

I, sorry for my english, I'm french and I don't always use the right words
browser : chrome
foundry : 8.9
module : Drag Ruler maybe
there's this error in the console :
VM4127:8 TypeError: Cannot set property 'length' of null
at refreshAreas (lighting.js:856)
at LightingLayer.🎁LightingLayer.prototype.refresh#perfect-vision
(lighting.js:614)
at LightingLayer. (lighting.js:757)
at LightingLayer.wrapper (patch.js:58)
at F.🎁call_wrapper [as call_wrapper] (libWrapper-wrapper.js:550)
at LightingLayer.🎁LightingLayer.prototype.refresh#0
(libWrapper-wrapper.js:163)
at LevelsUI.clearVisibility (ui.js:452)
at LevelsUI.close (ui.js:246)
at ui.js:590
at Function._call (eval at  (listeners.js:56),
:4:14)
and this in yellow but I don't know what I'm copying
Foundry VTT | Created Token with id [x5XCQlGefaBLMs8u] in parent Scene
[l1EXE6R4HJYjEKf0]
foundry.js:19484 You are calling PlaceableObject#setFlag which has been
deprecated in favor of Document#setFlag.
FoundryVersion?
Do you have any modules that are changing something for the Ruler tool?
(maybe there is an incompatibility that i dont know of)
Could you also tell me what the browser console is saying? On Chrome its
F12 and then then console tab. Do you see some errors there?
Did you also try to close foundry and reopen it after deactivating the
module?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Roger92/metric-ruler-labels/issues/2#issuecomment-919356789,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVUC6XRM5ZS4P7ZOVQA3JQDUB577HANCNFSM5EAS7DJA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
PAXION Matthias @.***>

Do you have "perfect-vision" as a module? And dont worry about the english :)
Hmm the error message comes from perfect-vision.   Can you give ma a list or screenshot of your activated modules? :) And if you are german you can switch to german if that is better for you :D

And this error appears in the console when you try to use the ruler tool? @valmeren
VM4127:8 TypeError: Cannot set property 'length' of null
    at refreshAreas (lighting.js:856)
    at LightingLayer.🎁LightingLayer.prototype.refresh#perfect-vision
(lighting.js:614)
    at LightingLayer.<anonymous> (lighting.js:757)
    at LightingLayer.wrapper (patch.js:58)
    at F.🎁call_wrapper [as call_wrapper] (libWrapper-wrapper.js:550)
    at LightingLayer.🎁LightingLayer.prototype.refresh#0
(libWrapper-wrapper.js:163)
    at LevelsUI.clearVisibility (ui.js:452)
    at LevelsUI.close (ui.js:246)
    at ui.js:590
    at Function._call (eval at <anonymous> (listeners.js:56),
<anonymous>:4:14)

sorry for the time for answering
here is an view of the problem, the module is curently uninstall [image:
test.jpg]
I use Perfect vision and here is the list
Le mar. 14 sept. 2021 à 20:28, Roger @.***> a écrit :

And this error appears in the console when you try to use the ruler tool?
@valmeren https://github.com/valmeren
VM4127:8 TypeError: Cannot set property 'length' of null
at refreshAreas (lighting.js:856)

at LightingLayer.🎁LightingLayer.prototype.refresh#perfect-vision

(lighting.js:614)
at LightingLayer.<anonymous> (lighting.js:757)

at LightingLayer.wrapper (patch.js:58)

at F.🎁call_wrapper [as call_wrapper] (libWrapper-wrapper.js:550)

at LightingLayer.🎁LightingLayer.prototype.refresh#0

(libWrapper-wrapper.js:163)
at LevelsUI.clearVisibility (ui.js:452)

at LevelsUI.close (ui.js:246)

at ui.js:590

at Function._call (eval at <anonymous> (listeners.js:56),

:4:14)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Roger92/metric-ruler-labels/issues/2#issuecomment-919409286,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVUC6XQECLS3XG2ZNNYB3IDUB6H53ANCNFSM5EAS7DJA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
PAXION Matthias @.***>

and there's no red error when I use the the ruler
Le mer. 15 sept. 2021 à 14:51, Matthias PAXION @.***> a
écrit :

sorry for the time for answering
here is an view of the problem, the module is curently uninstall [image:
test.jpg]
I use Perfect vision and here is the list
Le mar. 14 sept. 2021 à 20:28, Roger @.***> a écrit :

And this error appears in the console when you try to use the ruler tool?
@valmeren https://github.com/valmeren
VM4127:8 TypeError: Cannot set property 'length' of null
at refreshAreas (lighting.js:856)

at LightingLayer.🎁LightingLayer.prototype.refresh#perfect-vision

(lighting.js:614)
at LightingLayer.<anonymous> (lighting.js:757)

at LightingLayer.wrapper (patch.js:58)

at F.🎁call_wrapper [as call_wrapper] (libWrapper-wrapper.js:550)

at LightingLayer.🎁LightingLayer.prototype.refresh#0

(libWrapper-wrapper.js:163)
at LevelsUI.clearVisibility (ui.js:452)

at LevelsUI.close (ui.js:246)

at ui.js:590

at Function._call (eval at <anonymous> (listeners.js:56),

:4:14)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Roger92/metric-ruler-labels/issues/2#issuecomment-919409286,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVUC6XQECLS3XG2ZNNYB3IDUB6H53ANCNFSM5EAS7DJA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

Reply to this email directly, view it on GitHub
https://github.com/Roger92/metric-ruler-labels/issues/2#issuecomment-920134211,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVUC6XWKLOHITFHFOVPAIQLUCC5BPANCNFSM5EAS7DJA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
PAXION Matthias @.***>

Thaaaaat works... perfect.
But the image shows the normal ruler tool. So i dont see a problem there.
Also keep in mind that  my module wont add any new information if you drag your token (with dragRuler):

Now that i read your first comment again: "The value inside the bracket is always the same as the starting value." Thats the normal behaviour of FoundryVTT. So could you show me what happens when you use my module?

I was mistaken, I don't use the ruler much so I though the basic bracket
was an addon.
So I re install the module and it just don't show me meter info, I don't
have the second lign
Le mer. 15 sept. 2021 à 20:46, Roger @.***> a écrit :

Thaaaaat works... perfect.
But the image shows the normal ruler tool. So i dont see a problem there.
Also keep in mind that my module wont add any new information if you drag
your token (with dragRuler):
[image: ezgif com-gif-maker (2)]
https://user-images.githubusercontent.com/11605051/133491321-30a175ea-ef13-45da-91ca-96ea4ab0d45b.gif
Now that i read your first comment again: "The value inside the bracket is
always the same as the starting value." Thats the normal behaviour of
FoundryVTT. So could you show me what happens when you use my module?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Roger92/metric-ruler-labels/issues/2#issuecomment-920288454,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVUC6XRH56T54H55B3SHIG3UCDSY3ANCNFSM5EAS7DJA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
PAXION Matthias @.***>

Ah ok now i at least know what you are talking about... do you see any errors in the console now when you use the ruler?

no errors
Le mer. 15 sept. 2021 à 21:39, Roger @.***> a écrit :

Ah ok now i at least know what you are talking about... do you see any
errors in the console now when you use the ruler?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Roger92/metric-ruler-labels/issues/2#issuecomment-920322210,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVUC6XU7XS6WK4KK6HVAV7DUCDY7NANCNFSM5EAS7DJA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
PAXION Matthias @.***>

hmmmm thats weird... and the module is also activated? ... whats the unit on the scene?  Can you show it to me? It seems that it doesnt know the the unit and so it cant convert it, so it doesnt add anything:

I am currently testing a version that should also work with dragRuler... that might be released tomorrow :)

Alrighty, there is a new version which also supports dragRuler :)

just saw the answer, it works real fine!
thank for this module ! I try too drop all the module that changed
distances inside spell description, sometimes it end up a mess, I think you
save me a lot of time in the futur.
Bye
Le jeu. 16 sept. 2021 à 23:19, Roger @.***> a écrit :

Alrighty, there is a new version which also supports dragRuler :)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Roger92/metric-ruler-labels/issues/2#issuecomment-921252135,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVUC6XUGALVQSOFGLAYP4P3UCJNMXANCNFSM5EAS7DJA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--
PAXION Matthias @.***>

Thx alot :) Glad to hear that it helps you... I just released v1.0.0 ... now also the  MeasureTemplates tool (cone, ray, circle and rectangles) is supported :)
i will close this issue now.

Closed-Fixed by new version


i need a saga example

i need a saga example ,  more formal example    :)

The synopsis is missing. I'm also struggling with how to use saga and domain with each other. Is there an example somewhere that explicitely shows how to use everything together?

currently only this is exists: https://github.com/adrai/node-cqrs-saga/blob/master/test/integration/integrationTest.js#L142

I think we need not only example of saga, but also some explanation about what is actually "saga" means. I spend some time trying to understand what it's all about and now I know that it is a design pattern. :)
I found a good  article about it: "Saga Pattern | How to implement business transactions using Microservices" (Denis Rossa)
Part one: https://blog.couchbase.com/saga-pattern-implement-business-transactions-using-microservices-part/
Part two: https://blog.couchbase.com/saga-pattern-implement-business-transactions-using-microservices-part-2/
Original paper describing saga pattern: https://www.cs.cornell.edu/andru/cs711/2002fa/reading/sagas.pdf (Cornell University)
@adrai maybe we should place those links at the bottom of readme file - what do you think?

Can you add a PR?


Unicode escaped characters in strings should probably stay unicode escaped

I have some code which uses the unicode U+2028 character (LINE_SEPARATOR), with code along the lines of:  str.IndexOf("\u2028")
However, Saltarelle seems to convert the character to a single unicode character in the source file.
One minor issue is that the resulting code is harder to read/debug because many unicode characters are hard to distinguish to the eye (e.g. all of the different white space variants).
But the main issue is that (at least Chrome) considers a LINE_SEPARATOR inside a string literal to be invalid syntax and 'throws a wobbly' (official technical term).
I have a work-around, which uses ((char)0x2028).ToString() but it would be best if Saltarelle could keep the unicode escaped characters escaped. Or at the very least, check for U+2028 and escape that character (there may be others as well).

Yes, you are right.


Module 3 exercises [BASHARA AHMED ABUBAKARI]

Please "drag & drop" exercise 3 file below.

Please UPDATE THE TITLE of this "Issue" in the title bar above with your name.

If you haven't done so, please go back to Module 3 and make sure to take
the post-training survey.
WS2_M3E1_Template.docx

Well done, Bashara. You clearly grasped the material outlined in Module 3 and successfully applied it to these exercises. Thank you for your participation! Please be sure to fill out the post-Module survey before you begin the next Module.


[BUG?] Selecting column with alias makes delete row impossible

Not sure it is a bug...
Imagine doing something like
select orderid, cusomerid from orders
Then, on datagrid table, delete one row. It works (well, might ask "what is table key etc, but... it works").
Now, on same table, do
select orderid as ord, cusomerid from orders
You cannot delete any row anymore:
Error synchronizing data with database

Reason:
SQL Error [42703]: ERROR: column "ord" does not exist
  Hint: Perhaps you meant to reference the column "orders.orderid".

thanks for the bug report

Can't reproduce.
@wiwwo what is your database?

Postgresql.
It is an editor problem i think, not a DB one... Maybe internally the grid calls update TABLE set ord = ..., referring to the alias, instead of update TABLE set orderid = ...

Seems to be fixed in 7.0(.1). Now column is readonly...


Convert EthernetInterface to use a builder pattern

The type signature of new is getting really unwieldy, and the breaking changes for every new features are undesirable.

This is going to be super important as we move towards adding IPv6 support. Especially once builds without the future proto-ipv4 become a possibility.

In fact, this should probably be done before we add the proto-ipv4 feature.