Update readme.md

Updating the PAN OS link provided on line 24 - Please double check the link
Required items, please complete
Change(s):

Changed the PAN-OS link on line 24 - Please validate before approving that the link is correct

Reason for Change(s):

URL invalid

Version Updated:

No


Resolve syncing conflicts from repo_sync_working_branch to master

Pull request opened by Docs to resolve syncing conflicts from repo_sync_working_branch to master.

Notified pubdesktech

@jborsecnik This looks like a conflict due to a customer updating a file that was subsequently renamed. I'm going to investigate now.......

@jborsecnik I fixed the conflict, so I believe this is ready to merge now.


New version: ChainRulesCore v0.7.4

Registering package: ChainRulesCore
Repository: https://github.com/JuliaDiff/ChainRulesCore.jl
Created by: @simeonschaub
Version: v0.7.4
Commit: 1375f53b8bb775f9cd1a5bf09c11dce68497eca3
Reviewed by: @simeonschaub
Reference: https://github.com/JuliaDiff/ChainRulesCore.jl/commit/1375f53b8bb775f9cd1a5bf09c11dce68497eca3#commitcomment-38562958

Wait a sec

Seems like 0.7.2 and 0.7.3 were never registered. Would it be possible to still manually merge this?


Handle reverts of trades

Reverts affect to many entities. Depending when we implement this issue, we might have more affected entities, but at least:

Trade: Needs the audit dates
Order: Keeps track of the traded volume
Price: Need to be undone. https://github.com/gnosis/dex-subgraph/pull/25#pullrequestreview-371332200
Balances: May be affected

So trade reversions are tricky to handle. The main factor is that mappings don't have access to @derivedFrom fields so finding the exact trade that is being reverted is non-trivial. Add to that that technically multiple solutions can be processed in the same transaction and that the same order can be traded multiple times in the same solution, it all gets quite complicated.
In order to get around this, we will take advantage that all trade events are emitted immediately before a solution submission event. This means that we just need to keep track of the number of trades in a solution and we can deterministically reconstruct a trade ID given a solution and the trade index. Additionally, I noticed that prices and solution data was being computed by an eth_call when it can instead use the SolutionSubmission event. This will greatly simplify how prices are computed and allow them to be more easily reverted.
The plan for fully implementing this is:

[ ] Add trades to "pending" solution and modify the ID on SolutionSubmission event
[ ] Use SolutionSubmission event to get required solution data (objective value, burnt fees, submitter, etc.)
[ ] Use SolutionSubmission event to add prices
[ ] Keep track of number of trades in a solution and use @derivedFrom trade collection on the solution (allowing a trade to access its solution, useful for order -> trade -> solution for example)
[ ] On trade reversions revert trades one at a time.
[ ] First trade reversion can revert the solution (since there is no SolutionReversion event) by updating its reversion epoch
[ ] Solution reversion should delete all prices.

Thanks for coming up with a game plan ♟

Add trades to "pending" solution and modify the ID on SolutionSubmission event

Do we know if there are any issues with renaming IDs after initial creation? I could imaging that GraphQL subscriptions might behave weirdly if we change IDs under the hood.
How about getting the solution ID from the batch object?
https://github.com/gnosis/dex-subgraph/blob/00dccfa5448cc35e91a168dce6fb77f5ee545b3b/schema.graphql#L198-L205
This way, whenever we get a TradeReversion event we could:

look up previous Solution from the Batch entity
For all trades on that solution, revert the trade
Also delete all prices that belong to this solution
unset the Batch's solution field (to signal future trade reversions there is not more to do)

Generally I agree that price computation should happen onSolutionSubmission but that seems like a separate task.

How about getting the solution ID from the batch object?

The issue is that the first trade does not know what solution ID to use, as the SolutionSubmission event is, AFAIK, the last event to be emitted by the SC. This means that the Batch won't have the solution set when the first trade is received.

Do we know if there are any issues with renaming IDs after initial creation? I could imaging that GraphQL subscriptions might behave weirdly if we change IDs under the hood.

Good question. One thing to note is that all of these events get processed in a single block, not sure if this makes a difference or not for subscriptions. Maybe we can create a PendingSolution entity that gets created and removed solution and is not meant to be queried?

For all trades on that solution, revert the trade

This also works. I just naively imagined that each TradeReversion event would revert each trade individually, but this is probably much easier to implement. One thing to note that this would mean that Solution::trades can't be an @derivedFrom field because of mappings limitation. One way to work around this if we do want to make trades an @derivedFrom field (which, IMO we do as it would allow a query where Order > Trade > Solution for example to get all solutions that traded a specific order) is we can keep track of a tradeCount and then compute each Trade::id from ${Solution::txHash}-${Solution::logIndex - i} for i in 1...Solution::tradeCount.

Generally I agree that price computation should happen onSolutionSubmission but that seems like a separate task.

The reason its related is that Price entities get created on Trade events, so they need to be removed on trade reversions as well, and potentially re-added (or not! If the new solution doesn't trade a token that and old solution did for example) with the new solution. In this sense, they need to be related to the batch/solution somehow so all prices for a given batch can be removed on reversion.

The issue is that the first trade does not know what solution ID to use, as the SolutionSubmission event is

We do create the solution ID as the txhash+logIndex of the first trade event:
https://github.com/gnosis/dex-subgraph/blob/00dccfa5448cc35e91a168dce6fb77f5ee545b3b/src/mappings/batch.ts#L5-L18
Do you think that would have to change?

One thing to note that this would mean that Solution::trades can't be an @derivedFrom field because of mappings limitation.

Does it have to be? At the moment it's just a list so I would expect I can query all trade Ids from the entity (no need to store a count on it).
Another thing I saw about the price estimation and why it might make sense to process in the trade processing is that it keeps track of cummulative volume per token (to give a sense how robust the price is).


OpenBLAS build and LAPACK binding

Sundials can add in the use of BLAS if available.
https://computation.llnl.gov/sites/default/files/public/cv_guide.pdf
All that needs to be set are the BLAS binary locations. I know that @staticfloat how do you chain builds to be able to do that?

BLAS is a special case; during build time, you can use the releases of OpenBLASBuilder.  I suggest using this one.  You'd use this as a dependency during the Sundials build.  You could go through the wizard again, or you could just add it to the dependencies list that gets passed into build_tarballs().

Ah, looks like SundialsBuilder hasn't been updated in a while.  We've got a new and improved API that will make your build_tarballs.jl a little easier to manage.

Okay I ended up chipping away at it while watching Firefly tonight, and before I knew what I had done it was 3am and https://github.com/JuliaDiffEq/SundialsBuilder/pull/7 appeared.  Shiny.

It looks like SuiteSparseBuilder has a release now. Depending on that might give us KLU and OpenBLAS, so we could reduce code here.
https://github.com/JuliaLinearAlgebra/SuiteSparseBuilder/releases

It looks like that's all cleared up and Sundials was upgraded to 3.1.1, along with Travis working now. The last short term goal is to get it to find the OpenBLAS LAPACK, https://github.com/JuliaDiffEq/SundialsBuilder/pull/9

Alright, https://github.com/JuliaDiffEq/SundialsBuilder/pull/11 didn't work at all so I'll have to look into this in more detail later.

This seems to be more widespread than I originally thought:
https://github.com/LLNL/sundials/blob/490f6bb126b3ae13c775419978196f0a89be1ad7/include/sunlinsol/sunlinsol_lapackband.h#L61-L65

I am currently trying to update the BinaryBuilder for Sundials v5.0.0 and If I keep this configuration for Sundials I get that LAPACK isn't functional.
-- Looking for LAPACK libraries... OK
-- Checking if LAPACK works... FAILED
CMake Warning at config/SundialsCMakeMacros.cmake:83 (message):
  ------------------------------------------------------------------------

  WARNING: LAPACK not functional

  Blas/Lapack support will not be provided

  ------------------------------------------------------------------------
Call Stack (most recent call first):
  CMakeLists.txt:914 (print_warning)

Any ideas?

we currently don't build with LAPACK because of those issues 🤷♂ . Not sure anyone knows of a solution.

I see. since I saw it enabled in the repo though it was working. Thanks for the answer.


Pass a taiko script as argument to taiko command

Let the taiko command take a taiko script as input to run.
For e.g.
$ taiko
> openBrowser("google.com")
> write("Gauge testing")
> click("I'm Feeling Lucky")
> .code gaugesearch.js
$ taiko gaugesearch.js // Runs the tests headlessly

.code and the saved file can omit the import declaration
const { openBrowser, ... } = require('taiko');

$ taiko
> openBrowser("google.com")
> write("Gauge testing")
> click("I'm Feeling Lucky")
> .code gaugesearch.js
$ node gaugesearch.js // Runs the tests headlessly

This works already.

Yes, but if we run with
> taiko gaugesearch.js

We can get rid of the long declaration at the top
const { openBrowser, ... } = require('taiko')

Also output the result of each action while running on this mode
$ taiko googlesearch.js
 ✔ Browser and page initialized
...

But then it won't work with node.

That is ok
Scenario 1
Using taiko to quickly run scripts. Invoke the REPL from any folder, record a script and run using taiko filename the resulting script should be short and noise free i.e if the test is only clicking and then other imports are not required. The user may record multiple scripts that can run via taiko
Scenario 2
When using external modules (require), use npm and package.json with the line
  "scripts": {
    "test": "taiko gaugesearch.js"
  },

This should work for a local install of taiko too.
Scenario 3
To use it only with node, they add the require line write the script using documentation. Use the .code feature to copy from the REPL. This works for using it a testing framework like gauge which will have it's own runner.
I see Scenario 1 as the most common use case.

That is ok

Or
.code generates a clean file that only imports methods that's recorded.
For .e.g.
> openBrower()
> goto('google.com')
> write('gauge site')
> click('Google Search')
> closeBrowser()
> .code
> .code
const { openBrowser, goto, write, click, closeBrowser } = require('taiko');

(async () => {
        await openBrowser();
        await goto('google.com');
        await write("gauge site");
        await click("Google Search");
        await closeBrowser();
})();

Note: This is implemented via 0e7096ea71eaff9d526f821e4e425de73df7a12d


Parallel Processing and Performance

Admittedly this is more of a question than an issue per say....
It appears from reviewing issue like this and this , some work was done to create some separation between the context and state, specifically motivated by an inquiry on parallel processing. Reviewing this commit it appears functions like  whisper_init_no_state,  whisper_init_no_state, etc we're added to accommodate this separation. It also appears your bindings are using these as well.
From experimenting with this crate, I don't find any particular appreciable(marginal) benefit from running multiple State's in parallel across the same context. In my environment I have the cuda feature flag enabled, and I'm using rayon to make parallel calls that each create a new State. Before this I'm working with streamed audio (read from videos by hooking gstreamer as it transcodes). I'm specifically calculating a desired byte size to get as close to a target number of seconds before I initialize the speech to text recognition, as I've found the larger the size(say close to 30 second chunks), generally, the faster the recognition(vs more smaller chunks of audio). Coupled with some fixes for deduplication(due to overlapping of audio chunks), etc, this is working very well.
What I have found is that creating(at the expense of memory) additional context's like this:

pub static WHISPER_CONTEXT: Lazy<Vec<WhisperContext>> = Lazy::new(|| {
   let model_path = "./include/ai/whisper/model/ggml-large.bin";
   let num_instances = 2; // Change this to how many instances you want

   (0..num_instances)
       .map(|_| WhisperContext::new(&model_path).expect("Failed to load whisper model"))
       .collect::<Vec<WhisperContext>>()
});

and then fetching one in the thread that is performing the recognition like this:
let index = WHISPER_CONTEXT_INDEX.fetch_add(1, AOrdering::SeqCst) % WHISPER_CONTEXT.len();
let whisper_context = &WHISPER_CONTEXT[index];

Results in improving the performance by nearly double when going from a single context to 2. In my case fiddling with the num_threads, block size, etc, makes little difference(after say num_threads=4), and creating multiple context's makes all the difference.
Have you done any experimentation on this? Am I misinterpreting the commits in whipser.cpp on sharing a single context across multiple threads?
Thanks for any info you might have!

As far as I know, the original reason that states were created was for saving memory by not having to load a new model each and every time a user wanted to use it at the same time. I have not done any experiments like this.

I'm specifically calculating a desired byte size to get as close to a target number of seconds before I initialize the speech to text recognition, as I've found the larger the size(say close to 30 second chunks), generally, the faster the recognition(vs more smaller chunks of audio).

whisper.cpp (and the original whisper implementation) both pad audio to 30 seconds, which is a limitation of the underlying model if I remember correctly.
What I'm wondering here is how multiple contexts improve performance so drastically for you. It could be some sort of hardware limitation that adding contexts bypasses, but I haven't even thought of possibly using multiple contexts over states, as most of the places I use whisper are memory bound. If you could write up some sort of minimal example, I could dive into this a bit deeper.

Thanks, good to know on the padding side of things. I'll do some more experimentation on it, and I was surprised it was so much faster(on my machine) creating a second context(as this is something I wanted to avoid). If it continues to be reliably reproducible I'll cook up a sample program for it and post it so you can see if you get the same results.

Any updates here?

@tazz4843, sorry for the delay. I haven't had a chance to work up a separate example that mimics the workflow in my main application. At least in my case I DO continue to see a performance improvement by running parallel context. My dev environment:

Dev machine: CUDA enabled with whisper, running on an RTX 4090, with a 24 core processor cpu and 128GB ram.
Producer/Consumer threads reading and processing audio segments pulled from a gstreamer fakesink over a crossbeam channel, running denoise, vad, etc operations prior to submitting chunks for inference. Engine supports VOSK or Whisper depending on config.
The inference threads run inference in parallel across however many context's have been defined, or wait for an available context as necessary.

I'll go ahead and close the ticket for now. If I get a chance to create an isolated example later I'll post it.


Artifactory client: authorization header in HTTP GET requests

Including some fixes in package-lock and typings.

approved


Library not loaded: libmkl_rt.dylib

I have successfully compiled and installed dlib in my MAC. I have also installed Dlib's Python Interface. But when I try to import dlib I am getting following error.
ImportError                               Traceback (most recent call last)
<ipython-input-4-82a137582d6f> in <module>()
----> 1 import dlib
//anaconda/lib/python2.7/site-packages/dlib-19.1.99-py2.7-macosx-10.6-x86_64.egg/dlib/__init__.py in <module>()
----> 1 from .dlib import *
2 __version__ = "19.1.99"
ImportError: dlopen(//anaconda/lib/python2.7/site-packages/dlib-19.1.99-py2.7-macosx-10.6-x86_64.egg/dlib/dlib.so, 2): Library not loaded: libmkl_rt.dylib
Referenced from: //anaconda/lib/python2.7/site-packages/dlib-19.1.99-py2.7-macosx-10.6-x86_64.egg/dlib/dlib.so
Reason: image not found
Any reason ??

The error says it can't find libmkl_rt.  You must have the intel MKL library installed but not in your linker path.

@davisking So what can be done in this regard? I am new in this, should I link intel library instead of what it is asking? If yes, how?


Convert testing notebook into streamlit / gradio app

Convert this notebook at notebooks/explore_inference.ipynb into an interactive application through Streamlit, Gradio or some CLI tooling.
Optional

also consider adding GPU support
also consider how this can be extended to Hugging Face space deployment

hey @jackapbutler I am interested in working on this issue. Can you please specify the directory in which I should put the app.py for the streamlit application for the given notebook code?

Hey @gurvinder-singh-yadav, that's great! I think for the time being you can make a folder at the root of the repository called inference/ and move the notebook + resulting application and any other code in there. 🙂


diff showing parameters with noEcho = True

It seems that the diff command is not honouring noEcho: true for omitting sensitive information. (tested on latest version to date)

Sorry for the wait.
Yes bora is not currently aware of the noecho CF Parameter option. I can add this in as a PR soon.


Smallrnamap

@chamaelj it's not crystal clear to me why you need the .bai file to get your script working. Can you elaborate on this ?
Otherwise, take a look to https://www.biostars.org/p/15847/ . Indeed - if you really need this .bai file, you can generate it internally with samtools index file.bam. But yet, I am not sure your really need it. Even the lumpy wrapper did not need the .bai file, just a sorted bam file.

👍

@chamaelj I will close this pull request:
I have created a smallrnamap branch on the ARTbio/tools-artbio repo.
I'll show you how you can now push your developments in this remote branch. The benefit is that we can more easily work together on the same code. The price is that you have to regularly pull this branch in you local development repo to keep track of the changes you are not responsible for.


downloading files not clear if it is working or stopped

While downloading the frankrunner displays ..................................................................................................... but it would be nice if this would contain the occasional other char so you can see it is still alive

Or maybe we can make the build.xml call curl for downloading files (the .bat and .sh files are already using curl)


Refactor embedded services to service interface and manager

With #152 and #153 we've started restructuring MicroShift such that embedded services (etcd, kube-apiserver, etc.) have their logic self-contained (one file per service), conform to a common Service interface, and using a service manager to implement startup dependencies and cancellation consistently.
So far, only etcd and kube-apiserver have been migrated over. We need all other components to be migrated, too:

kube-controller-manager
kube-scheduler
openshift-preparation (namespaces, SCCs, CRDs, etc.)
openshift-apiserver
openshift-controller-manager
kubelet
kubeproxy
component-loader (see #144)

Services can likely be migrated over one-by-one in multiple PRs / by multiple people.

Note that some services currently hardcode the SIGTERM signal handler to the stop channel in the upstream code and that patches in /hack/patches patch out from our vendored packages. When refactoring kube-scheduler, kube-controller-manager, and klusterlet (following the example of kube-apiserver), please therefore ensure to test without those patches applied (see also #163).

I will work on porting the kube-scheduler to the new service manager framework.

I'll work on porting kube-controller-manager let's see how far I get b4 PTO

I will work on porting the kube-scheduler to the new service manager framework.

Oh I assigned that to myself. I will un-assign myself. Feel free to take it https://github.com/redhat-et/microshift/issues/199

Addressed by #199, #200, #201, #229, #239.


Return ROS time values

Fixes: DATA-627
Description of Changes
This switches the python interface to providing timestamps as ROS times, similar to how the actual rospy interface works.
Test Plan
Unit tests.

I'm wondering if we need to support getting time as int or float? Like, why can't we just return embag.RosTime and the client can call to_sec or to_nsec to get long/int or float. This way we won't have to pass around that ros_time_py_type. Does rospy support just getting time/duration as primitive? May be this is for backward compatibility?

@kashish-jain Its mostly just about providing nice functionality for clients so that they don't have to worry about writing the conversions/serializations themselves and dealing with performance hits from deeply nested structures. IMO passing the arg around isn't too big of a deal.
rospy doesn't provide any to_dict functionality, so theres no precedence there.


Add role to User model

Summary
Users need to have a "role" that can be used for permissions. These roles will be: admin, teacher, student, alumni. Users may have more than one role.
Things to Consider

Once everything is set up these roles will be used to decide permissions granted to users. Probably a student cannot be an alumni at the same time, however a teacher might be able to be an admin.

Criteria for Completion

[ ] role has been added to user model
[ ] role is an enum array
[ ] role cannot be anything but ADMIN, TEACHER, STUDENT, ALUMNI
[ ] appropriate tests have been written

I can work on this!


Kamel init - Do not include license header

The kamel init Foo.java command generates source code that has an ASF license header.
But since this is for end users and they may use other licenses or none at all, then we should generally not include a header out of the box. This also makes the code smaller and leaner and quicker to overview and understand.
This applies also to the other languages it can generate for like groovy, kotlin, xml etc.

Already fixed.


Possibility to add buttons to the navigation bar

Is it somehow possible to add custom buttons to the navigation bar, like one would normally do with the .navigationBarItems() method? I really love this library but this seems like something that could be very useful.

Thanks for the interest in the library!
As for this problem: Hmm... It does seem like we could somehow listen to the same events of navigationBarItems and react accordingly. In case we would have to access SwiftUI internals, it might take some hacking.
Another option would be to just recreate the API. Which doesn't seem as nice. But would be simpler.
I'm a bit too busy during the week to take a look at it. I might check during the weekend, but I can't promise anything ;)


Fixes a StackOverflowException in FixGenerics

I wanted to add some test cases and was trying to research a bit and make sure I was doing things right, but the basic premise is that I encountered the following type, which has a `1 but no generic type parameters specified:
System.Collections.Generic.List`1[[Syncfusion.EJ2.Blazor.Data.Group`1, Syncfusion.EJ2.Blazor]]
If that type implies what I think it does I don't really know how an instance of it would get into memory, but that's what I encountered. Just to confirm what I thought I ran the following script in LINQPad:
void Main()
{
	typeof(GenNameTest).AssemblyQualifiedName.Dump();
	typeof(GenNameTest<>).AssemblyQualifiedName.Dump();
	typeof(GenNameTest<int>).AssemblyQualifiedName.Dump();
}

public class GenNameTest { }

public class GenNameTest<T> : GenNameTest { }

and I got the following output (all types in a LINQPad script are nested types in a generated "UserQuery" class):
UserQuery+GenNameTest, query_hkfjhr, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
UserQuery+GenNameTest`1, query_hkfjhr, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
UserQuery+GenNameTest`1[[System.Int32, mscorlib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b77a5c561934e089]], query_hkfjhr, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null

I'm not sure how an instance would exist of a generic type definition as opposed to a generic type with type parameters specified, but that's what I perceive to be happening here. Maybe there are other conditions that translate to backticks in the naming system?

For reference, my current fix only prevent the overflow. Conceptually, I think it doesn't translate the name quite right. The output of that patched function is:
System.Collections.Generic.List<Syncfusion.EJ2.Blazor.Data.Group>
but if my suppositions are correct, I think it should probably be:
System.Collections.Generic.List<Syncfusion.EJ2.Blazor.Data.Group<>>

I'm not sure how an instance would exist of a generic type definition as opposed to a generic type with type parameters specified, but that's what I perceive to be happening here.

I wouldn't expect it's possible to create an instance of a non-instantiated generic type...
Unrelated: You didn't configure the commit author correctly. You're using a private email address. For more information, see Setting your commit email address

I wouldn't expect it's possible to create an instance of a non-instantiated generic type...

Could it be that the type got optimized away? Desktop Framework used to merge class-based generics into a single implementation (i.e. List<Control> and List<Form> would use the same JIT compiled code) and depending on the context (e.g. if you just had the reference to a compiled method) you couldn't recover the type. Don't know how .NET Core does it and how it manifests in the type string.

I encountered the following type

I think the key question is where did you encounter that type? typeof(List<>) is a valid type and you can do reflection to get MethodInfo and other properties off it, so I'd not rule out that somewhere the runtime has a representation of List<> you can come across via clrmd. Though if you found it as the type of a live object instance that would indeed be weird.

my current fix only prevents the overflow. Conceptually, I think it doesn't translate the name quite right. The output of that patched function is

That has me worried, because it means when people will come across this kind of type they get false results (in particular dangerous because you can overload on number of generic parameters, so both Syncfusion.EJ2.Blazor.Data.Group and Syncfusion.EJ2.Blazor.Data.Group`1 can exist)
I think if you fix the stack overflow but can't preserve the meaning of the type you should just throw some other exception rather than returning false results.

You're using a private email address

I presume you mean from the Pull Request? My local commit log shows a non-github e-mail address. My license/cla requirement appears to be adequately met, but I suppose if that's required does that mean I'll need to close/resubmit the pull request (not that I'm sure this solution should be the accepted solution yet anyway).

Could it be that the type got optimized away?

This has been known to happen in other ways so I suppose it's possible, though if it was combining types I would think it would still specify some type (e.g. List<Control>)? Just random speculation there and boy would that be misleadingly painful for some situations.

I think the key question is where did you encounter that type?

That type was the Name from a ClrType either on a ClrObject from ClrHeap.EnumerateObjects or it was from the EnumerateTypes extension method in the linked issue (ClrModule.EnumerateTypeDefToMethodTableMap -> ClrRuntime.GetTypeByMethodTable). It definitely wasn't obtained from a field or stack Type variable value, if that's what you're wondering.

I think if you fix the stack overflow but can't preserve the meaning of the type you should just throw some other exception rather than returning false results.

If the memory dump heap is valid, should it ever be such that you can not enumerate it? Maybe this could be configurable, or a property can identify the certainty of the identification? I would think this could make the tool completely unusable on some dumps when it would still be useful, if not 100% accurate, which isn't always a guarantee of a managed dump anyway (e.g. GC Handles). Alternatively, names could be left in their non-friendly format, which would be accurate to how the runtime sees them, at least (not my favorite option, honestly, but another option with this would be a TryGetCSharpName or something like that).

does that mean I'll need to close/resubmit the pull request

You can fix it in your branch and do a force-push, the github PR infrastructure supports forced pushes

though if it was combining types I would think it would still specify some type (e.g. List)?

Profilers show List<__Canon> or something along those lines (if I remember correctly), but I don't know who is responsible for that name. I certainly don't know how those names look in the runtime strings.

[on the suggestion of throwing an exception instead of returning wrong data] ... I would think this could make the tool completely unusable on some dumps when it would still be useful, if not 100% accurate, which isn't always a guarantee of a managed dump anyway (e.g. GC Handles).

I do not agree, intentionally returning wrong data (by cutting off the arity of the type instead of understanding what it means) is not an option. Either

get someone involved who understands what these types mean so it can be implemented correctly
reliably throw or otherwise communicate that the program encountered data it did not understand
don't try to process the data if you can't understand what it means

The problem I see is that you are introducing a bug in clrmd (dropping arity) which can cause users of the library to not notice at all that something is wrong.
If both Syncfusion.EJ2.Blazor.Data.Group`1 and Syncfusion.EJ2.Blazor.Data.Group exist then returning List<Syncfusion.EJ2.Blazor.Data.Group> is just plain wrong. Tools using clrmd will not notice this, they'll happily attribute whatever they are doing to the wrong type. If both types have different fields this failure cascades itself, possible leading to a crash, possibly just bogus results in the dump analysis. If tool devs even notice that something is wrong they'll probably just think they got a bad dump and blame Windows, when in fact its all along a bug in clrmd not understanding how to parse the type, mixing it up with a different one.
I'd like to not introduce that kind of bug in clrmd, it makes me trust it less, probably having to fork it. Thats an amount of effort I'd like to avoid.

Sorry for taking so long to get around to this.
Thank you for putting together the PR!  For context I asked to see a potential PR to understand the issue that was being reported.

If the memory dump heap is valid, should it ever be such that you can not enumerate it?

Actually there are plenty of cases where ClrMD cannot properly walk stacks, or the heap, or other data structures.  The CLR debugging layer is built as a "shadow" compile of the original CLR code which carries with it all of the runtime's assumptions and requirements.
For example, let's say you used a debugger to suspend a process in a place where the CLR Stackwalker cannot walk the stack of a thread.  This would mean ClrMD would not be able to walk that thread either, nor would SOS, nor would ICorDebug...  The CLR runtime itself would never attempt to walk a stack under normal circumstances, but the diagnostic layer can encounter that though it's supposed to be rare-ish.
Long story short, there's plenty of times that diagnostic tools can't inspect a part of a dump.  That's supposed to be (and is) a relatively rare case.

[with regards to returning a "slightly incorrect type name".
I think if you fix the stack overflow but can't preserve the meaning of the type you should just throw some other exception rather than returning false results.

We should never return an incorrect type name.  If we do return an incorrect name, it's a bug we should fix.  Also keep in mind that ClrType.Name is intentionally defined as string?.  If we cannot properly determine the type name ClrType.Name will return null.  This could be because of missing metadata or (for example) because we couldn't parse the string we got back from CLR.

I'm not sure how an instance would exist of a generic type definition as opposed to a generic type with type parameters specified, but that's what I perceive to be happening here.

I wouldn't expect it's possible to create an instance of a non-instantiated generic type...

As for the original reported issue, NextTurn is correct.  We should never see that kind of type in ClrMD, afaik.  ClrMD doesn't implement a view of the full CLR typesystem, it only represents constructed typehandles, which should never be an open, non-instantiated generic type.  The closest we get is __CANON which has a different meaning.
I don't want to merge this kind of change unless there's a real way to encounter this infinite loop in the wild.
Anyway, thanks again for the info and report here!

OK, I think I can agree with the sentiment/priorities here. That said, the type mentioned here was encountered in a real-world dump which amounted to a StackOverflowException; I don't think this pull request is the correct solution to the problem as much as it got me past the issue well enough for me to analyze the things I was actually interested in, but based on what's noted here it seems like the correct solution when encountering the open type (that should not exist) scenario might well be to return null when the condition is detected?

Also as a point of curiosity, I really do wish I understood how the CLR wound up with that in memory in the first place or what it might actually have been describing

Regarding what it represents I'm pretty sure it can only represent an open generic, as the optimized generics with placeholders use the __Canon type in place of the concrete type which gets dropped (have seen another issue recently on this repo which had this type in its signature).
As for how it gets into the dump I have no idea, but things like typeof(List<>).GetMethod("Add") and typeof(List<>).MakeGenericType(typeof(List<>)).GetMethod("Add") do return valid methods. You can't invoke them or create instances of their containing type but they can be described, so maybe its possible to observe them in a dump if the code was juggling with open generics.


Default to project level lock file

The lockfile per project is now the default and only format written when
creating or updating lock files.
The previous format remains supported for loading lock state which
enables to migrate to the new format configuration per configuration.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.

@bot-gradle test RFM

OK, I've already triggered ReadyForMerge build for you.


unpad - travis vs mac

Unpad produces different levels of pads on different systems.
Fails on travis - passes on osx - https://github.com/amasad/babel-minify/pull/59/commits/34b45292ebd84bb8b9ec07d4d14e4398258ef0a1
https://travis-ci.com/amasad/babel-minify/jobs/46515378#L231
Passes on travis - fails on osx - https://github.com/amasad/babel-minify/pull/59/commits/1bfb693d75b7ecfafc2fd74753307a35c8943b90

On latest build, it doesn't happen. Closing this for now.


forceStopAndNewPosition unnecessarily takes a uint32_t instead of an int32_t

It should be possible to use a negative position. In the method implementation, the value is cast to an int32_t anyway.

Agree

Fixed in master branch and will be included in next release.


In IOU Participants page there's absolutely no email / phone number validation message on either Split/Request pages

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

Action Performed:

Click FAB + Icon
New Request/Split
Enter Amount
In Participant search enter  random search text ex '328sdf76sdjsdgj'

Expected Result:
There should be some validation messages like in New Chat/ New Group/ Chat list Search. Like below while search
https://user-images.githubusercontent.com/85645967/129740138-f3c3e3b1-0fc1-44dd-be70-a556128605a7.mov
Actual Result:
No such validation exists.
https://user-images.githubusercontent.com/85645967/129734292-eacd955a-c994-4243-971f-584a848d59cd.mp4
Workaround:
Can the user still use Expensify without this being fixed? Yes
It's an Improvement
Platform:
Where is this issue occurring? All platforms

Web
iOS
Android
Desktop App
Mobile Web

Version Number:
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
Expensify/Expensify Issue URL:
View all open jobs on GitHub
Suggestion
We could add similar validation like it is in other searches(New Chat, New Group) for IOU Participant pages also!
Proposal
Will propose after the triage & initial discussion.

Triggered auto assignment to @muttmuure (AutoAssignerTriage), see https://stackoverflow.com/c/expensify/questions/4749 for more details.

@muttmuure Whoops! This issue is 2 days overdue. Let's get this updated quick!

Proposal
In here we don't pass any value headerMessage for OptionsSelector component
https://github.com/Expensify/App/blob/bdcafa3444f3839d7f5de2300e258caf681a50e3/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsRequest.js#L119-L122
We can use similar logic from here
https://github.com/Expensify/App/blob/bdcafa3444f3839d7f5de2300e258caf681a50e3/src/pages/NewChatPage.js#L131-L135
To get headerMessage pass it on to OptionsSelector in IOUParticipantsRequest.js
Also for IOUParticipantsSplit, we can use the above code again here also
https://github.com/Expensify/App/blob/bdcafa3444f3839d7f5de2300e258caf681a50e3/src/pages/iou/steps/IOUParticipantsPage/IOUParticipantsSplit.js#L208-L216

@muttmuure Still overdue 6 days?! Let's take care of this!

@muttmuure 12 days overdue now... This issue's end is nigh!

This issue has not been updated in over 14 days. @muttmuure eroding to Weekly issue.

Sorry I was OOO - it's an interesting proposal and makes sense esp. because it uses existing functionality in the new chat/group feature.
I'm not sure what this touches on the back end so I'll defer to engineering to discuss here.

Triggered auto assignment to @tgolen (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

Triggered auto assignment to @jboniface (External), see https://stackoverflow.com/c/expensify/questions/8582 for more details.

@tgolen In case you missed proposal is already here https://github.com/Expensify/App/issues/4690#issuecomment-903095971

Sorry for the mixup here and the delay. The proposal looks fine and I am giving the 🟢 to hire @Santhosh-Sellavel for this.

@Santhosh-Sellavel having trouble finding your profile on UW, can you apply to the job then post back here to let me know, so I can hire you?

@jboniface Applied for the job!

Hi @Santhosh-Sellavel, I've placed this issue on hold as per this update, as we are prioritising issues related to a feature release scheduled for 9/24. As an apology for the delay, we will add a $100 bonus as a thank you for waiting.

It's OK, Melvin. It's on HOLD

Assign this issue to me @tgolen when you can, thanks!

Assigned!

still frozen

I am reviewing this PR and I have found a few issues which I will mention in the PR review.

Please refer to this post for updated information on the n6 hold, we've raised the bonus to $250 for all issues where a PR is created before the N6 hold is lifted.

this is awaiting payment, not overdue

paid with bonus for reporting and n6-hold


Dont send xsrfCookieName

`
function createCategory(data) {
return dispatch => {
dispatch({
type: CREATE.REQUEST,
});
axios
  .post(`${api.url}/categories`, data, { xsrfCookieName: 'XSRF-TOKEN' })
  .then(data => {
    dispatch({
      type: CREATE.SUCCESS,
      payload: data,
    })
  })
  .catch(e => {
    dispatch({
      type: CREATE.FAILURE,
      payload: e.response.data.message
    })
  })

}
}
`

You're sending a cross-domain request, so the cookie set to localhost:80 isn't being sent to localhost:3000. That isn't an issue in Axios but how cookies work.


[Request for Error Troubleshooting] RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling cublasSgemm( handle, opa, opb, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)

Dear Team;
Thank you for sharing this great platform!
I have set up according to your instruction but I got the following error when I command the training code :
python train_net.py
--config-file configs/esm35_evo1_initial_pdbonly.yaml
--num-gpus 1 SOLVER.SEQ_PER_BATCH 1
OUTPUT_DIR output/esm35_evo1/initial_pdbonly
This is error : RuntimeError: CUDA error: CUBLAS_STATUS_INVALID_VALUE when calling cublasSgemm( handle, opa, opb, m, n, k, &alpha, a, lda, b, ldb, &beta, c, ldc)

I have run this code with 1 GPU A6000.
Could you reply on how to solve this issue if possible? I deeply appreciate it.

Thank you for your interest in this project!
This project has been tested with CUDA 11.3 and PyTorch 1.12, and it has dependencies on other projects(ex. fair-esm), so different versions may lead to errors.
While this error may suggest a mismatch between the ESM version and the CUDA version, providing your environment details would greatly assist in achieving a thorough understanding of the issue.

Dear Team,
Yes, I will check the mismatch issue.
Thank you for your valuable comments and sharing the specified information of CUDA (i.e., 11.3) and PyTorch (1.12).

Hi, I had this exact issue. My problem arose when using biotite as the latest version. For me, biotite was not available for python = 3.8. You could try remaking the environment with python=3.9.
There are a few issues in the code such as np.int being phased out and PIL using BILINEAR instead of LINEAR now, but those are easy fixes.
After I changed to the correct biotite version, this error went away. Hope this helps!

Hi, I had this exact issue. My problem arose when using biotite as the latest version. For me, the exact version of biotite required was not available for python = 3.8. You could try remaking the environment with python = 3.9.
There are a few issues in the code such as np.int being phased out and PIL using BILINEAR instead of LINEAR now, but those are easy fixes.
After I changed to the correct biotite version, this error went away. Hope this helps!

Great! I sincerely thank you for your valuable comments!

One more note, you might have some success with xformers v0.21 or v0.20 since v0.22's release is dated after solvent was published. For reference if other people also have this issue, I was able to run solvent using both a 3080 and a 4090.

xformers v0.21 or v0.20

One more note, you might have some success with xformers v0.21 or v0.20 since v0.22's release is dated after solvent was published. For reference if other people also have this issue, I was able to run solvent using both a 3080 and a 4090.

Thank you for the great suggestion. I will try to check if it would work by using biotite with python 3.8 and xformers v0.21 or v0.20 as well !


Improve performance on agenda page

Will be fixed by https://github.com/GerardPaligot/conferences4hall/issues/85


added null check in upperBound

I've been using a comparator function that references fields in an object, and noticed that upperBound was sometimes calling cmp with a null argument. This fixes that.

Thank you for finding and fixing this!


mysql-async : What is mysql JSON data type in Scala ?

Hi @mauricio !
This is a question, I have mysql JSON data type in my "notifications" table and What is type need use for parsing JSON type in mysql-async library. Please help me

Seems to give a MatchError when using a JSON type, according to the mysql documentation it's just a string once queried from the db. A temp work around is to cast it to a string using the following:
CAST(jsonColumnName AS CHAR) as 'json_string'
Or something of the sort

Yes you are right, problem with parsing. I changed JSON data type to TEXT and solved problem


Broken link on Codelab "Your first Flutter app"

Preface
The codelab found here: https://codelabs.developers.google.com/codelabs/flutter-codelab-first#0 says to report issues to this repository according to the link in the bottom left:

Sorry if this seems out of place - let me know if there is someplace better to report this.
Issue
The issue is simply that the link on the final step of the codelab for the "advanced version" of the app does not seem to be correct. I don't see any relevant code there.
Here is a screenshot with the broken link highlighted:

Here is the destination of that link: https://dartpad.dev/e7076b40fb17a0fa899f9f7a154a02e8
I know that the link is likely broken because, in the following, timestamped, video, it shows that it should directly link to all the "advanced" code: https://youtu.be/8sAyPDLorek?t=5355
Whereas I only see the following:

cc @domesticmouse

PTAL @filiph

Thanks! That URL (https://dartpad.dev/e7076b40fb17a0fa899f9f7a154a02e8) worked but I recently found out that it's safer to have https://dartpad.dev/?id=e7076b40fb17a0fa899f9f7a154a02e8.
I have updated the codelab doc. @domesticmouse, I always forget: should I do anything else or will the codelab rebuild automatically? Also, was it wrong to use links such as dartpad.dev/<somehash>? I know this worked fine in the past, and now I worry I have other links elsewhere in that format.

@johnpryan to answer the question on DartPad links.
As to publishing the updated codelab, I'll do it as soon as I've converted all your animated gifs to YouTube videos. Long story, don't ask.

I'll do it as soon as I've converted all your animated gifs to YouTube videos. Long story, don't ask.

😳

Thanks! That URL (https://dartpad.dev/e7076b40fb17a0fa899f9f7a154a02e8) worked but I recently found out that it's safer to have https://dartpad.dev/?id=e7076b40fb17a0fa899f9f7a154a02e8.

The safer link seems to work for me! Thanks for sharing that one 😊

Thanks! That URL (https://dartpad.dev/e7076b40fb17a0fa899f9f7a154a02e8) worked but I recently found out that it's safer to have https://dartpad.dev/?id=e7076b40fb17a0fa899f9f7a154a02e8.
I have updated the codelab doc. @domesticmouse, I always forget: should I do anything else or will the codelab rebuild automatically? Also, was it wrong to use links such as dartpad.dev/<somehash>? I know this worked fine in the past, and now I worry I have other links elsewhere in that format.

Hey, thanks for this, worked for me!

Fix in flight.
Googlers: cl/560902614

Fix landed


500 error response on company search

Not sure if you're tracking this but we're consistently getting 500 errors from the company search API, not sure if this is due to the client lib or the API internals but would be good to get this fixed.
Here's a dump of the request we're sending:
{
  "name": "StatusCodeError",
  "statusCode": 500,
  "error": {
    "status": 500,
    "message": "Internal Server Error",
    "requestId": "8b2d3d19-9604-411e-9b05-236f83faf533"
  },
  "options": {
    "method": "GET",
    "url": "https://api.fullcontact.com/v2/company/search.json",
    "qs": {
      "companyName": "Spacer.com.au"
    },
    "headers": {
      "X-FullContact-ApiKey": "<key>"
    },
    "json": true,
    "simple": true,
    "resolveWithFullResponse": false,
    "transform2xxOnly": false
  },
  "response": {
    "statusCode": 500,
    "body": {
      "status": 500,
      "message": "Internal Server Error",
      "requestId": "8b2d3d19-9604-411e-9b05-236f83faf533"
    },
    "headers": {
      "server": "nginx",
      "date": "Wed, 07 Jun 2017 18:16:54 GMT",
      "content-type": "application/json;charset=UTF-8",
      "content-length": "115",
      "connection": "close",
      "content-language": "en",
      "vary": "Accept-Charset,Accept,Accept-Language",
      "x-rate-limit-limit": "1200",
      "x-rate-limit-remaining": "1155",
      "x-rate-limit-reset": "60",
      "strict-transport-security": "max-age=86400"
    },
    "request": {
      "uri": {
        "protocol": "https:",
        "slashes": true,
        "auth": null,
        "host": "api.fullcontact.com",
        "port": null,
        "hostname": "api.fullcontact.com",
        "hash": null,
        "search": "?companyName=Spacer.com.au",
        "query": "companyName=Spacer.com.au",
        "pathname": "/v2/company/search.json",
        "path": "/v2/company/search.json?companyName=Spacer.com.au",
        "href": "https://api.fullcontact.com/v2/company/search.json?companyName=Spacer.com.au"
      },
      "method": "GET",
      "headers": {
        "X-FullContact-ApiKey": "<key>",
        "accept": "application/json"
      }
    }
  }
}

We're using the fullContact.v2.company.search({ companyName }) method.
Let me know if you need any more details.
Thanks,
Alex

@alexlatchford My apologies for not seeing this earlier. Are you still experiencing this issue? I tried the query myself and I got a 404 rather than a 500. Let me know if you still are and I will get it triaged ASAP.

I actually raised this to the support after raising this as a bug. Think it's fixed now.

Okay great. Once again, my sincerest apologies for not being notified about this earlier. We appreciate your business and if there is any need you have in the future; please feel free to reach out.


Develop

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@8fd69fb). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master      #22   +/-   ##
=========================================
  Coverage          ?   35.82%
  Complexity        ?        4
=========================================
  Files             ?        3
  Lines             ?       67
  Branches          ?        5
=========================================
  Hits              ?       24
  Misses            ?       41
  Partials          ?        2

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


tokens in Mapnik postgis sql sub-selects add quotes when replace with options.variables

Accordingly to documentation, mapnik.Map render method have options attribute that could contain variables object. So I  write sub-selects in  mapnik xml like this code :
<Parameter name="table">(SELECT geom1 FROM  table1 where  ST_Intersects ( geom1,!bbox! ) and year = !@year! ) as subquery </Parameter>

Then, I passed a integer value 'year' in variables ,  the map render code  :
map.render(tile, {
            variables: {
                "year": 2019
            }, (err, ti) => {
          ...
        });

But ,the problem is why mapnik add quotes arround !@year! in sql ,  the sql query log is  :
SELECT ST_AsBinary(ST_Simplify(ST_SnapToGrid("geom1",30.5748), 61.1496)) AS geom FROM (SELECT geom1 FROM  table1 where  ST_Intersects ( geom1,ST_MakeEnvelope(13462700.91781152,5322463.153553393,13775786.9856676,5635549.221409475,3857) ) and year = '2019') as subquery

I expect year = !@year! should replaced with year = 2019 , but I always get year = '2019'.
thanks

Good point.
So far, mapnik postgis plugin has first converted the variable value to string (losing original type information) and inserted that into query. In mapnik v3.0.x, the value.to_string() was inserted verbatim, so if you wanted to insert an actual string, you had to SQL-quote before passing it to mapnik, which was unwieldy (and also allowed injecting raw SQL, but that's beside the point).
In upcoming mapnik 4, I've changed variable interpolation so that the string is quoted. I've since hit this exact same issue, that an integer value gets converted to string and quoted, losing type information. And I began pondering whether we should preserve the original variable type (leaning to "hell yeah!"), already have the code in an experimental branch but not ready to be pushed yet.
Until our variable interpolation preserves the type, you can use explicit type casts in SQL, if automagic type coercion can't handle it:
-- these two should work whether the (integer) value is quoted or not
... year = cast(!@year! as integer) -- Standard SQL
... year = !@year!::int -- PostgreSQL

-- just don't use this PostgreSQL syntax, as it won't work when the value is not quoted
... year = int !@year! --

@lightmare Thank you very much, this answer solved my question。


Event listener not working

I've tried to call the event refetch-events but it is not working.
The event is not being fired.
I have to call it inside of the component and outside of it. I've tried to log some info to see if the event is being fired, but it's not.
I've used
$(this.$el).fullCalendar('refetchEvents');
and
$(self.$el).trigger('refetchEvents');
and
$(self.$el).trigger('refetch-events', event);
but it doesn't works.
I call an iframe to create the event and after it closes, the event is created and I need to refetch them.
Here's a piece of my code:
    select(start, end, jsEvent) {
        var data = start.format("YYYY-MM-DD");
        var dia = start.format("dddd");

        $.fancybox({
            type: "iframe",
            href: "http://<IP_ADDRESS>:8000/admin/agendamentos/create",
            width: "80%",
            height: "90%",
            afterLoad: function() {
                    $(".fancybox-iframe").contents().find("input[name='dia_semana']").val(dia);
                    $(".fancybox-iframe").contents().find("select[name='profissionais[]']").attr("disabled","disabled");
                    $(".fancybox-iframe").contents().find("input[name='data']").val(data);
                    $(".fancybox-iframe").contents().find("input[name='data']").attr("readonly","readonly");
            },
            afterClose: function(){
                    console.log('afterclose');
                    $(self.$el).trigger('refetch-events');
             }
        });
    },

I'll need to call this event not only inside the component, but also outside of it. Once an event is created inside my Fancybox iframe, I'll send a notification to other users and also update their views, by refetching the events. I am already sending a live notification, but I need also the event to appear on the calendar without having to refresh the page. How can I get it working?
Here's the full code:
<template>
    <div ref:"calendar" id="calendar" :event-sources="eventSources">
    </div>
</template>

<script>
    require('fullcalendar')

    export default {
        props: {
            events: {
                default() {
                    return []
                }
            },
            eventSources: {
                default() {
                    return [
                        {
                            events(start, end, timezone, callback) {
                                Vue.http.get('http://<IP_ADDRESS>:8000/getAgendamentosEventos', {timezone: timezone}).then(response => {
                                    callback(response.data.events)
                                })
                            },
                            color: '#1ABC9C',
                        },
                        {
                            events(start, end, timezone, callback) {
                                Vue.http.get('http://<IP_ADDRESS>:8000/getDatasFechadas', {timezone: timezone}).then(response => {
                                    callback(response.data.events)
                                })
                            },
                            color: '#DC0000',
                        }
                    ]
                },
            },
            editable: {
                default() {
                    return true
                },
            },
            selectable: {
                default() {
                    return true
                },
            },
            selectHelper: {
                default() {
                    return true
                },
            },
            header: {
                default() {
                    return {
                        left:   'prev,next today',
                        center: 'title',
                        right:  'month,agendaWeek,agendaDay'
                    }
                },
            },
            defaultView: {
                default() {
                    return 'month'
                },
            },
            sync: {
                default() {
                    return false
                }
            },
        },
        mounted() {
            const cal = $(this.$el),
                self = this;

            cal.fullCalendar({
                header: this.header,
                defaultView: this.defaultView,
                editable: this.editable,
                selectable: this.selectable,
                selectHelper: this.selectHelper,
                aspectRatio: 2,
                slotDuration: '00:10:00',
                timeFormat: 'HH:mm',
                events: self.events,
                eventSources: self.eventSources,
                fixedWeekCount: false,
                eventRender(event, element) {
                    if (this.sync) {
                        self.events = cal.fullCalendar('clientEvents')
                    }
                },
                eventDestroy(event) {
                    if (this.sync) {
                        self.events = cal.fullCalendar('clientEvents')
                    }
                },
                eventClick(event) {
                    $(self.$el).trigger('event-selected', event);
                    console.log('click');
                    console.log(event);
                },
                eventDrop(event) {
                    console.log('drop-event');
                    $(self.$el).trigger('event-drop', event);
                },
                eventResize(event) {
                    $(self.$el).trigger('event-resize', event)
                },
                select(start, end, jsEvent) {
                    var data = start.format("YYYY-MM-DD");
                    var dia = start.format("dddd");

                    console.log(event);

                    $.fancybox({
                            type: "iframe",
                            href: "http://<IP_ADDRESS>:8000/admin/agendamentos/create",
                            width: "80%",
                            height: "90%",
                            afterLoad: function() {
                                $(".fancybox-iframe").contents().find("input[name='dia_semana']").val(dia);
                                $(".fancybox-iframe").contents().find("select[name='profissionais[]']").attr("disabled","disabled");
                                $(".fancybox-iframe").contents().find("input[name='data']").val(data);
                                $(".fancybox-iframe").contents().find("input[name='data']").attr("readonly","readonly");
                            },
                            afterClose: function(){
                                console.log('afterclose');
                                $(self.$el).trigger('refetch-events');
                            }
                    });
                },
            });
        },
        watch: {
            events: {
                deep: true,
                handler(val) {
                    const cal = $(this.$el)
                    cal.fullCalendar('removeEvents')
                    cal.fullCalendar('addEventSource', this.events)
                    cal.fullCalendar('rerenderEvents')
                    cal.fullCalendar('refetch-events')
                    cal.fullCalendar('refetchEvents')
                },
            }
        },
        events: {
            'remove-event'(event) {
                $(this.$el).fullCalendar('removeEvents', event.id)
            },
            'rerender-events'(event) {
                $(this.$el).fullCalendar('rerenderEvents')
            },
            'refetch-events'(event) {
                console.log('refetch');
                $(this.$el).fullCalendar('refetchEvents');
            },
            'render-event'(event) {
                $(this.$el).fullCalendar('renderEvent', event)
            },
            'reload-events'() {
                $(this.$el).fullCalendar('removeEvents')
                $(this.$el).fullCalendar('addEventSource', this.events)
            },
            'rebuild-sources'() {
                $(this.$el).fullCalendar('removeEvents')
                this.eventSources.map(event => {
                    $(this.$el).fullCalendar('addEventSource', event)
                })
            },
        },
    }
</script>

Hello,
Maybe I have misunderstood the question but the event handlers in this component are Vue events from Vue 1.x that call the jQuery events on fullcallendar. They can be triggered from the parent component with:
this.$broadcast('event-name')

BTW, The $(this.$el) jQuery selector will only ever work inside its own component
I hope this helps?
Brock

@BrockReece Thanks.
I'm using Vue 2.0 in my project along with Laravel. I've seen that the broadcast is deprecated in Vue 2.0.
My goal is to have live updates, so every time a new event is created, another call to the server is made (through the 'refetch-events' event) in order to get the list of events again and get it the appear in the view.
The vue-fullcalendar docs says it listens on this Event:

refetch-events() - Makes another JSON call to event sources

Which I think is the most appropriate for my case...
I am already listening to event creation using laravel broadcasting system, Pusher and another Vue component. Every time a new event is created a notification is shown on the screen.
I'm pretty lost trying to make the live updates in my vue-fullcalendar component...
I've seen something about bus events, should I use event hub and $emit?
eventHub.$emit(eventName)
Again, thanks for your response.

@Jaquedeveloper
Cool, So I have just moved to Vue 2 myself and I am still trying to figure out the best way to handle the events too.
I think I am going to build a standalone Vue2 application this morning and try out a few different things and then I will get back to you.
You definitely have the correct fullcalendar event btw, I have built something similar in Vue 1 in the past and that worked for me.

So I have just published a new version of the repo which I hope will address some of your issues.
I am a bit pressed for time at the moment, but here is an example webpack app I built using the new version. Give me a shout though if you need anything explaining.
https://github.com/BrockReece/vue-fullcalendar-example

@BrockReece, Thank you very much. It will help not only me but other developers too, for sure.
For now I am getting two Unexpected token { errors and when the page loads, a blank page with Cannot GET / is shown... I've been trying to figure out why. l'll try to figure it out and tell you how I go.

Do you use yarn?

I've followed the instructions:
npm install
then
npm run dev

Ah ok sorry, that was the boilerplate readme file.
I used yarn for my package management
https://yarnpkg.com/en/

Worked like a charm! I'll use it as a basis to implement my project live updates.

Awesome, do you mind if I close this issue?

No, I've managed to get it working by calling the trigger directly from my component. I've had also to include the resources data on computed method to get it working:
mounted() {
            const cal = $(this.$el),
                self = this;

            cal.fullCalendar({
                header: this.header,
                select(start, end, jsEvent) {
                    ...
                    var calen = this.calendar;
                    ...
                    $.fancybox({
                        type: "iframe",
                        ...
                        afterClose: function(){
                            setTimeout(function(){ calen.refetchEvents(); }, 2000);
                        }
                    });
                }
            });
},
computed: {
            eventSources() {
                const self = this;
                return [
                    {
                        events(start, end, timezone, callback) {
                            Vue.http.get('/getAgendamentosEventos', {timezone: timezone}).then(response => {
                                    callback(response.data.events)
                                })
                        },
                        color: '#1ABC9C',
                    },
                    {
                        events(start, end, timezone, callback) {
                            Vue.http.get('/getDatasFechadas', {timezone: timezone}).then(response => {
                                callback(response.data.events)
                            })
                        },
                        color: '#DC0000',
                    }
                ];
            },
        },

here's my stackoverflow question which helped me to have the insight:
http://stackoverflow.com/questions/43037140/how-to-refresh-the-vuejs-view-via-event
special thanks for @BrockReece for the support.
My application is up and running now.


Change the base image to ubuntu:latest in Dockerfile

We are trying to use postgres backups in ebrains okd for the virtual brain deployment with postgresql 13.
We use image docker-registry.ebrains.eu/okd_tools/postgresql_backups:1.1 to realize the backup in case of a postgres 13.3 database but we get the following error:
  pg_dump: server version: 13.3; pg_dump version: 10.17 (Ubuntu 10.17-0ubuntu<IP_ADDRESS>)
  pg_dump: aborting because of server version mismatch

In order to ensure compatibility with postgres 13.3, we changed the base image to ubuntu:latest in Dockerfile.
@fagaillard Do you think you can create a new tag on docker-registry.ebrains.eu based on this new version?

Hi. We need this upgrade for TVB instances deployed in EBRAINS OKD.
In case this can not be merged (and a new image published on EBRAINS repo soon), we are considering to push the image on Docker Hub and use it from there in TVB OKD. Does anyone see a problem in doing that ?


Wait for index to be updated before workspace-wide operations like rename, call hierarchy and type hierarchy

It might make sense to wait for an up-to-date workspace wide index for global operations like rename, call hierarchy, or type hierarchy. The tricky part is how we communicate to the user if the task is taking longer than expected and how we make sure that the editor doesn’t cancel eg. rename because of a timeout.
rdar://127474967

This is actually really important because of the following scenario:

A module has a function foo() that gets used in downstream modules
Now the declaration of foo is modified to foo(x: Int = 1).
The USR of foo has changed but we don’t have any references in the index to the new USR because the other modules haven’t been re-indexed yet.


Use Immutable Types

[Suggestion (2) in the series started in #14]
Usually, when a mutable object is instantiated, it allocates memory on the heap, which, in certain cases where caching is important, like inner loops or within Monte Carlo Tree Search, etc. can make them much slower. I think you could achieve significant speedup by making all of the types that you can immutable, especially things like GaussianBelief that are likely to be created and recreated often :)

All structs fixed to immutable in https://github.com/sisl/GaussianFilters.jl/commit/78c1fbc99659b4d35d3ee25575d371588d23d293


Luuklag: Watch "Alpine Ramble Treks"

Luuklag requests the watch of the watch_keyword "Alpine Ramble Treks". See the MS search here and the Stack Exchange search in text, in URLs, and in code.

"Alpine Ramble Treks" has been seen in 0 true positives, 0 false positives, and 0 NAAs.

Rejected by Spevacus in Charcoal HQ. Reason: 'Related to #6563 , but it's got some quotes that are unnecessary and won't match.'


Update documentation and expected module usage behaviour

Pull Request (PR) description
The current module documentation in code has an old style and a REFERENCE.md is missing.
This PR updates all documentation in this module to the new style and provides the REFERENCE.md file.
Also the assumption of module usage was corrected with add assert_private() to several classes. At the end
i also added more CI tests, that the test coverage is now increased to 98.10%
This Pull Request (PR) fixes the following issues
none

Nobody complained, so let's merge this.  Thanks


Come up with global system to do popup notifications

Using primereact's growl component preferably.

Fixed with 2adf6811782417b0980355a06a603eb831ecb63c


Fix maven command

@dmsolr please verify the configurations locally next time

One another thing, we forget to put the version in SNAPSHOT suffix.

One another thing, we forget to put the version in SNAPSHOT suffix.

@kezhenxu94 @dmsolr Do we need 0.1.0 or 1.0.0?

@kezhenxu94 @dmsolr Do we need 0.1.0 or 1.0.0?


A threat of full CORE duplication for each language revision

I'm experimenting with making quant hashes iterable. And it looks like a relatively simple task turns into a horrible requirement of copying over all of CORE.c into CORE.e! Here is why.
QuantHash does Iterable, then I started with new Set in CORE.e which consumes the new iterable QuantHash. The resulting class freezes on something like: "a" ~~ set(<a b c>) because ACCEPTS coerces "a" into a Set first but it does so using Set method on Any which itself is a 6.c class and correspondingly it only knows about 6.c version of Set and we end up with a new coercion, and so on...
One way to solve it would be to use nqp::p6getlexclient in Any::Set. But the method signature has --> Set:D and apparently it fails with a type check error. A quick solution is to remove return type check altogether because in this particular case it's anyway somewhat redundant. But this could be unaffordable solution for other similar cases.
Another way is to have a dedicated ACCEPT in Set which would specifically handle CORE::v6c::Set and re-coerce it into 6.e Set. But this approach has a performance tag attached due to one extra convertion.
The best solution would be for Any to know all classes from all COREs but this is only possible if Any itself is defined in the latest CORE available. In current model it means that COREs have to be totally duplicated. And this effectively means loading 28mbytes of CORE whenever code requires 6.e – twice of that of CORE.c alone.

I'm experimenting with making quant hashes iterable

I believe I've already noted elsewhere, at least once, that I'm quite sure that it was intended that they acted as items.

Yes, I know. Just wanted to play a bit to check a few ideas. But that's not the point. This is just how I came to these thoughts. We might get into a similar situation by some other way.

OK, that's fair enough; I'd just hate for you spend so much time on that specific issue when it's questionable if there even should be a change in that regard.
I did write up some thoughts on this quite a while ago, and had assumed that document was in the Rakudo repository docs folder and so assumed you'd have been it, but it seems it's not. Hmm.

OK; just keep in mind it was written 4 years ago, and some things worked out differently. But I think the section I liked, and indeed much else in that file of the gist, is still applicable and relevant.

Would you mind me moving them into docs? I could create a subdir articles/ and add publication dates into the file names.

@vrurg I think the Rakudo and MoarVM versioning parts are perhaps not worth it since they don't really reflect what we ended up doing. The one on guidelines for evolving the language was the part I had thought was already in docs, so of course no objections on that being put there!


IF data needs opacity to act differently, so add option to change behavior

The current opacity in neuroglancer works such that you can't have 100% opacity on all channels, which means you can't see a normal full red + green = full yellow mixing.. this makes looking at multi-channel data look terrible.  I know that EM data looks better like this but we need an option for IF data that is better.

Per-channel blend mode added.


Pipeline: [UPDATE] AVD LZA Architecture diagram updates - AzDO 314638

Upload diagram for https://github.com/MicrosoftDocs/cloud-adoption-framework-pr/pull/5888.
ADO work item

@Zimmergren - Can you merge this PR?

Approved and merged, @Court72


TOTP Two-factor authentication support

I am not sure if I should do the PR for the client patch since the dev loginserver is staff only at the moment. But here is that repo/branch: https://github.com/tmagicturtle/Pokemon-Showdown-Client/tree/patch-7
Requires 1 dependency: "2fa-util". It has two deps of its own, otplib and qrcode, and is a single MIT licensed file, so we can use it directly instead of requiring as a node package. But it carries much of the work - it securely generates TOTP secrets, handles verifying TOTP tokens, and generates QR codes for the end-user to scan in their 2FA app.
Functioning demonstration video: https://www.youtube.com/watch?v=znuIBtmO-R8

I spoke to Zarel about this and we agreed that email-based password resets (smogon/pokemon-showdown-loginserver#2) should be implemented before this, so users have a way to reset their accounts if they lose their TOTP source.


Reorg dora directories

What changes are proposed in this pull request?
re-org the dora directories:
/common/transport
/dora/integration
      /job
      /shaded
      /stress
      /table
      /generated
      /underfs
      /pom.xml
      /core
      /examples
      /shell
      /minicluster
      /tests
      /lib
      /microbench

Why are the changes needed?
Re-org directories to indicate dora explicit
Does this PR introduce any user facing changes?
NA

the integration/ folder should be split

fuse, jnifuse, pom.xml, and maybe tools should be under dora
dataproc, docker, emr, metrics should remain under repo root

so the remaining root level directories are:

assembly: for client and server uberjars
bin: scripts for start/stop/executing alluxio
build: maven build related
client: client jar directory
common: common java modules
conf: configuration files
dev: github PR scripts, intellij run configurations, other build scripts
docs: documentation
dora: dora subsystem java modules
integration: docker and deployment related
lib: lib jars
libexec: runtime configuration script
templates: rest api templates
webui: web UI

import paths are unchanged and artifact/jar names are also unchanged
@yyongycy how did you keep the import paths the same even though the modules are nested under dora now?

so the remaining root level directories are:

assembly: for client and server uberjars
bin: scripts for start/stop/executing alluxio
build: maven build related
client: client jar directory
common: common java modules
conf: configuration files
dev: github PR scripts, intellij run configurations, other build scripts
docs: documentation
dora: dora subsystem java modules
integration: docker and deployment related
lib: lib jars
libexec: runtime configuration script
templates: rest api templates
webui: web UI

import paths are unchanged and artifact/jar names are also unchanged @yyongycy how did you keep the import paths the same even though the modules are nested under dora now?

Right. The artifact name is not related to the path. and the import paths are just related in the package, and related to the path under src/main, they are not related as well.

eg: the import path is related to the path under src/main/java/alluxio/xxxx

so the remaining root level directories are:

assembly: for client and server uberjars
bin: scripts for start/stop/executing alluxio
build: maven build related
client: client jar directory
common: common java modules
conf: configuration files
dev: github PR scripts, intellij run configurations, other build scripts
docs: documentation
dora: dora subsystem java modules
integration: docker and deployment related
lib: lib jars
libexec: runtime configuration script
templates: rest api templates
webui: web UI

import paths are unchanged and artifact/jar names are also unchanged @yyongycy how did you keep the import paths the same even though the modules are nested under dora now?

Right. The artifact name is not related to the path. and the import paths are just related in the package, and related to the path under src/main, they are not related as well.

we can iterate the rest pathes, so far there is no java code in those directories.

alluxio-bot, merge this please.

alluxio-bot, merge this please.

the integration/ folder should be split

fuse, jnifuse, pom.xml, and maybe tools should be under dora
dataproc, docker, emr, metrics should remain under repo root

addressing this comment in https://github.com/Alluxio/alluxio/pull/17364


chore(main): release 1.13.0

:rocket: New release
1.13.0 (2023-12-22)
:sparkles: Features

add ability to enable toc on certain posts ignore global toc settings (#143) (d2a95ac)
add Russian language support (#145) (fc80687)

:bug: Bug Fixes

inconsistent appearance of inline code, in lists, in light theme (#159) (a0129f7)
post title width on small screens, closes #136 (#153) (b8b4753)

:construction_worker: CI/CD

update stale.yml GitHub action (#150) (e96f650)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/hugo-sid/hugo-blog-awesome/releases/tag/v1.13.0 :sunflower:


HTTPRequest C# Example Fix

Issue description:
The C# code examples for the use of HTTPRequests are currently invalid, and do not compile. This PR makes a small correction to class names and JSON usage within HTTPRequest C# code examples.

Might add a note in the description of the class more clearly to indicate what the name is, also should probably be listed in the C# documentation about differences

I think the name difference is covered by the differences documentation page already, we have a general statement about using PascalCase:

As explained in the C# basics, C# generally uses PascalCase instead of the snake_case used in GDScript and C++.

Although it could be expanded[^1] to be more descriptive and we could probably add some examples. It would also be nice to add a link to the C# naming conventions that explains the rules we follow in more detail.
All of this can be done in a follow-up PR, and not necessarily by the same contributor.
[^1]: When this documentation was written this only applied to method names which is why it only mentions snake_case. Today it also applies to class names which are already PascalCase in GDScript and C++, but there are slightly different conventions in C# about the capitalization (only the first letter of acronyms are uppercase, unless it's a 2-letter acronym).

Force push is a bad habit but merging instead of rebasing is worse.  I'll probably close this PR at some point anyway and come back with slightly more extensive docs fixes based on the conversation here.

Is this still relevant now? It looks like it is, but the GDScript example needs updating too, as previously mentioned.


[Improve] Completion speed

Better animation completion speed that is related to swipe velocity, and remaining view visible.
Particularly noticeable when the user swipes quickly, and is expecting a quick dismiss

I meant to branch this from master without the other PR included. If you want I can close this and resubmit


Documentation could be more clear on how to add custom icons

Package

[ ] lucide
[ ] lucide-angular
[ ] lucide-flutter
[ ] lucide-preact
[ ] lucide-react
[ ] lucide-react-native
[ ] lucide-solid
[ ] lucide-svelte
[ ] lucide-vue
[ ] lucide-vue-next
[ ] Figma plugin
[ ] all JS packages
[X] site

Description
The documentation on lucide-angular is the only place in the Guide section that mentions custom icons, but it is not very clear about it. E.g., how can I provide a valid LucideIconData? Right now it only says that at some point the SVG data needs to be converted to svgson.
edit: After a bit of experimenting, the output of the linked library to convert to svgson even seems to be incompatible with how the createElement function works.
Use cases
This is the example given on the aforementioned page:
import { LUCIDE_ICONS, LucideIconProvider } from 'lucide-angular';
import { MyIcon } from './icons/my-icon';

// What does MyIcon look like exactly?
const myIcons = {MyIcon};

@NgModule({
  providers: [
    {provide: LUCIDE_ICONS, multi: true, useValue: new LucideIconProvider(myIcons)},
  ]
})
export class AppModule { }

Checklist

[X] I have searched the existing issues to make sure this bug has not already been reported.

This is how svgson can be used to convert an SVG string to a LucideIconData object:
function svgToLucideIconData(svgString: string): LucideIconData {
  const parsed = svgson.parseSync(svgString);
  return [parsed.name, parsed.attributes, parsed.children.map(n => [n.name, n.attributes])];
}

This is not exactly how it's done in our release workflow, but the results are close enough.
I would advise to pre-convert your custom icons instead of adding a runtime dependency on svgson and storing the resulting JSON objects in separate .ts files as default exports.

I would recommend structuring the icon files similar to how they are done by the library, e.g.:
<EMAIL_ADDRESS>const MyIcon = [
  ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }]
];
export default MyIcon;

It could be really helpful to provide detailed examples for the Injecting Multiple Icon Providers section in the documentation. I think you, as a developer, could start by following the required steps and documenting them. For instance, here:
import { MyIcon } from './icons/my-icon';

MyIcon is imported as a class, but I want to see an example of how the icon class should look.


Wrong values when reading SMA inverter

Hi, thanks for this great project. I want to create an SMA inverter config, but I'm failing to read registers.
SMA Modbus TCP documentation taken from here lists e.g. register 31435 as a signed int32 value, sub_device is 3 (SMA default). Reading this register using pymodbus or qmodmaster gives two 16bit values 0, 1716. However, reading the register using
http://localhost:9602/modbus?target=<IP_ADDRESS>:502&module=SMA&sub_target=3

with modbus_exporter always gives me:
# HELP power_consumption_total represents the overall power consumption by phase
# TYPE power_consumption_total gauge
power_consumption_total{module="SMA",phase="1"} -1

Changing endianness doesn't seem to do anything. Am I doing something wrong? Here's my config:
modules:

    # Module name, needs to be passed as parameter by Prometheus.
  - name: "SMA"
    protocol: 'tcp/ip'
    metrics:
        # Name of the metric.
      - name: "power_consumption_total"
        # Help text of the metric.
        help: "represents the overall power consumption by phase"
        # Labels to be added to the time series.
        labels:
          phase: "1"
        # Register address.
        # The first digit of the address is the function code
        # Supported codes are: 1, 2, 3, 4
        address: 31435
        # Datatypes allowed: bool, int16, int32, int64, uint16, uint32, uint64,
        #   float16, float32, float64
        # One register holds 16 bits.
        dataType: int32
        # Endianness allowed: big, little, mixed, yolo
        # Optional. If not defined: big.
        endianness: big
        # Prometheus metric type: https://prometheus.io/docs/concepts/metric_types/.
        metricType: gauge
        # Factor can be specified to represent metric value.
        # Examples: 1, 2, 1.543, 0.01 etc
        # Factor is multiplied with the scraped value to produce the metric value
        # Optional.

Any ideas appreciated!

Hi Luke,
have you tried to capture the data that's going over the wire (tcpdump/wireshark) and compared if the device was "asked" for the same data?

Good point, I also thought about that but somehow forgot it. I'll try that :)

On 18. Sep 2023, at 09:40, bastischubert @.***> wrote:

Hi Luke,
have you tried to capture the data that's going over the wire (tcpdump/wireshark) and compared if the device was "asked" for the same data?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.

And for everyone who wants to export SMA metrics to prometheus using modbus as well, I've created a complete SMA config for modbus exporter and published it here: https://codeberg.org/LukeLR/sma_modbus_prometheus_exporter

On 25. Sep 2023, at 14:17, L @.***> wrote:

Thanks a lot for the hint. By capturing my traffic using Wireshark, I found out that the first digit in the SMA register IDs is not the function code, e.g. although 3 is the correct function code for register 31435, the function code is not yet included in the register ID. It works in qmodmaster and pymodbus, because they keep the register ID as is. However, modbus_exporter strips the leading digit from the ID as the function code, so it queries register 1435, while SMA expects you to actually query register 31435, although 3 is also the function code. Therefore, you have to prepend another 3 to the register address in modbus_exporter to get the right value. And I'm pretty sure I tried that, but probably I didn't :)
Sorry for the noise, but talking about that issue really helped!
Closes #61

On 18. Sep 2023, at 13:52, L @.***> wrote:

Good point, I also thought about that but somehow forgot it. I'll try that :)

On 18. Sep 2023, at 09:40, bastischubert @.***> wrote:

Hi Luke,
have you tried to capture the data that's going over the wire (tcpdump/wireshark) and compared if the device was "asked" for the same data?
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.

Hi Luke,
generally you'd need to prefix the register adress with the code (see example file -> https://github.com/RichiH/modbus_exporter/blob/main/modbus.yml#L15)


Use the new .weave-gitops directory format

From the ADR: https://github.com/weaveworks/weave-gitops-private/blob/main/docs/adrs/0007-directory-layout.md
Acceptance Criteria

Make our repo write operations match the new file structure
Ensure the behaviors listed in the consequences section are implemented
Create a single entry-point for read/write operations from the .weave-gitops directory (ie create a WeGODirectoryClient object or some such)
Clean up existing references to the .wego directory and use the aforementioned client in their place ^^

@palemtnrider Does this sufficiently capture the work that needs to be done for the ADR^^

Yes, that captures the majority of the work.  Couple questions -

Create a single entry-point for read/write operations from the .weave-gitops directory (ie create a WeGODirectoryClient object or some such)
By this do you mean you want there to be a package/lib that handles the interaction with the directory structure?

 WDYT?

Additionally, we want to have AC for removing apps as this work isn't as straightforward in the new directory structure.

Additionally, we want to have AC for removing apps as this work isn't as straightforward in the new directory structure.

Added

Question from refinement: Do we limit the config repos to one per cluster?

Updated the title to better reflect the work being done

Adding @rokshana-b and @josecordaz as testers

Everything look ok on the main branch. I was able to add/remove apps successfully.


Fix a case where content under admonitions weren't dettabbed properly

Admonitions would not render the following case properly:
!!! note "Admonition"
  - Parent 1

      - Child 1
      - Child 2

But would render this properly:
!!! note "Admontion"
    - Parent 1
        - Child 1
        - Child 2

The problem stemmed from bad detabbing of the content, where in the first example, the child list was parsed like this:
  - Child 1
      - Child 2

This pull addresses the issue of ensuring that each block is processed properly so that content that is highly sensitive to indentation works correctly.

I'm ignoring the "checklinks" failure. I feel that should be fixed in a separate issue.

I think you have an error in your first example. As is, it renders to

Admonition

Parent 1

Child 1

Child 2

.. which is correct, The - Parent 1 line is not indented by four spaces and is therefore not a child of the admonition. Therefore it gets parsed as a list outside of the admonition as it should.
However, if you use proper indentation, like this:
!!! note "Admonition"
    - Parent 1

        - Child 1
        - Child 2

Then we get the rather strange output:

Admonition

Parent 1

Child 1

Child 2

And yes that is a bug which needs fixing. So, thank you.

Sorry, that was a formatting issue for the comment, not the actual test or failure.

I've corrected the comment in the pull, but the issue is valid.


Freezing the laptop off

Steps to Reproduce:

Hello guys I am writing this wanting help but for a problem that seems to follow me everywhere I go in my coding journey. For all the visual studio code evangelists, this code editor is the bomb and hence the praise starter.
But there is trouble on the mountain, this code editor freezes out to the point that when I restart my laptop and accidentally open the code editor, I will be having a long day and a really long day.
The features and the extensions are great but the freezing out even after disabling and uninstalling the extensions and reinstalling it in the operating systems and this nightmare only get worse on you have a HDD drive like one that I am having, it will freeze out everything in your machine and dominate as the king of the applications.
And so my follow developers who ever making this code editor better help with this problem, if its either changing the framework or tasting the editor under different types of hard drives to see the performances and if there are some hashes to brush off the editor before deploying it to the public.

/needsMoreInfo
Please use this guide to provide more information: https://github.com/Microsoft/vscode/wiki/Performance-Issues. Thanks.

Hello thanks for replying and also reminding me that I left some details off.
Current I am using the Kali Linux operating systems and 1TB hard drive but I am still getting the same same issue of freezing my machine off.

I have see it but it is not compatible with the type of machine I am using
Kindly put in mind that is visual studio code not visual studio

Thank You for the response but work on the issues as it can affect vs code in the future with other machines varies


Add ion Assets Sandcastle tab and new assets to BaseLayerPicker

Add Sentinel-2, Blue Marble, and Earth at night to BaseLayerPicker
Removed old Black Marble from the BaseLayerPicker.
Add new ion Assets tab to Sandcastle to showcase initial assets available to Cesium users.
Update ArcticDEM example to use ion version instead of deprecated assets.agi.com.
Rename PATerrain example to the more accurate PAMAP Terrain and have it use ion version instead of deprecated assets.agi.com.
Add bare bones Blue Marble, Cesium World Terrain, Earth at Night, Natural Earth II, Sentinel-2, and Washington DC 2017 examples.
Update examples using deprecated cesiumjs.org version of Black Marble to use the newer Earth at Night ion asset.
Resize some overly-large gallery images.

CC @pjcozzi

@mramato, thanks for the pull request! Maintainers, we have a signed CLA from @mramato, so you can review this at any time.
:warning: I noticed that CHANGES.md has not been updated. If this change updates the public API in any way, fixes a bug, or makes any non-trivial update, please add a bullet point to CHANGES.md and comment on this pull request so we know it was updated. For more info, see the Pull Request Guidelines.

I am a bot who helps you make Cesium awesome! Contributions to my configuration are welcome.
:earth_africa: :earth_americas: :earth_asia:

At quick glance, all sounds good. :rocket:
Can someone please do a quick review of the examples?

Add a view picker to the Cesium World Terrain example
It might be helpful to add some in-line comments explaining about the data sets.  I saw you populated the info dropdown, but I don't think many people know it exists.
ArcticDEM -> ArcticDEM Terrain?  It might help distinguish between imagery and terrain examples.
Replace the Washington DC thumbnail with a picture of some landmark in DC
Change the thumbnail for 'Earth at Night' to something that is a more recognizable land form.  Like zoomed out on the US.
Turn off the base layer picker for all these examples

Should we link to a terms of use or a blog post about ion from the examples?

Add a view picker to the Cesium World Terrain example

The larger Terrain example already covers several views.  Already discussed this offline with @pjcozzi These examples are intentionally sparse and temporary.  There current purposes is to show how to access the available assets.  Most will actually go away in a couple of months.

It might be helpful to add some in-line comments explaining about the data sets. I saw you populated the info dropdown, but I don't think many people know it exists.

This I'll do.

ArcticDEM -> ArcticDEM Terrain? It might help distinguish between imagery and terrain examples.

DEM implies it's a terrain example, we don't add "Imagery" to the imagery examples, so I'm not sure this makes sense.  I think we'll be fine once I add additional comments.

Turn off the base layer picker for all these examples

I see no reason to do this.  Our examples always do too much.  The point of this example is to show how to load the layer.  Disabling the base layer picker adds nothing to the example.

Disabling the base layer picker adds nothing to the example.

I don't like that the base layer picker has no icon for the imagery examples

I don't like that the base layer picker has no icon for the imagery examples

You were the one that request we show nothing when an item wasn't selected, and the lack of an icon has nothing to do with the example.  I stand by my comment.

This is ready.

Thanks


import OutputStreamWriter to enable UTF-8 encoding

I've tested the original code and special characters such as those in Russian language and emojis are not supported. So I imported the OutputStreamWriter and it worked like a charm!

We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for all the commit author(s) or Co-authors. If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google.
In order to pass this check, please resolve this problem and then comment @googlebot I fixed it.. If the bot doesn't comment, it means it doesn't think anything has changed.
ℹ Googlers: Go here for more info.
@googlebot I fixed it.

@BenjaminLiCN thanks!