LDAC shows only 96KHz as sample rate | support for other sampling rates

Problem
$ bluealsa-cli info /org/bluealsa/hci0/dev_XXX/a2dpsrc/sink
Device: /org/bluez/hci0/dev_XXX
Sequence: 0
Transport: A2DP-source
Mode: sink
Running: true
Format: S32_LE
Channels: 2
Sampling: 96000 Hz <<< support for other rates?
Available codecs: SBC LDAC
Selected codec: LDAC
Delay: 200.1 ms
DelayAdjustment: 0.0 ms
SoftVolume: true
Volume: L: 127 R: 127
Muted: L: false R: false

Additional context
On Windows, all sample rate families (44.1, 48, 88.2 and 96 KHz) are supported using the same earbud (Sony WF-1000XM5) and bluetooth adapter. Is this possible with bluealsa?

Assuming you are using ALSA applications, then you can avoid the need to use bluealsa-cli after every connection by defining a PCM with the desired codec configuration in ~/.asoundrc, for example:
pcm.earbuds {
	type plug
	slave.pcm {
		type bluealsa
		device XX:XX:XX:XX:XX:XX
		profile a2dp
		codec ldac:2D010000AA001001
	}
}

Then use that PCM instead of bluealsa:XX:XX:XX:XX:XX:XX as in:
aplay -D earbuds music.wav

Sincerely appreciate your prompt and super useful response!
I just need to let the application which is using the ALSA backend, select from supported sampling rates. So in the example above, if I choose the codec ldac:2D010000AA003F07 the application should be able to pick any one of those sampling rates?

if I choose the codec ldac:2D010000AA003F07 the application should be able to pick any one of those sampling rates?

Not exactly. You have to choose specific configuration (when decoding configuration blob with a2dpconf you can not see more than one value next to each property). Otherwise, BlueALSA will not reconfigure codec (you will see error message).

Thanks for the explanation. Closing the issue.

How can I see the other codecs e.g. LDAC:2d010000aa000401? I can only see the one which shows all sampling frequencies LDAC:2d010000aa003c07:
$ bluealsa-cli -v info /org/bluealsa/hci0/dev_XXX/a2dpsrc/sink
Device: /org/bluez/hci0/dev_XXX
Sequence: 0
Transport: A2DP-source
Mode: sink
Running: false
Format: S32_LE
Channels: 2
Sampling: 96000 Hz
Available codecs: SBC:3fff0235 LDAC:2d010000aa003c07
Selected codec: LDAC:2d010000aa000401
Delay: 200.0 ms
DelayAdjustment: 0.0 ms
SoftVolume: true
Volume: L: 127 R: 127

$ ./a2dpconf LDAC:2d010000aa003c07
LDAC <hex:2d010000aa003c07> {
  vendor-id:32 = 0x0000012d [Sony Corporation]
  vendor-codec-id:16 = 0x00aa
  <reserved>:2
  sampling-frequency:6 = 96000 88200 48000 44100
  <reserved>:5
  channel-mode:3 = Stereo DualChannel Mono
}

How can I see the other codecs

I guess you mean "how can I create the configuration blob that chooses a specific sample frequency?"
Unfortunately the answer is "by understanding the semantics of the bit sequence represented by the hex blob, and creating the appropriate bit sequence by hand".
It would be great if there was a tool to do this, but I do not know of any (perhaps someone else can advise if they know of any Linux tools for this?.)
As an example, starting with the full capabilities blob given by the "Available codecs:" above:
$ ./a2dpconf LDAC:2d010000aa003c07
LDAC <hex:2d010000aa003c07> {
  vendor-id:32 = 0x0000012d [Sony Corporation]
  vendor-codec-id:16 = 0x00aa
  <reserved>:2
  sampling-frequency:6 = 96000 88200 48000 44100
  <reserved>:5
  channel-mode:3 = Stereo DualChannel Mono
}

We see that the first 32 bits identify the capabilities as being for a Sony codec. That is "2d010000", so we just copy that.
LDAC:2d010000

The next 16 bits ("aa00") identifies the codec ac LDAC, so again we copy that
LDAC:2d010000aa0

The next 8 bits("3c") have the first 2 unused and the last 6 indicating the frequency. Each bit represents 1 supported frequency, and in this example 4 of the possible 6 are available. So we will need to guess which bit represents which frequency (or we could just look at the bluez-alsa source code here https://github.com/arkq/bluez-alsa/blob/adf9334e30553c9ce7f4f868b75ff6da92d4d857/src/shared/a2dp-codecs.h#L558-L567. Suppose we want to use a sampling rate of 48000; that is bit 4 or 10 hex for the full 8 bits:
LDAC:2d010000aa0010

The final 8 bits have 5 unused and the the last 3 each indicating a channel mode. Again by guesswork or looking at the bluez-alsa code we select stereo which is bit 0, so 01 hex for the full 8 bits:
LDAC:2d010000aa001001

It would be great if there was a tool to do this, but I do not know of any (perhaps someone else can advise if they know of any Linux tools for this?.)

I think that the a2dpconf could be extended/improved a bit. When creating the LDAC config for 48000 Stereo I had to use calculator to convert hex to binary and binary to hex, and that was annoying to be honest :D
One improvement might be in terms of display format. I think that I will try to change current format to be more Wireshark-like (where each bit is shown in case of bitmap fields). The other improvement might be a support for command like options to set particular bitmaps to desired values (in order to create desired configurations or capabilities). There is a set of common fields and some codecs have unique fields, but I think that the options "space" is countable :)

Amazing explanation @borine!! But phew...bitwise operations for selecting codec sampling? :D
@arkq a practical enhancement would be allowing all supported sampling rates at the same time, as displayed by the full capabilities blob. The downstream ALSA application can then simply use the requested frequency. A common use case is e.g. streaming from Tidal where sampling rates can vary by track.
Not sure if that's doable though...

@arkq a practical enhancement would be allowing all supported sampling rates at the same time, as displayed by the full capabilities blob. The downstream ALSA application can then simply use the requested frequency.

Hmmm... Maybe the "simplest" ideas are the best :D There are some drawbacks there, though. The reconfiguration step is not as fast as for HW PCMs, so there might be some initial lag when starting to play audio with different sampling frequency (or number of channels) than currently selected. So, maybe such feature indeed would be nice, but not as a default option, but as an optional one. It should be doable (I think) :)

but as an optional one. It should be doable (I think) :)

Tell me more, I'm keen to try it! --enable-sample-rates :)
Lag isn't a problem, it doesn't need to be as fast as HW PCMs, (no one is thinking about gapless etc in this context I guess). It just needs to support all supported sampling rates without having to reconfigure everytime using a2dpconf, that's pretty much it!

@arkq should we change this to an enhancement? Wondering if you see this happening in the short or long term?

I'm trying to make a PoC for that. Maybe I will squeeze it in an upcoming 4.3.0 release.

I'm trying to make a PoC for that. Maybe I will squeeze it in an upcoming 4.3.0 release (month or two from now).

Awesome! Looking forward to it.

I'm still working on the PoC (some internal refactoring is required), but in the meantime I've pushed to master a change which by default selects sampling rate up to 48 kHz.

@dstagger I've pushed a PoC here https://github.com/arkq/bluez-alsa/tree/auto-codec I've added support for SBC, AAC and LDAC codecs. I've tested it only with SBC and AAC, though. Now, when opening PCM, the ALSA plugin will check for supported channels and sampling rates and if currently selected one does not match with requested one, the reconfiguration is triggered. This might cause a delay in playback up to 1 second (it depends on headset response time). Please, test it on your side a share any thoughts or encountered issues :D In the final version, this feature will be behind a configuration flag for bluealsa PCM. Also, I will have to rework other parts, so this feature will integrate well with custom A2DP configurations, and with HFP profiles.

@arkq This looks good as a default setup, and feels more "alsa-like" in that the application gets to choose the best config for its own purpose without needing any external effort from the user. It will present difficulty for my "multi-client" branch which I will need to investigate, but that must not prevent or delay merging here.

@arkq do I need to checkout the auto-codec branch and recompile everything to test this?
I also see that you've an issue with the reconfiguration here
Just to sure that it's ready for testing as I've only fully working environment and avoid messing with it as much as possible :D

do I need to checkout the auto-codec

This feature has been merged into the master, so the auto-codec branch was removed.

I also see that you've an issue with the reconfiguration https://github.com/arkq/bluez-alsa/issues/710#issuecomment-2248753846
Just to sure that it's ready for testing as I've only fully working environment and avoid messing with it as much as possible :D

Yes, I think that it's ready for testing. Pull the latest code from master branch and test it please. I've checked it on my side and it works quite well. However, this feature introduces a "drastic" change for the whole ecosystem. Previous behavior was that once the Bluetooth configuration was established, all audio streams ware transmitted with the same setup (unless modified by user). So, if it worked for the first time, it was like 99.999% chance that it will work for future playbacks. Now, every playback can reconfigure A2DP connection. So, it is possible that due to some bug with "not very tested" configuration (e.g. mono with 11025 Hz), all of the sudden playback will not work either due to BlueALSA issue (I've found some bugs with AAC due to this :D), or remote Bluetooth device. So, it would be very much appreciated for users to test this feature as much as possible :D

@arkq how do I enable the auto rate change in my existing setup? I've currently v4.2.0-5-g9d73103 installed

You need at least 4.3.0 or better yet 4.3.1 (bug fix release). Then auto rate/channels selection should work out of the box (no special configuration required) . However, I'd recommend to use latest master, because in master there is another fix which is kind of related to auto-selection (deadlock fix).

Do I need to uninstall 4.2? Or just the following on the existing installation:
git clone https://github.com/arkq/bluez-alsa.git
cd bluez-alsa
autoreconf --install --force
mkdir build
cd build
../configure --enable-ldac --enable-systemd --enable-cli
make
sudo make install

Uninstall and install new one. See the migration guide: https://github.com/arkq/bluez-alsa/wiki/Migrating-from-release-4.3.1-or-earlier

Yes had figured that out :)
How do I select the codec that support multiple rates?
$ bluealsactl -vv info /org/bluealsa/hci0/dev_AC_80_0A_05_F0_E7/a2dpsrc/sink
Device: /org/bluez/hci0/dev_AC_80_0A_05_F0_E7
Sequence: 1
Transport: A2DP-source
Mode: sink
Running: true
Format: S32_LE
Channels: 2
ChannelMap: FL FR
Rate: 96000 Hz
Available codecs:
	SBC:3fff0235 [channels: 1 2] [rate: 44100 48000]
	LDAC:2d010000aa003c07 [channels: 1 2] [rate: 44100 48000 88200 96000]
Selected codec:
	LDAC:2d010000aa000401 [channels: 2] [rate: 96000]
Delay: 201.4 ms
ClientDelay: 0.0 ms
SoftVolume: true
Volume: 127 127
Mute: off off

LDAC is already selected and transport supports these options: channels: 1 2 rate: 44100 48000 88200 96000; simply play something (with rate different than 96k) using bluealsa ALSA PCM and you will see that the configuration will automatically change.

Hmm seems like it has an issue with alsaloop. I'm piping the source player output to a loopback device which I created like this:
$ cat /etc/modprobe.d/alsa-aloop.conf
options snd-aloop index=1 pcm_substreams=1 id=Loopback

which is used by the alsaloop daemon as
$ cat alsahook.sh
#!/bin/bash
nohup alsaloop -C hw:Loopback,1 -P bluealsa -t 500000 -S 0 > /dev/null 2>&1 &

I've configured the player to use Loopback as the playback device. When the audio sample rate changes, it seems I need to stop the alsaloop daemon and restart it after the playeback starts for bluez-alsa to pickup the changes.

Yes, the configuration is changed only when the PCM is reconfigured. It can be opened all the time but hw params need to be changed. I have never been using alsaloop with BlueALSA, so I'm not sure whether there is a possibility to do that... But I guess that it could be done properly with some patches to alsaloop...

So just to conclude, rates changes are working!! I just tried between 88.2 and 96 as I'm not worried about lower sampling rates with LDAC :)
Amazing job!


is an empty object truthy or falsy?

The answer seems to be "both", at least that's what this fiddle suggests: http://jsfiddle.net/z9uywar0/
One might argue wether {} should be considered truthy or falsy in that context but I fail to see how it can be both. Or maybe I just completely misunderstood the meaning of {{#value}} vs. {{^value}}.  That's entirely possible...

Change the test to {{#if value}} and you'll get results more like what you probably expect.
{{#value}} is implicit so in the case of an object, it gets treated as an {{#each value}} hash iteration, but in the case of {{^value}} is negation of if.
The only disagreement with js is {{#if []}} -> [] is falsy (javascript disagrees) which is an intention ractivism, though you could argue that {{#each []}} should be adequate for utlilizing array.  - and is what you get with {{# []}}

Change the test to {{#if value}} and you'll get results more like what you probably expect.

I'm aware of that but that wasn't the point ;)
And I'm afraid I also have to disagree on {{#value}} being the same as {{#each value}} in case of an object (see http://jsfiddle.net/z9uywar0/2/). Imho {{#value:index}} would be the same as {{#each value}}.
I don't have a problem with ractive treating things differently than javascript. In case of [] I think the "ractivism" (nice word) is more intuitive. So why not treat an empty object {} the same way as an empty array? I find it rather irritating that an empty object, as opposed to any other data type, is valid both for {{#value}} and {{^value}}.

Would not be surprised if #1856 related.

@martypdx it seems that {{#value}} behaves like {{#with value}}, not {{#each value}}, so it should be probably changed to match the new {{#with value}} behavior.

@MartinKolarik yep, that makes sense. What's the new behavior again?

@martypdx {{#with obj}} behaves the same way whether there's an {{else}} section or not - an empty object is always falsey.


Handle additional linker arguments correctly

The environment variable LINK_ARGS allows the user to specify additional linker flags when building the native code. If this environment variable is not set, an empty string is passed on as default value. When calling the linker via the subprocess module, this empty string is interpreted as a file name, which causes the following output.
gcc -pthread -shared build/temp.linux-x86_64-3.6/pyhdf/hdfext_wrap.o -L/usr/local/lib -lmfhdf -ldf -ljpeg -lz -lpython3.6m -o build/lib.linux-x86_64-3.6/pyhdf/_hdfext.cpython-36m-x86_64-linux-gnu.so
gcc: error: : No such file or directory
error: Command "gcc -pthread -shared build/temp.linux-x86_64-3.6/pyhdf/hdfext_wrap.o -L/usr/local/lib -lmfhdf -ldf -ljpeg -lz -lpython3.6m -o build/lib.linux-x86_64-3.6/pyhdf/_hdfext.cpython-36m-x86_64-linux-gnu.so " failed with exit status 1

Instead of an empty string, None should be used as default value. If LINK_ARGS is actually set, its value needs to be splitted to allow multiple arguments.

This was caused by numpy/numpy#12659, which was mostly deliberate but also unexpected.
Note that this patch will break if both numpy < 1.16.0 and LINK_ARGS="-Wl,-rpath=\"path with spaces\"". That's already a corner case though, so probably doesn't matter.

Please consider releasing this fix (v0.9.2?)

Note also that this is a behavior change on windows, where backslashes in paths will need extra escaping (shlex.split uses posix escaping)

@fphammerle v0.9.2 has been tagged and uploaded to PyPI.

Awesome, thank you!


Memory issue and an invalid callback error

Hello,
Issue 1:
$db = new Aerospike($config,false);

It gives an error below:
Invalid callback , no array or string given on line....

Issue 2:
When I refresh the page a few times, I see a memory exhausted error.
I am getting the below error:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 679948105 bytes) in /var/www/html/Aerospike.php on line 59

Here is the line 59
#59 - $this->db = new \Aerospike( $this->config, false );

private $config = array(
	"hosts" => array(
		array( "addr" => "<IP_ADDRESS>", "port" => 3000 ) // add multiple arrays for more nodes
	)
);

I have not changed any default values. Please let me know why this could be happening.

What's the context this code is running in? I assume it's a webserver. If so, what's the OS type and version, the webserver type and version, and how is it configured (mod_php, FPM, etc).
For one, you're using non-persistent connections which only make sense for single request processes, such as a short running CLI script. If your code is in a webserver the one process will be taking many requests so you want that second argument to be true (its default value).
Otherwise, the code you're quoting will not get anywhere near exceeding the memory limit. Try just running the following (config and connect), and reload the page similarly.
<?php
$config = array( "hosts" => array(
        array( "addr" => "<IP_ADDRESS>", "port" => 3000 ) // add multiple arrays for more nodes
    )
);
$db = new aerospike($config);
?>

Is this still a problem for you? If so, I definitely need the environment details.
Most likely has to do with the rest of the code. Can you quote the rest of the script?

OS - Ubuntu 14.04 LTS
Processor - Intel® Core™ i5-4210U CPU @ 1.70GHz × 4
Server - Apache/2.4.7 (Ubuntu)
mod_php5
I am testing with persistence enabled and will let you know.

Please update us when you do. If the problem persists please let me see the code you're using. I would need to reproduce the problem.

Not seeing it now. Had fixed some external parameters after which haven't seen this error again so far.

Okay, thanks for checking. Please reopen it if it reoccurs reliably.


Configuration parameters read as ints although they might be floats

For example startFreq expects an int on the cfg file, but it might be a float.

The solution is to change: startFreq = int(splitWords[2]) into startFreq = int(float(splitWords[2])).
The config file has some text, such as '62.00'. It can't directly convert this string to an integer. By first converting the string to a float and then converting the float to an int, the problem should be fixed. Don't forget to do this for the other variables:
            startFreq = int(float(splitWords[2]))             idleTime = int(splitWords[3])             rampEndTime = float(splitWords[5])             freqSlopeConst = float(splitWords[8])             numAdcSamples = int(splitWords[10])

I have corrected the function with Ivar's code. Thank you for letting me know.


iter_content with chunk_size=None hangs when used with requests.Session on Python 3

Under some specific circumstances, a loop using iter_content ends up hanging after all the content has been iterated over. Specifically, all the following conditions must be met for this to occur:

You must be using Python 3 (I've tested using 2.7.11 (under which this works) and 3.3.6, 3.4.11 and 3.5.1 (under which this bug occurs).
Use requests.Session(), not requests.
Set chunk_size=None in iter_content.

Here, have an example:
# requests_bug.py
import requests

def iterate_through_streamed_content(requests_module_or_session, chunk_size):
    r = requests_module_or_session.get('http://example.org', stream=True)
    r.raise_for_status()
    for chunk in r.iter_content(chunk_size=chunk_size):
        print(len(chunk))

iterate_through_streamed_content(requests, 1024)
print('requests, 1024 works')

iterate_through_streamed_content(requests, None)
print('requests, None works')

iterate_through_streamed_content(requests.Session(), 1024)
print('requests.Session(), 1024 works')

iterate_through_streamed_content(requests.Session(), None)
print('requests.Session(), None works')

print("That's all.")

Output 1 (bug does not occur in Python2.7):
$ python --version
Python 2.7.11
$ pip install -U requests
Requirement already up-to-date: requests in /home/...
$ python requests_bug.py
1270
requests, 1024 works
1270
requests, None works
1270
requests.Session(), 1024 works
1270
requests.Session(), None works
That's all.

Output 2 (bug occurs in Python3.5):
$ python --version
Python 3.5.1
$ pip install -U requests
Requirement already up-to-date: requests in /home/...
$ python requests_bug.py
1270
requests, 1024 works
1270
requests, None works
1270
requests.Session(), 1024 works
1270

...after which the script hangs until you do Ctrl+C.
This is all done on Ubuntu 16.04, using pyenv and its virtualenv feature for testing using different Python versions. (Thank you all for requests, btw! Keep on rocking :+1: )

So I can reproduce this on OSX, and it appears to be an issue in urllib3. Here to be more specific. The file object isn't marking itself as closed for some reason and the while loop never exits. This happens on both https://httpbin.org and http://example.org but not https://google.com, so Google is doing something to force the connection closed. I'll do a bit more digging and see if I can figure out why the stream doesn't have an EOF.

Just speculation on my part, but may it be related to Keep-Alive? Considering it only occurs when using requests.Session().

Ok, I can reproduce this test under test conditions in urllib3. This suggests that it's orthogonal to the use of requests.Session.

Note as well that using requests directly is really no different at all: requests.request creates a one-off Session through which to run all its calls. The real question is why this happens consistently on the second request, which I'm stunningly unsure about at this time.

While we're here, note also that this bug doesn't appear to actually be affected by timeouts, because none of the socket calls take long: we're just busy-looping.

So, this seems relevant:
Python 2.7.11 (default, Dec 14 2015, 09:18:27)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import httplib
>>> hasattr(httplib.HTTPResponse, 'closed')
False

Python 3.5.1 (default, Dec 14 2015, 09:21:15)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import http.client
>>> hasattr(http.client.HTTPResponse, 'closed')
True

Note that in Python 3.5 _close_conn does not call super().close(), which means that the closed property never gets set.

That's about where I am at in debugging too @Lukasa. It looks like isclosed is being set and will evaluate to True but the close attribute is permanently False. I'm trying to figure out if this is a bug in httplib or urllib3's use of it.

The answer is that it doesn't really matter. =)
This behaviour is present in basically all the shipped Python 3 solutions, which means even if it's a bug we need to be bug-compatible with it. I think the best solution is simply to rely on isclosed if it's present, in preference to closed, which is then in preference to reaching in to the fp thing.
Are you interested in writing the PR that fixes this, @nateprewitt?

And, if you are: do you want my test?

Yeah, I'm happy to throw something together if that'll help. Any test code would be greatly appreciated :)

Ok, for now let's close this. @nateprewitt, can you open an equivalent issue on the urllib3 repository? You can use this test code as the example (it should live in test_socketlevel.py in the urllib3 repo):
class TestStream(SocketDummyServerTestCase):
    def test_stream_none_unchunked_response_does_not_hang(self):
        done_event = Event()

        def socket_handler(listener):
            sock = listener.accept()[0]

            buf = b''
            while not buf.endswith(b'\r\n\r\n'):
                buf += sock.recv(65536)

            sock.send(
                b'HTTP/1.1 200 OK\r\n'
                b'Content-Length: 12\r\n'
                b'Content-type: text/plain\r\n'
                b'\r\n'
                b'hello, world'
            )
            done_event.wait(5)
            sock.close()

        self._start_server(socket_handler)
        pool = HTTPConnectionPool(self.host, self.port, retries=False)
        r = pool.request('GET', '/', timeout=1, preload_content=False)

        # Stream should read to the end.
        self.assertEqual([b'hello, world'], list(r.stream(None)))

        done_event.set()

Sounds good, will do.


Ragnarök support (<IP_ADDRESS>)

Hi,
Using your code for release <IP_ADDRESS>, I added support for Ragnarök DLC.
Also, because there is now (for AE) only one path for game data, now, only one database scan is needed : TQVault will load a bit faster.
Important note -> Please backup your files before testing. I haven't finished playing the DLC yet, so maybe there are some additional work to do I'm unaware of.
You can download the release here.

Thanks for the fixes. I only had the basic support added when I saw your PR. You covered some cases I didn't get to. I'll merge and create a release with the fixes.


Element.removeAttribute() sets the attribute to null rather than to undefined

Or alternatively, the different Element APIs treat null and undefined in inconsistent ways.
import { DOMParser } from "https://raw.githubusercontent.com/b-fuze/deno-dom/master/deno-dom-wasm.ts";

const document = new DOMParser().parseFromString(
  "",
  "text/html"
);

const html = document!.documentElement!;
html.removeAttribute("attribute");

console.log(html.hasAttribute("attribute"));    // true
console.log(html.getAttribute("attribute"));    // null
console.log(html.attributes.attribute);         // null

console.log(html.hasAttribute("nonexistent"));  // false
console.log(html.getAttribute("nonexistent"));  // null
console.log(html.attributes.nonexistent);       // undefined

//
console.log(html.outerHTML);

This would require proper implementation of Attr nodes and .attributes huh... Some quirky things those are...

Couldn't removeAttribute simply be changed to do delete this.attributes[name]?

Ye, you can do that. But I mean, wouldn't the proper thing to do would be to also implement and use Attr nodes too?

Since there seems to be a lot to keep track of in terms of liveness about NamedNodeMap, especially around how it interacts with the liveness of DOMTokenNodes, I'd prioritize having something that works now over implementing a more complicated API that seems little-used.

I personally don't care about .attributes at all, kinda wish it was deprecated but alas

@b-fuze What is your preferred way to enumerate the attributes of an element?

I personally don't care about .attributes at all, kinda wish it was deprecated but alas

What is your preferred way to enumerate the attributes of an element?

If I've ever needed to I'd use something like Object.keys(elm.attributes), but I don't really need to do that as I usually know exactly what attribute I want or just use the JS DOM API.

Translating XML to JSON is an really good use case for a DOM parser, and attribute enumeration is essential to that case.

Ah ye, definitely. Deno DOM doesn't support XML atm (though you could try using the HTML parser... If you're okay with that anyway). Also, turns out Object.keys doesn't work on .attributes (another reasonto dislike it)
I plan to implement an XML parser at some point, but I rarely encounter it in my work

Also, turns out Object.keys doesn't work on .attributes (another reason to dislike it)

You can just use the spread operator:
const entries = [...elm.attributes].map(a => [a.name, a.value]);
const obj = Object.fromEntries(entries);

Yeah I figured it's through some iterator... But that goes back to why I think it's so backwards considering that it's functionally a dictionary structure that doesn't act like a dictionary (assuming a dictionary should allow you to enumerate its keys directly)

Then again this isn't the only weird thing in the DOM

😂 True.

But that goes back to why I think it's so backwards considering that it's functionally a dictionary structure that doesn't act like a dictionary (assuming a dictionary should allow you to enumerate its keys directly)

Ah—I can see how this might feel unreasonable if you are expecting a dictionary. (But that's not the case since Element.attributes is a NamedNodeMap of Attrs, which is much richer than a dictionary... which I'm sure you know since you are the primary author of this module.) You could get a dictionary by converting that code above into a function:
function attributeDictionary (element: Element): Record<string, string> {
  const entries = [...element.attributes].map(a => [a.name, a.value]) as [name: string, value: string][];
  return Object.fromEntries(entries);
}

Note: ☝ That's using Element from lib.dom.d.ts

While we can probably all agree that the DOM API is horrible in more ways than one and ideally we'd design a better API from the ground-up without the legacy baggage… This is probably not the best place to discuss that 😅

@0kku Agree. The goal of the project is to match the DOM spec as closely as possible, right?

@0kku Agree. The goal of the project is to match the DOM spec as closely as possible, right?

Yes. I too share @b-fuze's grievances, but our goal is to follow the spec despite its faults. That way DOM abstraction libs that make life easier can be used without compatibility issues, and people who just want to go vanilla don't have to relearn anything.

Hello, I can't even call the removeAttribute method, my Deno says it's undefined ? Thanks

Thanks for this really fast answer, actually, it's as simple as that :
import { DOMParser } from 'https://deno.land/x/deno_dom/deno-dom-wasm.ts';

const document = (new DOMParser()).parseFromString('

', 'text/html');

const divElement = document.querySelector('div');

divElement.removeAttribute('data-remove-this');
// -> error: Uncaught TypeError: divElement.removeAttribute is not a function

Thanks

@KaKi87 again, please create a new issue

I'm having the same issue and need to use a delete here:
https://github.com/lumeland/lume/blob/master/plugins/inline.js#L29
I want to remove the inline boolean attribute, but after call element.removeAttribute("inline"), the html output returns the attribute again .

Yeah, this is way overdue. I'll push a fix soon

Alright, should be fixed in the latest release now @oscarotero

Awesome, thanks for the quick fix!


Intuitive CLI based user interface

Not the final version I assure!

@CybrZone
Can you assign this to me? I'm working on it!
I'm trying to build it as a cli tool, +with interactive user input, +choise options,
+cool animations, loading screen
+beautifully arranged results (requests response , hits etc)
and many more....
I think this would make it much more user friendly.
And specifically pose it as a "CLI tool" rather than just a python script
I have designed a banner which would appear/remain during the program runs on basis of suggestions by #22 @B1GBOOM420

has anyone used textual/textualize before? the library looks interesting and might fit well for this project: https://textual.textualize.io/

has anyone used textual/textualize before? the library looks interesting and might fit well for this project: https://textual.textualize.io/

As per the docs this library is used to make sophisticated TUIs application, for gui application within the terminal.
I'm currently using beaupy, it's much more light weight than textualize and serves this purpose well!

would you be able to make it so that beaupy can show the status of all running threads? eg. if one of the threads is running on a proxy and starts getting error responses from the target url? perhaps it could also allow the user to start another thread on demand. I've added a proxy function to PR #14 that shows how this could work

would you be able to make it so that beaupy can show the status of all running threads? eg. if one of the threads is running on a proxy and starts getting error responses from the target url? perhaps it could also allow the user to start another thread on demand. I've added a proxy function to PR #14 that shows how this could work

@BRICKRAID
As much I understand from the docs, beupy doesn't have any inbuilt option for this, I will have to implement this separately:
Thread Status Tracking: We'll use a shared dictionary to track the status of each thread.
Dynamic Thread Management: We'll provide options to start new threads or terminate existing ones based on user input.
Error Handling: We'll log any errors encountered by threads. And they were can display it to the user concurrently.
I'm not sure about the idea, I would need to try it with your code!
Should I try ?

sounds interesting, you can try my code if you'd like :) you'd need to change it to support the shared dictionary though

sounds interesting, you can try my code if you'd like :) you'd need to change it to support the shared dictionary though

Okay I will update you!

@CybrZone
CLI interface is almost ready
I have created a script where it fetches the current top 5 contributors using GitHub API and saves as .json and uses it.
I will soon ask for merge request, I hope you review it and merge it
I request all others working on this project implement features in the form of functions rather than top to bottom, this will help in integrating it with the interface I'm working on.
@BRICKRAID
@kaycmendes @mela-nen @lp-pinkk

Does it have proxy support yet?

@Sushi-Mampfer Made it in #27

I'm adding it

ya at this point - the more work/implements we do - the more work we are making in the future until something gets merged - that being said, we have all made some cool stuff lol
@asheshjyotii - that looks awesome!!! I like the updating contributors section, that is super dope


fix (Flow) UI buttons and volume slider

The volume slider is no longer visually broken in the UI, the functionality of it is still weird, but at least it looks good.

Please undo all formatting changes and commit only necessary diffs.


Feat: support sglang backend

Support sglang backend
Ref https://github.com/InftyAI/llmaz/issues/39

/kind feature

/hold

/hold cancel

Can you provide an example looks like https://github.com/InftyAI/llmaz/tree/main/docs/examples? If you have no environment, I can help you with that as a follow up.

Sure, I will manage to add some docs later

Update .golangci.yaml to prevent CI issues
Update README.md and keep doc dir flat by adding backend prefix for playground to distinguish different backend

BTW I think we could allow user to override backend to their own image registry by adding DefaultImage method

Update .golangci.yaml to prevent CI issues

Thanks @vicoooo26 when reviewing this part, it seems strange to me because I already changed that configurations, but the diff code is still the rotten part, see https://github.com/InftyAI/llmaz/blob/f2085013a435d694a31f1c6a88f679f0f3ad1d02/.golangci.yaml#L20-L23
Any way would not block this PR, can refactor that part later.

BTW I think we could allow user to override backend to their own image registry by adding DefaultImage method

If you mean providing entrypoint for users to set the image in playground, yes, we can. My original thought is Playground should be as simple as we can. For people who has little knowledge about container, but they know vllm, sglang, tgi very much, they can breezily deploy a model with Playground. However for advanced deployment, they can deploy the Service directly.
At a hight level, Playground is for quick start and easy of use. Service is for extensible, so you can deploy any model with any inference engine as you want. For both deployment approaches, we'll provide scaling, metrics, fungibility support for  them.
This is the general design about llmaz, who knows, we may change in the future, but this requires feedback from users.

Update .golangci.yaml to prevent CI issues

Thanks @vicoooo26 when reviewing this part, it seems weird to me because I already changed that configurations, but the diff code is still the rotten part, see
https://github.com/InftyAI/llmaz/blob/f2085013a435d694a31f1c6a88f679f0f3ad1d02/.golangci.yaml#L20-L23
Any way would not block this PR, can refactor that part later.

BTW I think we could allow user to override backend to their own image registry by adding DefaultImage method

If you mean providing entrypoint for users to set the image in playground, yes, we can. My original thought is Playground should be as simple as we can. For people who has little knowledge about container, but they know vllm, sglang, tgi very much, they can breezily deploy a model with Playground. However for advanced deployment, they can deploy the Service directly.
At a hight level, Playground is for quick start and easy of use. Service is for extensible, so you can deploy any model with any inference engine as you want. For both deployment approaches, we'll provide scaling, metrics, fungibility support for them.
This is the general design about llmaz, who knows, we may change in the future, but this requires feedback from users.

After checking the Github CI action execution history, I found that the previous CI issues happened before PR https://github.com/InftyAI/llmaz/pull/64.
Since both you and I added this rule, it's enough to keep just one.

/lgtm
/approve


Fails on files using spieman.cls

I was able to get showyourwork running locally with make on a .tex file using the "spieman" class (required for the SPIE Journals) by removing the line
\RequirePackage[hidelinks]{hyperref}
and adding in the line
\RequirePackage{graphicx}
in sywxml.sty and showyourwork.sty. It seems like this is just a difference in which packages are preloaded in the .cls between SPIE and AASTeX, so it could be fixed if the scripts generating the .sty files could check for that. However, since they're remade with each run, I'm not able to change it manually.

@aditya-sengupta This was fixed in version v0.1.23 (see here).
Which version of showyourwork do you currently have? If it's >= v0.1.16, you can just do
make update

at the root of your repo to bring it up to date. If you have an earlier version, you need to do
cd showyourwork
git fetch --all --tags
git checkout v0.1.30

to upgrade to the latest version (currently v0.1.30). Let me know if this works.

make now works locally, but is failing in the github action: https://pastebin.com/xbkwMfqW

Hmm, that's a very uninformative error message. Can you make sure you have
verbose: true

in your showyourwork.yml? Also, try resetting the remote build cache by bumping article-cache-number in .github/workflows/showyourwork.yml:
      - name: Build the article PDF
        id: build
        uses: ./showyourwork/showyourwork-action
        with:
          article-cache-number: 1
        env:
          ZENODO_TOKEN: ${{ secrets.ZENODO_TOKEN }}

Let me know what happens. In the meantime, I'm working on a feature to upload an artifact with complete build logs in case an action fails. I'll keep you posted.

The error this time is a lot more straightforward, it can't find snakemake: https://pastebin.com/mAfvMpk3

Very strange. One more thing: bump the conda cache as well:
      - name: Build the article PDF
        id: build
        uses: ./showyourwork/showyourwork-action
        with:
          article-cache-number: 1
          conda-cache-number: 1
        env:
          ZENODO_TOKEN: ${{ secrets.ZENODO_TOKEN }}

Persists, but with a longer error message again: https://pastebin.com/mer7dGKx
Github also highlighted this line: Error: exec: sysctl: cannot stat /proc/sys/machdep/cpu/brand_string: No such file or directory

OK, sorry about this. I don't have time to implement the feature for uploading error logs today, which will help a lot in debugging this. Hopefully I can get around to it tomorrow. Alternatively, you could temporarily add me to your repo (which I believe is private?) so I can poke around and try to locate the issue. No pressure though.

Alright, no problem, I can locally build till then. Thanks for all the help!

@aditya-sengupta Please update your local installation:
make update

and commit + push to GitHub. The build should still fail, but it should now produce an artifact, which you can download in the Actions tab.
This artifact contains all files in the / directory plus all files directly under the src/ directory that are smaller than 5KB, plus a directory listing of everything in the repository. Download it, cd into the src/ directory, and try to compile the .showyourwork-ms.tex file (using either tectonic or pdflatex). What error message do you get?

I did this, and also moved spieman.cls, showyourwork.sty, and my figures + static subfolders over from my main repo (otherwise the error was just that it couldn't find any of these things). pdflatex then ran into two errors that it doesn't run into when running in the repo, in both cases I tried H and then  to run anyway: https://pastebin.com/PdkSc9vB
It then compiled, but the pdf's first page just said ((* for key, value in labels.items() *)) ((* endfor *)), and in the right margin of the second page (the first page of the actual paper), this showed up:

Oh: my bad. Please untar the file again, cd into the src/ directory, and try to compile .showyourwork-xml-ms.tex (which shouldn't need any of the things you just copied over).

As before, it needed spieman.cls, and when I added it, it ran perfectly (apart from images/references of course)

Can you confirm that spieman.cls is in fact tracked by git? It should have showed up inside the tarball. Does the file exist in the src directory on the GitHub remote? Note that you may have to git add -f (force add) it if not.

Added and pushed, and now .showyourwork-xml-ms.tex runs perfectly but the remote action still fails

Can you show me the remote build log?

Never mind, I fixed it! My figure scripts got git rm'd by mistake so I put them back in and now it's building.
Thanks so much for all the help!


After install, neo4j does not appear data source option

After I install this plug in, I'm unable to add my remote or local neo4j server.
That is to say, clicking "Data Datasource" gives me 14 options for data source type, and Neo4j isn't one of them.
Does neo4j go by a different name as a data source?
Is there some other method that I should be using to specify my data source in Datagrip?
I'm running this version 2.5.0 of the plug-in.
I'm running:
DataGrip 2017.1.1
Build #DB-171.4073.34, built on April 6, 2017
JRE: 1.8.0_112-release-736-b16 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.3

User error. I didn't realize you set up Graph DBs by going to


admin kubeconfig (10) should be created before control plane (08)?

I think the admin user should be created before the control plane...
My
kubectl get componentstatuses
from 08 won't work without a config..
Granted I'm doing this a bit differently as I'm porting your docs to ansible but I think this is correct.

kubectl get componentstatuses is meant to be run on each of the controller nodes if I understand correctly. That's how I've been running it anyway.

Yes, as mentioned in the docs you should run those commands on the controller nodes as a quick smoke test.


weird error when compiling (<type 'exceptions.KeyError'>) 'included'

When I try to compile my patch it get this error:

@travisfoo can you attach the patch you're compiling with?

Shapesynth.zip

I'm trying to find it in your patch, but could it be somewhere there is an [outlet/~] that has two difference types of connections to it? i.e a signal and control connection?

I'm pretty sure there's not. I just ran through the patch to check.

@travisfoo Hi Travis, FYI I'm working on this bug now. I can see the internal error that heavy is having and I'm working to resolve it. I'll let you know ASAP when I have something that you can act on. The issue is definitely on our end though.

Thanks! Keep up the good work! :D

Any updates on this issue? I tried compiling the same patch and now get this error: "1) Error: __inlet {index:0 type:-~> name:} has multiple incident connections of differing type. The outlet type cannot be explicitly resolved."

Hi @travisfoo. That error happens when you have a signal and a control connection to the same inlet. Heavy generally doesn't support that case i.e. it doesn't know how if it should run that object in the signal or control domain.
I took a look at the patch earlier in this thread, but couldn't find anything obviously wrong. I may have missed something though.

Ok, thanks. So the internal error has been fixed?

I'm not really sure what the previous error was. The thing to do now if check the patch for some object that has both signal and control ingoing connections.


add some usage docs

@pavelzw do you have a good example on Dockerfile + shell-hook entry point? Might be great to add it to the docs! :)

We have one in the pixi repo iirc


feat: Add span adjuster that moves some OTel Resource attributes to Span.Process

Which problem is this PR solving?

Resolves #4534

Description of the changes

Apply OTel resource discovery(detectors) since OTel has plenty of detectors under the hood. Link<EMAIL_ADDRESS>Add OTel tags to process tags adjuster and we need to adjust only otel.libray.name and otel.library.version. Found here https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/adf5bb501bc65d24ae48088bde37f3c0b13353d0/pkg/translator/jaeger/traces_to_jaegerproto.go#L172
Bump all OTel semconv to v1.21.0 since telemetrySDK detector use v1.21.0 semconv.

How was this change tested?

Added a new unit test for the adjuster
Tested manual in local by running set OTEL_EXPORTER_OTLP_ENDPOINT http://localhost:4318; go run main.go all --otel-exporter=otlp and make run-all-in-one, and ordered a ride in HotROD app.

Checklist

[x] I have read https://github.com/jaegertracing/jaeger/blob/master/CONTRIBUTING_GUIDELINES.md
[x] I have signed all commits
[x] I have added unit tests for the new functionality
[x] I have run lint and test steps successfully

for jaeger: make lint test
for jaeger-ui: yarn lint and yarn test

is this change breaking HotROD somehow? The integration test failed several times

is this change breaking HotROD somehow? The integration test failed several times

Looking into it.. it works normally in my local

Okay, so I've ran the example/hotrod-integration-test.sh locally and logged the example-hotrod container, turns out that the resource.WithHostID() caused the error since the HotROD docker container was built using distroless base image but the resourrce.WithHostID() trying to read from /etc/machine-id or /var/lib/dbus/machine-id file.
2023-10-15T19:01:09.599Z	INFO	cobra@v1.7.0/command.go:970	Using Prometheus as metrics backend
2023-10-15T19:01:09.599Z	INFO	cobra@v1.7.0/command.go:940	Starting all services
2023-10-15T19:01:09.600Z	FATAL	tracing/init.go:73	resource creation failed	{"service": "customer", "error": "1 errors occurred detecting resource:\n\t* host id not found in: /etc/machine-id or /var/lib/dbus/machine-id"}
github.com/jaegertracing/jaeger/examples/hotrod/pkg/tracing.InitOTEL
	github.com/jaegertracing/jaeger/examples/hotrod/pkg/tracing/init.go:73
github.com/jaegertracing/jaeger/examples/hotrod/services/customer.NewServer
	github.com/jaegertracing/jaeger/examples/hotrod/services/customer/server.go:44
github.com/jaegertracing/jaeger/examples/hotrod/cmd.glob..func2
	github.com/jaegertracing/jaeger/examples/hotrod/cmd/customer.go:37

So, for this example, I'll just remove the resource.HostID() detector which the traces will not have host.id process tags.

Actually, I haven't added the OTel builtin detectors to jaeger components, should I add them? If yes, can you tell me which detector is needed?

ran the example/hotrod-integration-test.sh locally and logged the example-hotrod container

Yeah, this should've been automated -- https://github.com/jaegertracing/jaeger/pull/4845

Actually, I haven't added the OTel builtin detectors to jaeger components, should I add them? If yes, can you tell me which detector is needed?

Same ones are fine, but let's do it in a separate PR


network-multicast 0.2

network-multicast-0.2.0 (Marco Zocca @ocramz) is out of bounds for:

[ ] distributed-process-simplelocalnet-<IP_ADDRESS> (>=0.1.1 && < 0.2). Facundo Domínguez<EMAIL_ADDRESS>@facundominguez. @haskell-distributed

@facundominguez you can just bump the upper bound, there are no changes from the previous network-multicast. Sorry for this


help with troubleshooting the error

I can't figure out how to fix this error... Please help.
Thank you!

Hi, this error looks like your BAM file doesn't match your FASTA file entirely. The contig NC_011593.1 seems to not be found in your BAM or FASTA. Make sure that the FASTA you've mapped to for the BAM is the exact same fasta you are passing to MicrobeMod.


Add Shen grammar to vendor/README.md

Forgot this in PR from yesterday. Adding for completeness.
Sorry for the double PR.

You can push more commits to an existing pull request.  (You can even rebase and totally rewrite it.)

Oh, sorry.  That was already merged.


37a7fd6cc8ddc9eb303a2e66e27f9d3c21de7cfb breaks detection of voxelgarden used by moretrees

The above mentioned commit just overrides the detected gameid with minetest when a mod named default exists.
Voxelgarden is not based on MTG, but compatible on a technical level, having a default mod and providing most of MTG's apis.
The reason moretrees wants to detect Voxelgarden is that it has different (higher level) gameplay mechanics, affecting out of the box experience of moretrees (see https://github.com/mt-mods/moretrees/pull/38 and https://github.com/mt-mods/moretrees/pull/40 for details).
OTOH it is probably useful for xcompat to detect Voxelgarden as a minetest game derivative because of its low level compatibility usually not requiring mods to do anything special.
I propose to enhance xcompat to provide the actual game id (if provided by new enough minetest) in addition to the detected compatibility game id.

i think its better for moretrees to just check itself, and only support that feature for minetest (whatever version added game detection).

type(minetest.get_game_info) == "function" and minetest.get_game_info().id~="voxelgarden" or true to replace https://github.com/mt-mods/moretrees/blob/master/settings.lua#L53 assuming the logic passes, didnt check one line fix and also makes a lot more sense than the pr (in my opinion) which makes a mess of things


Icon pack proposal: Foundation Icons

Name: Foundation Icons
License: MIT
NPM package: @icon/foundation-icons
Website (if any): https://zurb.com/playground/foundation-icon-fonts-3

This has been published as v9.5.0! 🎉


Activity LED is always on

Hi, I bought the enviro 1 year ago and I had to stop using it because I had a lot of issues.
Right now I tried again and installed the last main version.
I'm using the battery and the activity LED is always on. I think that it is not normal.
Here are the logs:
2024-01-24 19:40:04 [info     / 121kB] > performing startup
2024-01-24 19:40:04 [debug    / 119kB]   - running Enviro 0.0.10, MicroPython 9dfabcd-dirty on 2022-08-10
2024-01-24 19:40:04 [info     / 113kB]   - wake reason: rtc_alarm
2024-01-24 19:40:04 [debug    / 112kB]   - turn on activity led
2024-01-24 19:40:04 [debug    / 107kB] > 98 blocks free out of 212
2024-01-24 19:40:04 [debug    / 105kB] > taking new reading
2024-01-24 19:40:05 [info     / 100kB]   - seconds since last reading: 1200
2024-01-24 19:40:05 [debug    /  95kB] > caching reading for upload
2024-01-24 19:40:05 [info     /  90kB] > 2 cache file(s) not being uploaded. Waiting until there are 10 file(s)
2024-01-24 19:40:05 [info     /  88kB] > going to sleep
2024-01-24 19:40:05 [debug    / 121kB]   - clearing and disabling previous alarm
2024-01-24 19:40:05 [info     / 119kB]   - setting alarm to wake at 20:00pm
2024-01-24 19:40:05 [info     / 117kB]   - shutting down
2024-01-24 22:57:32 [info     / 121kB] > performing startup
2024-01-24 22:57:32 [debug    / 119kB]   - running Enviro 0.0.10, MicroPython 9dfabcd-dirty on 2022-08-10

So it seems that got stuck at 19:40 or 20:00 and it never ran again until I disconnected and connected to the USB port.
Thanks for your help :)

I bought it 1 year ago and I had to stop trying to use it. Now, after a year I have the same problem. It gets hanged after some hours... So my specific board is useless :(

@Pedro-vk Many of the issues I had with the board crashing inexplicably and similar to your issue above were due to some issues in the wireless code. These were fixed in #199 which if you scroll to the bottom of the comments, now has a link to the zip file of the code or uf2 to copy over to make it easy to try that ahead of it hopefully going into main release.
Give that code a try and see if it makes things more stable for you.

Thank you! :) I'll check it during this week

I used the code of this branch for a week and I have the same issues... Sometimes the LED is always on, sometimes the red warning without a log...
And it drained the batteries in just 1 week :(

So are you saying that sometimes it crashes with the white LED on solid and sometimes it crashes with the red LED on solid? And in either case there is no useful log output? Could you post the logs you have and what state you found the board in when that log file was written just to be 100% clear?
All my issues that were similar were cleared up by the wifi improvements, but you could also try the code in PR #144 as this was developed to try and handle crashes. I don't think it did much for my specific issues, but it's worth a try.

I have observed a similar behavior to what Pedro described, though let me add some more details:
My Indoor arrived on April 25th. I flashed it with v0.2.0 immediately and integrated with the rest of my setup to consume its data (HASS, Grafana, etc). The device would freeze seemingly randomly, with the white LED left on at full brightness and no new attempts to read or upload anything. It would stay that way until I manually intervened. This would happen repetitively between a few hours and a couple of days after the last reboot.
This happened both with an MQTT broker as well as InfluxDB. The 2x AmazonBasics AAA batteries that came with it died exactly 7 days later, on May 2nd.
I confirmed that I was running v0.2.0, by checking the code as well as the MicroPython version. During that first week I tried re-flashing it by using the "flash_nuke.u2f" provided but the issue persisted.
Right after the batteries died, I switched to a generic USB charger plugged right on the wall. No other changes to firmware or to the upload target. It never froze again. I have increased the frequency of the readings from 15min to 10min, which in theory should increase the likelihood of triggering that behavior. But nope, still running now 10 days later.
I no longer have the logs of those freezings, though I remember them being unspecific. Something about going to sleep and subsequent logs having an incorrect date (1900), most likely created during the new boot.
I can put it back on batteries and provide the logs here if that helps.

I have the opposite problem of @LMieldazis. With AAA batteries  I have no problem with Lipo Amigo pro, Adafruit solar panel and a LiIon battery after a day the enviro freeze and upload no data...


Is there any kind of documentation for this library?

No, and it is no longer actively maintained.


Some icon requests

HI, I have collected some websites that use 2FA but no icon is available in Tofu. Here are their issuers and sites:

Rockstar+Games: https://www.rockstargames.com
npm: https://www.npmjs.com
Chaturbate: https://chaturbate.com
Namesilo: https://www.namesilo.com
UptimeRobot: https://uptimerobot.com
Proxmox Web UI: https://www.proxmox.com

I've added the icons in the latest commit here: https://github.com/calleluks/Tofu/pull/92
Now we just need Calle to merge them :)


Add basic multi node test

This PR is open to showcase the test case were with more than 1 node, no checkpoint is justified. To run it
cd packages/lodestar
yarn test:e2e

To edit the combinations of nodes to achieve justification edit this line
https://github.com/ChainSafe/lodestar/blob/937da487136327a081beb6e35b36c94ff0c27b66/packages/lodestar/test/e2e/noEth1Sim.test.ts#L20

Also, when trying to clean up the nodes and validators I'm not able to do it without the afterEach hook failing with
2020-07-22 16:34:09  []                error: uncaughtException: Pubsub has not started
Error: Pubsub has not started
    at LodestarGossipsub.unsubscribe (/home/lion/Code/eth2.0/lodestar/node_modules/libp2p-gossipsub/src/pubsub.js:335:19)
    at /home/lion/Code/eth2.0/lodestar/packages/lodestar/src/network/gossip/gossip.ts:88:29
    at Array.forEach (<anonymous>)
    at Gossip.unsubscribe (/home/lion/Code/eth2.0/lodestar/packages/lodestar/src/network/gossip/gossip.ts:87:37)
    at Gossip.unsubscribeFromAttestationSubnet (/home/lion/Code/eth2.0/lodestar/packages/lodestar/src/network/gossip/gossip.ts:83:14)
    at Timeout.AttestationCollector.unsubscribeSubnet [as _onTimeout] (/home/lion/Code/eth2.0/lodestar/packages/lodestar/src/sync/utils/attestation-collector.ts:22:33)
    at listOnTimeout (internal/timers.js:533:17)
    at processTimers (internal/timers.js:475:7)

or
2020-07-22 18:42:27  [VALIDATOR 0-7]   error: Failed to produce attestation slot=24, committee=0,
                        error=Cannot read property 'state' of null

It seams that .stop() resolves before everything is cleaned up too, so there are still logs being printed from the previous node set

@wemeetagain You mentioned you know what's causing Pubsub has not started ? ^^
@dapplion I don't think you need to run metrics at all in tests? I suspect metrics are initialized twice on same port or something

@mpetrunic How can I disable the metrics programmatically?

RE metrics error
Pass in { metrics: { enabled: false } } as options to the BeaconNode to disable the metrics server.
But it doesn't look like this is a problem with the metrics server, rather a problem with the metrics themselves (which are not disable-able).
We're using prom-client to collect default metrics from the nodejs instance. Every metric is registered with a Registry. (I guess, judging from the error, that a metric can only be registered once).
Is the node being started multiple times?

@wemeetagain Yep, most likely the nodes where being re-started. I've scoped the node instances to the it instance and now the error doesn't happen. :+1:

When running > 1 node I see that almost all calls to aggregate and proof fail with
2020-07-22 18:47:58  [VALIDATOR 0-1]   error: Failed to produce aggregate and proof Error: No matching attestations found for attestationData
Error: No matching attestations found for attestationData
    at ValidatorApi.produceAggregateAndProof (/home/lion/Code/eth2.0/lodestar/packages/lodestar/src/api/impl/validator/validator.ts:112:19)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:94:5)
    at Timeout._onTimeout (/home/lion/Code/eth2.0/lodestar/packages/lodestar-validator/src/services/attestation.ts:192:27)

May this cause the aggregate attention to not be submitted at all and never contribute to justification?

This would indicate that validator tried to aggregate on different node from where he published attestation. That said , other nice should have received attestation via gossip.
But more likely is there is some bug with fetching or supporting requires attestations

file conflict

At least locally, it still doesn't justify any checkpoint for up to 10 minutes.

The CI e2e test logs are spammed with a ton of errors, they are barely readable. This test should not be merged until the underlying issues are resolved or it would add 20 minutes of runtime + a ton of unrelated data to other fronts of work.

I'll add below relevant errors from the last e2e test run:

The error that actually stopped the tests is not a timeout but MaxBufferError:
2020-07-27T18:24:20.9046863Z lerna ERR! MaxBufferError: stdout maxBuffer exceeded
2020-07-27T18:24:20.9048325Z lerna ERR!     at PassThrough.<anonymous> (/home/runner/work/lodestar/lodestar/node_modules/get-stream/index.js:41:19)
2020-07-27T18:24:20.9050475Z lerna ERR!     at PassThrough.emit (events.js:327:22)
2020-07-27T18:24:20.9051970Z lerna ERR!     at addChunk (_stream_readable.js:295:12)
2020-07-27T18:24:20.9053568Z lerna ERR!     at readableAddChunk (_stream_readable.js:267:11)
2020-07-27T18:24:20.9054975Z lerna ERR!     at PassThrough.Readable.push (_stream_readable.js:212:10)
2020-07-27T18:24:20.9056520Z lerna ERR!     at PassThrough.Transform.push (_stream_transform.js:152:32)
2020-07-27T18:24:20.9057895Z lerna ERR!     at PassThrough.afterTransform (_stream_transform.js:96:10)
2020-07-27T18:24:20.9059762Z lerna ERR!     at PassThrough._transform (_stream_passthrough.js:46:3)
2020-07-27T18:24:20.9061135Z lerna ERR!     at PassThrough.Transform._read (_stream_transform.js:191:10)
2020-07-27T18:24:20.9093540Z lerna WARN complete Waiting for 1 child process to exit. CTRL-C to exit immediately.
2020-07-27T18:24:20.9097722Z lerna ERR! lerna stdout maxBuffer exceeded
2020-07-27T18:24:20.9157820Z ##[error]Process completed with exit code 1.

Had this ever happened before? I had no idea lerna had a log limit and didn't just stream to process

There seems to be a significant difference in epoch timing between validators and nodes, with this error showing up for almost all validators
2020-07-27T18:24:20.8898717Z @chainsafe/lodestar: 2020-07-27 18:24:20  [VALIDATOR 3-0]   error: Failed to obtain proposer duties Error: Cannot get duties for epoch more than two ahead: 205 <= 162
2020-07-27T18:24:20.8899541Z @chainsafe/lodestar: Error: Cannot get duties for epoch more than two ahead: 205 <= 162
2020-07-27T18:24:20.8900240Z @chainsafe/lodestar:     at Object.lte (/home/runner/work/lodestar/lodestar/packages/lodestar-utils/src/assert.ts:31:13)
2020-07-27T18:24:20.8900663Z @chainsafe/lodestar:     at ValidatorApi.getProposerDuties (/home/runner/work/lodestar/lodestar/packages/lodestar/src/api/impl/validator/validator.ts:63:33)
2020-07-27T18:24:20.8901583Z @chainsafe/lodestar:     at runMicrotasks (<anonymous>)
2020-07-27T18:24:20.8901974Z @chainsafe/lodestar:     at runNextTicks (internal/process/task_queues.js:62:5)
2020-07-27T18:24:20.8902324Z @chainsafe/lodestar:     at listOnTimeout (internal/timers.js:518:9)
2020-07-27T18:24:20.8903252Z @chainsafe/lodestar:     at processTimers (internal/timers.js:492:7)
2020-07-27T18:24:20.8903943Z @chainsafe/lodestar:     at /home/runner/work/lodestar/lodestar/packages/lodestar-validator/src/services/block.ts:64:24

The same error happen for multiple validators between 18:24:16 and 18:24:18, where each validator is requesting duties for completely different epochs:

VALIDATOR 3-0: 206
VALIDATOR 3-2: 195
VALIDATOR 1-5: 192
VALIDATOR 1-7: 223

Many attempts to destructure an nullish variable
2020-07-27T18:24:08.7911426Z @chainsafe/lodestar: 2020-07-27 18:24:08  [VALIDATOR 0-1]   error: Failed to obtain attester duty for epoch 192 Error: Cannot destructure property 'epochCtx' of '(intermediate value)' as it is null.
2020-07-27T18:24:08.7912087Z @chainsafe/lodestar: TypeError: Cannot destructure property 'epochCtx' of '(intermediate value)' as it is null.
2020-07-27T18:24:08.7912469Z @chainsafe/lodestar:     at ValidatorApi.getAttesterDuties (/home/runner/work/lodestar/lodestar/packages/lodestar/src/api/impl/validator/validator.ts:76:17)
2020-07-27T18:24:08.7912813Z @chainsafe/lodestar:     at runMicrotasks (<anonymous>)
2020-07-27T18:24:08.7913124Z @chainsafe/lodestar:     at runNextTicks (internal/process/task_queues.js:62:5)
2020-07-27T18:24:08.7913441Z @chainsafe/lodestar:     at listOnTimeout (internal/timers.js:518:9)
2020-07-27T18:24:08.7913757Z @chainsafe/lodestar:     at processTimers (internal/timers.js:492:7)
2020-07-27T18:24:08.7914389Z @chainsafe/lodestar:     at /home/runner/work/lodestar/lodestar/packages/lodestar-validator/src/services/attestation.ts:74:24

2020-07-27T18:24:08.7906784Z @chainsafe/lodestar: 2020-07-27 18:24:08  [VALIDATOR 0-1]   error: Failed to obtain proposer duties Error: Cannot destructure property 'state' of '(intermediate value)' as it is null.
2020-07-27T18:24:08.7907822Z @chainsafe/lodestar: TypeError: Cannot destructure property 'state' of '(intermediate value)' as it is null.
2020-07-27T18:24:08.7908576Z @chainsafe/lodestar:     at ValidatorApi.getProposerDuties (/home/runner/work/lodestar/lodestar/packages/lodestar/src/api/impl/validator/validator.ts:61:17)
2020-07-27T18:24:08.7909035Z @chainsafe/lodestar:     at runMicrotasks (<anonymous>)
2020-07-27T18:24:08.7909351Z @chainsafe/lodestar:     at runNextTicks (internal/process/task_queues.js:62:5)
2020-07-27T18:24:08.7909677Z @chainsafe/lodestar:     at listOnTimeout (internal/timers.js:518:9)
2020-07-27T18:24:08.7909991Z @chainsafe/lodestar:     at processTimers (internal/timers.js:492:7)
2020-07-27T18:24:08.7910638Z @chainsafe/lodestar:     at /home/runner/work/lodestar/lodestar/packages/lodestar-validator/src/services/block.ts:64:24

Others:
2020-07-27T17:26:41.4778288Z @chainsafe/lodestar: 2020-07-27 17:26:41  [VALIDATOR 1-5]   error: Failed to subscribe to committee subnet Error: Cannot collect attestations before regular sync
2020-07-27T17:26:41.4778883Z @chainsafe/lodestar: Error: Cannot collect attestations before regular sync
2020-07-27T17:26:41.4779295Z @chainsafe/lodestar:     at BeaconSync.collectAttestations (/home/runner/work/lodestar/lodestar/packages/lodestar/src/sync/sync.ts:97:19)
2020-07-27T17:26:41.4779705Z @chainsafe/lodestar:     at ValidatorApi.subscribeCommitteeSubnet (/home/runner/work/lodestar/lodestar/packages/lodestar/src/api/impl/validator/validator.ts:147:25)
2020-07-27T17:26:41.4780080Z @chainsafe/lodestar:     at runMicrotasks (<anonymous>)
2020-07-27T17:26:41.4780434Z @chainsafe/lodestar:     at runNextTicks (internal/process/task_queues.js:62:5)
2020-07-27T17:26:41.4780791Z @chainsafe/lodestar:     at listOnTimeout (internal/timers.js:518:9)
2020-07-27T17:26:41.4781144Z @chainsafe/lodestar:     at processTimers (internal/timers.js:492:7)
2020-07-27T17:26:41.4781809Z @chainsafe/lodestar:     at /home/runner/work/lodestar/lodestar/packages/lodestar-validator/src/services/attestation.ts:99:11

re: validators being on different epochs, my immediate thought is that we're probably DOSing ourselves in host of ways. The CPU gets pushed to 100%, and some nodes don't get updated properly in time, likely requests get responded to after many seconds, etc, etc. I'd like to try again once #1233 and #1235 get landed, which will help alleviate a few of the slow processing codepaths.
Though, even after those PRs land, there's still one big bottleneck of creating a slotSignature and subscribing to a subnet, which take 2+seconds for a single aggregator, and happen simultaneously for all aggregators. If we're running that at the same time on all 4 nodes, that alone will throw off the slot times.
If you'd like to test this theory, you can run the tests with the inspector turned on, and profile. Likely won't be pretty.

Ok, I've done some profiling, several wildly incorrect statements in my last comment:

It's taking my computer ~2s for all subscriptions to subnets, not for 1  (4 node test)
Also, looking at these flame charts, they're already mostly dominated by bls operations. The speedups of #1233 or #1235 will likely not do much.

Have you tried merging master? I remember some of those stuff should be fixed on master

Also, we should probably run each node in it's own thread. We cannot expect 4 nodes to run in single thread

Seems like 4 bns are too much for ci.
I think we should first move 3 nodes to separate threads (https://nodejs.org/docs/latest-v12.x/api/worker_threads.html) and have 4th one  in main thread where we can monitor justification event


adds the FlashPen and gives it to revs

About the PR

Add a pen that is also a flasher
Why / Balance

looks cool
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

https://github.com/space-wizards/space-station-14/assets/121047731/fc34d1d5-0851-41c9-9dbc-4c4fbf4f355b

Breaking changes

Changelog

Is there any indication given to headrevs that they have to flash someone with the pen?

Is there any indication given to headrevs that they have to flash someone with the pen?

considering it's the only item you spawn with-

make the box with flashpen like with all other pens

clown why dont you have crayon in your pda!?!?!??! valid!!!!!!!

clown why dont you have crayon in your pda!?!?!??! valid!!!!!!!

Flash crayons

I think it should be in the PDA replacing the regular pen.

not planned but good idea

the point of revs is that they dont have any special equipment and are supposed to make do with what they can make and steal

metasec will instagib everyone with it. maybe make it a syndicate purchase aswell so there's some misdirection

metasec will instagib everyone with it. maybe make it a syndicate purchase aswell so there's some misdirection

flashpen in the uplink is gonna be a weird purchase considering we already have flashlantern

metasec will instagib everyone with it. maybe make it a syndicate purchase aswell so there's some misdirection

It could become rare maints look, or maybe even relatively common maints loot. The flash-lantern is already maints loot so why not?

men in grey bundle with ancient jumpsuit, sunglasses, pen flash

can't be assistant exclusive though

i agree with joehammad that replacing the flash with a pen flash just makes it so that there's now items that can confirm the presence of revolutionaries on station, which isn't ideal. At least with flashes, even if it's fairly obvious, there's deniability since they are fairly common items with additional utility.

Updated the pen to have no flasher sound
This is less as easy to metagame as a flash in someone's inventory as it can be hidden in a pda
if stealth items aren't supposed to be able to confirm antagonist status then maybe all stealth items shouldn't be able to be used or have their toggles seen by a non antag

Updated the pen to have no flasher sound, helping assist with two ideas to curb metagaming revs #22072

(this exclusively helps head revs stay hidden and will not do anything for regular flashes)
This is less as easy to metagame than a flash in someone's inventory as it can be hidden in a pda
if stealth items aren't supposed to be able to confirm antagonist status then maybe all stealth items shouldn't be able to be used or have their toggles seen by a non antag as their purpose is to not be seen as an obvious antag tool

yeah only head revs being able to use the flash pens seems cool

i agree with joehammad that replacing the flash with a pen flash just makes it so that there's now items that can confirm the presence of revolutionaries on station, which isn't ideal. At least with flashes, even if it's fairly obvious, there's deniability since they are fairly common items with additional utility.

Theres basically no deniability unless youre sci. only security and sci need flashes and traitors cant buy them

Maybe when a non–antagonists attempts to use the revolutionary pen, they will convert themselves as they've been „looking” at the pen when inspecting. But it would then need some outside information about the flash, and since the sound is no more, I don't know what else can do.

merg, maybe make it rechargable later so you dont just get 5 non meta flashes, then instantly outed after that

no merg

I would like to see a more thought-out reasoning as to why revolutionaries need a stealthy version of a flash with a different sound.

I don't think that it's unreasonable that if someone sees you with a flash trying to flash people that they can assume that you're a Rev. considering how quickly Rev rounds can snowball, it's somewhat reasonable that they are weak at the beginning.
My prior concern with flash pens just being a Rev symbol for confirming the gamemode remains as, even if it is oftentimes very clear, finding a single flash on a person can't be used as a 100% certain signal that the gamemode is enabled.

simply knowing the gamemode is unavoidable (its too quiet etc) but having round ending information at the start of the round because someone was seen just moving their flash around id horrible. i had this happen a few days ago where someone said a passenger had a flash on common roundstart, even though he didnt flash anyone he got outed as headrev and it doesnt matter if he has a pen that can be tested, mindshield breaking on use is also hard proof of being a headrev. if youre in a scenario where someone can test your pen for things its already joever

It's been nearly a month I have no interest in explaining anything further


Build as described in Tutorial fails

I followed the instructions to install the toolchain, but was not able to build the example as described in the tutorial.
I installed the toolchain to /usr/share/gcc-arm-none-eabi-9-2020-q2-update/ as suggested.
I also tried using export TC_PATH="/usr/share/gcc-arm-none-eabi-9-2020-q2-update/bin/" to manually ensure that the right path is used.
But still the build fails with this message:
$ make
"shell Bash"
Building using GCC Toolchain
Using Linux GNU GCC Toolchain
PROJ_NAME = qf_helloworldsw
make -f makefiles/Makefile_Startup
make -f makefiles/Makefile_HAL
make[1]: warning: jobserver unavailable: using -j1.  Add '+' to parent make rule.
make[1]: Entering directory '/home/plam/Projects/quicklogic/qorc-sdk/qf_apps/qf_helloworldsw/GCC_Project'
Compile: /home/plam/Projects/quicklogic/qorc-sdk/qf_apps/qf_helloworldsw/GCC_Project/../../../HAL/startup/startup_EOSS3B_GCC.c
/bin/sh: /usr/bin /usr/share/gcc-arm-none-eabi-9-2020-q2-update/bin /usr/lib64/ccache /usr/share/man/man1.1.gz/arm-none-eabi-gcc: No such file or directory
make[1]: *** [makefiles/Makefile_Startup:16: /home/plam/Projects/quicklogic/qorc-sdk/qf_apps/qf_helloworldsw/GCC_Project/output/startup_EOSS3B_GCC.o] Error 127
make[1]: Leaving directory '/home/plam/Projects/quicklogic/qorc-sdk/qf_apps/qf_helloworldsw/GCC_Project'
make: *** [Makefile:40: Startup] Error 2

The file /usr/share/man/man1.1.gz/arm-none-eabi-gcc does indeed not exist, but the file /usr/share/man/man1/arm-none-eabi-gcc.1.gz does.
Thanks for any help.

Did you also add the toolchain into the path as below:
export PATH=/usr/share/gcc-arm-none-eabi-9-2020-q2-update/bin/:$PATH
If already done, could you check and post the output of
which arm-none-eabi-gcc so we can figure out the issue?

@coolbreeze413 pretty sure this is the same issue here: https://github.com/QuickLogic-Corp/qorc-sdk/issues/42
the FIND_TOOL_DIR command returns a list of available gcc-arm-none-eabi executables, and that list is sent directly as a command. So gcc-1 sees every other gcc in the list as a parameter,

@coolbreeze413 pretty sure this is the same issue here: https://github.com/QuickLogic-Corp/qorc-sdk/issues/42
the FIND_TOOL_DIR command returns a list of available gcc-arm-none-eabi executables, and that list is sent directly as a command. So gcc-1 sees every other gcc in the list as a parameter,

I just ran into this as well.
The error is quite confusing:
/bin/sh: 1: /usr/bin /home/tim/toolchains/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-gcc: not found

As @jublin also diagnosed, this is because TC_PATH can be set to a list.  In my case, it is /usr/bin /home/tim/toolchains/gcc-arm-none-eabi-9-2020-q2-update/bin.
This should be easy to fix by either just using just the first element in TC_PATH, or failing with a clear error if the number of words in TC_PATH is greater than one.

I just ran into this as well.
The error is quite confusing:
/bin/sh: 1: /usr/bin /home/tim/toolchains/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-gcc: not found

As @jublin also diagnosed, this is because TC_PATH can be set to a list.  In my case, it is /usr/bin /home/tim/toolchains/gcc-arm-none-eabi-9-2020-q2-update/bin.
This should be easy to fix by either just using just the first element in TC_PATH, or failing with a clear error if the number of words in TC_PATH is greater than one.

In arch inux, one can find arm-none-eabi-gcc compiler in community libraries. They will be available in /usr/bin directory:
$ which arm-none-eabi-gcc
/usr/bin/arm-none-eabi-gcc

Then, you can compile this tutorial specifying the TC_PATH variable:
$ make TC_PATH=/usr/bin

In arch inux, one can find arm-none-eabi-gcc compiler in community libraries. They will be available in /usr/bin directory:
$ which arm-none-eabi-gcc
/usr/bin/arm-none-eabi-gcc

Then, you can compile this tutorial specifying the TC_PATH variable:
$ make TC_PATH=/usr/bin

Fixed in #95, which has been merged


Add Skinner House by Lil Skibidi Junior

PLEASE SUBMIT
github-actions[bot] @.***> escreveu (sábado, 14/09/2024
à(s) 03:26):

This submission is stale because it has been open for 14 days with no
activity. If it is still relevant, please leave a comment and we will
reopen it.
—
Reply to this email directly, view it on GitHub
https://github.com/FlafyDev/auto-nong-indexes/issues/3458#issuecomment-2350791264,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/BJKAQF2YE44HCV7RIUTT6G3ZWONDRAVCNFSM6AAAAABNNBRZAWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJQG44TCMRWGQ
.
You are receiving this because you authored the thread.Message ID:
@.***>


support && logic for show_if conditions in catalog questions

Rancher version 2.0 master 05/24
Steps to Reproduce:

Go to Catalog Apps and Grafana chart

Results: conditional questions is not showing as expected

Variable NodePort Number should be hidden when the ingress is enabled, but it is showing because the service.type is equal to NodePort, should add && logic for this

Also, we need to support  && logic in show_if: "ingress.enabled=false&&abc.enabled=true"

You're just going to end up with a Turing-complete programming language for conditionals here, one step at a time.  Next step is going to be ||, and then you need grouping parenthesis to mix and and or, then casting, etc.

Note that the support added is only for exactly &&s, so you can do a == 1 && b == 2 && c == 3 but no ||, grouping, etc (yet)

Version - 2.0 master 6/4
Verified fixed.

@vincent99 Do you know the ETA for adding the support of OR condition || ?

!= would also be useful


System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates

I have managed to install and run dnu restore on openSUSE 13.2 as detailed in #37. The problem is that I am getting the following error whenever I try and run the above command :
System.Net.Http.HttpRequestException: An error occurred while sending the request. --->    System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates

It seems to be an issue of curl not having the CA bundle, but the curl command works just fine for HTTPS.
curl --version
curl 7.46.1-DEV (x86_64-suse-linux-gnu) libcurl/7.46.1-DEV GnuTLS/3.5.0 zlib/1.2.8
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets

I have also seen this wcf#438. What is the status of this issue?

@iamjasonp -- can you add any info regarding the WCF issues showing this same error?
/cc @alexeycalinovski

We've been seeing this in WCF Core when running tests. The errors look like the following:
 Exception: System.ServiceModel.CommunicationException: An error occurred while sending the request. ---> System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates
         at System.Net.Http.CurlHandler.MultiAgent.FinishRequest(EasyRequest completedOperation, CURLcode messageResult)

We're investigating this on our end. I've tried to import the root CA cert for the WCF Bridge (test) component but so far it hasn't resolved the issue


Update README.md

I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=ru
Description of changes:

"An unexpected error has occurred, could you please contact admins. Your RequestID: 8a1ec32a-a978-407f-aeb4-ca30b3d4ea21"


fix: add reference voltage to load model

remove default value for LoadModel as it can't be set without knowledge of u_0


JWT cache not shared across endpoints ?

Configured Krakend to cache JWKS keys:
    extra_config:
      github.com/devopsfaith/krakend-jose/validator:
        alg: RS256
        jwk-url: "http://myidp/jwks"
        issuer: "http://myidp"
        propagate-claims:
        - ["sub", "x-user"]
        disable_jwk_security: true # only for non https jwk-url
        cache: true
        cache_duration: 300

Although cache is enabled, we see multiple retrieval requests of JWKS from krakend host to the identity provider aka IDP. Tests are showing cache is effective but per end-point and every end-point loads its cache at startup.
As a consequence:

we get as much requests as different endpoints every 15min (cache_duration fails to be effective, see my other issue)
we get a bunch of JWKS requests each time a new Krakend running instance is started.
this is putting extra load (and cost when hosted on pubic cloud providers) on our IDP and its front LB

Hi @cboitel,
Thanks for your report. This was addressed in prior releases: https://www.krakend.io/docs/authorization/jwk-caching/
Closing


python312Packages.jupyter-docprovider: 1.0.1 -> 1.1.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.jupyter-docprovider is: JupyterLab/Jupyter Notebook 7+ extension integrating collaborative shared models
meta.homepage for python312Packages.jupyter-docprovider is: https://github.com/jupyterlab/jupyter-collaboration/tree/main/projects/jupyter-docprovider
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS

[!CAUTION]
A test defined in passthru.tests did not pass.

found 1.1.0 with grep in /nix/store/nks65f2960wwldxw93sffc1v5jzalfhx-python3.12-jupyter-docprovider-1.1.0
found 1.1.0 in filename of file in /nix/store/nks65f2960wwldxw93sffc1v5jzalfhx-python3.12-jupyter-docprovider-1.1.0

Rebuild report (if merged into master) (click to expand)

5 total rebuild path(s)

5 package rebuild(s)

First fifty rebuilds by attrpath

python311Packages.jupyter-collaboration
python311Packages.jupyter-docprovider
python312Packages.jupyter-collaboration
python312Packages.jupyter-docprovider

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/nks65f2960wwldxw93sffc1v5jzalfhx-python3.12-jupyter-docprovider-1.1.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python312Packages.jupyter-docprovider https://github.com/r-ryantm/nixpkgs/archive/b3b8b8e15de1558f0e475949924492d350b622f6.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/b3b8b8e15de1558f0e475949924492d350b622f6#python312Packages.jupyter-docprovider

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/nks65f2960wwldxw93sffc1v5jzalfhx-python3.12-jupyter-docprovider-1.1.0
ls -la /nix/store/nks65f2960wwldxw93sffc1v5jzalfhx-python3.12-jupyter-docprovider-1.1.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review

x86_64-linux

:white_check_mark: 8 packages built:

python311Packages.jupyter-collaboration
python311Packages.jupyter-collaboration.dist
python311Packages.jupyter-docprovider
python311Packages.jupyter-docprovider.dist
python312Packages.jupyter-collaboration
python312Packages.jupyter-collaboration.dist
python312Packages.jupyter-docprovider
python312Packages.jupyter-docprovider.dist

Maintainer pings
cc @GaetanLepage @natsukium @thomasjm for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

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

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 365110

x86_64-linux

:white_check_mark: 8 packages built:

python311Packages.jupyter-collaboration
python311Packages.jupyter-collaboration.dist
python311Packages.jupyter-docprovider
python311Packages.jupyter-docprovider.dist
python312Packages.jupyter-collaboration
python312Packages.jupyter-collaboration.dist
python312Packages.jupyter-docprovider
python312Packages.jupyter-docprovider.dist

aarch64-linux

:white_check_mark: 8 packages built:

python311Packages.jupyter-collaboration
python311Packages.jupyter-collaboration.dist
python311Packages.jupyter-docprovider
python311Packages.jupyter-docprovider.dist
python312Packages.jupyter-collaboration
python312Packages.jupyter-collaboration.dist
python312Packages.jupyter-docprovider
python312Packages.jupyter-docprovider.dist

x86_64-darwin

:white_check_mark: 8 packages built:

python311Packages.jupyter-collaboration
python311Packages.jupyter-collaboration.dist
python311Packages.jupyter-docprovider
python311Packages.jupyter-docprovider.dist
python312Packages.jupyter-collaboration
python312Packages.jupyter-collaboration.dist
python312Packages.jupyter-docprovider
python312Packages.jupyter-docprovider.dist

aarch64-darwin

:white_check_mark: 8 packages built:

python311Packages.jupyter-collaboration
python311Packages.jupyter-collaboration.dist
python311Packages.jupyter-docprovider
python311Packages.jupyter-docprovider.dist
python312Packages.jupyter-collaboration
python312Packages.jupyter-collaboration.dist
python312Packages.jupyter-docprovider
python312Packages.jupyter-docprovider.dist


deposit: add top level form feedback [+]

remove error handling (moved to react-invenio-deposit)

In the interest of time, I am merging and releasing this one. It just integrates the FormFeedback from react-invenio-deposit and gets rid of the error handling that now resides in react-invenio-deposit.
This will give us a common ground to test the release.

In the interest of time, I am merging and releasing this one. It just integrates the FormFeedback from react-invenio-deposit and gets rid of the error handling that now resides in react-invenio-deposit.
This will give us a common ground to test the release.


I need to connect to a legacy device from a rockwell plc via a vpn over cell connection.

Everything is worked out with the acception of the last bit between the vpn micropc that is connected via a usb-2-rs232 converter to the modbus device.
I can modbus scan the device with modpoll if i plug directly into it but when i try and connect via tcp to the rpie running mbusd with it connected to the modbus device i get
"Gateway Target Device Failed exception response!"
I cannot run modpoll on the actual rpie (no arm version) but i do get logs that might help.
root@raspberrypi:~# mbusd -L/tmp/mbusd.log -p /dev/ttyUSB0 -s 9600 -P 502 -d -N 0 -v9
11 Oct 2018 17:32:07 mbusd-0.3.1 started...
11 Oct 2018 17:32:07 tty: state now is TTY_PAUSE
11 Oct 2018 17:32:07 conn_loop(): select(): max_sd = 4, t_out = 000000:100000
11 Oct 2018 17:32:07 conn_loop(): select() returns 0
11 Oct 2018 17:32:07 tty: state now is TTY_READY
11 Oct 2018 17:32:07 conn_loop(): select(): max_sd = 4, t_out = 000060:000000
11 Oct 2018 17:32:13 conn_loop(): select() returns 1
11 Oct 2018 17:32:13 conn_open(): accepting connection from <IP_ADDRESS>
11 Oct 2018 17:32:13 queue_new_elem(): length now is 1
11 Oct 2018 17:32:13 conn[<IP_ADDRESS>]: state now is CONN_HEADER
11 Oct 2018 17:32:13 conn_loop(): select(): max_sd = 5, t_out = 000060:000000
11 Oct 2018 17:32:13 conn_loop(): select() returns 1
11 Oct 2018 17:32:13 conn[<IP_ADDRESS>]: state now is CONN_RQST_FUNC
11 Oct 2018 17:32:13 conn[<IP_ADDRESS>]: read request fc 4
11 Oct 2018 17:32:13 conn[<IP_ADDRESS>]: state now is CONN_RQST_TAIL
11 Oct 2018 17:32:13 conn[<IP_ADDRESS>]: request: [01][04][00][63][00][64]
11 Oct 2018 17:32:13 conn[<IP_ADDRESS>]: state now is CONN_TTY
11 Oct 2018 17:32:13 tty: state now is TTY_RQST
11 Oct 2018 17:32:13 conn_loop(): select(): max_sd = 4, t_out = 000060:000000
11 Oct 2018 17:32:13 conn_loop(): select() returns 1
11 Oct 2018 17:32:13 tty: written 8 bytes
11 Oct 2018 17:32:13 tty: request written (total 8 bytes)
11 Oct 2018 17:32:13 tty: state now is TTY_RESP
11 Oct 2018 17:32:13 tty: estimated 205 bytes, waiting 721874 usec
11 Oct 2018 17:32:13 conn_loop(): select(): max_sd = 4, t_out = 000000:721874
11 Oct 2018 17:32:14 conn_loop(): select() returns 0
11 Oct 2018 17:32:14 tty: response timeout
11 Oct 2018 17:32:14 conn[<IP_ADDRESS>]: state now is CONN_RESP
11 Oct 2018 17:32:14 tty: state now is TTY_PAUSE
This is the basic rundown of my configureation.
ROCKWELL_PLC -> tcp(ethernet)->rpie_mbusd->ttyUSB0->RS_232(RTU modbus_device_waterloger).
Mostly i'm just trying to work out if this is possible to do this with mbusd ?
Thanks ahead of time for your help.

I seem to be making some headway, I moved everything off the rpie and am working from my toughbook.  I can poll the slave now and get some data the big problem was i only have 10 counters to work with and the default on the modprobe was set to 100. This device is very slow to respond (waterlog h-350XL) and is hit and miss when i poll with rtu over rs232 but for the most part i get a response every 3 seconds or so. However if i use tcp mbusd seems to be overrun and i just get a Reply time-out!. Ive tried dialing back everthing that has to do with time and frequency of poling but it still seems to fast. Im using this "mbusd -L/tmp/mbusd.log -W 10000 -N 1 -R 10000 -p /dev/ttyUSB0 -s 9600 -P 502 -d  -v9"

Ok im able to get this working but only if i launch it in the foreground.
mbusd -L/tmp/mbusd.log -p /dev/ttyUSB0 -s 9600 -P 502 -d  -v9
I've tried configuring the /etc/mbusd/mbusd-ttyUSB0.conf with the exact same configuration minus the logging and foreground fork.
######### Serial port settings #############
Serial port device name
device = /dev/ttyUSB0
Serial port speed
speed = 9600
############# TCP port settings #############
TCP server port number
port = 502
Connection timeout value in seconds
timeout = 10
It just will not work.
when i look at the log file it claims resource :tty not ready?
Second issue: I have to first probe it with rtu from my toughbook that is connected to the modbus device otherwise all i get is... "Gateway Target Device Failed exception response!"
This i could work around accept, the modbus prob im working with will not run on arm arch. so im kinda sunk and i cant find a prober that will run on arm arch.

Hi @shawnggraham,

when i look at the log file it claims resource :tty not ready?

Could you post the entire log file? This message looks quite weird to me.

Late last night i got fed up, it was all weird.  I grabbed a rpie-v3 did a fresh raspbian install on it and walked through the compile process for mbusd again on it.  I cant find a single step i did any different but this one seems to work fine.  The only problem i have found is that i cannot run a modbus probe on the rtu at the same time my other machines are probing via tcpip. But the only reason i wanted  to do that was because i was verifying the rpie could actually communicate with the waterloger so its not something i need to be able to do at the same time im polling via tcpip.  So im good to go now! Im going to recreate this on the other rpie-v2b just for followup (and i have a grip of those to work with) and ill let you know how it goes.
Also just because somebody else may want to be able to modbus rtu poll from the rpie..i did finally get that working with mbpoll from here -> https://github.com/epsilonrt/mbpoll/ It works mucho goodo!!


Add note about malloc_usable_size (fixes #278)

This fixes #278.

Merged @david-a-wheeler's note with @siddhesh's note. Add missing reference to glibc manual page for malloc_usable_size(3).

+1 for your change. Thanks, @thomasnyman !

All seem happy. I'll merge.


Add opengraph image metadata to profile pages and review caching process

Configured the default OpenGraph image to match the profile picture, and applied the same cache-prevention query string parameter to the og:image URL. Republished all profiles to fix this universally.


ng build doesn't generate app shell

Bug Report or Feature Request (mark with an x)
- [x] bug report
- [ ] feature request

Area
- [x] devkit
- [x] schematics

Versions
Angular CLI: 6.0.8
Node: 8.11.2
OS: win32 x64
Angular: 6.0.7
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.6.8
@angular-devkit/build-angular     0.6.8
@angular-devkit/build-optimizer   0.6.8
@angular-devkit/core              0.6.8
@angular-devkit/schematics        0.6.8
@angular/cli                      6.0.8
@ngtools/webpack                  6.0.8
@schematics/angular               0.6.8
@schematics/update                0.6.8
rxjs                              6.2.1
typescript                        2.7.2
webpack                           4.8.3

Repro steps

Create a new project with routing ng new app-shell-test --routing
Add app shell to project ng g app-shell --universal-project=app-shell-test --client-project=app-shell-test
Build project with ng build or ng build --prod

Actual
The app shell is not generated.
Mention any other details that might be useful
I'm trying to add the app shell to my app, but ng build not want to generate it. The shell generates only after ng run app-shell-test:app-shell. Is this a valid behavior or a bug? (in the first case the --skip-app-shell is unused...)

This is the intended behavior, yes. It is documented in https://github.com/angular/angular-cli/wiki/stories-app-shell.

@filipesilva,

on linked page I don't see anything about ng build
ng build have the --skip-app-shell and this option worked prior to 6.0, see https://github.com/angular/angular-cli/wiki/build BUT this option fully ignored now
if this is "intended behavior" and app shell not generated during ng build - how can I use app with generated app shell in production? Build and shell will generate the different hashes, right? so the shell seems is unuseful...

There isn't anything there about ng build because the way you build the app shell is via ng run my-app:app-shell. You'll find your built project in the dist directory, with the app shell inside index.html.
--skip-app-shell shouldn't be there anymore though. That option should error out. I'll reopen so someone can remove that option from the allowed list.

Also running ng-run my-app:app-shell doesnt build optimised files. Basic vendorJS greater than 3mb.

@JimDrury you can use ng-run my-app:app-shell -c production if you generated the app-shell with the CLI to have a production build with app-shell enabled. This also works together with Angular Universal, something I also initially struggled with.


Refactoring app notification tests

This PR refactors the AppNotification tests into TAEF. Similar to the PushNotificationTests refactor PR, all the unit tests that use to exist in the ToastNotificationTestApp are moving to TAEF. Now error codes will be seen in the TAEF process.