Undeprecate OpenSSL_version_num

The OpenSSL_version_num() function returns at runtime the
OPENSSL_VERSION_NUMBER of the compiled OpenSSL library.  This is a
used and useful interface, and should not (at least yet) be
deprecated, we just introduced the new versioning schema, it seems
too early to deprecate the old.

+1 from me for @vdukhovni's request because it makes sense. But I won't formally approve the pull request because I'd prefer if @levitte himself would approve.

You do understand, I hope, that a deprecation in 3.0.0 means removal at the earliest in 4.0.0.

Yes. I almost put a "I understand that ..." comment to that effect in the commit message.
Still I don't think there's any compelling reason to remove the function, there's so little to be gained by doing it.

One of the uses was to check forward compatibility by checking that what people inferred to be the major number (using 0xfff00000L as mask) is the same in macro and number returned by the library. That mask is no longer correct, even though harmless. Taking out just the major number is sufficient, and there are much easier macros and library functions to do so.
Also, please don't say "remove", that's a false argument,at least for now. It will have to be removed at the latest at version 8.0.0. I would prefer earlier, but. Either way, I strongly disagree with this PR.
If you were protesting actual removal, I would understand much better.

The function is harmless, there are no security issues with using it, and worst case some application might be too cautious and issue warnings about potential ABI incompatibility where none are needed.
The cost of deprecation (and eventual removal) is to break some old code that would otherwise just work. So I don't think deprecation is warranted in this case. Since we expose the compile-time OPENSSL_VERSION_NUMBER, we should also expose the equivalent runtime version, but document that this is perhaps typically not what you want.

Hmmm, OPENSSL_VERSION_NUMBER is also deprecated... but in the future, i.e. starting with version 4.0.0. I have no idea why I made that difference, it certainly wasn't a conscious move.
However, that might be an acceptable compromise. Instead of removing deprecation entirely, make it a future deprecation for 4.0.0. I'll have an easier time accepting that. Does that work for you?

If push comes to shove, I could perhaps live with a 4.0.0 base for deprecation, but I still don't see that the benefit outweighs the costs. I'll sit back and see what others have to say...

We (well, at least I) want people to start using the new macros and functions. People often don't unless you somehow tell them that the old is falling out of use (and support). If you know of other ways to do send a clear signal, by all means, please let us know.

I'd like to see outdated APIs deprecated in a meaningful way, there is lots of cruft in the code and this is one way to slowly clean it up.
I'm not too concerned if these are tagged as deprecated in 3.0.0 or 4.0.0.  I'd ever so slightly favour the former but not by enough to matter.  What I'd not like, is a perpetual deferring of the decision to deprecate.  I.e. we should set a release where they will be tagged and stick to it.

In this case I think that "carrot" rather than "stick" works well enough.  The new functions are contracted to properly reflect ABI stability, rather than provide a version number for the application to decode in an ad hoc manner.  So applications should want to use the new approach when ABI versioning is what they want.
On the other hand, for example, in Postfix we serialize session objects to external shared storage, and given that SSL_SESSION is opaque, I don't think I can necessarily expect d2i_SSL_SESSION to invert i2d_SSL_SESSION across software versions. Or if not that reason, then there can be other reasons to obtain the specific numeric version.
So the carrot is documentation, blog posts, ... and since (I believe that) the old API does no harm, I see no reason to deprecate it at all, mostly makes users jump through hoops porting.

Heh... "if you don't take the carrot, you will eventually get the stick"
I'm down with that 😉

I had forgotten about this...  so nothing has really happened.  I still see no compelling reason to undeprecate this, but can see the deprecation move to version 4 instead of version 3.  I would approve that.

On Tue, Jan 15, 2019 at 09:23:22AM +0000, David von Oheimb wrote:

As a remedy for such situations I've added version checking code like the following to libraries and applications dynamically linked to OpenSSL:
    if (OpenSSL_version_num() != OPENSSL_VERSION_NUMBER) {
        fprintf(stderr, "OpenSSL runtime version 0x%lx does not match version 0x%lx used for compiling %s\n",
                OpenSSL_version_num(), OPENSSL_VERSION_NUMBER, __FILE__);
        exit(EXIT_FAILURE);
    }

We had to remove such checks many times in Debian, even if you add
a mask, because people always get the mask wrong and things break
for no good reason with an OpenSSL update.

I had forgotten about this... so nothing has really happened. I still see no compelling reason to undeprecate this, but can see the deprecation move to version 4 instead of version 3. I would approve that.

The compelling reason is that I and many others maintain software packages that use this interface for diagnostic purposes, and capriciously removing it is disrespectful to users. The users who misuse this interface and not use the newer options will pay the price at some point, but there is no reason to remove this interface.

... capriciously removing it ...

We.  Are.  Not.  Removing.  It!
How many times do I have to say this?
And we are most definitely not doing so capriciously.  Deprecation serves as a warning, which is exactly the tool to make it non-capricious.

... but there is no reason to remove this interface.

Oh yes there is.  The misuse that @kroeckx reports is exactly a reason to deprecate this interface.

I think where we diverge is on the question of what constitutes grounds for deprecation.  For me, misuse by some is not a sufficient reason to deprecate an interface. My take is that we deprecate interfaces when impose a burden on maintenance or future evolution of the library. This interface is not a burden to maintain, and we can easily continue to provide it. And therefore, IMHO we should. I do not see a compelling need to break compatibility, even given some misuse.

Since we're changing our version scheme, where we change the major
from "1.1" to "3", you can consider that to be an API change, and
the mask you used for older versions might not be correct anymore.
The manpage doesn't even explain that.

Since we're changing our version scheme, where we change the major from "1.1" to "3", you can consider that to be an API change, and the mask you used for older versions might not be correct anymore. The manpage doesn't even explain that.

I don't see anything incompatible here. It'll continue to work.

[shrug]
Of course, if no one approves this, the status remains quo.
And if no one changes the deprecation of either OPENSSL_VERSION_NUMBER or OpenSSL_version_num, the mismatch remains.
Nice standstill...

I don't see anything incompatible here. It'll continue to work.

Well not forever, there is a hard limit at major version number 15:
https://github.com/openssl/openssl/blob/24fd8541d47a46052b975db98b465faa7e4d898c/include/openssl/opensslv.h#L127-L137
However, this hard deadline still leaves enough room for a fair compromise between you two IMHO. For example, one could schedule

deprecation in major version 4  and
removal in major version 6.

This would give users more than enough time to adopt their code to the new versioning scheme.

Version checks at runtime by the application - whether carried out correctly or not - are not the right way to go IMHO. Ensuring ABI compatibility for a fixed major version and linking the application to a fixed major version number via soname should render runtime checks obsolete.

Agreed... But we haven't been very good with that before, so I can understand the scepticism

One cannot rely on the runtime system nor on the lib file name to ensure the right major version is loaded at runtime.

Fixed version names and fixed linkage aren't the right solution. That requires unnecessary pain in many places.
It is possible to write explicit runtime dynamic linking code that works across versions so applications can cross the major version boundary and still work.

Making the availability and/or semantics of the runtime version detection functionality version dependent is IMHO absurd and makes it unusable at least with old application binaries.

I am willing to +1 this - because I don't see misuse of this function as a reason to deprecate it.
And I do see depreciation as a promise to remove in future and so if someone deprecates it does mean removal (in future). Thinking of depreciation as a harmless no-op isn't correct in my view.
Note this PR has an OMC+1 and a committer +1 so it has been in a state where it could have been committed for a long time. Richard did not place a -1 on this.

-1
I think we need a general discussion on deprecation.  We have very obviously quite different ideas about how, when and why it should be done.
This discussion should preferably happen on the project list, not just within the OMC

Thinking of depreciation as a harmless no-op isn't correct in my view.

I don't, but I object to the rethorics that make it sound like immediate removal.

No matter how mild the removal of the version detection function is called ('deprecation' etc.), understood, or implemented, from the moment where the function is not actually available serious backward compatibility issues with older application code occur.

In the conversation on openssl-project, @dwmw2's response (that someone kindly chose to let in... no, not me) resonates with me.
So ok, with that argumentation, I give in.  My previous -1 doesn't apply.

Unfortunately, this PR is incomplete, the macro OPENSSL_VERSION_NUMBER is still wrapped with # if !OPENSSL_API_4.  If OpenSSL_version_num() gets undeprecated, then so must that macro.  Or did I miss something?

You were a bit too fast there, @t-j-h :wink:

Unfortunately, this PR is incomplete, the macro OPENSSL_VERSION_NUMBER is still wrapped with # if !OPENSSL_API_4. If OpenSSL_version_num() gets undeprecated, then so must that macro. Or did I miss something?

I was just going to write the same thing. Again, you beat me by seconds ;-)

It can be fixed - but it doesn't actually need to be fixed as it works for master with this PR.
If someone wants to add more, feel free. But this change actually fixes the stated problem.
This undoes deprecation at API==3, the other is removal at API==4 which is a different (future) situation.

I don't see anything incompatible here. It'll continue to work.

Well, not forever. There is a hard limit at major version number 15:

I agree with the necessity of postponing the deprecation, but I'd still like to emphasize that deprecation will be inevitable at some time in the feature, the latest in
<ETA of major version 15> - 5 years

Because the version numbering will not just continue to work forever.

This undoes deprecation at API==3, the other is removal at API==4 which is a different (future) situation.

I'm with @levitte, I'd prefer a complete and consistent solution.

This undoes deprecation at API==3, the other is removal at API==4

(I'm going to point out, every time, when you all get  deprecation and removal confused...  the confusion is understandable, because the "api" level isn't exactly intuitive, as API==3, which does indicate a deprecation, also removes the declaration in the corresponding version...  but that's a special configuration for folks that want to live on the bleeding edge)

but I'd still like to emphasize that deprecation will be inevitable at some time in the feature, the latest in

Heh, so we need an OPENSSL_API_14 and corresponding DEPRECATEDIN_15?  That can be done, but that certainly is for another PR

because the "api" level isn't exactly intuitive

That's why I prefer the no-deprecated configure option, because it's much simpler to comprehend: I say "remove the deprecated stuff" and that's exactly what I get. ;-)

but I'd still like to emphasize that deprecation will be inevitable at some time in the feature, the latest in

Heh, so we need an OPENSSL_API_14 and corresponding DEPRECATEDIN_15? That can be done, but that certainly is for another PR

You forgot about the 5 year grace period. I'd prefer deprecation of the version number in major version 9 and removal in major version 10. That should be far enough in the future.

Yes, in another pr.

Don't read my short hand notation indicating that I think this is what the code does as I know what the code does (and I think what the code does could be done differently - but what is there is what is there).
And I do think what we do isn't the right logical way of looking at it in terms of its structure - it is somewhat unusual.
We should have the concept of selecting a specific API level (and hence what is actually available) entirely separate from how deprecation warnings are handled and mixing the two together does create a mess that you have to think about when looking at the code - and a lot of people look at the code and have to think about it because it is handled strangely.
If I want to basically say I want to avoid any APIs that aren't in the supported set at a given level then I should be able to do so simply and not have an API macro that uses a value that is different from the macro that is the deprecation markers.
And the issue is that removal happens separately - and with a time period of removal the whole logic being expressed in the header files is incorrect - in that the removal is a separate control that isn't linked to the next largest major version (i.e. if we elected to have more than one major version change in a five year period the current approach doesn't work).
But again - if someone wants to add the extra change to this PR then do so - it isn't required to achieve the stated objective of this PR.

So what I'm hearing is that 'no-deprecated' should have a completely separate treatment from the whole api selection thing. That's food for thought, sure enough.

That being said, if we're removing the OPENSSL_API_3 wrapper around the definition of OpenSSL_version_num, then the OPENSSL_API_4 around the definition of OPENSSL_VERSION_NUMBER should be removed as well. That's simply a question of consistency.

I have no objection to an update to do that.
And consider my approval also applies to that change if you want to add it.

Seeing that this has been around for so long, I decided to add the commit the resolves my issue.  While I was at it, I rebased on top of a fresher master.
I'll take the time to wait for the CIs, and if they are happy, I'll take @t-j-h's pre-approval and merge.

CIs are happy.  Merged.  Thanks for all your patience!
7e8c3381937354cf171ceaf4c69315e9a45d4858 Undeprecate OpenSSL_version_num and OPENSSL_VERSION_NUMBER


Non-optional values

The idea taken from SwiftyJSON. It's really useful in cases, when you don't want care about optionals.

That does look useful. Not sure about NSDate() since it represents the current, not "empty" date, but 0, [], [:], "", etc. often do make sense.

I agree, made this value 0 in unixtime on 3b9c29b

Still don't know about this… Is 1970 a natural, obvious "null value" that we want people to use, implicitly?

I believe this value is "default enough" :) If someone wants to make sure about null value - there is date and hasKey methods.
unixtime 0 always been debatable value, but everyone knows that this is 01.01.1970

Hm, I'll think about this.
Not merging this PR just yet, but I will ;)

Merged. Thanks.
I removed objectValue and dateValue before merging. I'm not convinced of the usefulness of their default value behavior. I'd rather people do this explicitly.
(If people complain about this and make a convincing argument for it, I'll put it back.)


add dictionary support

This needs to be implemented in qastle first

This is now in qastle, and dictionary functionality was already ready here (and tested), so nothing to do for this


Package request: Onedriver

Project description
onedriver is a native Linux filesystem for Microsoft OneDrive. It contains GUI and CLI tools for mounting Onedrive cloud shares as local drives, downloading files accessed on demand.
Metadata

homepage URL: https://github.com/jstaf/onedriver
source URL: https://github.com/jstaf/onedriver
license: gpl3
platforms: linux

I am very excited about this one, I am actually a DM in a D&D campaign and onedriver has always been my best tool for rapid storage and edit of the stuff. Thanks everyone!


Submission History contains processing mode filter result for Universal Pipeline submissions

User Story:
As a Sender, I want to see the list of receivers my data was sent to via the Universal Pipeline with the result of the processing mode filter, so I can track my data.
Description/Use Case
Senders can access the submissions history API to get the submission result for a given report that contains which receivers the report was sent to.  We need to implement the destinations list in the response of the API for data processed through the Universal Pipeline.
Risks/Impacts/Considerations
Dev Notes:

Refer to the COVID pipeline to see how the destinations are store in the database.
Once the destinations are stored it is possible you do not have to do anything to the API itself.

Acceptance Criteria

A sender can see the results of any processing mode filter evaluated for a given receiver in the Submissions History API result for a given report.

It turns out that the work done in 7051 and 7052 is all that is needed to meet the needs of this ticket as well. Moving this to product review, and we can review it at the demo on Monday.


faultInjection-addPartitionSplittingException

Add PARTITION_IS_SPLITTING exception in server error type

/azp run java - cosmos - tests

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-cosmos-test

/azp run java - cosmos - tests


fixed broken link

#473

@MSFTTracyP - PR has been copy edited and is ready for final review. This is based on issue #473
Thank you.
cc: @kenwith


.jar Files not being fixed with --fix parameter

Using the --fix parameter is not working for the .jar file below:
C:\Program Files\Microsoft SQL Server\150\DTS\Extensions\Common\Jars\log4j-1.2.17.jar		1.2.17	POTENTIALLY_VULNERABLE
The output of log4j2-scan.exe (Ver. 2.2.0) looks like this:
C:\Temp\Logpresso\logpresso-log4j2-scan-2.2.0-win64>log4j2-scan.exe --fix "C:\Program Files\Microsoft SQL Server\150\DTS\Extensions\Common\Jars\log4j-1.2.17.jar"
Logpresso CVE-2021-44228 Vulnerability Scanner 2.2.0 (2021-12-18)
This command will remove JndiLookup.class from log4j2-core binaries. Are you sure [y/N]? y
Scanning directory: C:\Program Files\Microsoft SQL Server\150\DTS\Extensions\Common\Jars\log4j-1.2.17.jar

Scanned 0 directories and 1 files
Found 0 vulnerable files
Found 0 potentially vulnerable files
Found 0 mitigated files
Fixed 0 vulnerable files
Completed in 0.00 seconds

Every hint is highly appreciated.
Thank you.

@latency0ms --fix option does not support log4j1 fix yet. (only for log4j2) It will be addressed soon..

Got that @xeraph, thanks for your feedback! Can you approximate the time horizon of the release?

@latency0ms Implementation itself does not takes time. Just I can't ensure it is safe to remove JmsAppender and SocketServer.. Anyway, I will release in 4 hours.

Just I can't ensure it is safe to remove JMSAppender and SocketServer

What does that mean?

@latency0ms Try v2.2.2 release. Ensure that application doesn't use JMS or Socket logging feature.

Logpresso CVE-2021-44228 Vulnerability Scanner 2.2.2 (2021-12-18)
This command will remove JndiLookup.class from log4j2-core binaries. Are you sure [y/N]? y
Scanning directory: C:\Program Files\Microsoft SQL Server\150\DTS\Extensions\Common\Jars\log4j-1.2.17.jar
[?] Found CVE-2021-4104  (log4j 1.2) vulnerability in C:\Program Files\Microsoft SQL Server\150\DTS\Extensions\Common\Jars\log4j-1.2.17.jar, log4j 1.2.17

Fixed: C:\Program Files\Microsoft SQL Server\150\DTS\Extensions\Common\Jars\log4j-1.2.17.jar

Scanned 0 directories and 1 files
Found 0 vulnerable files
Found 1 potentially vulnerable files
Found 0 mitigated files
Fixed 1 vulnerable log4j2 files and potentially vulnerable log4j1 files
Completed in 0.64 seconds

This worked, could this lead to side effects? What exactly is being performed with --scan-log4j1 --fix?

@latency0ms If SQL server uses JMS or socket logging feature, it may be damaged. In most cases, JMS or socket server feature is not used. However you should use this option at your own risk. I can't figure out all the software configurations in the world.

After --fix  has been applied, a new scan shows no mitigation note (mitigated)
Logpresso CVE-2021-44228 Vulnerability Scanner 2.2.2 (2021-12-18)
Scanning drives: C:\

Scanned 75461 directories and 312990 files
Found 0 vulnerable files
Found 0 potentially vulnerable files
Found 0 mitigated files
Completed in 98.31 seconds

@latency0ms Would you test v2.3.0 release?

Still no mitigation (mitigated) note with --scan-log4j1 --fix on v2.3.0

@latency0ms Oh.. thank you for reporting. I will fix it too..

@latency0ms I feel sorry for repeated request. Would you test v2.3.1?

@latency0ms I feel sorry for repeated request. Would you test v2.3.1?

Sure thing, thanks for providing this great scanner, it really helps me a lot, now writing an automation to scan our entire server farm.
Now results looks good:
[?] Found CVE-2021-4104  (log4j 1.2) vulnerability in C:\Program Files (x86)\DocFetcher\lib\log4j-1.2.17.jar, log4j 1.2.17 (mitigated)

Dear @xeraph after reading this thread I installed the latest 2.3.1 version and tried to patch my log4j-1.2.15.jar inside tomcat8, however it result without fixing/changing anything. What did I wrong?
~/log4j-scanner# ./log4j2-scan --fix /
Logpresso CVE-2021-44228 Vulnerability Scanner 2.3.1 (2021-12-19)
...
Found 0 vulnerable files
Found 0 potentially vulnerable files
Found 0 mitigated files
Fixed 0 vulnerable log4j2 files and potentially vulnerable log4j1 files
Completed in 4.19 seconds

Use: ./log4j2-scan --scan-log4j1 --fix


[info] Command line

Hi,
Is it possible to run this program directly from a command line (bash prompt)?
Something like:
python timezonefinder.py lat=45 lon=-1
Best,
Chris

Nope. I am not sure what you want to achieve, but of course you could simply write yourself a little script that calls timezonefinder (s. readme for instructions on that) just with the bash arguments as input. See http://stackoverflow.com/questions/7521061/how-to-pass-a-bash-variable-to-python

Thanks for tha answer; That's what I guessed. No way to directly call the timezonefinder.py directly.
I'm gonna see how to write my own little py script (I'm not familiar at all with python) using os.environ to get some parameters (here lat,lon) and call timezonefinder.py...
It would be great that timezonefinder.py could be called by command line directly  (or thru another file). Even if timezonefinder.py is a python script, the clients are not always python-based... it would increase the number of possible clients ;-)

I tried with this little wrapper:
`#!/usr/bin/env python
import sys
import os
from timezonefinder import TimezoneFinder
if len(sys.argv) < 2:
print 'Usage: ' + sys.argv[0] + '  '
sys.exit(1)
def main():
tf = TimezoneFinder()
latitude = float(sys.argv[1])
longitude = float(sys.argv[2])
print 'Looking for TZ at lat=',latitude,' lon=',longitude
tz = tf.timezone_at(lng=longitude, lat=latitude)
print 'Timezone=',tz
if name == 'main':
main()
And call it with:python callbyenv.py 45 -1`
Get:
Looking for TZ at lat= 45.0  lon= -1.0 Traceback (most recent call last):   File "callbyenv.py", line 19, in <module>     main()   File "callbyenv.py", line 15, in main     tz = tf.timezone_at(lng=longitude, lat=latitude)   File "/home/opt/timezonefinder/timezonefinder/functional.py", line 27, in wrapper     return func(*args, **kwargs)   File "/home/opt/timezonefinder/timezonefinder/timezonefinder.py", line 448, in timezone_at     possible_polygons = self.shortcuts_of(lng, lat)   File "/home/opt/timezonefinder/timezonefinder/timezonefinder.py", line 169, in shortcuts_of     return fromfile(self.binary_file, dtype='<u2', count=nr_of_polygons) TypeError: data type not understood
Sorry for my inexperienced in python language; but I cant figure out what's wrong with this; looks very close to the example.

I am looking into this right now, but it might take a little while.

Ok, I called this script:
#!/usr/bin/env python
import sys
from timezonefinder import TimezoneFinder

if len(sys.argv) < 2:
    print('Usage: ' + sys.argv[0])
    sys.exit(1)

tf = TimezoneFinder()
latitude = float(sys.argv[1])
longitude = float(sys.argv[2])
print('Looking for TZ at lat=',latitude,' lon=',longitude)
tz = tf.timezone_at(lng=longitude, lat=latitude)
print('Timezone=',tz)

with:
 python3 scrapyard.py -45 1
and that gives me:
Looking for TZ at lat= -45.0  lon= 1.0
Timezone= None

So I guess there is something wrong with your installation (maybe numpy is missing?!). Try installing with pip or conda. That should work.
I think about including a little script in the next release. Thanks for the suggestion.

Argh, doesn't work on my CentOS 6.8 with Python 2.6.6-66.el6_8. Still get the same error.
I've downloaded Python 3.0.1 version from https://www.python.org/ftp/python/3.0.1/Python-3.0.1.tgz; and built it on my CentOS 6.8 OS. Here is the result with Python3:
$ /opt/Python-3.0.1/python scrapyard.py -45 1
Traceback (most recent call last):
File "scrapyard.py", line 3, in
from timezonefinder import TimezoneFinder
File "/home/opt/timezonefinder/timezonefinder/init.py", line 3, in
from .timezonefinder import TimezoneFinder
File "/home/opt/timezonefinder/timezonefinder/timezonefinder.py", line 8, in
from numpy import array, empty, fromfile
ImportError: No module named numpy
The numpy error is wired; I've installed it using pip install numpy:
$ pip install numpy
Requirement already satisfied: numpy in /usr/lib64/python2.6/site-packages
Is there a path to specify somewhere? An environment variable to set?


revert rotary embedding patching for recovering gpu accuracy

What does this PR do?
this is temporal solution for unblocking model running on GPU with openvino<=2024.3, bf16 accuracy will be fixed later, when openvino runtime will be ready handle it.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint. The docs are available until 30 days after the last update.

Before merging can you also revert the modifications from the expected int8 nodes in the tests  https://github.com/huggingface/optimum-intel/pull/783/ to fix the tests ?


base: fix resolving fields from super classes...

Description
It changes/fixes how we get/update super-class fields into current class fields in Base implementation in the correct order.
Changes

Add tests to cover possible scenarios.
Update BaseMeta.__new__ to handle getting fields from super classes in the correct order, also, to not to overwrite current class defined fields with it.

Related Issues
#465
Checklist

[x] Tests included
[ ] Build pass
[x] Code format and docstrings

Codecov Report

Merging #466 into development will decrease coverage by 0.31%.
The diff coverage is 100.00%.

@@               Coverage Diff               @@
##           development     #466      +/-   ##
===============================================
- Coverage        67.78%   67.47%   -0.32%
===============================================
  Files               81       81
  Lines             3775     3775
===============================================
- Hits              2559     2547      -12
- Misses            1216     1228      +12

Impacted Files
Coverage Δ

jumpscale/core/base/meta.py
92.00% <100.00%> (ø)

jumpscale/servers/gedis/server.py
59.16% <0.00%> (-5.24%)
:arrow_down:

jumpscale/clients/redis/redis.py
85.29% <0.00%> (-2.95%)
:arrow_down:

jumpscale/core/logging/logging.py
94.91% <0.00%> (-0.85%)
: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 5b0aa03...aeb4b27. Read the comment docs.


module not showing in "other" after recommended way to install on Ubuntu

We installed filemin on Ubuntu via dpkg like recommended but the module does not show up in the list in section Other on Authentic Theme

You need to Enable it by going to Webmin Users, under Available Webmin modules, find FIlemin and enable it.

Thanks Ilja That was it.
Please add that to the readme as I am sure that more people will have those
problems as they don't find where to enable the theme or module.
Another question would be is it usefull to use the git version or is it
better to stay with the dpgk or wbm version?
With kind regards,
Mit freundlichen Grüßen,
Con un cordial saludo,
Cordialement,
с сердечным приветом,
เรื่องที่เกี่ยวกับชนิด,
與親切的問候,
ANDI BECKER
CEO/General Manager LisAndi Co., Ltd.
--------------------------------------------------
LisAndi Co. Ltd., Phuket, Thailand (lisandi.com)
15/21 M.2 Viset Road, Rawai, Muang, Phuket, Thailand 83130
Mobile: +66 (0)81 606 3378
VoIP:   +49 (0)711 50 88788 50
Fax:     +49 (0)711 50 88788 50
Skype:          lisandi
Facebook:     andibecker
Google Talk<EMAIL_ADDRESS>Facetime<EMAIL_ADDRESS>
This email may contain confidential and/or privileged information. If you
are not the intended recipient (or have received this email by mistake),
please notify the sender immediately and destroy this email. Any
unauthorized copying, disclosure or distribution of the material in this
email is strictly prohibited. Email transmission security and error-free
status cannot be guaranteed as information could be intercepted, corrupted,
destroyed, delayed, incomplete, or contain viruses. The sender therefore
does not accept liability for any errors or omissions in the contents of
this message which may arise as a result of email transmission
On Thu, Sep 17, 2015 at 12:55 PM, Ilia Rostovtsev<EMAIL_ADDRESS>wrote:

You need to Enable it by going to Webmin Users, under Available Webmin
modules, find FIlemin and enable it.
—
Reply to this email directly or view it on GitHub
https://github.com/Real-Gecko/filemin/issues/63#issuecomment-140976580.

It's better address this question to Alexander - the developer... but I guess that he would recommend packages. I also do, because starting from version 16, Authentic Theme will have enormous support (keyboard + shortkeys) for Filemin and we would have to agree on new things and features before updating to make sure things will work smoothly.

Thanks for the info IIja
I hope he also would add again the possibility to create and manage
symlinks as this was very useful in the JAVA filemanager.
Your authentic Theme is really a great asset and HUGE improvement for
virtualmin - I really like it - contrast could be a bit better to make it
more readable on mobile devises when sunlight or other light sources are to
bright. and for the server list it would be better to have identations
separated more clearly either by color or by something n front of the
subservers and alias servers to make it more clearly that they are not n
the main level.
But I really like it Thanks for the great work!
Andi
With kind regards,
Mit freundlichen Grüßen,
Con un cordial saludo,
Cordialement,
с сердечным приветом,
เรื่องที่เกี่ยวกับชนิด,
與親切的問候,
ANDI BECKER
CEO/General Manager LisAndi Co., Ltd.
--------------------------------------------------
LisAndi Co. Ltd., Phuket, Thailand (lisandi.com)
15/21 M.2 Viset Road, Rawai, Muang, Phuket, Thailand 83130
Mobile: +66 (0)81 606 3378
VoIP:   +49 (0)711 50 88788 50
Fax:     +49 (0)711 50 88788 50
Skype:          lisandi
Facebook:     andibecker
Google Talk<EMAIL_ADDRESS>Facetime<EMAIL_ADDRESS>
This email may contain confidential and/or privileged information. If you
are not the intended recipient (or have received this email by mistake),
please notify the sender immediately and destroy this email. Any
unauthorized copying, disclosure or distribution of the material in this
email is strictly prohibited. Email transmission security and error-free
status cannot be guaranteed as information could be intercepted, corrupted,
destroyed, delayed, incomplete, or contain viruses. The sender therefore
does not accept liability for any errors or omissions in the contents of
this message which may arise as a result of email transmission
On Thu, Sep 17, 2015 at 1:47 PM, Ilia Rostovtsev<EMAIL_ADDRESS>wrote:

It's better address this question to Alexander - the developer... but I
guess that he would recommend packages. I also do, because starting from
version 16, Authentic Theme will have enormous support (keyboard +
shortkeys) for Filemin and we would have to agree on new things and
features before updating to make sure things will work smoothly.
—
Reply to this email directly or view it on GitHub
https://github.com/Real-Gecko/filemin/issues/63#issuecomment-140984814.

@lisandi I will keep this in mind and on my todo.
@Real-Gecko Sasha, it's also whould be good to gather all possible UID/GID and add them to the select when changing chown instead of writing it manually. It would be fairly easy to do!

Howdy! I believe this particular issue soon won't matter... as Filemin will be included with Webmin by default, and it won't be necessary to perform those steps.
Jamie will have it so that the setup works similar to how the current filemanager works.  Or at least, he should, I'll verify with him that this is the case :-)

:+1:


Proxy ID field not filled with id value

Bug Report

Q
A

BC Break
no

Version
dev-master 62ca36c

Summary
ID null while hydration (not set)
Current behavior
Bad query to mongodb happen (with _id null)
How to reproduce
I've compared Proxies generated by 2.0.0-beta1 and dev-master 62ca36c
2.0.0-beta1:
    private static $protectedProperties08063 = [
        'firstName' => 'App\\Document\\Customer',
        'lastName' => 'App\\Document\\Customer',
        'nickname' => 'App\\Document\\Customer',
        'email' => 'App\\Document\\Customer',
        'name' => 'Xapapi\\Model\\LinkNodeModel',
        'path' => 'Xapapi\\Model\\LinkNodeModel',
        'itemOf' => 'App\\Document\\LinkNode',
        'nodeType' => 'Xapapi\\Model\\LinkNodeModel',

62ca36c:
    private static $protectedPropertiesfb7a2 = [
        'id' => 'Xapapi\\Model\\LinkNodeModel',
        'firstName' => 'App\\Document\\Customer',
        'lastName' => 'App\\Document\\Customer',
        'nickname' => 'App\\Document\\Customer',
        'email' => 'App\\Document\\Customer',
        'name' => 'Xapapi\\Model\\LinkNodeModel',
        'path' => 'Xapapi\\Model\\LinkNodeModel',
        'itemOf' => 'App\\Document\\LinkNode',
        'nodeType' => 'Xapapi\\Model\\LinkNodeModel',

Maybe it is desired behavior that id begin appear in 62ca36c, but it cause bug i think.
I should note that my document entity use inheritance:
/**
 * / @MongoDB\Document(repositoryClass="App\Repository\CustomerRepository")
 */
class Customer extends LinkNode
{
    /**
     * @MongoDB\Id
     */
    private $id;

/**
 * @HasLifecycleCallbacks
 * @MongoDB\MappedSuperclass(repositoryClass="App\Repository\LinkNodeRepository")
 * @MongoDB\InheritanceType("COLLECTION_PER_CLASS")
 * @MongoDB\DiscriminatorField("nodeType")
 * @MongoDB\DiscriminatorMap({
 *     "folder"=App\Document\Folder::class,
 *     "comment"=App\Document\Comment::class,
 *     "customer"=App\Document\Customer::class
 *  })
 * @MongoDB\DefaultDiscriminatorValue("folder")
*/
class LinkNode extends LinkNodeModel
{

    /** @MongoDB\PreLoad */
    public function preLoad(PreLoadEventArgs $eventArgs): void
    {
        $this->initNodeType();
    }
    public function __construct(string $name = "")
    {
        parent::__construct(array('name'=>$name,'path'=>[]));
        $this->nodeName = $name;
        $this->items = new ArrayCollection();
        $this->initNodeType();
    }

    /**
     * @MongoDB\Id
     */
    protected $id;

class LinkNodeModel
{
    /**
     * @var string|null
     *@SerializedName("id")
     * @Assert\Type("string")
     *@Type("string")
     */
    protected $id;

I wanted to reproduce this as you've posted it, but it doesn't make any sense: $id can't be protected in the parent and private in the child class. Could it be that it's declared as private in all classes?

Yes, it can't. It is my mistake. Maybe I've copy-pasted that piece of code while make experiments with id field access levels. I will try and check all again now.

So, of course private $id; in class Customer extends LinkNode is was my mistake in provided sample. But I can confirm that issue still exits (no matter public or protected is used). Also I would note that public or protecetd can not be used for parent class LinkNodeModel because it is generated model by openapi-generator tool. Even so, I think library should work with any field access levels.

I just wanted to confirm the access levels. So the property is protected in both classes? I’ll try to reproduce it that way.

There is three classes:

Superclass
Sub-class
Sub-sub-class

Class name
LinkNodeModel
LinkNode
Customer

Field access level
protected
protected
protected*

Is in project source
No**
Yes
Yes

Extra info
Is POPO class
Is Mongodb MappedSuperclass
one of three mongodb inheritance subclasses (see DiscriminatorMap)

I also tried to relax access level to public but it does not affect issue
** this class is from separate composer module. It is server stubs generated from openapi specification

Here is the project sources with issue (if  change 2.0.0-beta1 => dev-master): http://gg.wseb.cf/afram/xap_pback (have docker-compose to run it) but now (at dev stage) it have two local filesystem dependencies) If it will make sense I can publish them to VCS.

I found some time to research issue by myself. I try reproduce issue from scratch and provide repo.

I decided to create new issue and close that because I found more details and prepared reproduce repo https://github.com/doctrine/mongodb-odm/issues/1990


NL: Drop quantity range variables from embeddings

Diff report: https://storage.cloud.google.com/datcom-204919/tmp/2709/diff_report.html
Generally, things are positive.  Two losses to note:

56: which country has most senior citizens?
57: which country has the most young people?

We should have topics for these, so filed https://github.com/datacommonsorg/website/issues/2708.
I prepared this PR by listing the SVs to be removed and then used this one-off script: https://gist.github.com/pradh/71361d9612df5fd76a65f6d6b2eb9ae4.

Thanks Jehangir!


Funny height Issues

Hey
I have set up the view controller as per the instructions, but I am getting some funny issues with the height.
This is my view from the debugging state. As you can see the SJSegmentedView doesn't extend to the navigation bar or to the tab bar.

Hi @hassanmah,
Could you please check in the latest version, 1.3.3? We have resolved this issue in the latest version.

Hi
I am using the latest version

Could you please be more precise on how you have used the SJSegmentedView, like Presented, Pushed or Added as a Child View Controller?

@subinspathilettu I am using it like so:
import UIKit

class InspirationViewController: SJSegmentedViewController {

    override func viewDidLoad() {

        let storyboard = UIStoryboard(name: "Main", bundle: nil)

        let recipeViewController = storyboard
            .instantiateViewController(withIdentifier: "RecipeViewController")
        recipeViewController.title = "Recipe"
        let fitnessViewController = storyboard
            .instantiateViewController(withIdentifier: "FitnessViewController")
        fitnessViewController.title = "Fitness"

        let insightViewController = storyboard
            .instantiateViewController(withIdentifier: "InsightsViewController")
        insightViewController.title = "Insights"

        segmentControllers = [recipeViewController, fitnessViewController, insightViewController]

        segmentTitleColor = UIColor.white
        segmentBackgroundColor = UIColor(rgba: "#2EB8B8")
        headerViewHeight = 0
        segmentViewHeight = 50.0
        selectedSegmentViewHeight = 3.0
        segmentTitleColor = UIColor(rgba: "#1F7D7D")
//        segmentShadow = SJShadow.light()
        segmentedScrollView.segmentView?.frame.size.height = self.view.frame.size.height
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

Am I using it incorrectly?

Hi @hassanmah , Please let us know the purpose of following line,
segmentedScrollView.segmentView?.frame.size.height = self.view.frame.size.height
Hope you are using as static library and we recommend to use as pod,
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target '<Your Target Name>' do
pod ’SJSegmentedScrollView’, ‘1.3.3'
end

Hi @SonnetXavier , please ignore this line, it was in error
segmentedScrollView.segmentView?.frame.size.height = self.view.frame.size.height
I am now using it as pod and still getting the same behaviour

Hi @hassanmah , We just tried out and were not able to reproduce the error. We have some queries, please answer these so that we could help you to figure out the exact issue.

Is the InspirationViewController Presented or Pushed?
To which type of View/View Controller  is InspirationViewController being presented ?

Meanwhile, you can try out adding segmentedViewController as Child view controller. Code snippet follows:
class InspirationViewController: UIViewController {

    override func viewDidLoad() {

        let storyboard = UIStoryboard(name: "Main", bundle: nil)

        let recipeViewController = storyboard
            .instantiateViewController(withIdentifier: "RecipeViewController")
        recipeViewController.title = "Recipe"
        let fitnessViewController = storyboard
            .instantiateViewController(withIdentifier: "FitnessViewController")
        fitnessViewController.title = "Fitness"

        let insightViewController = storyboard
            .instantiateViewController(withIdentifier: "InsightViewController")
        insightViewController.title = "Insights"

        let segmentedViewController = SJSegmentedViewController(headerViewController: nil,
                                                                segmentControllers: [recipeViewController, fitnessViewController, insightViewController]
addChildViewController(segmentedViewController)
        self.view.addSubview(segmentedViewController.view)
        segmentedViewController.view.frame = self.view.bounds
        segmentedViewController.didMove(toParentViewController: self)
          super.viewDidLoad()
    }

Hi @SonnetXavier , to your questions InspirationViewController is a rootviewcontroller of a navigation controller and the first view controller of a tab controller. The flow is as follows
[tab controller] >> [navigation controller] >> [InspirationViewController]
Adding segmentedViewController as Child view controller gives me the following screenshot:

Hi @hassanmah,
Our team will be working on this issue.
Attached is a sample project without the height issues, You could follow this and give it a try!
TestHeightIssue.zip

@SonnetXavier still having problems. In reference to "Adding segmentedViewController as Child view controller" screenshot the space at the bottom is 50px, the exact height of the tab bar.
Could this issue be created by the tab bar?

We are not able to recreate the issue. If possible, please share your project with us.


New feature

Hy sir esme ek feature add kro do plz humble request hai
Features ye h ki jism msg se owner chahe usi msg se forward process start ho n ki starting se
Plz sir

Ok, soon ...

Sir jld hi add kr do

Sir jld hi add kr do

After my exam 😢

Kb finish hoge aapke exam

Kb finish hoge aapke exam

Next year

Ok sir thnx


Is it expected for the training time to not decrease?

I'm trying to switch all my embedding and Linear layers by Lora layers.
Although the GPU size needed reduces, the training time remains the same, even with less trainable weights. Is it expected?

From what I understood, in the GPT-2 experiment, you only changed a single Conv1D layer, right? That makes more sense in terms of training speeds.

Hi Joao,
You should see a speedup if you have previously saturated your GPU utilization.
Yes, for GPT-2 we only changed one layer and marked the rest as not trainable.


USB Serial Access module for Azure IoT Edge

USB Serial Access in an Azure IoT Edge module on Windows
This sample will walk you through creating a module for Azure IoT Edge on Windows 10 IoT Enterprise which accesses a USB Serial device.
API Surface
This sample uses standard .NET Core System.IO.Ports APIs to access the serial devices.
These APIs only work with serial devices which come named "COM{x}".
Consequently, this approach is relevant on Windows 10 IoT Enterprise, but not Windows 10 IoT Core.

Closing this. #322 contains all this.


'from clip' source for running prompt

I would like to be able to run a prompt on the contents of my clipboard. I would also like to be able to put the result into my clipboard.
We discussed having the concept of 'prompt sources'. We already have prompt destinations. Valid examples of prompt destinations are these:

clipped
before
after
browser

I would like to have a way to specify a prompt sources similarly. A couple of examples are these:

clipboard
selection

There was some concern that it would be confusing to use the position alone to indicate source versus destination. For that reason, we were thinking that using 'from' to denote that this is a source would be helpful. Here are a couple examples:

model [from selection] apply clipped
model from clip apply clipped
model from clip summarize

can you elaborate on that grammar?

@C-Loftus can you help?  The idea was modeled on unix pipes (i.e. something on the left is a source and on the right is output) and we also wanted to prefix with 'from' so it's clearer (versus just saying 'model selection apply' or 'model clip apply'

Valid options for 'from' that we had so far were 'selection' and 'clip'

Part of the issue is our outputs currently have 'clip', 'selected', 'browser', 'above', and 'below' at the end, so we need a way to distinguish source and destination.

Shall we discuss in a meetup?

See also https://github.com/cursorless-dev/cursorless/issues/495

I'd love to discuss but can't make the normal meetup times. I'll send a message on slack.

This has been implemented now.


Include tax percentage next to tax name

Right now item taxes are shown on invoices like this:

It would be an improvement if the percentage was shown in brackets, like this:

we could easily add the value in the tax's label, another approach would also be the one in the demo data

But i guess your suggestion is better..No point duplicating info

Yeah, it would also be easier in case changing the percentage is necessary, using the demo data approach it would require replacing the percentages twice

You are absolutely right

@ParisLiakos I am not seeing this working with the updated code.
It seems to be working just as before, without the % being printed:

@JMCA2 where is that screenshot from?

Default invoice template. /invoice/XXX/show/print
Fresh install with latest code

Thanks. I always forget to check print templates


Static_placeholder in a main menu dropdown

Am trying to display a static_placeholder within a menu.html file. I have a custom menu.html file that has a few {% static_placeholder %} tags to display a different image or some other type of content in the main menu drop down; however, I am not seeing an edit area for those when I click to Edit.
    {% if child.parent.get_menu_title == "Personal" %}
        {% static_placeholder 'personal_menu_content' %}
    {% elif child.parent.get_menu_title == "Business" %}
        {% static_placeholder 'business_menu_content' %}
    {% elif child.parent.get_menu_title == "Who We Are" %}
        {% static_placeholder 'who_menu_content' %}
    {% endif %}

Is this even doable? If not, is there another way to add an editable area within a main menu?
Expected behaviour
When I click the icon to show the different placeholders I would expect the "Personal Menu Content" and the other two static placeholders seen above to appear.
Actual behaviour
I do not see any of the above placeholders in the edit area. I see regular placeholders and even a static placeholder I put in the footer, but none of the ones I have in the main menu are showing
Environment

Python version: 3.6.6
Django version: 1.11.15
django CMS version: 3.5.3

@leslieewing I would create a template for each menu title/static placeholder. Use template inheritance to avoid code duplication. In my projects, my base template specifies
<footer class="footer">
{% block footer %}{% endblock footer %}
</footer>

and inheriting templates then, for instance would use
{% block footer %}
    {% static_placeholder "personal_menu_content" %}
{% endblock footer %}

Create a such a template for each page requiring a special static placeholder.


[Bug] Brokers spuriously error in response to the PRODUCER command for newly added partitions to a topic

Search before asking

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

Read release policy

[X] I understand that unsupported versions don't get bug fixes. I will attempt to reproduce the issue on a supported version of Pulsar client and Pulsar broker.

Version
Broker: Pulsar 3.1.2
Client: Pulsar v3.4.2
Using Zookeeper as the metadata store.
Minimal reproduce step

Connect to a partitioned topic with the C++ client
Update the topic to add a new partition.
The C++ client will attempt to create producers for the new partitions. These will often fail.

What did you expect to see?
Producers successfully created.
What did you see instead?
In the broker logs, the "Illegal topic partition name" error message.
Anything else?
I believe the issue is that when the broker responds to a PRODUCER command, it calls ServerCnx:: handleProducer, which calls BrokerService::getOrCreateTopic, which calls BrokerService::getTopic, which calls BrokerService::fetchPartitionedTopicMetadataAsync(TopicName topicName), which calls BrokerService::fetchPartitionedTopicMetadataAsync(TopicName topicName, boolean refreshCacheAndGet), with refreshCacheAndGet set to false. This means that NamespaceResources:: getPartitionedTopicMetadataAsync is called with refresh always false, which means that getAsync is called on NamespaceResources rather than refreshAndGetAsync. This means that the sync call on Zookeeper is not called before performing the read.
According to the Zookeeper Programmer Guide (https://zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html), "ZooKeeper does not guarantee that at every instance in time, two different clients will have identical views of ZooKeeper data. Due to factors like network delays, one client may perform an update before another client gets notified of the change. Consider the scenario of two clients, A and B. If client A sets the value of a znode /a from 0 to 1, then tells client B to read /a, client B may read the old value of 0, depending on which server it is connected to. If it is important that Client A and Client B read the same value, Client B should should call the sync() method from the ZooKeeper API method before it performs its read."
This seems to indicate that without doing the sync, the broker could get an out of date picture of the number of partitions the topic has, resulting in spuriously erroring. I believe that reading the partition metadata for handling the PRODUCER command should use authoritative reads (calling sync before performing the Zookeeper reads).
This bug filed against pulsar-cpp-client may be related: https://github.com/apache/pulsar-client-cpp/issues/319. The pulsar-cpp-client developers seem to have mitigated it by adding retries, but the broker-side failure should still not happen.
Are you willing to submit a PR?

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

Broker: Pulsar 3.1.2

@dwang-qm Pulsar 3.1.x is not supported. Please re-test with a supported version. That is currently Pulsar broker 3.0.7 or 3.3.2 . Thanks!

That's the version on our production environment. It would take a significant investment of hours to setup an environment to reproduce this in, since this appears to be a race condition. My observations on the cause of the bug are valid for current master since I reviewed the Pulsar source code. Could you at least tell me if my reasoning is sound (under "Anything else?") before I invest a large amount of time reproducing it? Thanks!

That's the version on our production environment. It would take a significant investment of hours to setup an environment to reproduce this in, since this appears to be a race condition. My observations on the cause of the bug are valid for current master since I reviewed the Pulsar source code. Could you at least tell me if my reasoning is sound (under "Anything else?") before I invest a large amount of time reproducing it? Thanks!

Thanks, @dwang-qm. That's understandable. In any case, thanks for reporting the issue, even it if it's for a version that the OSS project doesn't support.
In the OSS Project, we request reporters at least to try to test the most recent released versions to see if the problem is already fixed. In many cases problems are fixed in supported versions. Isolating the issue will be a useful contribution to the project and after isolating an issue, the fix is usually very easy to implement.

I believe the issue is that when the broker responds to a PRODUCER command, it calls ServerCnx:: handleProducer, which calls BrokerService::getOrCreateTopic, which calls BrokerService::getTopic, which calls BrokerService::fetchPartitionedTopicMetadataAsync(TopicName topicName), which calls BrokerService::fetchPartitionedTopicMetadataAsync(TopicName topicName, boolean refreshCacheAndGet), with refreshCacheAndGet set to false. This means that NamespaceResources:: getPartitionedTopicMetadataAsync is called with refresh always false, which means that getAsync is called on NamespaceResources rather than refreshAndGetAsync. This means that the sync call on Zookeeper is not called before performing the read.

Good observations @dwang-qm!
There have been multiple issues in the past with topic metadata handling due to the undefined consistency model.
2 years ago I wrote a blog post about this and the "Metadata consistency issues from user’s point of view" part describes the state of problems at that time.
For topic creation, deletion and partition modification, it might still be the case that operations aren't strongly consistent as you have observed. The current workarounds are around retries.
Some improvements have been made over time in individual use cases, such as by using the ZK sync support, it was introduced in #18518.
I guess solving the metadata inconsistencies should start by defining the consistency model. It's currently eventually consistent for many cases which is surprising for many users since it's not well defined.

Thanks for the response! When Pulsar 4.0 is released, we will upgrade to it and see if we can observe the issue. In the meantime, we're going to update the client, since it looks similar to the issue filed against the client I referenced. I did see many retries in the logs, albeit against the same broker, within a short period of time, and they all failed. Unfortunately, the application code is not in control of any retries necessary due to "eventual consistency," since the client tries to create the new producer automatically after it periodically polls and detects new partitions have been added.
If you don't mind answering, I noticed that the reason that the client was trying to talk to the broker to create the producer in the first place is because it got the broker (in my case pulsar-broker-35) from a LOOKUP it did earlier. If so, that's confusing because it means it thinks that broker owns the topic (in my case named xxxx-partition-1), but wouldn't that broker have to actively claim the topic somehow, in which case it should've had the correct metadata to see that there was now more than one partition? See, xxxx is originally a partitioned topic with only one partition (so with only xxxx-partition-0 as a valid topic name), but after the topic metadata update, the C++ client looked up the new partitions and was told to connect to xxxx-partition-1 on pulsar-broker-35. But pulsar-broker-35 thinks there's only one partition in the topic. How could it when it seems to have claimed xxxx-partition-1?

the first place is because it got the broker (in my case pulsar-broker-35) from a LOOKUP it did earlier. If so, that's confusing because it means it thinks that broker owns the topic (in my case named xxxx-partition-1), but wouldn't that broker have to actively claim the topic somehow, in which case it should've had the correct metadata to see that there was now more than one partition? See, xxxx is originally a partitioned topic with only one partition (so with only xxxx-partition-0 as a valid topic name), but after the topic metadata update, the C++ client looked up the new partitions and was told to connect to xxxx-partition-1 on pulsar-broker-35. But pulsar-broker-35 thinks there's only one partition in the topic. How could it when it seems to have claimed xxxx-partition-1?

The default lookup logic is in code in NamespaceService.findBrokerServiceUrl and searchForCandidateBroker methods:
https://github.com/apache/pulsar/blob/9012422bcbaac7b38820ce545cd5a3b4f8b586d0/pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java#L473-L539
https://github.com/apache/pulsar/blob/9012422bcbaac7b38820ce545cd5a3b4f8b586d0/pulsar-broker/src/main/java/org/apache/pulsar/broker/namespace/NamespaceService.java#L573-L712
Then the client makes a lookup request (CommandLookupTopic in proto) with the authoritative flag, the target broker will attempt to claim the ownership of the topic without doing lookups. That's why the solution tolerates eventual consistency.
Each lookup could get redirected multiple times until it hits the target broker. The target broker will also process the lookup request and when it's authoritative, it will attempt to claim the ownership.
The partitioned topic metadata is a completely separate concern in Pulsar. The client needs that information for subscribing to multi-partitioned topics. The broker itself doesn't need that information to serve topics since an individual partition of a multi-partitioned topic behaves completely independently. I hope this explanation makes sense.

Thank you for the explanation and source code snippets! After reviewing them, I think I understand.
Suppose, there's a multi-partition topic called xxxx, originally with only one partition (so only xxxx-partition-0 exists). However, when an admin adds another partition, the topic metadata gets updated. The Pulsar client rechecks the topic metadata on an interval and when it discovers the new partition, it tries to create a producer to connect to the new partition (xxxx-partition-1). It first needs to perform a lookup of the broker service url. So it contacts a broker it already is connected to, say pulsar-broker-0, which eventually calls findBrokerServiceUrl. It finds that pulsar-broker-35 is actually the best suited by searchForCandidateBroker. That's not pulsar-broker-0, so it returns a redirect response to the client. The Pulsar client then contacts pulsar-broker-35 and repeats the lookup. pulsar-broker-35 eventually calls findBrokerServiceUrl, finds itself the best candidate with searchForCandidateBroker, and takes ownership of the topic. All good so far.
Then, the client sends the PRODUCER command to pulsar-broker-35, which does have ownership of the topic, which it will check near the top of BrokerService::loadOrCreatePersistentTopic. However, before it can do that, it performs that fetchPartitionedTopicMetadataAsync call and then checks if topicName.getPartitionIndex() < metadata.partitions. As you say, they're separate systems, and pulsar-broker-35 may in fact have acquired ownership of the topic without having an updated view of the partitioned topic metadata from Zookeeper. As you say, the findBrokerServiceUrl would not even be aware that xxxx-partition-1 is a partitioned topic and would never have had to check the special partitioned topic metadata of xxxx to acquire ownership of xxxx-partition-1.
Do you think this could happen? I think just changing
https://github.com/apache/pulsar/blob/9d2606d73b94b4a5e1b2ffcb1e9a3c25cf71edd4/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java#L1091
to return fetchPartitionedTopicMetadataAsync(topicNameEntity, true) would solve the issue. Do you agree?
Thank you again for your continued attention and responses!

to return fetchPartitionedTopicMetadataAsync(topicNameEntity, true) would solve the issue. Do you agree?

@dwang-qm exactly. Well done!
The main concern of this change is the chances of performance regressions. That's why it would need more thought. One possibility would be to have a policy level setting for this where this could be configured at the broker level, namespace level or topic level. That would avoid performance regressions since users facing these issues or having such use cases could change it to use sync when it's necessary for the use case.

Minimal reproduce step

Connect to a partitioned topic with the C++ client
Update the topic to add a new partition.
The C++ client will attempt to create producers for the new partitions. These will often fail.

What did you expect to see?
Producers successfully created.
What did you see instead?
In the broker logs, the "Illegal topic partition name" error message.

@dwang-qm one more clarification: is the main negative impact the broker logs? Does the creation of the producer from the client perspective succeed?

we have also encountered this issue in pulsar-3.0.6

@dwang-qm one more clarification: is the main negative impact the broker logs? Does the creation of the producer from the client perspective succeed?

Apologies, I didn't see this question until today. Alas, the creation of the producer from the client prespective did not succeed. Our logs indicated that our code kept continually retrying, but was not successful in reconnecting for more than a minute. I believe the C++ client will keep choosing the same broker to try to create the producer and it's unclear when the broker will update its cached idea of how many partitions there are in the topic (if ever).


staging-in does not happen for apps waiting on a file from an earlier app wrapped in a DataFuture

When an app takes an input that is a DataFuture from a previous app, rather than an explicitly created File object, staging-in does not happen - because staging only happens for Files, not for DataFutures wrapping Files.
This occurs in code that looks like parsl/tests/test_data/test_file_apps.py where the output of each step is a DataFuture that will eventually resolve to a File that should then be used by the next step.
In that test, parsl/tests/test_data/test_file_apps.py, the lack of staging-in is hidden because only local files that do not need staging are used.

This probably interacts with #778 - staging-in for a subsequent task probably needs to be aware of when staging-out for a preceding task has completed (or has failed)

fixed by #1181


ESLint 9 compatible release

Hi @ota-meshi, would it be possible to get a new release with ESLint 9 / typescript-eslint 8 compatibility, now that https://github.com/ota-meshi/eslint-plugin-jsonc/pull/351 is merged?
Anything that needs help before a release can be made?

I think it already supports ESLint v9. The typescript syntax has nothing to do with the JSON syntax.

I might have missed the release then. When I tried upgrading to ESLint 9 and flat config, I was getting build errors for rules I built using this plugin. Will try again and report back.

It works now indeed. Thanks for confirming!


Received ack did not match expected ack

This error originated from a custom integration.
Logger: custom_components.jvc_projectors.remote
Source: custom_components/jvc_projectors/remote.py:137
Integration: jvc_projectors
First occurred: 3:52:06 AM (54 occurrences)
Last logged: 10:01:23 AM
Received ack did not match expected ack: b'\x06\x89\x01PW\n@\x89\x01PW0\n' != b'\x06\x89\x01PW\n'
Connecting failed, retrying in 2 seconds

I'm using an NZ7 projector on the V2.0 firmware

Hi, is the projector still functioning to an acceptable level even with this error? I am hoping to iron out most of the non-critical communication bugs in the next update.

I will need to look up the changes made in v2.0. It looks like this may have changed things for the latest models.

I'm not sure if this is related, but I also see this in the logs. If I need to open another issue just let me know. Thanks and I apologize for being unresponsive on this one.
2023-01-22 05:01:56.252 ERROR (SyncWorker_25) [custom_components.jvc_projectors.remote] Connection timed out. Command b'?\x89\x01PW\n' may not be allowed to run at this time or something else is running already.
2023-01-22 05:01:56.253 WARNING (SyncWorker_25) [custom_components.jvc_projectors.remote] Connecting failed, retrying in 2 seconds
2023-01-22 05:01:58.379 ERROR (MainThread) [homeassistant.helpers.entity] Update for remote.jvc_projector fails

Can you please confirm which version of the home assistant component you are on? Those latest error messages do not look familiar.

 This whole time I was posting on the wrong project 😢
I meant to post here: https://github.com/iloveicedgreentea/jvc_homeassistant
Again I am sorry for wasting your time! I will close this issue.


Potential security issue

Hey there!
I belong to an open source security research community, and a member (@ranjit-git) has found an issue, but doesn’t know the best way to disclose it.
If not a hassle, might you kindly add a SECURITY.md file with an email, or another contact method? GitHub recommends this best practice to ensure security issues are responsibly disclosed, and it would serve as a simple instruction for security researchers in the future.
Thank you for your consideration, and I look forward to hearing from you!
(cc @huntr-helper)

Hi @JamieSlome, you can find my email address at the package.json file in this repository. Feel free to contact me, I'll be happy to discuss and fix any potential security issues.

Hello @tomas, thanks for the response.
If it is easier for you, you can directly see the report here:
https://huntr.dev/bounties/03ac704d-6ccf-4d4b-bed3-f123f4e31dcd/
It is private and only accessible to yourself! ❤

I'd prefer to discuss it via email. Otherwise feel free to submit a PR. :)

@tomas - e-mail sent! 📧

hi @tomas submitted the PR fix for this bug https://github.com/tomas/needle/pull/386
You can also read full bug report here https://huntr.dev/bounties/03ac704d-6ccf-4d4b-bed3-f123f4e31dcd/


Automatically set content-type for XHR POST requests.

@mindeavour came up with this issue where Mithril was firing OPTIONS requests that public APIs didn't know how to respond to. It turns out any CORS POST request will trigger a pre-flight OPTIONS request and most servers aren't equipped to respond adequately.
jQuery handles this stuff under the hood, and Mithril probably should too. Their docs describe the issue pretty well under ajax settings:

contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8')
Type: Boolean or String
When sending data to the server, use this content type. Default is "application/x-www-form-urlencoded; charset=UTF-8", which is fine for most cases. If you explicitly pass in a content-type to $.ajax(), then it is always sent to the server (even if no data is sent). As of jQuery 1.6 you can pass false to tell jQuery to not set any content type header.
Note: The W3C XMLHttpRequest specification dictates that the charset is always UTF-8; specifying another charset will not force the browser to change the encoding.
Note: For cross-domain requests, setting the content type to anything other than application/x-www-form-urlencoded, multipart/form-data, or text/plain will trigger the browser to send a preflight OPTIONS request to the server.

This is the kind of weird stuff with XHR that nobody ever remembers. In my case I got our back-end devs to configure services to respond to OPTIONS, but this standard is obviously not well implemented. So we figured it would make sense to bake the logic described above into Mithril rather than rely on users writing their own serialize functions.

The deeper I look into this, the less simple it is. Anecdotal evidence suggests adding any custom headers will force an OPTIONS preflight request which the server must be prepared to respond to in the value for the Access-Control-Allow-Header response header. Apparently, in Safari any CORS POST request mandates this, even without the user setting custom headers. Perhaps this isn't a trivial fix after all (it might explain why Mithril's XHR component is so tiny compared to other libs though ;).
For my purposes, I have the guy writing our services sat next to me so I can thrash this stuff out. I suppose a generic strategy depends upon de facto standards of major public XHR APIs. Which I have extremely little knowledge of (except for the fact I never had to worry about any of this stuff when I was using jQuery).

CORS is a complicated thing, I'd prefer mithril tried to stay out of taming it.
@barneycarroll Yes, any custom headers will require the preflight.

@tivac you're right, there's just too much that could be happening. As they say in the Gulp community "recipes, not plugins". So in the case that you want to avoid a preflight request when doing a simple POST to another domain, here's a gist.


Clarify when a notification is sent

Issue in help/c-implementing-target/c-implementing-target-for-client-side-web/adobe-target-triggerview-atjs-2.md
TRUE: Default value of page is true. When page=true, notifications are sent to the Target backend for incrementing impression count.
Example triggerView() call that will send a notification to the Target backend for incrementing impression count
adobe.target.triggerView("homeView")
These two sentences imply that whenever a triggerView() is invoked (with page: true, which is default) that a notification to Target will be sent "for incrementing impression count." The observed behavior is that notifications are not sent on every triggerView() unless there is an activity experience or activity metric that is associated with that view. Is that the expected behavior? It would help users to understand the expected behavior of at.js 2.x if this were described more explicitly in the documentation. For example "Example triggerView() call that will send a notification to the Target backend for incrementing activity impressions and other metrics. If there is neither an activity experience nor activity metric associated with the view, no notification will be sent."

Thanks, Daniel. I have updated the options > page parameter row.
https://docs.adobe.com/content/help/en/target/using/implement-target/client-side/functions-overview/adobe-target-triggerview-atjs-2.html


chore(blog): allow building with standard hugo

workaround #37 by checking the hugo version before including
RSS feed. This should not impact generation on CI (?), as we
use our custom, monkeypatched hugo there?
add grunt-cli as dependency so that npm run dev just works for all users.

NOTE: This should be reviewed by someone using Windows with the custom hugo configured to see if bundling still works as expected.

Did not know about that :1st_place_medal:

Fixed.

Hi @nikku,
in README it's written that we must compile (npm run build) theme-src directory, so that the changes are applied to themes directory. And then push all the changes.
I pushed header.html in 01de448.
Standard Hugo v0.30.2 windows/amd64 works fine for me.
BUT after compiling I also got these files changed:

bpmn-viewer.js
scripts.js

Is it because of new dependency you added? I don't feel confident of committing these changes, as I know nothing about JavaScript. Could you please finalize it? You would need to compile the files and push the changes, if everything is fine.
Thank you

We also need @hawky-4s- to change the version of hugo that we use in Jenkins for the compilation before merging this

Which version do we need?

Von: Andrea Giardini<EMAIL_ADDRESS>Gesendet: Donnerstag, 9. November 2017 08:39:42
An: camunda/blog.camunda.org
Cc: Subscribed
Betreff: Re: [camunda/blog.camunda.org] chore(blog): allow building with standard hugo (#41)
We also need @hawky-4s-https://github.com/hawky-4s- to change the version of hugo that we use in Jenkins for the compilation before merging this
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/camunda/blog.camunda.org/pull/41#issuecomment-343071751, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AHI8YRC_41OC7vXIpsvgKBvqhhQMHgcMks5s0qw-gaJpZM4QIoO6.

@nikku: If we don't use the partials feature of the monkeypatched camunda hugo version, then updating the hugo version is no problem.

@sdorokhova The dependency I've added has nothing to do with the update script files.
Locally rebuilding doesn't change these files, too:
~/camunda/projects/blog.camunda.org modern-hugo-build*
❯ rm -rf node_modules

~/camunda/projects/blog.camunda.org modern-hugo-build*
❯ npm i
npm WARN deprecated<EMAIL_ADDRESS>Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm WARN<EMAIL_ADDRESS>requires a peer of<EMAIL_ADDRESS>but none is installed. You must install peer dependencies yourself.

added 816 packages in 11.09s

~/camunda/projects/blog.camunda.org modern-hugo-build* 11s
❯ npm run build
...
Done, without errors.
Started building sites ...

Built site for language en:
0 draft content
0 future content
0 expired content
232 regular pages created
126 other pages created
3 non-page files copied
207 paginator pages created
53 tags created
6 categories created
total in 1692 ms

~/camunda/projects/blog.camunda.org modern-hugo-build* 6s
❯ git status
On branch modern-hugo-build
Your branch is up to date with 'origin/modern-hugo-build'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        package-lock.json

nothing added to commit but untracked files present (use "git add" to track)

The package-lock.json can be ignored, it is generated because I npm@5.
Mind that I clean the node_modules folder and perform a fresh npm install to verify this.

Hi @nikku ,
thanks for checking. I've merged the changes within 55381cd3ccb333e100db842092876299bf2317cb .
Blog publishing went well.
@AndreaGiardini @hawky-4s- , if you have any objections to me pushing this, please tell.


Postprocessing does not work when some tensors are not returned by the model.

System Info
tensorrtllm_backend commit: 6230b69c973a64f8db2763f4f9347ec77a0404e2
Who can help?
@kaiyux
Information

[X] The official example scripts
[ ] My own modified scripts

Tasks

[X] An officially supported task in the examples folder (such as GLUE/SQuAD, ...)
[ ] My own task or dataset (give details below)

Reproduction

Set return_log_probs or return_context_logits or return_generation_logits to False
Query the ensemble or tensorrt_llm_bls generate endpoint

Expected behavior
Returns the generated text
actual behavior
For the ensemble endpoint: {"error":"in ensemble 'ensemble', Failed to process the request(s) for model insta│_repo/postprocessing/1/model.py
nce 'postprocessing_0_0', message: AttributeError: 'NoneType' object has no attrib│root@29898b51710c4ef08bad80f34fbbb75b00004U:/tensorrtllm_backend# cp triton_model
ute 'as_numpy'\n\nAt:\n  /hf_models/triton_model_repo/postprocessing/1/model.py(12│_repo/ /hf_models/ -r
1): execute\n"}
For the tensorrt_llm_bls endpoint: {"error":"Traceback (most recent call last):\n  File "/hf_models/triton_model_rep│root@29898b51710c4ef08bad80f34fbbb75b00004U:/tensorrtllm_backend# vi triton_model
o/tensorrt_llm_bls/1/model.py", line 337, in execute\n    raise pb_utils.TritonMo│_repo/tensorrt_llm/config.pbtxt
delException(\nc_python_backend_utils.TritonModelException: Failed to process the │root@29898b51710c4ef08bad80f34fbbb75b00004U:/tensorrtllm_backend# vi triton_model
request(s) for model instance 'postprocessing_0_0', message: AttributeError: 'None│_repo/postprocessing/1/model.py
Type' object has no attribute 'as_numpy'\n\nAt:\n  /hf_models/triton_model_repo/po│root@29898b51710c4ef08bad80f34fbbb75b00004U:/tensorrtllm_backend# cp triton_model
stprocessing/1/model.py(121): execute\n\n"}
additional notes
Adding default values for each of the tensors when they are not returned by the model fixes this issue.

Could you refine your actual behavior? It looks there are many specail tokens and hard to read directly.

@byshiue

Could you refine your actual behavior? It looks there are many specail tokens and hard to read directly.

E0227 09:25:36.950905 1571 model.py:355] Traceback (most recent call last):
  File "/triton_repo/tensorrt_llm_bls/1/model.py", line 333, in execute
    raise pb_utils.TritonModelException(
c_python_backend_utils.TritonModelException: Failed to process the request(s) for model instance 'postprocessing_0_0', message: AttributeError: 'NoneType' object has no attribute 'as_numpy'

At:
  /triton_repo/postprocessing/1/model.py(121): execute

The reason for this is that as_numpy() gets called without first checking that some optional tensors are provided:
https://github.com/triton-inference-server/tensorrtllm_backend/blob/2c8c6ae3ca4914cdd34b7576ba066e18d3b5a532/all_models/inflight_batcher_llm/postprocessing/1/model.py#L116-L125
I created a PR that does that checking and returns empty tensors when values aren't provided (#341). That is the expected behavior, right?

Thank you for the report. But I cannot reproduce such issue on my side even if I set return_log_probs or return_context_logits or return_generation_logits to False. Could you share the reproduced steps (including engine building, script to send request)? Also, if you not test on latest main branch, could you take a try on latest main branch?

+1, and @HishamYahya 's patch #341 works for me, thanks!


fixing to support block assignment of hash

:ok: looks good :) btw @pbrumm are you using the shard? do you find it useful?

just getting started with it after spending a lot of time tracing down an inconsistent hash corruption bug.
looks useful.    after digging into the crystal code there could be some meta programming to only add the semaphore if preview_mt is set.
Thanks for developing this.

@pbrumm Glad you like it! I would maybe suggest, we at @NeuraLegion have moved to use  https://github.com/NeuraLegion/generic_actor to safe-guard against MT issues, take a look you might find it userful! it uses an actor model with Channels and Fibers instead of a lock

interesting.    I will take a look.


Fix linter

omg, okay, should have look at the matrix first, its all EOL versions XD

but just wanna fix linters here, after this, i go on and do the other things, so please ignore ci ftm


Support Auto creation of containers in ADLSGen2PinotFS on initial run

The current implementation fails in case the container is not created beforehand. This adds additional friction when on-boarding new use cases or standing up pinot on a new environment.

https://github.com/apache/incubator-pinot/pull/6531

https://github.com/apache/incubator-pinot/pull/6531/


Bug: [Invalid default candidate for Java 17]

Bug report

Current available Java 17 Temurin version is 17.0.3-tem. However, when installing default Java version or upgrading sdk suggests 17.0.2-tem
To reproduce

sdk ls java | grep -E 17.+tem
               | >>> | 17.0.3       | tem     | installed  | 17.0.3-tem
Omit Identifier to install default version 17.0.2-tem:
    $ sdk install java 17.0.2-tem

The REST API call is not returning the expected version 17.0.3-tem:
echo $(curl -s https://api.sdkman.io/2/candidates/default/java)
17.0.2-tem

See also https://github.com/sdkman/sdkman-cli/issues/815.
System info

OS (e.g. Windows, Linux, Mac, Cygwin, WSL, etc.) and version

uname -a
Darwin 157278S0 20.6.0 Darwin Kernel Version 20.6.0: Tue Feb 22 21:10:41 PST 2022; root:xnu-7195.141.26~1/RELEASE_X86_64 x86_64

Shell and version (e.g. bash --version/zsh --version)

zsh --version
zsh 5.8 (x86_64-apple-darwin20.0)

The output of sdk version

SDKMAN 5.15.0

Hi @aivantsov, this is usually caused by a data issue when a release is performed but not set to default for a candidate. I've now corrected this in our database.
Please feel free to chat with us on Slack as per the contributing guidelines prior to opening a bug report here.


Explore updating the complete tutorial to newer versions of Astro (and other dependencies)

This tutorial is outdated, and currently using v1 of Astro. Explore whether this can be updated to v2 (or the upcoming v3), or if it's best to keep this on v1 as it works for the scope of the content in the tutorial.

just finished this blog-tutorial.
current running on 'my' blog-tutorial netfly.app
https://stately-seahorse-ef56b6.netlify.app/rss.xml
PS: i am not sure how long i let run this app, today is 20230806.
because an alternative can be to switch to 'run' it in github pages.
my dependencies are:
"dependencies": {
"@astrojs/preact": "^2.2.1",
"@astrojs/rss": "^2.4.3",
"astro": "^2.10.1",
"preact": "^10.16.0"
}
Greetings Röbi

Just updated everything to Astro 3 and peer-dependencies!


Add some music and sound effects.

The game is deathly silent.  Add some background music and sound effects.

We now have background music.  No plans for sound effects...


docs: more info for README

Note about resources
Enable KLT
Move cert-manager install to OF section
Misc notes

We install Keptn with the Helm chart as part of the GitIOps deployment. I think, most of this is not needed anymore

We are using the walkthrough files rather than the main README.md file so I am closing this.


prototype: query TYPE_A and TYPE_AAAA via Command::Resolve

This is to help explaining review comments in PR #185

This is covered by PR #185 . Closing.


Allow assignment of void returning functions to appropriate construct signature types

Consider an existing JS constructor function
var Foo = function (x,y) {
    this.x = x;
    this.y = y;
}
var foo = new Foo(1,2);

This is allowed in TypeScript due to a specific exception which allows new to be called on non-constructor functions only if they're void returning. Now if you want to more strongly type this code, but without converting to full on classes yet, we do not allow you to do so in a fully typesafe manner:
interface FooInstance {
    x: number;
    y: number;
}
interface FooConstructor {
    new (x: number, y: number): FooInstance;
}
// this an error, new(x,y)=>FooInstance is not assignable to (x,y)=>void
var Foo: FooConstructor = function (x,y) {
    this.x = x;
    this.y = y;
}
var foo = new Foo(1,2);

We require you to cast the constructor function to any or Function in order for it to be assignable to the FooConstructor interface.
Given that we've made an exception for void returning functions already in order to accommodate this pattern it doesn't seem crazy to make one more exception for them through the assignability relation in order to complete the desired scenario.
See #2299 for another example from a customer.

If anything we'd rather remove the ability to new void functions. The inconsistency is unfortunate but we didn't want to add a large type safety hole for the sake of consistency with a facet we don't even like in the first place.

Hi Ryan,
Very coincidentally, this came up again for me today while refactoring an old code base - this time with an Angular 1.x View Model written in the "call new on a void function to make a constructor" style that has fallen out of favor today, but is still floating around (it remains part of the Knockout tutorial at http://learn.knockoutjs.com/#/?tutorial=collections).
Anyway, we've gained the ability to strongly type this within a function since this issue was considered; with a strongly-typed this, I don't believe that this JS pattern represents a type-safety hole anymore.  The rule could be: if a void function with an explicitly-typed this is called with new, the return type of the expression is the same type as the explicit this within that function, and error TS7009 does not apply.
Thanks either way!


Add u-url to AP => wm rendered mf2 pages

Right now it just uses the source URL, which is on fed.brid.gy. Would be nice to show the original fediverse instance's URL instead.

Hmm, u-url is there after all, examples on https://snarfed.org/2023-05-26_50328 . Whatever happened here may have been a fluke?


style(onboarding): ensure constant button position

Description:
Ensure that the previous and next buttons have a consistent height and do not move when switching pages in the onboarding process.
Motivation and Context:
A slight difference in height between the previous and next buttons was causing the next button to appear to move when switching between a page with or without the previous button.
How Has This Been Tested?
Manually - watch the next button move slightly when moving between page 1 and 2 of the onboarding process.
Types of changes:
Style fix
Checklist:

[x] My code follows the code style of this project.
[x] I have reviewed and updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes where needed.
[ ] All new and existing tests passed.
[x] My commits have been squashed into a concise set of changes.

Coverage remained the same at 16.267% when pulling faf3d5927d807328338ebf501c6b046289342159 on mrfelton:style/fix-onboarding-next-button-movement into 77fb024928a1eaccfd5700e0e0b613335ade6525 on LN-Zap:master.

Tested ACK faf3d59


How to update your firmware

I'd love to help out writing some documentation on 'How-To' guides for users to update their firmware on their devices. If anyone can give me a basic overview on what hardware & software is required I can very happily submit a PR to update the readme :)

That sounds super great! It's hard to be specific without knowledge of particular hardware choices, etc, but I guess on a basic level it kind of goes like the following.

Install the latest Arduino IDE.
Figure out which hardware you have (OLED? diversity? Nano-based? etc.)
Update settings.h to match your configuration.
Install libraries that are required for your configuration (Adafruit_GFX, TVOut, etc)
Use an FTDI adapter (or another Arduino) to connect to the FTDI pins on your device.
Upload the firmware.

I think maybe some walkthroughs for specific hardware would be good.

If USBasp adapter is being used for flashing under Windows 10 libUSBk driver should be selected for proper firmware uploading (Sketch - Upload using programmer)

Thanks for the tips! Running through the steps now, and have run into a stumbling block. Perhaps just a newbie error?
OS: MacOS Sierra (10.12.2)
Arduino IDE 1.8.0
Installed libraries

Adafruit SSD1305 by Adafruit (used 1.1.2)
Adafruit GFX Library by Adafruit (used 1.1.5)
TVOut by<EMAIL_ADDRESS>(used 1.0.5)

Is this perhaps something I have neglected to configure in settings.h ?
Error:
Arduino: 1.8.0 (Mac OS X), Board: "Arduino Nano, ATmega328"

/Applications/Arduino.app/Contents/Java/arduino-builder -dump-prefs -logger=machine -hardware /Applications/Arduino.app/Contents/Java/hardware -tools /Applications/Arduino.app/Contents/Java/tools-builder -tools /Applications/Arduino.app/Contents/Java/hardware/tools/avr -built-in-libraries /Applications/Arduino.app/Contents/Java/libraries -libraries /Users/dan/Documents/Arduino/libraries -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10800 -build-path /var/folders/h0/39cpp_bd0vq42dw980yb47_80000gp/T/arduino_build_965409 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=/Applications/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.arduinoOTA.path=/Applications/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.avrdude.path=/Applications/Arduino.app/Contents/Java/hardware/tools/avr -verbose /Users/dan/dev/github/sheaivey/rx5808-pro-diversity/src/rx5808-pro-diversity/rx5808-pro-diversity.ino
/Applications/Arduino.app/Contents/Java/arduino-builder -compile -logger=machine -hardware /Applications/Arduino.app/Contents/Java/hardware -tools /Applications/Arduino.app/Contents/Java/tools-builder -tools /Applications/Arduino.app/Contents/Java/hardware/tools/avr -built-in-libraries /Applications/Arduino.app/Contents/Java/libraries -libraries /Users/dan/Documents/Arduino/libraries -fqbn=arduino:avr:nano:cpu=atmega328 -ide-version=10800 -build-path /var/folders/h0/39cpp_bd0vq42dw980yb47_80000gp/T/arduino_build_965409 -warnings=none -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=/Applications/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.arduinoOTA.path=/Applications/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.avrdude.path=/Applications/Arduino.app/Contents/Java/hardware/tools/avr -verbose /Users/dan/dev/github/sheaivey/rx5808-pro-diversity/src/rx5808-pro-diversity/rx5808-pro-diversity.ino
Using board 'nano' from platform in folder: /Applications/Arduino.app/Contents/Java/hardware/arduino/avr
Using core 'arduino' from platform in folder: /Applications/Arduino.app/Contents/Java/hardware/arduino/avr
Build options changed, rebuilding all
Detecting libraries used...

"/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics  -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10800 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR   "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/eightanaloginputs" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/EEPROM/src" "-I/Users/dan/Documents/Arduino/libraries/Adafruit_SSD1306" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/SPI/src" "-I/Users/dan/Documents/Arduino/libraries/Adafruit_GFX_Library" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/Wire/src" "/var/folders/h0/39cpp_bd0vq42dw980yb47_80000gp/T/arduino_build_965409/sketch/rx5808-pro-diversity.ino.cpp" -o "/var/folders/h0/39cpp_bd0vq42dw980yb47_80000gp/T/arduino_build_965409/preproc/ctags_target_for_gcc_minus_e.cpp"
"/Applications/Arduino.app/Contents/Java/tools-builder/ctags/5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "/var/folders/h0/39cpp_bd0vq42dw980yb47_80000gp/T/arduino_build_965409/preproc/ctags_target_for_gcc_minus_e.cpp"
Compiling sketch...
"/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10800 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR   "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/eightanaloginputs" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/EEPROM/src" "-I/Users/dan/Documents/Arduino/libraries/Adafruit_SSD1306" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/SPI/src" "-I/Users/dan/Documents/Arduino/libraries/Adafruit_GFX_Library" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/Wire/src" "/var/folders/h0/39cpp_bd0vq42dw980yb47_80000gp/T/arduino_build_965409/sketch/TVOut_screens.cpp" -o "/var/folders/h0/39cpp_bd0vq42dw980yb47_80000gp/T/arduino_build_965409/sketch/TVOut_screens.cpp.o"
"/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10800 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR   "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/eightanaloginputs" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/EEPROM/src" "-I/Users/dan/Documents/Arduino/libraries/Adafruit_SSD1306" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/SPI/src" "-I/Users/dan/Documents/Arduino/libraries/Adafruit_GFX_Library" "-I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/Wire/src" "/var/folders/h0/39cpp_bd0vq42dw980yb47_80000gp/T/arduino_build_965409/sketch/oled_128x64_adafruit_screens.cpp" -o "/var/folders/h0/39cpp_bd0vq42dw980yb47_80000gp/T/arduino_build_965409/sketch/oled_128x64_adafruit_screens.cpp.o"
oled_128x64_adafruit_screens.cpp:56: error: #error ("Screen size incorrect, please fix Adafruit_SSD1306.h!");
   #error("Screen size incorrect, please fix Adafruit_SSD1306.h!");

    ^
Using library EEPROM at version 2.0 in folder: /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/EEPROM
Using library Adafruit_SSD1306 at version 1.1.2 in folder: /Users/dan/Documents/Arduino/libraries/Adafruit_SSD1306
Using library SPI at version 1.0 in folder: /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/SPI
Using library Adafruit_GFX_Library at version 1.1.5 in folder: /Users/dan/Documents/Arduino/libraries/Adafruit_GFX_Library
Using library Wire at version 1.0 in folder: /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/Wire
exit status 1
#error ("Screen size incorrect, please fix Adafruit_SSD1306.h!");

Excuse me, I read the error message now... Basically:
Adjust Adafruit_SSD1306.h file under the SSD1306 Displays heading to look like the following:
#define SSD1306_128_64
// #define SSD1306_128_32 // this is uncommented by default
// #define SSD1306_96_16

Glad you got it sorted! I really dislike this design choice on Adafruit's part. Needing to edit library code is super nasty.

I was able to build this update for upload but I accidentally loaded the bootloader version and I cannot update in any way now. It is using the loaded version but when I try to upload again it states that  "stk500 get sync fails"  Can someone provide a recommended solution?

 I ran into the same issue with a friends' module who did the same.
I fixed it using the ISP header and ArduinoISP. The ArduinoISP might help you out (where the target is your receiver, rather than another Arduino).
What type of receiver do you have?

I have a Realacc - rx5808-pro-diversity.  Its been a while but I have a USB ASP and i think I can flash on ISP.  Once I flash the non bootloader version will I be able to use XLoader to flash updates via the FTDI interface?  Or does this require a bootloader to flash via the serial interface?

If you undo the screws and disconnect the top PCB with the screen, there are ISP headers underneath.
 Once you've flashed the bootloader, use the FTDI pins to flash the non-bootloader version. You can continue to use the FTDI header for updates afterwards.
I guess you could also just flash the bootloader version using your USB ASP (then the FTDI will still work afterwards.)
Just, for whatever reason, trying to flash the version with the bootloader over FTDI causes weird problems.
Hope that makes sense!

This makes sense.  Thank you for your help.

One more question.  What Arduino Bootloader works best.  I see some people have tried UNO and others something else.  Any recommendations?  Thanks again.

Not sure on that, I used whatever it gives you with the Nano device type.

OK.  That's what I will use.

I have the same issue. On both a Realacc rx 5808 split (12/2016) and a non split version (05/2017). This is where I am so far:
FTDI:
-I can't flash hex files with Xloader, it says: Upload failed
-I can compile, write, but fail to  verify with arduino
USBasp:
-I can compile and flash on ISP ports
-I can burn the bootloader (not sure if I should use nano or mega 328p, I tried both)
After burning the bootloader, I have no change with FTDI, still not possible to flash. I can only flash with xloader or arduino if I flash the same firmware witch is already on it.
So it's look like I can't manage to repair the bootloader correctly, but at least i can still flash threw USBasp. But only if I have an .ino. Is there a way to flash a .hex with USBasp ?
THX for the good work.

I was able to burn the Nano bootloader via USBasp and the ISP headers.  You can flash the .hex via the USBasp via the ISP headers.  I can now upload via FTDI fine without issue once the bootloader was repaired.  Not sure what you are facing at this point.

Thank for confirming that I should be succesful. I will try further.
Can you tell me how are you flashing hex file with USBasp ?

Its been a while but I think you can pick the USBasp as the programmer in the Arduino IDE and then program like you normally would via the ISP header.  You will have to do all programming via ISP header.

Ok It was a driver issue, now the bootloader is working again, an i can flash witfh ftdi again
thx

I just want to add that I finally got the hex flashing with USBASP working on MacOS 10.12 Sierra with the following command if Arduino IDE (1.8.4) is installed:
/Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/avrdude -C/Applications/Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf -v -patmega328p -cusbasp -Uflash:w:Downloads/rx5808-pro-diversity-v2.0-with-bootloader.hex
You have to omit the -D parameter (Disable auto erase for flash memory), otherwise you get verification errors.


Usage Tutorial

Create a tutorial on how to use it:
GPU: Forward, Backwards
CPU: ??

Same as #59 ?