text:
request: add deflate/zlib/gzip compression support

The introduction of the deflate module is slated for Micropython 1.21, but that release is months overdue. Any chance that module can be added to a pirate-flavour release? Specifically, I want to use zlib.compress, but 1.20.x only includes the decompress function and DecompIO class.

I've not had much luck or experience generating anything but super trivial .mpy files.
It looks like Deflate was merged in https://github.com/micropython/micropython/commit/3533924c36ae85ce6e8bf8598dd71cf16bbdb10b and we're already targeting a pre-release commit of MicroPython, so I just need to find the time to walk it forward to the latest upstream commit and fix all the breaking changes. (There have been some renames to MicroPython RP2 boards which will break out build.)

Okay apparently that was not as difficult as I'd thought. The "deflate" module should be in these builds: https://github.com/pimoroni/pimoroni-pico/actions/runs/6418396733?pr=858

Thanks @Gadgetoid
At some point I want to learn what got changed in that commit to allow it to be built.

Wow... https://github.com/micropython/micropython/releases/tag/v1.21.0 just released :laughing:
I think we were accidentally prescient here.
I think our build worked pretty much fine without changes by just bumping the commit has to the latest MicroPython, but no doubt the various changes will have far reaching repercussions beyond "does it build."

For anyone else finding this thread who wants to enable compression with deflate.DeflateIO, I recommend as a starting point this tutorial on Medium and this post from @Gadgetoid. In my case, I added the line #define MICROPY_PY_DEFLATE_COMPRESS (1) to mpconfigboard.h for the Pico W. The file is in micropython/board/RPI_PICO_W/. The actions take care of the rest of the firmware build.

authors: Gadgetoid grunkyb

repo: pimoroni/pimoroni-pico


text:
Mahsa shirazi profile branch

Hi!
Here is my _index and avatar.jpg files to add to the website,
Thanks!

Please add my files to the website

source: gharchive/pull-request

license: MIT

license_type: permissive

license_source: github-api


text:
Make ls ignore vim backup files

Fixes
Checklist

[x] I have made a change to this repository, be it functionality, testing, documentation, spelling, or grammar.
[x] I updated my branch with the master branch.
[ ] I have added the necessary testing to prove my fix is effective/my feature works (or I did not modify functionality).
[ ] I have added necessary documentation about the functionality in an appropriate .md file.
[ ] I have appropriately commented any code I have modified

Short description of what this PR does:
In case user has vim set up to create backup files in the current directory, make the ls command ignore backup files (ending in '~' by default).
I find this helpful with my setup, but it obviously won't be of benefit to everyone. Probably won't cause any problems, though. I don't imagine anyone uses '~' at the end of a filename for any other purpose (and for some reason, also stores them in the notes directory).
Yeah, take it or leave it. :-)

Nice! I'm definitely on board with the goal, good suggestion.
Unfortunately it will break things though, because it looks like the default version of ls on a Mac doesn't support --ignore (or -I): https://stackoverflow.com/questions/11213849/how-to-ls-ignore-on-osx.
I think this would work everywhere if implemented with grep -v instead. Would that work for you? AFAIK that should do the same thing. Any downsides you're aware of?

Ah, yes, I was worried that -I might not be supported everywhere. I had
originally planned on using grep -v before I discovered that ls had
its own --ignore option.
As far as I know, grep -v is standard and should be supported on all
*nix platforms, so that's probably the way to do it. :-)
Excerpts from Tim Perry's message of April 1, 2020 5:46 am:

Nice! I'm definitely on board with the goal, good suggestion.
Unfortunately it will break things though, because it looks like the default version of ls on a Mac doesn't support --ignore (or -I): https://stackoverflow.com/questions/11213849/how-to-ls-ignore-on-osx.
I think this would work everywhere if implemented with grep -v instead. Would that work for you? AFAIK that should do the same thing. Any downsides you're aware of?
--
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
https://github.com/pimterry/notes/pull/76#issuecomment-607228112

@pimterry as excluding files are popping up often.
what's your opinion on having .notesignore file like .gitignore and maybe a flag called --ignore-file to provide ignore file with other name.
Additionally, It will  be good if notes respected the .gitignore file and ignore all files defined in there.

I've now updated this to use grep -v instead, added a quick test, and merged it. Thanks @eshapard! Nice improvement :+1:.

@rmNULL I'm open to some kind of ignore config, if you or others would find that useful. I'd be surprised if we needed a special command line argument for it, I expect it's very nearly always the same set of patterns, and for one-off ignoring you can just pipe to grep -v.
I think we should still ignore some standard things (like this) by default either way. We already have the config file, so I expect we'd either want to extend that somehow, or link out from that, maybe with an IGNORE_FILE param that points to a gitignore-formatted file, so users can point to .gitignore or .notesignore or wherever. I'm probably not going to jump on that any time soon, but feel free if it'd be useful to you.

authors: eshapard pimterry rmNULL

repo: pimterry/notes

license: mit

license_source: bigquery


text:
parser: support mysql-compatible explain format

What problem does this PR solve?
Support MySQL compatible explain format as is described in MySQL Manual. such as:
explain format=traditional select * from t;
explain format=json select * from t;

What is changed and how it works?

TRADITIONAL type would be translate as row to be compatible with TiDB current implementation.
JSON type is implemented just in parser side and will be blocked during preprocessing in TiDB

Check List
Tests

Unit test
Integration test
Manual test (add detailed scripts or steps below)

Code changes
N/A
Side effects
N/A
Related changes
N/A

@kennytm @tiancaiamao @morgo PTAL

@kennytm 'row' is peculiar to TiDB , and is semantic equivalent to TRADITIONAL in MySQL, So I think it's ok to conflate the two.

@spongedu yes but the list of columns of TiDB's "row" and MySQL's TRADITIONAL format are different.

@kennytm I think the format section just specify how the results of EXPLAIN are displayed.  For example the TRADITIONAL display the results as rows, and JSON display the results as a json string. so are 'row' and 'dot'.
As for the column count  issues, I think it's a content issue ， and is orthogonal to the format.

LGTM

authors: kennytm morgo spongedu

repo: pingcap/parser


text:
parser: fix compatibility for OnDelete,OnUpdate clauses

What problem does this PR solve?
fix compatibility for OnDelete,OnUpdate clauses
this pr support following syntax:
reference_definition:
REFERENCES tbl_name (key_part,...)
[MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
[ON DELETE reference_option]
[ON UPDATE reference_option]
reference_option:
RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
What is changed and how it works?
Check List
Tests

[x] Unit test
[x] Integration test
[ ] Manual test (add detailed scripts or steps below)
[ ] No code

Code changes

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

Side effects

Possible performance regression
Increased code complexity
Breaking backward compatibility

Related changes

Need to cherry-pick to the release branch
Need to update the documentation
Need to be included in the release note

I realized a similar PR has been already merged when I tried to fix merge conflict.
https://github.com/pingcap/parser/commit/191583a459a3574d57fa6211778da25e6ef61846
what do you think about these two kinds of implements.

@kennytm  @zz-jason PTAL


text:
The configuration/implementation of async gRPC may be not optimal

Enhancement
Configuration Issues
https://github.com/pingcap/tiflash/blob/d7e4e2995cebf0cf25e13a2a91adebada9390b66/dbms/src/Interpreters/Settings.h#L363-L364
The async gRPC server uses these configurations for EstablishMPPConnection.
async_pollers_per_cq is the number of threads per completion queue. (default 200)
async_cqs is the number of completion queues. (default 1)
The number of gRPC threads is async_pollers_per_cq * async_cqs = 200.
In my opinion, these default configurations have two issues.

The default thread number is too large. In view of the fact that async gRPC uses a non-blocking socket, in theory, there is no blocking point when doing RPC work. Therefore, the thread number should not exceed the number of CPU cores.
The default completion queue number is too small, which may introduce some unnecessary synchronization overheads.
For example, CqEventQueue uses an MPSC queue and it also uses a spinlock to support multiple consumers. In addition,
pollset_work is called when calling CompletionQueue::Next. A mutex is acquired during this call. Although sometimes this mutex is released, this overhead can not be ignored especially when the thread number is 200.

Actually, the official guide of gRPC performance says

If having to use the async completion-queue API, the best scalability trade-off is having numcpu’s threads. The ideal number of completion queues in relation to the number of threads can change over time (as gRPC C++ evolves), but as of gRPC 1.41 (Sept 2021), using 2 threads per completion queue seems to give the best performance.

At present, TiFlash uses v1.26 gRPC. The perf_notes from v.126 gRPC says

Right now, the best performance trade-off is having numcpu's threads and one completion queue per thread.

I guess using multiple threads per completion queue is good for load balance but the number should not be too large. We can carefully test it to gain the best performance.
Implementation Issues
The first issue is about notify_cq.
https://github.com/pingcap/tiflash/blob/d7e4e2995cebf0cf25e13a2a91adebada9390b66/dbms/src/Server/FlashGrpcServerHolder.cpp#L141-L157
From the code above, we can see there is a another gRPC thread pool for notify_cq. In fact, the default number gRPC thread for EstablishMPPConnection is 400(200 for cq, 200 for notify_cq), which is a scary number.
What is the difference between call_cq and notification_cq in gRPC?

Notification_cq gets the tag back indicating a call has started. All subsequent operations (reads, writes, etc) on that call report back to call_cq. For most async servers my recommendation is to use the same cq.
This allows fine-grained control over which threads handle which kinds of events (based on which queues they are polling). Like you may have a master thread polling the notification_cq and worker threads all polling their own call_cqs, or something like that.

This code tests when the notify_cq and call_cq is called.
I think we do not need to control which threads handle notification events so the notify_cq should be the same as call_cq then the default 200 threads can be removed totally.
By the way, grpc-rs also uses one completion queue both for call_cq and notify_cq. code here
The second issue is about combining different gRPC thread pools. Async gRPC client in TiFlash also has a gRPC thread pool.
https://github.com/pingcap/tiflash/blob/d7e4e2995cebf0cf25e13a2a91adebada9390b66/dbms/src/Server/Server.cpp#L1242-L1248 (good to see that its pool size is std::thread::hardware_concurrency).
Combining different gRPC thread pools can reduce the thread number and context switch. This also makes it easier to add new async RPC in the future.
It can be done with some class abstraction and refactor.

/cc @windtalker @bestwoody @yibin87

there is block behavior in EstablishMppTask，so the number of pollers should big enough to avoid that.  we need modify the findTaskWithTimeout before make the number of pollers small.

there is block behavior in EstablishMppTask，so the number of pollers should big enough to avoid that. we need modify the findTaskWithTimeout before make the number of pollers small.

Got it. The gPRC thread pool for notify_cq can not be removed now and the size should be big enough due to the blocking function findTaskWithTimeout. Seems it could easily become a bottleneck. Look forward to changing this function to non-blocking behavior.
But at least the number of gRPC thread pool for call_cq can be decreased to the number of CPU core and the completion queue number can be increased to a more suitable value.

there is block behavior in EstablishMppTask，so the number of pollers should big enough to avoid that. we need modify the findTaskWithTimeout before make the number of pollers small.

Got it. The gPRC thread pool for notify_cq can not be removed now and the size should be big enough due to the blocking function findTaskWithTimeout. Seems it could easily become a bottleneck. Look forward to changing this function to non-blocking behavior.
But at least the number of gRPC thread pool for call_cq can be decreased to the number of CPU core and the completion queue number can be increased to a more suitable value.

400 threads is not a big number for tiflash. the performance is not as true as what official gRPC says，since I tested the params. if you can some benchmark results to prove it，that will be better.

source: gharchive/issue

authors: bestwoody gengliqi

repo: pingcap/tiflash


text:
Use alarm to retry client's connection

What problem does this PR solve?
Issue Number: ref #6225
Problem Summary:
What is changed and how it works?
Check List
Tests

[ ] Unit test
[ ] Integration test
[ ] Manual test (add detailed scripts or steps below)
[ ] No code

Side effects

[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[ ] Breaking backward compatibility

Documentation

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Changes MySQL compatibility

Release note

None

/cc @gengliqi @windtalker

/merge

/merge

/run-unit-test

/run-all-tests

/merge

authors: gengliqi windtalker xzhangxian1008 ywqzzy


text:
migrator(ticdc): Delete old changefeed

What problem does this PR solve?

Issue Number: close #xxx
What is changed and how it works?
Check List
Tests

Unit test
Integration test
Manual test (add detailed scripts or steps below)
No code

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
Please refer to [Release Notes Language Style Guide](https://pingcap.github.io/tidb-dev-guide/contribute-to-tidb/release-notes-style-guide.html) to write a quality release note.

If you don't think this PR needs a release note then fill it with `None`.

/run-all-tests

/run-all-tests

/run-all-tests
/run-all-tests

/run-integration-tests

Codecov Report

Merging #6103 (952e369) into cli-use-open-api (d1de53d) will decrease coverage by 0.6547%.
The diff coverage is 77.7777%.

Flag
Coverage Δ

cdc
64.6197% <77.7777%> (+0.1419%)
:arrow_up:

dm
51.9506% <ø> (-0.0254%)
:arrow_down:

engine
?

Flags with carried forward coverage won't be shown. Click here to find out more.
@@                   Coverage Diff                    @@
##           cli-use-open-api      #6103        +/-   ##
========================================================
- Coverage           58.4562%   57.8014%   -0.6548%
========================================================
  Files                   708        550       -158
  Lines                 83471      73204     -10267
========================================================
- Hits                  48794      42313      -6481
+ Misses                30244      26996      -3248
+ Partials               4433       3895       -538

authors: codecov-commenter sdojjy

repo: pingcap/tiflow


text:
apiv2(ticdc): add ut for api default value

What problem does this PR solve?

Issue Number: close #8480
What is changed and how it works?
add ut for api default value
Check List
Tests

Unit test
Integration test
Manual test (add detailed scripts or steps below)
No code

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
`None`.

/run-all-tests

/run-integration-tests

/run-verify-tests

/run-integration-tests


text:
raft: port pre-vote feature

Hi,
This PR port the pre-vote feature for etcd/raft.
It merges #1330, #1425, and https://github.com/coreos/etcd/pull/7060.

PTAL @siddontang @BusyJay @ngaut

PTAL @siddontang @BusyJay @ngaut

PTAL @BusyJay

The modification for raft in https://github.com/coreos/etcd/pull/6975 is merged.
PTAL @siddontang @BusyJay

PTAL @siddontang @BusyJay

LGTM

PTAL @BusyJay @zhangjinpeng1987

PTAL @BusyJay

repo: pingcap/tikv


text:
Test codeql

check it works?

LGTM

repo: pinpoint-apm/pinpoint-c-agent


text:
What is the intentional use of elixometer.TestReporter?

There is a TestReport In file https://github.com/pinterest/elixometer/blob/master/lib/elixometer.ex
I notice that is is being used in test:
https://github.com/pinterest/elixometer/blob/master/config/test.exs
But is that just for Test environment, but for some reason, it si part of the main module?
If production won't ever use or  it, would suggest this should not be part of main module.

The idea is that you use that inside tests if you want to get the output of logging. Elixiometer was written pretty early in our elixir exploration, and this should be made top-level. Better yet, we could alter the mixfile to look in a different directory and remove it entirely from lib and put into test/support or something.

authors: linearregression scohen

repo: pinterest/elixometer


text:
TileData: fix typo + copyediting

Noticed an extraneous a in TileData's header description. Took a quick pass of copyediting while looking at that file

thanks!!

authors: dangerismycat rlingineni

repo: pinterest/gestalt


text:
Could add support to github.com/pion/rtp or maybe add a library that makes transcoding(aac->pcm) easier

As description from https://github.com/pion/webrtc/issues/1888, could you add support to github.com/pion/rtp or maybe add a library that makes transcoding(aac->pcm) easier?

Did you find the solution to transcoding audio from acc to pcm?

authors: jianzhiyao yourchanges

repo: pion/rtp


text:
Potential regression by a commit c0159aa in causing TestAssociation_Shutdown to fail

    @enobufs Just wondering: could it be that this PR (commit c0159aa2d49c240362038edf88baa8a9e6cfcede) introduced a regression which makes the unit-test `TestAssociation_Shutdown` fail?

See https://github.com/pion/sctp/actions/runs/3495811764/jobs/5852996166
Originally posted by @stv0g in https://github.com/pion/sctp/issues/239#issuecomment-1321076117

Hi @jerry-tao, @stv0g, are you able to repro this in your environment?  The error does not happen to me... :(

I did not reproduce it either, will dig deeper this week.

I just tested it again on the current master branch and the test succeeded.
But I see a possibly related PR #236

I tried to produce it again without success.
So maybe I've dreamt it...

I just saw it again but only on 1.18

authors: edaniels enobufs jerry-tao stv0g

repo: pion/sctp


text:
UI - fix a bug that shows error at unintended times on the application detail page

What this PR does / why we need it:
Which issue(s) this PR fixes:
Fixes #
Does this PR introduce a user-facing change?:

NONE

Thank you.
/approve

authors: cakecatz nghialv

repo: pipe-cd/pipe


text:
Allow supplying absolute path to the private key

This PR fixes #19.
I've dropped the startsWith("/" checks and improved docs a bit.

@pitchmuc PTAL.

Hello and thanks for the Pull request.
I am testing it now and the error I was trying to avoid is popping up again :

In my config file, I am using this notation :
{
    "org_id": "ED48F97C5922D40C00@AdobeOrg",
    "api_key": "d2ef4b231cea4cf29d91b10052",
    "tech_id": "3155ED511C70AE8@techacct.adobe.com",
    "secret": "**********************",
    "pathToKey": "/config/private.key"
}

This kind of notation could be used and I wanted my function to work in that case.
In order to avoid that issue, I was doing my startswith() but it seems that it prevents you from using full path.
Normally, when entering the full path, it should starts with something like "C://". (so my startswith should avoid messing with it).
Is it different on your environment ?
I need to think of a way to make both work.

That's some new path notation for me.
In *NIX systems, an absolute path starts with a / and a relative one starts with a ./.
In Windows, an absolute path starts with C:\\ as you've mentioned, while a relative remains the same .\.
I'm not sure why you're avoiding using C:\\-like paths, but for *NIX systems, the current startswith() workaround breaks the usage of absolute paths completely.
From my perspective, the library should support commonly-used standards and can support non-standard notations if they do not break compatibility.
I'd be glad to help you out here if there's smth else I can do.

OK. I am not having ton of experience on NIX system, this is interesting. Thanks for your explanation.
I am trying to be flexible so you can use both notation, independently of your current system.
I tried to upload a new version of the import logic in your branch.
The main idea is to check if the file can be accessed before applying this startswith().
By checking if file exist, it may solve your issue without breaking my code.
Main logic here:
test_path = _Path(path).exists()
    if test_path == False:
        if path.startswith('/'):
            path = "."+path
    with open(_Path(path), 'r') as file:
        ....

Let me know if this works for you.

@pitchmuc PTAL again.
I've added a reusable part that checks the presence of the file using the supplied path and uses the file if it is available, otherwise tries to convert the absolute path to a relative one and tries it out.
I've also added the fail-fast approach with exceptions if config/private key files are not available.

@pitchmuc I've back merged your latest changes. It'd be great if you can check it out.
Please let me know if there's anything else you'd like me to do/change before merging the PR.

Hello @xSAVIKx ,
I checked the commit, thank for the function provided. It makes it cleaner.
I will merge the proposed changes.
We are not in sync with the master anymore as I provided a new version with VirtualReport capability for @loldenburg. I will take care of merging the changes.
You proposed suggestion will be part of the next release on pypi.
Thanks a lot !

@pitchmuc Perhaps worth to use https://docs.python.org/3/library/os.html#os.sep in the future.

authors: Ryuno-Ki pitchmuc xSAVIKx


text:
pcfdev setup fails under Windows 7

When I run the binary distribution from Pivotal network under Windows 7 I get the following error:
C:\Users\mrumpf\Downloads\pcfdev-v0.16.0-windows>pcfdev-v0.16.0-windows.exe
panic: runtime error: index out of range

goroutine 1 [running]:
panic(0x93a720, 0xc082002040)
        /usr/local/go/src/runtime/panic.go:481 +0x3f4
github.com/pivotal-cf/pcfdev-cli/vendor/github.com/cloudfoundry/cli/plugin.Start
(0x33a5098, 0xc08206b200)
        /ext-go/1/src/github.com/pivotal-cf/pcfdev-cli/vendor/github.com/cloudfo
undry/cli/plugin/plugin_shim.go:16 +0x494
main.main()
        /ext-go/1/src/github.com/pivotal-cf/pcfdev-cli/main.go:76 +0xd51

PCFDev 0.15 setup was working fine.

Hi @mrumpf,
PCF Dev is now a cf CLI plugin. You need to install it with cf install-plugin pcfdev-v0.16.0-windows.exe.
See the getting started tutorial: https://pivotal.io/platform/pcf-tutorials/getting-started-with-pivotal-cloud-foundry-dev/install-pcf-dev
Or the docs: https://docs.pivotal.io/pcf-dev/
(We will eventually run cf install-plugin for you when you run the plugin directly, to reduce confusion.)

Hm, I was confused by the extenions "exe"...
Here is what I get now:
{code}
{ pcfdev-v0.16.0-windows }  » cf install-plugin ./pcfdev-v0.16.0-windows.exe
Attention: Plugins are binaries written by potentially untrusted authors. Install and use plugins at your own risk.
Do you want to install the plugin ./pcfdev-v0.16.0-windows.exe? (y or n)> y
Installing plugin pcfdev-v0.16.0-windows.exe...
OK
Plugin pcfdev v0.0.0 successfully installed.
{ pcfdev-v0.16.0-windows }  » cf dev start
Please retrieve your Pivotal Network API from:
https://network.pivotal.io/users/dashboard/edit-profile
FAILED
Error: invalid Pivotal Network API token
{code}
I think that is a corporate proxy issue...

Did you copy and paste your API token from PivNet? The Invalid Pivotal Network API token error implies a successful connection to PivNet with an invalid token.  We've seen occasional issues with the Windows DOS command line and cf CLI password-type prompts, so use PowerShell if you aren't already.

ok. It seems to work under PowerShell: I was using Cygwin bash before.
PS C:\Users\mrumpf\Downloads\pcfdev-v0.16.0-windows> cf install-plugin pcfdev-v0.16.0-windows.exe

**Attention: Plugins are binaries written by potentially untrusted authors. Install and use plugins at your own risk.*
*

Do you want to install the plugin pcfdev-v0.16.0-windows.exe? (y or n)> y

Installing plugin pcfdev-v0.16.0-windows.exe...
OK
Plugin pcfdev v0.0.0 successfully installed.
PS C:\Users\mrumpf\Downloads\pcfdev-v0.16.0-windows> cf dev start
Please retrieve your Pivotal Network API from:
https://network.pivotal.io/users/dashboard/edit-profile

API token>
BETA SOFTWARE END USER LICENSE AGREEMENT
...
Last Updated: April 14th, 2014

Accept (yes/no):> yes
Downloading VM...
Progress: |=>                   | 1%

Cou could reduce confusion if mention

that under Windows PowerShell should be used
Where to find the API token

authors: mrumpf sclevine

repo: pivotal-cf/pcfdev


text:
The lifecycle image should be configurable

RFC: https://github.com/pivotal/kpack/pull/560 (soon to be merged)
Problem:
Users have no way of upgrading the lifecycle image without upgrading the kpack release
Criteria:

An update to ConfigMap lifecycle-image.data.image results in builders being recreated
The ConfigMap lifecycle-image.data.platformApiVersions should be validated that kpack supports all of the platform apis

Actions:

The ConfigMap lifecycle-image should no longer be mounted in the kpack-controller
kpack should watch for changes to ConfigMap lifecycle-image in the kpack namespace
Updates to the ConfigMap lifecycle-image.data.image value should result in builders being recreated
lifecycle-image.data.platformApiVersions is a new optional field containing space-separated values in the form of X.X
if lifecycle-image.data.platformApiVersions contains a version that is not supported by kpack, the ConfigMap should fail validation

Perhaps lifecycle-image.data.platformApiVersions should be an annotation to prevent implying that is a functional configuration attribute?

Perhaps lifecycle-image.data.platformApiVersions should be an annotation to prevent implying that is a functional configuration attribute?

Moving to accepted and will accept the user facing issue https://github.com/vmware-tanzu/kpack-cli/issues/142

Moving to accepted and will accept the user facing issue https://github.com/vmware-tanzu/kpack-cli/issues/142

authors: matthewmcnew mgibson1121 tylerphelan

repo: pivotal/kpack


text:
Add IPv6 Routes By Default

Many devices have IPv6 enabled by default, and some (e.g. iOS) do not allow it to be disabled in the .ovpn config, or pushed by the server.
It would be nice if PiVPN would also create IPv6 routes to push to the clients and redirect IPv6 traffic through the tunnel. It could then either be discarded at the server or forwarded along with the IPv4 traffic.
At a minimum this should serve as a workaround in the cases where it is impossible to block IPv6 traffic entirely, or the interface can not be disabled on the client.

closing as #259 is already up to add support for IPv6

repo: pivpn/pivpn


text:
double id sur la redirection vers element, apres create element

je créé un nouveau projet, je valide, c'est enregistré, on me redirige vers cette url :

je sais pas où est le code de la fonction save du dynForm, je trouve pas le moment où on redirige vers la nouvelle page.
Si quelqu'un sait où c'est !

Ok, je vais regarder ça :)

@clement tu peux t'en charger.
Quand on essaye d'ajouter un projet, on mets juste le nom et une image et le lien de redirection ressemble a ça : http://127.0.0.1/ph/co2#project.detail.id.nullnull
Si on ne pas d'image c'est bon

ok ma caille ! ça c'est cool ... marche avec et sans fineUploader good job l'artiste

authors: Kgneo RaphaelRIVIERE clement59


text:
[perf_tool/cluster] Implement GKE cluster operations.

Summary: Implement operations for calling out to GKE to create, healthcheck, and delete a cluster. We use the backoff package to retry all the GKE operations, because they can often fail transiently.
Type of change: /kind test-infra
Test Plan: A follow-up PR adds the subcommand test_gke_cluster to perf_tool which allows creating and deleting a cluster with the GKE cluster provider. I used that command to verify these operations work.

@pixie-io-buildbot test this please

repo: pixie-io/pixie


text:
PIXI.Graphics is a bad parent (it inerits from container but does not care about its children)

PIXI.Graphics.{clone,generateTexture} and possible others don't take into account that Graphics can have children.  I think it should - or at least be documented.

I wonder how people feel about us making it inherit from DisplayObject instead of container...

Seems to be a viable option that would clear things up - but it would break compatibility.  For example we make depend on it in our svg renderer.  So I guess its no option for a minor release.

fixed in v4 👍

authors: FlorianLudwig GoodBoyDigital englercj


text:
Pixi FontFace in Chrome

PixiJS 4.6.2
Browser: nwjs-sdk-v0.28.3-win-x64 (chrome)
Pixi uses the default Chrome font when you point a custom font-face using the FontFace obj:
Sample code:
var fontFace = new FontFace('95845e56-1b06-457d-ac03-c765ad13ec9e.ttf','url(chrome-extension://fadmacekllolfgoklhinaljokeapepka/data/95845e56-1b06-457d-ac03-c765ad13ec9e.ttf)');
document.fonts.add(fontFace);
let pixapp = new PIXI.Application({width:810, height:41, transparent:true});
fnt_pix.appendChild(pixapp.view);
var style = new PIXI.TextStyle({ fontFamily:'95845e56-1b06-457d-ac03-c765ad13ec9e.ttf', fontSize:36 });
var richText = new PIXI.Text('ABCDEFGHIJKLMNOPQRSTUWVXYZ',style);
pixapp.stage.addChild(richText);
Pixi successfully donwloaded the font files:

But i suspect Chrome is handling the default font to Pixi, part of their "Webfonts Intervention" feature.
And because this only happens on the first moment, when Pixi is downloading the fonts:

(Each line is an PIXI.Application)
On a second moment if i don't reload the page and create new PIXI.Application objects everything runs smooth:

Any hints?

Produced another sample code to better illustrate the problem, you can run it on regular Chrome.
Observed the problem also occurs when font-faces loads directly from CSS.

Here: pxtx.zip

A quick fix might be to add https://github.com/typekit/webfontloader to your project.
You could then do something like this to only display the content once the fonts were loaded
   let countLoadedFonts = 0;
         WebFont.load({
                custom: {
                    //font name set in css
                    families: ['css fontName1', 'css fontName2', 'css fontName3']
                },
                testStrings: {
                    'css fontName1': '\uE003\uE005',
                    'css fontName2': '\uE003\uE005',
                    'css fontName3': '\uE003\uE005'
                },
                loading: function () {
                    console.log('css font loading');
                },
                active: function () {
                    countLoadedFonts++;
                    console.log('css fontName active', countLoadedFonts);
                    //Display pixi content
                }
            });`

macguffin, your suggestion was effective!

But i still suggest the devs to give a chance to this issue.
I banged my head for many hours until you comment. =D

@Nocthan it can be a browser bug that exists using regular html and css with custom fonts. Not only does the font have to be loaded, but it has to be used once before it 'kicks in' as it were. Therefore you have libraries like the one given, or the one I use, https://github.com/bramstein/fontfaceobserver - which uses the font in the background, and measures the size of the area it has been used, and when the size changes it knows the custom font is loaded, active, and can be used.
Closing as I think we're covered here :)

authors: Nocthan macguffin themoonrat


text:
Bloxstrap Crash [BUG]

Acknowledgement of preliminary instructions

[X] I have read the preliminary instructions, and I am certain that my problem has not already been addressed.

What problem did you encounter?
When I start bloxstrap a new window opens saying that Roblox has crashed. Yes it only happens when I use Bloxstrap!

Im gonna upload my configurations in the comments

ClientAppSettings.json
Settings.json
State.json

Solved after reinstalling Bloxstrap with winget

repo: pizzaboxer/bloxstrap


text:
Game Freeze.

After a while of playing, roblox itself completely freezes and does not respond in any way. I have to unload the application from the task manager. This happens almost always.
https://github.com/pizzaboxer/bloxstrap/assets/144396571/3eb4c80e-60b1-4400-9683-a0a1d2668bdd

Are you able to provide a more specific timeframe on how long it takes for this to happen? Also, can I see your FastFlag list? Open the menu, go to the FastFlags tab, open the editor, and show a picture of the whole list.

In about two to seven minutes.

I said to open the editor.

this?

Okay, that seems good. Have you also checked to see if this happens only with Bloxstrap? https://github.com/pizzaboxer/bloxstrap/wiki/Switching-between-Roblox-and-Bloxstrap

Yes, this only happens with Bloxstrap. With the regular roblox client everything is normal.

You could try setting your rendering mode to Automatic, and your framerate limit to 0. See if doing those two changes anything.

Okay, I'll give it a try. I will test it in several games.

It became even worse. in addition to freezing Roblox itself, it became problematic to go to the Task Manager to remove a task from Roblox and finish its work.

How about if you disable activity tracking?

I turned it off from the beginning.

Well, I can't really think of what else would be causing it since at this point Bloxstrap should be functioning exactly like how the official launcher does. You could also try forcing a Roblox reinstallation? Go to the Behaviour tab, scroll to the bottom, option should be there. Enable it, save, and try and join.

Honestly I reinstalled both Bloxstrap and Roblox using the Revo uninstaller utility. And the result is still the same.

Well, I'm not really sure what to say because at this point Bloxstrap should be working exactly like the official launcher, but I'll try and do some more troubleshooting here.
Can you go to where Bloxstrap is installed (open the menu, installation tab, open installation folder), go inside the "Versions" folder, go inside "version-xxxxxxxxxxxxxxxx", and launch RobloxPlayerBeta.exe directly? See if the problem happens with just that.

same thing
https://github.com/pizzaboxer/bloxstrap/assets/144396571/40bea83d-78d7-4257-b44e-779078d6dcdd

This time, delete the "ClientSettings" folder, then launch RobloxPlayerBeta.exe again.

Issue has been awaiting clarification for over a month, closing as stale. If you have anything further to add, just respond and I'll reopen.

authors: MeGoddess pizzaboxer


text:
JS-Array-Challenge

안녕하세요!
오늘부터 시작하려고 합니다!
좋은 자료 공유 감사드려요!
제가 아직 미숙해서 질문 하나 드립니다!
npm test로 jest를 실행할 때에 ./Challenge/하위의 모든 디렉토리를 검사하더라구요.
package.json 에서 "scripts"의 "test" 경로를 ./Challenge/유저명 이런식으로 고쳐서 사용했는데,
올바른 사용법인지 궁금합니다😊
(깃허브에는 package.json의 변경사항을 업로드하지 않았습니다!)
2022년 좋은 일만 가득하시길 바랍니다🤞

테스트 잘 돌아갔다면 그렇게 해도 좋을 것 같아요! 고생하셨습니다😊

authors: BB-choi pkiop

repo: pkiop/JS-Array-Challenge


text:
🛑 ✅JrebelLicenseServer is down

In a755ab4, ✅JrebelLicenseServer (https://jrebel.wayok.cn) was down:

HTTP code: 0
Response time: 0 ms

Resolved: ✅JrebelLicenseServer is back up in ecf0b94 after 7 minutes.


text:
Failing registration with missing metadata in multilanguage journal

Dear @bozana and @asmecher ,
we just had the situation that the plugin attempted to register an article in a multi-language journal (German & English). The editor entered the metadata for the article's author only in the German form, while leaving the English metadata blank. In the DOI registration process however, the plugin stopped working (and did not process the subsequent articles) when hitting the described article.
Can you reproduce the bug?
Thanks in advance.
Best Regards,
Adrian

Hi @GrazingScientist, thanks for reporting. We would need a few more information in order to figure out what is happening:
Which OJS version are you using?
What is the primary locale of the article? -- Is it German? -- All metadata must be entered in the article primary locale...
When you try to export only that article do you get any errors and what errors exactly?
If export works fine, when you try to register only that article what exactly happens?
It would be good to first use support forum, so that we are able to first check and test and to then create an issue once we figured out that it is a bug or something needs to be done...
Best wishes,
Bozana

authors: GrazingScientist bozana

repo: pkp/crossref-ojs


text:
Trying to get multiple account authorizations instead of just one

I'm trying to create a program for spotipy where anyone can log in. I can make it where only I can get an authorization but am struggling with trying to get it where when the program runs it asks for a new login for authorization.

Here is the code I have so far for the Authorization. Not sure if it actually works. I just don't know how to be able to login to different spotify accounts with the correct authorization only know how to hard code in my account. Not sure where to go.

Take a look at the examples, especially app.py
That example helped me alot getting started to make a multi-user app with flask.
Note that FlaskSessionCacheHandler is currently not in the pip package, for that refer to issue#838

authors: bjbuddyboy git-eri

repo: plamere/spotipy


text:
Anlernmodus von Livisigeräten

Checklist

[X] I have filled out the template to the best of my ability.
[X] This only contains 1 feature request (if you have multiple feature requests, open one feature request for each feature request).
[X] This issue is not a duplicate feature request of previous feature requests.

Is your feature request related to a problem? Please describe.
ist kein Problem
Describe the solution you'd like
ist es möglich, neue Geräte direkt über HA anzulernen?
Würde Sinn machen wenn man Geräte hat die in Reichweite von der Zentrale ist, aber keine Wlanverbindung zur Zentrale besteht.
Letztens hatte ich im Keller (vor dem 1.3.) einen Zwischenstecker eingerichtet, ohne Cloud hätte das im Kellerbunker nie funktioniert. Hatte da LTE aber kein Wlan. Via Cloud konnte ich den Stecker einrichten
Sprich.. will wer einer ein Gerät einrichten das ausserhalb seines Heimnetzwerkes, aber in Reichweite der Zentrale ist braucht dafür eine externe Schnittstelle. Und da wäre HA perfekt dafür
Würde auch den Blödsinn VPN obsolet machen wenn man Nabu Casa nutzt.
Describe alternatives you've considered
.
Additional context
.

sorry, meine Idee konnte ich nicht in englisch vorstellen.. zu umfngreich
ist eh blödsinnig. Das nutzen zu 99% deutsche User. Warum wir dann englisch kommunizieren versteh ich nicht. Author deutsch, User deutsch.. warum kompliziert wenns einfach gehen könnte

Ich hab schon mal erklärt, warum ich die Issues auf Englisch hielten möchte - falls diese Integration jemals wieder in Home Assistant zurückgeführt wird (was ja aufgrund der Tatsache, dass sich dort niemand mehr darum kümmert, gar nicht so unwahrscheinlich ist), macht es Sinn Fehler, Probleme und Implementierung auf Englisch zu dokumentieren. Für Feature Requests macht das vielleicht nicht so viel Sinn, allerdings ist das hier auch kein Wunschkonzert: Der Anlernmodus geht tatsächlich über das hinaus, was ich benötige (woher sollen denn auch noch groß neue Geräte kommen), daher werde ich da keine Zeit reininvestieren…

na gut, wenn nur in englisch... ok. Aber ich finde das unnötig weil es viele gibt wo Probleme haben dieser Sprache nicht mächtig sind. Das musszmt auch Du einsehen

na gut, wenn nur in englisch... ok. Aber ich finde das unnötig weil es viele gibt wo Probleme haben dieser Sprache nicht mächtig sind. Das musszmt auch Du einsehen

Leider gehöre ich auch zu denen mit 55 ist das schon ne Weile her. Deswegen quäle ich mich oft mit Fehler und melde kaum welche, hinzu kommt, dass ich Windows beherrsche, aber von Linux keinen Plan habe.
Naja, ich benutze dann halt einen Übersetzer, damit gehts auch, man wird dann nur für Blöd gehalten.
Ich kann das aber verstehen, das man hier nicht zweisprachig mit Fehlern aggieren möchte. Dann muss man halt mit manchen Sachen leben oder nutzt ein deutschsprachiges Forum wie das von Simon. Vielleicht sollten sich die Livisi Nutzer dort zu einem eigenem Thema zusammentun. Möglichweise richtet Simon uns ja eine Abteilung ein. Das könnte man ja noch im Livisi Forum kommunizieren.
Jedenfalls bin ich Planbet dankbar für diese geile Integration. Den Livisi Mist konnte man ja garnicht gebrauchen.
Unfortunately, I'm also one of those at 55 that's been a while. That's why I often torture myself with mistakes and hardly report any, in addition to the fact that I master Windows, but have no plan for Linux.
Well, I'll just use a translator, that's fine, you'll only be considered stupid.
But I can understand that you don't want to act bilingually with mistakes here. Then you just have to live with some things or use a German-language forum like Simon's. Maybe the Livisi users there should get together on their own topic. Maybe Simon will set up a department for us. This could still be communicated in the Livisi Forum.
In any case, I am grateful to Planbet for this great integration. You couldn't use the Livisi crap at all.

authors: metaiiica olli711 planbnet


text:
Refactor Tests

We should be using temp directories rather than having multiple directories for each test

Fixed in #16


text:
thanks

thank for the course
Ex_Files_UaR_Git_GitHub.zip

You're welcome.

You're welcome.

authors: SymphorienLipandza planetoftheweb

repo: planetoftheweb/responsivebootstrap


text:
Use YAML merge list definition

Multiple merge keys were previously supported, but not anymore.

Codecov Report

Merging #537 (e56f176) into main (e3f1e2b) will decrease coverage by 0.01%.
The diff coverage is n/a.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #537      +/-   ##
==========================================
- Coverage   97.24%   97.23%   -0.01%
==========================================
  Files           6        6
  Lines         363      362       -1
  Branches       77       45      -32
==========================================
- Hits          353      352       -1
  Misses          8        8
  Partials        2        2

see 1 file with indirect coverage changes

authors: codecov-commenter plannigan

repo: plannigan/columbo


text:
studiesStudyDbIdObservationvariablesGetAsync()

When I call the Java client's StudiesApi.studiesStudyDbIdObservationvariablesGetAsync() with studyDbId == 1001 I get:
    java.lang.IllegalArgumentException: missing discriminator field: <>
        at io.swagger.client.JSON.getDiscriminatorValue(JSON.java:83)
        at io.swagger.client.JSON.access$000(JSON.java:41)
        at io.swagger.client.JSON$2.getClassForElement(JSON.java:61)
        at io.gsonfire.gson.TypeSelectorTypeAdapterFactory$TypeSelectorTypeAdapter.read(TypeSelectorTypeAdapterFactory.java:65)
        at io.gsonfire.gson.NullableTypeAdapter.read(NullableTypeAdapter.java:36)
        at io.gsonfire.gson.HooksTypeAdapter.deserialize(HooksTypeAdapter.java:86)
        at io.gsonfire.gson.HooksTypeAdapter.read(HooksTypeAdapter.java:54)
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
        at com.google.gson.Gson.fromJson(Gson.java:927)
        at com.google.gson.Gson.fromJson(Gson.java:892)
        at com.google.gson.Gson.fromJson(Gson.java:841)
        at io.swagger.client.JSON.deserialize(JSON.java:157)
        at io.swagger.client.ApiClient.deserialize(ApiClient.java:710)
        at io.swagger.client.ApiClient.handleResponse(ApiClient.java:913)
        at io.swagger.client.ApiClient$1.onResponse(ApiClient.java:879)
        at com.squareup.okhttp.Call$AsyncCall.execute(Call.java:177)
        at com.squareup.okhttp.internal.NamedRunnable.run(NamedRunnable.java:33)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:818)

I have found an acceptable solution to this problem in the Java client code generated from BrAPI V2.0.
The generated code contains a class JSON.java which handles the JSON serialization and de-serialization of the JSON objects. The problem is when it is de-serializing an object, it is expecting an extra "discriminator" field to handle Java type resolution. If this class had been responsible for the original serialization, then this would not be a problem, however since the JSON is coming from a remote server, the "discriminator" field is missing, just as the error message indicates.
The easiest solution is to modify JSON.java and tell it how to determine the correct class without the need for an independant discriminator field. For example, Study.java has an extra field studyDbId and StudyNewRequest.java does not have this field. Based on the presence or absence of studyDbId in the response JSON, I can determine which class to instantiate.
@peterrosario if and when you are ready to move to V2.0 for your java client, let me know and I can give you my code changes for JSON.java

authors: BrapiCoordinatorSelby peterrosario

repo: plantbreeding/API


text:
undefined method `utc' for "2015-12-30 04:14:49 UTC":String

  #
    #   # allow_unconfirmed_access_for = nil
    #   confirmation_period_valid?   # will always return true
    #
    def confirmation_period_valid?
      self.class.allow_unconfirmed_access_for.nil? || (confirmation_sent_at && confirmation_sent_at.utc >= self.class.allow_unconfirmed_access_for.ago)
    end
    # Checks if the user confirmation happens before the token becomes invalid
    # Examples:
    #

pls see file https://github.com/vishyme/Estydemo.git

repo: plataformatec/devise


text:
Suggestion - devise module settings in initializer not model

Has anybody brought up why devise modules that affect not only models, are placed in models not initializer?
It is weird that a line in model directly affects routes. Might it not be better to put modules in devise initializer so that instead of
class User < ApplicationRecord
  devise :database_authenticatable, :validatable
end

it would be something like
Devise.setup do |config|
  config.devise_model User, :database_authenticable, :validatable
end

just food for thought

While I would admit the coupling is a bit akward as you noted, the catalyst is the scoping when using multiple models (resource types). The alternative would be having domain requirements (Users are recoverable but Admins are not, etc.) defined away from the Domain Model.

To adress the scoping issue, I propose just model name as the first parameter( as in the example). We don't even need to change that much logic under the hood (as a first step), since it should be possible to inject functionality in models exactly the same way it is done now, just doing it behind the scenes.

Another added bonus, is that this way it is possible to configure devise per-resource-type, as the configuration logic can be scoped to serve a specific resource (for example different unlock strategies, for User and Admin, etc.)

My understanding was that, it actually gets set up via the the devise_for call in the routes file (the right place). In turn, yes, it looks at the  model and detects which modules are loaded and then loads the appropriate (default) routes if not overrides are given.
That said, I think your premise of "a line in model directly affects routes" is incorrect. It is more specifically, a line in routes checks the model (which is configured in the model file) to create routes.
Simply put, the model definition does not create routes, but it informs the creation of routes depending on the modules loaded.

Simply put, the model definition does not create routes, but it informs the creation of routes depending on the modules loaded.

That is correct.

Another added bonus, is that this way it is possible to configure devise per-resource-type, as the configuration logic can be scoped to serve a specific resource (for example different unlock strategies, for User and Admin, etc.)

This would require a bigger change, right? I don't think that simply changing where the code gets injected in the model would also make this possible since some of the configurations are global.

This would require a bigger change, right? I don't think that simply changing where the code gets injected in the model would also make this possible since some of the configurations are global.

Yes, but my suggestion to move the configuration from model to initializer just opens this possibility for future improvements. I do not suggest doing all of this in one go.

Yes, but my suggestion to move the configuration from model to initializer just opens this possibility for future improvements. I do not suggest doing all of this in one go.

I do think the configuration per-resource could be done with the current design too. I understand what you saying about code organization but I'm struggling to see why your proposal would be more flexible than the way it is today.

the method delete_all_data does not actually delete data, it just calls another method.

IMO, that's true. The method delete_all_data has a dependency on the class name SomeModel and its method delete_all_data. By dependency, I mean that this method would have to change whether SomeModel changes its name, the parameters or the name of its own delete_all_data method. But if SomeModel changes its implementation of delete_all_data while keeping the public API the same, then the parent method does not have to change at all.

The 'best practice' in rails-centric libraries is convention over configuration.
The convention (90% use case) is that if someone has a certain module enabled for their devise resource, Recoverable as an example, they also want to have the routes needed to make that work.
If you really need to de-couple these concerns, you may do so at the model and routes level, via overrides to the  `devise_for, respectively.
The initializer is for global-level configuration (in this case global denotes applying to all the devise resources in use). If you want it to apply only to one resource-type, use options in the model or routes definition calls. You can disable creating routes altogether and create them manually if you wish as well.
I would also say as an aside, that it seems the concerns you have with de/coupling may have to do with an approach that doesn't see the library as a container [block box if you will] itself. The fact that devise informs itself through inference (via the model) rather than hard-coded configuration in the routes is just a choice for convenience of testing/implementation and keeping the library DRY.
Do you have a specific use case / failing test case that you can't accomplish with the current form?

No, it was just something that I thought would be a better way of configuring devise when looking for a problem why some devise routes weren't being generated. As I was continuously searching for something in the model itself, I realized that it seems somewhat odd to look for routes config in the model.
This was just to present a potential alternate approach in the configuration. There are no problems or cases that I've come across so far where this approach would fail to deliver. :)

As I was continuously searching for something in the model itself, I realized that it seems somewhat odd to look for routes config in the model.

@LeKristapino That's a fair point, it would be easier to find out how things work. But this kind of change requires work both from maintainers and users of the Gem. We want to make it easier for the users to upgrade to new versions, that's why we'll leave as it is.
Thanks again for bringing this up and for the discussion.

authors: LeKristapino colinross tegon


text:
FR: Possibility to Sync the File System's Modification Date with the Yaml Date

Is Your Feature Request Related to a Problem? Please Describe.
Regarding YAML and file system modification dates that become unsynced with each other due to moving/downloading the Vault to a new location.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Running "Lint all files" / "Lint folder" will update all files because file sys mod date is later than Yaml mod date, but the file's content hasn't actually been modified.
Describe the Solution You'd Like
Is it in theory possible to programatically set the file system's mod date from within an Obsidian plugin?
In that case it would be nice to have a function that one runs only once the file sys mod dates gets out of sync.
The function would go through all files in the vault and make sure that the file mod date is set to the current value in whatever Yaml key represents the modification date.
Describe Alternatives You've Considered
Is there any stand-alone app? But it would have to run on all platforms.
Additional Context
Having run the "sync mod dates" function would allow "lint all files" to just update the  Yaml mod dates on the files that were actually modified.

This relates to #386 . There is nothing that can be done by the Linter in regards to this. However you may be able to use Custom Commands to handle this.

But to be clear,the Linter cannot do this because Obsidian does not allow for this in their API.

There probably is a way to do so, but those functions are not added to an API or anything. It would take some work and testing on your part to get it working.

Would it be possible to have a "Lint all Files Modified Today" feature in Linter?

It would be possible so long as the date modified is consisered the source of truth. It would check if the date modidied was today and if so, then lint those files.

Does linting on file change (#799 ) and autosave (#392 ) not address this issue?
I am assuming the latter handles your scenario.

Looks like I linked to the wrong issue. I was referring to #183 for autosave. It would lint the file after a change is made to it (thus no need for running a lint on the current file manually).
As for linting a file when the active file changes, that makes sense. I was pretty sure it would not meet your needs, but thought I would mention it as well.

I was referring to #183 for autosave. It would lint the file after a change is made to it.

How do you detect changes made to a file?

I listen to the current active file's editor content (source mode displayed content). If the rditor says something changed, then I assume something changed.

I listen to the current active file's editor content (source mode displayed content). If the rditor says something changed, then I assume something changed.

Ok.
Autosave as in #183 doesn't work for me since I don't want the file to suddenly change.
What would work is if you manage a list (as the Recent Files plugin manages a list of recent files in a json) where you add each file as soon as a change occurs. This would be a list of files pending linting. Then make a command available that lints all files in the list and then clears it.
Then there's no need to iterate through all files as suggested above.
But this list of files pending linting might cause problems when multiple clones of the same vault exists, where files haven't been synced.

I can say that I would not add that data to a json file if I were to add it. So there would be no issue with syncing.
It sounds like you are looking for a feature that currently has not been requested, so I can put it in the backlog and see what interest current users have in this feature. I am open to PRs in the meantime, but I at this time I don't see myself working on this anytime soon.

Sounds good. I am glad that you found a solution.

authors: karmeye pjkaufman

repo: platers/obsidian-linter


text:
Feat/upload-component

O que foi feito? 📝

Criado component UploadPhoto
Melhorado component de RadioButton adicionando prop de label
Melhorado component de Checkbox utilizando a mesma cor (todo: adicionar variants)

Screenshots ou GIFs 📸

Tipo de mudança 🏗

[X] Nova feature (mudança non-breaking que adiciona uma funcionalidade)
[ ] Bug fix (mudança non-breaking que conserta um problema)
[ ] Refactor (mudança non-breaking que melhora o código ou débito técnico)
[ ] Chore (nenhuma das anteriores, como upgrade de libs)
[ ] Breaking change 🚨

Checklist 🧐

[X] Testado no iOS
[ ] Testado no Android

@fabinppk @luancurti @mdlucas
esse PR acabou ficando 2 em 1, em conjunto com o #102

Tentei te dar um help com o check, mas não rolou.
Se o PR ficar pendente eu posso dar uma olhada com calma no decorrer da semana.

authors: ammichael fabinppkbuilders

repo: platformbuilders/fluid-react-native


text:
Temper when full demo runthrough is executed on PRs

Currently: each push to PR going into main
Suggestions:

when label is added
only on this repo id (no forks)
only delete project if previous steps succeed?

Add a comment on which label needs to be added to a PR to run tests
https://github.com/marketplace/actions/comment-pull-request

repo: platformsh/demo-project


text:
Fix Find() when / is used as input

This fixes issues with Platformifiers that were looking for relative files, like Laravel and Django
Fix #199

the only other challenge i see is that the message about adding the composer dependency is scrolled out of view quickly due to the size of our congrats message:
Normal size terminal window:

Expanded to be able to see it:

Good point, let's open a separate issue to discuss this.

message size moved to #204

authors: akalipetis gilzow

repo: platformsh/platformify


text:
Обновление модуля

Решил продолжить разработку этой либы, так как тоже пришлось поиграться с SmsHub.
Изменения:

Оформил в виде устанавливаемого модуля
Перевел все Docstrings на английский (перфекционизм), а страны привел к ISO3166 Alpha-2 кодам
Добавил поддержку проксей
реализовал асинхронный подход
Сделал объекты активаций, чтобы удобнее было работать, не перебрасываясь лишними цифрами
Контекстные менеджеры и тд

Мне кажется, можно по приколу выложить либу в PyPi. Лично у меня такого опыта не было, а это отличный шанс.
Корневой репозиторий твой - можешь сделать это сам, если же нет - это сделаю я.

Спасибо, чуть позже гляну

Подскажи, почему ты поменял https на http, в #1 сослались на документацию, где написано что нужно использовать https

Из документации:

Все запросы (поддерживаются POST и GET) должны идти на https://smshub.org/stubs/handler_api.php
В коде используется https
Ошибки не возникает
Https безопаснее
Почему она возникала?

Покопался подробнее. Кажется там какая-то путаница с DNS.
При использовании домена без www, причем с обычными запросами (без браузера) - оператор блокирует соединение, и http и https (в случае https оно просто не устанавливается, из-за невозможности выполнить рукопожатие)
Через VPN в нидерландах - работает отлично. Возможно, потому что используются другие DNS и они определенно используются и ссылаются на другие адреса.
Тем не менее, методом тыка оказалось что с доменом www работает и без VPN, причем из requests и httpx в моем случае.
Кстати, requests заменены на httpx, это более качественная и функциональная библиотека, которую я использую везде, после того как словил memoryLeak на requests.

Спасибо!
Надо будет подумать как ожидать несколько SMS одновременно

authors: Yarosvet platon-p


text:
Upgrade Play! version from 2.4.10 to 2.4.11

No changes other than version numbers from Maven plugin or test projects point of view, but update anyway.

New 1.0.0-beta7-SNAPSHOT snapshot deployed, documentation updated.


text:
skyboxLayer enabled unexpectly when changing skyboxIntensity

For bug reports, include:
Description
With the new layer system, we can hide skybox easily by the following code:
pc.app.scene.layers.getLayerById(2).enabled = false;

But when changing skyboxIntensity, the skyboxLayer will be enabled again. This is annoying.
The skybox layer should not visible when changing skyboxIntensity.
Steps to Reproduce

pc.app.scene.layers.getLayerById(2).enabled = false

pc.app.scene.skyboxIntensity = 2

You guys fixed this issue one year later 😂

repo: playcanvas/engine


text:
Feature request: black or at least dark light within light cookies

Can you develop the option of black or at least dark light within light cookies? ... I want to make a tool for Tattoo artists, where edges need to be really black.
Not possible right now.
cf my project: https://playcanvas.com/editor/scene/968488

Sounds like you want to project a texture onto a model.
These two demos may help in that regard
https://github.com/playcanvas/playcanvas.github.io/blob/master/graphics/painter.html
https://developer.playcanvas.com/en/tutorials/character-damage-demo

Can you develop the option of black or at least dark light within light cookies? ... I want to make a tool for Tattoo artist, where edges need to be really black.
Not possible right now.

This would be also very useful to project blob shadows.

@yaustar: in case you are referring to https://playcanvas.github.io/#graphics/painter.html, it will not help. I have a model character which recieves the texture in a bad way (what is projected on the back is also projected on the front - a bit like a mirror effect, but only that the mapping is off {ps: UV unwrap is not always a walk in the park - many of my tried Blender unwrap methods does, for example, not transfer at FBX-export to PC})

the painter example paints on each of the 6 sides as well :-/

I am more interested in the damage-example, where the UV mapping seem to perfect already (there is no mirrored effect, as all seams and islands on the black/white rendertexture to the left are mapped correctly). Here I want to project a readymade texture to the model. Kind of the reverse procedure of the present 'damage' infliction. Here is my project with a naïve approach to the problem (blue tattoo put at decal-texture): https://playcanvas.com/editor/scene/1028837

BTW @yaustar: I have found a compromise solution for the mapping problem ... you don't have to pursue this (just in case ... but thx again)

Having summed up the different mehods to project an image to a character (to a total four methods), I hereby return to this issue as each of them seem to possess their own challenge. In case the developers think that it is possible to use the two most obvious ones (texture and rendertexture), they both have inherit flaws in the shape of 'seams' and 'distorted stretches' that prevails me to make fluint dynamic movement of an image across the character without a lot stretching: https://playcanv.as/b/9tQ1i4Cq/ (forked from a Leonidas tutorial)  + https://playcanv.as/b/FiSGfBFX/ (note the stretch on the back of the upper left arm). Theese dynamic stretches are (close to) never a problem when making UV-mapping for games, as the textures are static in such cases. But here the texture is dynamic, and the inherit original mapping structure (from when being developed in Blender etc.) reveals itself ... conclusion: Although not-being a natural category of physique, 'black light' as a light cookie option, would be very useful, as it can bypass mapping issues al together.

Although not-being a natural category of physique, 'black light' as a light cookie option, would be very useful, as it can bypass mapping issues al together.

Even if this is possible, you are going to have the same problem as you are not projecting onto a flat surface.

I am already ahead of that problem, as I am using a 'rolling effect' that changes the UV-tiling of the material as a function of the camera-to-bodypart position.

Decals?

A) As an option I can go back to the https://developer.playcanvas.com/en/tutorials/character-damage-demo (that includes decals) option, but so far I have seen this example as being taylor made for special game situations (and thus very relevant for most PlayCanvas developers).
B) As a parallel I made this post in the forum: https://forum.playcanvas.com/t/shooting-an-image-on-to-a-surface/15755 yesterday. From there I pursued https://playcanvas.com/project/704805/overview/paint-3d-test (also decals)
From both A) and especially B) I seem to be stuck at this line [from B)]:
this.material.setParameter("paintColor",new pc.Vec3(1.0,1.0,1.0).data);

is there a material.setParameter method/approach for 'painting' with an image?

(please note that this issue now have made me post this parallel https://github.com/playcanvas/engine/issues/2556 - it might help my/an overall goal of a more wider option pool and/or a better rendering pipeline ... all in all; so at least of of the above mentioned four approaches [texture, rendertexture, decals and light cookie] improves :-) )

I've converting this discussion to a request to implement a decal system:
https://github.com/playcanvas/engine/issues/4053

authors: FutureFireplace Maksims dexterdeluxe88 mvaligursky yaustar


text:
Allow the AppBase to be cleanly destroyed even when not initialized

avoiding undefined access

Closing as no go. I was hoping to avoid construction / destruction without a device, but it's more complicated than expected and not worth it.

Can't we just fix this error?

Basically only what you added already:
        const canvasId = this.graphicsDevice?.canvas?.id;
        if (canvasId !== undefined) {
            AppBase._applications[canvasId] = null;
        }

fair enough, I'll do that that.
new PR.

authors: kungfooman mvaligursky


text:
Singular workflow for CI

Change Type (required)
Indicate the type of change your pull request is:

[ ] patch
[ ] minor
[ ] major

/canary

repo: player-ui/player


text:
Uploading snapshots to bintray fails

/home/play/logs/nightly-deploy-master-1590634801.log
error] java.lang.RuntimeException: error uploading to https://api.bintray.com/maven/playframework/snapshots/snapshots/com/typesafe/play/twirl-compiler_2.12/1.5.0-2020-05-27-785c3ce-SNAPSHOT/twirl-compiler_2.12-1.5.0-2020-05-27-785c3ce-SNAPSHOT.pom: {"message":"Snapshot files cannot be uploaded to OSS repositories.

Looks like we're not fully using sbt-dynver here yet?

This is every night

Fixed in the private Play build server repository.

authors: chbatey ennru raboof

repo: playframework/twirl


text:
🛑 Lindas Kingdoms is down

In e004615, Lindas Kingdoms (https://lindas.admin.ch/query?query=PREFIX rdf%3A <http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23>
SELECT DISTINCT %3Fk (SAMPLE(%3Fs1) as %3Fs)%0AWHERE%20%7B%0A%20%20%3Fs1%20a%20%3Chttp%3A%2F%2Ffilteredpush.org%2Fontologies%2Foa%2FdwcFP%23TaxonName%3E%3B%0A%20%20%3Chttp%3A%2F%2Frs.tdwg.org%2Fdwc%2Fterms%2Fkingdom%3E%20%3Fk.%0A%7D%0AGROUP%20BY%20%3Fk) was down:

HTTP code: 500
Response time: 1755 ms

Resolved: Lindas Kingdoms is back up in 7010a89 after 42 minutes.

repo: plazi/monitoring


text:
Can middleware access controller instance?

I'd like to create a middleware that have access to the controller instance. is that possible?

What is your use case for this and why it cannot be achieved by modifying the request object?

Lets say i've a Controller  similar to:
@JsonController()
class XXX {
   instanceOfSomething = null;

   @Get('/whatever')
   public async getWhatever() {
      return instanceOfSomething.getWhatever();
   }

}

Lets say that I want to add a middleware that checks if instanceOfSomething was instantiated and if not return an error

Ofc this is usful cause i've a lot of methods using instanceOfSomething and depends on the "loading" of it.

Also using a method of controller as a middleware could be helpful.

It is a strange approach what you try to do. Use dependency injection instead and if instanceOfSomething needs some time to fully startup after being created then just defer all call on it. (eg return a response what is resolved when instanceOfSomething has finished setting up and completed your call.

Yes for that scenario as I advised you should keep track of the internal state of the service inside the service not in a middleware. You can do something like:
class MyService {
  private ready: Promise<void>;

  constructor() {
    this.ready = this.setupStuff();
  }

  public async anyMethod(): Promise<any> {
    await this.ready;

   // do your stuff here
  }
}

I already keep track of the readyness in the dependency.
I just want to hook up a middleware, within that middleware do
if (!this.dependency.isReady()) {
  return { success: false, message: 'App  is not ready' }
}

Isn't this the whole point of having a middleware? To perform "guards" over real code?
If right now middleware cannot be coupled to controller classes instances, to me that's a showstoppers unfortunately.

Isn't this the whole point of having a middleware? To perform "guards" over real code?

Yes it is, but why do you want to return an error response, when your client can wait until your app is ready (I assume your app doesn't need multi minutes setup time.) You just simply resolve the returned promise when the app has been setup and the request can be processed.
Btw you can inject the service into your middleware if you really want to and check for its readiness in the middleware, however as I already said, this seems a wrong design decision. The service itself should keep track of its state and if you decide the send error to requests which comes before then the service should create the error, not the middleware.

(I assume your app doesn't need multi minutes setup time.)

Can take hours. Don't ask :)
To me it's more clean to have the middleware check dependencies readyness and keep the Controller methods clean of checking the dependencies readyness for each route.
If I had to do that I'd need to duplicate the readyness (and response handling) code for every route. This looks like an antipattern to me.
BTW I dont want to inject the dependency to the middleware. I think i might create a decorator and decorate each method to perform such validation. Still duplicated code but a decorator looks better than code-dumplication to me.
Feel free to share your thoughts.

Can take hours. Don't ask :)

Wow, that is a long time! So then why don't you solve this at the level of load balancing? Just dont redirect any traffic to the app until it's not ready.

To me it's more clean to have the middleware check dependencies readiness and keep the Controller methods clean of checking the dependencies readiness for each route.

Your controllers shouldn't check for readiness, the services itself should check it.

BTW I don't want to inject the dependency to the middleware. I think i might create a decorator and decorate each method to perform such validation. Still duplicated code but a decorator looks better than code-duplication to me.

Yes, you can do that too, but if you do it via a vanilla decorator then you won't have access to routing-controller itself.

Feel free to share your thoughts.

I am still thinking you should handle this in your service (the way you want, returning a promise for deferred handling or throwing an error.) By trying to check the service readiness outside of the service you break the encapsulation of logic. Your middleware doesn't need to throw, your service needs to throw when it's not ready.

I am still thinking you should handle this in your service (the way you want, returning a promise for deferred handling or throwing an error.) By trying to check the service readiness outside of the service you break the encapsulation of logic. Your middleware doesn't need to throw, your service needs to throw when it's not ready.

Oh now I understand what you mean. Yes you're right. But right now the service code, which was not written by me, works that way so I need to adapt until I can fix that.
BTW I would really consider exposing the controller instance to middlewares as this would open up many other options.

Yes, you can do that too, but if you do it via a vanilla decorator then you won't have access to routing-controller itself.

What do you mean exactly? If I apply my own decorator after the ones from routing-controller then routing-controller will call my middleware before then actual route implementation (which will need to be called by my middleware)

Isn't this the whole point of having a middleware? To perform "guards" over real code?

A given middleware shouldnt know anything about other middlewares in the middleware chain. they all should be "self-contained". A controller (the whole routing-controllers actually) acts as a one big middleware. So accessing controller instance (part of one middleware) in other middleware would break the middleware separation principle. Only thing (in express example) that travels between middlewares is the request (and response) object itself.
Can you not just share an instance of your service between controller and a middleware via a DI container (not a best practice, but something to start with).
say, something like (pseudo-code, not tested in any way):
export class Middleware implements ExpressMiddlewareInterface {
   @Inject('my-service')
   protected service;

    use(request: any, response: any, next?: (err?: any) => any): any {
         if(!service.isInitialized()) {
             throw 'service not ready';
         }
         next();
    }

}

class Controller {

   @Inject('my-service')
   protected service;

   @Get('/')
   @UseBefore(Middleware)
   anAction(){
          // we want request to reach action only when service is "ready"
   }
}

@sh3d2 one issue is that the service being injected can change for each request (i.e. depends on currentUser). How would you handle that in routing-controller?

authors: NoNameProvided sh3d2 tonyxiao vekexasia

repo: pleerock/routing-controllers


text:
Update perfolation to 1.2.8

Updates com.outr:perfolation from 1.1.7 to 1.2.8.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.outr", artifactId = "perfolation" } ]

labels: library-update, semver-minor

Superseded by #197.

repo: plokhotnyuk/fast-string-interpolator


text:
Improvements to dev proxy

Prefer RAZZLE_INTERNAL_API_PATH over RAZZLE_API_PATH for devProxyToApiPath. This makes more sense (the proxy target is accessed from the Volto server side) and it makes the dev proxy work without additional configuration when running Volto in a Docker container RAZZLE_API_INTERNAL_API_PATH is already set correctly.
Keep the URL protocol from the API path in the virtual hosting path passed to the backend, instead of hardcoding http. This lets the backend generate correct URLs when the backend is served over https.
Use a new environment variable, RAZZLE_DEV_PROXY_INSECURE, to control whether the proxy checks certificates on the backend.
Always log where API paths are proxied on startup, not only in development mode.
In the APIResourceWithAuth helper, always use devProxyToApiPath, not only in development mode. It's a potentially confusing inconsistency.

With these changes, it's possible to run Volto with a remote backend served over https. For example:
RAZZLE_INTERNAL_API_PATH=https://demo.plone.org RAZZLE_PROXY_REWRITE_TARGET=/++api++ RAZZLE_DEV_PROXY_INSECURE=1 yarn start

Note: I still need to check if there are any implications for the docs.

@davisagli seamless traefik docker config:
  routers:
    frontend:
      rule: "Host(`localhost`)"
      service: frontend
    backend:
      rule: "Host(`localhost`) && PathPrefix(`/++api++`)"
      service: backend
      middlewares:
        - backend

  middlewares:
    backend:
      replacePathRegex:
        regex: "^/\\+\\+api\\+\\+($|/.*)"
        replacement: "/VirtualHostBase/http/localhost/plone/++api++/VirtualHostRoot$1"

  services:
    frontend:
      loadBalancer:
        servers:
          - url: "http://host.docker.internal:3000"
    backend:
      loadBalancer:
        servers:
          - url: "http://host.docker.internal:55001"

has localhost on it, could be the problem?

works like a charm... We should document it properly.

authors: davisagli sneridagh

repo: plone/volto


text:
Use electron-builder and webpack@3

@chriddyp Could you review this PR?

I haven't gone as far as I originally planned with this work, but I'm going to open a PR in the main repo, so that people can test the installers generated with electron-builder.
A brief overview of what this PR does:

now falcon uses a patched version of ibm_db from my repo with @tarzzz 's fix (this is necessary for electron-builder to work)
I've upgraded dependencies if no code change was required (e.g. now we are using webpack@3 and mysql2)
I've removed unused dependencies, files and folders.
when possible I've moved modules from dependencies to devDependencies

Now the procedure to generate installers is:
$ yarn install
$ yarn build
$ yarn run pack

(Beware that yarn pack and yarn run pack do different things)
The procedure to build the app locally and test is still the same:
$ yarn install
$ yarn run rebuild:modules:electron
$ yarn build
$ yarn start

this looks great! 💃

authors: chriddyp n-riesco

repo: plotly/falcon-sql-client


text:
K8s resources adjustment

part of plotly/streambed#11766
as per below I've miss-understood the CPU metric used by the auto-scale
It is based of the cpu requests in our case it is very low at 100m and the percentage set is 90% so that mean at 90m we start scaling and by that it start spinning up new node. As per below:
kubectl describe hpa

  Normal  SuccessfulRescale  38m (x591 over 36d)   horizontal-pod-autoscaler  New size: 4; reason: cpu resource utilization (percentage of request) above target
  Normal  SuccessfulRescale  14m (x499 over 36d)   horizontal-pod-autoscaler  New size: 5; reason: cpu resource utilization (percentage of request) above target
  Normal  SuccessfulRescale  10m (x98 over 36d)    horizontal-pod-autoscaler  New size: 10; reason: cpu resource utilization (percentage of request) above target
  Normal  SuccessfulRescale  6m22s (x29 over 36d)  horizontal-pod-autoscaler  New size: 14; reason: cpu resource utilization (percentage of request) above target
  Normal  SuccessfulRescale  20s (x1548 over 36d)  horizontal-pod-autoscaler  New size: 3; reason: All metrics below target

so in our case we barely use 1400m so by increase the requests to 400m + a CPU target of 150% = 600m * 3  total of 1800m which give us more than what we need. Worst case the auto-scale will kick-in.

@scjody ready for review

@mag009 I don't understand your explanation. Can you provide more details on what's happening now and how it needs to change?
It looks like the old target CPU utilization was 30% - where does 90% (in your explanation) come from? I also don't understand why we need to increase the CPU requests from 100m to 400m. Doesn't that number just affect scheduling, in other words what other pods can coexist on the same node as an imageserver pod?
Finally have you done any load testing of the new values to make sure the cluster still scales up when needed?

@mag009 I don't understand your explanation. Can you provide more details on what's happening now and how it needs to change?

From the metric above, we can see how often we scaled. In our case the auto-scale add/remove new node due to the node affinity that prevent from having 2 imageserver of running on the same node.

For example : We scaled to 14 replicas 29 times during  last 36 days, which represent  90m / 940m per node (waste of resources).

The goal is to maximized the utilization of our resources and save money

It looks like the old target CPU utilization was 30% - where does 90% (in your explanation) come from? I also don't understand why we need to increase the CPU requests from 100m to 400m. Doesn't that number just affect scheduling, in other words what other pods can coexist on the same node as an imageserver pod?

I manually changed the value from 30% -> 90% , it was constantly taking up/down nodes and I saw the bill was increasing ( should of been in a pr  ).

Correct the cpu requests is for scheduling only. We could leave it to 100m and set the TargetCPU to 600% = 60% Utilization per node.

Finally have you done any load testing of the new values to make sure the cluster still scales up when needed?

I've tested on stage by generating load using ab -n 10000 -c 20 -p 0.json http://10.128.0.17:9091/  with single file in parallel and with random sized image to simulate regular traffic.
As we can see the result are much more efficient:
Metrics:                                               ( current / target )
  resource cpu on pods  (as a percentage of request):  457% (457m) / 600%
Min replicas:                                          3
Max replicas:                                          6
Deployment pods:                                       3 current / 3 desired

kubectl top pods
NAME                           CPU(cores)   MEMORY(bytes)
imageserver-588b9fcd55-fx4zw   471m         2216Mi
imageserver-588b9fcd55-rqgj2   420m         1186Mi
imageserver-588b9fcd55-sv56m   480m         1813Mi

kubectl top node
NAME                                   CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
gke-stage-default-pool-943c54e3-p8gl   496m         52%    2843Mi          107%
gke-stage-default-pool-e4669036-6gxh   677m         72%    3064Mi          115%
gke-stage-default-pool-e4669036-lpdr   393m         41%    2530Mi          95%

this is how prod currently looks like under (load) :
Metrics:                                               ( current / target )
  resource cpu on pods  (as a percentage of request):  34% (34m) / 90%
Min replicas:                                          3
Max replicas:                                          18
Deployment pods:                                       10 current / 10 desired

kubectl top pods
NAME                           CPU(cores)   MEMORY(bytes)
imageserver-7f65b96d76-229b4   40m          452Mi
imageserver-7f65b96d76-486tc   26m          594Mi
imageserver-7f65b96d76-96hsv   27m          430Mi
imageserver-7f65b96d76-d86ks   102m         1182Mi
imageserver-7f65b96d76-h7h9x   110m         1807Mi
imageserver-7f65b96d76-pq5bp   34m          402Mi
imageserver-7f65b96d76-snbk9   66m          638Mi
imageserver-7f65b96d76-vc648   92m          1730Mi

kubectl top node
NAME                                  CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
gke-prod-default-pool-2e5abd50-2b7t   105m         11%    1381Mi          52%
gke-prod-default-pool-2e5abd50-2s37   80m          8%     1296Mi          49%
gke-prod-default-pool-2e5abd50-br3w   97m          10%    763Mi           28%
gke-prod-default-pool-2e5abd50-j9vd   79m          8%     952Mi           35%
gke-prod-default-pool-e20874d7-6lhh   58m          6%     878Mi           33%
gke-prod-default-pool-e20874d7-7f4x   65m          6%     875Mi           33%
gke-prod-default-pool-e20874d7-kgwd   130m         13%    2413Mi          91%
gke-prod-default-pool-e20874d7-t0w8   67m          7%     773Mi           29%
gke-prod-default-pool-ed1d55e6-0f5q   184m         19%    2618Mi          99%
gke-prod-default-pool-ed1d55e6-gs16   158m         16%    1936Mi          73%

I manually changed the value from 30% -> 90% , it was constantly taking up/down nodes and I saw the bill was increasing ( should of been in a pr ).

Yes, this should have been a PR, or at least a discussion with the team. When did you make this change?

Correct the cpu requests is for scheduling only. We could leave it to 100m and set the TargetCPU to 600% = 60% Utilization per node.

Where does 600% come from? How is that equivalent to 90% in your original explanation? Can you explain exactly what these numbers mean and how you calculated them?
Thanks for the details on your testing. My concern is: with the new settings, are we autoscaling enough to keep up with the load? Do you have any data on this?

I manually changed the value from 30% -> 90% , it was constantly taking up/down nodes and I saw the bill was increasing ( should of been in a pr ).

Yes, this should have been a PR, or at least a discussion with the team. When did you make this change?

I made the change on Sept 29 2-3 days after releasing it . I saw it was using 18 nodes so i just reacted and increased the %.

Correct the cpu requests is for scheduling only. We could leave it to 100m and set the TargetCPU to 600% = 60% Utilization per node.

Where does 600% come from? How is that equivalent to 90% in your original explanation? Can you explain exactly what these numbers mean and how you calculated them?

I never said it was equivalent of 90%, although I forgot to mention that we need to increase it in order to maximized the utilization of our nodes.
This is the math I used for that:
replicas 18 * 90m =  1620m
replicas 3 * 600m ( 100m with a CPUtarget of 600% = 600m )  = 1800m

Thanks for the details on your testing. My concern is: with the new settings, are we autoscaling enough to keep up with the load? Do you have any data on this?

This graph represent our highest peak during the last 30 days :

on all 3 pools central-a , central-b and central-c we never reached out more than 20% of cpu utilization.
We can set the CPUtarget to a less aggressive value  : 200%  and re-evaluate in a month ?

I made the change on Sept 29 2-3 days after releasing it .

OK, so it's been at 90% for a while, so we need to increase from that number. Got it.

This is the math I used for that:
replicas 18 * 90m = 1620m
replicas 3 * 600m ( 100m with a CPUtarget of 600% = 600m ) = 1800m

I still don't understand. The calculations alone don't really help me understand the reasoning - why are these the numbers that we want to change to? (Specifically your PR sets CPU requests to 400m and target CPU utilization to 150%. I'm OK discussing either these numbers or a different proposal, but I really want to understand where they come from before we make any more changes.)
I'm also still concerned about the safety of these changes. We don't want to end up in a situation where the cluster is at capacity but autoscaling doesn't happen. I thought from the work in #9865 we'd be able to say something like "When the CPU usage of our imageserver pods is over XX%, we need to scale up", and from there we could implement a solution. Would you be able to let us know these numbers? (If you'd still need to put in a lot of  effort to figure out these numbers we could consider increasing the autoscaling parameters gradually and keeping an eye out for problems on prod, but my understanding is you already did the needed tests in #9865 and I'd prefer to take a safer approach based on measurements.)

I made the change on Sept 29 2-3 days after releasing it .

OK, so it's been at 90% for a while, so we need to increase from that number. Got it.

This is the math I used for that:
replicas 18 * 90m = 1620m
replicas 3 * 600m ( 100m with a CPUtarget of 600% = 600m ) = 1800m

I still don't understand. The calculations alone don't really help me understand the reasoning - why are these the numbers that we want to change to? (Specifically your PR sets CPU requests to 400m and target CPU utilization to 150%. I'm OK discussing either these numbers or a different proposal, but I really want to understand where they come from before we make any more changes.)

We have a total of 940mCPU per node and a minimum of 3 nodes ( 1 per zone ). Running 24/7

A total of 2820mCPU
1391mCPU is allocated to kube-system pods
Which leaves us 1429mCPU for the imageserver.

Based on the highest CPU request we had over the last 30 days (~1500mCPU).  As per graph : https://github.com/plotly/orca/pull/144#issuecomment-436082074
This is where I got the 600 * 3 replicas = 1800mCPU. I agree it's a bit too aggressive :smile:  but my goal was to avoid scaling and better utilized the node when we know that this is the only thing running.

I'm also still concerned about the safety of these changes. We don't want to end up in a situation where the cluster is at capacity but autoscaling doesn't happen. I thought from the work in #9865 we'd be able to say something like "When the CPU usage of our imageserver pods is over XX%, we need to scale up", and from there we could implement a solution. Would you be able to let us know these numbers? (If you'd still need to put in a lot of effort to figure out these numbers we could consider increasing the autoscaling parameters gradually and keeping an eye out for problems on prod, but my understanding is you already did the needed tests in #9865 and I'd prefer to take a safer approach based on measurements.)

I do have these number as I pointed out above : https://github.com/plotly/orca/pull/144#issue-227995995 these represent the number of time it scaled-up/down. It's hard to measure from this...  It tells me that we scale too often.
CPU requests for a week :

We can see that it peaks often explaining the the scale-up/down.
As for #9865 I didn't have any metrics as the auto-scale wasn't setup yet.

@scjody what you say if I change the requests CPU to 300mCPU and a target of 90%

it should cover most of our small peaks and avoid us to spin-up new nodes.

Does it sound acceptable to you?

@mag009 I agree that we're scaling up too often. Obviously though we need to be concerned with the availability and responsiveness of the service, so we need to make sure we don't go too far in the other direction (in other words not scaling up often enough).
It doesn't sound like we have any measurements or data to support your new proposal though. How much time would it take for you to test autoscaling by doing load testing using stage? Like I said above if it's going to take a significant amount of time then experimenting using prod may be the way to go, but I'd like to consider the tradeoffs first.

@mag009 I agree that we're scaling up too often. Obviously though we need to be concerned with the availability and responsiveness of the service, so we need to make sure we don't go too far in the other direction (in other words not scaling up often enough).
It doesn't sound like we have any measurements or data to support your new proposal though. How much time would it take for you to test autoscaling by doing load testing using stage? Like I said above if it's going to take a significant amount of time then experimenting using prod may be the way to go, but I'd like to consider the tradeoffs first.

Should take me roughly 2-3h to test.

repo: plotly/orca


text:
MsSQL Express Compatibility

I'd like to know if the Plotly Database Connector (when doing a MsSQL connection) supports a MSSQL EXPRESS EDITION database.
I tried to connect using the "sa" username and its password but nothing happened. It gives me the error:
failed to connect to [hostname]:[PortNumber] - connect ECONNREFUSED [my IP address]:[PortNumber]
This are my inputs:

Username: sa
Password: mypassword
Host: myHost
Port: (I left this port blank)
Database: myDB

So, does it is compatible?

Hi! After some searching it seems the connector currently does not support MSSQL EXPRESS (relevant sequelize issue) but it would it should be an easy fix.
Relevant code in database-connector https://github.com/sequelize/sequelize/issues/3097#issuecomment-73798671
A new option 'instanceName' should be provided.
We welcome contributions from the community and will be glad to review them and work on them to include them in the connector.

Forgive my ignorance but... I searched in all the project and I just don't get to know which path does contains the sequelize connector, also, I downloaded the project and just can't make it start (most of it because I don't even know how to do it).
Thanks for your attention! :)

Hey! Thanks you for getting your hands dirty :P
What did you try exactly to run it and how did it fail?
The following commands should get you up and running.
npm install
npm run build
npm run start

Hey Alexandre! I'm happy to tell you that I got myself a big cup of coffee and finally found the file you kindly referenced to me, so, I made the changes in my application and it worked!
In my connection-manager.js which is located in plotly-database-connector/resources/app/node_modules/sequelize/lib/dialects/mssql/connection-manager.js I just added instanceName: 'SQLEXPRESS' and everything worked fine!
Thank you again, for your consideration to answer my questions. I also made a [question] in(http://stackoverflow.com/questions/42589886/plotly-and-sql-server-express-compatibility) StackOverflow. And pasted the answer there.

If you wish, you could create a branch in this repository and make a PR that would add that instanceName parameter as one of the inputs the user gives when he/she selects Microsoft SQL as the database to which it has to connect. This way others will only have to enter in the user interface without having to change the source code. I can help you with reviewing the PR. It should be quite simple.
This is the place where it could be added in the front end https://github.com/plotly/plotly-database-connector/blob/master/app/constants/constants.js#L16
And  we can read that input in the back end here https://github.com/plotly/plotly-database-connector/blob/master/backend/persistent/datastores/Sql.js#L14

I just did it, I hope that's the correct way to do it.
I'd appreciate if you told me if i did it right or wrong :)

@ArturoAguileraV The project has been quite since your last comment (sorry about that). But now a new version is about to be released that includes a fix for this issue. You can download a prerelease. Please, let us know if you have any issues:
https://github.com/plotly/falcon-sql-client/releases/tag/v2.3-pre

Fixed in https://github.com/plotly/falcon-sql-client/releases/tag/v2.3.2

repo: plotly/plotly-database-connector


text:
🛑 KCG is down

In e18fff2, KCG (https://kunstrijclubgroningen.nl) was down:

HTTP code: 0
Response time: 0 ms

Resolved: KCG is back up in b90ba1a after 34 minutes.


text:
no real changes

package.json keeps getting prettified back and forth, plus package-lock keeps faffing around.

heh, that's actually not true- the changes are pretty significant, it's just that this is an old PR title apparently. This is the breaking 0.25 changes from all the other repos.

repo: plumpstack/plump-store-postgres


text:
PlusPage 和 PlusTable自适应

需要增强的组件/模块
PlusPage PlusTable
描述
目前的版本，没有自适应的功能，每页数据多了之后，要一直往下滚动才能看到分页
额外留言（可选）
No response

我也有类似需求，通过 flex 布局来解决的：
<script lang="ts" setup>
// ...
</script>

<template>
  <div class="auto-layout">
    <PlusPage />
 </div>
</template>

<style lang="scss">
// 高度自适应
.auto-layout {
  padding: 16px;
  height: calc(100vh - var(--pro-layout-height-header));

  .plus-page {
    display: flex;
    flex-direction: column;
    height: 100%;

    .el-card.plus-page__table_wrapper {
      flex: 1;

      .el-card__body {
        height: 100%;

        .plus-table {
          display: flex;
          flex-direction: column;
          height: 100%;

          .el-table {
            flex: 1;
          }

          .plus-pagination {
            padding-bottom: 0;
          }
        }
      }
    }
  }
}
</style>

authors: FuAdmin stormzhangbx

repo: plus-pro-components/plus-pro-components