Large Data Performance FieldArrayType

I'm submitting a ...  (check one with "x")
[ ] bug report => search github for a similar issue or PR before submitting
[ ] feature request
[X] support request

Current behavior
Slow loading lots of fields/data with FieldArrayType
~72 Field Columns * ~36 Rows takes around 20 seconds.
Expected behavior
Faster loading time on large data.
Minimal reproduction of the problem with instructions
(This is small example I whipped up might not be the right one, I will work on getting and example exactly like the problem I am seeing in production)
https://stackblitz.com/edit/angular-pbbsxv?file=src%2Fapp%2Fapp.component.html
Here is an example of the loading time in production of a large form. I am working on creating an stackblitz example that represents this.

I will be working on also solving this issue... more information to come.

There two part to explore which would improve the performance:

OnPush changeDetection: https://github.com/ngx-formly/ngx-formly/issues/1272#issuecomment-437673377
use virtual list

Thanks @aitboudad , I will look into those options.
I am working on making an example with large amount of fake data that emulates the problem I am seeing in production, should be done by tomorrow.

if time allows I'll try to re-check on my side tomorrow

For my example I am working on I use formly-group instead of formly-field for the repeat section custom type. (AKA Table) I do not think it matters but wanted to make sure.
And the OnPush did not seem to speed things up, on my code base, just tested.
(But let me get that stackblitz complete example so we are all looking at the same thing I am seeing)

@aitboudad
I was able to strip everything out and make a basic example. You will see the load time performance on the stackblitz example.
https://stackblitz.com/edit/angular-ngx-formly-large-load?file=src%2Fapp%2Fapp.component.ts
I will start trying to figure out the what the cause is now, but my application has validation fields and other things besides the basics.

could try to comment FormlyForm::ngDoCheck and see if you'll notice some improvement

got it, replaced form.setControl in (field-form.ts#L91, field-form.ts#L95) calls which seems too expansive and the buildForm time decreased significantly from 700ms to 152ms.
    if (form instanceof FormArray) {
      if (form.at(<number> path) !== control) {
--        form.setControl(<number> path, control);
++        form.controls[path] = control;
      }
    } else {
      if (form.get(<string> path) !== control) {
--        form.setControl(<string> path, control);
++        form.controls[path] = control;
      }
    }

@aitboudad
No real difference disabling ngDoCheck, (Also I have OnPush changeDetection in this stack blitz)
After:
https://stackblitz.com/edit/angular-ngx-formly-large-load-v2
I added ngx-formly to stackblitz and disabled ngDoCheck. 20 Seconds to load form (After data is loaded).

Before: (Seems to be faster, don't know why)

Wow so much faster. First try. Need to look deeper but first try seems to be a lot faster.

Here is the updated example, with your changes. (FYI)
https://angular-ngx-formly-large-load-v3.stackblitz.io/
I am going to attempt to bring those changes into my application and test it with real data.

Note: how did you figure it out? Any tooling you used?

just chrome devtools, the performance graph shows me that setControl is the most called ones during _buildForm and took an average of 2ms for fieldGroup type.

I am going to attempt to bring those changes into my application and test it with real data.

just for checking, but the fix still need some extra work in order to be ready for production use.

I understand, just testing it out on dev. (We have local, dev, test, stage, prod, also everything requires regression and validation before we release lol so it wont be in prod for at least a few months)

OK so no over difference with the changes, in the application; however, it looks like the first part is faster.
I will look deeper into it, but overall yes it was faster in my example, but when testing on the real app it was still slow. I will add more the stackblitz example maybe something else is the cause.
Before:

After:

@thorgod check:

if formly-form is used inside a custom field type, if so, replace it with formly-field component.
if you call add method during build process of field array or comment the following line https://github.com/ngx-formly/ngx-formly/blob/master/src/core/src/lib/templates/field-array.type.ts#L46

@aitboudad
Thanks
No we dont have any to formly-form in a custom field type. (Double checked)
During the build process we don't use add.
The build step mimics the stack-blitz example. So I guess what I will do is slowly add each custom fields, validators, hidden fields, wrappers, polymorph field, and anything else to the stackblitlz -- to test each thing tell I see the slowdown. (could be anyone of those)

@aitboudad
I do call two functions on build
loadData. .subscribe(x => {
this.ngForm.resetForm();  //Reset form hack for switching forms.
this.fields = x.formGroups; //Set fields
 this.model = x.model;  //Sets model.
this.form.markAsPristine();
});

normally ngOnChanges should be called only once which not the case in your app, I think you should try find the root cause of those calls.

it all related to the way we construct the FormGroup which update updateValidity for each field, I've made several PRs (#1499, #1500, #1501, #1504) which solve some edge cases, left 2 or 3 PRs to get done with the loading time.
In V6 we'll remove FormGroup which I think will save an average of ~10% for a repeatable field.
Note: all those changes will fix the loading time and not the typing performance, I think the only way to solve typing performance is: onpush changeDetection or virtual list (we can talk about it once done with the first part).

@aitboudad  Thanks for the PR's I will take the master (looks like they are merged with master) and test it out this morning.
Its probably one thing causing it in my app, I hope to figure it out. Today I will add each part of the application to the stackblitz tell I figure out what is causing it.

OK I completely stripped out my application, no custom validators, only one field type static html a.  Still takes around 20 seconds to load after data loaded. (This is with the latest master with your PRs) It looks like the '_executeValidators' might be doing something.
Next step I will look at the JSON structure, and start removing stuff from the JSON being sent maybe its something with Hidden/Required/Min/Max ect.

could you try to apply the following changes https://github.com/aitboudad/ngx-formly/commit/6164dd42403d990f2ece57712539fb6442880423 and let me know if it fix the loading or not

Sure, I will do it right now

Wow yes its significantly faster 3sec (Probably even faster when compiled without debug)  before it was around 20 sec .  (Now time to add all revert all the code back in and test it then)

@aitboudad  Cool looking good, with all the back, its around ~7 Seconds from 20 seconds!
Here is the performance graph.

7 Seconds still too much but better than before :smile:

A note: I have a ngx formly custom wrappers for every field in my application.
What can I do to help on my end?

getting lunch be back in a hour.

using wrapper is not an issue, I don't think formly still cost much more time than is should be (the build part shouldn't exceed ~500ms in your case).

Let me know if there is something I can do on my end.
It will take sometime but I could make a stackblitz of my app portion that has ngx-formly, if you think that would be helpful?

can you provide me the runtime performance profiler of your project (that include the latest changes of formly) which you can save using the right click of the mouse

Actually it looks the same....so scrap my last comment.
Profile-20190401T132655.zip

the built form takes ~1.5s and the rest (5s) somehow are consumed by destroying fields which probably related to something wrong with the usage of formly.
continue your debugging until you found out the root cause of that.

OK sounds good I will keep removing stuff tell I find what it is.
I am using a wrapper to hide based on a condition could that be the cause?   (Well I figure it out, just guessing)
<div [style.visibility]="hidden">
        <ng-template  #fieldComponent></ng-template>
      </div>

try to find where you've overridden the generated field (using the spread operator for example or a getter), because the generated part of the field will be loosed.

I removed almost everything. Still getting 7 seconds, I will see if I can make a stackblitz example (Either today or tomorrow, because its so stripped down it should not be to hard to make) The build is fast =) Maybe its the debugger or something.

I updated the stackblitz with your changes and I think it matches closely to my application. (Tomorrow I will be adding my example JSON data / JSON Schema in that I was testing against)
https://angular-ngx-formly-large-load-v4.stackblitz.io/

@aitboudad
https://stackblitz.com/edit/angular-ngx-formly-large-load-v5
OK I was able to repredouce time it takes to load on stackblitz. (I am going to double check I have all your latest changes but 98% sure) Nothing is complex just very simple input box. (I have multiple types however, I changed them all reference the same type 'OperatorComponent' a simple input box.)
Few notes:
Also if you are looking for a job I work for 'Thermo Fisher Scientific', I could put in a good word, or slight chance we can open a position.
Would you like me to make an example for the documentation on how to use a more complex example of FieldArrayType, because I am sure there are a lot of people out there who want to use ngx-formly with tables? I would be also be happy to try and help move the FieldArray to its own module, it would be a good experience for me to learn. (Or at-least attempt)

now I have a clear idea, here is some additional changes that could improve the render time:

use virtual list here is an example which use 1000 fields: https://stackblitz.com/angular/pxggyvvxeand
apply this PR https://github.com/ngx-formly/ngx-formly/pull/1445/files#diff-d8598c62af5b27037ce9e85e1cd4591a, which enable lazy render
avoid using wrapper for operator which apparently you don't use.

name: 'operator',
component: OperatorComponent,
-- wrappers: ['label']
++ wrappers: []

Few notes:

leave the notes, until we get done with this issue :smiley:

Oh I use wrappers! That was just to simplify the example.  But I will make those changes.

Thanks for the help; however, overall around the same with the changes from the PR+Virtual List+Removing Wrapper. (Test with Master of ngx-formly) None the less I will test it on my app now.
https://stackblitz.com/edit/angular-ngx-formly-large-load-v5    (Sorry forgot to fork before changing)

you've missed the commit https://github.com/aitboudad/ngx-formly/commit/6164dd42403d990f2ece57712539fb6442880423 which is not yet part of master branch
here is the result: https://stackblitz.com/edit/angular-ngx-formly-large-load-v5-63d3yz
for repeatable field I've added an *ngIf:
    <div *cdkVirtualFor="let field of field.fieldGroup; let i = index;">
      <formly-group *ngIf="!field.hide"
        [field]="field" style="display:flex;">
      </formly-group>
    </div>

Ah thank you my bad on missing the  aitboudad@6164dd4 I did not know you wanted me to merge them all together.  I would of been happy to merge them just didn't get the memo.
Looking good I will test it out my application as well

Just a note with the experimental commit+master, it works but if I scroll to fast or navigate to a different page I get this error on my app.
ERROR RangeError: Maximum call stack size exceeded
    at Array.forEach (<anonymous>)
    at FormlyField.refsUnsubscribe (ngx-formly-core.js:1203)
    at<EMAIL_ADDRESS>(ngx-formly-core.js:1169)
    at callProviderLifecycles (core.js:22421)
    at callElementProvidersLifecycles (core.js:22389)
    at callLifecycleHooksChildrenFirst (core.js:22379)
    at destroyView (core.js:23441)
    at callViewAction (core.js:23567)
    at execEmbeddedViewsAction (core.js:23510)
    at destroyView (core.js:23439)

how much does it take now?

Sorry didn't get back on the speed with the virtual list+pr+aitboudad/ngx-formly@6164dd4.
In the application its significantly faster it takes around 7 seconds, without the changes 15-17 seconds. (Let me test without virtual list)
Profile-20190403T083139.zip

Removing virtual list, its around the same load time.
Thanks for the help! I will look at your merge fix(core): improve performance for FieldArrayType #1511  to see what else you did.

Sorry didn't get back on the speed with the virtual list

maybe you've missed :thinking:, IMO it should improve the speed.
All perf improvements are now published in v5.0.1, from 20s to 7s (using dev mode, so it should be less in prod env) is a huge step but I do believe that it can be improved much more than that.
The remaining part to improve is the render time, which depends on the number of components that are present in the dom, the following ways can fix that:

use the virtual list (1000 fields, https://stackblitz.com/angular/pxggyvvxeand)
use inline edit: https://stackblitz.com/edit/angular-bkawud
use a simple datatable with crud actions to opens the form on demand using dialog or a popover

further steps:

apply ngIf="field.hide" on all formly-field and formly-group to use lazy render.

Few notes:
Also if you are looking for a job I work for 'Thermo Fisher Scientific', I could put in a good word, or slight chance we can open a position.

Right now I'm not looking for a job but I would be happy to apply when time will allow, thanks anyway :gift:

Would you like me to make an example for the documentation on how to use a more complex example of FieldArrayType, because I am sure there are a lot of people out there who want to use ngx-formly with tables? I would be also be happy to try and help move the FieldArray to its own module, it would be a good experience for me to learn. (Or at-least attempt)

PR welcomed!

Thanks for the help! Going to test out a few of your suggestions but calling it quits after that. I am happy with what you were able to accomplish thanks again for the help.
Just to give you some overall context:
Originally it took 66 seconds to load a biggest example form.

40 Seconds Server Side

AWS C# Serverless Lambda
RDS Microsoft SQL Database

20 Seconds Angular.

I got it down to

1-2 Seconds Server Side

AWS C# Serverless Lambda
RDS Microsoft SQL Database

5-7 Seconds Angular. (Thanks to you)

Hi @thorgod, I just want to let you know that I've pushed a performance improvement in v5.5.12 release that may reduce the 20 Seconds Delay.
if you're still working on that project please give it a try.

using cdkVirtualFor calls onInit and onDestroy hooks repeatedly on scrolling. Is there any way to show large list but call onInit when the field appears once only?

@Hyperonic the better way is to use a simple datatable with a edit button to open the form on demand using dialog or a popover, rendering the entire form has a cost!

Hello, I am facing performance issues myself. Big forms, hooks I have all the good stuff,even typeing to the form field is really slow , any updates on this one?  :/

Hi @aitboudad
I am creating a table using fieldType array around 6000 fields are there and my page becoming unresponsive when we push the data  to [model]=[model] . Could you please help . What can be done .to improve the perfomance

Could you please help . What can be done .to improve the perfomance

see https://github.com/ngx-formly/ngx-formly/issues/2762#issuecomment-816828153

Could you please help . What can be done .to improve the perfomance

see #2762 (comment)

I tried using *cdkVirtualFor but it doesnot provide any effect on my application . The page still show unresponsive

@jainvandit25 please create a separate ticket with a an example that reproduce the issue, to see if we can provide some hints in order to improve the performance for your app.


How to run the examples -  ENOENT: no such file or directory

Do you want to request a feature or report a bug?
bug in examples or unsufficient documentation, to get them up and running.

What is the current behavior?

If the current behavior is a bug, please provide the steps to reproduce.
Steps taken:

Download webpack from the master-branch
I open cmd.exe as admin, cd to webpack-master root folder.
npm install
npm link webpack
npm run build:examples  --> Now I get:

What is the expected behavior?
running examples
If this is a feature request, what is motivation or use case for changing the behavior?
Please mention other relevant information such as the browser version, Node.js version, webpack version, and Operating System.
Win10 x64, node 9.5 , webpack 3.11

Since webpack and webpack-cli has been splitted into two projects, but the examples need webpack-cli to run:

Checkout webpack-cli
yarn link in webpack-cli
yarn link webpack-cli

But there is an new problem with it: https://github.com/webpack/webpack-cli/pull/278

Sorry, I am from the .NET side, what do you mean with:

yarn link in webpack-cli

It means:

git clone https://github.com/webpack/webpack-cli
cd webpack-cli
yarn link
cd to/your/project
yarn link webpack-cli

What it does is to create a symlink between webpack-cli and your project.
But you are using npm, in that case just replace yarn with npm

Thanks!
I did that now, but still get the error, perhaps of this mentioned by @sokra

Will be fixed with PR


Reveal Content on Next Button Click

Clicking the next button to reveal bullets or other content.

our current wip implementation added reveals to the first slide. that's breaking lots of tests, so we should only add reveals to the first slide in the reveal-specific tests. it'll be easier to modify just those tests than to clean up everything else.


Add resize function and method

Would be nice to have an analogous function and method to NumPy's resize.
ref: https://docs.scipy.org/doc/numpy/reference/generated/numpy.resize.html
ref: https://docs.scipy.org/doc/numpy/reference/generated/numpy.ndarray.resize.html

Looks like there is some work in PR ( https://github.com/cupy/cupy/pull/1802 ).

The other thing that might come in handy at a Cython implementation level would be to leverage some form of realloc so as to efficiently increase the memory allocated (and copy over data if a new memory block is needed).


Sine channel

Flow in a sinusoidal channel (MPCD geometry) is being worked on, and will be targeted for HOOMD 3.x.

Closed via #53


How-to add more sites to the Uptime graph??

Hi Please may you help me understand where to edit to enable the Uptime graph to have the same sites that I've specified in the config.yml file
Currently no matter what I do on my Pi it's always locked ot the same 4 sites.
I'd like it to reflect all the sites. Hope someone can help me?
The files I've edited are:
config.yml which has 15 sites under monitoring_ping_hosts:
monitoring_ping_hosts:  # [URL];[HUMAN_READABLE_NAME]

https://www.google.com/;Google
https://mail.google.com/;Gmail
https://<IP_ADDRESS>/;Cloudflare
https://somethign.org.za/;a-Website
https://anothersite.com/;xyz-applianc
https://github.com/;Github
https://sage.company.online/;Sage_X3
https://claims.company.online/;Sage_300_People
https://the-eye.person.org/;RMM_IIOT
https://the-eye.company.online/;RMM_TacticalMesh
https://godmode.company.online/;TacticalRMM
https://meshcentral.person.org/;Personal_Mesh_SVR
https://stock.tools.company.online/;Stock_system
https://my.tools.company.online/;Cloudron
https://personhome.person.org/;my_HOME

The intention was to have them appear in both the http graphs below the speedtracker graphs and in the Uptime graph.
I've tried deleting all containers with [
docker kill $(docker ps -aq) ;
docker rm $(docker ps -aq) ;
docker rmi $(docker image ls)
]
and then rerunning the anisible playbook to no avail.
Is there anything I can upload here to provide more context?
Hope someone can help me understand this issue better.
Tx

Hi @tim0n3,
I can try to help.
I just tried with the following in config.yml:
monitoring_ping_hosts:  # [URL];[HUMAN_READABLE_NAME]
  - http://www.google.com/;google.com
  - https://github.com/;github.com
  - https://www.apple.com/;apple.com
  - https://mail.google.com/;Gmail
  - https://<IP_ADDRESS>/;Cloudflare
  - https://nytimes.com/;NYTIMES
  - https://www.reddit.com/;Reddit

And after running ansible-playbook main.yml -K everything was fine for me.
To see where your problem is, some basic questions:

Do you see the targets anywhere? In the Speedtracker graphs or in the Uptime graphs?
If you just don't see them in Uptime, then have a look at this issue https://github.com/geerlingguy/internet-pi/issues/510 and change the time range to 5 minutes and wait a bit if you see anything.

If you can't see any targets, look for the targets in Ping and Prometheus and come back with some info. If you installed on <IP_ADDRESS>, this would be the following. For Ping:  http://<IP_ADDRESS>:9115/ . For Prometheus: http://<IP_ADDRESS>:9090/targets?search= .

Hi @tim0n3,
I can try to help.
I just tried with the following in config.yml:
monitoring_ping_hosts:  # [URL];[HUMAN_READABLE_NAME]
  - http://www.google.com/;google.com
  - https://github.com/;github.com
  - https://www.apple.com/;apple.com
  - https://mail.google.com/;Gmail
  - https://<IP_ADDRESS>/;Cloudflare
  - https://nytimes.com/;NYTIMES
  - https://www.reddit.com/;Reddit

And after running ansible-playbook main.yml -K everything was fine for me.
To see where your problem is, some basic questions:

Do you see the targets anywhere? In the Speedtracker graphs or in the Uptime graphs?
If you just don't see them in Uptime, then have a look at this issue No datapoints in Uptime #510 and change the time range to 5 minutes and wait a bit if you see anything.
If you can't see any targets, look for the targets in Ping and Prometheus and come back with some info. If you installed on <IP_ADDRESS>, this would be the following. For Ping:  http://<IP_ADDRESS>:9115/ . For Prometheus: http://<IP_ADDRESS>:9090/targets?search= .

Thanks a million.
I'll try with the K switch in my anisble command shortly.
Currently my workaround is to remove the blackbox container and images after updating the config.yml hosts section:
docker kill blackbox-id ;\
docker rm blackbox-id;\
docker rmi blackbox-image-id ;\
ansible-playblook main.yml

This seemed to fix the issue however I'll definitely try the k switch.

Hi @tim0n3,
I can try to help.
I just tried with the following in config.yml:
monitoring_ping_hosts:  # [URL];[HUMAN_READABLE_NAME]
  - http://www.google.com/;google.com
  - https://github.com/;github.com
  - https://www.apple.com/;apple.com
  - https://mail.google.com/;Gmail
  - https://<IP_ADDRESS>/;Cloudflare
  - https://nytimes.com/;NYTIMES
  - https://www.reddit.com/;Reddit

And after running ansible-playbook main.yml -K everything was fine for me.
To see where your problem is, some basic questions:

Do you see the targets anywhere? In the Speedtracker graphs or in the Uptime graphs?
If you just don't see them in Uptime, then have a look at this issue No datapoints in Uptime #510 and change the time range to 5 minutes and wait a bit if you see anything.
If you can't see any targets, look for the targets in Ping and Prometheus and come back with some info. If you installed on <IP_ADDRESS>, this would be the following. For Ping:  http://<IP_ADDRESS>:9115/ . For Prometheus: http://<IP_ADDRESS>:9090/targets?search= .

Thanks a million.
I'll try with the K switch in my anisble command shortly.
Currently my workaround is to remove the blackbox container and images after updating the config.yml hosts section:
docker kill blackbox-id ;\
docker rm blackbox-id;\
docker rmi blackbox-image-id ;\
ansible-playblook main.yml

This seemed to fix the issue however I'll definitely try the k switch.

can confirm the -K switch worked, too.
thanks @martinbrose

@tim0n3, glad it's solved.
To be honest, I wasn't expecting the -K flag to make the difference, but happy if that's what made the difference.
It's the solution to a few other issues, so maybe it's needed here too...
Enjoy!

For the sake of completeness I did more testing and observed that I was too impatient.
The uptime graph will update if you either leave it for a day or change your window period and ctrl-shift-R your browser tab.
If that doesn't work then editing the widget and running the query manually after about 5 minutes seems to update it.
I will keep playing with it but so far it's been working with either of these for me on a RaspberryPi 4B 4G running the headless version of raspiOS arm64

Thanks for sharing this additional detail @tim0n3. That's more in line with what I was expecting... 😃


add a trigger for false status ServiceBinding at the end of SI reconc…

This PR is a

[x] Feature Implementation
[ ] Bug Fix
[ ] Documentation

What this PR does / why we need it:
There are situations when Service Instance and Service Binding are applying at the same time (used e.g. in automation scripts). In those cases usually, ServiceBinding will end with fail status because of a lack of ServiceInstance.
ServiceBinding will be reconciled again because of re-sync of the informer, the default value is set to 5 min, but if the user sets the resyncInterval value higher, then re-reconcilation will be made later.
The solution is to trigger each ServiceBinding with failed status to re-reconciliation if ServiceInstance belonging to this SB will end with success.
This PR introduces such a change.
Please leave this checklist in the PR comment so that maintainers can ensure a good PR.
Merge Checklist:

[ ] New feature

[ ] Tests
[ ] Documentation

[ ] SVCat CLI flag
[ ] Server Flag for config

[ ] Chart changes
[ ] removing a flag by marking deprecated and hiding to avoid
breaking the chart release and existing clients who provide a
flag that will get an error when they try to update

/ok-to-test

/test pull-service-catalog-test-integration

/test pull-service-catalog-test-migration

/test pull-service-catalog-test-integration

/test continuous-integration/travis-ci/pr

/test pull-build-all-images-for-s390x

/test pull-service-catalog-test-integration

/approved

/approve

/lgtm


Source bundler dependencies without using ::Bundler::Definition#specs

Fixes https://github.com/github/licensed/issues/53
This PR updates the bundler source to support finding dependencies in the Bundler source without using Bundler's internal specification materialize logic.  It largely aims for unchanged function, though there are two changes called out below.
How
Custom logic is added to the bundler source to enumerate specifications that is overall simpler and more straightforward to read through and debug despite having more custom logic in the source.
licensed requires that bundle install was already successfully run for dependencies to be enumerated.  As a result, we know that all (*) specifications can be found at ::Bundle.specs_path.  Both Gem::Specification and ::Bundler::Specification support #full_name so we can find the specification using ::Bundle.specs_path.join("#{spec.full_name}.gemspec").
(*) - There are two exceptions

The bundler gemspec itself.  Even when bundler is an explicit Gemfile dependency, it still does not put it's own gemspec under ::Bundler.specs_path.  More on this in a bit
Gemfile dependencies from local gemspecs.  In this scenario we actually don't need to do much.  The realized specification can be obtained from the un-realized specification through spec.source.specs.first, where source represents the gemspec itself.

It's worth calling out that obtaining the bundler Gem::Specification is special cased.  To support the self-contained executable scenario from https://github.com/github/licensed/issues/50, licensed can't use the currently loaded ::Bundler gem API because it references the gem from the self-contained executable.  It has no knowledge of the host machines Bundler state or installed location.  Instead licensed runs bundler as a separate process on the host machine to find the bundler gem path which is then used to find the specification.
Functional changes

Bundler is no longer included as a dependency unless it's explicitly called out in the Gemfile.  If the gem hasn't been specified in the Gemfile it's considered a development dependency and filtered.

/cc @mlinksva Is this 👍 considering it's likely that bundler is generally assumed to be on the machine and doesn't need to be listed in the Gemfile even when it's a runtime dependency.

Configuration overrides for groups to exclude from dependencies is allowed.  Previous functionality is maintained with the default values :development and :test.

@jonabc I think that's fine. The thing that would make it not fine (IIUC) would be if there are licensed users who have bundler as a non-explicit but actual runtime dependency and therefore ought be checking/documenting its license but wouldn't be with this change. Assuming that bundler is installed without specifying it seems like a bad idea that would eventually bite such a user anyway, thus an edge case that we shouldn't worry about. Sound right?
Also, I looked at the changes here and don't understand well enough to see why without this PR, licensed includes bundler as a dependency even if it is not specified. Just out of curiosity, where is this PR filtering out bundler unless it is explicitly included?

The thing that would make it not fine (IIUC) would be if there are licensed users who have bundler as a non-explicit but actual runtime dependency and therefore ought be checking/documenting its license but wouldn't be with this change.

Yea, that situation is what I'm concerned about as well.

Assuming that bundler is installed without specifying it seems like a bad idea that would eventually bite such a user anyway, thus an edge case that we shouldn't worry about.

👍 Agreed that assuming anything is installed without specifying it is a bad idea.  My concern is that I don't know if it's edge case or if it's common.  Bundler is the de facto package manager for ruby and is installed almost everywhere - it seems pretty easy to assume that it's going to be available at runtime.

Also, I looked at the changes here and don't understand well enough to see why without this PR, licensed includes bundler as a dependency even if it is not specified.

I've looked through the bundler source a few times and I'm still not sure I understand it.  I think bundler might always add itself with type == :development if not otherwise specified in a Gemfile or gemspec.

Just out of curiosity, where is this PR filtering out bundler unless it is explicitly included?

I added some review comments trying to explain a little better how dependencies get filtered out, with specific examples of how bundler might be filtered when it's a development dependency.

As CI highlighted, bundler doesn't always know where bundler is located.
I switched to using gem specification and Gem::Specification.from_yaml to create the bundler specification.  This should be safe and reliable - bundler is always used from the current global gem list that is also used for gem specification.
It looks like CI is green with that change

And finally, to highlight the reason behind the PR.  With these changes I'm able to build executables for licensed that can be used for all dependency sources, in any environment, whether ruby is present or not 🎉 🎉
➜  ./licensed list -c test/fixtures/config/.licensed.yml
Displaying dependencies for licensed-yml
  rubygem dependencies:
    Found addressable (2.5.2)
    Found bundler (1.16.1)
    Found dotenv (2.4.0)
    Found faraday (0.15.2)
    Found licensee (9.9.1)
    Found multipart-post (2.0.0)
    Found octokit (4.8.0)
    Found pathname-common_prefix (0.0.1)
    Found public_suffix (3.0.2)
    Found rugged (0.27.1)
    Found sawyer (0.8.1)
    Found thor (0.20.0)
    Found tomlrb (1.2.7)
  * rubygem dependencies: 13

Assuming that bundler is installed without specifying it seems like a bad idea that would eventually bite such a user anyway, thus an edge case that we shouldn't worry about. Sound right?

I agree with this assessment.  In order to gem install such a gem, there would have to be something in the dependency tree that depends on it (otherwise you just wouldn't be able to install that gem).  Today, the only things that can be implicitly depended upon and not installed are things that ship with Ruby's standard library.

@benbalter can you take a look at this?  I'd ❤ to be able to attach executable packages along with each licensed release.

Merging.  Can address any issues if/as they come up.


Training on 2014 + 2017 COCO doesn't make sense

Nice work with the repo. However, I noticed that you seemed to have combined the 2014 and 2017 data to train. However, if you read the COCO website carefully, you will find that the 2014 and 2017 data are identical (exactly the same number of total images). It's just that in 2017, they partitioned most of the images to be in train and only 5000 to be in the validation set.
If you train on 2014 train+val and 2017 train, you have essentially trained on the test data, so all metrics at that point are meaningless.
This is exactly the reason why your "test" set loss plots for 2014+2017 data show the test loss to continue to go down with epochs without ever entering a regime of being overtrained to your test dataset.

You are right. At the time I coded this project, I didnt know it. I forgot to put it out. Thanks for reminding


Player Missing Chop Settings

I'm noticing this error/warn message that pops up when a player respawns after a death.

[treechop/]: Player ServerPlayer['User'/35603, l='ServerLevel[world]', x=-1470.89, y=13.00, z=-765.30, removed=KILLED] is missing chop settings

I replaced the username and world for privacy
This warning always pops up AFTER a player clicks respawn.
I have a few mods on here but the ones that affect dying and respawning is PlayerRevive, I also have keepInventory after death set to true.
I saw on issue opened about this but never resolved, I apologize if this has already been dealt with.
Thanks in advance!
EDIT
Also wanted to add that this hasn't effected anything else in terms of mechanics or gameplay. It is an error that I just wanted to check to see if it can be explained. All players can still access the treechop menu.

Hey, thanks for reporting. What versions of Minecraft & TreeChop is this happening on?

Thanks for looking into this!
It's a 1.19.2 MC server, version of HT Tree chop is...
TreeChop-1.19.2-forge-0.17.8a.jar

Sorry, it's been fixed in 1.19.4+ but not yet for 1.19.2. It'll come

Also wanted to add that this hasn't effected anything else in terms of mechanics or gameplay. It is an error that I just wanted to check to see if it can be explained. All players can still access the treechop menu.

Thanks for sharing - it's possible that player chop settings are getting reset on death, but I think that's the worst that could happen

Fixed in 1.19.2 as of treechop 1.18.3


Linking Journal entries with OtF formulas

Could it be possible? ;)

Yes... and it is done.   You will soon be able to drag and drop Actors, Items, Journal Entries and Rolltables into an input field and it will automatically create an OtF formula that links back to the original.


Missing information for 1.2 source?

Using the given command to download the RoCM 1.2 source does not work:
$ repo init -u https://github.com/RadeonOpenCompute/ROCm.git -b roc-1.2.0
curl: (22) The requested URL returned error: 404 Not Found
Server does not provide clone.bundle; ignoring.
fatal: Couldn't find remote ref refs/heads/roc-1.2.0
Unexpected end of command stream

There is no roc-1.2.0 branch, and this repo doesn't contain anything interesting. Maybe someone could answer where to get all of the sources.

The command I posted is taken directly from the readme

Which readme?

https://github.com/RadeonOpenCompute/ROCm/blob/master/README.md
On Thu, 25 Aug 2016 at 15:09, almson<EMAIL_ADDRESS>wrote:

Which readme?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/RadeonOpenCompute/ROCm/issues/26#issuecomment-242400028,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEMf7P8rIuDdlnuI5W30dhocXJBj7FJcks5qjaIggaJpZM4Js8gt
.

Ah, yes. Someone from AMD will have to fix that. Looks like they meant to make the other repos as submodules of this repository.

This has been corrected. A ROCm 1.2.0 branch is now available for use with the repo command.

Thanks!
On Thu, 25 Aug 2016 at 16:27, James Edwards<EMAIL_ADDRESS>wrote:

This has been corrected. A ROCm 1.2.0 branch is now available for use with
the repo command.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/RadeonOpenCompute/ROCm/issues/26#issuecomment-242429248,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AEMf7NPLR9WlfXqaYQP-U9g9KimSdqGpks5qjbR6gaJpZM4Js8gt
.

Hmmm.
From https://gerrit.googlesource.com/git-repo
f97e72e..39252ba  master     -> origin/master
203153e..39252ba  stable     -> origin/stable

[new tag]         v1.12.34   -> v1.12.34
Get https://github.com/RadeonOpenCompute/ROCm.git
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404 Not Found
Server does not provide clone.bundle; ignoring.
remote: Counting objects: 138, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 138 (delta 0), reused 0 (delta 0), pack-reused 135
Receiving objects: 100% (138/138), 48.29 KiB | 0 bytes/s, done.
Resolving deltas: 100% (37/37), done.
From https://github.com/RadeonOpenCompute/ROCm
[new branch]      from-andres -> origin/from-andres
[new branch]      gh-pages   -> origin/gh-pages
[new branch]      master     -> origin/master
[new branch]      roc-1.0.0  -> origin/roc-1.0.0
[new branch]      roc-1.1.0  -> origin/roc-1.1.0
[new branch]      roc-1.1.1  -> origin/roc-1.1.1
[new branch]      roc-1.2.0  -> origin/roc-1.2.0
[new tag]         roc-1.0.0  -> roc-1.0.0

Doing a repo sync then fails in various ways:
$ repo sync
Fetching project rdma-perftest
Fetching project HIP-Examples
Fetching project HIP
Fetching project clang
fatal: Invalid refspec '+refs/heads//refs/tags/roc-1.2.0:refs/remotes/pctools-github//refs/tags/roc-1.2.0'
fatal: Invalid refspec '+refs/heads//refs/tags/roc-1.2.0:refs/remotes/roc-github//refs/tags/roc-1.2.0'
fatal: Invalid refspec '+refs/heads//refs/tags/roc-1.2.0:refs/remotes/roc-github//refs/tags/roc-1.2.0'
fatal: Invalid refspec '+refs/heads//refs/tags/roc-1.2.0:refs/remotes/pctools-github//refs/tags/roc-1.2.0'
.....

There is an extra '/' in the refspec, I'll get it fix in a sec.

Seems like Adrian beat me to it.

Yes this has been fixed.

From https://gerrit.googlesource.com/git-repo
f97e72e..39252ba  master     -> origin/master
203153e..39252ba  stable     -> origin/stable

[new tag]         v1.12.34   -> v1.12.34
Get https://github.com/RadeonOpenCompute/ROCm.git
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Dload  Upload   Total   Spent    Left  Speed
0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (22) The requested URL returned error: 404 Not Found
Server does not provide clone.bundle; ignoring.

(Please let me know if there's a better way to report this kind of problem)

Hey chisaj,
Can I trouble you to create gist with your full console log for this command:
https://gist.github.com/
If that is an error fetching clone.bundle it should be benign. The clone.bundle is used to optimize downloads of very large projects like the Android source code.
In this case you will see repo init has an exit code of 0 (success).

For a bit more reference:
http://stackoverflow.com/questions/23300245/what-to-do-about-curl-clone-bundle-error-on-aosp-repo-sync

gist here: https://gist.github.com/chrisaj/e3a77e3b7145faf68413733db362c829

That is the case I described above. Repo init actually completed successfully and the exit code status should be '0'.
You can proceed to run 'repo sync' to fetch all the code.

Thanks. I'm running the sync now. Seems to be working so far.


Record Batch Writer

Description
This PR is part of the larger PR #523. Specifically an implementation of a record batch writer. The implementation is a composite of the json implementations from this crate and kafka-delta-ingest. The main addition is some logic to split a record batch into partitions according to the table partitioning.
Related Issue(s)
towards: #509
Documentation

@houqp - I did spend some time thinking on how to consolidate these namespaces, since having two namespaces with essentially the same name seems like a bad idea. Not only the namespace, but there is also a bunch of logic shared between the two writer implementations. In order to consolidate this we could maybe move the json writer and record batch writer into the same namespace and expose the same API via trait / generic. My guess would be, that the most prominent change would be to use the partitioning logic from the RB writer also in the json case. I was a bit hesitant to do this directly for being unsure about the performance implications. For larger data sizes, the sorting operations used in the RB writer could be fairly expensive, while the partitioning in the json writer seems quite clean and straight froward to me.
In any case, I am more then happy to try and consolidate these within this PR based on your suggestions.

Not only the namespace, but there is also a bunch of logic shared between the two writer implementations. In order to consolidate this we could maybe move the json writer and record batch writer into the same namespace and expose the same API via trait / generic.

I agree this would be the ideal approach :+1:

My guess would be, that the most prominent change would be to use the partitioning logic from the RB writer also in the json case. I was a bit hesitant to do this directly for being unsure about the performance implications.

I recommend we leave the duplication and optimization work as follow ups so we can focus on coming up with the right abstraction and interface in this PR. Sometimes a little bit of code duplication is not a bad thing :)

Maybe one way to have both functionalities is to add an additional method flush_and_commit to both writers?

That's a good idea to keep both writers consistent too. And we can leave the flush method to only write the parquet files and return the actions. Curious if @mosyp and @xianwill have any option on this.

@houqp - When trying to consolidate the writers a bit, I stumbled across another I believe significant difference in how the writers are designed. The json writer uses the add_file method on the DeltaTransaction to write files. The json writer from kafka-delta-ingest as well the RecordBatchWriter make use of the storage backend directly. The RecordBatchWriter is generally modelled more against the the json implementation from the kafka crate. To make the writer APIs more harmonized i think the writers doing the writing the the only feasible alternative, since in the envisioned usage within datafusion having the transaction available in all writers seems quite cumbersome, if not prohibitive.
As such I am unsure if we would want to keep the add_file method on the transaction implementation - to me this might get a bit confusing. Additionally the add_file method does not seem to compute file statistics, I pulled that logic as well from the kafka crate... Just wanted to make sure before going ahead and removing it.

@roeap I think what you proposed makes total sense :+1:  The add_file abstraction was probably added when we don't have a good writer abstraction. It's a good idea to fully decouple data file IO and table log metadata IO.

After looking a bit into harmonizing the implementations, it turned out that the required adjustments ran much deeper than hoped. So I went for an easier path and migrated the Json implementation from kafka-delta-ingest. Since the record batch implementation was also modelled against that implementation they were already somewhat similar. Still some cleaning up to do, but hope this is going the right way.

leaving it open for the weekend in case others want to chime in :)

Thanks @roeap ! This is one big milestone :D


Route arguments not properly parsed

Hi, based on the documentation, if i've the following route
'myself(/:opt(/:opt2))': 'displayMyself'

The function that handles this route is defined as (yes this is es6)
displayMyself(tab, path){
    console.info(tab,path);
}

Here are the arguments i receive based on the url hash i give

Url hash
tab
path

#myself
null
null

#myself/titi
titi
null

#myself/titi/tata
titi
/tata

Why do i have a / in front of tata? Based on the documentation shouldn't i get just tata ?
I think that there is a parsing issue here.

The proper syntax is myself(/:opt1)(/:opt2).
In the future, please try StackOverflow, the mailing list, or the gitter channel for debugging help.

@akre54 We might want to add that example to the docs, this trips me up as well.

Definitely. There aren't enough routing examples in general.


Add external link to campaign details

Closes #692

       ExternalUrl = campaign.ExternalUrl;

       ExternalUrlText = campaign.ExternalUrlText;

????

Looks good to me, @MisterJames or @mheggeseth can we get a second set of eyes before we accept

Looks like both this PR and #714 have migrations. One of these (whichever is merged last) will need to rebase and recreate the migration to ensure the model is in sync.

@dpaquette I just merged the other so you have been chosen to have the honor of the rebase and recreate migration - thanks in advance for doing that 😄

Yay! I win! I will do that later tonight


[BUG] all_old_new_renamed_files Gets all files renamed files from history

Is there an existing issue for this?

[X] I have searched the existing issues

Does this issue exist in the latest version?

[X] I'm using the latest release

Describe the bug?
When getting all_old_new_renamed_files, a list of all previous renamed files is listed, even though the changes have been pushed to main.
To Reproduce
Beginning File Structure:
deploys
    - example.tfvars
    - es.tfvars
    - noceng.tfvars

Change file name example.tfvars to example2.tfvars
Run github action

- name: Save Changed tfvars Files
   id: files
   uses<EMAIL_ADDRESS>   with:
     files: |
       deploys/*.tfvars
     include_all_old_new_renamed_files: 'true'

- name: Print renamed files
  run: |
  echo "all_old_new_renamed_files=${{ steps.files.outputs.all_old_new_renamed_files }}"
  echo "only_renamed_files=${{ steps.files.outputs.renamed_files }}"

Check output

all_old_new_renamed_files=deploys/example.tfvars,deploys/example2.tfvars deploys/es1.tfvars,deploys/es.tfvars deploys/es.tfvars,deploys/es1.tfvars deploys/netops_observability.tfvars,deploys/noceng.tfvars

only_renamed_files=deploys/example2.tfvars

Change file name back from example2.tfvars to example.tfvars and run Action
Check output

all_old_new_renamed_files=deploys/example.tfvars,deploys/example2.tfvars deploys/example2.tfvars,deploys/example.tfvars deploys/es1.tfvars,deploys/es.tfvars deploys/es.tfvars,deploys/es1.tfvars deploys/netops_observability.tfvars,deploys/noceng.tfvars

only_renamed_files=

What OS are you seeing the problem on?
ubuntu-latest or ubuntu-20.04
Expected behavior?
Step 3:
all_old_new_renamed_files=deploys/example.tfvars,deploys/example2.tfvars

only_renamed_files=deploys/example2.tfvars

Step 5:
all_old_new_renamed_files=

only_renamed_files=

Relevant log output
changed-files
   Retrieving changes between ### (main) → ### (PLAT)

Anything else?
No response
Code of Conduct

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

My be similar to https://github.com/tj-actions/changed-files/issues/972 but already using latest version.

@twcchu Curious are you making the changes (rename) in a PR that hasn't been merged to the base branch ?
Example

Branch (main) ← PR (my-feat) [Rename 1, Rename 2, ...]

From your request, I assume you are trying to get renamed file for the last change
i.e

Change file name back from example2.tfvars to example.tfvars and run Action

Which would output

all_old_new_renamed_files=deploys/example.tfvars,deploys/example2.tfvars

To achieve this you can ideally compare the last remote commit to the current commit which included the rename from example2.tfvars back to example.tfvars
- name: Get Changed tfvars Files
   id: files
   uses<EMAIL_ADDRESS>   with:
     files: deploys/*.tfvars
     include_all_old_new_renamed_files: true
     since_last_remote_commit: true

This branch was previously merged with main and is up to date with the main branch.
I added since_last_remote_commit: true and renamed the file to example2.tfvars again, but I still get
all_old_new_renamed_files=deploys/example.tfvars,deploys/example2.tfvars deploys/es1.tfvars,deploys/es.tfvars deploys/es.tfvars,deploys/es1.tfvars deploys/netops_observability.tfvars,deploys/noceng.tfvars

only_renamed_files=deploys/example2.tfvars

I merged the previous PR into main and created a new PR renaming the file from example2.tfvars to example.tfvars.
This is the output:
all_old_new_renamed_files=deploys/example2.tfvars,deploys/example.tfvars, deploys/example.tfvars,deploys/example2.tfvars deploys/es1.tfvars,deploys/es.tfvars deploys/es.tfvars,deploys/es1.tfvars deploys/netops_observability.tfvars,deploys/noceng.tfvars

only_renamed_files=deploys/example.tfvars

It shows that deploys/example2.tfvars,deploys/example.tfvars was renamed in addition to all of the previous merges.
Relevant debug output:
##[debug]Set output target_branch = main
##[debug]Set output current_branch = PLAT
##[debug]Set output previous_sha = 5560070 ##latest commit on main branch
##[debug]Set output current_sha = 8e2a92b
...
/usr/bin/git diff --diff-filter=D --name-only 5560070...8e2a92b

@twcchu Given that there are missing information to debug this I’ll recommend creating a public repository which replicates the issue with a minimal setup.

I believe the output is correct since the git diff is between the main (target) branch and the current commit. Is there a particular reason why you want this to exclude the rename from the output

@twcchu Yep I was able to replicate this

@twcchu This should now be available in the latest release

Great! Thank you!


fix verification scripts to point to repository/

Signed-off-by: Asra Ali<EMAIL_ADDRESS>
Summary

Allows you to verify repository/ rather than a repostiory formatted as ceremony/$(date)

Ticket Link

Fixes
Release Note

YES! great point. this is a good default for verification.


Fix #1866

Deprecated $db->getEntityManager() and refactored the codebase that used that method.

Instead of using the \ORM facade, shouldn't we be using \Core::make('database/orm') or an equivalent of that? I had thought the intention going forward was to do our best to avoid the Facade's as dependencies littered throughout the classes and to inject them instead via our application container. But to me if we do need to rely on a facade, \Core seems like the one to use.

Is there a reason we are caching entity managers? It's my understanding that an entity manager should be ephemeral, it should exist as long as you're managing an entity and no longer. Keeping the entity manager cached might keep memory usage high..
I would say we should go farther than this. Why not deprecate the ORM facade as well and start advocating the proper method of managing an entity manager. IMO the ORM facade was added at a time when we were trying to match version 6 functionality in version 7 much more closely, I think we should be removing these extra functionalities and advocating for better design while enabling ease of use with the DI container:

Make Concrete\Core\Database\EntityManagerFactory::create accept an optional context parameter that overrides the existing context passed on construct and deprecate the construct one. I don't see a reason for having the context be global

Make Concrete\Core\Database\EntityManagerFactory have another method for creating based on a package object.
 public function createWithPackage($connection, Package $package)
 {
     $context = "pkg_{$package->getPackageHandle()}";
     return $this->create($connection, $context);
 }

Bind a default Concrete\Core\Database\EntityManagerFactory, shared or not
 $app->bind(EntityManagerFactory::class, function($app) {
     $path = DIR_APPLICATION . '/' . DIRNAME_CLASSES;
     return $app->build(EntityManagerFactory::class, [$path]);
 });

Bind a standard factory closure for creating an entity manager based on the default bound connection:
 $app->bind(EntityManager::class, function($app) {
     $factory = $app->make(EntityManagerFactory::class);
     $connection = $app->make(Connection::class);
     return $factory->create($connection);
 });

 $app->bind(EntityManagerInterface::class, EntityManager::class);

Deprecate the existing manager and make it stop caching entitymanagers
 /**
  * @deprecated use $app->make(EntityManagerInterface::class)
  */
 class DatabaseManagerORM extends LoggerAwareInterface
 {

     protected static $app;

     public static function setApplication(Application $app)
     {
         static::$app = $app;
     }
     public function getEntityManagers()
     {
         static::$app['logger']->debug('DatabaseManagerORM is deprecated.');
         return [];
     }

     public static function makeEntityManager(Connection $connection, $context = null)
     {
         static::$app['logger']->debug('DatabaseManagerORM is deprecated.');
         return static::$app[EntityManagerFactory::class]->create($connection, $context);
     }
 }

Lastly, create a legacy database service provider that registers deprecated class shims:
 public function register()
 {
     // Bind an application instance to the deprecated ORM manager to shim legacy functionality
     DatabaseManagerORM::setApplication($this->app);
 }

So, now what does this look like in the wild:

Getting an entity manager based off of the default connection from the application:
  $manager = $app->make(EntityManager::class); // Or \Core::make(EntityManager::class)

Getting an entity manager with DI
  public function __construct(EntityManagerInterface $manager)
  {
      // Now I have an entity manager instance based off of the default connection class (see step 3) thanks to DI container magic
      $manager->getRepository(MyEntity::class);
  }

Getting a custom entity manager for your custom connection
  $entity_manager_factory = $app->make(EntityManagerFactory::class);
  $entity_manager = $entity_manager_factory->create($custom_connection);

Getting a custom entity manager for your package
  $entity_manager_factory = $app->make(EntityManagerFactory::class);
  $entity_manager = $entity_manager_factory->createWithPackage($app['database']->connection(), $package);

Thoughts?

It would be fine to do some benchmark: I totally agree that entity managers are ephemeral, but if it takes 1 second to initialize an entity manager, and I have to use it a few hundred of times per call, caching starts being a needing (much like we cache pages and blocks).

@mlocati fair point, we should definitely pay close attention to performance here. In the case that it's more performant to keep a single entity manager around, we can do that by simply sharing EntityManager::class.
Local tests on a extremely slow webserver show about 80ms added to create 1,000 factories and entity managers, less if I tweak the existing factory a little bit. Comparatively, it takes 8ms to call $app->make() 1000 times when the entity manager is shared.

Yeah, I'm fine with the idea of refactoring it further, I personally had no idea that you are planning to get rid of the facades.
For the creation part, the thinking behind that is exactly like @mlocati points out, just creating it once and having it accessible from everywhere.
I have also faced some situations where there was a need for a shared entity manager. One example of this kind of situation is this:
https://github.com/mainio/c5pkg_symfony_forms/blob/master/src/Mainio/C5/Symfony/Form/Extension/Concrete5/DataTransformer/FileToIntegerTransformer.php
If we would create a new instance of the entity manager there, it might cause Doctrine exeptions because the code relying on that method is waiting for the returned file object from the reverseTransform() to be one managed by the same entity manager that the related model is managed by.
An example of using that in action is here:
https://github.com/mainio/c5_symfony_forms_example/blob/master/controllers/single_page/dashboard/symfony_forms_example/entities.php#L77-L81
In this particular situation, the entity manager instance could be of course created during the handing but just saying if there is e.g. some core method returning an instance of an entity manager managed object to some package, it might lead to confusing situations.

@ahukkanen that is because you are using ->persist and not ->merge. You should be using ->merge to convert an entity to an entity managed by your entity manager.

@KorvinSzanto The $car object in that example is not the problem. It is the File object that is automatically attached to the entity by the form object.
I'm not 100% sure but I think that just changing the call to merge() would not work here since it's not being called to the method itself.
Or maybe the file object could be retrieved before persisting and merged to the entity manager but then again, that makes up more messy code...

I don't think it would be a good idea to have the entity attached to two entity managers at the same time (if doctrine even allows that).

@ahukkanen I'm not sure what you mean by "called to the method itself", can you give it a shot and give real reasons why it is wrong? I have quite a bit of experience with ORM from multi-threaded languages and merging is not some foreign concept, this is absolutely how this is intended to be used.

I don't think it would be a good idea to have the entity attached to two entity managers at the same time (if doctrine even allows that).

Take a look at the link I gave and the documentation for the merge method before poopooing the idea. The docs clearly state that it returns a new instance that is attached to the local entity manager, it does not change the object you pass it. That means you cannot just call $entitymanager->merge($entity) you have to store the result: $local_entity = $entitymanager->merge($entity).

@KorvinSzanto Not trying to "poop" any ideas here, just bringing up some possible problems.
But yeah, cool if merge() works in this case, I just quickly glanced at the docs and I thought it only applies to the object that you call the merge() for, i.e. not any associated objects.
If this is the case, I don't see any problems with using separate EMs.

And just for clarification, I read this from the doctrine docs:
"The state of the passed entity will be merged into a managed copy of this entity and this copy will subsequently be returned."
http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html#merging-entities
And it actually I think it reads there that the merging is only cascaded to the related entities if the relationship is set to be cascaded.
Not sure how this affects the process but I can do some testing tomorrow on this...

it reads there that the merging is only cascaded to the related entities if the relationship is set to be cascaded.

Indeed. To be clear, with a shared default entity manager this really shouldn't ever be an issue. My proposal is more meant to make the existing facade not be the source of truth, it's not necessarily meant to change how we cache entity managers. I'm perfectly fine with making the default app entity manager shared.

OK, I tested this quickly and it indeed seems that if the entity's relationship definition has the cascade option and "merge" is not included there, then merging the entity won't work properly.
I'm not sure how widely this would affect any actual use cases, as you could of course always just modify your entity definitions but I'm thinking it would be a safer option to have the entity manager as shared...
But I'm not doing any decisions here, so feel free to go the way you feel is the best. Maybe some performance testing would also make sense before doing any decisions as pointed out above by @mlocati.

Since this is only replacing the old method with the current ORM, I think this is good to merge. My only request would be to avoid class aliases in the core.


Expose  object.error.data in case of error.

I'm not totally familiar with CRI's error handling so maybe this isn't needed.
But FYI the error.data string sometimes has valuable data that should be surfaced to the user.
https://github.com/GoogleChrome/lighthouse/pull/2645

I'm returning a ProtocolError to the user like this:
class ProtocolError extends Error {
    constructor(response) {
        super(response.message);
        Object.assign(this, response);
    }
}

message is used as the actual error message while code and data (if any) are additional properties. This seemed to me the best option since AFAIK the response format is not documented.
Thanks for the info! :)

gotcha.

While I think the cri CLI is mostly unaffected anyone using it as a module will typically only see message, as .data is very atypical for an error object.
I would probably suggest this, then. The benefit is you are sure any useful information provided in data is definitely shown to the user.
class ProtocolError extends Error {
    constructor(response) {
        super(`${response.message} (${response.data})`);
        Object.assign(this, response);
    }
}

I was somewhat reluctant to do something like this due to the apparent lack of coherence in the format of those strings (capitalization, punctuation, etc.), but I definitely see the value in this.
Added in b025371dcf056fcbc248c321abccbf5d380e4659.


fix: update values.yaml for PostgreSQL deployment

Description:
This PR fixes the create network policies for the PostgreSQL deployment bug. User can create the network policies with these changes.

There is a duplicate with networkpolicy.yaml, which unconditionally creates the policy. Therefore in #8, I removed the template referring to the variable that was added here.
Should it be optional to create the policy? In the Redis and RabbitMQ quickstarts, we always create them.


[BUG] grpcio build failure on baremetal for 194 P10

ImportError: <mydir>/anaconda/conda-bld/grpcio_1710492368012/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_/lib/python3.10/site-packages/grpc/_cython/cygrpc.cpython-310-powerpc64le-linux-gnu.so: undefined symbol: SSL_get_peer_certificate

This happens if openssl is installed on the system.


Update to EKS doc

Description
Fix: Typo
An explanation about EKS control plane connectivity is now added to the doc.
Related issues/PRs
https://calicousers.slack.com/archives/CPEPQE8CS/p1594387383176700

Deploy preview for calico ready!
Built with commit 898fe177c8979f5726aa78652e1dd4c186e255d9
https://deploy-preview-3793--calico.netlify.app


New mkl implementation

Checklist before submitting

[x] Did you read the contributor guide?
[ ] Did you update any affected documentation?
[ ] Did you write any tests to validate this change?

Description
Fixes #32 .
Review process to land

All tests and other checks must succeed.
At least one maintainer must review and approve.
If any  maintainer requests changes, they must be addressed.

@jayfurmanek - Regarding this comment https://github.com/open-ce/tensorflow-feedstock/pull/32#discussion_r598824722. Although I have not included that in this PR, I felt it is needed if we want to disable MKL stuff completely by default ( as some stuff is enabled by default if we don't have that setting). Please suggest.

Let's keep this PR as is for now. I'd rather not take the perf hit by disabling MKL in the current recipe. Once we flip MKL on by default we can also add in the contraction kernel disable.


Event Sourcing - Next Steps

Summary

Add a method to validate current inventory against event sourced inventory.
Whenever an event is being created, validate it.
If a validation fails, add a yellow notice to the UI indicating the discrepancy.
Create an inventory_discrepancies table.
If there is a discrepancy between the event sourcing calculation of current inventory and the DB, add a log to to the table including the diff as well as the user e-mail, controller action and parameters which caused it.
We should audit this table at least once a week and figure out what to do with the discrepancies.
We should add a button to the superadmin UI to resync a single organization or all organizations.
We should update the logic to build inventory by only starting from the most recent SnapshotEvent.

Things to consider
No response
Criteria for Completion
No response

We're tracking this outside of the issues now, so I'm closing this.


Object returned by changedAttributes lacks .prototype methods.

When I call model.changedAttributes(), the object that is returned lacks typical object methods such as hasOwnProperty.
typeof returns the type "object", the inspector recognizes it as an object and parses it correctly.
The object seems to have no prototype.

Correct. The object is created using Object.create(null). It's a feature, and an intentional deviation from Backbone, in Exoskeleton. Is something breaking for you?

One of the things that breaks is using backbone validation with exoskeleton.  Right here https://github.com/thedersen/backbone.validation/blob/master/src/backbone-validation.js#L76

It breaks when I'm trying to look and see if something specific has changed. It works well because it returns a boolean so I can do something like model.changeAttributes().hasOwnProperty('someKey').
It's very readable when using control flow statements.

@malisbad try using model.hasChanged('someKey') instead.
@justinffs Keep in mind that an object is not a hash. The author of that library should be using hasOwnProperty.call(obj, prop) (or even better _.has(obj, prop)) instead. I'd open a bug there.


画面一覧

概要
遷移関係とか気にせず、必要な画面をかたっぱしから書き下ろすだけ

For now

Timeline

can be custom filtered (needs form)
timelines can be added in extra columns
Notifications is a special timeline

Single toot
Register

multi-view flow?

Login

reuse for Add another account once logged in

Settings

tabbed for multiple accounts

Reset password
Moderation

blocked accounts
muted accounts

User profile

Consider later

Lists
DMs


Rails/SaveBang  cop should be always enforced in tests

I think in test files it's probably always better to use create! vs create or update! vs update.
Because you want the test to fail immediately if you can't set it up properly.
Is it possible to implement that cop differently for test and spec folder differently, so that it always complains?

I think the difficult part here is that you'd probably only want the enforce the bang in the setup phase of the test, rather than the execution, since you may be need to the actual behaviour of calling create or update for the thing being tested.

That would happen if you are testing callbacks or rarely if you override create or update.
Cop can be disabled with a comment in that case IMO.

You can configure any cop to check for specific files/directories:
Rails/SaveBang:
  Include: spec/**/*.rb

Check config options here: https://rubocop.readthedocs.io/en/latest/configuration/

I agree with @tejasbubane. I think it is better to configure it according to the user application context.


Changes for MVP-4632

Added Library Documentation link to README.md.
Added MissingAnalysisProcess exception to warn users to use any of the co_annotation_report method before using GraphGenerator.
Refactored couple of test cases for the previous changes.
Start nodes can already be selected with labels using node_selector. See explanations below;

def visualize_rdf_graph(
    self,
    predicate: Optional[str] = None,
    start_node: Optional[List[str]] = None,
    node_selector: Optional[Dict[str, str]] = None,
    file_path: Optional[str] = None,
    bottom_up: Optional[bool] = True,
):

node_selector: A dictionary specifying how to select a node when node URIs are not used.
    Defaults to None. The dictionary should have the following format:

    - To select by label:
        {'property': 'label', 'value': 'x label'}

    - To select by annotation:
        {'property': 'x_annotation', 'value': 'xxxx'}

    - The 'property' key represents the property that will be queried.
    - The 'value' key represents the desired property value to match.

Some suggestions to improve walkthrough.ipynb

At cell 22, can we update gg.visualize_rdf_graph step to use the node_selector with label? Because ids are auto generated and making it hard to do copy>paste>run at this step.
At Cell 16 should we provide author_cell_type_list  to AnndataEnrichmentAnalyzer constructor? It didn't worked without that parameter in my case.


Torch should be hold to use

We should make the torch hold to use, and update the input glyph accordingly.

https://github.com/apetavern/sbox-grubs/commit/804a417d4a48860adc30d65b6411f54d244d2d54


Autoloader: Resolved variable name clash

What does this solve?

@mAAdhaTTah
There is another variable named script.


Migrating from Yesod.Auth.GoogleEmail2

Context
Our Google plugin has always had overlap with the GoogleEmail2 plugin of yesod-auth. There was even previous discussion to deprecate it for this. Now that the Google+ APIs are being deprecated (which that plugin relies on, but ours does not), it makes sense to re-open and resolve that discussion. What was always missing was a documented migration path for users of GoogleEmail2.
Therefore, this issue is a draft of said documentation. Once approved and committed in the appropriate location, GoogleEmail2 can be deprecated and users can be pointed to this library and that documentation.
Proposed Documentation
{Probably some context like the initial paragraph of this Issue}
First, replace the usage of that plugin with this plugin:
-authPlugins = [authGoogleEmailSaveToken clientId clientSecret]
+authPlugins = [oauth2GoogleScoped ["email", "profile"] clientId clientSecret]

NOTE: we assume you're relying on authGoogleEmailSaveToken and the fact that you can find the API token in the session post-authentication. If you are not, your migration will be that much simpler.
This will result in the following differences:

Creds
In your authenticate function, the processed Creds values will differ:

attribute
GoogleEmail2 value
OAuth2.Google value

credsPlugin
googleemail2
google

credsIdent
{user's email address }
"google-uid:{user's id}"

credsExtra
Key-value Person object
See here.

I would recommend migrating your application code (and possibly database data) to use the new credsPlugin and credsIdent values as they are. However, you could also change things from within authenticate:
data User = User { userEmail :: Text }
instance FromJSON User where -- you know...

authenticate creds = do
    let Right email = userEmail <$> getUserResponseJSON creds
        updatedCreds = creds { credsPlugin = "googleemail2", credsIdent = email }

    -- continue normally with updatedCreds

API Token

GoogleEmail2 will save the API token in the session
OAuth2.Google will include it in credsExtra

It's possible to leave your read-side code alone (things using getUserAccessToken) by storing the token from credsExtra into the session at the same key. Note that OAuth2.Google does not assert the tokenType is "Bearer". This may or may not matter to your application.
-- TODO, something like: traverse_ (setSession accessTokenKey) $ getAccessToken creds

API Response types
GoogleEmail2 provides types for JSON decoding of (Google+) responses. It also stores an association list of a Person as credsExtra. OAuth2.Google works differently, and how you migrate will depend on your application.
In short, OAuth2.Google will:

Include the response from https://www.googleapis.com/oauth2/v3/userinfo in credsExtra as a raw ByteString. You can decode this using any appropriate FromJSON type(s).
Include the Access Token (see above) so you can request and decode your own API responses, as necessary

Proposed Locations

In-line in the module documentation for the Yesod.Auth.OAuth2.Google
An in-repo markdown file, linked to from module documentation
This issue, linked to from module documentation
Personal blog post (pbrisbin.com), linked to from module documentation

Ping @snoyberg

I'm going to get started fleshing this out as a blog post. Then we can point to it form wherever.

Sorry I didn't respond yet, I intended to look into this but haven't had a
chance. I'm in favor of this direction.
On Fri, Feb 8, 2019, 2:50 PM patrick brisbin<EMAIL_ADDRESS>wrote:

I'm going to get started fleshing this out as a blog post. Then we can
point to it form wherever.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/thoughtbot/yesod-auth-oauth2/issues/123#issuecomment-461792891,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AADBB_YDsHtmpCL2YA7ID8Zp5_NSGDs_ks5vLXKLgaJpZM4ajgBO
.

Thanks @snoyberg I drafted a post as a PR on my blog source and replaced this Issue with a link to it. Hopefully this makes it easy for you to review, when you have time. I won't consider you blocking but will give you some time before I post it.

I've pushed a commit moving Haskellers over to this module: https://github.com/snoyberg/haskellers/commit/f77bba90d9684afb532639c68e64449523992535

Blog post published: https://pbrisbin.com/posts/googleemail2_deprecation/


"Excessive number of failed connections from a single source (ASIM Network Session schema)" does not show proper results - watchguard firewall

Describe the bug
I'm having the same issue identified here: https://github.com/Azure/Azure-Sentinel/issues/7304
But apparently some fix was applied to the Fortigate parser?
In my case, The parser does not correctly work for my Watchguard firewall syslogs. I deployed this ARM template to my workspace because I thought maybe this version was more up to date than what was included when installing from the content hub.
https://github.com/Azure/Azure-Sentinel/tree/master/Parsers/ASimNetworkSession/ARM/ASimNetworkSessionWatchGuardFirewareOS
Then i run a simple query:
ASimNetworkSessionWatchGuardFirewareOS(eventresult='Failure')
But it is not filtering out Success events.
To Reproduce
Steps to reproduce the behavior:

Run the built in Analytics rule that comes with "Network Session Essentials" named "Excessive number of failed connections from a single source (ASIM Network Session schema)"
run just this query: _Im_NetworkSession(eventresult='Failure')
observe too much data is returned, Success is included. This is not expected. only Failure should return.

Expected behavior
For the built-in Analytics rules to be effective, the filters have to work correctly. The analytics rule does not serve a purpose if it is returning Success events.
Screenshots

Desktop (please complete the following information):

OS: [e.g. iOS]
Browser [e.g. chrome, safari]
Version [e.g. 22]

Smartphone (please complete the following information):

Device: [e.g. iPhone6]
OS: [e.g. iOS8.1]
Browser [e.g. stock browser, safari]
Version [e.g. 22]

Additional context
Add any other context about the problem here.

Any update?

Any update?
Hi @jackluz84 ,Apologies for the delayed response,Could you please share sample data to email id<EMAIL_ADDRESS>and event failure query success events are returning that is the issue and also point me to exact parser, please correct if i miss any point.

Hello,
I sent an email as you requested including this information. I'm pasting the email below for tracking purposes.
I have several scenarios below that should help you narrow down…
I am using this built in query:
let threshold = 5000;
_Im_NetworkSession(eventresult='Failure')
| summarize Count=count() by SrcIpAddr, bin(TimeGenerated,5m)
| where Count > threshold
| extend timestamp = TimeGenerated, threshold
For demonstration purposes, I shorten the query to this:
_Im_NetworkSession(eventresult='Failure')
And it returns both success and failure, see screenshot. It should only return failure events.
I have the same behavior when NOT using the aggregated parser, and just directly the Watchgaurd parser:
vimNetworkSessionWatchGuardFirewareOS(eventresult='Failure')
I also discovered when filtering using SUCCESS, the inverse of what I want, it seems to work??? So this query correctly filters out all of the failures….
vimNetworkSessionWatchGuardFirewareOS(eventresult='Success')
Now here is something interesting. When using NON parameterized parser, this seems to work and will filter out all of the success events….so something seems broken with the parameterized parser?
ASimNetworkSessionWatchGuardFirewareOS
| where EventResult =~ "Failure"
| project TimeGenerated,Dvc,SrcIpAddr,EventResult,EventSeverity
And then ultimately the “rewritten” query using ASIM non parameterized works I guess? It says it is consuming excessive resources BTW….
let threshold = 5000;
ASimNetworkSessionWatchGuardFirewareOS
| where EventResult =~ "Failure"
| summarize Count=count() by SrcIpAddr, bin(TimeGenerated,5m)
| where Count > threshold
| extend timestamp = TimeGenerated, threshold

@jackluz84, Noted. Thanks!

Thanks for reporting. Work on this is in progress, will update by next week @jackluz84

The correction is made to the parser. https://github.com/Azure/Azure-Sentinel/blob/master/Parsers/ASimNetworkSession/Parsers/vimNetworkSessionWatchGuardFirewareOS.yaml
Deployment is in progress, will be visible in all workspaces in 2-3 weeks


Show hierarchy as tree in Select (interactive filter and left filter)

#Right now, hierarchies in selects are shown as "flat" hierarchies with list sub headers. It should be shown as a tree. The branch "feat/hierarchy-tree-select" is in draft and contains an implementation of the menu + tree (select-tree.tsx), it's in WIP right now.
Design: https://www.notion.so/interactivethings/V04-Indent-and-new-UI-844455727a2b421ca00e0309c3a25957#31e6722b846d4b4cb5eb6f0665648ee8
Behavior: https://codesandbox.io/s/filesystemnavigator-demo-material-ui-forked-r273pw?file=/demo.tsx

@ptbrowne Could we also implement the search box above the Hierarchy as we have it in the Menu Panel in the Editor? I think that would be very useful, especially if we have a large tree

We could but this is not a task that I would do without approval.

This was more a conceptual input from my side. I forgot to add the search field in the Mockups, but I think it should be definitely there.


Provide statistics of key downloads from server

Can you provide some anonymized statistics of the number of exposure key downloads from the server? This could help in estimating the number of active and working installations of the app. As we all know, this is a critical information and the whole purpose of the project to get a high coverage in the population.
The needed information is I think very minimal. Just the number of API calls for key downloads to the server per day would be enough I think.

@SebastianWolf-SAP

The Robert Koch Institute as publisher reserves the exclusive right to publish statistics concerning the Corona-Warn-App. Up-to-date numbers are available on https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/WarnApp/Warn_App.html. The data that you have requested is currently not available there, but we will address this request to RKI. You can also reach out to them directly if you want.
As your request is already mentioned in an existing wishlist item, https://github.com/corona-warn-app/cwa-wishlist/issues/125, we will close this issue as duplicate. Thank you for your understanding.
Mit freundlichen Grüßen/Best regards,
SW
Corona Warn-App Open Source Team

Ok, thats unfortunate, that the RKI has the exclusive rights on this. Before I ask them, I will consider talking to a wall, which is probably more enlightening.

The Robert Koch Institute as publisher reserves the exclusive right to publish statistics concerning the Corona-Warn-App. Up-to-date numbers are available on https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/WarnApp/Warn_App.html. The data that you have requested is currently not available there, but we will address this request to RKI. You can also reach out to them directly if you want.
As your request is already mentioned in an existing wishlist item, corona-warn-app/cwa-wishlist#125, we will close this issue as duplicate. Thank you for your understanding.
Mit freundlichen Grüßen/Best regards,
SW
Corona Warn-App Open Source Team

Unfortunately, this exclusive right led to the current situation in which we didn't have get any new statistics for the last two weeks.


perf: new image_delay option debounces image previews to avoid lag caused by terminal image decoding during fast scrolling

I've been working on optimizing Yazi's image preview speed, and with multi-threading, preloading, and a built-in image decoder, it should already be the fastest among all terminal file managers.
However, I noticed some lag during fast scrolling and realized that at this point, the performance bottleneck isn't Yazi itself, but rather the terminal. When users scroll quickly, Yazi processes the images at a very high speed and sends them to the terminal, but the terminal can't keep up with processing them in time, which gives the impression of lag. In reality, it's not Yazi that's lagging, but the terminal.
This PR introduces a new image_delay configuration option to address this issue. When previewing images, it will wait at least image_delay milliseconds before starting to send the decoded image data to the terminal.
This gives the terminal a breather and creates the perception that the file list is still scrolling smoothly.
Before:
https://github.com/user-attachments/assets/8cf40a08-95b5-44fd-a16b-a1efb70b25f6
Now:
https://github.com/user-attachments/assets/b5dde838-b700-4fa3-97be-543abff0f4ab

It seems that many terminals do not have this problem, I have tested foot,st-sx and kitty without this problem, only found this problem on konsole.

I think this delay mechanism is a great mechanism for reducing resource usage. Is there any consideration of extending this mechanism to general tasks?
For example,, we can add two more parameters to ya.manager_emit, one is the task_id and one is the delay. If a task with the same task_id is triggered before the delay is over, the delay is reset to the preset value instead of adding a new task.
ya.manager_emit(cmd,{xxx,id=xxx,delay=xxx})

The ya.manager_emit belongs to Yazi's event system, I guess you're referring to Yazi's concurrent task scheduling system since only tasks have task IDs.
I plan to expose this through the plugin system in the future, which means there will be a way to create, destroy, and report task progress. This will be particularly useful for the built-in extract plugin.
At that point, Yazi's progress can be automatically synced with the extraction progress from 7zip. Users will be able to see the progress bar for each task in the task manager, and the overall progress bar at the bottom will include it as well.


Crawler accessing /auth/failure

Hi guys,
just wanted to check if you have experienced it too that crawler find out about /auth/failure and access it randomly. Do you just ignore them?
Thanks!

I'm not sure about the random, but version 1.4 was preventing login via doorkeeper. Had to downgrade to 1.3.1 and it just worked.

I haven't specifically seen it. That said, it shouldn't really be an issue. You could try setting up a robots.txt file to prevent this overall.


Incoming messages must be uniquely identifiable

In order to ensure incoming messages are not duplicated, we need to ensure that we can robustly check the DB for the entry if it already exists. I see this as being a search for both incoming username/deviceID (for tweets and regular messages respectively) plus the message content itself. This will prevent false positives for scenarios where we get the same message from different people ("hi cornerhouse!")

This isn't required now - the DB searches will be against content and timestamp, which is enough to make sure we're not pushing duplicates in

OK this needs doing after all. Pft.


Unable to load tablesort.number

I'm getting Uncaught ReferenceError: Tablesort is not defined when I'm loading the tablesort.number.js script.

Have you also imported tablesort.js? You'll need to include both files as tablesort.number.js extends tablesort.js.

I was trying to use it in webpack, loading standalone tablesort is working but when I require tablesort.number it's throwing this Error. Anyway I switch to tablesorter.js and it's working properly, thanks for your help

Same issue, the readme file only describes how to import the tablesort library, but not the additional sorts when using it in a npm/webpack context: var tablesort = require('tablesort');.

Any progress with that guys?

Here's a reproducer: https://github.com/cirosantilli/cirodown/blob/f6d4e00fa159a37f2e45c1a4de72ee1726f72ac4/web2/pages/_app.tsx#L9


Allow user to override Command without overriding Connection

I want to be able to extend the Command class to add shortcut commands like:

copyTable()

The problem is that Connection::createCommand() has the Command class hardcoded.
A simple solution would be to use a variable like used elsewhere: Connection::$commandClass.

Why don't use CommandBuilder ?

Because then I have to override a class for each database backend.
Furthermore it is not about the solution to implement a copyTable function; that's just an example.
Basically there should be no hard coded class names when we can use configuration instead.
Gridview has $dataColumnClass;
BaseMailer has $messageClass;
User has $identityClass;

All shortcut methods at Command, such as 'insert', 'update' and so on, are just a wrapper around QueryBuilder methods.

Because then I have to override a class for each database backend.

Perhaps you will just have to do so. It is very likely different database engines have different syntax for this or even some of them don't have a support for it.
Still request make sense to me. Lets wait for other opinions.

There could obviously be efficient tricks for doing it in some backends. But any composition of existing functions should be in Command..
For example, regenerateIndex could be done by dropIndex and createIndex (efficiency is not the point here, but an implementation that works everywhere is; this could then be optimized by mysql\Command or pgsql\Command in case they have more efficient alternatives..

#10740

https://github.com/yiisoft/yii2/issues/9740


How can I show all the tables in a specific scheme?

How to show all the tables in a specific scheme?
Say that I have a database called PSG, I can excecute "select * from PSG.sometable" but I can not get how many and the name of all the tables, even if I have tried many grammar and read many docs

Try this call:
tables = C.ext.get_sys_tables()
printer.pprint(tables)

From this example: https://github.com/badoo/pyexasol/blob/master/examples/13_ext.py#L24-L25
"SYS" means select for system views.

Hi @Ericonaldo , did it help? :)


No file system events captured

The FileReadMonitor is registered for DiskFileIO, FileIOInit and FileIO, but none of these events are actually captured. It also appears the FileWriteMonitor and FileDeleteMonitor are missing.

0.7.0 of the NuGet has this fixed


Material3 support

We should remove useMaterial3: false and set styling properties for material 3 to have the same look with material 3.

https://flutter.github.io/samples/web/material_3_demo/

https://medium.com/flutter/whats-new-in-flutter-3-16-dba6cb1015d1


Search and replace boxes should place caret in same place

Testing #8184.

VSCode Version: Insiders 6/29
OS Version: Windows

Steps to Reproduce:

"View: Show Search"
Expand Search
Enter search string
Enter replace  string
Use Up and Down Arrow keys to go back and forth between the search field and the replace field

-> The search field puts the caret at the beginning of the text. The replace field puts the caret at the end of the text. They should both behave the same, preferably setting the caret at the end of the text.

Instead of placing the caret, right approach is to behave similarly when navigating using Tab. This will give consistent experience.


Add twitter and sentiment analysis actions

Please Title Case (as per contributing.md) and fix merge conflicts, thanks!

@sdras hey, sorry about error with the missing title case. Fixed, and conflicts solved. Thanks for your efforts in maintaining this list!


First steps towards reproducible sdist

This doesn't make sdists properly reproducible, but if you set SOURCE_DATE_EPOCH and build twice on the same machine (so the files have the same mtimes and permissions), you can get the same result.
CC @Carreau - we were talking about this somewhere else. I think this is all that's necessary to set the gzip timestamp:
source_date_epoch = os.environ.get('SOURCE_DATE_EPOCH', '')
mtime = int(source_date_epoch) if source_date_epoch else None
gz = GzipFile(str(target), mode='wb', mtime=mtime)
tf = tarfile.TarFile(str(target), mode='w', fileobj=gz)

Thanks for pinging me ; looking into it !

There might be two places where you have to set the mtime explicitly, but otherwise +1

Just went to investigate the tarfile module. It looks like it uses 0 as the default mtime when there isn't a file to get the mtime from (whereas wrapping the tarball into a gz uses the current time).
I'll still need to figure out overriding the mtime of files going into the tarball to make a properly reproducible sdist, but I have tried this locally and I could build an identical sdist twice on the same computer.

Just went to investigate the tarfile module. It looks like it uses 0 as the default mtime when there isn't a file to get the mtime from

Got you, I missed it was in memory, the pjoin() made me think it was written on disk :-)
I'm confused  from the code, aren't the setup.py

I'll still need to figure out overriding the mtime of files going into the tarball to make a properly reproducible sdist, but I have tried this locally and I could build an identical sdist twice on the same computer.

Yeah, that's annoying, you need to get the tarInfo and overwrite the mtime/atime attribute.
If you can reproduce on same computer then +1 already, we can figure out the rest later.

OK, I've just built identical tarballs on two different machines, one Fedora and one Ubuntu. Who wants to test this some more?

Check out this branch, so the last commit is fa12529
Set SDE: export SOURCE_DATE_EPOCH=1507470746
flit build
sha256sum dist/flit-0.11.4*

Result should be like this:
460794e84499cd679da945fc6987d9447b8d9829625fae3fd837eadfe1770ddc  dist/flit-0.11.4-py3-none-any.whl
12060d1cee6bbe704d57495675d8f45ecd5e0fe6406c45cca6474106eb623f92  dist/flit-0.11.4.tar.gz

If either the wheel or the sdist doesn't match, send me a copy so I can investigate the difference!

I confirm I got the same, and changing SDE affect the hash of the sdist, not the wheel.
460794e84499cd679da945fc6987d9447b8d9829625fae3fd837eadfe1770ddc  dist/flit-0.11.4-py3-none-any.whl
12060d1cee6bbe704d57495675d8f45ecd5e0fe6406c45cca6474106eb623f92  dist/flit-0.11.4.tar.gz

Should I merge, or do you want anything more ?

Nice! Weird that sde didn't change the hash of the wheel, though. Might
investigate what's going on there.
I'll have a look tomorrow for tests I can easily add, but then I think this
will be ready to merge.
On 9 Oct 2017 10:00 p.m., "Matthias Bussonnier"<EMAIL_ADDRESS>wrote:

Should I merge, or do you want anything more ?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/takluyver/flit/pull/136#issuecomment-335286889, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAUA9Z1Q1ZhpugJRy2NiACbvT6FltN_9ks5sqolSgaJpZM4PxuA5
.

OK, I just rebuilt with a different SOURCE_DATE_EPOCH, and both the sdist and the wheel changed. So I think that might have been an illusion that the wheel didn't. :-P


Expand drain to accept any RangeBounds

Rather than just RangeFull, this lets us accept any Range* type or
even arbitrary Bound pairs, matching the signature of Vec::drain.

I'm going to go ahead and merge this -- the signature should be uncontroversial to match Vec, and it's not a breaking change since we still accept RangeFull as a possibility. We can always iterate on the implementation more later, if needed.


Where is the documation all the methods?

I noticed that there isn't documentation of all the methods for the Laravel version. Are the methods the same as the ones listed for PHP? If so then why do we have methods like activityActorMethodName but it is not listed in https://getstream.io/docs/php/

docs for stream-laravel are part of this repository Readme file


Error while downloading manifests

Unknown error while downloading manifests for Dota 2, Life is Strange, Metro 2033 Redux and Metro Last Light Redux.

Hi,
Try following this GitHub article it appears to have worked for me:
https://github.com/lancachenet/monolithic/issues/80
From: billthecatt @.>
Sent: 31 October 2022 17:08
To: tpill90/steam-lancache-prefill @.>
Cc: kp2341 @.>; Author @.>
Subject: Re: [tpill90/steam-lancache-prefill] Error while downloading manifests (Issue #175)
[4:28:46 PM] Starting Dota 2
An unexpected error occurred while downloading manifests. Retrying...
An unexpected error occurred while downloading manifests. Retrying...
An unexpected error occurred while downloading manifests. Retrying...
Unexpected download error : Unable to download manifests! Skipping...
This issue keeps occurring for me as well. I think it's related to some bad proxy (squid) configuration in my dhcp settings, but it would be really nice if this error gave some more details as to what the issue really was and/or what was causing it.

Reply to this email directly, view it on GitHubhttps://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Ftpill90%2Fsteam-lancache-prefill%2Fissues%2F175%23issuecomment-1297400515&data=05|01||296aa592b9e94bd2b42a08dabb6265ab|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|638028328523664800|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=HjBn2E53frVOh%2FLKuPoFTYFWZHpHtmvkBuSchGswCQE%3D&reserved=0, or unsubscribehttps://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAT2HY7P6VFHAWVZSHWMYPE3WF74FFANCNFSM6AAAAAARDR6F7M&data=05|01||296aa592b9e94bd2b42a08dabb6265ab|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|638028328523664800|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|3000|||&sdata=4Hp9gZrvX7DUqcQw2nUMq5TMuFnG%2BCSK2N1szJLBdB0%3D&reserved=0.
You are receiving this because you authored the thread.Message ID<EMAIL_ADDRESS>

I agree with you @billthecatt that a better error message would be helpful here.  Unfortunately, SteamPrefill is a client and has no real insight into whats going on with the upstream Lancache server.  There can be any number of reasons that the manifest download might fail because of the Lancache server, however they all generally get lumped into a "unspecified" 504 server error.

I'm going to close this issue for now, since the issue seems to be resolved for @kp2341 .
@billthecatt if the solution that @kp2341 posted doesn't resolve the issue for you, please feel free to open a new issue.


Move is-mergeable-object from devDependencies to dependencies

deepmerge depends on this package to work, and it should be installed alongside it. More info on the difference between dependencies and devDependencies

This isn't true - in the version that is published to npm, there are no requires or imports.  The build step puts it all into a single file.
Check it out:

the UMD build on npm
the ESM build on npm

Rich Harris has made some arguments that this is how modules should be published: https://medium.com/@Rich_Harris/how-to-not-break-the-internet-with-this-one-weird-trick-e3e2d57fee28
I'm not hardcore on the pattern, but since this package could potentially be used by many people just copying the UMD build and dropping it into a <script> tag, it seems justifiable here.

I see your reasoning now, I agree it makes sense here. And in that case my
problem is a different one. I'll open an issue about it. Thank you for your
time and quick response!
On Mon, Feb 26, 2018 at 8:41 PM Josh Duff<EMAIL_ADDRESS>wrote:

Rich Harris has made some arguments that this is how modules should be
published:
https://medium.com/@Rich_Harris/how-to-not-break-the-internet-with-this-one-weird-trick-e3e2d57fee28
I'm not hardcore on the pattern, but since this package could potentially
be used by many people just copying the UMD build and dropping it into a


The information isn't very digestible

Right now the site reads like a barely organised braindump of ideas (because that's what it is!).
If you're organising an event, do you really want to read 8500 words of text (the long version) to get the advice? I think it could be much more digestible.
In particular, I'd like to provide a really short checklist of "things you can do", possibly broken down by timeframe? And generally make it easier to navigate.

Maybe split the call to action and the rationale? So somebody can just read it and see “ah, I need to do X” and not read all the detail of why X is a good thing or which conference got X right or wrong.
e.g. the food and drink section could be simplified to

A prospective attendee wants to know:

What sort of food and drink are you providing?
Will I be able to eat it?
When will it be available?

The default food/drink option at a lot of tech events is pizza and beer, but a lot of people can't have one or both of those.
Depending on how much flexibility you have, you may be able to include more people.
You should:

Offer food which satisfies as many dietary requirements as possible. Vegetarian at a bare minimum, more if you manage it
Tell people what sort of food you're providing, and what dietary requirements it satisfies
Clearly label the food, both by category and ingredients
Tell people when mealtimes are
Offer non-alcoholic, low-caffeine and low-sugar drinks

Code of conduct: have one
Financial assistance:

Help cover the costs of attending the event (beyond the ticket): travel, accommodation, food, and time away from work/home
If it's a paid-for event, don't have a single ticket price: have a sliding scale that lets people pay different prices depending on their financial situation. Allow people to get a ticket for free, or to subsidise a free ticket for somebody else.