Add autocomplete functionality to the LSP

Fixes #52.
This PR adds the capability of sending auto-complete suggestions when in LSP mode. Currently it supports:

Locally defined methods
Imported symbols
Local variables
Function arguments
Scoping said local variables and function arguments based on the position of the cursor (inside/outside a method)
Automatically inserting/updating a load for exported symbols from another opened file

Not yet handled/open questions:

The kind of previously loaded symbols is not always correct (i.e. it's always a CompletionItemKind::METHOD at the moment), because I'd need to resolve the file, which it doesn't do at the moment.
Auto-complete for exported symbols when the cursor is in a load statement doesn't work yet, for the same reason of resolving the path.
The path for generated load statements is based on Bazel, I don't know what this should look like for Buck and/or Starlark usage outside of these two build systems. This ties in with #51, which has been open for a while.
The path for generated load statements doesn't handle external repository paths yet, this also ties in with #51.

I'm hoping with some feedback, and maybe a merge of the Bazel PR, we can get this to a mergeable state 🙂 looking forward to hearing your thoughts!

Sorry for the delay in looking at this - I was travelling.
How much of a problem is the use of kind = Method?  Just an incorrect icon in the completion list?

Thanks for going through this @ndmitchell! I'll go through your comments some time this week and a) tidy up the code and b) split out the Bazel specific stuff to a separate PR. In that case the initial PR might have to omit completion of exported symbols from other files altogether, as completing those requires inserting the appropriate load statement.
Regarding the "method" type, yeah it's just an incorrect icon basically, or e.g. in Neovim it might have the type "method" as text instead of an icon. Not a huge deal obviously.
Thanks for the tip about SaplingSCM, I'll take a look at that as well. For the follow-up PR, I might create a new branch based on both this one and #51, thoughts?

I'm just about to go through #51 (the person who was working from this on our side left Meta, so it accidentally got lost, oops). Let me see.

For generating a load statement, I imagine you need a method on LspContext like render_as_load(&self, target: &LspUrl, current_file: &LspUrl) -> anyhow::Result<String> ? That seems quite reasonable to add in.

That sounds like a good solution, yeah. Probably you want to be able to do the mapping in two directions:

LspContext::render_as_load(&self, target: &LspUrl, current_file: &LspUrl) -> anyhow::Result<String>
LspContext::resolve_load(&self, target: &str, current_file: &LspUrl) -> anyhow::Result<LspUrl>

Thanks! I'm going through the code now - plan to split pieces off and land them separately (those obvious bits) and slowly work until there is nothing left. Expect to see pieces of your code trickle out over the next day or so.

Thanks! I'm going through the code now - plan to split pieces off and land them separately (those obvious bits) and slowly work until there is nothing left. Expect to see pieces of your code trickle out over the next day or so.

@ndmitchell Awesome, looking forward to it. Feel free to ping me if any questions come up.

I've submitted all the changes apart from those to lsp/server.rs and a handful of lines to definition.rs. I'll update once they are all landed. For the changes to server:

I think we need the LspContext so that it isn't Buck/Bazel specific, with the mapping from a URL to the load name and vice versa. Did anything happen to your LspContext suggestion above?
As an extension, I note you aren't auto completing using names that are loaded by other open modules. E.g. if I have a separate file open, with load("filename", "foo") then offering to complete to foo makes sense, even though foo isn't exported by anything open.

Overall, looks good, and the automatic adding of load statements is super slick.

Other notes:

We should probably have a method on LspContext to get a list of the global symbols.
Completing keywords is quite nice - a hardcoded list of those should be fairly easy to add.

@ndmitchell Nice! I merged in origin/main and resolved any conflicts.

I think we need the LspContext so that it isn't Buck/Bazel specific, with the mapping from a URL to the load name and vice versa. Did anything happen to your LspContext suggestion above?

I don't think so, no. Not sure if the idea is to tackle that via #51 or not? I can try to come up with an initial implementation. One thought I had later on: should that actually be on the LspContext? Just wondering if it makes more sense to have Bazel as a "dialect", and let the LSP be aware of the Starlark dialect. I should probably add that I'm not sure what, if any, the actual differences are between Bazel and Buck and how they render load paths. If they're the same, then having it on the LspContext seems fine.

As an extension, I note you aren't auto completing using names that are loaded by other open modules. E.g. if I have a separate file open, with load("filename", "foo") then offering to complete to foo makes sense, even though foo isn't exported by anything open.

That's a nice idea, I'll try to find some time to add that!

We should probably have a method on LspContext to get a list of the global symbols.

Makes sense. I guess that would be the things under starlark/src/stdlib?

Completing keywords is quite nice - a hardcoded list of those should be fairly easy to add.

Added!

Overall, looks good, and the automatic adding of load statements is super slick.

Thanks! I was pretty happy with that too :)

@ndmitchell I have now added the autocomplete options gathered from load statements in open files.

@ndmitchell Added a few more things:

I realised the autocomplete options from load statements in other files needed to have their path resolved and re-rendered correctly from the point-of-view of the target file
So I implemented render_as_load
Also added some fixes to resolve_load
Added the workspace root as a parameter to both
Added tests to both
Also added autocompletion for global symbols (including docs!)

I'd appreciate it if you or someone else can take a critical look at render_as_load and resolve_load—I based my logic on how Bazel works, but don't know enough about Buck(2) to know whether it uses the same format of:

In same folder: :filename
Absolute: //some/sub/folder:filename
In root: //:filename

(also, it doesn't really handle stuff in other workspaces, e.g. @workspace//some:file)

Thanks - hoping to take a look this weekend!

@ndmitchell OK, so I went off the rails a bit this week 😅 added a bunch of stuff. You can see it from the commits above, but summarizing:

Autocomplete takes context into account now, e.g. load paths/exported symbols in load statements, parameter names in function calls, target names in string literals
Hover info, reusing much of the same infrastructure as was used for go to definition
Go to definition (and thus hover info) as well now also works for target names, when those are defines with a macro/rules invocation in a build file with a name attribute
Checks the used build system (support for Buck2 and Bazel) to gather information about known repositories and target names in packages. This also means resolve_load and such now also works for paths containing a @repository//-like prefix.

I appreciate that this probably makes reviewing this more complicated, so I'm sorry about that. Is there some (semi-)public channel (Slack, Discord) you have where maybe we can work together a bit more closely to be able to land this? e.g. I know for the Relay team they have a private channel in the GraphQL Discord server.

@MaartenStaa - might need a VC to ensure we move forward with this. Can you email me at ndmitchell -at- gmail.com and we can figure it out.

I've gone through this PR in consultation with @MaartenStaa:

The build_system stuff and the string completion in load stuff should be in a separate binary, starlark-bazel. The suggestion is that is a temporary binary in starlark-rust repo while it is in active development, then fairly soon after, becomes a standalone project.
The work to make the load statement less strict is valuable, but needs doing as a more general step to make the parser more tolerant for LSP. We can put that in later.
I moved a lot of code that lived outside of starlark/lsp into starlark/lsp. The rough logic being that the code outside there should have strong, stable, thoughtful APIs we rely on. The stuff inside lsp is whatever LSP currently needs to get its job done.
I tweaked some types in somewhat insignificant ways:

StringCompletion doesn't need to be passed the literal (if you care, capture it when giving back the function)
The environment completions might vary by URL, and DocModule is a better type for them.
The FixturesWith type didn't actually need the deferred CodeMap thing so I dropped it.

With that I have 6 diffs that are ready to land now (being reviewed and landed internally) then one diff on top which is the hover/completion stuff. Once the prerequisites land I'll publish that and share it back here (it is 95%+ the work of @MaartenStaa).

All the dependencies are now landed. https://github.com/facebookexperimental/starlark-rust/pull/79 is the code which is basically a version of this.

Given #79 is now landed, closing this diff as it is 90% landed. Please open follow up PR for the rest of the pieces. Thanks so much for your improvements!

Hooray, thank you! I checked with neovim and a simple bazel program to hopefully see if the starlark-bazel parts were included. The linting functionality that we've always had works just like before, and there are now more LSP functions implemented, go-to-definition can be called where it makes sense, loads and target references. But the landing location is typically just a (new) file with the token name, which I assume is expected for a bazel project. I'm happy to test-run starlark-bazel when it comes :)


Color textures look washed out

Probably related to colorspace when loading, should be fixed by making them SRGB.

Fixed by 6daec7fc72d8797a0c7a18b21fbc7d3cc27a46f8


Fixing the N + 1 errors

Should not occur on:
Dashboard
Assignments
-annotations
-groups
-graders
Users

Hello David, these changes should be implemented now. The problem was that I was out of sync with the git repository on my local version. I think I have that sorted out now.

@b2simms well done, this is a nice improvement.


Add DeleteWild to delete by prefix in redis

Add DeleteWild function, so it can delete key by pattern.
For example if we have caching key 'category:main', 'category:tree', we can remove the caches by pattern 'category:*'

Hi @arham09, thanks for the PR!
The storage drivers in this repository implement the fiber.Storage interface, which is used to provide a standard interface for middlewares to store and retrieve data.
Unfortunately, DeleteWild is not part of the interface, and as a result, I don't think this PR will be merged.
Sorry about that!

thanks @codemicro , clearly missed the part about the fiber.Storage interface in readme, sorry


[#120268519] Monitoring gorouter latency

What
This commit increases the thresholds on the gorouter monitor in order to
avoid false positives.
The inital monor values were set too low and as a result were triggering
the alert in a flapping manner. This is not useful for us as a team.
How to review
Code review should suffice.
If you wish you can deploy from this branch with ENABLE_DATADOG=true
Who can review
Not @LeePorte

Are we sure that these warnings are spurious? It could be that we already need to add router capacity.
I'd also note that as we're using a mean this can be distorted by small number of very slow requests. I think we may be better off using a median, or a percentile here.

Are we sure that these warnings are spurious? It could be that we already need to add router capacity.

There's some context in the comments on https://www.pivotaltracker.com/n/projects/1275640/stories/120268519 from the first review/approval. I'm not super confident that the current routers are contended for resource and that adding another one will lower the response latency. One way to be more certain would be to do some load testing in dev but I'm not sure if it's worth the effort.

I'd also note that as we're using a mean this can be distorted by small number of very slow requests. I think we may be better off using a median, or a percentile here.

I'm not sure we have that option. The monitor only supports avg/min/max/sum. It looks like the metric itself is already reported as an average - although I'm confused where it comes from, does gorouter publish to loggregator and datadog-nozzle picks it up?

I cloned the existing prod monitor, removed the tags so that it doesn't show on the dashboard, and changed the settings to match this PR: https://app.datadoghq.com/monitors#4253618?group=all&live=4h
The 10min smoothing brings it below our previous thresholds:

And still triggers for (what I assume was) load testing:

I think the new thresholds are probably alright, in that they're not too high, but I'm going to have a think about it for a bit.


Rotate secret key for deployment

On deployment we push artifacts to S3 buckets. This rotates the
key used to access S3.

I haven't been able to find a way of verifying it unfortunately. I would have liked to be able to do that.


docs: repo-relative links to images

While working on adding https://github.com/tetov/ctp-fuzzel I came across this feedback from @isabelroses on a different PR:

we are trying to have more relative links towards parts of our own repos. See the example bellow:

https://github.com/catppuccin/catppuccin/issues/2103#issuecomment-1606942707
So I thought it might be good to update the template with that.
The user of the template will still need to update the shields. It might be worth using handlebars for the README too? Or use a git template tool like Cookiecutter.
I copied the preview images from https://github.com/catppuccin/catppuccin/ that will need to be replaced by the user of the template.

Hey :wave:
We actually went through with this change in #5 but reverted in #6. The reasoning being that using relative links here would result in duplication of the assets and increase the clone size of the repository, which we'd like to avoid where possible. Also, the user would always have to end up deleting/replacing the images anyways.
In #6, I mention that it's good to add a comment mentioning that relative links are preferred but I don't think I got around to it. I'm leaning towards adding an extra bullet point in https://github.com/catppuccin/catppuccin/blob/4a50e1aeb2b657f93ce628898804ac66f275cb0a/docs/port-creation.md?plain=1#L172 as I feel like people may not delete the comment if it was added into the template README here.

Ok! I should have checked previous PRs. Thanks for the detailed explanation!


Impro 1669

Addresses #GitHubissuenum
Description:
Updated units tests to remove set_up_cube() function and replace with function within the synthetic_data plugin.
Testing:

[X] Ran tests and they passed OK
[ ] Added new tests for the new feature(s)

CLA

[ ] If a new developer, signed up to CLA

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 6

Clones added
============
- improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  4

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
- Added 1

Clones added
============
- improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  4

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Clones added
============
- improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  4

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Clones added
============
- improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  4

See the complete overview on Codacy

I have addressed your comments, and updated some more of the code in test_BaseNeighbourhoodProcessing.py, but there are some clarifications before it is complete. I will push the new version and wait for you to come back next week.
Thanks

 Here is an overview of what got changed by this pull request:

Clones removed
==============
+ improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  -16

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Clones removed
==============
+ improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  -20

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 1

Complexity decreasing per file
==============================
+ improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  -3

Clones removed
==============
+ improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  -22

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 1
- Added 1

Complexity decreasing per file
==============================
+ improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  -3

Clones removed
==============
+ improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  -22

See the complete overview on Codacy

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 1

Complexity decreasing per file
==============================
+ improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  -3

Clones removed
==============
+ improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  -22

See the complete overview on Codacy

I think it would be clearer to define a 2D cube in the first place

On second thoughts, there's no reason to retain the threshold scalar coord on self.cube, so it would be cleaner still to just define a simpler 2D cube in the first place.

 Here is an overview of what got changed by this pull request:

Issues
======
+ Solved 1

Complexity decreasing per file
==============================
+ improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  -3

Clones removed
==============
+ improver_tests/nbhood/nbhood/test_BaseNeighbourhoodProcessing.py  -22

See the complete overview on Codacy


Merhaba. MudTable problem for searching.

Feature request type
Enhance component
Component name
MudTable
Is your feature request related to a problem?
Problem : After selecting a line, typing in the search box and pressing enter does not search.
After selection, the search process doesn't happen forever. I wish you success in your business. You are teams loved.
Describe the solution you'd like
MudBlazor version 5.2.0. My project .Net 5.0.
Have you seen this feature anywhere else?
No response
Describe alternatives you've considered
No response
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

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

thanks.

This sounds more like a bug than a feature request. Can you please open a bug report instead?


Bonfire 'Sum of all Fibonacci Numbers' odd test case failure

Challenge Bonfire: Sum All Odd Fibonacci Numbers has an issue.
User Agent is: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.89 Safari/537.36.
My code passes all test cases except one, the first sumFibs() should return a number case. Apparently, the test runner cannot identify even 0 as a number where my solution returns 0 on empty params. Please review
My code:
function sumFibs(num) {
  var arr = fib(num)
  var s = 0
  arr.forEach(function(n) {
    if(n % 2 !== 0) {
      s = s + n
    }
  })
  return s
}

function fib(num) {
  if(!num) return []
  if(num == 1) return 1
  var arr = [1]
  var c = 0
  var l = arr[arr.length - 1]
  while(l+c <= num) {
    arr.push(l+c)
    c = l
    l = arr[arr.length - 1]
  }
  return arr
}

sumFibs(4);

The first test case that you are failing runs the code sumFibs(1). If you run your solution with 1 as the input you will see that you get an error that reads TypeError: arr.forEach is not a function because arr is the result of fib(1), which is the number 1 and not an array.

thanks @ltegman that solved the issue. however, i feel the test case was not designed right. When you are expecting sumFibs() to return a number, why the test runner runs sumFibs(1) in the background?

The test runner has to pass some value into the function to see if the output is a number, but I do agree that the test case should explicitly state what code (including parameter) it ran when it fails. If no one else does I'll put in a PR to make this more clear later today.

cool :+1:

For me too there is a failure.
I initiated by a function to get the fibonacci numbers, I make this with a short recursion. In repl.it it is perfectly accepted and give output after few miliseconds, But in the freeCodeCamp console the code blocks the console. Here is my code. If someone understand what is the problem I'll very grateful to get an explanation
function sumFibs(num) {
  if (num === 1 || num === 0) {return 1;}
  else {return sumFibs(num - 2) + sumFibs(num - 1);}
}
sumFibs(2);

@koouty I know recursion is a popular way to solve the fibonacci problem, but it's an incredible inefficient solution in Javascript. Function calls in javascript are VERY slow, so once you start doing test cases like FCC has (1000+) your recursive solution is orders of magnitude slower than using a while loop. Check out what happens when you toss your solution into a repl with some of the large number test cases and you'll see what I'm talking about.
You might be able to make the resursive solution work by implementing memoization, but you'd just be putting a bandage over the issue and it still probably won't be fast enough for the larger test cases.

@ltegman
Yes!
right in repl.it up to 40 it's good but not 50.
I was innocently believing that all the interpreted languages make it with the same velocity, for example, python is slow but makes it reasonabily.
Thank's again for the knowledge.


Requesting artwork load from Provider

I'm looking at updating MuzeiMusicExtension to use the 3.0 API.
This extension detects changes to the current song playing on the user's device, and displays the appropriate artwork.
With 3.0, if I understand correctly, choosing when to load artwork is entirely the responsibility of Muzei itself, and we can only respond to requests to change artwork initiated by the 'auto advance' feature. Is that correct?
If that is the case, then i'd like to request a method to workaround auto-advance for apps where 'advancing' doesn't make sense.

If you have just a single artwork (as I would expect if you're tying it to what is currently playing), then you would not have a 'Next Artwork' button and Auto Advance would not apply - you'd ignore callbacks to onLoadRequested() as you would fully own the loading of artwork.
Instead, you would call setArtwork() at any time to update your current artwork.

OK, thanks for clarifying.


Add latest tag to Docker image

The Installation documentation states that the Docker image can be pulled from ghcr.io/asreview/asreview:latest. However, the latest tag does not exist in the container registry.

Should be an easy fix! Added the latest tag.


Investigate shared Loki performance and stability issues

Digital Trust Services Loki is experiencing intermittent stability issues with some queries.
From briefly looking into it, it appears that the query cache and Loki querier require further tuning.
loki-queirer pods go into CrashLoopBackOff causing queries to fail, or return incomplete results.
Initially found that Memcached transactions failed with the error SERVER_ERROR object too large for cache
I believe I've resolved that issue by adding -I 32m to the Memcached arguments.
However there are still errors which should be investigated further.
Seeing the following errors from the memcachedchunks pod:
Failed to write, and not due to blocking: Connection reset by peer
Failed to write, and not due to blocking: Connection reset by peer
Failed to write, and not due to blocking: Connection reset by peer
Failed to write, and not due to blocking: Broken pipe

And errors from the loki-querier pod:
level=error ts=2024-06-06T20:41:46.457205752Z caller=frontend_processor.go:151 component=querier msg="error processing requests" err=EOF
level=error ts=2024-06-06T20:41:46.457309899Z caller=frontend_processor.go:74 component=querier msg="error processing requests" address=x.x.247.187:9095 err="rpc error: code = Canceled desc = context canceled"
level=error ts=2024-06-06T20:41:46.457312625Z caller=frontend_processor.go:74 component=querier msg="error processing requests" address=x.x.247.187:9095 err="rpc error: code = Canceled desc = context canceled"
level=error ts=2024-06-06T20:41:46.457323842Z caller=gateway_client.go:515 index-store=tsdb-2024-04-23 msg="client do failed for instance dns:///loki-index-gateway:9095" err="rpc error: code = Canceled desc = context canceled"
level=error ts=2024-06-06T20:41:46.457328729Z caller=frontend_processor.go:74 component=querier msg="error processing requests" address=x.x.247.187:9095 err="rpc error: code = Canceled desc = context canceled"
level=error ts=2024-06-06T20:41:46.457338177Z caller=gateway_client.go:515 index-store=tsdb-2024-04-23 msg="client do failed for instance dns:///loki-index-gateway:9095" err="rpc error: code = Canceled desc = context canceled"
level=error ts=2024-06-06T20:41:46.457345526Z caller=gateway_client.go:515 index-store=tsdb-2024-04-23 msg="client do failed for instance dns:///loki-index-gateway:9095" err="rpc error: code = Canceled desc = context canceled"
<queries>
level=error ts=2024-06-06T20:41:46.457411169Z caller=frontend_processor.go:151 component=querier msg="error processing requests" err=EOF
level=error ts=2024-06-06T20:41:46.457408078Z caller=frontend_processor.go:151 component=querier msg="error processing requests" err=EOF
level=warn ts=2024-06-06T20:41:50.775536323Z caller=pool.go:250 index-store=tsdb-2024-04-23 msg="removing index gateway failing healthcheck" addr=dns:///loki-index-gateway:9095 reason="rpc error: code = DeadlineExceeded desc = context deadline exceeded"
level=error ts=2024-06-06T20:42:28.68163703Z caller=resolver.go:87 msg="failed to lookup IP addresses" host=loki-memcachedindexqueries err="lookup loki-memcachedindexqueries on x.x.0.10:53: no such host"

Loki has been re-deployed with adjusted resource requests and limits.


Update cache_version

It doesn't makes sense to change the version info to 1.7.5 until the php code has actually been updated to be compatible with less.js 1.7.5.
Here are all the changes that need to be done


[Bug] [Vectorized] coredump in agg when output as right table of left outer join

Search before asking

[X] I had searched in the issues and found no similar issues.

Version
master
What's Wrong?
CREATE TABLE test_join (
  `k1` int NOT NULL COMMENT ""
) ENGINE=OLAP
UNIQUE KEY(`k1`)
COMMENT "olap"
DISTRIBUTED BY HASH(`k1`) BUCKETS 20
PROPERTIES (
"in_memory" = "false",
"storage_format" = "V2",
"replication_num" = "1"
);

insert into test_join select 1;
insert into test_join select 2;

select t1.k1,t2.k1 from test_join t1 left join (select k1 from test_join group by k1) t2 on t1.k1=t2.k1;

Failed DCHECK:
To assert_cast(From&& from) {
#ifndef NDEBUG
    try {
        if constexpr (std::is_pointer_v<To>) {
            if (typeid(*from) == typeid(std::remove_pointer_t<To>)) return static_cast<To>(from);
        } else {
            if (typeid(from) == typeid(To)) return static_cast<To>(from);
        }
    } catch (const std::exception& e) {
        LOG(FATAL) << "assert cast err:" << e.what();
    }

    LOG(FATAL) << fmt::format("Bad cast from type:{} to {}", demangle(typeid(from).name()),
                              demangle(typeid(To).name()));
    __builtin_unreachable();
#else
    return static_cast<To>(from);
#endif

What You Expected?
do not coredump
How to Reproduce?
No response
Anything Else?
No response
Are you willing to submit PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

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

Although we fixed in #8979, but it is very tricky because we convert it to non-vector engine to run. We have to fix this by using vectorized engine.


Non-crud endpoints not grouped as expected in Swagger (recent time series and levels as time series)

The required OpenAPI annotations seem to be present for both, but they are still being added to the "Default" grouping in Swagger.

I'll have to look at the code for both javalin and hours. I know javalin broke OpenAPI into a separate plugin as part of the 5.x series to fix issues like that, but 5.x is java 11 only so we're stuck waiting a bit if that's where it's fixed.

But it's cosmetic, not functional so I don't think we should focus on it right now.


Topic recognition

code just prints some text, such that it won't abort.
could not complete the model in time. As such, it can not demonstrate a working Unet model.
I should have aimed for the 2d task to begin with, rather than getting slowed down by the differences needed for the 3d task (my original goal)

This is an initial inspection, no action is required at this point
Recognition problem: total 3 Marks
Problem solving: (0)
•	Model incomplete and no results or plots are provided.
Algorithm implementation: (1.5)
•	Algorithm implemented in PyTorch for the UNet2D model and functions.
•	Functions incomplete
Design: Modularised and reusable codes. (1)
Commenting: Clear comments partially completed. (0.5)

Marking

Good/OK/Fair Practice (Design/Commenting, TF/Torch Usage)
Adequate design and implementation. -1
Spacing and comments.
Header blocks.
Recognition Problem
OK solution to problem. Model incomplete.-3
Driver Script present.
File structure present.
Good Usage & Demo & Visualisation & Data usage.
Module present.
Commenting present.
No Data leakage found.
Difficulty : Normal. UNet3D (Normal Difficulty)-5
Commit Log
Some/Adequate Meaningful commit messages. Minimal.-1
Good Progressive commits.
Documentation
Readme :Acceptable. Results missing. Report incomplete.-4
Model/technical explanation :Acceptable. -1
Description and Comments :Acceptable. References missing.-1
Markdown used and PDF submitted. PDF checked.
Pull Request
Pull Request has problems: Late submission.-2
Feedback action required: Feedback marks possible +2 if the requested changes are made. Remove model cache files for merge.-2
Request Description is good.
TOTAL-20

Marked as per the due date and changes after which aren't necessarily allowed to contribute to grade for fairness.
Subject to approval from Shakes

Feedback marks possible +2 if the requested changes are made (see above).

Felipe Menezes

Felipe Menezes

Approved extension +2, model incomplete and doesnt solve problem -2 additionally, no results/plots -2
Cant merge because of conflicting changes to main repo files (model files). Please update for merge, doesn't affect grade.

Hi there, I've removed the files that were in pycache which I think should resolve the issues with merging.
Sorry for the trouble, let me know if there's anything else I can do.

Feedback applied +2


fix: limit and spinning of search icon

make sure you are searching by adding spinner
https://github.com/ansys/ansys-sphinx-theme/assets/104772255/03661c50-56b4-4dbc-a640-ed6eac864a53

Loving it.


BigChanges

This is less of a PR and more of a suggested restructuring (all input is welcome)
What this PR does:

Increases colocation of codeExamples and translations to use case (this improves dev experience)
Translates some stuff (using deepl)
Creates a new method for handling translations (allows for partial translations as it default to english)

If everyone is ok with what this branch proposes, I'll start converting the full API page, and then move onto other pages over time. If you think we should be doing more of X or Y, now is a good time to bring it up so that it can happen over the next couple months as I comb through and convert!

That's great! However I think this changes have possible to increase bundle size. This is tradeoff which we take either dev experience or performance ...

That's great! However I think this changes have possible to increase bundle size. This is tradeoff which we take either dev experience or performance ...

good point! I would vote towards user experience (which is perf). Also, it's probably worth measuring the diff as well.

Example:
one of the mistakes I did earlier was using styled component, it's a great DX (i still love it), but it's a price for each user to pay, which is runtime cost for the app, so I converted the whole app to CSS, it's painful but I rather observe the pain myself in exchange for a faster web for users.

I definitely agree that we should value user experience > developer experience, and its awesome that this is something we care alot about as a Team! But I don't think it is a zero sum game. User's have a threshold for acceptable experience, I believe google uses 2.5s and below as a "good" amount of time for a websites largest contentful paint (We are currently well below this and I want it to stay that way!).
Lighthouse Score

The proposed changes will impact performance for sure, but the impact will likely be milliseconds at most. The two main speed effecting changes in this PR are: more object declarations, more function calls. Both things javascript and modern browsers can do very well.
What I'm saying is that I am willing to trade off a marginal amount of speed (so long as it doesn't negatively effect users) for developer experience. In addition this PR makes it possible for half translations to easily exist, where a translation will default to english if no one has translated it yet. This significantly improves i18n, and makes any millisecond losses worth it.
I am 100% open to suggestions on how best to improve performance, and I definitely agree that we should keep a close watch on performance in every PR (I wonder if there is a CI tool that can help with this?).

I definitely agree that we should value user experience > developer experience, and its awesome that this is something we care alot about as a Team! But I don't think it is a zero sum game. User's have a threshold for acceptable experience, I believe google uses 2.5s and below as a "good" amount of time for a websites largest contentful paint (We are currently well below this and I want it to stay that way!).
Lighthouse Score
The proposed changes will impact performance for sure, but the impact will likely be milliseconds at most. The two main speed effecting changes in this PR are: more object declarations, more function calls. Both things javascript and modern browsers can do very well.
What I'm saying is that I am willing to trade off a marginal amount of speed (so long as it doesn't negatively effect users) for developer experience. In addition this PR makes it possible for half translations to easily exist, where a translation will default to english if no one has translated it yet. This significantly improves i18n, and makes any millisecond losses worth it.
I am 100% open to suggestions on how best to improve performance, and I definitely agree that we should keep a close watch on performance in every PR (I wonder if there is a CI tool that can help with this?).

sounds good to me, especially the measurement, let's moving forward and taking the required adjustment if we need it after.

sounds good to me, especially the measurement, let's moving forward and taking the required adjustment if we need it after.

we must find between DX and UX.

I am 100% open to suggestions on how best to improve performance, and I definitely agree that we should keep a close watch on performance in every PR (I wonder if there is a CI tool that can help with this?).

I think we can use lighthouse-ci.
We should probably improve while checking performance by using CI.

Ill take a look into adding lighthouse-ci this week! Great idea!!

Thanks @pmaier983 and @keiya01 ❤

Aim for the best doc for our developer friends! 🎉

We now have some Awesome lighthouse-ci based checks:
https://storage.googleapis.com/lighthouse-infrastructure.appspot.com/reports/1594852470722-96645.report.html
https://storage.googleapis.com/lighthouse-infrastructure.appspot.com/reports/1594852471021-972.report.html
https://storage.googleapis.com/lighthouse-infrastructure.appspot.com/reports/1594852471309-9246.report.html
https://storage.googleapis.com/lighthouse-infrastructure.appspot.com/reports/1594852471761-70344.report.html
https://storage.googleapis.com/lighthouse-infrastructure.appspot.com/reports/1594852472126-65836.report.html
One for every html page.
ToDo in the future: Make a server to record the tests and track progress
P.S currently if any of the pages has a First contentful paint > 2.5s the merge is blocked (more assertions like this will be added following a discussion)

nice!

Hey Bill, What do you think this PR needs to push it over the line? Should this PR convert the entire page in this manner? If so, I'll start committing, but it will turn into a rather large PR (Not that it's an issue)

let's do it progressively if you think it's ready let's review it. 👍

I hesitantly proclaim this PR to be ready... please find all the issues!!

looks fine to me 👍

@keiya01. Sorry for the long wait! So I tried my hand at giving the handleTranslation function a solid type inference...
export const chooseTranslation = (
  translation: { [Key in SUPPORTED_LANGUAGES]?: React.ReactNode | string },
  language: SUPPORTED_LANGUAGES,
  path: string,
  defaultLanguage = "en"
): React.ReactNode | string =>
  has(translation, `${language}.${path}`)
    ? get(translation, `${language}.${path}`)
    : get(translation, `${defaultLanguage}.${path}`)

I am unsure in my use of React.ReactNode | string. What I mean is the return is either a node
hello
 or a string. Is React.ReactNode best practice?

Yea i have been looking into gatsby i18n. Hoping to have a POC soonish. (feel free to try your own hand tho!)

@pmaier983 Thank you very much for fixing types. This is awesome :)

I'm going to close this PR until I'm certain it doesn't conflict with gatsby-theme-i18n. Preliminary exploration indicates this PR and the new i18n library conflict ☹. I'll keep everyone up-to-date tho!


Switch Observation column long to lng everywhere

If everyone likes the new query param has_geolocation in #2095, I'd like to take this opportunity to merge this change into that PR, provided I can get it passing.
This is to help avoid confusion when I'm dealing with the observation.long attribute. Google Maps only accepts a lng property, and it's a perpetual gotcha to remember making this switch. Keeping the param name the same everywhere (except in translation string labels) should eliminate this mental overhead.
Fortunately the API handles this property as longitude and only converts to Observation model attributes when creating/updating an observation, so this is a non-breaking change for the API.

coverage: 94.411% (-0.001%) from 94.412%
when pulling a31f808ab760c3b94d272243b7d33f632083b938 on observation-column-long-to-lng
into 3f523bf437edb23f81379f289f58a24a6c94183f on search-has-lat-long.


Update dependencies

We should update dependencies in the project. There are minor ones in test dependencies and also others regarding xml processing. Check report.

The job #787 assigned to @neonailol/z, here is why; the budget is 30 minutes, see §4; please, read §8 and §9; if the task is not clear, read this and this

@neonailol/z this job was assigned to you 5 days ago. It will be taken away from you soon, unless you close it, see §8. Read this and this, please.

@crat waiting

@0crat waiting

@0crat waiting (here)

@neonailol The impediment for #787 was registered successfully by @neonailol/z

The architect of the project has changed; @yegor256/z is not at this role anymore; @paulodamaso/z is the architect now

@paulodamaso is, this issue no longer actual

@neonailol thanks

@ypshenychka/z please review this job completed by @neonailol/z, as in §30; the job will be fully closed and all payments will be made when the quality review is completed

The job #787 is now out of scope

@0crat quality good

@0crat quality good (here)

@ypshenychka The project doesn't have enough funds, can't make a payment

@0crat quality good (here)

@ypshenychka The project doesn't have enough funds, can't make a payment

Order was finished, quality is "good": +35 point(s) just awarded to @neonailol/z

Quality review completed: +8 point(s) just awarded to @ypshenychka/z


BottomSheetBarController.collapse & .expand() didn't work sometimes

Dear developers,
i have integrated the bottom sheet bar expect of using a ListView instead of a CustomScrollView exactly like in the example. Unfortunately after 2-3 times of triggering the .collapse() and .expand() method they didn't react anymore and as a result the sheet will not open or close by triggering them. Open and close with drag and swipe is possible.
Does someone else having this issue?

It's possible the animation controller isn't behaving properly. I will test the example with a ListView to see if I can reproduce.

I haven't been able to reproduce this. One thing I noticed in testing: isExpanded and isCollapsed are not always accurate. Sometimes the [AnimationController] gets stuck at values close to 0 or 1 (for example: 0.99999 when it is fully expanded).
If you're using isExpanded or isCollapsed to determine whether to expand() or collapse(), then you might not be getting the expected behavior.
Looking into a better measure of collapsed or expanded state...

Version 2.1.0 is now available. Part of it was resolving #11 and the changes to collapse and expand may have resolved this for you.
Let me know if you still see this issue in 2.1.0, thanks!

Please open a new ticket if this issue is still being observed, thanks!


Question: How to pattern match/branch code?

Sorry to ask this in a fork, but I couldn't find a way to ask in bitbucket!
I am wondering how I would "branch" my code at the end of a chain of function calls. For example, if I fmap over an Either I'll end up with a Left or a Right and most likely want to perform a different action based on that result. What is the preferred way to handle that with this lib? Hoping someone here can help, thanks!

https://github.com/fnl/pymonad/blob/master/pymonad/test/test_Either.py
Does that clarify how Either is used?

On 26 Jun 2018, at 19:34, Doug DiFilippo<EMAIL_ADDRESS>wrote:
Sorry to ask this in a fork, but I couldn't find a way to ask in bitbucket!
I am wondering how I would "branch" my code at the end of a chain of function calls. For example, if I fmap over an Either I'll end up with a Left or a Right and most likely want to perform a different action based on that result. What is the preferred way to handle that with this lib? Hoping someone here can help, thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Ya, that helps! It looks like generally two Either instances are equal if their contents are also equal. How about just a generic "Is this value a Left or Right" function though? Without needing to know the exact contents until later? Basically, I want to run a series of calls and then at the end know if I ended up with a Right or Left without needing to also compare the contents. Does that make sense?
Thanks for pointing me at the tests! I am going to read through more of them 👍

Problem is that Python has no typed λ calculus, and you don’t get nice semantics for doing elegant pattern matching to ensure you are correctly plugging things together via generalized algebraic data types, such as case classes in Scala. But hey, if you really want to be doing FP, you probably anyway should be looking into a “proper” language for that (like ML, Haskell, Scala, F#, LISP, Scheme, Clojure, asf.). That said, you always can do “if isinstance(myEither, Left)" for example - not quite a elegant as matching with GADTs, but at least it gets you what you want. More general, as a word of warning, this library is fun for fooling around with FP concepts, but I am pretty sure I wouldn’t do anything serious with it…

On 27 Jun 2018, at 13:47, Doug DiFilippo<EMAIL_ADDRESS>wrote:
Ya, that helps! It looks like generally two Either instances are equal if their contents are also equal. How about just a generic "Is this value a Left or Right" function though? Without needing to know the exact contents until later? Basically, I want to run a series of calls and then at the end know if I ended up with a Right or Left without needing to also compare the contents. Does that make sense?
Thanks for pointing me at the tests! I am going to read through more of them 👍
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Makes total sense! I've seen other libs define a method that takes 2 callbacks for things like Maybe and Either (Daggy's cata as an example) so I may try to play around with adding something like that.
In any case, thanks so much for the help - I'll close out this issue.


Tests for Cat Painting Step 8 Too Strict

Describe the Issue
You can only pass this step if you put everything on one line and have a space after the comma.
P.S. You cannot have a space before the first color either, or after the last percentage.
Affected Page
https://www.freecodecamp.org/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-cat-painting/step-8
Your code
For example, this will not pass:
background: linear-gradient(
  #5e5e5e 85%,
  #45454f 100%
);

Expected behavior
Any valid CSS should be able to pass.
Screenshots
No response
System
N/A
Additional context
This has come up several times in the forum in the past few dayshours.

Tests: https://github.com/freeCodeCamp/freeCodeCamp/blob/main/curriculum/challenges/english/14-responsive-web-design-22/learn-intermediate-css-by-building-a-cat-painting/646c5ace05e4be4211407935.md
Shouldn't we just be checking the computed styles instead?

Example:
Your linear-gradient function should set the first color to be #5e5e5e at 85%.
const gradientBackgroundImage = new __helpers.CSSHelp(document).getStyle('.cat-head')?.getPropVal('background-image', true);
const firstGradient = gradientBackgroundImage.split(/rgb/)[1];
assert.equal(firstGradient,'(94,94,94)85%,');

Your linear-gradient function should set the second color to be #45454f at 100%.
const gradientBackgroundImage = new __helpers.CSSHelp(document).getStyle('.cat-head')?.getPropVal('background-image', true);
const secondGradient = gradientBackgroundImage.split(/rgb/)[2];
assert.equal(secondGradient,'(69,69,79)100%)');

#51339 fixes this issue.
I have also added a compulsory check for space after background: .

@RockyPukar1 This issue has not been opended to contribution yet. Please do not create PRs until it has.

I think using the computed styles is a better option.
The current regex also has some \s+ that should be \s* I would think as the spaces are not required.

Can I work on this?
This will be my first contribution, please guide me through this

@TanishqRinjay  I have already started working on this. If you are first time in open source contribution you can start with the issues that has label as first-timers-only or good-first-issue. Otherwise, if you are comfortable you can start from here too.

Describe the Issue
You can only pass this step if you put everything on one line and have a space after the comma.
P.S. You cannot have a space before the first color either, or after the last percentage.
Affected Page
https://www.freecodecamp.org/learn/2022/responsive-web-design/learn-intermediate-css-by-building-a-cat-painting/step-8
Your code
For example, this will not pass:
background: linear-gradient(
  #5e5e5e 85%,
  #45454f 100%
);

Expected behavior
Any valid CSS should be able to pass.
Screenshots
No response
System
N/A
Additional context
This has come up several times in the forum in the past few ~days~hours.

Thanks alot!


Configuration file

Formatter and linter options should be configurable from an .rc file (taplo.toml?).

in continuation of #33 I'll just ask if this could also be provided via cli args and not just rc file :)

There's now a configuration file, I believe the remaining question better fits the other issue.


refactor: Replace byte slice fs paths with file and directory handles

https://github.com/Syndica/sig/blob/b68a674f8ec7bb35cd5939f102a173f8ea668fa9/src/accountsdb/index.zig#L604-L605
The disk memory allocator currently uses a path which is implicitly relative to cwd; it should be able to be relative to any arbitrary location we configure it to. One way to amend it would be to have hold a directory handle, inside of which we populate file entries whose names are just their numerical index.

https://github.com/Syndica/sig/blob/b68a674f8ec7bb35cd5939f102a173f8ea668fa9/src/accountsdb/db.zig#L123-L132
This code would be a lot simpler and avoid allocation if snapshots_dir was a handle, and the functions taking accounts_path also took a handle.

https://github.com/Syndica/sig/blob/b68a674f8ec7bb35cd5939f102a173f8ea668fa9/src/cmd/cmd.zig#L673-L690
Same reasoning as the former.

These are the main examples of code where using a fs handle would be superior. There are a myriad more subtle cases as well, which should be investigated and experimented with.
Another less obvious, but real benefit of passing around and re-using handles is that they become a much more obvious resource, which we can track and be mindful of, in the same way we try to do with memory via the allocator interface.

@InKryption  WDYT, is it worth changing AccountsDBConfig and its corresponding field  snapshot_dir: []const u8 = sig.VALIDATOR_DIR ++ "accounts_db", in the scope of that issue?

@sonicfromnewyoke No, I don't think that field should be changed. It has to be filled in by the CLI frontend, and in general is top level data which is used to specify how to initialize the data at the lower level (the file handle).


[Enhancement] Add Markdown support to Label

Summary
Would be nice to be able to display Markdown text in a Label, similar to the Window Community Toolkit's MarkdownTextBlock.
Not sure if this would require a totally new control or if we could tap into the TextType property on Label
API Changes
Perhaps we can use the TextType property and add a new value of TextType.Markdown. Otherwise, add  bool IsMarkdown to Label.
Intended Use Case
<Label Text="**Bold Text**" IsMarkdown="True"/>

Who Will Do The Work?

[ ] I am willing to take this on myself
[x] Just putting this out there for someone to pick up

I'd love this.
To achieve this at the moment I'm converting the MD to HTML using (Markdig)[https://github.com/lunet-io/markdig] then displaying the HTML using (HTMLLabel)[https://github.com/matteobortolazzo/HtmlLabelPlugin]

Right now I'm using v0.6.1-pre of https://github.com/dotnet-ad/MarkdownView

@kazo0 and how is that working for you? Few issues? All features supported?

@jfversluis Overall pretty good. The theming support is nice, some rendering issues though. On initial page load if the content goes past the screen in a ScrollView, the text is cut off unless you force a re-render by doing something like rotating the screen.

Thanks! However, we are no longer adding new features to Xamarin Community Toolkit, focusing on the .NET MAUI Community Toolkit.
Please open a New Feature Discussion to implement this feature in the .NET MAUI Community Toolkit.
I've posted more information about the Future Of Xamarin Community Toolkit here: https://devblogs.microsoft.com/xamarin/the-future-of-xamarin-community-toolkit/?WT.mc_id=mobile-0000-bramin


Any ways to download sub videos now?

hi,
Any ways to download sub videos now?
There are some? Can anybody help me please :)

Not possible since TL 1.8 because Twitch made changes to prevent exactly that.
See https://github.com/Franiac/TwitchLeecher/releases/tag/v1.8.0


Bump the version of Go SDK being downloaded

What this PR does / why we need it:
Bump the version of Go SDK that Bazel downloads v1.16.5 -> v1.16.6.
I was looking at bumping Bazel Go rules at the same time, but looks like the latest release only supports Bazel v4.0.0 which we cannot use, because Bazel base images used for GCB release builds don't have a v4.0.0 version.
Special notes for your reviewer:
Release note:

NONE

Signed-off-by: irbekrm<EMAIL_ADDRESS>/kind cleanup

/lgtm

/kind cleanup


Frontend message type missing variants

This library has been really nice to work with so far! I just noticed one or two small things, and figured I would open this issue.
According to the message formats page, CopyData should be both a frontend and backend message type.
Right now, pgproto3 only seems to implement it as a backend message. I think CopyDone is similarly missing from the frontend message type.
I could be misreading the Postgres documentation.

It's already on master it just wasn't in a release yet. Just tagged v2.0.7 which includes it.

It's already on master it just wasn't in a release yet. Just tagged v2.0.7 which includes it.

Thanks!

Thanks!


Scooby doo classic creep capers minor graphics glitch.

Dr Jekyll's head keeps flickering in visibility.

Updated correct screenshot. Other emulators have this too, might be glitched on hardware as well.
This persists, even while using the official bios.

Adding the help wanted tag here. Is there someone who can verify whether this bug occurs on HW?

Adding the help wanted tag here. Is there someone who can verify whether this bug occurs on HW?

There is a chance I can do so next week if I remember. My cartridge of this game resides with family members now.

it happens on hardware aswell
not a bug

Thanks @benderscruffy for testing this out. I'll close this issue.


Validations for Patient Fields

Description
Jira Ticket: SARAALERT-784
Adds validators to the Patient model to validate:

date_of_birth is not before 1/1/1900 and not after current date
date_of_departure is not before 1/1/2020 and not after current date + 30 days
date_of_arrival is not before 1/1/2020 and not after current date + 30 days
additional_planned_travel_start_date is not before 1/1/2020 and not after current date + 30 days
additional_planned_travel_end_date is not before 1/1/2020 and not after current date + 30 days
last_date_of_exposure is not before 1/1/2020 and not after current date + 30 days
symptom_onset is not before 1/1/2020 and not after current date + 30 days
extended_isolation is not before current date - 30 days and not after current date + 30 days

This pull request will also display Rails validation errors for imported monitorees above in the Import UI.
Importing with validation errors will now return a more appropriate 422 code to the frontend instead of generic 500.
Screenshots
Here is a demonstration of a monitoree being rejected for the new reasons, but this written in a manner that any other validation failures will also be displayed.

Failed imports return a 422 unprocessable entity at the top but still highlight green those that are imported and display errors as shown in previous screen shot for those that could not be.

Important Changes
Please list important files (meaning substantial or integral to the PR) along with a list of the general changes that should be highlighted for reviewers.
example_file.js

Import.js: New logic for handling 422 returned and adding errors to the correct element in the list.
app/models/concerns/*: Custom validators for date things. Rails does not have built-in date validators the way it does for numeric types and I did not see the need to add a new gem for simple calculations

Testing
This fix was tested on the following browsers (submitter must check all those that apply):

[x] Chrome
[x] Firefox
[x] Safari
[ ] IE11

Tests were added to patient_test for validators.
To validate UI changes, I modified the Sara Alert Import XLSX included in the test fixtures to have errors and uploaded it.

Have we shown these to the PO team? I'm also wondering if in these cases we shouldn't even allow the "Accept" option?

Also in testing locally, I am getting errors due to the error response not being what the frontend expects.

Have we shown these to the PO team? I'm also wondering if in these cases we shouldn't even allow the "Accept" option?

Yes I sent the point of contact a link to these screenshots and they didn't have any issues. Clicking accept is what triggers the red box to pop up. Are you talking about disabling the button in this case?

Yes I sent the point of contact a link to these screenshots and they didn't have any issues. Clicking accept is what triggers the red box to pop up. Are you talking about disabling the button in this case?

Sounds good - just double checking. And yes should have been clearer - disabling the button once that has happened. Honestly just a thought, don't want it to hold back this PR at all.

Can you change the target branch of this PR to 1.16.0 and update from 1.16.0?

Validation errors aren't displayed on the frontend when the lab dates are incorrect. Likely need to add another check for this in the patients_controller.rb.

Looks good to me now. I'll approve, but this branch needs to be rebased off of master before merging. Also, would still like @timwongj  to review.


Tests randomly fail when they are not run in isolation

Tests run ok individually, but they fail when reusing the instance of VOMongoTestResource (a SUnit resource). The #tearDown of such resource executes VOMongoTestResource reset and the #tearDown of the test case just uses VOMongoRepository>>removeAll: to (fast?) reset the resources. Not sure if that's correct, but in any case it shows that: #removeAll: is not removing all elements, which is buggy.
The following code reproduces the bug. It halts around iteration 19 in my computer.
"From resource's tearDown"
VOMongoTestResource reset.

1 to: 30 do: [ :index |

	"From #testSave test case"

	| pilot pilots repository |
	repository := VOMongoTestResource current repository.

	pilot := VOTestPilot new
		name: 'Esteban';
		pet: (VOTestDog new name: 'Doggie').
	repository save: pilot.

	pilots := repository selectAll: VOTestPilot.

	1haltIf: [ pilots size > 1 ].

	"From test case's tearDown"

	repository
		removeAll: VOTestPet;
		removeAll: VOTestPilot.
].

"From resource's tearDown"
VOMongoTestResource reset.

Confirming that random tests fail intermittently

Thanks, and I guess your issue #9 is related.

Hi, an update.  Some observations:

The bug happens also in a simplified script which only save: and removeAll: a VOTestPilot, without need of the VOTestPet.
It also happens when using repository remove: instead of repository removeAll:.
I've been understanding more of how Voyage and Mongo work, and also logging in Transcript the low-level operations of the script above reported: the insert and delete mongo operations are written in the right order in the socket streams.
This bug doesn't happen with a 25 milliSeconds asDelay wait. just after the removing operation. But 5 milliseconds are not enough.

(Without completely understanding Mongo+Voyage yet) I suppose that the source of the problem is concurrency in the mongo server, and I suspect this problem appeared after the recent "futures" optimization because now it's too fast :)
Does it make sense? What do you think?

Fixed with #61


What socket data exists within redis?

I am currently storing data using socket.data.myCustomData and am able to retrieve the data properly between servers.
However, I'm wondering if this data is stored in redis itself?

Hi! The socket.data is not persisted to Redis, it only exists in the memory of the 1st server.
That being said, you can totally store it in Redis and fetch it upon connection.

@darrachequesne By storing/fetching it in Redis do you mean I should manually do a "pub/sub" to redis? Or are there built-in function in the socket.io-redis-adapter to do so?
Feel free to close this issue after your response.
Thank you for everything :)

You can use the fetchSockets() method:
io.on("connection", (socket) => {
  socket.data.someAttribute = 42;
});

// then
const sockets = await io.fetchSockets();
console.log(socket.data.someAttribute); // prints 42

Reference: https://socket.io/docs/v4/server-socket-instance/#socketdata
This also works with a cluster of Socket.IO servers, when using the Redis adapter (or any compatible adapter).

I'm confused now.
Didn't you just say the data doesn't persist in redis?
If socket.data.someattribute = 42 only exists in memory on Server1, after killing server1 wouldnt we get something like this:
io.on("connection", (socket) => {
  socket.data.someAttribute = 42;
});

// kill Server1 where the above happened

// then from Server 2
const sockets = await io.fetchSockets();
forEach(s in sockets){
 if(s.data.someAttribute === 42) return true; // this is never triggered
}

I understand that you can fetchSockets and get their content, but that requires getting the in-memory data from each server, correct?
Or do you mean that using fetchSockets will make the data persistent in redis?

but that requires getting the in-memory data from each server

Yes, that's right :+1:
In your example above, if server1 gets killed, the data is lost. Sorry for the confusion.

That clears things up.
Thank you!


Allow local config / download + read JDK path from the environment

Is your feature request related to a problem? Please describe.
All of the docs suggest npm install --global ... and the config is read from user home. If you wanted to install this tool locally to keep versions pinned (both for the CLI tool as well as the optional automatic JDK) for a specific project, you can't really. Being able to access the local config would also make this more accessible towards using tools like nix shell to distribute and source the JDK version. Further useful would be the ability to use the env vars to point to the JDK version so something like direnv could run a command which or nix-build --no-out-link '<nixpkgs>' -A jdk8_headless to find the JDK version.
Describe the solution you'd like
I would like to see a first-local fallback for .bubblewrap/config file + something like $JAVA_HOME or $JDK_HOME that could be read could override the current tooling. Alternatively, allowing the ability to pass in the config file via command line arguments could be an easy solution. I think there's now too much magic in downloading Java (like assuming all Linuxes are x86_64, etc.) that you made it too difficult to override if using a different setup.
Describe alternatives you've considered
I'm currently trying to pull apart @bubblewrap/core and override the bits I need in a custom command. This is far from ideal as I'm already starting at a bad place with the node v14.15.4 REPL
var core = require("@bubblewrap/core")

outputting
Uncaught Error: libuuid.so.1: cannot open shared object file: No such file or directory
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:1122:18)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)

EDIT: I actually get the same error output as above just by running the node_modules/.bin/bubblewrap. It would seem there's a mess of missing dependencies for Node canvas ... which we need why?
Additional context
Thanks for putting the tool together. I think it's nice for a lot of people that ya'll are handling the JDK version management on generic Ubuntu user's laptops. There's instructions for how to override and manually install the dependencies, but a) they're set to global and b) they could/should be easier to override.

Automatically downloading the JDK / Android SDK was added because it was, by far, the biggest source of issues from users.  One of the reasons is that the Android tools require JDK 8 and anything different will throw errors, which becomes error prone. We also ran into new releases of the Android SDK being broken, so downloading a version that is known to work well helps.
Regarding 32 bit support, the Android SDK tools requires 64 bit Linux distribution, so we have to assume the machine is x86_64. It sounds to me the best solution is to throw an error message here.
I'm supportive of enabling users to set a custom configuration, either with a command-line parameter or environment variables. I'm not a big fan of JAVA_HOME or similar, as it's likely the user will have a JDK that's different from version 8, which is required by the Android SDK and will cause troubles, but could be convinced differently.
We have an issue open around adhering to the XDG specification, which would help with where to look for the config files, by setting the XDG_CONFIG_HOME environment variable.
This other issue is also about looking for existing installations of the JDK/Android SDK.

I'm currently trying to pull apart @bubblewrap/core and override the bits I need in a custom command. This is far from ideal as I'm already starting at a bad place with the node v14.15.4 REPL

Alternatively, we'd be happy to accept pull-requests that would make configurability better. :wink:. loadOrCreateConfig() can take a custom path when constructed, so Cli.ts could be modified to read an environment variable that uses that.

EDIT: I actually get the same error output as above just by running the node_modules/.bin/bubblewrap. It would seem there's a mess of missing dependencies for Node canvas ... which we need why?

This is pulled in by svg2img so we can handle SVGs, which are frequently used in Web Manifests. This is the only native dependency in Bubblewrap, but we couldn't find a pure JS SVG library. They are all browser libraries, which use the browser SVG support or Node.js libraries that use canvas.  I had a draft PR around optionally supporting svgs, but we didn't merge it (not sure why right now). Again, maybe worth taking a fresh look into optionally loading the svg library. I recently created an issue for failing builds on Chrome OS / Crostini, with a workaround. My guess is you'll need to install missing libraries.

Right that's what I was seeing. I think being on full NixOS brings a lot of unforeseen pain because a lot of tools expect a different behavior -- like how most people's XDG points at their home dir so potato pot_a_to -- but there are many differences tooling author's don't have the time/resources for not assuming Linux is glibc on x86_64. Regardless, I'll see what I can do. It's a shame I can't get the node canvas running because it's not an optional dependency so I could try it out. I think with that being optional, I could use the parts of core I want without duplicating too much effort.

#461 has published with v1.10.0. @toastal does this solve this issue?

Yeah, I think this can make it workable for a lot of situations.


#851: replaced script with binary

Fixes: #851
Implements:

replaced idea.sh with idea
replaced studio.sh with studio

LGTM, you have a build error tho

Pull Request Test Coverage Report for Build<PHONE_NUMBER>4
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.03%) to 67.069%

Totals

Change from base Build<PHONE_NUMBER>8:
0.03%

Covered Lines:
6613

Relevant Lines:
9513

💛  - Coveralls


Register metrics in benchmark

Currently, the metric we record is not registered. This hits the
fast-path code of not actually recording the metric, so we miss out on
detecting any performance to that main code path.
This registers the metrics so we actually trigger record.
Related: https://github.com/census-instrumentation/opencensus-go/issues/1265

I went ahead and merged https://github.com/census-instrumentation/opencensus-go/pull/1267, which includes this change


Character Art needed

What is the Task
Need character art for the base game
Why do we want to do this
To render characters
How can I get started?
Create character sprites to use
Definition of Done
Character art for the following is available

[ ] town_hall
[ ] meetup_speaker
[ ] lowtower
[ ] kris
[ ] levi
[ ] news_anchor
[ ] andrew
[ ] britney

no longer need


Unable to install latest version of jspdf

Hi i am able to install jspdf old version i.e. 1.5.2 but not able to install the latest version in my angular app with the help of npm.
npm install jspdf is giving below error. I am not able to understand the issue and please take this on priority as i need to have download pdf functionality in this sprint.
Error:

npm ERR! path git
npm ERR! code ENOENT
npm ERR! errno ENOENT
npm ERR! syscall spawn git
npm ERR! enoent Error while executing:
npm ERR! enoent undefined ls-remote -h -t<EMAIL_ADDRESS>npm ERR! enoent
npm ERR! enoent
npm ERR! enoent spawn git ENOENT
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR!  Try installing and see if it solves your problem.

I am behind corporate proxy and git latest in installed in machine. Still getting the error in installing the latest version. How to update the latest file-saver? NPM Shrinkwrap is also not working.
C:\Program Files\Git\mingw64\bin\git.EXE ls-remote -h -t<EMAIL_ADDRESS>

@euller88 Thanks i had the old version of git may be that was the issue but after upgrading to 1.5.3 i am getting other error. saveAs is not defined. Basically file-saver module is not available. Not sure what happened to file-saver earlier it was working perfectly

Closing the issue as it has been resolved. In the new version of jspdf 1.5.3. SaveAs function issue is resolved. To install latest version of jspdf make sure you have the latest version of git installed in your machine.

While searching for<EMAIL_ADDRESS>checking installable status this is the first result in google. My issue was that I have a password protected ssh key I needed to add with ssh-add in order for the git dep fetches to work. Hope this helps someone.


Validate cluster-name provided by file

What does this PR do?
Validate the cluster-name provided by file so that the kubelet hostname provider built by concatenating the node name with the cluster name doesn’t result in a non-RFC1123 name.
The rule enforced by this change is exactly the same as the one enforced by GKE.
Motivation
If somebody tries to put an underscore in the cluster_name, the hostname built by the kubelet hostname provider is not RFC1123 valid and, as such, is rejected as a potential hostname.
If, in addition, the agent is running inside a kubernetes POD which hasn’t access to the IaaS metadata server, the agent will default to using the hostname seen from inside its POD, which happens to be the POD name.
Using the POD name as agent hostname is an issue because is changes at each redeployment of the agent.

cc @hkaj

ah yes that's a good point, let's update the doc (cc @l0k0ms ) and the config template as well 👍


Samplerless read tests don't allow denormal flushing mismatches

The tests do validation per the 1.2 requirement that all samplerless reads behave identically to the equivalent sampler reads. This is relaxed in 2.0 and later but the test kernels still require identical behavior.

Given the upcoming merge of cl12_trunk into master, I suggest we make the behaviour depend on the OpenCL version as part of addressing this.

There's also an argument to be made that this should be backported to the 1.2 spec since it's more strict than 2.0. Can we verify whether this distinction is meant to be maintained?

#512

Is there any plan to fix the issue ?


RBAC settings

I have a v1.8.1 cluster deployed by kubespray with RBAC on. I followed the 1.7 install guide, and made it through. Things look like they are up and running. When I go through the walkthrough 1.7 guide, I deploy the helm chart, but when I run:
kubectl get clusterservicebrokers,clusterserviceclasses,serviceinstances,servicebindings
I get:
Error from server (Forbidden): clusterservicebrokers.servicecatalog.k8s.io is forbidden: User "kube-apiserver" cannot list clusterservicebrokers.servicecatalog.k8s.io at the cluster scope
Error from server (Forbidden): clusterserviceclasses.servicecatalog.k8s.io is forbidden: User "kube-apiserver" cannot list clusterserviceclasses.servicecatalog.k8s.io at the cluster scope
Error from server (Forbidden): serviceinstances.servicecatalog.k8s.io is forbidden: User "kube-apiserver" cannot list serviceinstances.servicecatalog.k8s.io in the namespace "default"
Error from server (Forbidden): servicebindings.servicecatalog.k8s.io is forbidden: User "kube-apiserver" cannot list servicebindings.servicecatalog.k8s.io in the namespace "default"

I am new to RBAC here, and am not sure where the kube-apiserver is, or which Roles to bind. Any pointers?

Experiencing a similar issue:
Error from server (Forbidden): clusterservicebrokers.servicecatalog.k8s.io is forbidden: User "system:anonymous" cannot list clusterservicebrokers.servicecatalog.k8s.io at the cluster scope
Error from server (Forbidden): clusterserviceclasses.servicecatalog.k8s.io is forbidden: User "system:anonymous" cannot list clusterserviceclasses.servicecatalog.k8s.io at the cluster scope
Error from server (Forbidden): serviceinstances.servicecatalog.k8s.io is forbidden: User "system:anonymous" cannot list serviceinstances.servicecatalog.k8s.io in the namespace "default"
Error from server (Forbidden): servicebindings.servicecatalog.k8s.io is forbidden: User "system:anonymous" cannot list servicebindings.servicecatalog.k8s.io in the namespace "default"

I noticed also that the controller-manager was pounding the apiserver - with the apiserver having many forbidden messages in the logs.
I used the --disable-auth flag on the api server to get around the issue for now and to reduce the issues with the deployments so I could continue testing

Same here

I had the same issue with k8s 1.8.3. Turned out that the kubernetes apiserver had not turned on the --requestheader-client-ca-file flag. So the service catalog api server can't find the configmap which contains the client ca to check the authentication. So the solution in my case was to pass this line:
--requestheader-client-ca-file=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
to the arguments of the service catalog api server. I did this simply by editing the deployment configuration of the service catalog apiserver.

I tried what @loeh suggested but it did not work for me.

You need the name flag
--requestheader-client-ca-file=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
in the deployment of the SC API server of the given Kubernetes API server didn't have set this.
You must create trust the the API extention can communicate the the kubernetes api server.

1.9 as minimum for aggregation at this point. reopen or make a new issue if it's still a problem
/close


[WIP] Reset root password

We have not before made subfolders in the components or layouts folders so this would be the first. Is that what you're going for?

@eatonphil Yes, just looking to organize generic components by type. Open to suggestions.

Kk, I'd like to talk about it in person before this gets merged.

Coverage increased (+0.1%) to 86.513% when pulling ceb7b924967b9ac2cd7d15d243cadbcd3f94f42a on mparke:reset-root-password into 736109c2f27ac6df0d04f898057d6cf7b361988c on linode:master.

Coverage increased (+0.2%) to 86.654% when pulling 76c5957eb87ae44804b6c422da0e65825f6259f6 on mparke:reset-root-password into 736109c2f27ac6df0d04f898057d6cf7b361988c on linode:master.

Coverage increased (+0.2%) to 86.654% when pulling e2567940131b43082ba400568a2b068ae5b96df3 on mparke:reset-root-password into 736109c2f27ac6df0d04f898057d6cf7b361988c on linode:master.

No UI changes, correct?

@eatonphil Correct, the UI is the same


Fix magic eden floor ticker

This PR updates the Magiceden-related code such that it uses the newly released API (see add_magic_eden_to_docs). It also updates the documentation.

Amazing! Thank you!

No, thank you for creating this amazing repository and keeping it opensource! 🚀


Screenshot

Can someone add a screenshot of the client to the readme?

Maybe, but I'm more likely to add a Gallery section at some point showcasing how people have used it to create their own clients, since being able to easily extend and customize the client's appearance for your game as the dev is one of the key features. The default is pretty bland on purpose.


Format model inputs in p2a_model.R

This PR addresses part of #159, namely that there were redundant COMID columns in the inputs_and_outputs data frame in p2a_well_obs (e.g. COMID.x, COMID.y). Here I've added COMID as a join key when building p2a_well_obs to omit the redundant columns.
I've also added some comments and made formatting edits in both 2a_model.R and 2a_model/src/model_ready_data_utils.R to 1) add documentation that will allow us/me to better track the different steps in 2a_model.R; and 2) format some function documentation to match the code style used throughout the rest of the repo.

I'm wondering if there is a way that we can map the snakemake dependencies per your comments on lines 171-174, I always find it confusing to track down which of the snakefile need changing, but maybe that is just the nature of a complex pipeline.

I agree and would love to incorporate any suggestions for taking the burden of tracking dependencies out of our heads and into comments and code! Do you have an example of what you mean by mapping the snakemake dependencies? Are you referring to added documentation somewhere?

My thought (hope?) was to treat the _targets.R file as a sort of one-stop-shop location for configuration options that relate to the data + model pipeline. Hopefully this would reduce the cognitive burden of knowing where to go to update data or modeling options (even if you're not familiar with the individual data processing steps in the targets pipeline or all of the modeling steps in the snakemake pipeline).
So now we include the model configuration options in _targets.R and the configuration yaml files get built by the targets pipeline. And I think that individual lines in the .smk file should never need to be manually changed, but I'm less familiar with those files and could be wrong about that.
I suggest we think about this further and make additional changes when we tackle #146. I'll go ahead and merge this PR for now.


Suggestion: make webview use WkWebkit over uiWebkit

If your iframes are causing crashes from embedded videos on iOS, add the following somewhere:
if (WebView.defaultProps == null) WebView.defaultProps = {};
    WebView.defaultProps.useWebKit=true;

All this does is makes sure the WebView component uses webkit by default.

@Djinne Can you tell me where to put it. I am facing issue in ios Bad excess crashing in xcode.
I have an embed youtube URL in the HTML rendering.

I put it at the end of constructor of app.js

But I have a details.js component where I am facing the issue I put it on that file before render and it's working.
So will this a global setting if I put it on constructor or I have to put it everywhere where HTMLrender used?

It's global, it may work

Thanks @Djinne I have created a article on it that other developer get it from medium channel.
https://medium.com/tutorials4beginners/solution-of-youtube-embed-inside-react-native-render-html-component-which-crashed-on-play-and-e4e2d1518e8f?source=friends_link&sk=7720c52ccaa1011f832d8bd11145fc1b

Haha thanks man,
I completely forgot what the error was, I kind of wrote that fix out of frustration/tiredness after fixing it.
For me it was Vimeo that was causing the problem


Create A Database Schema

Create a database schema for out EMS System using SQL

i would like to work on this issue


Check callback for undefined

As of 7.0 pg / 2.0 pg-pool the callback is called with undefined rather than null: https://github.com/brianc/node-pg-pool/blob/master/index.js#L227

I can confirm that this fix is needed.

Is it possible to have this, or a similar solution, merged and pushed upstream please? It's still an issue.

They may just be busy, but I think it's possible @rightfold isn't watching this repo, which is something I unintentionally did myself before. If that's the case, ping :)

node-postgres has always been a pita, the Main reason I lost interest in this project. It’s weird that I don’t get notifications for new PRs though.

Regardless of owning the repository, you only get notifications for PRs/issues if you watch the repo. There's an account setting whether to automatically watch that applies

So, another case of GitHub being bad at software development. I question myself why I’m still using this junk.

Anyways, I’ll tag this merge today and upload it to Pursuit when I have access to a Pulp-enabled machine

@rightfold I'm using this library in production and I quite like its approach to the sql problem. I really want to help maintaining this lib. I'm afraid that I'm not smart enough and Purescript proficient to do this without some supervising.
I understand that you @rightfold are not interested in investing any more time in this code base... or could you give an advice in case of any design doubts?


Oauth Redirect

I've been trying to get Discord and Reddit to cooperate when logging in. I've set the hostname in the .conf file example.example.com, I've set "auth" to "/auth", I've made sure to set the redirect address on all the APIs to "http://example.example.com/auth/service". My best guess is that I'm formatting the redirect URL wrong, but I'm honestly stumped here.

Thanks for help! I found out that it was just /auth set to "/auth", it has to be the full URL. Maybe if that would've been stated more clearly in pxls.conf I wouldn't have had to deal with this.


Remainder of entire string is stripped when encountering consecutive block comment tokens

In JavaScript / TypeScript, this package will strip not just the block comment but the entire remainder of the string when a block comment of the form /**/ is encountered. For example, the string hello/**/ world will become hello instead of hello world.
This bug only affects block comments of the form /**/. E.g. /***/ and /******/ are unaffected.

This might not be related, but here's a short reproducible example:
const strip = require("strip-comments");

const data = `
 /**************************
 * Example of some comments
 ***************************
 *
/

export function test() {
  console.log("This function should remain");
}
`;

console.log(strip(data));

Expected Output:
export function test() {
  console.log("This function should remain");
}

Actual Output:


receiving error message : OSError: [Errno 116] ETIMEDOUT

Hi everyone,
I am using a Maixduino board flashed with its latest firmware maixpy_v0.5.0_98_g7ec09ea.bin
I was trying to implement the same code as: https://github.com/sipeed/MaixPy_scripts/blob/master/network/demo_esp32_socket.py
in order to receive an image from the server ( which is Alice.jpg) and display it on my LCD.
while doing so, i get this error message: OSError: [Errno 116] ETIMEDOUT in the line 60: data = sock.recv(4096)
I successfully made a connection on my Wifi by changing the WIFI_SSID and WIFI_PASSWD.

Can I get a guidance about this issue ? I kept looking for a solution on the internet and couldn't find anything, if you need more information that I can provide you can ask me.
Thanks in advance.

make sure esp32's firmware is the latest, and if you use the master's firmware, you should change anothor resources instead of Alice.jpg, because it now become a https url, you can try a http url

Hi,
The esp32's firmware version i have is 1.4.0 which is the latest.
I tried to download another resource instead of Alice.jpg to prevent the https url, to do so i tried this url : http://via.placeholder.com/200.jpg. This is a jpg image and has 200*200 in size
Unfortunately i still get the same error OSError: [Errno 116] ETIMEDOUT


Images in slides are re-downloaded on every spin

Describe the bug
Images in slides are re-downloaded on every spin while using infinite sliding.
To Reproduce

Open example with infinite sliding.
Open Chrome DevTools
Move to Network tab
Click arrows to slide
And you can see more and more images re-downloaded...

Expected behavior
There should be no background loading of those! Those should load ONCE.
Screenshots

Environment
System:
    OS: Windows 10 10.0.18363
    CPU: (12) x64 Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
    Memory: 6.11 GB / 15.85 GB
  Binaries:
    Node: 12.16.0 - C:\Program Files\nodejs\node.EXE
    npm: 6.13.4 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Edge: 44.18362.449.0
    Internet Explorer: 11.0.18362.1
    Google Chrome: 80.0.3987.149

Desktop & mobile
Every browser...
Additional context
Good configured cache might help a bit, but still it generates network usage... :/

@PsychoXIVI
thanks for reporting but I'm not sure whether it's a valid bug.
I see sometimes there's some data downloaded from the server but I can change slides an unlimited number of times and no new data is downloaded.
Video: https://recordit.co/cnXA0mPOe2
Maybe you could write more details or maybe it happens only on Windows.

For me, it works in a similar way on Windows, IE11.
Video: https://recordit.co/1tefzSkZn2

I just checked it again - those are downloading for sure! I will try to make video too.

Here is the video: https://streamable.com/ebkdh
Note:

it seems like sliding right always make it to download.
sliding left slowly is not triggering re-downloads, but fast sliding left yes.

This definitely occurs to me as well whenever using Infinite scrolling.
When advancing through the slides, a new image download is triggered and a new "list item" tag () is being inserted with a newly downloaded image. Is this intentional?

@richardmint
which OS and browser do you use?

@richardmint
which OS and browser do you use?

macOS Catalina (10.15.13) and Chrome (81.0.4044.122).
Happens on this demo page as well: https://brainhubeu.github.io/react-carousel/docs/examples/infinite
Open

@PsychoXIVI @richardmint
I converted this issue to a feature request because IMO the current situation is acceptable.
If you want to open a PR, implementing lazy loading of images (when lazyLoadingImages: true), you're more than welcome.

@richardmint
I also invite you to like this issue (👍) so more 👍it has, it's more likely to be finished in the nearest time.


work in progress in RIO-34

Refer to this link for build results (access rights to CI server needed):
http://ci.really.io//job/really-pr-validator/100/
Test FAILed.

Refer to this link for build results (access rights to CI server needed):
http://ci.really.io//job/really-pr-validator/101/
Test FAILed.


Improve error message "Invalid module name in augmentation" or remove limitation

TypeScript Version:  2.4.1
Code
import { EventEmitter } from 'events';
import { ComponentClass, Props, ReactElement } from 'react';

declare module "react-bootstrap-table" {
}

Where we do not install 'the types package for 'react-bootstrap-table' but try to create our own definitions file.
Expected behavior:
I would expect to be able to "augment" the module even if the d.ts file contains other things besides the code above. or at the very least to have the error message be less cryptic.
Actual behavior:
I get the compile error:
Invalid module name in augmentation. Module 'name-of-module-i-am-trying-to-augment' resolves to an untyped module at 'absolute-path/name-of-module-i-am-trying-to-augment', which cannot be augmented.
This is does not help at all to understand what is the error. Augment suggests that I am trying to change the module when in fact i'm just describing it.  No steps to fix the problem are suggested.

@ofirgeller what did you do to solve this one? I'm also trying to write type definition for a package, and I get the same error message. Tried bunch of different packages, just didn't work.

@cyberhck  You must have nothing else in the file outside of the module deceleration, even your imports must be inside of the body of the deceleration. You might also have a different root problem then this one. that still gives the same error message, hope not.

Thanks, I just solved it around 5 mins ago :smile: thanks for your reply.
Yes, I had imports at the top :slightly_smiling_face:

See also this StackOverflow question.

@DanielRosenwasser Thanks, we write our libraries in TypeScript itself, and we don't have to bother writing d.ts files manually, for other library we hardly write any, only now I wanted something not in this repository, I found at https://github.com/flaub/typescript-definitions, even thought that's MIT license I don't want to plagiarize someone else's work to send a PR. Maybe @flaub is willing to make a pr?

an augmentation is considered subservient to a declaration. if you want to declare a module, create a new .d.ts file, or in one that is not a module already declare it. Modules have their own scope.


Editing journal entry after using view command does not update the main viewing panel

Steps to replicate:

view in/j index/ANY_VALID_INDEX

editj 1 ANY_VALID_EDITS

The list of entries is reset to the full list, but the main viewing panel is not updated.

This is caused by model.updateFilteredEntryList(PREDICATE_SHOW_ALL_ENTRIES) in EditJournalEntryCommand.java. Commenting out this line will solve the issue.
I will make a PR for v.1.4 to change the sidebar selection behavior as well as to solve this issue.


Documentation unclear on Hoodie environment

README.md does not make it clear what environments Hoodie will run under. I use Windows. Will Hoodie work?

@David263 yes, I use Windows myself, I can confirm that Hoodie works

I'm taking this issue.


Wrap transforms between global projections defined using proj4

Fixes #10928
If both projections are set to allow wrapX return an updated transform to handle that similar to the predefined projections, and which is used by default.  getTransform has an optional wrapX parameter which if false sets the transform to merely normalise the source coordinates before transforming - this might be useful when loading data into a single world of a destination projection where the world is offset from the data source world (a potential follow up might a readWrapX() method for formats which support readProjection() so features on a wrapping source load into its normal world).
ol/layer/Graticule is updated to handle offset projections which were previously assumed to be always non-wrapping.

proj4 and mproj seem very similar.  While they do typically understand wrapped source coordinates the output is almost always in the destination real world (unlike the built in EPSG:4326/EPSG:3857 transforms whose behaviour I am trying to replicate).

Instead of trying the transform function to see what it does, it would be nicer to add options to ol/proj.addCoordinateTransforms to indicate what it does. Something like
addCoordinateTransforms('FOO', 'BAR', forward, inverse, {
  forwardWrapsX: false,
  inverseWrapsX: true
});

The proj4 module can then add transforms with the appropriate options.

Currently has to wait until getTransform() is called as the projection doesn't have an extent or global setting until after the it is registered.


A developing approach to the Tri2Rec cut

Here's what I've done in my code: the basic idea is derived from the easiest case of hinged dissection: triangle to rectangle. See this figure below for a most common cut and transformation (which would pop up each time you google "hinged dissection").

A brief clarification of the algorithm
For a given triangle ABC and a given length w, the purpose is to cut ABC into a rectangle with same area and dimensions w by S/w (where S is the area of ABC). This method should normally give a cut with fewer pieces compared to the technique of "escalator method". Note here w has to be within a certain range that is specified by the shape of the triangle, which will be discussed later. For now just think of w as a "reasonable" edge length. The key point is that w is flexible; in comparison, a canonical rectangle in the original method always has an edge with the same length as one of the triangle's edge.
Steps
(1) Find the midpoint E of AC and midpoint F of AB.
(2) Find a point X within BC such that EX = w. Note there're generally two such points, and we choose the one that's closer to B. (This can be achieved by find the projection of E onto BC first and then make use of Pythagorean theorem.)
(3) Find a point Y within BC such that vector XY = vector BC/2. (The reason of choosing X to be the one closer to B in step 2 is just to ensure that Y is within BC.)
(4) Project F and Y onto line segment EX. (Now each piece has a right angle.)
The 4 resulting pieces are capable of a hinged dissection into the desired rectangle. One way of doing it is to fix the upper quadrangle AEMF, choose E, F, X as the anchor points, and rotate the three other pieces 180° around their respective anchor point. This means the purple triangle NXY is hinged to the green quadrangle BXNF at point X, and rotating about X while BXNF is rotating about F. What you get is the rectangle drawn. You can also choose Y as triangle NXY's anchor point and hinge it to quadrangle CEMY. There are other available transformations as well.
It may take some elementary geometry knowledge to see the result is indeed valid. (I can provide a formal proof later if needed.)
Relative conditions of w and triangle ABC
Now the conditions should be addressed, in order for such a construction to exist. There are several of them, and it would take some caution to come up with the complete list:
(a) To start with, there's actually a condition for the triangle to meet: angle EBC should be no greater than 90°, otherwise angle FEX must be greater than 90°, and it becomes impossible for F to project onto segment EX (step 4 above).
(b) In step 2, apparently w has to be no less than EH, the distance of E to BC, otherwise X can't exist.
(c) In step 3, X must be within BD, D being the midpoint of BC, in order for both X and Y to be within BC.
There are two cases to consider:

if angle ABC > 90°, then B and D are on different sides of H. Hence, it only requires w (length of EX) ≤ EB, in addition to w ≥ EH in (b).

if angle ABC ≤ 90°, then B and D are on the same side of H, so it requires ED(=FB) ≤ w ≤ EB. Note since ED(=FB) ≥ EH, this condition implies (b).
(d) Finally angle EXF should be no greater than 90°. Otherwise the projection of F onto EX would lie beyond segment EX. This condition is even more trickier; see the figure below. If X lies anywhere between x1 and x2, angle EXF would be greater than 90°. On the other hand, x1 and x2 only exist when EH < EF/2. Under such circumstances, it's required that either w ≥ Ex2 or w ≤ Ex1. The exact expressions of Ex1 and Ex2 are kind of tedious, but they should be straightforwardly solvable.

How to achieve them
The methods I used in my code to satisfy or get around with these conditions are the following.
(i) First consider conditions (b) and (d). We have to determine a value of w such that w ≥ EH, and if EH < EF/2, then either w ≥ Ex2 or w ≤ Ex1 (we can just let w ≥ Ex2 for convenience). Note the relations should hold for both triangles. From these we obtain a threshold value of w that it should be no less than. Pick such a value of w.
(ii) Then consider conditions (c). For a given w, if the current triangle ABC is such that EB < w, then we cut ABC by EB, and rotate the upper triangle ABE 180° about E to form the new triangle A'BC. Then EB in the original triangle essentially becomes F'B in the new one, and E'B becomes longer. Continue such "triangle half cuts" until FB ≤ w ≤ EB is satisfied. On the other hand if FB > w, similarly we cut ABC by FC and rotate triangle ACF 180° about F to form the new triangle ABC, and continue in this manner until condition (c) is met. Note that a "triangle half cut" is a hinged dissection.

(iii) Finally it's worth mentioning that we can arbitrarily switch points A, B, C to make the triangle ABC ideal. To order to meet condition (a), we can either switch them so that angle ABC isn't the greatest angle among three, or apply the "triangle half cut" discussed above.
Note that w is totally at our choice as long as it's no less than the threshold value obtained in (i). For the current stage of cutting one triangle into another, my hope is to find a value of w such that both triangles can be cut into as few pieces as possible while forming a common rectangle. In other words, I wish to reduce the number of "triangle half cuts" needed. I'm still working on an algorithm to achieve this. Switching points A, B, C should also help; for example, we can make BC to be the shortest edge among three, then it can be shown that the threshold value is actually the lowest, which allows more freedom of choosing w, in order to reduce the total cutting pieces.
Once all conditions are met, carry out the steps above to cut two triangles into a common rectangle. The next step is to overlap the rectangle and do "double cut" using the Sutherland-Hodgman polygon clipping algorithm, as in the python code Chris wrote.
A few comments
Both the "Tri2Rec" and "triangle half cut" transformations are hinged dissections, but unfortunately, hinged dissections are not transitive; that is, if a piece is rotating about different anchor points in two consecutive hinged dissections, then the overall chained transformation isn't a hinged dissection. We can certainly keep them appear as hinged with the presence of intermediate steps, but I'm not sure whether that's something we desire. I also found that 2007 paper titled "hinged dissections exist", but I suppose it would take quite some effort and genius to implement the method introduced.
I'm also thinking about a different way of doing all of these: how about the other way around - cutting a rectangle into two different triangles? It seems to require fewer conditions, and could also save the trouble of using the Sutherland-Hodgman algorithm. I'm currently implementing this, and will write on it later when I'm done.

When you get a chance, could you explain your data structure for storing cuts and their transformations?

Well, I just used the most straightforward way to store the cuts as a list of vertices. The associated transforms are an object with several fields: anchor point (axis), angle to rotate, a translation and a parent transform, which is the transform of the piece that it's hinged to. So it's essentially a linked list, though I guess a ordinary list would also work.

See #17.


Errors in try online examples

Chromium / Mac OSX
aysnc / await.marko

conditionals / body-only-if.marko

embedded-js / import.marko

Fixed with latest website release.

Fixed with latest website release.


A way to ignore rules?

I want to check only some rules, such as erroring on REM and SVG usage, but am happy to go with unsupported outline

Sorry this slipped under the radar. There's no current way to ignore rules, and that's not something that's planned (assuming you're thinking along the lines of eslint or prettier). Programmatic filtering is going to be the only option at the moment.