Toggling the sequenced property of VisualScriptFunction doesn't redraw/refesh call nodes

Godot version: v3.2.1.stable.official
OS/device including version: N/A
Issue description:
The sequenced property of VisualScriptFunction is (AFAICT) supposed to enable a function to act as a getter, however:

The functionality is undocumented (see: https://github.com/godotengine/godot-docs/issues/3287).

There is an apparent bug which makes the functionality--at a minimum--undiscoverable and potentially broken.

Steps to reproduce:
Here is an example of how the sequenced property is intended to be used:

Configuration:

functionA has Sequenced set to true i.e. "On"/checked/ticked.
functionB has Sequenced set to false i.e. "Off"/not-checked/not-ticked

In the above image, note the following:

The call node for functionB() has no white triangle sequence ports, only an output data port.
The call node for functionA() does have sequence ports in addition to the output data port.

Also, with this configuration, if the call to functionA() is not connected as part of a sequence then an error is generated by the Add node:

Add: Invalid arguments A: Nil B int

Minimal reproduction project:
The below image shows an example of what happens if sequenced is toggled on functionA and another call node is created by dragging the function name from the "Functions" list onto the graph:

Note:

The two functionA() function call nodes have different appearances (the lower functionA() node was created after "Sequenced" was unchecked.

There is more detail in the documentation-related issue linked above. (Including discussion about whether there's an underlying feature design/exposure issue to consider and uncertainty about potential caching/consts issues.)
Potential solutions
My impression is that a bug fix would need to cover two parts:

Visual refresh of existing displayed function call nodes.

Handling of connections/disconnections of existing function call nodes when the referenced function's sequenced property is set to false--including potentially warning about unintended changes.

Related links

Commit where functionality was added: https://github.com/godotengine/godot/commit/8a4bce6ebd843f9a8f482f74601f4933aae737a3

Issue marked as "Fixed" by above commit: "It's impossible to create custom function without sequence port in VS #6346 "

Semi-related issue: https://github.com/godotengine/godot/pull/9758

Documentation of ports_changed_notify which seems like it might used to modify/update display of node after sequenced property is toggled.

The Reddit /r/godot question about the Sequenced property of VisualScriptFunction that started me down this path. :)

So all the functions with sequence property set to false, will they begin running at the same time?

So all the functions with sequence property set to false, will they be called at the same time? Or do they act as getters?

My understanding is that the functions act as getters.

A better way to solve it would be to refresh the nodes, like you mentioned. Because if the sequence property is changed, it would depend on the user on how to connect/reconnect the node.
I'll just add this in my GSOC proposal.

Because if the sequence property is changed, it would depend on the user on how to connect/reconnect the node.

From a "principle of least surprise" point of view:

I wonder if there's any existing support in Visual Script for "disable this node/connection" rather than just disconnecting?

Or, if it shouldn't be possible to toggle the sequenced property when there is an existing sequenced instance?

FWIW I do feel like the sequenced property being exposed is somewhat unintentional leaking of an implementation detail and that a better approach would be to just automatically treat a "non-sequenced" node as a getter when the output data port is only port connected.

But, yes, at a minimum, visually refreshing the nodes would be an improvement on the existing behaviour, even if it may not be ideal.

Yep I do agree, that sequenced is rather obtuse and probably should be removed in-favor of automatically detecting no sequence port connections.
Or having grayed out sequence ports unless connected displaying capacity to work without the sequence ports.
As for the redrawing part, it is simple enough so maybe it's fine as a bandage.

But, yes, at a minimum, visually refreshing the nodes would be an improvement on the existing behaviour, even if it may not be ideal.

Yup, sure it will be. I'll be making a PR to refresh those nodes. This way there will be some consistency with the property change.


Add StringHelper::implode()

Q
A

Is bugfix?
❌

New feature?
✔

Breaks BC?
❌

Fixed issues
#82

See https://github.com/yiisoft/strings/issues/82#issuecomment-1774478969


Write string external representation in String.write(to: URL)

NSString._getExternalRepresentation() was not returning the string's external representation 👀.
For some reason, CF decides to only include the BOM in the external representation for encodings using the machine's local endianness (e.g. .utf16, .utf32) but not if you specify an explicit endianness (e.g. .utf32BigEndian). It does the same thing on Darwin Foundation -- I don't know why, and I don't agree with it, and it isn't documented anywhere AFAICT, but there it is.

@millenomi Are you able to review this patch, or recommend somebody?

@swift-ci please test and merge

@swift-ci please test

@millenomi Does this look good to go, then?

@millenomi Not sure what happened to this. CI appears green but it wasn't merged? 🤷


refactor(autoware_grid_map_utils): prefix folder structure with autoware/

Description
prefix folder structure with autoware/
Related links
Parent Issue:

https://github.com/autowarefoundation/autoware/issues/5077
https://github.com/autowarefoundation/autoware/issues/4569

How was this PR tested?
Notes for reviewers
None.
Interface changes
None.

Effects on system behavior
None.

@maxime-clem @takayuki5168 thank you for your reviews.
@xmfcx @mitsudome-r could you merge this PR when you have a moment? @maxime-clem is a code owner of this package and he approved the changes, so it should be find to merge. Thanks.

@xmfcx thanks!


Versions fixed and bugs fixed for running first time

Hello,
There were lots of problems for new versions i guess. I'm not familiar to svelte but I've tried to fix these problem and  i succeed it. Maybe it can help to you.

Hi, thanks for the effort but I do not see a reason to update dependencies, seeing SvelteKit is still in beta so its API might change before the release anyways.


[Suggestion] Add an "Open" action for blob

OS: Windows 10
Build Version: 20200720.1
Repro Steps:
Right click one blob and check its context menu.
Actual:
There is no "Open" action for blob.

Suggestion:
Add an "Open" action for blob.

Could you clarify what you mean by "Open"?  Currently no other nodes have an Open context menu item. There is an "Open in..." action, but that's different from opening the file in VS Code.

I mean add an "Open" action to open this blob. Like the action in Storage Explorer.


Update to latest CoffeeNet parent version 0.35.0

New CoffeeNet parent version 0.35.0 was released! Please check https://github.com/coffeenet/coffeenet-starter/blob/master/CHANGELOG.md for more information

Pull Request Test Coverage Report for Build 52

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 73.913%

Totals

Change from base Build 51:
0.0%

Covered Lines:
17

Relevant Lines:
23

💛  - Coveralls


Version checks between local and remote projects

In the scenario where a user communicates with a central database running different table definitions (different migration histories), it might happen that intermediate objects are inserted before the user code crashes.
This can be prevented by running checks on the import of EspressoDB (the init() function).
Things to cross check are:
(1) The version of EspressoDB
(2) The version of the EspressoDB project if applicable
(3) The migration history
The execution of checks should be optional to allow rapid development--nevertheless, this information should be on a prominent doc page.

The migration history check can be realized by the default mechanics of makemigrations.
EspressoDB and EspressoDB project versions must be inserted in the database when migrations are applied. This can be done by adding new default version tables and overloading the manage.py migrate command. On import (and if required) EspressoDB tries to read the most recent information and fails if versions disagree.

Update related to the JOSS review process raised by @remram44.
https://github.com/openjournals/joss-reviews/issues/2007

For this issue, the code development takes place on the feature-init-checks branch.

Closed with #48


cargo vendor fails to sync - duplicate version of package

Lapce Version
Git master.
I downloaded a fresh copy and see the message below.
System information
Mageia Cauldron x86_64
Describe the bug
% cargo vendor > .cargo/config
error: failed to sync

Caused by:
  found duplicate version of package `swash v0.1.6` vendored from two sources:

  	source 1: registry `crates-io`
  	source 2: https://github.com/dfrg/swash#af0c735d

% cargo --version
cargo 1.70.0

Additional information
N/A

I expect that this is due to us having lapce-app and lapce-data/lapce-ui.
lapce-app is our current version rewritten with the new UI library, while lapce-data/lapce-ui are the old versions which used druid. We are currently keeping them around to make it easier to port parts of code that we've missed reimplementing.
They both depend on swash but different versions like the error message says. However, they don't interact at all (so we aren't actually depending on two different versions).
I did a quick skim of cargo vendor's docs, and I don't see a good way to avoid this. There's also https://github.com/rust-lang/cargo/issues/10310.
But you can just vendor whichever one you're wanting to work on / use.
If you're wanting to contribute to master, or use the current master, then removing lapce-data/lapce-ui and adjusting the Cargo.toml workspace should let you vendor it.
If you're wanting to vendor the older druid version, then doing the same to lapce-app should work. Though you'll run into #2463

We'll remove the lapce-data/lapce-ui folders in the future once we have gotten 'enough' of the pieces ported over.

Fixed with https://github.com/lapce/lapce/commit/774008f54bc5843afa8cbf8fa766b620c545aa27


[Feature Request] detect dataview styled fields

I'd like dataview styled field and other not isolated inline fields can be modified using this plugin. The current behavior is:
field:: Works

- field2:: doesn't work

[field3:: Doesn't work either]

*field4*:: But this works

I would like to all works.

closed with #47

Thanks, That's great!!


[dynamodb2] put_item with an empty set as an attribute does not throw ValidationException

Hey! Thanks for a great library. It makes unit tests really easy to write!
This is similar to #1129 and #1744. Tested on moto version ==2.3.2
DynamoDB does not allow empty sets as values for items. We've had to write some custom wrappers for this, and I suspect heavy users would do the same.
When writing a unit test though, moto's dynamodb does not error out.
How to reproduce:
Try the following gist 50 lines including whitespace.
Key snippets from the gist:

item = {
    "Key": "some-irrelevant_key",
    "SetTypeAttribute": {"SS": set([])},
}

# The table can be a dynamodb table or a moto mocked dynamodb table.
table.put_item(Item=item)

The output I get is:
Writing to real dynamodb
Failed writing to real dynamodb
Traceback (most recent call last):
  File "moto-fail.py", line 42, in <module>
    write_via_boto()
  File "moto-fail.py", line 19, in write_via_boto
    write_item(table=table)
  File "moto-fail.py", line 11, in write_item
    table.put_item(Item=item)
  File "/home/dipanjanm/.local/lib/python3.8/site-packages/boto3/resources/factory.py", line 520, in do_action
    response = action(self, *args, **kwargs)
  File "/home/dipanjanm/.local/lib/python3.8/site-packages/boto3/resources/action.py", line 83, in __call__
    response = getattr(parent.meta.client, operation_name)(*args, **params)
  File "/home/dipanjanm/.local/lib/python3.8/site-packages/botocore/client.py", line 391, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/home/dipanjanm/.local/lib/python3.8/site-packages/botocore/client.py", line 719, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the PutItem operation: One or more parameter values were invalid: An number set  may not be empty

Writing to mock dynamodb
Succeeded writing to mock dynamodb

Expectation
Calling put_item on mock dynamodb2 with an empty set as an attribute should fail with a ValidationException.
Cheers!

Thanks for raising this @schatten!


"out of memory" error in GRUB on attempting to load initrd after chainload on macbookpro11,3

So I have tried this on a late 2013 MBP (macbookpro11,3) and after many days of futzing around, I'm sad to say this no longer works. After chainloading apple_set_os.efi (tried the pre-built version as well as custom building my own), GRUB will no longer be able to load an initrd image. The initrd command fails with "out of memory" and the initrd is not loaded (resulting in a kernel panic on boot due to not being able to mount the root fs). Previously I was running macOS 11.7 (Big Sur) on this machine, but I've since removed it completely. It's possible it did some sort of firmware update which broke this spoofing method.
I tried reducing the size of the initrd image, but any size, even down to 40MB, still produces this error. This leads me to believe that whatever memory handling routines GRUB relies on, break after the firmware starts believing we're macOS.
Interestingly, if I boot into Linux without invoking apple_set_os.efi, then perform a warm reboot (without poweroff!), and THEN invoke apple_set_os.efi, we're golden and no problems arise. The iGPU remains visible and Linux boots just fine. Even got as far as trying to setup prime-select, but as soon as I shut off and cold boot, we're back in "out of memory" territory and kernel panic on boot.
At this point, the only thought I have how to work around this would perhaps be to patch the kernel itself, to invoke this code AFTER initrd has been loaded by GRUB, but rolling a custom kernel image is a little bit beyond the effort I'm willing to put into this.

After much futzing around with stuff, I've managed to come up with a workaround for this. It seems to only trip up GRUB if GRUB is the first bootloader that the Apple EFI runs. Out of desperation I tried the rEFInd bootloader and that seems to work. I've since set it up as follows:

Apple EFI initially loads rEFInd
rEFInd then chainloads into GRUB
GRUB loads apple_set_os.efi on startup and then loads Linux & the initrd
Using this sequence, amazingly, avoids the "out of memory" error in GRUB, and everything works out. I suspect rEFInd reconfigures something about how the memory subsystems of EFI work and avoids GRUB hitting that particular corner case.
Anyway, issue worked around, I figured might as well drop it in here for search indexing, in case anybody else runs across this and needs the workaround.


More efficient and easy to understand yuv2buffer converter

Sorry, I unintentionally closed https://github.com/android/camera-samples/pull/336, so here is updated version of it.
Part discussion of this code is in issue #277.
Documentation about approach, unit-tests, performance benchmarks + demo application are here https://github.com/gordinmitya/yuv2buf. This code is tested in several apps in production with both: Camera2 output and MediaCodec outputs.
I compared performance of previous and new code on my Mi 9t pro (Snapdragon 855): old 3.5-4.0ms, new 2.6-3.0ms.
Modified CameraActivity.kt was used for comparison.
Will be happy to answer questions, if any!

@googlebot I fixed it.


Renamed Documentation~ folder according to Unity Package Layout.

According to this manual: https://docs.unity3d.com/Manual/cus-layout.html and other Unity official packages, to prevent showing the documentation directly in the editor and consuming disk space. this way you can see the documentation when required using the Package Manager window.

Thank you for contribution (yet one more time)


random long time findstring

hello, i have almost 500 regex to findstring to 20000 various length text,as i test some times , i found this will occur a strange circumstance：
some time is a regex will cost a long time (servel s and more),and others are ms or us,but the next time will be b regex has this problem.in my tests,every time is a different regex to has this problem,so i think may it is not regex's problem, maybe this lib has some places need to improved or changed

Hi @Nyx2022 - would you be able to provide a code reproduction of the issue? There could be a problem but without a reproduction don't have a way to really investigate it. Thanks.

Hi @Nyx2022 - didn't get a response so am going to close this issue. Please feel free to reopen if you are able to help reproduce the problem. Thanks for the understanding.


pcre2-deploy/ARCH=x86_64,NAME=pcre2,OS=centos6,SITE=generic,VERSION=10.23 #11 failed

Build 'pcre2-deploy/ARCH=x86_64,NAME=pcre2,OS=centos6,SITE=generic,VERSION=10.23' is failing!
Last 50 lines of build output:
[...truncated 11.42 KB...]
[ 81%] Building C object CMakeFiles/pcre2-8.dir/src/pcre2_serialize.c.o
[ 82%] Building C object CMakeFiles/pcre2-8.dir/src/pcre2_string_utils.c.o
[ 83%] Building C object CMakeFiles/pcre2-8.dir/src/pcre2_study.c.o
[ 85%] Building C object CMakeFiles/pcre2-8.dir/src/pcre2_substitute.c.o
[ 86%] Building C object CMakeFiles/pcre2-8.dir/src/pcre2_substring.c.o
[ 87%] Building C object CMakeFiles/pcre2-8.dir/src/pcre2_tables.c.o
[ 88%] Building C object CMakeFiles/pcre2-8.dir/src/pcre2_ucd.c.o
[ 90%] Building C object CMakeFiles/pcre2-8.dir/src/pcre2_valid_utf.c.o
[ 91%] Building C object CMakeFiles/pcre2-8.dir/src/pcre2_xclass.c.o
[ 92%] Linking C shared library libpcre2-8.so
[ 92%] Built target pcre2-8
Scanning dependencies of target pcre2-posix
[ 93%] Building C object CMakeFiles/pcre2-posix.dir/src/pcre2posix.c.o
[ 95%] Linking C shared library libpcre2-posix.so
[ 95%] Built target pcre2-posix
Scanning dependencies of target pcre2grep
[ 96%] Building C object CMakeFiles/pcre2grep.dir/src/pcre2grep.c.o
[ 97%] Linking C executable pcre2grep
[ 97%] Built target pcre2grep
Scanning dependencies of target pcre2test
[ 98%] Building C object CMakeFiles/pcre2test.dir/src/pcre2test.c.o
[100%] Linking C executable pcre2test
[100%] Built target pcre2test
[Current build status] check if current [SUCCESS] is worse or equals then [SUCCESS] and better or equals then [SUCCESS]
Run condition [Current build status] enabling perform for step [Execute shell]
[10.23] $ /bin/sh -xe /tmp/hudson7100855440203688226.sh
+ echo 'Starting check-build'
Starting check-build
+ ./check-build.sh
Running tests...
When testing is complete, review test output in the
"/home/jenkins/workspace/pcre2-deploy/ARCH/x86_64/NAME/pcre2/OS/centos6/SITE/generic/VERSION/10.23/pcre2-10.23/build-11/Testing/Temporary" folder.

Test project /home/jenkins/workspace/pcre2-deploy/ARCH/x86_64/NAME/pcre2/OS/centos6/SITE/generic/VERSION/10.23/pcre2-10.23/build-11
    Start 1: pcre2_test
1/2 Test #1: pcre2_test .......................   Passed    1.35 sec
    Start 2: pcre2_grep_test
2/2 Test #2: pcre2_grep_test ..................***Failed    0.31 sec

50% tests passed, 1 tests failed out of 2

Total Test time (real) =   1.66 sec

The following tests FAILED:
	  2 - pcre2_grep_test (Failed)
Errors while running CTest
make: *** [test] Error 8
Build step 'Conditional step (single)' marked build as failure
[WARNINGS] Skipping publisher since build result is FAILURE

Changes since last successful build:
No changes

[Bruce Becker] fe5ae210510da2c6fe25d690cb26facf20686426 - Change name in URL path

[Bruce Becker] d99db06c613d4941c2b35e3c09b23cc0af9ec029 - missing wget

[Bruce Becker] 15dbf23fc641e37c0014fdd88d7ed45306be933c - Fix typo and use correct compression algo

[Bruce Becker] 8129ccc5a35b40266b5457b4290f6f1a17209014 - Fix naming convention

No changes
No changes
No changes

[Bruce Becker] ec24a51294a0927e12e4d86995ebd7dddbbce010 - Update modulefile for FR3

[Bruce Becker] 598ae422550cf56ad80cc6a58cc79a2b14886516 - remove zlib dependency

[Bruce Becker] 0ec6d850e5debcda282f3ec8851c326ab8a065e1 - Typo in config

View full output

Build was fixed!


Red background over textfield

Hi,
I am using Wootric for flutter and I used this library for the wrapper over Wootric.
I have integrated wootric succesfully into my own flutter app, but I am facing some weird issue such as red background over textfield after selecting a score for NPS. Also, after submitting the score and comments in the textfield, the dialog box pop up is also quite different as shown in the demo of the readme.
Any idea why? Any help is appreciated.

Hi @Harrizontal, thanks for reporting this. It's the first time we've heard of that flutter wrapper. I will check on this the upcoming week and try to figure out what's going on.
Thanks!

Hey diego, thanks! If you need any assistance, please do let me know.


Fix VolumeSnapshotClass creation for Ceph RBD

Signed off by: Priyanka Jiandani<EMAIL_ADDRESS>

/ok-to-test


Humidity values higher than 100%

Hello,
I have recently changed to DHTnew after this thread, and I noticed that completely at random, I get these very high values of humidity. Of course I could just ignore them if higher than 100, but I was wondering what the cause might be.
My setup are two ESP-01s one with DHT22, the other with a DHT11, both send values to an MQTT broker, which are captured by telegraf and stored in an InfluxDB instance.
Humidity values higher than 100%

time
temperature
humidity
location
sensor

----
-----------
--------
--------
------

2021-04-11T23:56:08.272696401Z
8.3
3317.3
Living Room
DHT22

2021-04-12T03:37:10.063376651Z
8.4
3316.6
Living Room
DHT22

2021-04-12T04:57:10.712664669Z
8.4
3316.5
Living Room
DHT22

2021-04-12T07:48:12.095298698Z
8.6
3316
Living Room
DHT22

2021-04-12T08:25:42.399491599Z
8.7
3315.7
Living Room
DHT22

2021-04-12T09:14:42.796313132Z
8.8
3315.2
Living Room
DHT22

2021-04-12T10:23:13.385068097Z
8.9
3315
Living Room
DHT22

2021-04-12T11:03:43.682027118Z
9.1
3314.3
Living Room
DHT22

2021-04-12T14:58:15.595547784Z
9.2
3317.8
Living Room
DHT22

2021-04-12T15:53:46.033386665Z
9.1
3318.4
Living Room
DHT22

2021-04-12T15:59:16.076817334Z
9.1
3318.4
Living Room
DHT22

2021-04-13T13:36:56.626400588Z
9.3
3317.2
Living Room
DHT22

2021-04-13T15:49:57.682886104Z
9.5
3317.1
Living Room
DHT22

The graph of the last 48 hours looks like this:

Living Room is the DHT22 and Kitchen is DHT11. They are at the same location, side-by-side, despite the names
Any thoughts on why this happens?
Thanks!

A problem could be the timing of the bits clocking in. If one reads the
data line too fast or too slow, bits may shift 1 position. Effect is that
values seem to be multiplied by two.
An humidity of 55% could suddenly become 110%. To see if this happens, you
need to reverse engineer the bit patterns and compare them. Difficulty is
that only a part can be shifted.
These bit errors can be detected by checking the return value of read.
Shifted bits would typically cause a CRC error.
Hope this helps you analyzing your data.
On Tue, 13 Apr 2021, 21:34 Afonso Costa, @.***> wrote:

Hello,
I have recently changed to DHTnew after this thread, and I noticed that
completely at random I get this very high values of humidity. Of course I
can just ignore them if higher than 100, but I was wondering what the cause
would be.
My setup are two ESP-01s one with DHT22, the other with a DHT11, both send
values to an MQTT broker, which are captured by telegraf and stored in an
InfluxDB instance.
Humidity values higher than 100%
time temperature humidity location sensor

2021-04-11T23:56:08.272696401Z 8.3 3317.3 Living Room DHT22
2021-04-12T03:37:10.063376651Z 8.4 3316.6 Living Room DHT22
2021-04-12T04:57:10.712664669Z 8.4 3316.5 Living Room DHT22
2021-04-12T07:48:12.095298698Z 8.6 3316 Living Room DHT22
2021-04-12T08:25:42.399491599Z 8.7 3315.7 Living Room DHT22
2021-04-12T09:14:42.796313132Z 8.8 3315.2 Living Room DHT22
2021-04-12T10:23:13.385068097Z 8.9 3315 Living Room DHT22
2021-04-12T11:03:43.682027118Z 9.1 3314.3 Living Room DHT22
2021-04-12T14:58:15.595547784Z 9.2 3317.8 Living Room DHT22
2021-04-12T15:53:46.033386665Z 9.1 3318.4 Living Room DHT22
2021-04-12T15:59:16.076817334Z 9.1 3318.4 Living Room DHT22
2021-04-13T13:36:56.626400588Z 9.3 3317.2 Living Room DHT22
2021-04-13T15:49:57.682886104Z 9.5 3317.1 Living Room DHT22
The graph of the last 48 hours looks like this:
[image: image]
https://user-images.githubusercontent.com/20598780/114609166-66e14980-9c96-11eb-8cca-e2b5d7a30a9d.png
Living Room is the DHT22 and Kitchen is DHT11. They are at the same
location, side-by-side, despite the names
Any thoughts on why this happens?
Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/RobTillaart/DHTNew/issues/63, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AADQ77B3N63OQRZLRXYVH6LTISMDLANCNFSM4236SEGA
.

I assumed CRC is implemented in the lib right? I only take a reading if I get a DHTLIB_OK code, otherwise I discard it.
I am taking reads every 10 seconds

The CRC is checked in the library and if it fails it is indicated in the return value of read() . Other conditions that could fail are checked too. The first error is reported.
What action to take is up to the user of the sensor.
E.g. a CRC error implies that four bytes do not add up to rhe fifth. That doesn't tell anything about which of those five bytes has the error.
E.g. if the last bit of H or T flips there is a CRC error but only one tenth difference.
If the error is in th CRC byte itself, T an H

Oops, slip of finger...

I assumed CRC is implemented in the lib right? I only take a reading if I get a DHTLIB_OK code, otherwise I discard it.
I am taking reads every 10 seconds

In theory the chance of a correct CRC while there is an error is small. As the bits are added the bits are not only affecting the CRC bit value on their position, but also the bits left of them.
In practice there are scenarios where the CRC is correct when they data is wrong.
Example:  when all bits are shifted one place right, adding them can give a correct CRC.
00000001   00000001  00000001  00000001  00000100    - example
==>
00000010   00000010  00000010  00000010  0000100?

(this example is simplified but works for most if not all bit patterns)
If the last bit that is shifted in is a 0, the CRC will be OK , when it is a 1 it will fail  (so 50% chance).
Bits shifted left one place has similar odds.

In the past I wrote code that did additional checks. These checks never made it into the library. They added extra footprint and the added value seemed small. The additional tests included thoughts like:

as T never gets above 80°C  (datasheet)  means the bits that may be set are  10000011 11111111  (5 bits always zero)
if T is negative (-40°C) the bits that may be set are 10000001 1111111  (6 bits zero)
as H never gets above 100% (datasheet) means the bits that may be set are   00000011 11111111  (6 bits always zero)

The zero bits can be easily and fast checked by applying a mask, but typical the CRC should detect such bit errors.
A bit mask test would catch a part of the "shift one place" errors.  One thing I never investigated is if and how this large
percentage of fixed zero's affect the effectiveness of the CRC code.
Other and imho better ideas included

remember previous T and H and time in millis() of last read.
provide delta T and H   === current - previous
provide gradient T and H  === delta  / (millis() - lastTime)   (think 1st order derivative)
remember last gradient
detect flip of gradient  (sign gradient changes)
detect increase of gradient (early sign of runaway heat up)  (think 2nd order derivative)
get/set warning and alert gradient (better not in the library)

This functionality would allow to detect more anomalies in the readings, and could be interesting in their own way.

Back to your original question, the humidity all hoover around  3315  in the final representation and it definitely looks like there is a constant offset. Question is where is this offset introduced?
Sensor did it
3315 is  the following bit pattern  00001100 11110011   (so first byte has 2 bits set incorrectly)
If I mask out these two bits  00000000 11110011  ==> 24.3%  humidity which sounds pretty OK.
All other values are in the same range so they should be OK too.
Temperature = 8.9 ==> 00000000 01011001
CRC =  00000000 +  01011001 + 00001100 + 11110011  = 11010010
without the 2 incorrect bits
CRC =  00000000 +  01011001 + 00000000 + 11110011  = 01001100
so  CRC should have caught these,

It makes sense the scenario that you outlined, such as when all bits are shiffted. But I thought that this would be very rare to occur, let alone 12 times in 2 days.
What about some simple functionality that would give an "Overflow" error if the values are outside the sensor specs? I believe the footprint of this would be rather small and very effective. You wouldn't need to check the bit values, only make sure that the temps and humidities are within the specified thresholds.
Would this make any sense?

Hi,
Overflow (Or underflow) is relative easy to detect. I will give it a try, expect a experimental branch in an hour or less..

It will be a new return value for read()
DHTLIB_VALUE_OUT_OF_RANGE        -99

Check out_of_range branch, read can return these two values...
#define DHTLIB_HUMIDITY_OUT_OF_RANGE     -100
#define DHTLIB_TEMPERATURE_OUT_OF_RANGE  -101
It will not detect everything e.g. T = 25°C and H = 45% , if those values shift, they still are within range.
Gradient
Comparison with previous value (delta/gradient) is more effective, however users typically sample so often that the max delta is in the order of resolution steps of the sensor used. For a DHT22 you typically read so often that you see at most 0.2 between reads .
Temperatures hardly ever drop harder than 1°C a minute
(disclaimer)
Spearfish holds the world record for the fastest recorded temperature change. On January 22, 1943, at about 7:30 a.m. MST, the temperature in Spearfish was −4 °F (−20 °C). The Chinook wind picked up speed rapidly, and two minutes later (7:32 a.m.) the temperature was +45 °F (7 °C).

27C in 2 minutes. =  1C / 4 seconds.

Some typos (too eager too publish ;)

Thank you very much! I will definitely test this soon.

Gradient
Comparison with previous value (delta/gradient) is more effective, however users typically sample so often that the max delta is in the order of resolution steps of the sensor used. For a DHT22 you typically read so often that you see at most 0.2 between reads .

I understand your point, however I am not sure if this in practice occurs. I will gather my sensor data that I have persisted and I will make these computations to check whether there are no changes higher than 0.2. I will post the results in this issue (?)
Also, for low power applications that perhaps take readings every minute, these changes can be higher. I don't really care with outliers, because the temperatures I actually use are the mean by minute (readings every 10 seconds) and I use a 3-point moving-average filter. Something like this:
SELECT moving_average(mean("temperature"), 5)
FROM "mqtt_consumer"
WHERE ("location" =~ /^Kitchen$/)
AND time >= now() - 24h
GROUP BY time(15m) fill(null)

5-point moving average on 15 mins bins of data, for the last 24h
This is InfluxQL, but you get the picture.
The graph would look like this:

So these out-of-delta values are not really a problem (but the overflow ones where it reads 3200 %H were definitely one, of course)

I had that case on the Arduino code, before you implemented this on the library. Therefore, there was no use in including in the InfluxQL query again

Would it add value to merge this branch - https://github.com/RobTillaart/DHTNew/tree/out_of_range

Hi,
I have been using an external code block to validate if the value is within the ranges. I believe it doesnt hurt to include it, but thats up to you
Em 25/04/2021, 19:02 +0100, Rob Tillaart @.***>, escreveu:

Would it add value to merge this branch - https://github.com/RobTillaart/DHTNew/tree/out_of_range—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

@afonsoc12
Been a while and gave it some time to think it over and I decided to add it behind a #define flag.
This flag is default not set.
Arguments:

it has definitely a functional value (see discussion above)
occurs quite seldom so most people will not need it
code adds 84 bytes (UNO due to float comparisons)


[Feature] Kafka debezium json supports automatic discovery of primary keys

Search before asking

[X] I searched in the issues and found nothing similar.

Motivation
kafka debezium json supports automatic discovery of primary keys， help us automatically create a table with a primary key without specifying the primary key
Solution
No response
Anything else?
No response
Are you willing to submit a PR?

[X] I'm willing to submit a PR!

@yuzelin please assign it to me.

Related to https://github.com/apache/incubator-paimon/issues/2701

Any plan to merge into the master branch? still not support automatic discovery of primary keys


Unable to add tel (telephone) or other app handler links in rich text editor.

Found a bug? Please fill out the sections below. 👍
Issue Summary
Unable to add tel: (telephone) links in Rich Text Editor. There are also other app handler type links that I imagine this would apply to. There is a special way of adding mailto: links (Email link option in modal).
Steps to Reproduce

(for example) Start a new project with wagtail start myproject
Add a rich text block to models.py, for example:

from wagtail.core.fields import RichTextField
from wagtail.core.models import Page

class HomePage(Page):

    body = RichTextField(blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('body'),
    ]

Edit the rich text block in the wagtail admin and try to add a tel: link, there is no possible way to accomplish this.

I have confirmed that this issue can be reproduced as described on a fresh Wagtail project: yes

Technical details

Python version: 3.7.2
Django version: 2.1
Wagtail version: 2.4
Browser version: Firefox, Edge, Chrome

Hi @vsalvino - thanks for the report. This is covered by #3776.

Thank you, I searched but did not come across that issue. Glad it is already being considered.


Component | Tooltip | Crosshair: Automatic Tooltip placement when used with Crosshair

https://github.com/user-attachments/assets/5bf6dd3b-bffc-4910-86a7-aea1266c8b13
Component | Tooltip: Add ability to override horizontal placement

Introduced a new overrideHorizontalPlacement method to the Tooltip component.
This enhancement allows the Tooltip's horizontal placement to be overridden, facilitating better positioning for components like the Crosshair.

Component | Crosshair: Override tooltip horizontal placement based on Crosshair position

Updated the Crosshair component to set the Tooltip's horizontal placement dynamically.
Ensures that the Tooltip is positioned on the left or right side of the Crosshair based on its position relative to the container for optimal visibility.

Dev App | Navigation: Enhanced search capabilities

Expanded search functionality to include subTitle and category, improving search results and relevance beyond just the Title field.

Dev App | Examples | Crosshair: Add basic crosshair example

Added a new basic crosshair example showcasing the usage of VisCrosshair and VisTooltip components.
Removed the duration prop from the Crosshair in the existing basic area example.

@lee00678 This is ready for review
https://github.com/user-attachments/assets/efc5756f-1304-4343-b4b9-c03327474ff4


Add MI300X Spec

A MI300X spec has been provided. Thanks.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 2 committers have signed the CLA.:x: Hui Liu:x: hliucaHui Liu seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Docker Desktop extension cannot modify password？？？

2 questions

When I reset the password with portainer/helper-reset-password or modify the password with api (/api/users/1), Docker Desktop extension portainer can no longer be used, and the prompt Failure Unauthorized, why???
I want to use expand and web at the same time! You can't just use extensions
When I extend the container during installation, there is a prompt "created admin user with the given password", so what the password. Delete the portainer.db password and reset it again, but you still can't see the initialized password

The Docker Desktop extension version of Portainer is intended for use within the Docker Desktop application only, and not through a web browser. If you require web access we recommend using the standard version of Portainer instead.

I confirm that the previous version is OK, but it can't do that now. Maybe you are thinking about security or letting users choose the standard version of Portainer or other, but I do not accept such suggestions.
Technology is getting narrower and narrower, that is monopoly. Besides, it is only more convenient for me to use expand and web at the same time. Anyway, it's a pity

Fortunately, I have found a way to use both extension and web modes. I use fiddler to intercept http requests from the container, parse out the valid JWT, and assign jwt values to web sites through tempermonkey. Haha, it's really an interesting thing, but thank you anyway

Related to #10109

Open http://localhost:49000/#!/auth then inspect the page in the browser

Inspect the page in the browser

3} Go to (Sources) and locate "portainer/app/portainer/api/authentication.js"

You will see the default name(admin) and password in the script copy the pass and login

5} Enter (admin) my account page and change the password

NOTE: USER CANNOT BE CHANGED

is this still valid?

Open http://localhost:49000/#!/auth
Inspect the page in the browser

3} Go to (Sources) and locate "portainer/app/portainer/api/authentication.js"

You will see the default name(admin) and password in the script copy the pass and login

5} Enter (admin) my account page and change the password
NOTE: USER CANNOT BE CHANGED


No error handling for 404 errors

If I try to access an API that doesn't exist, there are no error handling pages that are used. According to the JSON API spec, an array of errors should be returned in situations like this.
Fortune will need to handle these errors. If it's by design that it doesn't handle these errors, it would be helpful if the documentation could explain how to handle these errors in a way that conforms with the spec.

Are you sure?
Look at the tests. There are a few 404 responses tested, with the appropriate array of errors payload.
What are you getting?

After looking into it further, it turns out that the error is in fact being returned in the response body in the JSON API format. However, the reason why I didn't notice is because both Firefox and Edge currently don't render it. It works in Chrome.
So I'll report that browser bug to those browser vendors.


Grid doesn't fill available height

Bug report
Codepen
https://codepen.io/thomaslindstr_m/pen/JjYygRo?editors=0010
Explanation
When removing all configured (supposed) paddings and margins, the grid doesn't fill available height. What's weird though, is that with the same configuration, but a different data set, it sometimes does fill the available height. I did not, however, succeed in reproducing that in the codepen, but I've attached screenshots from the production implementation.

tl;dr: I want the chart to always fill the available height.

The space is consistently 5px.

This was due to rotateAlways on xaxis being set to false. Setting it to true ensures full height.
I had set xaxis.labels.show to false, to this behavior was unexpected.

Thanks for providing extra details that setting rotateAlways produce this issue.
I will take a closer look soon.

Use this
{
  chart: {
    sparkline: {
      enabled: true
    }
  }
}


OrientDB 3.0 driver cannot connect

I am unable to connect to OrientDB using 3.0.x jdbc version.
Driver info:
Name: OrientDB 3.0
Driver Type: Generic
Class Name: com.orientechnologies.orient.jdbc.OrientJdbcDriver
URL Template: jdbc:orient:remote:{host}:{port}/{database}
Artifact Group Id: com.orientechnologies
Artifact Id: orientdb-jdbc
Artifact Version: 3.0.5
Connection to orientdb using official docker image: orientdb:3.0.5
Connection fails with 2 gui dialogs:

Connect to 'OrientDB 3.0 - test - localhost': Null connection returned
Problem Occured: 'Opening database connection' has encountered a problem. jdk/nashorn/api/scripting/ScriptObjectMirror

Info from console:
2018-08-06 16:46:10.165 - Connect with 'OrientDB 3.0 - test - localhost' (53CA7854-AFCB-6FDB-141D-7F3E544653E1-164cbb864b9-4e54cf192d6ceef)
2018-08-06 16:46:10.174 - null
java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/ScriptObjectMirror
	at com.orientechnologies.orient.core.command.script.OJavascriptScriptExecutor.<init>(OJavascriptScriptExecutor.java:14)
	at com.orientechnologies.orient.core.command.script.OScriptManager.lambda$new$0(OScriptManager.java:70)
	at com.orientechnologies.orient.core.command.script.OScriptManager.<init>(OScriptManager.java:99)
	at com.orientechnologies.orient.core.Orient.<init>(Orient.java:75)
	at com.orientechnologies.orient.core.Orient.startUp(Orient.java:199)
	at com.orientechnologies.orient.core.Orient.instance(Orient.java:185)
	at com.orientechnologies.orient.core.db.OrientDBInternal.remote(OrientDBInternal.java:88)
	at com.orientechnologies.orient.core.db.OrientDB.<init>(OrientDB.java:166)
	at com.orientechnologies.orient.jdbc.OrientJdbcConnection.<init>(OrientJdbcConnection.java:62)
	at com.orientechnologies.orient.jdbc.OrientJdbcDriver.connect(OrientJdbcDriver.java:52)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.lambda$0(JDBCDataSource.java:147)
	at org.jkiss.dbeaver.utils.RuntimeUtils$MonitoringTask.run(RuntimeUtils.java:271)
	at org.jkiss.dbeaver.utils.RuntimeUtils$1.run(RuntimeUtils.java:217)
	at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:95)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)
2018-08-06 16:46:10.216 - Connection failed (53CA7854-AFCB-6FDB-141D-7F3E544653E1-164cbb864b9-4e54cf192d6ceef)
2018-08-06 16:46:10.217 - org.jkiss.dbeaver.model.exec.DBCException: Null connection returned
org.jkiss.dbeaver.model.exec.DBCException: Null connection returned
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:160)
	at org.jkiss.dbeaver.ext.generic.model.GenericDataSource.openConnection(GenericDataSource.java:126)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCExecutionContext.connect(JDBCExecutionContext.java:86)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.initializeMainContext(JDBCRemoteInstance.java:86)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCRemoteInstance.<init>(JDBCRemoteInstance.java:54)
	at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.initializeRemoteInstance(JDBCDataSource.java:104)
	at org.jkiss.dbeaver.ext.generic.model.GenericDataSource.<init>(GenericDataSource.java:108)
	at org.jkiss.dbeaver.ext.generic.model.meta.GenericMetaModel.createDataSourceImpl(GenericMetaModel.java:67)
	at org.jkiss.dbeaver.ext.generic.GenericDataSourceProvider.openDataSource(GenericDataSourceProvider.java:130)
	at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:745)
	at org.jkiss.dbeaver.runtime.jobs.ConnectJob.run(ConnectJob.java:70)
	at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:95)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:60)

It's still possible to connect to db using old driver and run queries, but there were significant changes in some parts of communication protocol especially error reporting which now fails using the old driver.
Is there anything I could change in driver/connection settings to make it work?

Thank you. It works.
There's one other problem that it does not work with URL Template containing port jdbc:orient:remote:{host}:{port}/{database}. But I assume it's a problem with orientdb-jdbc library itself.
In case there is no problem for dbeaver and/or other drivers it would be great to have it working out of the box.

Perhaps we need two different OrientDB drivers (for older and newer versions).
Do you have working driver configuration for 3.x driver? Could you post it?

We need to:

Update bundled Java to the most recent Java 1.8 version
Make sure that extension jar is available for DBeaver

I'm working with another JDBC driver that uses nashorn for json parsing. I understand it is relatively fast, and avoids a few Mb of dependencies carrying along Jackson or anther library.
Is it feasible to somehow allow DBeaver to recognize JDK 8 libraries?

The issue is not actual anymore. I can connect with the latest driver version using special connection type for OrientDB


Fix buffer size counting bug and add logging to UDP sender

Resolves #150

Coverage increased (+0.003%) to 99.242% when pulling 0788eda91c68ccbcd88582c198744ed27726dc31 on fix-packet-size into 5bd076326d84f970decfb74020a70ee9f8162fce on master.

Coverage increased (+0.003%) to 99.242% when pulling 8ea74ccfd9dcebf8d187325b0aeb2f829652f387 on fix-packet-size into 5bd076326d84f970decfb74020a70ee9f8162fce on master.

For the most part looks good to me.  The only real concern is whether or not we should emit a metric on error logs.

Coverage increased (+0.003%) to 99.242% when pulling 7ecb9052b47edc76b9cc771a982f1a7bcf8e8ccc on fix-packet-size into 5bd076326d84f970decfb74020a70ee9f8162fce on master.


Question about the trajectories.txt

Hey there,
Thanks for the dataset. Just a clarification question regarding to the trajectories.txt files included in the released dataset.
Sessions of map, query_val_XXX and query_XXX all contains the trajectories.txt file. If I understand it correctly, map/trajectories.txt and query_val_XXX/trajectories.txt are the ground truth poses of the corresponding poses.
What are the content of the query_XXX/trajectories.txt? Are these the poses reported by the device's own odometery system?
Thanks
Weiwu

If I understand it correctly, map/trajectories.txt and query_val_XXX/trajectories.txt are the ground truth poses of the corresponding poses.

This is correct.

What are the content of the query_XXX/trajectories.txt? Are these the poses reported by the device's own odometery system?

Yes, poses in query_{hololens,phone}/trajectories.txt are the outputs of each device's local tracking. They are consistent within all images of a sub-session (sequence), but are defined in an arbitrary reference-frame (usually aligned with the first pose of each sequence). They may exhibit some drift.
Apologies for the lack of documentation - we definitely should clarify this.

Minor correction: the poses in query_val_XXX/trajectories.txt are also from on device tracking. The ground truth poses of the corresponding poses can be found in query_val_XXX/proc/alignment_trajectories.txt.
The INFO.MD coming with the data already mentions where GT can be found for each session type.

Thanks for the prompt reply. Just one followup question regarding the local tracking:

Yes, poses in query_{hololens,phone}/trajectories.txt are the outputs of each device's local tracking. They are consistent within all images of a sub-session (sequence), but are defined in an arbitrary reference-frame (usually aligned with the first pose of each sequence). They may exhibit some drift.

If I understand it right, the device (HoloLens and phone) local tracking should have drift over long period of time. Do you post-process it to remove the drift (through loop closure or global matching)? Any chance we can access the tracking output by the device's own odometry (which potentially have drift)?

The data in query{_val,}_{hololens,phone}/trajectories.txt are the outputs of each device's local tracking, which does have drift and is not corrected. Only the GT poses (released only for the mapping and validation images) do not exhibit any drift (see paper). Do you mean that you would like to have access to the tracking outputs for the mapping data as well?

No. I think I was just confused when I read "They are consistent within all images of a sub-session (sequence)...". I thought consistent means no drift.
Thanks again.


Why was ci/ changed to .ci/?

@knaaptime Why was ci/ changed to .ci/ in #95?
See here

to hide non-source code files from casual users

to hide non-source code files from casual users


Does not display Google Calendar Event

Sorry, folks. New at this.  Can someone elplain to me how to make Speculum see my google calendar events?  I'm having no luck finding permissions on my device to allow this.
Thanks guys.
Jaimee

Hi! Are you on Marshmallow? You should get a permission dialog on startup if you are.

No, I think that device is on lollipop (4.4.2 sound right?).
Regarding the pull request, I'm still so new on GitHub, I'm not sure what that means or what exactly it does
Gwack!

On 11 May 2016, at 10:12 PM, Niels Masdorp<EMAIL_ADDRESS>wrote:
Hi! Are you on Marshmallow? You should get a permission dialog on startup if you are.
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub

In that case the permission should be granted when you install the application. What makes you think the permission is missing? Are you seeing "no upcoming events" or nothing at all?

I'm seeing "No events today".
I keep my work roster on my calendar as well as my running schedule.  My
running schedule is set up as a series of all day events.  Will they appear?
On May 11, 2016 10:34 PM, "Niels Masdorp"<EMAIL_ADDRESS>wrote:

In that case the permission should be granted when you install the
application. What makes you think the permission is missing? Are you seeing
"no upcoming events" or nothing at all?
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub
https://github.com/NielsMasdorp/Speculum-Android/issues/27#issuecomment-218478403

I'm actually not sure if all day events show up. Will test that asap.

They do not.  But the rest of the calendar seems to come up fine now.
Gwack!

On 12 May 2016, at 6:25 PM, Niels Masdorp<EMAIL_ADDRESS>wrote:
I'm actually not sure if all day events show up. Will test that asap.
—
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub

Alright, i'll create a separate issue for that. Thanks!

I also have the "No events today" message, neither All Day / short events shows up. I am on Jelly Bean 4.2.2, greatly appreciate your assistance!


Custom UA String and Custom Header?

Thanks for the nice application.
I want to custom UA String and Custom HTTP Header (like http_x_custom_header). How can I do it?

ok. I found.
.additionalHttpHeader("NAME", "VALUE")
add before .ready()
why the wiki page is not clear. a very nice application, we need to have detailed descriptions.


python312Packages.tencentcloud-sdk-python: 3.0.1198 -> 3.0.1199

Diff: https://github.com/TencentCloud/tencentcloud-sdk-python/compare/refs/tags/3.0.1198...3.0.1199
Changelog: https://github.com/TencentCloud/tencentcloud-sdk-python/blob/3.0.1199/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Result of nixpkgs-review pr 330815 run on x86_64-linux 1

4 packages built:

python311Packages.tencentcloud-sdk-python
python311Packages.tencentcloud-sdk-python.dist
python312Packages.tencentcloud-sdk-python
python312Packages.tencentcloud-sdk-python.dist


Deprecate/discourage various forms of password storage?

E.g. netrc is just as insecure as storing the password in the config file, and I can't see any advantages in using it.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/23865329-deprecate-discourage-various-forms-of-password-storage?utm_campaign=plugin&utm_content=tracker%2F574345&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F574345&utm_medium=issues&utm_source=github).

One "advantage" is that the password only needs to be changed once, if a user/host is used multiple times.

Right, at the point where this matters, a real password manager should be used IMO.

If it isn't too much of a hassle to support those password storages I would leave them in but discourage from using them in the documentation. I believe there are still a lot of old school UNIXers out there who do use netrc files (netrc support was actually one of the first pull requests for pycarddav IIRC).

I think netrc support is quite useful for unatteded usage such as cron jobs. At least, the barrier is easier than eg. using a custom command and gpg to get the password.

What method woul you advise to use inside cron jobs, for instance?

Personally, I prefer to keep the password outside the config file, since I keep my dotfiles for my machines in sync via git on a public repository (plus, there's the sharing factor). I know this is a rather common practice too and I'd hate to have passwords in config files.

I am not advocating for storing passwords inside config files, but storing them inside the .netrc is just as bad. Actually it's slightly worse since you now have a single insecure attack target. It is easy to write a small script that scans the user's PC for .netrc files. The same thing is not as easy to do with most password managers.
Ideally I'd like everybody to not store their credentials as plaintext files on their machines, but if you have a good reasons not to do that, you can still use the command-support from vdirsyncer to read from a plaintext file.

I am not advocating for storing passwords inside config files, but storing them inside the .netrc is just as bad. Actually it's slightly worse since you now have a single insecure attack target. It is easy to write a small script that scans the user's PC for .netrc files. The same thing is not as easy to do with most password managers.

Most of my dotfiles are public, and if each app kept it's own password in-config, I'd be unable to share these.
Having a single separate file makes this simpler. Not that I'm merely talking about convenience there; there's extra security with either approach.

Ideally I'd like everybody to not store their credentials as plaintext files on their machines, but if you have a good reasons not to do that, you can still use the command-support from vdirsyncer to read from a plaintext file.

The main problem is that we still need some way for vdirsyncer to know that password, many times unattended (I don't want some prompt from a cron job while playing/watching a movie!). It's a pretty hard problem, IMHO, since vdirsyncer actually needs the plain-text passwords.

It's a pretty hard problem, IMHO, since vdirsyncer actually needs the plain-text passwords.

The solution is either of those:

Implement #24
Write a wrapper script that mimicks #24 (see discussion there)
set the timeout of your master password long enough

Not that I'm merely talking about convenience there; there's extra security with either approach.

Storing the password in the dotfiles repo isn't just worse security -- it breaks security completely and shouldn't even be considered an option. Yes, using .netrc avoids that problem, but it's a too small step security-wise.

To clarify, I consider .netrc to be more dangerous than anything else because it fixes only the most pressing security issues (not publishing your password with your config), but is still considered "secure enough" when it's not.

set the timeout of your master password long enough

Keeping's GPG unlock with a higher cache sounds a lot riskier, since it actually opens the way to stealing all the passwords, not just my dav ones.
IMHO #24 is the way to go, though it would require unlocking on-boot.

Keeping's GPG unlock with a higher cache sounds a lot riskier, since it actually opens the way to stealing all the passwords, not just my dav ones.

Right, not the greatest option. It's what I currently use, but I want to get away from that.

And yet storing your password in plaintext still turns out to be worse, because there is a risk left even if the machine is shut down.

And yet storing your password in plaintext still turns out to be worse, because there is a risk left even if the machine is shut down.

This is covered by full-disk encryption in case of laptops/desktops. I don't think too many servers are running vdirsyncer, so the risk here is almost non-existent.

Right, not the greatest option. It's what I currently use, but I want to get away from that.

Temporary workaround is to have a different gpg-key only for vdirsyncer's password, and keep that key unlocked indefinitely.

Would you agree with removing netrc support if #24 was resolved?

I think you should give the users the ability to do what they want.
The .netrc support code is already there, so I would keep it as is.

We've already had a similar discussion on principles -- basically my position is that we shouldn't assume that the user fully understands the consequences of their acts and will always choose the path of least resistance, and that even if they have installed ArchLinux (which is just copypasting commands anyway). This is also why verify = False is no longer possible in newer versions of vdirsyncer.
On 9 July 2015 23:51:03 CEST, cyberic99<EMAIL_ADDRESS>wrote:

I think you should give the users the ability to do what they want.
The .netrc support code is already there, so I would keep it as is.

Reply to this email directly or view it on GitHub:
https://github.com/untitaker/vdirsyncer/issues/228#issuecomment-120154480

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Quoting Markus Unterwaditzer (2015-07-10 00:09:04)

We've already had a similar discussion on principles -- basically my position is that we shouldn't assume that the user fully understands the consequences of their acts and will always choose the path of least resistance, and that even if they have installed ArchLinux (which is just copypasting commands anyway). This is also why verify = False is no longer possible in newer versions of vdirsyncer.

I still don't think that this is your responsibility. I also I am still
annoyed when I have to change a fingerprint (which happens rather often
at work since I get one calendar from an https only site with a
regularly changing, self-signed certificate.

On 9 July 2015 23:51:03 CEST, cyberic99<EMAIL_ADDRESS>wrote:

I think you should give the users the ability to do what they want.
The .netrc support code is already there, so I would keep it as is.

Reply to this email directly or view it on GitHub:
https://github.com/untitaker/vdirsyncer/issues/228#issuecomment-120154480

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Reply to this email directly or view it on GitHub:
https://github.com/untitaker/vdirsyncer/issues/228#issuecomment-120162294

Regarding a warning in the docs, I have a slight feeling that nobody actually reads those and everybody just copy-pastes the example config. Of course this is not applicable in this situation since the possibility of using netrc or external commands is only mentioned in the docs, but I still wonder if a warning in the docs would even reach the people it was written for.
On 9 July 2015 23:51:03 CEST, cyberic99<EMAIL_ADDRESS>wrote:

I think you should give the users the ability to do what they want.
The .netrc support code is already there, so I would keep it as is.

Reply to this email directly or view it on GitHub:
https://github.com/untitaker/vdirsyncer/issues/228#issuecomment-120154480

--
Sent from my phone. Please excuse my brevity.

I recieve weekly support requests where people have turned off cert verification because that was the easiest. Usually a borked installation of requests was at fault.
Note that you can pass paths to verify as well. If those certs have a common root, this is also an option.
On 10 July 2015 00:16:40 CEST, Christian Geier<EMAIL_ADDRESS>wrote:

Quoting Markus Unterwaditzer (2015-07-10 00:09:04)

We've already had a similar discussion on principles -- basically my
position is that we shouldn't assume that the user fully understands
the consequences of their acts and will always choose the path of least
resistance, and that even if they have installed ArchLinux (which is
just copypasting commands anyway). This is also why verify = False is
no longer possible in newer versions of vdirsyncer.

I still don't think that this is your responsibility. I also I am still
annoyed when I have to change a fingerprint (which happens rather often
at work since I get one calendar from an https only site with a
regularly changing, self-signed certificate.

On 9 July 2015 23:51:03 CEST, cyberic99<EMAIL_ADDRESS>wrote:

I think you should give the users the ability to do what they want.
The .netrc support code is already there, so I would keep it as is.

Reply to this email directly or view it on GitHub:

https://github.com/untitaker/vdirsyncer/issues/228#issuecomment-120154480
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Reply to this email directly or view it on GitHub:

https://github.com/untitaker/vdirsyncer/issues/228#issuecomment-120162294

Reply to this email directly or view it on GitHub:
https://github.com/untitaker/vdirsyncer/issues/228#issuecomment-120163560

--
Sent from my phone. Please excuse my brevity.

Regarding responsibility, at the point where we begin to ask ourselves who was responsible for the damage done, it's already too late.
On 10 July 2015 00:16:40 CEST, Christian Geier<EMAIL_ADDRESS>wrote:

Quoting Markus Unterwaditzer (2015-07-10 00:09:04)

We've already had a similar discussion on principles -- basically my
position is that we shouldn't assume that the user fully understands
the consequences of their acts and will always choose the path of least
resistance, and that even if they have installed ArchLinux (which is
just copypasting commands anyway). This is also why verify = False is
no longer possible in newer versions of vdirsyncer.

I still don't think that this is your responsibility. I also I am still
annoyed when I have to change a fingerprint (which happens rather often
at work since I get one calendar from an https only site with a
regularly changing, self-signed certificate.

On 9 July 2015 23:51:03 CEST, cyberic99<EMAIL_ADDRESS>wrote:

I think you should give the users the ability to do what they want.
The .netrc support code is already there, so I would keep it as is.

Reply to this email directly or view it on GitHub:

https://github.com/untitaker/vdirsyncer/issues/228#issuecomment-120154480
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Reply to this email directly or view it on GitHub:

https://github.com/untitaker/vdirsyncer/issues/228#issuecomment-120162294

Reply to this email directly or view it on GitHub:
https://github.com/untitaker/vdirsyncer/issues/228#issuecomment-120163560

--
Sent from my phone. Please excuse my brevity.

I also I am still annoyed when I have to change a fingerprint (which happens rather often at work since I get one calendar from an https only site with a regularly changing, self-signed certificate.

@geier I'd be really interested in whether verify = /path/to/root works for your usecase. I agree that your current situation is annoying, I wouldn't want to keep it that way.

Scratching that idea for now.