Support for RDataFrame RAdoptAllocator

The RDataFrame structure
vector<float,ROOT::Detail::VecOps::RAdoptAllocator >
is stored in some ROOT files I am analysing. The class docs in ROOT are here:
https://root.cern/doc/master/classROOT_1_1VecOps_1_1RVec.html
It would be great if support could be added for this type.
Thanks a lot!
Donal

Does this file have an example that I can use for testing?
https://github.com/donalrinho/uproot_fcc_edm4hep_test/blob/master/data/test.root
(This kind of fix has to be test-driven.) Thanks!

Hi Jim,
I'll prepare a test repo for you with a file!
Cheers,
Donal

Hi Jim,
Please find a test file and notebook here:
https://github.com/donalrinho/fcc_RAdoptAllocator_test
The ROOT file contains the same information stored both in std::vector format and the RAdoptAllocator format for comparison. tree.show() can read the std::vector branches, but not the RAdoptAllocator ones.
Cheers,
Donal

TIL std::vector can take more than one parameter:
>>> import uproot4
>>> t = uproot4.open("issue-172.root:events")
>>> t["rec_part_px_VecOps"].member("fClassName")
<TString 'vector<float,ROOT::Detail::VecOps::RAdoptAllocator<float> >' at 0x7fa383f68510>
>>> t["rec_part_px_VecOps"].typename
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
...
ValueError: invalid C++ type name syntax at char 13

    vector<float,ROOT::Detail::VecOps::RAdoptAllocator<float> >
-----------------^
in file issue-172.root

But it can take another argument: the allocator. First step is to add that to the type parsing (and perhaps all the rest of the STL containers should take an optional allocator as well).

This was the issue:
https://github.com/scikit-hep/uproot4/blob/08f7df2e09f581c57a96433caf33713332061750/tests/test_0172-allow-allocators-in-vector-typenames.py#L15
but it's resolved now (by ignoring the allocators; we don't need them for read-only access in Python). There weren't any other issues in the way, since everything was just a std::vector<float>.

Thanks for all the work here! Cheers, Donal


Handle extra args to db._query when using aql templates

This corrects the behavior of db._query when using aql template strings so additional arguments no longer result in an error. An object as initial argument is now always assumed to contain at least the query and bindVars.

http://jenkins01.arangodb.biz:8080/view/PR/job/arangodb-matrix-pr/4116/


We should call go mod download if not vendoring the deps

In multi-module projects, that don't vendor the deps we should call the go mod download command, so the sums be calculated in workspace file.
/kind bug

/assign


"Playing audio:" messages appear after the line has been spoken.

Currently, the Piper TTS spoken audio line prints its contents after the complete line is said. For example, when the line "Playing audio: Its lazy rhythm, a hypnotic beat" is printed, the line's contents have already been said. I'm unsure if this is the intended behavior - it might be intentionally designed this way to not "spoil" the next line - however it does seem odd.
Thank you so much for your work on this project, this is amazing!

Good catch! All fixed now. Thanks for pointing that out :)


feat: evaluator

This is a PRQL interpreter. It does not allow reading any data from outside sources, but only computes the values of expressions, defined in PRQL.
For example:
1 + 2

... is evaluated into:
3

I've implemented the following things:

feat: basics of eval
pipelines
select, derive, filter
aggregate
arg closures
window and columnar

The purpose of this a tool to aid language design, issue #2723 in particular. I've implemented behavior of "Solution 2", as a trial to see how feasible it is.
Adapting this evaluator is much easier than adapting the whole compiler, so this is a nice tool for experimentation with new language features.

Aside: I'm actually quite impressed with language design, as the core of the language semantics fits into 400 SLOC.

Great idea for iterating on ideas!
Can you give an example of how I would actually use it?
So I run
prqlc eval "{{a_a = 4, a_b = false}, b = 2.1 + 3.6, c = [false, true, false]}"

and then what do I get back?

So idea is that some PRQL expressions are values are some are not:

all literals are values,
arrays of values are values,
tuples of values are values,
functions are values,
function calls are not values,
operations are not values.

Eval takes an arbitrary expression and converts it into a value. So, evaluating function calls and operations.
Your example is already a value, so it would not be changed. But you could pipe it trough derive  {d = (floor b) + 2}, which would return:
{{a_a = 4, a_b = false}, b = 2.1 + 3.6, c = [false, true, false], d = 7}


Remove the 'PlatformStats/v1' components

This was the first implementation of our stats visualization.
We're now using v2 so let's remove all this code.

Done!


[Bug]:  Button is not working

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the bug
There are two buttons Get started and Courses. but When i press those button it is not navigating , i need to press those words to get navigated. This makes user experience down. I can fix this issue.
Expected behavior
When user presses that button it should navigate.
Add ScreenShots

On which device are you experiencing this bug?
No response
Record

[X] I have read the Contributing Guidelines
[X] I'm a GSSOC'24 contributor
[X] I have starred the repository

Yes, you can try it. However, please note that clicking directly on the button's text works as intended. This is not a bug. If you have any other ideas or suggestions, please share them with us, and we can work on them together.

I will add Node js in the tutorial section and i will make those card size in loved by many users section , card size as fixed so that it will be evenly aligned and add neumorphism effect there.

okay, work on node.js tutorial and create new issue and close it.


Potential discrepancy between using BAM or FASTQ

Hey,
I'm attempting to extract TCR information from mouse RNA-seq data. For this I am hoping to use the BAM file from the alignment, as the pipeline utilised UMIs which have been used to correct PCR duplicates within the BAM. I tried TRUST4 on one of my BAM files and the important outputs (such as cdr3.out) were empty. I then tried on the raw FASTQ files and all of the outputs contained data. Below are my two commands.
BAM file approach (135 reads found, no cdr3 output):
/home/regmgbe/Programmes/TRUST4/run-trust4 -b ./merged_bam/MV19.merged.bam -f /home/regmgbe/Programmes/TRUST4/mouse/GRCm38_bcrtcr.fa --ref /home/regmgbe/Programmes/TRUST4/mouse/mouse_IMGT+C.fa
FASTQ file approach (56038 reads found, cdr3 output):
/home/regmgbe/Programmes/TRUST4/run-trust4 -1 ../fastq/190111_MV19_mRNA_Mm_Naive-YFPneg_Rep1_R1.fastq.gz -2 ../fastq/190111_MV19_mRNA_Mm_Naive-YFPneg_Rep1_R2.fastq.gz -f /home/regmgbe/Programmes/TRUST4/mouse/GRCm38_bcrtcr.fa --ref /home/regmgbe/Programmes/TRUST4/mouse/mouse_IMGT+C.fa
The samples were mapped to mm10, so I would think it's not an issue with the reference. The other thing to note is the pipeline we used output a mapped and unmapped BAM file, which I then merged together (using samtools merge, default options) for use with TRUST4, so if TRUST4 requires a BAM file sorted in a specific way, that might be the issue (although no error/warning was called during the run)

I guess the flag field in BAM might be wrong after merging, can you try to run TRUST4 with parameter --abnormalUnmapFlag on the BAM input test case?

Thanks for the speedy response! I just tried that but no improvement unfortunately, full output below.
[regmgbe@login13 dedup]$ /home/regmgbe/Programmes/TRUST4/run-trust4 -b ./merged_bam/MV19.merged.bam --abnormalUnmapFlag -f /home/regmgbe/Programmes/TRUST4/mouse/GRCm38_bcrtcr.fa --ref /home/regmgbe/Programmes/TRUST4/mouse/mouse_IMGT+C.fa
[Tue Feb 16 14:42:55 2021] TRUST4 begins.
[Tue Feb 16 14:42:55 2021] SYSTEM CALL: /lustre/home/regmgbe/Programmes/TRUST4/bam-extractor -b ./merged_bam/MV19.merged.bam -t 1 -f /home/regmgbe/Programmes/TRUST4/mouse/GRCm38_bcrtcr.fa -o TRUST_MV19_toassemble  -u
[Tue Feb 16 14:42:55 2021] Start to extract candidate reads from bam file.
[Tue Feb 16 14:43:20 2021] Finish obtaining the candidate read ids.
[Tue Feb 16 14:43:44 2021] Finish extracting reads.
[Tue Feb 16 14:43:44 2021] SYSTEM CALL: /lustre/home/regmgbe/Programmes/TRUST4/trust4  -f /home/regmgbe/Programmes/TRUST4/mouse/GRCm38_bcrtcr.fa -o TRUST_MV19 -1 TRUST_MV19_toassemble_1.fq -2 TRUST_MV19_toassemble_2.fq
[Tue Feb 16 14:43:44 2021] Found 135 reads.
[Tue Feb 16 14:43:44 2021] Finish sorting the reads.
[Tue Feb 16 14:43:44 2021] Finish rough annotations.
[Tue Feb 16 14:43:44 2021] Assembled 7 reads.
[Tue Feb 16 14:43:44 2021] Try to rescue 0 reads for assembly.
[Tue Feb 16 14:43:44 2021] Rescued 0 reads.
[Tue Feb 16 14:43:44 2021] Extend assemblies by mate pair information.
[Tue Feb 16 14:43:44 2021] Remove redundant assemblies.
[Tue Feb 16 14:43:44 2021] Finish assembly.
[Tue Feb 16 14:43:44 2021] SYSTEM CALL: /lustre/home/regmgbe/Programmes/TRUST4/annotator -f /home/regmgbe/Programmes/TRUST4/mouse/mouse_IMGT+C.fa -a TRUST_MV19_final.out -t 1 -o TRUST_MV19  -r TRUST_MV19_assembled_reads.fa > TRUST_MV19_annot.fa
[Tue Feb 16 14:43:45 2021] Start to annotate assemblies.
[Tue Feb 16 14:43:45 2021] Start to realign reads for CDR3 analysis.
[Tue Feb 16 14:43:45 2021] Compute CDR3 abundance.
[Tue Feb 16 14:43:45 2021] Finish annotation.
[Tue Feb 16 14:43:45 2021] SYSTEM CALL: perl /lustre/home/regmgbe/Programmes/TRUST4/trust-simplerep.pl TRUST_MV19_cdr3.out  > TRUST_MV19_report.tsv
[Tue Feb 16 14:43:45 2021] TRUST4 finishes.

Can you show me a few lines of the BAM file? Thank you.

Sure:
[regmgbe@login13 merged_bam]$ samtools view MV19.merged.bam | head -n 10
J00130:114:H2VJGBBXY:8:2115:21592:17561	73	chr1	3036631	50	26M	*	0	0	AATCCTGTTCTACTAACCCTTTCATG	JJJJJJJFJJJJJJJJJJJJJJJJJJ	AS:i:0	XN:i:0	XM:i:0	XO:i:0	XG:i:0	NM:i:0	MD:Z:26	YT:Z:UNH:i:1	XS:A:-
J00130:114:H2VJGBBXY:8:2103:5233:11829	73	chr1	3053905	50	24M	*	0	0	AGCAATTTTAAGATCATTGAGTTT	JJJJJJJJJJJJJJJJJJJJJJJJ	AS:i:0	XN:i:0	XM:i:0	XO:i:0	XG:i:0	NM:i:0	MD:Z:24	YT:Z:UNH:i:1	XS:A:-
J00130:114:H2VJGBBXY:8:1201:32197:36851	89	chr1	3087006	50	69M	*	0	0	GAGAGAGAGAGAGAGAGAGAGAGAGAGAGAAAGAGAGAAAGGAAGGAAGGAAGGAAGGAAGGAAGGAAG	<7FAFFFFJJJJJJJAAFJF<FJJF-F7FFJJFFFAFJJJFF77-JJJJJJJ7FFJ<JJJJJJJFFFFF	AS:i:0	XN:i:0	XM:i:0	XO:i:0	XG:i:0	NM:i:0	MD:Z:69	YT:Z:UU	NH:i:1	XS:A:+
J00130:114:H2VJGBBXY:8:2107:19532:33264	73	chr1	3202225	50	70M	*	0	0	CTATCAATCTATTTATCTATCTATCTATCATCTATCTATCTATCTATCTATCAGTCTATCAGTCTATTTA	JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJJJJJ	AS:i:0	XN:i:0	XM:i:0	XO:i:0	XG:i:0	NM:i:0	MD:Z:70	YT:Z:UU	NH:i:1	XS:A:-
J00130:114:H2VJGBBXY:8:2227:22262:13060	89	chr1	3246476	50	41M	*	0	0	CAATCACATTTTAAAAAGTAACAGATAACAAGGAACAAAGA	JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ	AS:i:0	XN:i:0	XM:i:0	XO:i:0XG:i:0	NM:i:0	MD:Z:41	YT:Z:UU	NH:i:1	XS:A:+
J00130:114:H2VJGBBXY:8:1119:20699:35356	89	chr1	3454015	50	30M	*	0	0	TGGGGTCTTTGGCGGTTCTATTTACATTTT	JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ	AS:i:0	XN:i:0	XM:i:0	XO:i:0	XG:i:0	NM:i:0	MD:Z:30	YT:Z:UNH:i:1	XS:A:+
J00130:114:H2VJGBBXY:8:1119:21227:35426	89	chr1	3454015	50	30M	*	0	0	TGGGGTCTTTGGCGGTTCTATTTACATTTT	JJJJJJJJJFJJJJJJJJJJJJJJJJJJJF	AS:i:0	XN:i:0	XM:i:0	XO:i:0	XG:i:0	NM:i:0	MD:Z:30	YT:Z:UNH:i:1	XS:A:+
J00130:114:H2VJGBBXY:8:2211:5913:25843	89	chr1	3515074	50	48M	*	0	0	GAAGAGAATGAGAAGGTAACAAGGTCCAAGTACACAATACACCGGAGA	JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ	AS:i:0	XN:i:0XM:i:0	XO:i:0	XG:i:0	NM:i:0	MD:Z:48	YT:Z:UU	NH:i:1	XS:A:+
J00130:114:H2VJGBBXY:8:2208:17259:9069	73	chr1	3522612	50	70M	*	0	0	GAACACGTCACCAGTCACCTACAACATGTTCGGACACTTCAAGTTCTGCATCACTCTCTGCGGAGGATAC	JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ	AS:i:-6	XN:i:0	XM:i:1	XO:i:0	XG:i:0	NM:i:1	MD:Z:5T64	YT:Z:UU	NH:i:1	XS:A:-
J00130:114:H2VJGBBXY:8:2208:17310:9367	73	chr1	3522612	50	70M	*	0	0	GAACACGTCACCAGTCACCTACAACATGTTCGGACACTTCAAGTTCTGCATCACTCTCTGCGGAGGATAC	JJJJJJJJJJJJJJJJFJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJFJJJJJJJJJJJJJFJJJ	AS:i:-6	XN:i:0	XM:i:1	XO:i:0	XG:i:0	NM:i:1	MD:Z:5T64	YT:Z:UU	NH:i:1	XS:A:-

It seems there are some trimmings and the read length becomes quite short. Just want to make sure, which aligner did you use? Did you trim the reads in the BAM files? Did your BAM file contains the cases where one end is aligned and the other is not after merging? Can you grep the alignment of "J00130:114:H2VJGBBXY:8:2208:17259:9069"?
It's quite strange, TRUST4 expects the mate-pair to be next to each other in the BAM if one of them is not aligned, and should throw an error message and quit in your initial test.

Unfortunately this is third party unpublished data so I don't have that information to hand, I can try and get it though! You're right though, the BAM I've been supplied with does look quite strange..
For now here is the grep of that read ID, looks like the mate didn't align:
[regmgbe@login13 merged_bam]$ samtools view MV19.merged.bam | grep J00130:114:H2VJGBBXY:8:2208:17259:9069
J00130:114:H2VJGBBXY:8:2208:17259:9069	73	chr1	3522612	50	70M	*	0	0	GAACACGTCACCAGTCACCTACAACATGTTCGGACACTTCAAGTTCTGCATCACTCTCTGCGGAGGATAC	JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ	AS:i:-6	XN:i:0	XM:i:1	XO:i:0	XG:i:0	NM:i:1	MD:Z:5T64	YT:Z:UU	NH:i:1	XS:A:-
J00130:114:H2VJGBBXY:8:2208:17259:9069	69	*	0	255	*	*	0	0	GAACACGTCACCAGTCACCTACAACATGTTCGGACACTTCAAGTTCTGCATCACTCTCTGCGGAGGATAC	JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ

It seems for unmapped alignment, it put the identical sequence from its aligned mate pairs? Could you please check for other reads to see whether this is the case? Could you please also share a few lines for reads whose both sides are not aligned?  Thank you.


[SnapshotSAS]Add Snapshot SAS

Can one of the admins verify this patch?

tests on storage-preview2 are failing, so even I merged conflicts(the conflict between this pull request and storage-preview2) the test will fail. So I will push the revision to resolve conflict when the tests on storage-preview2 are fixed

Created a new pull request based on storage-preview2 https://github.com/Azure/azure-sdk-for-python/pull/6445


1.0-alpha3 does not build on Xamarin.Forms <IP_ADDRESS>

When creating a new project with Xamarin.Forms <IP_ADDRESS>, as soon as you add Application Insights alpha3 the Android project just breaks and won't build anymore. If you remove Application Insights you can build the project successfully again.
I tested this with the local NuGet package.
All the errors are related to Resource.designer.cs file, like this one:
CS0117    'Resource.Styleable' does not contain a definition for 'Theme_actionBarSplitStyle'    demo_xamarin.Droid    C:\Users\x\Documents\Pessoal\Xamarin_Projects\demo_xamarin\demo_xamarin\demo_xamarin.Droid\Resources\Resource.Designer.cs

There are more than 150 errors, all related to this file.
I've tried many, many things, until I suspected the problem was the Insights package.
Does Application Insights work with Forms newer than <IP_ADDRESS>05?
If that's the case, I think this should be more explicit on the README:
Furthermore, the SDK has a dependency on <IP_ADDRESS>05

does not seem very clear to me. Newcomers might not understand you are talking about Forms version, and might assume this is a minimum dependency, and not hard dependency.

@akamud Unfortunately, Application Insights does not support Xamarin anymore and this SDK is deprecated and will not be maintained by us anymore, as explained in our Readme: https://github.com/Microsoft/ApplicationInsights-Xamarin#breaking-changes


Added  GetPackageFileName

Added TOSDevice.GetPackageFileName
Raised GetFileVersionInfo from private to public
Submitting this change to support an change in TOTAL that allows getting the version info from the DLL

Methods are in alpha order - in your change, they are not
If the function was redirected to TPlatformOSDevice (like others are), GetFileVersionInfo would not need to be made public
GetPackageFileName can be implemented in a simpler fashion, which I have now done in: https://github.com/DelphiWorlds/Kastri/compare/f41f6863144b...fa453cd2afaa


too many error logs with msg "empty args for matcher Host"

Bug Report
What did you do?
setup maesh 1.2.0 in EKS.
What did you see instead?
too many error logs with msg "empty args for matcher Host"
Output of mesh log: (1.2.0)
maesh-mesh-4spq4 maesh-mesh 2020-05-31T02:33:08.392792516Z time="2020-05-31T02:33:08Z" level=error msg="empty args for matcher Host, []" entryPointName=http-5000 routerName=logging-aes-kibana-443@http

What is your environment & configuration (arguments, provider, platform, ...)?

EKS 1.19
aes-kibana 443 is an external service of type = "ExternalName" in logging namespace.

Any quick workaround for this?

I have been able to reproduce the bug consistently. I discovered multiple problems while reproducing this bug:

ports is no required on a Service of type ExternalName. But the ShadowServiceManager is expecting them to have at least one. Resulting in an error in the logs:

time="2020-06-05T07:31:14Z" level=error msg="Unable to complete work \"default/my-service\": unable to sync shadow service: Service \"maesh-my-service-6d61657368-default\" is invalid: spec.ports: Required value"

Service of type ExternalName doesn't have a ClusterIP, which is used when generating the Host rule in the dynamic configuration. The output is invalid:

"routers": {
      "default-my-service-80": {
        "entryPoints": [
          "http-5000"
        ],
        "middlewares": [
          "block-all-middleware"
        ],
        "service": "block-all-service",
        "rule": "Host(`my-service.default.maesh`) || Host(``)",
        "priority": 1
      },

@kernel164 Thanks for reporting this, this service type is currently not supported on Maesh.

Any quick workaround for this?

As it is right now, the only workaround I can suggest is to put your ExternalName service in a dedicated namespace and specify this namespace in the ignoreNamespaces option of the controller.

Adding support for this type of Service would be challenging and its behavior would be different than other services:

Can't use TrafficTarget to authorize traffic as there's no destination pods you could target. So, in ACL mode, either we authorize everything (would be counter-intuitive) or we don't but in this case the service will never be reachable.
ExternalName services don't require ports to be defined. These ports are essential for shadow-services. We would have to find a new strategy to provide name.ns.maesh addresses when there's no ports.

For now, we are going to avoid evaluating these services, to prevent breaking the configuration of Traefik instances.
Follow-up issue for supporting ExternalName services: https://github.com/containous/maesh/issues/622.


added linux container insights agent image 05202021

Adding the Container Insights 5-20-2021 release. This release is also Linux only, so there is no updated Windows image to add.
I left the 03262021 image and removed the other two newer images because CI rolled back to 03262021 in production. We discovered an issue in the following two images and abandon those two releases. They will never be deployed again, so no need to have them in the agent baker.
@microsoft/docker-provider-devs

lgtm


Add AI text box when dialogue ends

This issue is about adding a new text box after predetermined dialogue is done, where AI answers can be inserted.

[ ] The solution to the issue has been reviewed by the relevant project manager and at least one other development team member who did not work on the issue.
[ ] If relevant, at least one unit test has been implemented and runs successfully in the code file.
[ ] If relevant, at least one usability test has been performed successfully without finding any unforeseen issues.
[ ] If relevant, documentation has been updated appropriately.
[ ] The amount of time spent on the issue during “In Progress” is noted in the backlog.
[ ] The amount of time spent on testing the issue during “In Review” is noted in the backlog.
[ ] The issue has been moved from “In progress” to “Done” in the backlog.

Issue for further development:
User is able to input a new question before the other has been dictated. This will override the previous dictation but not the textbox. Maybe implement a limitation such that the user cannot send a new question before the last one has started dictation.

To test the functionality:

Go through Bob the Builders dialogue tree with the skip button
When you have come all the way through the skip button will disappear and the NPC will say "That's all I have to say. Do you have any questions? Hold B to speak to me."
Try asking a question
The dialogue box will display "I'm thinking" while the program is waiting for a response from the API
When the response has arrived it should display in the dialogue box and be spoken by the NPC at the same time


[wip] Style redbox

Based on discussion in https://github.com/facebookincubator/create-react-app/pull/1101

Wow, great work.
Can we make it more obvious how collapsed trace works? Those dots are a bit confusing to me.

I was thinking the same. Wasn't sure if @Timer had something in mind
already.
I was thinking something like:
-----[ 7 internal paths collapsed ]-----

On Tue, Nov 29, 2016 at 13:21 Dan Abramov<EMAIL_ADDRESS>wrote:

Wow, great work.
Can we make it more obvious how collapsed trace works? Those dots are a
bit confusing to me.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Timer/create-react-app/pull/3#issuecomment-263670389,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPCCCePPz9du9hY6LuWSzHSH5dYQbcdks5rDHspgaJpZM4K_W8-
.

This from the other thread is good too:

5 stack frames in ~/react were omitted.
[Click to expand]

The dots need to go, they were just a placeholder I had to signify there was missing/hidden information.
I'd like to do the 7 collapsed or 5 stack frames omitted.
I can implement this.

I've got something coming up in juuuust a sec

@nicinabox Looks like the target of this PR is Timer's master branch rather than the redbox branch. You may need to reopen this with it pointing to that branch instead

Should we make it click to expand or leave it a key? And does a click toggle all omitted frames or only the group selected?

@ekoz Crap. Thanks for the heads up.

@ekosz that's fine, I can merge (and do merge) locally.

GH lets you edit branch target these days.

Should we make it click to expand or leave it a key? And does a click toggle all omitted frames or only the group selected?

Toggling all would probably be the easiest to implement. Toggling the one is probably closer to the user's expectation.

@gaearon Oh man thats awsome, sorry @nicinabox I'm behind the teams

Screenshot updated.

Considering doing all function names in black. I get too glazed trying to scan lots of the gray text.
What do you all think?
Before:

After:

@nicinabox initially, the internal function names were lighter because they were not important -- since we hide them by default now and the user has to say "I want to see internal calls", I think it's appropriate to have them darker (a.k.a the original color / same as non-internal) so I like it.
tl;dr I like the darker function names; looks good

What do you think about italicizing the internal names so we can distinguish them?

It's not terrible, but I find it a bit harder to grok compared to it's non-italicized cousins. Can you see the difference between the two at a glance?

If anything they start to look more important so I'd rather not.

I'm not sure if I dig the centering ...
I think I can tell the difference, is it the 1st and the 4th that are slightly less italic?

I'm not sure if I dig the centering

I can respect that. Normally I'm not a fan of centered text, but here's a little bit of the reasoning behind why I chose that:

On wide monitors it puts the text closer to the center of the screen where we're (likely) already positioned. Less head turning, more comfortable, especially when debugging.
There's a ton of unusable space on the right side otherwise. Only paths benefit from that long of line length.

@nicinabox I don't like it because it spans onto a new line now

Can we follow bootstrap convention?

.container {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}
@media (min-width: 768px) {
  .container {
    width: 750px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1170px;
  }
}

I thought about doing the bootstrap breakpoints originally, but it seemed like a lot of complexity in JS. I think you're going to end up with wrapping at some level regardless (either long errors or narrow windows). It's possible we should just widen the max-width to something that might accommodate most errors before they wrap.
Definitely interested in other folks thoughts on this.

Shouldn't be too hard to continue to use inline styles:
const containerStyle = {
  'padding-right': '15px',
  'padding-left': '15px',
  'margin-right': 'auto',
  'margin-left': 'auto',
  width: calcWidth(document.innerWidth),
};

function calcWidth(width) {
  if (width < 768) return 'auto';
  if (width >= 768 && width < 992) return '750px';
  if (width >= 992 && width < 1200) return '970px';
  return '1170px';
}

@nicinabox doesn't need to be done in js -- just a css file
See 965cf91c00c2e6f4c5d6c575f1f4233f1e3d82e7

It was not my intention to attempt to step on anyone's toes by making this modification (965cf91c00c2e6f4c5d6c575f1f4233f1e3d82e7), so I hope it wasn't taken this way.

Better not to bikeshed.


Error: ChannelName is invalid, please check and try again.

I'm trying to export a private channel, however to matter what i use for channel name, i get the error that the name is invalid.
I've tried using the name as it appears in the Slack UI, e.g., "proj-123" and I've also tried using the name as it appears in the web browser URL, e.g., "G8UDTMED6".
How do I find out what the valid channel name is?

Disregard. Just realized private channels are considered "groups" 😳


⚠ Roblox Devforum has degraded performance

In 6cb3033, Roblox Devforum (https://devforum.roblox.com) experienced degraded performance:

HTTP code: 200
Response time: 6003 ms

Resolved: Roblox Devforum performance has improved in e813824 after 20 minutes.


Shows on right of side of window instead of left on some links

To reproduce:

Go to: http://www.engadget.com/2015/08/11/moto-g-review-2015/
Resize your browser window so the image of the phone is being clipped by the bottom of the window
Move mouse into the image

Result:
The status bar is shown on the right side of the window
Expect:
The status bar to be shown on the left side of the window

This is expected behaviour. Minimal Status Bar tries to not cover the link you are hovering. As the whole image is the link area it tries to cover as little as possible of it as possible, which ends up putting the status bar on the right.
It does look a bit weird in the case of an image, but I am not sure it is worth coding a special edge-case just for that.

Oh, sorry, I didn’t realize this was how it was expected to work. =)  You may close this issue.

On Aug 11, 2015, at 2:09 PM, Martijn van der Ven<EMAIL_ADDRESS>wrote:
This is expected behaviour. Minimal Status Bar tries to not cover the link you are hovering. As the whole image is the link area it tries to cover as little as possible of it as possible, which ends up putting the status bar on the right.
It does look a bit weird in the case of an image, but I am not sure it is worth coding a special edge-case just for that.
—
Reply to this email directly or view it on GitHub https://github.com/visnup/Minimal-Status-Bar/issues/73#issuecomment-130078592.

No problem! I can see why it looks like unexpected behaviour when your cursor isn’t anywhere close to being blocked by the status bar, but that’s the usual problem this solves.
Closing now :smile:


unexpected end of JSON input

Hey,
After updating my notification-controller image version to 1.4.0 started to get this kind of errors.
What's the issue and how can I fix it ?
{"level":"error","ts":"2024-11-07T17:04:10.160Z","logger":"event-server","msg":"decoding the request body failed","error":"unexpected end of JSON input"}
{"level":"info","ts":"2024-11-07T17:05:03.650Z","logger":"event-server","msg":"discarding event, no alerts found for the involved object","eventInvolvedObject":{"kind":"Kustomization","namespace":"flux-system","name":"flux-system","uid":"f4758fc5-ddce-469f-8308-e0890de832aa","apiVersion":"kustomize.toolkit.fluxcd.io/v1","resourceVersion":"76164778"}}

Can you please post here the output of flux check


How to count the total amount of one user's GPU memory on all graphics cards by using nvitop?

Required prerequisites

[X] I have read the documentation https://nvitop.readthedocs.io.
[X] I have searched the Issue Tracker that this hasn't already been reported. (comment there if it has.)
[X] I have tried the latest version of nvitop in a new isolated virtual environment.

Questions
Thanks for the wonderful project!
How to count the total amount of one user's GPU memory on all graphics cards by using nvitop?
Thanks for any suggestions! :) @XuehaiPan

Hi @Charlie0257, thanks for raising this. Here is a code snippet:
# memory_usage.py

import itertools
from collections import defaultdict

from nvitop import Device, GpuProcess, NA, bytes2human

devices = Device.all()  # a list of all GPUs on the system
all_gpu_processes = list(  # a list of all GPU processes on all devices
    itertools.chain.from_iterable(
        (device.processes().values() for device in devices),
    ),
)

used_gpu_memory = defaultdict(int)
used_host_memory = defaultdict(int)
with GpuProcess.failsafe():  # ignore NoSuchProcess and AccessDenied exceptions
    for process in all_gpu_processes:
        username = process.username()
        if username is NA:
            continue  # the process is gone

        # Here we use int(memory) to convert N/A value to 0
        used_gpu_memory[username] += int(process.gpu_memory())
        used_host_memory[username] += int(process.host_memory())

print('used_gpu_memory:', dict(used_gpu_memory))  # dict of {username: used_gpu_memory in bytes}
print('used_host_memory:', dict(used_host_memory))  # dict of {username: used_host_memory in bytes}
print()

print(
    'used_gpu_memory:',
    {username: bytes2human(memory) for username, memory in used_gpu_memory.items()},
)
print(
    'used_host_memory:',
    {username: bytes2human(memory) for username, memory in used_host_memory.items()},
)

Hope this resolves your question.

Thanks for this answer! :)
I will close this issue.


Update Critical Specialization strings to remaster

We had a mix of some including "against your class DC" and some not. We should standardize on one or the other. I chose to include it, but let me know if you prefer without.

We should have the text be identical to the book. So whether we include it or not is decided for us.


Show list items name along with their index

Basically, if a list is a:

list of strings
list of attrset with a name attribute

It would be great to get the string along with the item index.
I’m asking for this because currently in order to browse the environment.systemPackages I need to enter each item and scroll to the name attribute to know what it is.
Thanks!

value previews for lists and attrsets are tricky, because Nix is lazy and just getting the type for one element can take a long time, which prevents us from evaluating anything else until its done. It might be possible to look at the options definitions instead of the config definition itself to get types and would be much faster, but even so expanding every package attrset might take a while.

I see what you mean for the attrsets, but for the list of strings shouldn’t it be easy?
Regarding the attrset, would it be possible to lazy load the name attribute when the list is rendered to avoid blocking the view for too long?

I think list of primitives could work, but for attrsets accessing any sub-attribute requires the parent attrset to be evaluated at least, unfortunately.

What about an opt-in key to « force load attrset names »? This way, users are aware of the cost of this action but still get the feature.


Fix migration to mega-linter v6

Fixes https://github.com/oasisprotocol/oasis-wallet-web/pull/1087
Mega-linter failed on master with VALIDATE_ALL_CODEBASE https://github.com/oasisprotocol/oasis-wallet-web/actions/runs/3254420808/jobs/5342652642

:/ gitleaks is being a pain, blocking all PRs for harmless changes in one

let's turn off gitleaks in this case :shrug:


Bug: post_logout_redirect_url after /api/auth/logout does not redirect to specified url

Prerequisites

[X] I have searched the repository’s issues and Kinde community to ensure my issue isn’t a duplicate
[X] I have checked the latest version of the library to replicate my issue
[X] I have read the contributing guidelines
[X] I agree to the terms within the code of conduct

Describe the issue
When loging a user out via the /api/auth/logout?post_logout_redirect_url=/login?type=bewerben url it redirects me to my POST_LOGOUT_REDIRECT_URL I have set in my .env in this case /login without the additional params. I also changed this in the env to be /dashboard and as expected I get forwarded to /dashboard instead of /login?type=bewerben.
Library URL
https://github.com/kinde-oss/kinde-auth-nextjs
Library version
2.1.15
Operating system(s)
Windows
Operating system version(s)
11 Version 23H2 (Build 22631.3155)
Further environment details
Node: v18.18.2
NextJS: 13.4.19
Reproducible test case URL
No response
Additional information
No response

Thanks for raising this @DJKnaeckebrot
To provide some context, there is the .env variable KINDE_POST_LOGOUT_REDIRECT_URL this typically is the one that you would have mapped in the Kinde admin area in the Allowed logout redirect urls - if it isn't mapped there then it will fall back to a default Kinde log out screen.
There is then the argument to <LogoutLink />  which is post_logout_redirect_url the idea of this one is to be able to provide dynamic logout URLs that differ from the default.
The idea was that this way you could add a single logout url to the allow list (as it could be a headache to add every conceivable url) and then forward the user onwards on return to your application. (This is the same way the post_login_redirect_url argument works for logging in - typically that is used to remember where they were trying to visit).
With the LoginLink argument, the param is stored in the NextJS SessionManager - essentially just a cookie which can be accessed when you are redirected back from Kinde.
One approach you could use (I should add a caveat here that I am not a NextJS expert and @peterphanouvong may well have a better solution) is having a global logout route (could also be middleware I expect) something like:
.env
KINDE_POST_LOGOUT_REDIRECT_URL=http://localhost:3000/api/logout

^ this should also be added in Allowed logout redirect URLs
/api/logout
import { cookies } from "next/headers";
import { NextRequest, NextResponse } from "next/server";

export async function GET(request) {
  const cookieJar = cookies();

  const path = cookieJar.get("post_logout_redirect_url").value;

  return NextResponse.redirect(new URL(path, request.url));
}

The /api/logout is then able to handle any values passed to <LogoutLink post_logout_redirect_url="/some-where-else" />

Closing this one as no response suggests resolved


feat: exactness of short complexes

This PR introduces the definition of a proposition S.Exact when S is a short complex.

Thanks for the suggestions! I shall include a comparison lemma with the current Exact f g under suitable assumptions, but I need slightly more basic API (one or two PR on this file) before I can do this.

bors retry


Support setting idle timeout time function based on data flow

What type of PR is this?

feat: Support setting idle timeout time function based on data flow
What this PR does / why we need it:
EG currently does not support setting idle timeout times based on data streams. This PR supports this feature
Which issue(s) this PR fixes:

Fixes #3108

close in favour of #3672


Fixing link color inside codeSpan

Hey guys,
First time here :)
This PR is a fix to #1297, what was happening, in that case, was that the attribute for foreground color for code span was being applied after the link style, so the color in that range was being overridden.
There's also a fix for a wrong button being set to disable on notifications :)

Aaaawesome! I’ll pr badly be merging #1295 for the button fix. Mind reverting that change?
Sent with GitHawk

@rnystrom Sure :) Done 👍

This is cool, thanks @LucianoPAlmeida 🎉😀
Sent with GitHawk


Ubuntu VM Resource leakage

Set up the simple-assert-transfer example with all the containers running on the same ubuntu 1804 vm. One of the JVM processes took 100% on all 8 CPU cores and filled up the ram in a couple hours of operation.

I am running our current Quorum network (v2.1.1, 4 nodes) for 16 hours at Ubuntu 16.04 vm with 4 cpu and 6 Gb RAM. Now htop shows that CPU cores are uniformly 10-40% busy (with spikes to 70%). Memory consumption is 1.87 - 1.92 Gb and stays constantly in this range.
Going to try the latest Quorum (v2.3.0) sample-network to see if it is less resource-greedy.

For Quorum v2.3.0, 4 nodes, same other factors, after 45 minutes of running I see memory consumption 1.55 - 1.7 Gb, CPU cores are busy for 20-70% uniformly.

Thank you for the investigation @denis-yu-glotov
Issue must be on my side. Best guess is that it's specific to how Hyper-V manages RAM for the VM.
For me RAM usage shoots up to 20+GB in a matter of minutes just by having npm run corda and the CPUs are pegged at a solid 100% usage constantly. Will try to look for other culprits in my own setup, but it's clear that Corda is not at fault.

Final note about Qorda 2.3.0 after 20 hours, memory consumption is 1.67 - 1.72 Gb. So from this side, it is not significantly better, then our current Quorum 2.1.1. Although I noticed that tessera has started significantly faster then ours. So it is good to upgrade although not a first priority.


Improve code quality

Codecov Report

Merging #208 (d67c87f) into master (ab835ef) will decrease coverage by 0.24%.
The diff coverage is 0.00%.

@@             Coverage Diff              @@
##             master     #208      +/-   ##
============================================
- Coverage     60.91%   60.66%   -0.25%
  Complexity      572      572
============================================
  Files           102      102
  Lines          1952     1955       +3
  Branches        232      235       +3
============================================
- Hits           1189     1186       -3
  Misses          680      680
- Partials         83       89       +6

Impacted Files
Coverage Δ

...edu/address/logic/commands/ViewContactCommand.java
85.71% <ø> (ø)

...eedu/address/logic/parser/AssignCommandParser.java
83.33% <0.00%> (-16.67%)
:arrow_down:

...du/address/logic/parser/DeassignCommandParser.java
86.66% <0.00%> (-13.34%)
:arrow_down:

...eedu/address/logic/parser/DeleteCommandParser.java
71.42% <0.00%> (-28.58%)
:arrow_down:

Continue to review full report at Codecov.

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


Corrected query

Added comma between state and state_desc so that the state_desc column value is returned instead of being interpreted as an alias for the preceding state column.

@guzmanda : Thanks for your contribution! The author, @MikeRayMSFT, has been notified to review your proposed change.

@guzmanda - thank you!
#sign-off


feat: Add concept of "external" role that is ignored during comparisons.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

31 of 34 (91.18%)  changed or added relevant lines in 5 files are covered.
3 unchanged lines in 2 files lost coverage.
Overall coverage increased (+0.06%) to 96.634%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/sqlalchemy_declarative_extensions/role/generic.py
11
14
78.57%

Files with Coverage Reduction
New Missed Lines
%

src/sqlalchemy_declarative_extensions/role/ddl.py
1
90.0%

src/sqlalchemy_declarative_extensions/role/generic.py
2
80.77%

Totals

Change from base Build<PHONE_NUMBER>:
0.06%

Covered Lines:
2519

Relevant Lines:
2600

💛  - Coveralls


All values in the event_type column are either reserved keywords or null

Hi,
When I want try train a model for personalize recipe, I am getting  this error:
All values in the event_type column are either reserved keywords or null
In EVENT_TYPE I have like, click, view, bookmark.
I have Item file with one metadata and user file with meta data.

If you're still facing this issue, please provide your interactions schema and a sample of a few rows from your interactions dataset.


Implement eth/67 sub protocol (EIP-4938)

eth/67 (EIP-4938, March 2022)
Version 67 removed the GetNodeData and NodeData messages.
GetNodeData and NodeData were introduced in protocol version eth/63 to allow for a sync mode called “fast sync”.
Besu:

Supports multiple versions of a wire protocol.
Does not break older clients, since they can keep using protocol version eth/66.
For fast sync, eth/66 will be used

dev-besu-clc-teku-ohio-mainnet-gabrieltrintinalia-eth67-4: X_SNAP
dev-besu-clc-teku-ohio-mainnet-gabrieltrintinalia-eth67-7: FAST


Plugins selected: Authenticator manual, Installer None
Renewing an existing certificate
Performing the following challenges:
dns-01 challenge for myTLD.com
dns-01 challenge for myTLD.com
Running manual-auth-hook command: /usr/lib/letsencrypt-inwx/certbot-inwx-auth
Output from manual-auth-hook command certbot-inwx-auth:
Creating TXT record...

manual-auth-hook command "/usr/lib/letsencrypt-inwx/certbot-inwx-auth" returned error code 1
Error output from manual-auth-hook command certbot-inwx-auth:
=> Error: There is no nameserver for the specified domain

When I test the nameserver.list method with postman, I am getting 5 domains back. Exactly those I am trying to renew ;O So there is no paging issue this time ;)
Any ideas?

I'm sorry to hear that you are having issues. I guess you are using the docker image: Are you still using an environment file which you pass with --env-file? If yes can you please try if mounting a .json config file solves the issue?

Indeed, frist I tried my old setup with the env. got the same error.
Since I also saw the deprecation warning I then configured the json file, at first without the optional domains property, then with it. But with no luck, always the same error.
Is there some debug flag I could set to print out the inwx-requests going out and responses coming back? Like there is for the letsencrypt traffic?

I've just released a new version that adds some debug logging: Can you please pull the new image and use either -e LOG=letsencrypt_inwx=debug for debug logging or -e LOG=letsencrypt_inwx=trace to also print api request and responses? I hope we can solve this problem if you attach an anonymized debug log to this issue.

Thank you for your quick help!
I think we found the problem! For some reason it processes one of my CNAMES instead my actual domain.
Background:
i.e. my TLD is myTLD.com
I have a couple "special" subdomains like
a.myTLD.com and b.myTLD.com which point to some stuff, but most of my use-cases point to my home-server. I do this, lazy how I am, with a wildcard-domain *.myTLD.com CNAME record pointing to my dynDNS provider. Also I am renewing a certificate with a wildcard for exactly this reason.
Running manual-cleanup-hook command: /usr/lib/letsencrypt-inwx/certbot-inwx-cleanup
manual-cleanup-hook command "/usr/lib/letsencrypt-inwx/certbot-inwx-cleanup" returned error code 1
Error output from manual-cleanup-hook command certbot-inwx-cleanup:
[2019-04-13T22:13:13Z DEBUG letsencrypt_inwx::dns] Using myDynDNS.com for _acme-challenge.myTLD.com
[2019-04-13T22:13:13Z INFO  letsencrypt_inwx::cli] Deleting TXT record...
[2019-04-13T22:13:13Z WARN  letsencrypt_inwx::cli] Domain not configured: Trying 1 configured domains
[2019-04-13T22:13:13Z DEBUG letsencrypt_inwx::inwx] Logging into account
[2019-04-13T22:13:13Z DEBUG letsencrypt_inwx::inwx] Checking domain myTLD.com
[2019-04-13T22:13:13Z DEBUG letsencrypt_inwx::inwx] myTLD.com is not the domain root of myDynDNS.com
[2019-04-13T22:13:13Z ERROR letsencrypt_inwx::cli] There is no nameserver for the specified domain

So I guess it should not be using myDynDNS.com in any way, since I have no control over my dynamic DNS provider. Can I fix that by adding an A record for _acme-challenge.myTLD.com? Or how does it 'find' myDynDNS.com in the first place?

oh I just saw your commit 9affd1cf41d781913830304134307c4432a568a4 and #9
So I guess I have to make _acme-challenge.myTLD.com CNAME point to a domain, which does not have that "* -> dynDNS" issue, I will try that.

Yes, that worked! Perfect, thank you :)
See ya in July ;)

I'm glad that you could solve your problem. I guess it would make sense to add a config option to disable following cnames

Or better, dont follow Wildcard-CNAMEs at all, only explizit _acme-challenge CNAMEs :D


Traversal not producing correct output.

Hi All,
Can anybody tells me how to get all nodes as well as all edges properties in traversal.
For Example : If I run the following query
select from (TRAVERSE in(), inE() FROM (SELECT FROM Example_Class WHERE @rid = #13:187));
Every time the result is changing.
Requirement : Get All inordered nodes and edges from specific node (#13:187).

Hi @digambarpatil123
If i got it right, the following should do the job:
TRAVERSE inE(), outV() FROM #13:187

Thanks
Luigi

Thanks @luigidellaquila
But the thing is, I know the destination node and I want to traverse in order in all the possible way. Now its showing for only one path and some of the nodes are missing from the traversal.

If I execute select from (traverse in(), inE() from #13:187) sometimes its showing correct output but sometimes its not. Why the random behaviour.

Hi @digambarpatil123
every node has both an in() and an inE(), the traversal does not guarantee that one is executed before the other, so you will have a random behavior here.

Thanks @luigidellaquila


fix(grant): fix is_permanent filter condition

fixes an issue from recently merged PR #302

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

1 of 1 (100.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 76.673%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
5900

Relevant Lines:
7695

💛  - Coveralls


Ability to properly clear value in useDateRangePickerState

Provide a general summary of the feature here
We're implementing a custom DateRangePicker with all related hooks incl. useDateRangePickerState.
It seems to be hard to clear the state in a good way.
What we have done for our DatePicker is already a little hacky, as we repeatedly call fieldState.clearSegment for each segment.
It's not possible to do it like this when having to call clearSegment for both startFieldState and endFieldState though, as the value, used when clearSegment via setDateTime sets the useDateRangePickerState value, is stale.
Meaning that when running endFieldState.clearSegment it will set the { start: ... } part back to the last selected value, because endFieldState.clearSegment is not aware that it has just been reset by startFieldState.clearSegment.
We could of course just do dateRangePickerState.setValue({ start: null!, end: null! }) (though null is not accepted by TS).
But clearSegment is doing other useful stuff like saving last selected value to be used for a re-selection.
What we've found would work is if the value was saved as a ref (which you've done before) for the latest state to be used in endFieldState.clearSegment call:
  // useDateRangePickerState.ts

  let value = controlledValue || placeholderValue;
  let valueRef = useRef(value);
  valueRef.current = value;

  let setValue = (value: DateRange) => {
    valueRef.current = value;
    ...
  }

  setDateTime(part, dateTime) {
    setValue({ ...valueRef.current, [part]: dateTime });
  },

But even better if a new method like clearAllSegments would be made available to avoid the repeated calls as well.
Are we overlooking something? Is there another way to achieve this clearing properly?
🤔 Expected Behavior?
Calling startFieldState.clearSegment then endFieldState.clearSegment should fully clear value of useDateRangePickerState.
😯 Current Behavior
Calling startFieldState.clearSegment then endFieldState.clearSegment sets start-part of value of useDateRangePickerState back to last selected value.
💁 Possible Solution
  // useDateRangePickerState.ts

  let value = controlledValue || placeholderValue;
  let valueRef = useRef(value);
  valueRef.current = value;

  let setValue = (value: DateRange) => {
    valueRef.current = value;
    ...
  }

  setDateTime(part, dateTime) {
    setValue({ ...valueRef.current, [part]: dateTime });
  },

Even better if a new method like clearAllSegments would be made available to avoid the repeated calls as well.
🔦 Context
This is how we work around it to both make clearSegment do the extra stuff it does (even though only taking effect for the end field) and also end up with a fully cleared state value:
  const clearFields = () => {
    segmentTypes.forEach((segmentType) => {
      startFieldState.clearSegment(segmentType)
      endFieldState.clearSegment(segmentType)
    });

    dateRangePickerState.setValue({ start: null!, end: null! });
  };

💻 Examples
No response
🧢 Your Company/Team
No response
🕷 Tracking Issue
No response

Mind providing a codesandbox or a codesnippet showing your DateRangePicker? My understanding is that calling clearSegment of either of the fieldStates should only affect the value tracked for that fieldState since the value passed to each useDateFieldState is the start or end field's respectively. I could be wrong here, haven't looked at the date hooks in depth for a while.
Calling dateRangePickerState.setValue({ start: null!, end: null! }); should be fine and in general is our usual approach for clearing the value for many of our fields, the TS issue you are running into there is because we haven't fully converted to support TS strict yet, but I am surprised that it wasn't covered as part of https://github.com/adobe/react-spectrum/pull/4225. What version of the datepicker package are you on?

We're using datepicker version 3.5.0.
#4225 seems to be released with 3.4.0 if I'm not mistaken.
Here's a sandbox that resembles our setup (but with Spectrum components).
See the comment in code under clearFields function:

I think my PR #5052 should fix this. You'll be able to call state.setValue(null).

@devongovett what do you think about expanding props.placeholderValue so that it supports a separate start and end value? I believe @Refrase wants to also save the last set date value as the new placeholder but at the moment props.placeholderValue only supports a DateValue so they would only be able to use either the start or end as the new placeholder value upon clearing the field.


flake8: fix recent error in security.py

flake8 3.1.1 surfaces the following issue:
errata_tool/security.py:28:1: E305 expected 2 blank lines after class or
function definition, found 1

@lhh FYI, needs to be fixed in RH OSP's copy


Missleading function signature

Why do we have to pass $row here?
https://github.com/yiisoft/yii2/blob/master/framework/db/BaseActiveRecord.php#L1213
Isn't that a bug?
Additional info

Q
A

Yii version
<IP_ADDRESS>

PHP version
any

Operating system
any

For the purpose of overriding it. Single table inheritance and stuff like that.

Is that "row" data or "raw" data?

"Row" as in database table.


Suggest

I think, it's interesting you add per world boss bar...
Use this example on main code:
if($this->getConfig->get("world") === lobby) {
}

or

if($this->getMain()->cfg->get("world") === lobby {
}

i'll progress it

Suggessting to use
foreach(array_keys($this->getConfig()->get("worlds")) as $world){
 // ....
}

Now, this feature has been implemented


How to create a private pubsub channel ?

is it possible to create an authenticated pubsub ?
I want to implement the following poc:
A Subscribe to "B-topic"
B Publish a message to "B-topic"
How make A need access from B to read message ?
have I use a cryptography layer?

@maroodb there's nothing built in to do this, but you can publish anything you like (it's just a buffer with some data in it) so B could encrypt the message using something like TweetNaCl and A could decrypt it using a pre-shared secret key.
Does that answer your question?


Unexpected Access to Restricted Materialized View

Describe the bug
After setting up a materialized view sensitive_data_view with restricted access, and granting SELECT permission exclusively to the service_role, users without the service_role can unexpectedly access the materialized view. This behavior is unexpected as the intention was to limit access to this sensitive data.
To Reproduce
Steps to reproduce the behavior:

Create a materialized view with the command:CREATE MATERIALIZED VIEW sensitive_data_view AS SELECT * FROM sensitive_data_table;

Reset permissions to limit public access with:REVOKE ALL ON sensitive_data_view FROM PUBLIC;

Grant SELECT permission only to service_role with:GRANT SELECT ON sensitive_data_view TO service_role;

Log in as a user without service_role and attempt to access sensitive_data_view.

Expected behavior
The expectation was that only users with the service_role would be able to access the sensitive_data_view. Other users, especially those without explicit permissions, should not have access to the materialized view, ensuring the security of sensitive data.
System information*

PostgreSQL version: PostgreSQL 15.1 (Ubuntu 15.1-1.pgdg20.04+1)
Your database's hosting environment: local

The default privileges in public schema is setup by Supabase to always grant all access to anon, authenticated, and service_role when new views are created. This means you need to revoke additional permissions in step 2.
postgres=> REVOKE ALL ON sensitive_data_view FROM PUBLIC, anon, authenticated, service_role;
REVOKE
postgres=> \dpp sensitive_data_view
                                              Access privileges
 Schema |        Name         |       Type        |     Access privileges     | Column privileges | Policies
--------+---------------------+-------------------+---------------------------+-------------------+----------
 public | sensitive_data_view | materialized view | postgres=arwdDxt/postgres |                   |
(1 row)

After that, if you proceed with step 3, other users won't be able to access the view anymore.

understood ! thank you so much


define blade addition/subtraction assignment

Change-Id: Ia8f87a7a3a4a0bac948a13ce2555ace45cde746e

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (62fdf0b) 97.05% compared to head (f53d8c2) 97.22%.

Additional details and impacted files
@@                              Coverage Diff                              @@
##           Ia277a4e73b42baac8295cd1dfc74061a6a150b97       #9      +/-   ##
=============================================================================
+ Coverage                                      97.05%   97.22%   +0.16%
=============================================================================
  Files                                              1        1
  Lines                                             34       36       +2
  Branches                                           1        1
=============================================================================
+ Hits                                              33       35       +2
  Partials                                           1        1

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Modified the navigation tab to highlight only the current tab.

Enhanced the navigation tabs by ensuring only the active tab is highlighted, improving the user experience by clearly indicating the current section.
Branch name : Activetab
fix:        Modified line number 213 by removing the default active class from home tab

Please let me know if the changes meet your expectations or if any further modifications are needed. I'm eager to make adjustments as necessary.

Issue #114


Clear all notifications/icons upon tool reset

Resetting the tool should clear all existing notifications/icons and reload relevant notifications/icons (i.e., concurrent edit notifications/icons should be cleared).
E.g., http://www.screencast.com/t/kBEL3DO7
Latest successful changes should also be pushed to other users.

@steveswinsburg this seems like a tricky one.  Currently we store the edit notifications on a shared cache (c/o MemoryService.java) in the service and this cache doesn't seem to be invalidated.  Maybe that's ok, but that would mean the user's wicket instance would need to be able to distinguish between current notifications and those that are stale.
As we pull these notifications in via ajax and deal with them via some custom javascript, a hacky approach would be to extended this custom javascript to know the lastUpdated for each cell and then make a determination that the items from the ajax response are current or ignorable. However, it might be nice to do this in the entity provider/service though!
I was thinking we could change GradebookNgEntityProvider.isAnotherUserEditing to pass through a from timestamp to the service.  The service would then only return any notifications with a lastModified after the from time.  But where would that time come from?  Is that something we could store on the user's wicket session?  We would only set this timestamp when the session is created or reset.
And one more query... I think we've all been testing on a single node environment (SBX3 included). I had a minor panic thinking the MemoryService.java wasn't cluster friendly... but that was introduced in Sakai 10 right?

Re timestamp, yes, said exactly the same thing in #47 :) I reckon we could store this in the DOM to keep the pages a bit more stateless, then the AJAX calls could pick it out and send it. The timestamp would need to be set when the page is rendering. WDYT?

Re clustering, I am actually unsure of the state of this in 10+. Probably not a killer as the notifications should be picked up on next backend call?

Re: timestamp - I think putting the timestamp in the page is fine.  But wouldn't this timestamp need to be the time the tool was last reset not when the page was last refreshed?  As grades are cached in the user's Wicket session, notifications will still apply even after a user has refreshed the page.
Re: clustering/concurrent edits - It might be worth raising this as a separate "Known Issue".

Grades are fetched each time the page is fully rendered, hopefully I can
make the reset and browser refresh the same thing.
sent from my mobile device
On 2 Sep 2015 7:46 am, "Payten Giles"<EMAIL_ADDRESS>wrote:

Re: timestamp - I think putting the timestamp in the page is fine. But
wouldn't this timestamp need to be the time the tool was last reset not
when the page was last refreshed? As grades are cached in the user's Wicket
session, notifications will still apply even after a user has refreshed the
page.
Re: clustering/concurrent edits - It might be worth raising this as a
separate "Known Issue".
—
Reply to this email directly or view it on GitHub
https://github.com/steveswinsburg/gradebookNG/issues/199#issuecomment-136872393
.

Ah great that sounds like the ticket.

Hi @steveswinsburg.  I've worked through the solution described above, namely I've added a timestamp to the isAnotherUserEditing API call to return only cell changes made after that time and the JavaScript creates this timestamp upon the first page loading  -- https://github.com/steveswinsburg/gradebookNG/compare/master...payten:fix-for-sticky-concurrent-edits
I noticed that the scores are still being cached upon page refresh, is that still on the cards?  I think this solution relies on the scores being updated upon page refresh.  Alternatively we could create this timestamp upon tool / cache reset.. that would be possible right?

Prerequisite: #35

This issue was moved to sakaiproject/sakai#1372


remove subscriptions from beacon

As of 1/1/17, the city is able to do their own contracting (instead of just going through the county).  This means that we have a new bidding tool.  While we will still be double posting on Beacon for awhile, we don't want people to continue to subscribe to Beacon when they should be registering for the new bidding tool.
Can we please have Beacon take the supplies to http://pittsburghpa.gov/omb/purchasing/registration.html when they click on subscribe (either from homepage or from upper right hand corner) on beacon?
Thanks

is there any estimate of when this will get done so I can report to sam/jenn?

I'm sort of hesitant about both this and #109 given that people are still signing up and that opportunity notifications are still going out.
 Are people going to be automatically migrated to the new system, or are they going to have to re-sign up?

At the very least, it would be good to have copy from you to put into the FAQ to clear up any confusion.

Text for the FAQ question "How do I find out about opportunities?" also needs to be updated, as does the text for the banner at the top of Beacon, which currently reads: "Find opportunities to sell to the City and sign up for emails about future ones." which will no longer be true.

Everybody that is currently signed up for Beacon has received multiple notifications from us letting them know about the new system and how to sign up (they will not be automatically added because it requires alot more information).   The problem with them still signing up is that they have no clue that they are signing up for the wrong thing.
At this point, we will still double post opportunities on beacon so people should still get the notifications if they are signed up for a category we post on.  I just dont want the biweekly emails going out and I dont want any more people to sign up.

Great. In that case, if you could just provide copy for the places that I mentioned above, I will finish this.

Replace the answer language in the FAQ for "how do i find out about opportunities" with "http://pittsburghpa.gov/omb/purchasing/registration.html" (just the link)
Replace the answer language for "what does the city buy" with "The short answer is — almost everything!   Go to http://pittsburghpa.gov/omb/purchasing/bid-opportunities.html to find out more"
Also remove any places they can enter their email address from the home page/FAQ page

This is done, please take a look at the screenshots in #110. I wrote descriptive text instead of the raw links; it looked a lot more visually cohesive.


Volume creation for default tenant does not comply with the tenant's Total_size limit

VM is part of a default tenant. There are no volumes on the datastore.
Steps:

Set the Max_volume_size and Total_size for the default tenant to 200.00MB and 1000.00MB respectively.
Created two volumes of 100 MB each
Tried creating third volume of 100MB. Volume creation failed with error - The total volume size exceeds the usage quota

Logs have been attached at the end.

Steps and their output is as follows:

Set the Max_volume_size and Total_size for the default tenant

[root@sc-rdops-vm01-dhcp-14-233:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access set --name=_DEFAULT --allow-create True --datastore sharedVmfs-0 --volume-maxsize=200MB --vol
ume-totalsize=1000MB
vm-group access set succeeded
[root@sc-rdops-vm01-dhcp-14-233:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group access ls --name=_DEFAULT
Datastore     Allow_create  Max_volume_size  Total_size
------------  ------------  ---------------  ----------
sharedVmfs-0  True          200.00MB         1000.00MB
              True          Unset            Unset

[root@sc-rdops-vm01-dhcp-14-233:~]

[root@sc-rdops-vm01-dhcp-14-233:~] /usr/lib/vmware/vmdkops/bin/vmdkops_admin.py vm-group ls
Uuid                                  Name      Description                 Default_datastore  VM_list
------------------------------------  --------  --------------------------  -----------------  -------
11111111-1111-1111-1111-111111111111  _DEFAULT  This is a default vm-group

[root@sc-rdops-vm01-dhcp-14-233:~]

Created two volumes of 100MB each - TestVol1 and TestVol2

root@photon-xVmYMbyTn [ ~ ]# docker volume create --driver=vsphere --name=TestVol1 -o size=100mb
TestVol1
root@photon-xVmYMbyTn [ ~ ]# docker volume create --driver=vsphere --name=TestVol2 -o size=100mb
TestVol2

root@photon-xVmYMbyTn [ ~ ]# docker volume ls
DRIVER              VOLUME NAME
vsphere             TestVol1@sharedVmfs-0
vsphere             TestVol2@sharedVmfs-0

Docker volume inspect for both the volumes
root@photon-xVmYMbyTn [ ~ ]# docker volume inspect TestVol1
[
    {
        "Name": "TestVol1",
        "Driver": "vsphere",
        "Mountpoint": "/mnt/vmdk/TestVol1",
        "Status": {
            "access": "read-write",
            "attach-as": "independent_persistent",
            "capacity": {
                "allocated": "13MB",
                "size": "100MB"
            },
            "clone-from": "None",
            "created": "Wed Mar 15 01:47:17 2017",
            "created by VM": "photon-VM1.3",
            "datastore": "sharedVmfs-0",
            "diskformat": "thin",
            "fstype": "ext4",
            "status": "detached"
        },
        "Labels": {},
        "Scope": "global"
    }
]

root@photon-xVmYMbyTn [ ~ ]# docker volume inspect TestVol2
[
    {
        "Name": "TestVol2",
        "Driver": "vsphere",
        "Mountpoint": "/mnt/vmdk/TestVol2",
        "Status": {
            "access": "read-write",
            "attach-as": "independent_persistent",
            "capacity": {
                "allocated": "13MB",
                "size": "100MB"
            },
            "clone-from": "None",
            "created": "Wed Mar 15 01:47:23 2017",
            "created by VM": "photon-VM1.3",
            "datastore": "sharedVmfs-0",
            "diskformat": "thin",
            "fstype": "ext4",
            "status": "detached"
        },
        "Labels": {},
        "Scope": "global"
    }
]
root@photon-xVmYMbyTn [ ~ ]#

Tried creating third volume of 100MB - failed

root@photon-xVmYMbyTn [ ~ ]# docker volume create --driver=vsphere --name=TestVol3 -o size=100mb
Error response from daemon: create TestVol3: VolumeDriver.Create: The total volume size exceeds the usage quota

Logs:
docker-volume-vsphere.txt
vmdk_ops.txt

@ashahi1 do we have an issue with such test steps? If so please link it here otherwise document such test steps in one of the tenancy related issue where tests are planned.

Not able to repro the issue with the fresh setup. Originally ran into this issue because I had deleted a volume of size 700 mb manually from the dockvols folder and authdb did not get updated due to manual deletion of volume.
Not seeing this problem anymore hence closing this issue.


Make redux drive history?

The idea behind redux-simple-router is to keep history in sync between redux and the router history.
In my opinion, it's preferable for redux to be the source of truth for the router, rather than history to be the source of truth that is shared by the router and redux.
My idea is this:

Let the browser history tell redux what to do (e.g. back, forward, initial page load, etc.)
Let links, buttons, etc. tell redux what to do (i.e. not tell the router what to do).
Finally, let redux tell the router what to do.

I have a basic draft of this here:
https://github.com/naw/redux-simple-router/commit/5d6c893766ce2375f1d82c959fdfdc66a9f0ff2e
The basic implementation is:
1 Give react-router a memoryHistory object instead of the real browserHistory object.
2. The only thing that writes to memoryHistory is a redux store subscriber.
3. wrap the memoryHistory object we give to react-router so that we can intercept push calls so that they call a changeLocation action creator rather than writing to memoryHistory directly.
4. Separately, listen to a real browserHistory object, and call the changeLocation action creator from the history listener.
Also, I'm using a slightly different approach for preventing cycles, so I believe the locationsAreEqual complexity is unnecessary.
I've probably missed some edge cases (or perhaps I've missed something larger than that?), but I wanted to share the basic idea and get some feedback.

Hi @naw, interesting approach. It's late, so I don't have to look much at this right now, so just a few questions that jumps to mind:

Is browserHistory.listen guaranteed to be synchronously called?
Have you ran it through all the tests? Lots of cases with regards to devtools etc
Does this override push in memoryHistory? Seems "hacky" (though without looking much at this)

@kjbekkelund
Thank you for your initial feedback.
The original commit I shared was a completely separate implementation providing a basic proof of concept by serving as a drop-in replacement within the example app.  It didn't actually rewrite the existing code, so none of the tests would apply.
Therefore, I have refactored my original implementation so that it is now an actual modification to the redux-simple-router code, keeping things as similar as possible (such as router names, action creator names, etc.) so that the tests can run with little modifications.
The new refactoring is here:
https://github.com/naw/redux-simple-router/commit/a47914fbb4b97a0cda1cebcb8df75b7246534e7a
Now to address your questions, and provide some additional clarification:
All of the tests pass (most without any modification).  I believe the only modifications were to accommodate the removal of avoidRouterUpdate, and to handle a change in how you get your hands on the unsubscribe function.  In particular the devTools stuff works fine.
The main goal is to make redux the source of truth.  The only interface available for react-router is the history parameter that Router accepts.   Therefore, in order to let redux control the router, and also force <Link> to go through redux, we have to give react-router a "fake" history object that we can control.  By fake, I just mean an object that exposes the API that react-router expects for reads and writes to location.  This is just duck-typing.  The easiest way to implement this was a thin wrapper around memoryHistory, although it's conceivable to create such an object from scratch.   Wrapping objects like this is very similar to what useRoutes in react-router does and what useQueries in history does.   I personally wouldn't call it a hack, but I can see why you might feel that way.  Sometimes there is a fine line between elegance and hack.
I believe this overall implementation yields some simplicity:

avoidRouterUpdate is no longer necessary.
areLocationsEqual is no longer necessary.
Because of (2) , it seems like supporting query params would be easy to solve (I'm assuming areLocationsEqual was the primary problem, but perhaps I misunderstood #95)
It's feasible to let updatePath and replacePath accept a single object --- any object that history.push will accept (e.g. either a location object or a location string.) As a result, you could ditch createPath and just pass location directly through redux.
On the other hand, if you did want to normalize/parse things there is a single entry point where this can be done.

Finally, regarding your question "Is browserHistory.listen guaranteed to be synchronously called?"
Is there a specific scenario you had in mind that would be a problem in this implementation, but not in the existing implementation?
Thanks again.

This is effectively the approach that redux-router takes. I haven't really been keeping track of why that project is no longer in rackt while this project is, but:

The explicit goal of this project is to let the router handle the state management, because
In practice, redux-router ended up being quite complicated and a lot less easy to understand/use.

From the README:

Let react-router do all the work  :sparkles:

Having Redux manage the state is definitely an interesting approach on paper, but dealing with the edge cases is not easy. I'm not directly involved with redux-simple-router, but I'd personally suggest working with the redux-router maintainers if you're interested in pursuing that approach.

This fixes https://github.com/rackt/redux-simple-router/issues/108 for me

Personally I see about just as much complexity here (if not more, having to manage multiple histories).
You still have two flags: browserListeningToStore and storeListeningToBrowser. Those are exactly the same as avoidRouterUpdate, except it isn't stored in state, which was done purposefully because it was easy to debug. But check out #129 where we will probably move it into local state just like your 2 flags are.
Additionally, there is a complex flow here: if the user presses back, it's going to trigger an event on the browserHistory instance, but if a user clicks a link, they are going to trigger the memoryHistory instances. Seems very confusing to maintain.
In fact, since everything stills works when pressing the back button, and it's going to browserHistory, your PR does not fully solve the "two sources of truth" problem the way you want it to. I don't see why you would need the wrapper at all. Fact is, there are always going to be two places that router state updates from, which is why you still need flags.
Initially I responded similarly as @taion, because if you want only one place where all router changes come through you effectively have to write your own routing API, which is was redux-router does. And APIs are hard, and react-router has already done a ton of work on that front, so I think it's best to just leverage that.
But I do like your approach (I'm assuming the memoryHistory wrapper does solve certain problems). You found a way to still allow users to use react-router directly but sort of monkey-patch the system to hook into react-router at a deeper level. Well done. This is actually still much different than redux-router because you aren't writing your own API.
I think I'd be interested exploring this approach except for one thing: they are working on react-router 2.0 and the new APIs will allow us to implement something very similar to this, but less confusing. Basically, these sort of history wrappers will be first-class and we won't even have to use history.listen anymore (if I understand correctly). I don't fully understand those changes yet, but I've been told it will be easier (@taion works on react-router). I'd rather get #129 merged in and then work on an experimental version that works with react-router 2.0, and I'd love your help with that.

We actually ended up in a very different place with 2.0 - we've explicitly taken out the ability to listen to router state, and made it clear that if you want to listen to router state, you want a component under the <Router>. I don't really think there's anything new for redux-simple-router in the new API. We mostly just cleaned things up.
A few things to think about with this API:

How do you make transition hooks for preventing transitions work? Those will happen from the browser history, but you need to deal with them from the proxy history.
How do you wrap different actual histories? e.g. also supporting hashHistory (which will need a different createHref), but also e.g. basename and query string options...

Mostly reduces down to edge cases that I think might make this approach messier on net.

@jlongster
Thanks for your response.  I'm sure you already know most of this, but for sake of clarity, let me try to be a little more verbose, and please forgive me if I'm belaboring the point.
There are three pieces at play here: router, browserHistory, and redux.
I'm not saying this is a two sources of truth vs. one source of truth issue -- it's a question of which single piece is going to be the source of truth.
In the current implementation, browserHistory serves as the single source of truth. It takes input from <Link>,  Back/Forward, and redux, and then sends that update out to redux (if necessary) and the router (always).
In my proposal, redux serves as the single source of truth.  It takes input from <Link>, Back/Forward, and browserHistory, and then sends that update out to browserHistory (if necessary), and the router (always).
If you compare the above two paragraphs, you'll see that the overall "shape" of data flow is identical, but redux takes the place of browserHistory as the source of truth, whereas browserHistory takes a back seat as a UI input (just like clicking a link is a UI input). What I'm trying to say is my implementation does fully solve the source of truth issue that I was trying to solve, even though browserHistory is both an input and an output.   Think of the address bar as being like any other UI control --- when you type something in a form text box, for example, it is both an input and an output of redux --- informing redux to update its state, but also accepting redux state as source of truth for its value.
The premise I'm starting with is that all things being equal, it's better for redux to be the source of truth than for browserHistory to be the source of truth.  Starting from that premise, I created an alternative implementation. A side-effect of that implementation is what I perceived as overall simplifications (although of course I'll grant that it's debatable whether my implementation is actually simpler or not).
There are actually two somewhat individual issues here:
First,  which object should be the source of truth?
Second, regardless of which object is the source of truth, are there some implementation changes that would increase simplicity?
So I have a a question:
Disregarding complexity for a moment, which object is the preferable source of truth?  In other words, assuming we could find a simple implementation to make redux the source of truth, and assuming such an implementation didn't introduce a bunch of edge cases, would you prefer redux to be the source of truth, or conceptually do you feel browserHistory actually should be the source of truth?
If you feel browserHistory should be the single source of truth regardless, then we can definitely just drop the redux as single source of truth aspect of this issue, and I can pursue that goal elsewhere.  Meanwhile, we can discuss possible implementation simplifications that keep browserHistory as the source of truth (although perhaps that's redundant in part with #129, as you mentioned).
On the other hand, if you feel that redux should be the source of truth, but there's just too many edge cases to solve in a reasonably simple library,  then perhaps this discussion should focus on whether or not my proposed implementation has merit for being a simple solution, or whether it will ultimately lead to the same complexity of redux-router that you were trying to avoid in the first place.  As you said, maybe that's difficult to pin down until react-router 2.0 lands.
It seemed to me that my implementation with the two boolean flags and pushing everything through redux not only replaced avoidRouterUpdate (which I'll admit wasn't a huge win), but it also eliminated the need for areLocationsEqual, deepEqual, and possibly helped solve the query parameters issue too (although perhaps I misunderstood the crux of #95).  Or, perhaps I'm just misunderstanding the role that areLocationsEqual plays, but the tests do pass without it in my implementation.
Granted, using a proxied history object to interface with react-router introduces its own complexity, so of course there are trade-offs, and those trade-offs are a little subjective.
Thanks for your reply and your patience.  If you could give a me sense for how you view the "redux as the source truth" issue as a whole, that would give me a better idea how to proceed.

@taion thanks for listing some explicit scenarios you think might cause some trouble with this implementation. It's nice to have some concrete arguments to consider. I'll plan to get back to you on your questions.

FWIW, the history object (browserHistory or hashHistory) is not a source of truth. It's a proxy to the browser's own history. We do a little bit of book-keeping (mostly around confirming navigation), but you should think of a history object as much more of an interface to the browser's own history API.
You can't ask a history object e.g. what's at "-3 history locations from the current location" - it doesn't know and can't tell you.
Why do it this way? Because it completely rules out edge cases where the history that we track diverges from the history that the browser knows. And it means that if our user does something like a history.goBack() that actually takes them off the page, we don't need to do anything special - it just works because the browser handles it.

When I call browserHistory the source of truth, all I mean is that when react-router asks the question, "What is the current location, so that I can decide what component-tree to display?", browserHistory is the object that holds the answer. I understand it's just a proxy for the browser itself, so in that sense, the browser itself is the source of truth, and you can equate browserHistory with browser in my statements.  I don't think we actually disagree on this, so perhaps it's just semantics.
Do you see a difference here in what we're saying?

That's actually a bit counter to the design intent. The history objects are effectively stateless - you can't ask them for their current location; you can only subscribe or push/replace.

Router Question: "What is the current location, so that I can decide what component-tree to display?"
Answer: "Whatever browserHistory last told me the current location is".
So the state is technically in the router, but that state is effectively being controlled by browserHistory, right?  And browserHistory is the only thing that changes that piece of state in the router?
So browserHistory is the source of truth for the current location from the perspective of the router?
What am I missing?

Ignoring the transition manager for now (which potentially asynchronously does the actual route matching from the location), the difference is that the <Router> behaves like a store, while the history behaves like an emitter of actions (really like a Flux action creator in that sense).
It's semantics (and it's getting late), but typically you want to think of the store-like entity as being the source of truth.

Per discussion on https://github.com/rackt/redux-simple-router/pull/141, I think this might still be a good idea to get things working as well as possible with dev tools, in the case that users want to be able to toggle router-related actions.
I don't think you'd want to use this in production – but it could dramatically simplify things for development.

You can toggle router-related actions with the new middleware approach, no?

Yes, but it's sort of not great. There's the lack of support for POP transitions, and it's just a little messy IMO.

I made a proof of concept of this and would love to get your opinion:
https://github.com/rackt/redux/pull/1362


New : getters for acceleration and desceleration

Not sure if the name of the functions is correctly reflecting the returned values.
Do you intend to provide getters for the actual de/acceleration value in real time or for the user requested acceleration and deceleration values?
Current indicates something realtime, e.g. if the stepper is in acceleration ramp, it should return a positive value. If stepper is at rest or at max requested velocity, it would 0, in all other cases an acceleration value up to the user define acceleration speed value.
Have a look a getCurrentPosition for example, that returns a value that is only static when the stepper is not moving, in all other cases it will return the current (as in real time) position.
So it seems like what you want to do is provide a function that simply returns the values that the user has set before using setAccelaration*()
So it should be called something like getConfiguredAccelration or something like that.
GetCurrentAcceleration would need to return a "calculated" or state dependent value.

Hello,
thanks for your feedback
My goal is to have the setted values of acceleration/deceleration so I don't have to store them elsewhere thus creating an oportunity to make mistakes.
I'm ok with the "getConfiguredAccelration" proposition, and will submit a commit
Best


current line only shown for search results

Editing C:\Users\Admin\jnk.txt
 * l
   1 : one
   2 : two
   3 : three
   4 : four
--- Current line is 1, 4 lines total ---
 * s o
   1 : one   1 : two   1 : four--- Current line is 1, 4 lines total ---

Note that only 1 appears for the lines on which a match was found instead of 1, 2 and 4.

Fixed: https://github.com/matthewdeanmartin/dedlin/commit/b92ef1aae56d1442baec82592b61bdd28ae781e4


Main docs page should link to Graphics-UI-FLTK-LowLevel-FL.html

http://hackage.haskell.org/package/fltkhs-<IP_ADDRESS>/docs/Graphics-UI-FLTK-LowLevel-FLTKHS.html is a great central location from which to explore the fltkhs docs, but it lacks a link to Graphics-UI-FLTK-LowLevel-FL.html.  That link would be quite helpful; if you don't know it exists, it's really hard to find out what the fltkhs translation of e.g. the event-related fltk functions is.

That's a great idea. I'll add links to other important non-Widget modules as well, eg. Draw.chs. Thanks!


Create Search Page / Wishlist (recommendations)

Static UI version of search page
default state of search page will be "wish list" or recommendations


JL UI Glue Catalog - Filter specific to environment

We have decided not a bug. The Glue catalog access allowed at the account level and given to the Orbit Team Role. As a team user, the JupyterLab UI will show all the databases and tables in the glue catalog.


Add natural language descriptions to tests

Needed in order to pass the following grade criteria

Assessment: The grader will open a random sample of test cases (minimum 3), and assess whether:

The contract that is tested is clearly formulated in natural language
The assertions of the tests correctly and completely assess the contract

[LIC NAME] positive/negative test
What the parameters set up to calculate/do
What this should result in and why
Expected result true/false


Option To Strip Extraneous Whitespace

Something like:
swig.init({ stripWhitespace: true });

Could strip occurrences matching /[  ]|\t|\n/g with a single space.

Yep, after implementing this, I've decided not to include it. It just seems... needless. If anyone can give a concrete reason why this would need to be included, I'm open to hearing it.


HSEARCH-3527 Add proper SPIs for the Quarkus integration

https://hibernate.atlassian.net/browse/HSEARCH-3527

Look very good! Very nice job. Merged


can't resolve IPs

I can't solve this resolve error. Upon start up I continue to get the following error:
OpenVPN version: 2.4.6
Unbound version: 1.7.3
Iptables version: v1.6.2
/auth.conf already exists
TUN device OK
Malicious hostnames and ips blocking is off
Launching Unbound daemon to connect to Cloudflare DNS <IP_ADDRESS> at its TLS endpoint...DONE
Changing DNS to localhost...DONE
Reading configuration for region Netherlands, protocol udp and encryption strong...
 * Port: 1197
 * Domain: nl.privateinternetaccess.com
Detecting IP addresses corresponding to nl.privateinternetaccess.com...
Error! (status 1)
nslookup: can't resolve nl.privateinternetaccess.com: Try again

Here is the docker-compose:
services:
��pia:
����image: qmcgaw/private-internet-access
����container_name: pia
����cap_add:
������- NET_ADMIN
����devices:
������- /dev/net/tun
����environment:
����- USER=
- PASSWORD=
- PROTOCOL=udp
������- ENCRYPTION=strong
������- BLOCK_MALICIOUS=off
������- REGION=Netherlands
������- EXTRA_SUBNETS=<IP_ADDRESS>/24
������- NONROOT=
����volumes:
������- ./auth.conf:/auth.conf
����restart: always

Hi there,
I just pulled the latest built image with the exact same configuration and it works without trouble.
Which image are you using? Is it the ARM one?
If you are using the standard non-ARM image, this error is likely caused by one of the following external factors:

there is no internet access on your host
Outbound port TCP 853 is blocked by your host or your router. Port 853 is needed only once at the container start to resolve the VPN domain name nl.privateinternetaccess.com through TLS.

Well, it comes down to the "network_mode: bridge" line in the docker-compose. I added that and it works.
Without it, the container seems to lack some sort of needed resolving.
Reading docker networking recommendations, I'd like to have pia as a separate network rather than just the default bridge. It sounds like there isn't any way to do that currently with this container?

Sorry I tried your configuration without changing the network configuration.
What I have is an external network
docker network create mynet --subnet=<IP_ADDRESS>/24

The following at the end of my docker-compose.yml:
networks:
  mynet:
    external: true

With the container configuration
    networks:
      mynet:
        ipv4_address: <IP_ADDRESS>

And it works. Maybe try creating the network externally instead of using the default pia_net generated bridged network?

Thanks for testing. I don't have any outgoing firewall, so that's interesting.
As I mentioned, just adding that line allows resolving, otherwise it doesn't. Of course pinging the domain directly works just fine from that host.
Thanks again. Closed.


(PUP-4997) Fix pip provider for EL6

The issue is that the latest and only available python-pip package via EPEL for EL6 "python-pip-7.1.0-1.el6.noarch" doesn't have /usr/bin/pip-python anymore which is defined to be the binary for pip provider in puppet package resource check https://github.com/puppetlabs/puppet/blob/master/lib/puppet/provider/package/pip.rb#L42-L48
So I've added a backward compatibility, so pip provider will work either the binary is pip or pip-python

This seems like a reasonable approach to me (try pip first then pip-python), but I'd like another set of eyes on it.
@nibalizer, I know you work with pip a fair bit on different platforms. Any thoughts on this?

Looks like @peterhuene has some outstanding questions on this one

Hey @EslamElHusseiny, thanks for the contribution! Are you still interested in working on this? If you get a chance, please let us know either way so we know how to move forward.
Thanks!

@HAIL9000 I'm sorry for being too late, I've addressed comments I got, still need to fix the corresponding unit tests provided that the implementation is accepted.
@peterhuene you are right, I've used your simpler implementation provided that both pip and pip3 are now arrays whatever how many elements in the array.
@kylog I've defined cmd in both pip and pip3 as an array for simpler, unified handling.

@EslamElHusseiny this PR now includes a number of files under puppetlabs/puppet/cache, probably from your debug set up. Can you remove those? It also has a merge commit; can you squash that out at the same time?
Thanks!

@kylog sorry for that, it's fixed now

Ping @kylog for further review.

Thanks @EslamElHusseiny! This should be released in puppet 4.4.

@kylog When is 4.4 roughly scheduled for release? Just curious as this bug is one that has been bugging me for awhile.
Thanks!

Is this by any chance also going to be backported to the 3.x branch anytime soon?

@chad-upton it turns out 4.4.0 was released in mid-March.


Consolidate CI/CD and testing knowledge

Todo
Consolidate GoodNotes -> Figma

[ ] Transfer all CI/CD & Testing notes to Figma

Create content

[ ] One-pagers
[ ] LinkedIn mega post
[ ] Twitter thread
[ ] Create a small video series with examples (YouTube playlist)


fix(ModalDialog): not shown after close previous window when set IsDraggable and IsCenter to true

not shown after close previous window when set IsDraggable and IsCenter to true
Summary of the changes (Less than 80 chars)
简单描述你更改了什么, 不超过80个字符；如果有关联 Issue 请在下方填写相关编号
Description
fixes #4658
Regression?

[ ] Yes
[ ] No

[If yes, specify the version the behavior has regressed from]
[是否影响老版本]
Risk

[ ] High
[ ] Medium
[ ] Low

[Justify the selection above]
Verification

[ ] Manual (required)
[ ] Automated

Packaging changes reviewed?

[ ] Yes
[ ] No
[ ] N/A

☑ Self Check before Merge
⚠ Please check all items below before review. ⚠

[ ] Doc is updated/provided or not needed
[ ] Demo is updated/provided or not needed
[ ] Merge the latest code from the main branch

Summary by Sourcery
Bug Fixes:

Fix the issue where the ModalDialog component was not shown after closing a previous window when both IsDraggable and IsCenter properties were set to true.

@sourcery-ai review


MG5 battery heating does not activate

Facelift MG5 LR will not activate battery heating manually or with scheduler. Battery level 59% and weather is -2 celsius and car stood 16h before attempt to heat. No difference if the car is charging or not. iSmart app does not have battery heating function for this car. Awesome work on this thing btw!

I am quite sure that there is no remote API command avilabel for MG5 for Battery heating and heated seats as both functions are also not reflected in the iSmart App.

Yeah that may be true, but API has lots of functions that iSmart does not have. If it does not have this function, then best if removed from control for MG5.

What domypu mean by „removed from control for MG5“? In iSmart there is no
such funktion. And if SAIC provides this via API however, although not
useful for MG5 this would be a lot of work for the Gateway developers to
individually reflect each car exactly. Maybe over time this can be done
with the community, but I think other topics are more important. Even with
reflecting correct battery sizes in the gateway stromgly depends on
accurate user feedback. With growing community such „cleanup“ might be
feasible in the future but devs are volonteers so I personally don‘t bother
if there seem to be options the car does not support as it is easy to find
out.
BTW: I am very thankful how fast the devs in the last weeks reacted on
feedback and the new API - that was absolutely great to see the community
reporting, devs implementing, community testing, done. Often in minutes not
hours.
kimtatti @.***> schrieb am So. 4. Feb. 2024 um 09:09:

Yeah that may be true, but API has lots of functions that iSmart does not
have. If it does not have this function, then best if removed from control
for MG5.
—
Reply to this email directly, view it on GitHub
https://github.com/SAIC-iSmart-API/saic-python-mqtt-gateway/issues/162#issuecomment-1925623032,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ASPZ3QNKGFVCHR6AWDACVF3YR46ZXAVCNFSM6AAAAABCYUZTCOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMRVGYZDGMBTGI
.
You are receiving this because you commented.Message ID:
@.***
com>

Sorry, not that familiar with the development prosess. Just meant that like the heated seats option is not in the controls, the battery heating fuction could be removed in future updates if not functional. But other more important thing offcouse first. Probably in the minority, but preconditioning the battery and remote heated seats would be awesome because of the cold weather in Finland. In really cold the battery heating while driving just isnt on long enough that the battery would be warm to charge fast. ZS EV is much better in this sense and tech is really similar. And yeah, just phenomenal job at developing this, Im so grateful that this exist, this makes my life especially in the winter so much easier that with the original iSmart app!

Unfortunately not every model reflects all internal functions also remotely. MG4 seems to provide most options like heated seats to swichted remotely as well as Battery pre-heating. But for MG5 they don‘t. I own both cars and there is a huge difference.

Hi kimtatti, also owning a MG5 LR and afaik battery heating (and enabling / disabling of course) will only work while driving. It should give you exactly that information / notification when you try to enable it via entertainment system when not driving - give it a try.
This is probably also the reason why you don't find it in the app, as I assume nobody really expects you to use the app while driving.

ZS EV has the heating function in the app and the tech is really similar to MG5. Would of hoped that it is just a limitation of the app that pre heating is not possible in the MG5, but probably its due to the car. A shame, but what can you do.

@cybersmart-eu if the feature is hidden in the app it means it is feature gated by some vehicle feature option (in the vehicle configuration topic). The request seems valid, it's just a matter of reverse egineering the app and figuring out what the check actually is. It may be based on BType.
@kimtatti: Does the iSmart app allow you to set a charge limit %?

@cybersmart-eu if the feature is hidden in the app it means it is feature gated by some vehicle feature option (in the vehicle configuration topic). The request seems valid, it's just a matter of reverse egineering the app and figuring out what the check actually is. It may be based on BType.
@kimtatti: Does the iSmart app allow you to set a charge limit %?

Yes it does. MG5 LR models (the car that I have) with the NMC battery does take a% limit on charge level, but the MG5 SR with LFP doesnt.

Just seen that this actually works, only thing is that the car switches it on and off automatically. Can be turned off or on thou. And the power of the heating at least at 75% battery and 1.9kw charging is maybe only a few hundred watts. I will test more when the car is not charging etc. Outside temperature has been negative 15-20 celcius this morning.

@kimtatti I'm closing this as it seems to be  working.