Support for private networking

Currently, attempting to use private networking errors out because a Service Networking connection and private IP is not established/created.

@thefirstofthe300 Could you provide a minimal example for reproducing the issue?

I wish I had time to go about figuring that out but I've got some really tight deadlines right now. I can tell you straight away that all the resources required to do private networking as per the Terraform resource documentation don't currently exist in the module.
I did manage to jerry-rig a patch together that enables private networking that I can use: https://github.com/GoogleCloudPlatform/terraform-google-sql-db/compare/master...thefirstofthe300:ds/private-networking
I'll try to get this cleaned up and submitted as a PR but right now, I'm struggling to find time.

A support for private networking is under review in https://github.com/GoogleCloudPlatform/terraform-google-sql-db/pull/35. I defined a new submodule for setting up the network, as those elements need to be created only once for all instances connected to the same VPC.

I'm gonna close this since the other module was added. Any bugs that are found should be reported individually.


docs: updated command reference for mesheryctl filter

Notes for Reviewers
This PR fixes #8207
Signed commits

[x] Yes, I signed my commits.

🚀 Preview for commit 3ff46218985ae7ecbd2bcee7af667e776572d0de at: https://64b8fff29dcc33630cf8943f--meshery-docs-preview.netlify.app

@thisiskaransgit we're failing on deploy previews for docs, it seems.

@Yana-Gupta, why was there a dependency update in the lockfile?

@Yana-Gupta, why was there a dependency update in the lockfile?

It updated automatically while running command bundle install

@Yana-Gupta, please avoid pushing any unwanted modifications and ensure that manifest files or lockfiles remain unchanged unless directly relevant to this pull request. Hope you will keep that in mind as we look forward to see more contributions from you 😄


[Code] Tispark support insert using SQL

What problem does this PR solve?
https://github.com/pingcap/tispark/issues/2462
What is changed and how it works?

Add new capability to TiDBTable
Remove write options
Implement V2 interface using V1 code
Compatible with different Spark versions

Check List
Tests

Unit test
Integration test

Code changes

Has exported function/method change
Has exported variable/fields change
Has interface methods change

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/run-all-tests

/merge


Add missing typedef in gdnative_interface.h

Without this change the signatures of object_get_instance_binding and object_set_instance_binding don't compile properly in C mode because the struct keyword is missing. The added typedef makes the definition look like others in the file.

This change was already made to the header, so this PR is no longer needed 👍


MisfireHandler breaks when there is a corrupt trigger record

When a trigger entry is corrupted, the MisfireHandler is breaking and is not handling other misfires. We are getting below exception when the trigger entry is present in QRTZ_TRIGGERS but is missing in QRTZ_CRON_TRIGGERS table.
MisfireHandler: Error handling misfires: Couldn't retrieve trigger: No record found for selection of Trigger with key: 'DEFAULT.trigger-key' and statement: SELECT * FROM QRTZ_CRON_TRIGGERS WHERE SCHED_NAME = 'scheduler-name' AND TRIGGER_NAME = ? AND TRIGGER_GROUP = ?
This results in MisfireHandler not handling other misfires, till the DB entry is corrected for that one wrong trigger. MisfireHandler should handle other misfires in such cases.

I am facing the same problem. Do we have any updates?


Julia Version Release Branch

IMPORTANT: DO NOT SQUASH-MERGE THIS BRANCH!!!
This PR implements some fixes that are required to enable auto-merging of new Julia versions of the package into the Julia package registry. The main thing I had to do that people might be concerned about is copy the MIT license into the julia folder. The existing of the license in the root and the julia folder might cause some confusion for users. I'm not sure how to deal with this.
If this is ok, then this PR can be merged.

Maybe you can make a symlink rather than a copy? Maybe that will make it clearer this is a packaging requirement and not dual licensing

Good idea, I can try that with the next registration.

IMPORTANT: DO NOT SQUASH-MERGE THIS BRANCH!!!

I rebase-merged it

Thank you - for future reference : I may continue to register new Julia versions from a branch and then ask to merge it again.


When updating a selected message in will unselect it but no event is triggered

I'm handling selection mode with my toggleSelectedSection function.
When I select prior a message which will be then updated via adapter.update, then adapter unselect this message, but doesn't trigger this event:
adapter.enableSelectionMode { selectedNr ->
                toggleSelectedSection(selectedNr)
}

How can this be fixed? I want to hide my "selection panel" when no message is selected.

As a hotfix whenever I want to update or delete a message, I simply run over all selected messages and check message to be updated is selected, in such case I do unselectAllItems.
for (oldMessage in adapter.selectedMessages) {
                if (oldMessage.id == message.id) {
                    adapter.unselectAllItems()
                    break
                }
            }


Feature/ba 118 search page results

Pr contains desktop/mobile styled search page results and tab functionality

Sounds good to me! Will update asap!
@kycapstick
Also though, are we sure we want the "pages" tab, yeah? In the ticket assumptions its not there, but in the design it is but I can't remember if we axed that a week or two ago in meeting(s)? No prob to add it in though of course!

Sounds good to me! Will update asap!
@kycapstick Also though, are we sure we want the "pages" tab, yeah? In the ticket assumptions its not there, but in the design it is but I can't remember if we axed that a week or two ago in meeting(s)? No prob to add it in though of course!

@Braedencraig I believe it was more of a naming issue for the client where they didn't like the name "Pages". I would definitely fight to keep it as it's a pretty essential functionality for a user to be able to search the site, not just the content. Especially since Publications and Blogs also have their own searches.

@kycapstick Feedback addressed and tested! Should be good for review again!!

@Braedencraig one other thing. It looks like you've added in reload functionality when the query params are updated. I specifically wanted to avoid reloading the page as it closes the drawer with the tags on the Publications page. Which is why it triggers the click on the hidden refresh button.

Looking good! One last thing. On or around line 49 of page-publications you have the data-posttype hard coded as Publications, this is used when pulling in the results after filters are applied. It looks like you updated in the first instance to be the $id, can you update it here as well?


bug: possible regression in state messages and progress_markers handling

Singer SDK Version
0.23.0
Is this a regression?

[X] Yes

Python Version
NA
Bug scope
Taps (catalog, state, etc.)
Operating System
linux
Description
CI checks in https://github.com/MeltanoLabs/tap-github/pull/209 are now failing on a test related to progress_markers.
I've narrowed down the regression (?) to between sdk v0.22.1 (pass) and v0.23.0 (fail), and I think it is specifically https://github.com/meltano/sdk/pull/1436 which caused the regression. Tagging @aaronsteers as the author of that PR.
The test that fails was added to tap-github in this PR after this related PR was merged in the SDK. In short, progress_markers now appears in the last state message issued by the sdk, which used to signify that the message wasn't "final".
It looks like there are some changes in how state is handled, so I'm opening this as a discussion to understand if there was indeed a regression, or if the test in tap-github needs to be modified to accomodate the new behaviour in the sdk.
Code
No response

@laurentS - thanks for reporting. 👍👍
Cc @kgpayne for extra pair of eyes and since he contributed also on the noted PR.

@laurentS - it's possible that this is functioning as designed and that the test should be modified... it will depend on the desired output of the test.
Essentially, the key question is whether the test actually did "complete" the steam that is being tested - or if the stream sync was "aborted abnormally" due to max record abort signal. If the latter, then the correct result would be an unfinalized state.
If you want to update the stream to deal with abort scenarios cleanly, you can mark the stream as sorted/resumable, and/or you can processing to deal with abort-type exceptions.
Probably there are other ways to address as well, and it's possible that there's another issue going on, but this at least should kick off the conversation... 😁

Thanks for clarifying @aaronsteers!
My understanding so far:

the test in tap-github (test_last_state_message_is_valid) was added to check that we do get a valid final state message in cases where state_partitioning_keys is overridden in a stream. With sdk v0.13.1, we were having problems with streams restarting on each run because of a missing final state message. I think this test needs to remain as is.

in https://github.com/meltano/sdk/pull/1436, you mention:

Tests which actually want a sync_all() behavior can call sync_all() directly, as this change reverts the behavior so that sync_all() will once again sync all records. This is the only way to ensure tests will get valid and finalized state messages. Otherwise, the aborted streams will have bookmarks left in an unfinalized, non-resumeable state.

This is what the test does (call sync_all()), so I'd expect it to pass based on the info I have so far. My understanding is that ABORT_AT_RECORD_COUNT is aimed at speeding up tests when lots of records are expected, but this isn't really what we're testing here. Did I get this right?

@laurentS @aaronsteers @edgarrmondragon I think the ABORT_AT_RECORD_COUNT related changes may be a red herring - as part of those works we also 'fixed' the noisy duplicate STATE messages. I believe that either there is a bug in our record_index logic for choosing when to write state messages, or a missing self._is_state_flushed = False somewhere that would be keeping the final state from firing 🤔 tap-github uses state partitioning, which also affects how/when state is updated.
Looking into this now 👍

Looking into this now 👍

Thanks @kgpayne!

I think the ABORT_AT_RECORD_COUNT related changes may be a red herring...

Yeah, makes sense. Your draft PR #1708 looks like it addresses the issue. 👍 I added a comment there in the PR about some internals, but nothing that would block your PR.

@edgarrmondragon reassigning this to you since Ken is out. Can you take a look and let me know if we need to make progress on this?

I'll be taking a look at this next week


What is Reference component in the popper that we import every time and how exactly to use it?

Why do we need this reference component? Also how to use this component is not given in the docs.

The Reference component defines to which element attach the popper. The documentation explains how to use it


Composing Use Case observables

Hi guys, great project, at my company we have based an app on this template and the principles in the accompanying blog post.
For some more advanced features in the app, we ran into an issue that is very similar to another one mentioned by @amatkivskiy (https://github.com/android10/Android-CleanArchitecture/issues/63). We would like to be able to compose and combine use cases together to form new use cases.
As mentioned, RxJava provides a huge toolbox of operators for composing observables which would be perfect. However, the Use Case interface in this project accepts Subscribers and doesn't expose Observables directly.
This makes it awkward to compose and combine use cases with RxJava operators. The approach I went with was first to use Subjects to adapt the subscriber interface into an observable, then to create a new custom observable. This works but isn't great as there's a lot of nesting and boilerplate.
I was wondering what the reasoning behind the design choice of having Use Cases accept Subscribers rather than returning Observables is? Is it so that Use Cases hide the knowledge of which scheduler is used to subscribe on/observe on? What would be the downsides of having Use Cases return a single Observable?
I'm still new to using Rx in an Android app architecture, so I'm keen to hear some discussion around this and learn something. Thanks again for contributing this to the community :)

Hi @kiwiandroiddev,
I will try to give you an example on how I understand Use Cases. I think it's intended to be one Use Case for one specific process.
Lets say a flight destination is a Use Case. If your are going to take a flight toward a Country, you cannot take another flight at same time to another, unless you divide yourself right?
But if you need it, you can flight toward the Country2, making a transfer/transit when you arrive at Country1 by another flight toward the Country2.
Maybe you need to buy something from Country1 before to land to Country2.
Use Cases, usually should deal with Repositories, and Repository calls can be chained because they expose Observables. There is no reason to not have multiple repositories in one Use Case.
Repositories retrieve data, but a Use Case performs a specific operation. Think in Use Cases like that information provided by your Product Team, or by the Team that define requirements, generally using UML.
This is my approach, I hope it can be useful for you.
Best.

@kuassivi  Thanks for explanation. But I think that @kiwiandroiddev ment the use case when you want to use for example RxLifecycle. It requires access to the Observable.

Ok, but I think there is no limit to use RxLifecycle inside a Use Case through a Repository, even passing a Provider. That could also decouple the lifecycle logic from your Activity. It is just my point of view.

I have a question about Use Case too. We know encapsulate Observable in an UseCase class. So we need to make some actions like transform data from Domain model to View model on main thread. And it is not really good. We'd better to do transform data on background thread. How do you guys think about it?

@kuassivi small note : RxLifecycle shouldn't be used inside a Use Case, you'd be breaking boundaries. RxLifecycle can be used in the Presenter to compose and subscribe to the Use Case.
@lenguyenthanh Domain model to View model transformations should happen in the Presenter. You can still do scheduling there.

@Trikke thx for answering my question. But Use Case don't expose Observable class for us so how we can do scheduling there?

@lenguyenthanh If I'm not wrong, model transformations are performed in the map() function of an Observable. That function is performing on the Thread configured in the subscribeOn() function, which is automatically set in the buildObservable() method of the Use Case.
To test it, put a breakpoint inside the map() method of your Observer, then look for the current thread name with Thread.currentThread().getName().

@kuassivi It should be like that. But in this example it looks like this:
private void showUsersCollectionInView(Collection<User> usersCollection) {
    final Collection<UserModel> userModelsCollection =
        this.userModelDataMapper.transform(usersCollection);
    this.viewListView.renderUserList(userModelsCollection);
  }

  private void getUserList() {
    this.getUserListUseCase.execute(new UserListSubscriber());
  }

  private final class UserListSubscriber extends DefaultSubscriber<List<User>> {

    @Override public void onCompleted() {
     // bla bla
    }

    @Override public void onError(Throwable e) {
      // bla bla
    }

    @Override public void onNext(List<User> users) {
      UserListPresenter.this.showUsersCollectionInView(users);
    }
  }

You can see that, transforming process is on onNext() which is on main thread.

@Trikke agree, putting .compose(activity.<Long>bindToLifecycle()) inside a Use Case is going to break its boundaries, anyway I don't think Use Cases must to expose Observables.
@lenguyenthanh yep. The transformation should be inside the UseCase to work with the same thread.
Something like:
@Override public Observable buildUseCaseObservable() {
    return this.userRepository.users().map(users -> this.dataMapper.transform(users));
  }

@kuassivi Agree, but (but again :smile: ) UseCase should not know about presentation layer. So how do you solve this problem? Using DI or any other way?

@lenguyenthanh Ah yes, i noticed. This example has a different setup for Use Case subscription than the one i'm using. Sorry, i forgot that.
But are Domain to View Model transformations that expensive? What kind of expensive objects are you mapping, or are we talking about thousands of objects being mapped at the same time? Usually this is just some data mapping. Maybe just map them in the subscriber in the Presenter, and do some performance testing to see if this is really an issue.
@kuassivi Transformations to View Models can't be inside the Use Case, you'd be breaking boundaries.

No mention, because this probably can be a long discussion.
If you are pulling new data when scrolling down a list, something usual, you may need to map every time your retrieved data, so that can be expensive.
I don't think I'm breaking boundaries in this case, although I see there are a lot of boundaries.
A mapping process in a Observable is common, and I'm not specifying what kind of mapper is in the implementation.
If you have a mapping process to be performed for that Use Case, then provide it, otherwise not.

You are breaking boundaries in this case because the Use Case is Domain-specific and the mapper maps Domain Entities to View Models. Because that mapper knows about View-specific logic, it must reside in that layer and cannot be used by the Use Case.
For @lenguyenthanh , there are a few solutions:

map data on the subscriber in the Presenter and pass View Models to the View. Performance can then be tested to see if this mapping is actually a problem for the UI thread. This depends on how much data and how often this would happen
expose the Observable chain in the Use Case so the Presenter can take advantage of that.

I'm using the 2nd approach already, mainly because in my sentiment the data flow doesn't stop at the Use Case. It should continue flowing through to the Presenter as there is View logic that consumes or reacts to this data. (ie : map stuff, show buttons on certain conditions)

Sure, but as I said ... I'm not specifying what kind of mapper is in the implementation. of the Use Case.
The mapper can map from one domain to another different domain right? In this case, will it break boundaries?

@Trikke thanks for your solutions. I prefer 2nd option too, it's more flexible. I'm thinking about adding transformer object to Use Case objects but it doesn't look good. Could you please give me an example of how you implement it?

@kuassivi We were talking about a Domain Entity to View Model mapper, which @lenguyenthanh was asking questions about. I'm not sure what you mean by "I'm not specifying what kind of mapper is in the implementation". A mapper just maps data from one kind to another, But where this mapper resides depends greatly on what data we are talking about.
The "Domain" is a layer in which al your business logic must reside. Usually Use Cases and other classes that describe the "core business" of your app. There is just one "Domain" layer. The "View" or "Repository" are not other "Domains", but actual separate layers. So when data crosses a layer, we have to make sure an inner layer knows nothing of the outer layer. Since the "Domain" layer is an inner layer opposite to the "View" layer, we have to take care in not exposing the View Models in the "Domain" layer.
@lenguyenthanh in my implementation, the Observables in a Use Case are just exposed, but do contain all business rules. The Presenter can chain on that, but only for view logic.
I'll give an example here of something simplified and made up. Please don't look at this code for compile correctness, i quickly typed it by hand.
in Use Case
(there is no specific business logic for getting a User, so we just return one from the Repo)
public GetUserDetailsUseCase(String userId, UserRepository userRepository) {
		this.userId = userId;
		this.userRepository = userRepository;
	}
public Observable<UserEntity> get() {
		return userRepository.getUser(userId).compose(this.<UserEntity>applySchedulers());
	}

in Presenter
(on button press, we load a user, map it to the view model, and let the view render that)
public loadUserOnButtonPress() {
	getUserUseCase.get()
	.map(this.structureToModelMapper.transformUser)
	.subscribe(new Subscriber(){
		@Override public void onNext(UserModel user) {
     		 	getView().showUser(user);
   		}
	});
	}

@Trikke I get your ideal, you made my day.

Kudos @Trikke :+1:

@Trikke so you are following a little bit different kind of building a UseCase. I mean according to this repo your implementation is a little bit different as you break the abstraction.

@spirosoik No, he just changed the method name and return type. Otherwise the method is the same as buildUseCase.

I finally realized it could be interesting to expose the Observable, so following the suggestion from @Trikke I refactored the UseCase abstract class to this one. I hope this helps someone.
public abstract class UseCase<T>  {

     private final ThreadExecutor threadExecutor;
     private final PostExecutionThread postExecutionThread;

     protected UseCase(ThreadExecutor threadExecutor,
                                    PostExecutionThread postExecutionThread) {
        this.threadExecutor = threadExecutor;
        this.postExecutionThread = postExecutionThread;
    }

    private Observable.Transformer<T, T> applySchedulers() {
        return () -> observable
                          .subscribeOn(Schedulers.from(threadExecutor))
                          .observeOn(postExecutionThread.getScheduler());
        };
    }

    protected abstract Observable<T> buildUseCaseObservable();

    final public Observable<T> get() {
        return buildUseCaseObservable().compose(applySchedulers());
    }

    final public Subscription execute(Subscriber<T> subscriber) {
        return get().subscribe(subscriber);
    }
}

public class GetUserDetails extends UseCase<User> {

  private final int userId;
  private final UserRepository userRepository;

  @Inject
  public GetUserDetails(int userId, UserRepository userRepository,
                                      ThreadExecutor threadExecutor,
                                      PostExecutionThread postExecutionThread) {
    super(threadExecutor, postExecutionThread);
    this.userId = userId;
    this.userRepository = userRepository;
  }

  @Override protected Observable<User> buildUseCaseObservable() {
    return this.userRepository.user(this.userId);
  }
}

I haven't provided the unsubscribe()method because I prefer to handle them with a CompositeSubscription in the Presenter.

@spirosoik I'm just using a different implementation, and passing the data flow into the Presenter. No boundaries are broken. The Presenter ultimately handles the Subscription.
It's quite easy to then map data to an Adapter or a paging mechanism. This video also talks about this and they show ways they have implemented this.

Thanks @Trikke and @kuassivi, that has explained a lot. From that I gather there's nothing wrong with exposing Observables from the domain layer, and I think we'll move towards that in our project to get that extra flexibility in the presentation layer.
What's still not completely clear to me is the thinking behind encapsulating Observables in the domain layer in the original implementation. As @Trikke says data flow doesn't stop at the domain layer and surely you would get the biggest payoff from a reactive architecture by applying it all the way down the stack. I'm curious as there must be some advantage to this approach?

@kiwiandroiddev right! As an app scales, there are new requirements and surely refactors must by applied. This is, let's say a pet project for learning purpose and in this specific use case, not a lot of data composition is required at the presentation layer.
With that being said, this is the main purpose for these sort of discussions: to receive feedback and input in order to improve the codebase :smile:

@android10 That makes sense :) This project and these kind of discussions are great for advancing the state of art of Android app development I think, so thanks again for the contribution.

Is it should be ok or considered bad practice, if we mix the implementation?
I mean some UseCase expose it's observable and other hide it.
Because not all UseCase need to be chained or composed with other observable.

@rshah , no don't start mixing. You stick with either system. And it's generally a better idea to have them composable, even if you don't "need" to do so for some use cases.

@Trikke  What about exposing types ? In your example UseCase knows about UserEntity which is not part of domain, but part of data. If response from api is different from model domain is know about then UseCase should now about this type, but I think response from server should not be a part of domain

@zoopolitic Indeed, an api response wouldn't be part of the domain. Usually that would reside in the Data Layer. And you'd use a Mapper to map it from a UserApiResponse to a UserEntity.

@Trikke But your Use case return Observable, so if api returns UserApiResponse - then UseCase will return Observable and this response is part of data, but domain knows about it it this case

@zoopolitic I never said to pass UserApiResponse with the Observable chain. That's why i implied you'd use a Mapper to make UserApiResponse to UserEntity. The same applies to reading stuff out of a database or another data source. Your DB could return a UserRowStructure. You don't pass that around, and again you use a Mapper to map it to a UserEntity.
You convert data from some external form, such as an external service, database or even filesystem, to the internal form used by the use cases.

@Trikke Thanks, I've already figured out. Now I do mapping in gateways so Use Cases work only with domain data and stay isolated from another layers

@Trikke quick question are you using a mapper library for convenience? we do the mapping by hand.

@zoopolitic : glad to help, and yes that's what you should be doing. Your domain data is holy; what comes in from an external source should always be converted to your own data.
@spirosoik , unfortunately i haven't tried any mapping libs yet. The larger project i maintain has a legacy api with support for Android, iOS and Windows Apps with different data for each platform merged together, it's a mess. So i've got all my mappers written by hand because i know the intricacies of that horrible legacy api. And other personal projects are usually so small that i never bothered checking a mapping lib. But i will check out the example you posted! Maybe it does things just right for me :)

@Trikke thanks for the answer.
@android10 I have the same question for you:

quick question are you using a mapper library for convenience? we do the mapping by hand. I haven't tried a library for this but there are some nice libs for this. Not sure if they use reflection or compile time generation.

for example http://mapstruct.org/ is working on compile-time and is a code generator for mappers. If you used something give us your impressions please

IMHO, mapping by hand with some libraries like AutoValue (with builder) is the best option now. Using mapping library is quite over engineer.

@lenguyenthanh : i think mappers have their uses, it depends on preference and scope. For me, my domain is immutable with AutoValue and external sources are hand mapped (see above reasons).

But your Use case return Observable< T >, so if api returns UserApiResponse - then UseCase will return Observable< UserApiResponse >

@zoopolitic

Not necessary like that, in my code sample, you can see the UseCase class implies a parameterized type
public abstract class UseCase<T>{}

so both abstract Observable<T> buildUseCaseObservable() and Observable<T> get() must be composed with the same type. So, unless you specify a type from the Data Layer, it should return the expected one, the Domain type, that @Trikke mentioned

use a Mapper to make UserApiResponse to UserEntity

@Trikke

Maybe doing the transformation previously inside the Repository. (And also because the UseCase belongs to the Domain Layer, so you shouldn't be able to return a Data type, only Domain types)
@spirosoik Have you tried https://projectlombok.org to generate builders for your mappers?

@kuassivi no I didn't try. Have you already used that?
We are experimenting with mapstruct

Nope, I didn't yet, but I'll try to test something like
public Foo mapToFoo(Bar bar) {
     new Foo.Builder(bar).build();
}

Both object should have the same fields like in mapstruct, but this library looks very interesting as well.

@kuassivi I like your implementation of UseCase so Observable is exposed however, the Schedulers are always added so there is no way to get the Observable beforehand.
Say for example you want to subscribe and observe on the background thread, how would we go about this? In my scenario, I have a method the returns a domain entity of a specific id. I do not want to have to implement the whole Subscriber pattern everytime I want to retrieve an entity of specific id.  I have found a few different options but unsure which are valid and which break best practices.

Use the get() on UseCase and then overwrite the .subscribeOn and .observeOn methods on the returned Observable. Not sure if that would work or is a valid solution.
Provide a matching UseCase but use the @Named parameter and supply a different PostExecutionThread. This seems like code overkill.
use .toBlocking() and then first() on the Observable that returns the item from my repository.

@StuStirling, in fact that implementation was taken from a previous comment from @Trikke
If you want to subscribe and observe both on the background then the ThreadExecutor and the PostExecutionThread must be the same.
My current implementation is a bit different right now, I use a common Interface with a @Name as you mentioned to pass the Thread Executors in the constructor.
I would recommend you then the 2 option.

Finally, i was not sure why Observable is not exposed from UseCase to Presenter, since i want to do sth like this:
myUsecase.doOnSubscribe(view.showLoading())
    .doOnTerminate(view.hideLoading())
    .subscribe(...);

Also as in this approach, Reactive Data Layer, stream from Repository to Presentation layer never stops (it is infinite), exposing Observable seems better approach.
I was wondering what was the important reason (big deal) giving Subscriber to UseCase and not exposing Observable to outside. From what i understand from @Trikke and @android10 useCase code in this repo is just one way of doing it and no big reason is behind it. Maybe it should be stated in Readme.

@jemshit it's up to you to decide when you want to have observable and where. what @android10 suggests in this repo is the clean architecture implementation in android. I don't think that there is a specific rule which you will violate if you expose Observable also in Presenter. also @Trikke adapts his implementation based on their team's needs.
I can say that it's really valid your concern not only about the example you mentioned but also it's reasonable for keeping in the back-ground thread the data transformation (mapping) for performance reasons too.


feat: Sync from noir

Automated pull of development from the noir programming language, a dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
feat: Unroll loops iteratively (https://github.com/noir-lang/noir/pull/4779)
chore: Release Noir(0.27.0) (https://github.com/noir-lang/noir/pull/4632)
fix: Update commit for noir-gates-diff (https://github.com/noir-lang/noir/pull/4773)
fix: correct ICE panic messages in brillig convert_black_box_call (https://github.com/noir-lang/noir/pull/4761)
chore(docs): Fix link in the Data Types page (https://github.com/noir-lang/noir/pull/4527)
chore(doc): Fix broken docs links (https://github.com/noir-lang/noir/pull/4606)
chore: Remove the old Value struct from the oracle docs (https://github.com/noir-lang/noir/pull/4738)
feat(nargo): Multiple circuits info for binary programs (https://github.com/noir-lang/noir/pull/4719)
chore: update condition for clearing warning comment on release PRs (https://github.com/noir-lang/noir/pull/4739)
chore(ci): fix cutting new versions of the docs (https://github.com/noir-lang/noir/pull/4737)
chore(ci): replace yarn build:js:only script (https://github.com/noir-lang/noir/pull/4735)
chore: update JS publish workflow to upload build artifacts correctly. (https://github.com/noir-lang/noir/pull/4734)
feat: add remove_enable_side_effects SSA pass (https://github.com/noir-lang/noir/pull/4224)
chore: update from vulnerable version of h2 (https://github.com/noir-lang/noir/pull/4714)
chore(ci): stop updating version list before cutting new docs version (https://github.com/noir-lang/noir/pull/4726)
chore: remove FunctionInput::dummy (https://github.com/noir-lang/noir/pull/4723)
chore: remove docker CI flow (https://github.com/noir-lang/noir/pull/4724)
fix: unknown slice lengths coming from as_slice (https://github.com/noir-lang/noir/pull/4725)
chore: remove unused env vars from Cross.toml (https://github.com/noir-lang/noir/pull/4717)
feat: improve nargo check cli with --override flag and feedback for existing files (https://github.com/noir-lang/noir/pull/4575)
feat: Allow slices to brillig entry points (https://github.com/noir-lang/noir/pull/4713)
chore: simplify how acvm_backend.wasm is embedded (https://github.com/noir-lang/noir/pull/4703)
fix(acvm): Mark outputs of Opcode::Call solvable (https://github.com/noir-lang/noir/pull/4708)
fix: Field comparisons (https://github.com/noir-lang/noir/pull/4704)
feat(acvm_js): Execute program  (https://github.com/noir-lang/noir/pull/4694)
chore: simplify how blns is loaded into tests (https://github.com/noir-lang/noir/pull/4705)
fix(ssa): Do not use get_value_max_num_bits when we want pure type information (https://github.com/noir-lang/noir/pull/4700)
chore: remove conditional compilation around acvm_js package (https://github.com/noir-lang/noir/pull/4702)
feat(docs): Documenting noir codegen (https://github.com/noir-lang/noir/pull/4454)
chore: check for references to private functions during path resolution (https://github.com/noir-lang/noir/pull/4622)
chore: fix clippy errors (https://github.com/noir-lang/noir/pull/4684)
fix: Last use analysis & make it an SSA pass (https://github.com/noir-lang/noir/pull/4686)
feat: improve SSA type-awareness in EQ and MUL instructions (https://github.com/noir-lang/noir/pull/4691)
feat: improve optimisations on range constraints (https://github.com/noir-lang/noir/pull/4690)
chore: remove last traces of nix (https://github.com/noir-lang/noir/pull/4679)
chore: Use is_entry_point helper on RuntimeType (https://github.com/noir-lang/noir/pull/4678)
END_COMMIT_OVERRIDE

Syncing again since https://github.com/noir-lang/noir/pull/4764 was merged

Reopening since pulls after this one are reverting a lot of stuff

Let's get this one in to have less diff between noir and aztec packages

Sorry to rug, PR updated

Benchmark results
Metrics with a significant change:

note_history_trial_decrypting_time_in_ms (5): 129 (+187%)
note_successful_decrypting_time_in_ms (8): 248 (+16%)
note_trial_decrypting_time_in_ms (8): 50.4 (+299%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
64 txs

l1_rollup_calldata_size_in_bytes
772
772
772

l1_rollup_calldata_gas
6,796
6,784
6,808

l1_rollup_execution_gas
587,277
587,265
587,289

l2_block_processing_time_in_ms
1,314 (+1%)
4,813 (+1%)
9,319

note_successful_decrypting_time_in_ms
:warning: 248 (+16%)
564 (+2%)
959 (+7%)

note_trial_decrypting_time_in_ms
:warning: 50.4 (+299%)
71.7 (+19%)
77.3 (-32%)

l2_block_building_time_in_ms
10,666 (+1%)
37,783
74,280 (+1%)

l2_block_rollup_simulation_time_in_ms
10,544 (+1%)
37,382
73,510 (+1%)

l2_block_public_tx_process_time_in_ms
5,111 (+1%)
19,826
39,728 (+1%)

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
5 blocks
10 blocks

node_history_sync_time_in_ms
14,285 (+2%)
27,280 (+3%)

note_history_successful_decrypting_time_in_ms
1,197 (+2%)
2,326 (+2%)

note_history_trial_decrypting_time_in_ms
:warning: 129 (+187%)
84.7 (+1%)

node_database_size_in_bytes
18,743,376
35,143,760

pxe_database_size_in_bytes
29,859
59,414

Circuits stats
Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit
circuit_simulation_time_in_ms
circuit_input_size_in_bytes
circuit_output_size_in_bytes

private-kernel-init
146 (+1%)
44,561
26,424

private-kernel-inner
157
72,188
26,424

private-kernel-ordering
109 (+1%)
51,090
39,297

base-parity
3,994 (+1%)
128
311

root-parity
1,034 (-1%)
1,244
311

base-rollup
13,376 (+1%)
110,820
957

root-rollup
49.5 (-1%)
4,551
821

public-kernel-app-logic
83.4 (+1%)
48,151
40,933

public-kernel-tail
122
53,644
7,385

merge-rollup
10.7 (-3%)
2,760
957

public-kernel-teardown
78.5 (-1%)
48,151
40,933

public-kernel-setup
77.8 (-1%)
48,151
40,933

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
512 leaves
1024 leaves
2048 leaves
4096 leaves
32 leaves

batch_insert_into_append_only_tree_16_depth_ms
10.1
16.0 (-1%)
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.8
31.6
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.587
0.494 (-1%)
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
46.0
72.7 (+1%)
231
448
873
1,738
N/A

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
96.0
159
543
1,055
2,079
4,127
N/A

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.471
0.448 (+1%)
0.421
0.417
0.415
0.415
N/A

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
54.5
107
340 (+1%)
667
1,319 (+1%)
2,619
N/A

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
105
207
691
1,363
2,707
5,395
N/A

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.479 (-1%)
0.483
0.463 (+1%)
0.457
0.457 (+1%)
0.455
N/A

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
61.4

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
109

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
0.535

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes
1 registered classes

tx_size_in_bytes
41,005
528,889

Transaction size based on fee payment method

Metric
native fee payment method
fpc_public fee payment method
fpc_private fee payment method

tx_with_fee_size_in_bytes
905
1,161
1,377

Transaction processing duration by data writes.

Metric
0 new note hashes
1 new note hashes
2 new note hashes

tx_pxe_processing_time_ms
1,293 (+1%)
905
4,214 (-1%)

Metric
1 public data writes
2 public data writes
3 public data writes
4 public data writes
5 public data writes
8 public data writes

tx_sequencer_processing_time_ms
446 (+1%)
301 (-1%)
772 (-1%)
420 (+7%)
1,259 (-1%)
459


provision.py fails during vagrant up on Ubuntu 14.04

vagrant up fails provisioning with the following error:
==> default: + pip install --no-deps --requirement /srv/zulip/requirements/py2_dev.txt
==> default: Traceback (most recent call last):
==> default:   File "/srv/zulip/tools/provision.py", line 243, in <module>
==> default:
==> default: sys.exit(main())
==> default:   File "/srv/zulip/tools/provision.py", line 182, in main
==> default:
==> default: setup_virtualenv(PY2_VENV_PATH, DEV_REQS_FILE)
==> default:   File "/srv/zulip/scripts/lib/setup_venv.py", line 47, in setup_virtualenv
==> default:
==> default: do_setup_virtualenv(cached_venv_path, requirements_file, virtualenv_args or [])
==> default:   File "/srv/zulip/scripts/lib/setup_venv.py", line 71, in do_setup_virtualenv
==> default:
==> default: run(["pip", "install", "--no-deps", "--requirement", requirements_file])
==> default:   File "/srv/zulip/zulip_tools.py", line 91, in run
==> default:
==> default: raise subprocess.CalledProcessError(rc, args) # type: ignore # https://github.com/python/typeshed/pull/329
==> default: subprocess
==> default: .
==> default: CalledProcessError
==> default: :
==> default: Command '['pip', 'install', '--no-deps', '--requirement', '/srv/zulip/requirements/py2_dev.txt']' returned non-zero exit status 1

Full contents of /var/log/zulip_provision.log here: http://cdn.subfictional.com/dropshare/pb-TU0wAcC3RS.txt

@sharmaeklavya2 any idea what's wrong here?  I think we're probably missing a C dependency.

Seems like GCC was killed during compilation. This happened to me once on a server with 2 GB RAM when I was running tools/run-dev.py and upgrading pip packages at the same time. I exited tools/run-dev.py and ran pip again. That solved it.

It was an out of memory issue. I didn't follow the first-time contributor directions (that I wrote!) and was testing on a VM with only 1 GB memory. Upped it to 2GB and provisioning went fine.

It would be nice to include this error in https://zulip.readthedocs.io/en/latest/dev-env-first-time-contributors.html#troubleshooting-common-errors since developers might ignore the requirements( 2GB available RAM) and try the setup on VM with 1GB RAM.

Agreed.  @vikas-parashar do you want to submit a PR adding this?  The docs are in docs/ in the main repo.

@timabbott Sure :)

@timabbott How does this look
provision.py fails during vagrant up on Ubuntu
If you see the following error after running  vagrant up :
==> default: + pip install --no-deps --requirement /srv/zulip/requirements/py2_dev.txt
==> default: Traceback (most recent call last):
==> default:   File "/srv/zulip/tools/provision.py", line 243, in <module>
==> default:
==> default: sys.exit(main())
==> default:   File "/srv/zulip/tools/provision.py", line 182, in main
==> default:
==> default: setup_virtualenv(PY2_VENV_PATH, DEV_REQS_FILE)
==> default:   File "/srv/zulip/scripts/lib/setup_venv.py", line 47, in setup_virtualenv
==> default:
==> default: do_setup_virtualenv(cached_venv_path, requirements_file, virtualenv_args or [])
==> default:   File "/srv/zulip/scripts/lib/setup_venv.py", line 71, in do_setup_virtualenv
==> default:
==> default: run(["pip", "install", "--no-deps", "--requirement", requirements_file])
==> default:   File "/srv/zulip/zulip_tools.py", line 91, in run
==> default:
==> default: raise subprocess.CalledProcessError(rc, args) # type: ignore # https://github.com/python/typeshed/pull/329
==> default: subprocess
==> default: .
==> default: CalledProcessError
==> default: :
==> default: Command '['pip', 'install', '--no-deps', '--requirement', '/srv/zulip/requirements/py2_dev.txt']' returned non-zero exit status 1

Error log might not look exactly same so look for these lines:
==> default: Traceback (most recent call last):
==> default:   File "/srv/zulip/tools/provision.py", line 243, in <module>
==> default:
==> default: sys.exit(main())
==> default:   File "/srv/zulip/tools/provision.py", line 182, in main

and
==> default: raise subprocess.CalledProcessError(rc, args) # type: ignore # https://github.com/python/typeshed/pull/329
==> default: subprocess
==> default: .
==> default: CalledProcessError

It's likely you are running a VM and it's ran out of memory.
Check if you have alotted RAM according to Requirements, which is minimum 2GB. If not, go to your VM setting and increase the RAM then restart the VM.


UnhandledPromiseRejectionWarning: Error: self signed certificate in certificate chain

(node:35564) UnhandledPromiseRejectionWarning: Error: self signed certificate in certificate chain
at TLSSocket.onConnectSecure (_tls_wrap.js:1321:34)
at TLSSocket.emit (events.js:223:5)
at TLSSocket._finishInit (_tls_wrap.js:794:8)
at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:608:12)
(node:35564) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:35564) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
While trying to register and also we need a readme file

@Oluwatobilobaoke could you please let me know how did u merge it in front end part that was provided by @cornflourblue  earlier. I have commented the fake back end, but my calls are not hitting my local server 4000, and my db is not getting updated. It would be great if you can help me with this.

Working on the blog post to go with this at the moment, shouldn't be too much longer

Okay, great Thanks.
@MoshinaT I didn't merge with frontend I was trying to build an API with auth then more functionalities that's just it.
@cornflourblue  We would like a post also merging the frontend with the backend the ones you made with fake backend wasn't that really self-explanatory.
Thank YOU.

@Oluwatobilobaoke I have merged it, thanks.  They work well. Thanks a lot @cornflourblue your work is very useful.

Hey guys I've just finished the post to go with this repo, you can check it out at https://jasonwatmore.com/post/2020/05/13/node-mongo-api-with-email-sign-up-verification-authentication-forgot-password
Cheers,
Jason


(PDB-4769) Revert definition of active_nodes

Prior to PDB-4479 (commit 262573c053f9912e6659e9422c33ff3ee148e243)
an "active node" was anything that was not an inactive node. The
definition of an inactive node was too broad so it was reduced in scope
and active_nodes was explicitly described. The result was the
active_nodes definition changed from
WITH inactive_nodes AS
  (SELECT certname from certnames
   WHERE (deactivated IS NOT NULL OR expired IS NOT NULL)
...
WHERE NOT (certname in (SELECT certname FROM inactive_nodes))

to
WITH active_nodes AS
  (SELECT certname from certnames
   WHERE (deactivated IS NULL AND expired IS NULL)
...
WHERE (certname in (SELECT certname FROM active_nodes))

While the two are logically equivalent, the Postgres query planner
treats them very differently. The planner began filtering via the
active_nodes CTE using a HashAggregate step that, due to the planner
having limited ability to push filters into the CTE, operated on a huge
numbers of rows.
See: https://medium.com/@hakibenita/be-careful-with-cte-in-postgresql-fca5e24d2119
for more info on why CTE's can produce slow queries.
For example, this report query from the PE Console, spent over two
thirds of its total processing time (1 hour 40 minutes) performing the
HashAggregate in order to incorporate the active_nodes CTE into the rest
of the query.
QUERY PLAN
GroupAggregate  (cost=130641.82..130641.85 rows=1 width=28) (actual time=6015539.183..6015667.053 rows=16 loops=1)
Group Key: reports_20200602z.cached_catalog_status, reports_20200602z.corrective_change, reports_20200602z.noop, reports_20200602z.noop_pending, report_statuses.status
CTE active_nodes
->  Seq Scan on certnames certnames_1  (cost=0.00..52964.88 rows=119214 width=30) (actual time=0.014..530.783 rows=117521 loops=1)
Filter: ((deactivated IS NULL) AND (expired IS NULL))
Rows Removed by Filter: 2270
->  Sort  (cost=77676.94..77676.94 rows=1 width=20) (actual time=6015539.160..6015613.529 rows=103452 loops=1)
Sort Key: reports_20200602z.cached_catalog_status, reports_20200602z.corrective_change, reports_20200602z.noop, reports_20200602z.noop_pending, report_statuses.status
Sort Method: quicksort  Memory: 11155kB
->  Nested Loop  (cost=56698.66..77676.93 rows=1 width=20) (actual time=3423.353..6013845.296 rows=103452 loops=1)
Join Filter: (certnames.certname = active_nodes.certname)
Rows Removed by Join Filter:<PHONE_NUMBER>
->  Nested Loop Left Join  (cost=54016.34..74990.11 rows=1 width=80) (actual time=1905.149..26707.278 rows=103452 loops=1)
->  Nested Loop Left Join  (cost=54016.21..74989.96 rows=1 width=80) (actual time=1905.104..23644.235 rows=103452 loops=1)
->  Gather  (cost=54015.79..74986.49 rows=1 width=80) (actual time=1905.039..7003.227 rows=103452 loops=1)
Workers Planned: 2
Workers Launched: 0
->  Parallel Hash Join  (cost=53015.79..73986.39 rows=1 width=80) (actual time=1905.038..6734.687 rows=103452 loops=1)
Hash Cond: ((reports_20200602z.certname = certnames.certname) AND (reports_20200602z.id = certnames.latest_report_id))
->  Parallel Append  (cost=0.29..20759.17 rows=40328 width=66) (actual time=0.047..3189.007 rows=104700 loops=1)
->  Parallel Index Scan using reports_end_time_idx_20200602z on reports_20200602z  (cost=0.42..2271.49 rows=5307 width=66) (actual time=0.046..1514.980 rows=16642 loops=1)
Index Cond: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
->  Parallel Index Scan using reports_end_time_idx_20200601z on reports_20200601z  (cost=0.29..4.52 rows=1 width=66) (actual time=0.027..0.028 rows=0 loops=1)
Index Cond: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
->  Parallel Seq Scan on reports_20200603z  (cost=0.00..18226.01 rows=36462 width=66) (actual time=0.030..1598.928 rows=88058 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
Rows Removed by Filter: 1
->  Parallel Seq Scan on reports_20200528z  (cost=0.00..11.10 rows=29 width=91) (actual time=0.011..0.011 rows=0 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
->  Parallel Seq Scan on reports_20200529z  (cost=0.00..11.10 rows=29 width=91) (actual time=0.004..0.004 rows=0 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
->  Parallel Seq Scan on reports_20200530z  (cost=0.00..11.10 rows=29 width=91) (actual time=0.011..0.011 rows=0 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
->  Parallel Seq Scan on reports_20200531z  (cost=0.00..11.10 rows=29 width=91) (actual time=0.010..0.010 rows=0 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
->  Parallel Seq Scan on reports_20200604z  (cost=0.00..11.10 rows=29 width=91) (actual time=0.004..0.004 rows=0 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
->  Parallel Seq Scan on reports  (cost=0.00..0.00 rows=1 width=91) (actual time=0.004..0.004 rows=0 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
->  Parallel Hash  (cost=52256.20..52256.20 rows=50620 width=38) (actual time=1904.192..1904.193 rows=116643 loops=1)
Buckets: 131072  Batches: 1  Memory Usage: 9367kB
->  Parallel Seq Scan on certnames  (cost=0.00..52256.20 rows=50620 width=38) (actual time=0.017..1457.477 rows=119791 loops=1)
->  Index Scan using catalogs_certname_idx on catalogs  (cost=0.42..3.45 rows=1 width=38) (actual time=0.134..0.148 rows=1 loops=103452)
Index Cond: (certname = certnames.certname)
->  Index Scan using report_statuses_pkey on report_statuses  (cost=0.13..0.15 rows=1 width=16) (actual time=0.021..0.021 rows=1 loops=103452)
Index Cond: (reports_20200602z.status_id = id)
->  HashAggregate  (cost=2682.32..2684.32 rows=200 width=32) (actual time=0.013..45.063 rows=58742 loops=103452)
Group Key: active_nodes.certname
->  CTE Scan on active_nodes  (cost=0.00..2384.28 rows=119214 width=32) (actual time=0.016..718.387 rows=117521 loops=1)
With this change, the report query avoids the HashAggregate step and
operates over 550x faster
QUERY PLAN
GroupAggregate (cost=194693.21..194693.24 rows=1 width=28) (actual time=10783.999..10815.261 rows=15 loops=1)
Group Key: reports.cached_catalog_status, reports.corrective_change, reports.noop, reports.noop_pending, report_statuses.status
CTE not_active_nodes
-> Seq Scan on certnames certnames_1 (cost=0.00..4297.08 rows=2499 width=30) (actual time=0.990..109.841 rows=2506 loops=1)
Filter: ((deactivated IS NOT NULL) OR (expired IS NOT NULL))
Rows Removed by Filter: 117303
-> Sort (cost=190397.13..190396.13 rows=1 width=20) (actual time=10783.981..10792.413 rows=116706 loops=1)
Sort Key: reports.cached_catalog_status, reports.corrective_change, reports.noop, reports.noop_pending, report_statuses.status
Sort Method: quicksort Memory: 12190kB
-> Nested Loop Left Join (cost=5551.94..190396.12 rows=1 width=20) (actual time=607.562..10703.227 rows=116706 loops=1)
-> Nested Loop Left Join (cost=5551.81..190395.96 rows=1 width=20) (actual time=607.523..10541.417 rows=116706 loops=1)
-> Hash Join (cost=5551.39..190394.92 rows=1 width=50) (actual time=607.453..8816.443 rows=116706 loops=1)
Hash Cond: ((reports.certname = certnames.certname) AND (reports.id = certnames.latest_report_id))
-> Append (cost=0.00..180482.93 rows=830592 width=66) (actual time=8.760..7093.393 rows=845403 loops=1)
-> Seq Scan on reports (cost=0.00..0.00 rows=1 width=91) (actual time=0.005..0.005 rows=0 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
-> Seq Scan on reports_20200529z (cost=0.00..11.88 rows=50 width=91) (actual time=0.003..0.003 rows=0 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
-> Seq Scan on reports_20200530z (cost=0.00..11.88 rows=50 width=91) (actual time=0.009..0.009 rows=0 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
-> Seq Scan on reports_20200531z (cost=0.00..11.88 rows=50 width=91) (actual time=0.003..0.003 rows=0 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
-> Index Scan using reports_end_time_idx_20200601z on reports_20200601z (cost=0.29..4.53 rows=1 width=66) (actual time=0.013..0.013 rows=0 loops=1)
Index Cond: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
-> Index Scan using reports_end_time_idx_20200602z on reports_20200602z (cost=0.42..2308.64 rows=9022 width=66) (actual time=8.725..316.116 rows=16642 loops=1)
Index Cond: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
-> Seq Scan on reports_20200603z (cost=0.00..143410.69 rows=677299 width=66) (actual time=0.025..6136.937 rows=684682 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
Rows Removed by Filter: 2
-> Seq Scan on reports_20200604z (cost=0.00..30570.49 rows=144119 width=66) (actual time=0.024..475.950 rows=144079 loops=1)
Filter: (end_time >= '2020-06-02 23:15:09.162+00'::timestamp with time zone)
-> Hash (cost=4652.83..4652.83 rows=59904 width=38) (actual time=381.336..381.337 rows=116804 loops=1)
Buckets: 131072 (originally 65536) Batches: 1 (originally 1) Memory Usage: 9378kB
-> Seq Scan on certnames (cost=56.23..4652.83 rows=59904 width=38) (actual time=129.134..236.641 rows=117303 loops=1)
Filter: (NOT (hashed SubPlan 2))
Rows Removed by Filter: 2506
SubPlan 2
-> CTE Scan on not_active_nodes (cost=0.00..49.98 rows=2499 width=32) (actual time=0.995..110.780 rows=2506 loops=1)
-> Index Scan using catalogs_certname_idx on catalogs (cost=0.42..1.03 rows=1 width=38) (actual time=0.014..0.014 rows=1 loops=116706)
Index Cond: (certname = certnames.certname)
-> Index Scan using report_statuses_pkey on report_statuses (cost=0.13..0.15 rows=1 width=16) (actual time=0.001..0.001 rows=1 loops=116706)
Index Cond: (reports.status_id = id)
Planning Time: 214.883 ms
Execution Time: 10817.596 ms
(44 rows)

CLA signed by all contributors.


Fixed grammatical error and added photo to photo gallery.

🛠 Fixes Issue

Related Issue/Addition to code

Issue goes here

👨💻 Changes proposed

Type of change

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

✔ Check List (Check all the applicable boxes)

[ ] My code follows the code style of this project.
[ ] This PR does not contain plagiarized content.
[ ] The title of my pull request is a short description of the requested changes.

📄 Note to reviewers

📷 Screenshots

Original
Updated

** original screenshot
** updated screenshot **

Hey kendall !
please close the PR #326 and try merging this one.

Thanks for your contribution! Sorry if I caused any inconvenience by making you revert the stuff and redoing it.

@all-contributors please add @mukul314 to the doc

I should say a big thanks to you, in fact I learnt a lot by contributing to
your project😁.
Hoping to contribute in the future too !
On Wed, 21 Sept 2022, 13:45 Kendall, @.***> wrote:

Thanks for your contribution! Sorry if I caused any inconvenience by
making you revert the stuff and redoing it.
—
Reply to this email directly, view it on GitHub
https://github.com/KendallDoesCoding/mogul-christmas/pull/328#issuecomment-1253361264,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASHLXGJJ6JSPCO5ZPTEYDSTV7K73PANCNFSM6AAAAAAQRUTMEU
.
You are receiving this because you authored the thread.Message ID:
@.***>

Sure, I'll take a look at them :)
On Tue, 11 Oct 2022, 13:34 Kendall, @.***> wrote:

There are a couple of issues which you can take up right now,
https://github.com/KendallDoesCoding/mogul-christmas/issues?q=is%3Aissue+is%3Aopen+no%3Aassignee
<
https://jebcco.com/click?redirect=https%3A%2F%2Fgithub.com%2FKendallDoesCoding%2Fmogul-christmas%2Fissues%3Fq%3Dis%253Aissue%2Bis%253Aopen%2Bno%253Aassignee&dID=1663756761958&linkName=https://github.com/KendallDoesCoding/mogul-christmas/issues?q=is%3Aissue+is%3Aopen+no%3Aassignee

.
or you can have a look at the other issues as well cause some have been
open from months on end lol

On Wed, 21 Sept 2022 at 16:06, Mukul Ojha @.***> wrote:

I should say a big thanks to you, in fact I learnt a lot by contributing
to
your project😁.
Hoping to contribute in the future too !
On Wed, 21 Sept 2022, 13:45 Kendall, @.***> wrote:

Thanks for your contribution! Sorry if I caused any inconvenience by
making you revert the stuff and redoing it.
—
Reply to this email directly, view it on GitHub
<

https://github.com/KendallDoesCoding/mogul-christmas/pull/328#issuecomment-1253361264

,
or unsubscribe
<

https://github.com/notifications/unsubscribe-auth/ASHLXGJJ6JSPCO5ZPTEYDSTV7K73PANCNFSM6AAAAAAQRUTMEU

.
You are receiving this because you authored the thread.Message ID:
@.***>

—
Reply to this email directly, view it on GitHub
<
https://github.com/KendallDoesCoding/mogul-christmas/pull/328#issuecomment-1253517571
,
or unsubscribe
<
https://github.com/notifications/unsubscribe-auth/AUGJUTOMW6EIXEWI5PFV2XDV7LQJ7ANCNFSM6AAAAAAQRUTMEU
.
You are receiving this because you were mentioned.Message ID:
@.***>

—
Reply to this email directly, view it on GitHub
https://github.com/KendallDoesCoding/mogul-christmas/pull/328#issuecomment-1274264466,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASHLXGNXRQCIQSEAUTCEK7LWCUNSFANCNFSM6AAAAAAQRUTMEU
.
You are receiving this because you were mentioned.Message ID:
@.***>


I get this error when open ExtendedImage like editor

file:///   use network provider?

file:/// use network provider?

I don't use network provider, i  use only ExtendedImage.network

how can you. use ExtendedImage.network to load file:/// ????

how can you. use ExtendedImage.network to load file:/// ????
I dont use ExtendedImage.network for get image from file, i use ExtendedImage.file for get image from file
I use ExtendedImage.network for get image from internet

check it by yourself , error log show you use ExtendedImage.network to load file

check it by yourself , error log show you use ExtendedImage.network to load file

NO. See condition and code bellow. I use ExtendedImage.file


Update README.md

Add Pseudocode and Big O

Codecov Report

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

@@          Coverage Diff          @@
##           master   #165   +/-   ##
=====================================
  Coverage     100%   100%
=====================================
  Files         124    124
  Lines        2346   2346
  Branches      396    396
=====================================
  Hits         2346   2346

Continue to review full report at Codecov.

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


Cannot hide the documentation for specific blocks of api depending on user roles or other request dependent variables

Hello
I'm trying to use grape-swagger + swagger ui to document my partially public api. I would like to show to anyone only the documentation for specific endpoints, not the whole api. So the roles of the current user (cookie or token param) will define which docs to show.
I know the "hidden" attribute in the "desc" block that accepts true / false. However, in these case, the value depends on something that should be determined at the time of the request.
I'm posting this as a issue since as it's not a bug, I think it should be something common also on you, am I right? Can someone post his experience dealing on these cases?
All the best
David Valín

Thanks dblock for your time!

Hack engage: https://github.com/tim-vandecasteele/grape-swagger/pull/214

I like your solution @zbelzer, lets clean it up and merge.


.tmux/plugins is deleted on tmux start - Ubuntu 23.10

Hi there
I love your work first of all - I have it working perfectly on macOS! I've just tried to port my setup to my main Linux server (running Ubuntu Server 23.10 at this time) and I'm experiencing some odd problems.
I install your .tmux framework in the instructed manner (have checked all versions of requirements), and then cloned tpm into .tmux/plugins as instructed.
I then run tmux for the first time. The status bar reports that plugins are being updated or installed. When this completes, the .tmux/plugins directory no longer exists - even tpm has been deleted!
I'm struggling to debug this but if you can advise on the steps I need to run to assist, I'll grab whatever output is needed.
Many thanks
James

Ok - I now can't reproduce the problems I was seeing, so closing this. A couple of things I noted which helped me in (attempting) debugging this as far as I did:

If you install tpm and no plugins are enabled, then default behaviour is to uninstall tpm - hence the whole plugins directory disappears when you run tmux. I had removed all plugins for debugging purposes in case one was causing the issue.
Run tmux -v or tmux -vv to get debug logging enabled - it's logged to the current directory when you ran tmux from. Look in the tmux-server-<pid>.log file for in depth details of what is going on.
I presume I had a problem with the install of one plugin as I was seeing the plugins being momentarily installed, then all deleted. I now can't reproduce this so I can't give a root cause for this - however I hope the above helps someone!

Hello @jamesfreeman959 👋
Hard to say what was happening


Access to XMLHttpRequest has been blocked by CORS policy

Hello everyone
Today I was checking my site and I started seeing CORS errors even using version 3.0.4.
I checked the demos at https://www.sowecms.com/ and they also give CORS error
Access to XMLHttpRequest at 'https://images2199-focus-opensocial.googleusercontent.com/gadgets/proxy?container=none&url=https://www.instagram.com/github/' from origin 'https://www.sowecms.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Apparently the option to use the proxy with google is not working

Hi,
All our sites are having the same issue as Alexiswebmaster.
You can see it on our site at https://pollingtonpreschool.com/gallery/pollington-social-media
Thanks
Rich

Quick update - they have all suddenly started working again!
Rich

Weird, why does this happen? Could it be that it depends on the instagram server where the request arrives?
Everything works perfectly on my site now!!!!

What happens when you send many request? Are you using this proxy -
https://images' + ~~(Math.random() * 3333) + '-focus-opensocial.googleusercontent.com/gadgets/proxy?container=none&url=https://www.instagram.com/' + options.username;
I seem to be getting this Error 400

Tried to make a workaround with different values in the math.random , but it seems that doesn't help at all. If anyone can provide a fix I am willing to pay for that.

We're also seeing this error. But only if we refresh the browser. The first time we load the page we get nothing: no images loaded and no error. Upon browser refresh we get images loaded but also the aforementioned error message.
Chrome Version 89.0.4389.114 (Official Build) (64-bit)
Windows 10 Pro Version 20H2 OS Build 19042.867

I have the same problem too. The feed doesn't work now.

Same for me. Request error: header CORS “Access-Control-Allow-Origin” missing

Same here, sometimes it works, sometimes it doesn't. Guess we have to write our own caching engine, since the implemented one here doesn't seem to work in any way.

If anyone finds a solution, I'm happy to pay for that

Does anyone have any links to the documentation for the google proxy? Trying to look into this myself but i can find absolutely nothing on it.

https://gist.github.com/carlo/5379498 I've found only this one regarding the proxy and tried different variations on it but the issue still persists.

@georgiyboekov yeh came across that too with no luck!

I did some looking last week and it appears that the solution will be to use a proxy server to Set CORS headers when the browser receives the results of the request. I wonder if Cloudflare or another 3rd party service can do this. I've tried several proxies that were suggested in articles I've read but none are currently providing that function.
This article describes the issue: https://medium.com/@dtkatz/3-ways-to-fix-the-cors-error-and-how-access-control-allow-origin-works-d97d55946d9
This article is also a good read: https://medium.com/nodejsmadeeasy/a-simple-cors-proxy-for-javascript-applications-9b36a8d39c51

It seems like we will need to build our own proxy that functions in the same way as focus-opensocial.googleusercontent if we are intending to use this script in the future.

Yeah lets go, we donate 50$ for 1 year :D

@awasson - I am yet to find an existing service, that works in this scenario out of the box.
The most promising so far looks to to be CORSflare - which can be deployed as a Cloudflare worker service.
https://github.com/Darkseal/CORSflare
However - this would then complicate the installation and usage of this library to require users to setup cloudflare accounts and have knowledge of workers etc.
Free accounts are limited to 100,000 requests per day -  so it could be kept under that limit with some resourcefulness.

@stoker88 - Thanks for that. It's about the best approach I've seen up to now. I agree, it's not an easy fix but it might work in some cases. I'll have to give it a spin. In the meantime, I'll keep looking.

Unfortunately it seems like Instagram is doing their best now to suspend the scraping of their website. There were PHP requests that were working 1 month ago, but now the IP just gets blocked and it redirects you to login before seeing any content. Anyway, if anyone can find a solution to make this script working better than it is now, I'm willing to pay for that.

Someone tried to use CORSflare? I registered cloudflare, installed worker with CORSflare and my settings but its failed.
Instagram redirects to login page or sent error 428.
Maybe some special settings needed for CORSflare?

@AlexSus, How did you do your configuration? I've tried to use it as well but not to any success.
My guess is that we want to proxy Google and not Instagram so that might be the issue you are having. I am using the following: const upstream = '*.googleusercontent.com';
Then in my init code I've set the host as: host: 'https://images' + ~~(Math.random() * 3333) + '-focus-opensocial.my-cloudflare-worker.workers.dev/' where my-cloudflare-worker.workers.dev is the URL that Cloudflare have given me.
Mine doesn't work yet. I get an error but it could be getting closer:
Unsupported protocol
The client and server don't support a common SSL protocol version or cipher suite.

I've stumbled upon this projects and I have been wondering what if we remake the request and parse data from bibliogram instead of instagram? https://github.com/cloudrac3r/bibliogram

https://rapidapi.com/restyler/api/instagram40?endpoint=apiendpoint_efc09d4e-5da9-4340-b708-a0969921da85
I've managed to connect to instagram with this script and the api, but the console response is different and it needs to be parsed. I hope that this helps someone make their feed working

Same issue here,  good luck with fixing :)

Has anybody found a solution?

rapidapi seems to be working, 100requests per month in free version. But the javascript version doesn't seem to work well. As soon as you insert the thumbnail_src to an -tag then the browser doesn't show them.(ERR BLOCKED RESOURCE)
But with PHP or so it should work if you previously download the image or pass it through. I will try that till end of this week.

I have the same issue. I even tried to use a simple HTML file with an image tag.
<img src="https://scontent-arn2-2.cdninstagram.com/v/t51.2885-15/sh0.08/e35/s640x640/174191033_293248945850264_4706822520582962514_n.jpg?tp=1&_nc_ht=scontent-arn2-2.cdninstagram.com&_nc_cat=1&_nc_ohc=lUMp5EnMMW8AX__E42K&edm=ABfd0MgBAAAA&ccb=7-4&oh=c755580e7a5f0c8e3d4170122390efbc&oe=60AE0543&_nc_sid=7bff83" />
But getting the same error. I think it is from the Instagram server side.
GET https://scontent-arn2-2.cdninstagram.com/v/t51.2885-15/sh0.08/e35/s640x640/174191033_293248945850264_4706822520582962514_n.jpg?tp=1&_nc_ht=scontent-arn2-2.cdninstagram.com&_nc_cat=1&_nc_ohc=lUMp5EnMMW8AX__E42K&edm=ABfd0MgBAAAA&ccb=7-4&oh=c755580e7a5f0c8e3d4170122390efbc&oe=60AE0543&_nc_sid=7bff83 net::ERR_BLOCKED_BY_RESPONSE


Reorg

Pulled together all Bri's PRs into a single super PR

Preview is available here:http://soroban-docs-pr290.previews.kube001.services.stellar-ops.com/

Preview is available here:http://soroban-docs-pr290.previews.kube001.services.stellar-ops.com/

Preview is available here:http://soroban-docs-pr290.previews.kube001.services.stellar-ops.com/

Preview is available here:http://soroban-docs-pr290.previews.kube001.services.stellar-ops.com/

Something went wrong with PR preview build please check

Something went wrong with PR preview build please check

Something went wrong with PR preview build please check

Something went wrong with PR preview build please check

Preview is available here:http://soroban-docs-pr290.previews.kube001.services.stellar-ops.com/

Preview is available here:http://soroban-docs-pr290.previews.kube001.services.stellar-ops.com/

Preview is available here:http://soroban-docs-pr290.previews.kube001.services.stellar-ops.com/

Preview is available here:http://soroban-docs-pr290.previews.kube001.services.stellar-ops.com/


File not found

I got the error when I build my iOS app with notification_permissions
'notification_permissions/notification_permissions-Swift.h' file not found
    #import <notification_permissions/notification_permissions-Swift.h>
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    1 error generated.

How to fix this issue?

I've opened issue #7  and will work on it as soon as possible.
The problem is the incompability with Swift and Objective-C projects

@JoeCiou
Please follow this SO answer and update the file
https://stackoverflow.com/a/53453243/4499889
This should solve the problem

@JoeCiou
Please follow this SO answer and update the file
https://stackoverflow.com/a/53453243/4499889
This should solve the problem

Yes! This is work for me. thank you!


Dockerfile Kate synatax definition uses deprecated syntax

Kate
Version 3.14.9
Using KDE Development Platform 4.14.9
Dockerfile.xml: https://github.com/docker/docker/raw/master/contrib/syntax/kate/Dockerfile.xml latest commit: https://github.com/docker/docker/commit/3781cde61ff10b1d9114ae5b4c5c1d1b2c20a1ee
Steps to reproduce the issue:

put Dockerfile.xml into $KDEDIR/share/apps/katepart/syntax
open a Dockerfile

Actual results:
Kate shows a warning:
/home/username/.kde4/share/apps/katepart/syntax/Dockerfile.xml:Deprecated syntax. Context dollar not addressed by a symbolic name
/home/username/.kde4/share/apps/katepart/syntax/Dockerfile.xml:Deprecated syntax. Context dollar not addressed by a symbolic name

Expected results:
Syntax highlighted Dockerfile opens without warnings or errors
Dirty fix:
sed -i 's/dollar/#stay/' Dockerfile.xml

If you are reporting a new issue, make sure that we do not have any duplicates already open. You can ensure this by searching the issue list for this repository. If there is a duplicate, please close your issue and add a comment to the existing issue instead.
If you suspect your issue is a bug, please edit your issue description to include the BUG REPORT INFORMATION shown below. If you fail to provide this information within 7 days, we cannot debug your issue and will close it. We will, however, reopen it if you later provide the information.
For more information about reporting issues, see CONTRIBUTING.md.
You don't have to include this information if this is a feature request
(This is an automated, informational response)

BUG REPORT INFORMATION
Use the commands below to provide key information from your environment:
docker version:
docker info:
Provide additional environment details (AWS, VirtualBox, physical, etc.):
List the steps to reproduce the issue:
1.
2.
3.
Describe the results you received:
Describe the results you expected:
Provide additional info you think is important:
----------END REPORT ---------
#ENEEDMOREINFO

All that information is irrelevant as this issue does not concern Docker engine or utilities themselves but instead applies to a contrib syntax highlight script.

@AlexCzar since I don't use KDE Development Platform (and I don't think anyone of the maintainers), would you be interested in providing an updated version for that file, and opening a PR?

/cc @jamtur01 who contributed the original version

If there's no interest in updating, it's probably better to remove that file, but just my 0.02c

I don't use Kate anymore so if someone wants to update fine otherwise remove seems reasonable.

Thanks @jamtur01, we'll go for removing it as nobody here is using it as well, and we couldn't find an up-to-date version elsewhere


Options dialog page / storing options

Hi, I'm rewriting one of my extensions (https://github.com/LaggAt/ActivityWatchVS) to get used to the new out-of-process model. I really like the simplicity of that, and I know it is a work in progress.
As I cannot find something - is there some way to persist options and/or add an page to the options dialog?
This is the missing part to re-implement all functionality.
Thanks in advance.

Thanks for reaching out!  Settings/state persistence is something we're actively investigating at the moment.  Unfortunately the API isn't available yet in the new out of process extensibility model.  When we have more to share, we will definitely let you know through this issue and would love to get your feedback on the design.
While we're on the topic, are there any particular things you'd like to see in the new API on settings?

Well, I have very few needs here. I just need some properties the user could set. What I really need (and what differs from the old variant where you could define the UI in detail) would be:

A simple poco-class, maybe with an attribute so that VS2022 could find it:

[OptionsAttribute("My Settings page")]
public class MyOptions
{
    [Description("Foo Description")]
    public bool EnableFoo { get; set; }

    [Description("Log path")]
    public string LogPath { get; set; } = @"C:\Temp\some.log";

    //...
}

possibility to inject a singleton instance (derserialized from saved) of it in extension parts
Visual Studio showing a property grid on it's own page in Options, serializing/deserializing these settings(properties).

That would be really easy to implement and very reusable. Some extensions may need more control over design, but I think for most extensions this would fulfill all needs with no effort for the coder.

I also need settings, can't proceed without them.
Please implement the settings as closely to Community.VisualStudio.Toolkit as possible.  A few attributes and it all works.  A few optional overrides if you need something unusual.
We're going to need significant further simplification - probably a new version of Community.VisualStudio.Toolkit to wrap this out of process stuff.  The current samples appear to have cancellation token issues all over - some methods fail, like _outputWindow.Writer.WriteLineAsync, when passed a ct, others require it.  You have code caching arrays of them.
API's are not simple and straight forward. Simply writing to the OuputWindowPane should be easy. Instead of a simple create pane, write to pane, it's laden with so much bizarre things your own samples don't work.
You've got reference counting in C#.  Overall, we need to move much, much closer to Community.VisualStudio.Toolkit style support for extension writing and away from these (early)  arcane attempts at out-of-proc.
Thanks

@jefflomax, @LaggAt user settable options is an area we are working right now so please continue to monitor future versions, we will provide more details as we can on the new settings API. In the mean time, we added APIs for extension state that will persist across sessions but not meant to be changed by user.
We realize output window APIs are not very usable right now and also got impacted by product bugs unfortunately. We will be going over them making it much easier to declare an output pane and write to it. These changes should come sooner rather than later.
We are designing the new APIs to focus on out-of-process hosting of extensions and we are also trying very hard to avoid creating a system which requires deadlock resolution of tasks via helpers like JoinableTaskFactory. Because of these goals, we are going ahead with async only APIs especially in cases where API has to interact with VS process and will be requiring use of CancellationToken for supporting scenarios such as user cancellation of long operations. In most cases, because entry point APIs also pass in a CancellationToken such as ExecuteAsync method for commands, we are hoping that it will be clear which cancellation token to pass around. If there is a specific issue you encountered, please open an issue ticket so we can investigate.
Thanks!


cmake: choose the right protoc executable with gRPC_PROTOBUF_PROVIDER=package

also move cmake config files from tools/cmake to cmake directory

Fixes #12230
Supersedes PRs #11891 and #11794.

CC @kskalski  @hesmar  this should solve the issues pointed out in your PRs and I feel this way is more readable. Sorry for the delay, it took me a while to come up with this PR as it was originally part of a larger effort to improve our CMakeFile.txt and add some tests to continue it keeps working well.
The first prerequisite is to finish up  https://github.com/grpc/grpc/pull/12305 and get it merged (and I have some followup changes on top of it).

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

https://github.com/grpc/grpc/issues/12461
https://github.com/grpc/grpc/issues/12428
https://github.com/grpc/grpc/issues/12475
https://github.com/grpc/grpc/issues/12138
https://github.com/grpc/grpc/issues/12476
https://github.com/grpc/grpc/issues/12261

Will v1.6.1 contain this changes?

@BusyJay  most likely not, it's going to be in v1.7.0


404 Error when trying to access any page with localeSubpaths config provided

I'm facing the 404 issue when trying to access any page of my Next.js application.
Next.js latest
next-i18next latest
App works fine when no localeSubpaths config is provided.
After setup of localeSubpaths config:
next.config.js:
const localeSubpaths = {
  en: "en",
  "de-DE": "de-DE",
  "de-CH": "de-CH",
  fr: "fr"
};

app is not working any more.
Every time I'm trying to access main root / or any of the locale pages fr, de-DE browser displays the 404 Error Page (Customized Next.js error page - translation works for the error page).
Error Page contains also a link to the / Home Page. When I'm navigating to the Home Page by clicking on the link -> Home Page loads correctly (including related translations). After another page reload I'm facing again the 404 issue.
i18n config file:
import NextI18Next from "next-i18next";
import getConfig from "next/config";
import path from "path";

const { publicRuntimeConfig } = getConfig();
const { localeSubpaths } = publicRuntimeConfig;

const NextI18NextInstance = new NextI18Next({
  defaultLanguage: "en",
  ns: ["common"],
  defaultNS: "common",
  otherLanguages: ["de-DE", "de-CH", "fr"],
  strictMode: false,
  localeSubpaths,
  localePath: path.resolve("./public/static/locales")
});

export default NextI18NextInstance;

const {
  appWithTranslation,
  i18n,
  Link,
  withTranslation,
  Router
} = NextI18NextInstance;

export { appWithTranslation, i18n, Link, withTranslation, Router };

Please provide a reproducible repository.

I gotta pin up myself to this. I got the exactly same issue and Im not sure what is going on.
I got pretty much fresh setup with next higher than 9.5+ and latest next-i18next.

@DamianBusz Can you provide a reproducible repo?

@isaachinman I'm currently not home and to setup an reproducible repo might take me some time as our project is quite big.
I will try to get back here in the morning.
Right now all I can say is that next is 9.5+ and I'm getting 404 and also having custom _error.js.
Seems like next.js routing is not getting correct paths as if we dummy creame a /de folder and put routes into this it catches it correctly.

@isaachinman I also prepared small example reproductible repo

@isaachinman I also prepared small example reproductible repo

404 on the repo, perhaps u did it as private?

404 on the repo, perhaps u did it as private?

right, now should be fine

I have same issue.
If I enter page with Link component, it works fine.
But if I write url directly or refresh page, I get 404 page in dev mode.

@powerczuk I have cloned that repo, and cannot reproduce any 404 by switching locales and hard reloading. Can you provide any more information?
@TroyTae Please make sure you're using Next v9.5+.

@isaachinman
Yes now I'm using v9.5.3

I will need a reproducible example to be able to debug this.

@isaachinman any idea what happends in the codesandbox I provided?
Getting 404 on /en regardless of good next version.

@isaachinman  hmm it's really strange. I've just checked it on two separate machines and the issue is still there.
node 12.5.0
next. 9.5.3
next-i18next 6.0.2
I've tried both dev and start commands.

I have the exact same error, 404 on all pages. I have a repo with the code, but it's part of company project, so I can't really share it.
next 9.5.3
next-i18next 6.0.2
react 16.13.1
apollo/react-hooks 3.1.5

@DamianBusz If I clone this sandbox and run immediately, I do indeed see the "error", but that's because the Next version is below v9.5. If I do a yarn add next and run again, the error goes away.
@powerczuk If I clone this repo and run, I do not experience any 404s at all.

@powerczuk In your repo, you've put rewrites inside publicRuntimeConfig in your next.config.js, instead of at the top level, where it should be.

omg... my bad. Many thanks for pointing the problem.!

In my case the issue was migrating from an old version to a new white label project, and left the experimental with rewrites on it. So I was getting 404's on localeSubpaths

same issue here, I use Express in the backend, and I get 404, ant solution, or example repo?


Added the timer view and fixed the tab icons

Description
Created the timer screen so users can set how much time they want to spend on tasks. Made the tab bar icons look like a 'home' and 'timer'
Type of change
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Change Status

[x] Complete, tested, ready to review and merge
[ ] Complete, but not tested (may need new tests)
[ ] Incomplete/work-in-progress, PR is for discussion/feedback

Hey Vici. This is a large PR. Right now the TimerVC file contains the TimerVC class + the Countdown class. We can move that second class to a new file if it makes more sense, but I didn't want to create a new project file and mess with the base project file while you were working. Let me know what you think

Hey Vici. This is a large PR. Right now the TimerVC file contains the TimerVC class + the Countdown class. We can move that second class to a new file if it makes more sense, but I didn't want to create a new project file and mess with the base project file while you were working. Let me know what you think

You can create another file for the Countdown. I will pull the latest from you first before I do my PR tonight.


Can't change the style

Hi buddy,
Thanks for your amazing plugin, I like it very much, but only have a little problem.
I followed the instruction and added the following code into file custom.css , but nothing happened.
.dac-container {
  background-color: #eeeeee;
}

Thanks.

Hey,
thanks for your kind feedback.
My suspicion is that the diagram itself has an opaque background.
So, your gray background is covered by that.
The solution would then depend on the diagram type.
E.g., for Plantuml you can set the skinparam backgroundcolor to transparent:
Example:
@startuml
skinparam backgroundcolor transparent
class Car

Driver - Car : drives >
Car *- Wheel : has 4 >
Car -- Person : < owns

@enduml

Most diagram types should have a similar option

Your suggestion works. Thanks. Here's my code. Is that possible to set the background globally ?
@startuml
@startmindmap
skinparam backgroundcolor grey

+ Dimensionality Reduction
++ Feature Selection
+++ Missing Value Ratio
+++ Low Variance Filter
+++ High Correlation Filter
+++ Random Forest
+++ Backward Feature Extraction
+++ Forward Feature Selection
++ Dimensionality Reduction
+++ Components/Factors Based
++++ Factor Analysis
++++ PCA
++++ ICA
+++ Projection Based
++++ ISOMAP
++++ t-SNE
++++ UMAP
@endmindmap
@enduml

There is no option to set diagram-type specific parameters globally.
However, you can of cause just use skinparam backgroundcolor transparent on all diagrams to
use the .dac-container background-color, as you originally planned.

The original case is not working. But the inline setting works.