Swap in a faster memcpy

This is a bit "full circle", but:

When we swapped in our own newlib for a libc we got this memcpy: https://github.com/projectgus/newlib-xtensa/blob/xtensa-2_2_0-lock/newlib/libc/machine/xtensa/memcpy.S - it does byte reads until a 4 byte aligned address, then word reads, and I think it does byte reads for any trailing bytes as well.

With #142 we enabled the unaligned load handler for default constant data which was now in flash. So this memcpy got slower in more cases.

In #163 @sheinz noticed substantial performance drop using the newlib memcpy for spiffs, and he's written a new one. He also points out that the one in Espressif's ROM is pretty fast.

So maybe we should swap out memcpy (and maybe some of the other very simple low level libc functions) to ones which never perform byte reads?
Could do this in one of several ways:

Use the Espressif ROM binary-only implementations, swap them in at link time.
Write our own and put them in our codebase, like @sheinz has done with his memcpy implementation. Swap them in at link time.
Patch newlib-xtensa, given we already have some e-o-r specific modifications in there.

... I don't really mind which one. Leaving this issue open to track/discuss the desire for one of them, though!

With #142 we enabled the unaligned load handler for default constant data which was now in flash. So this memcpy got slower in more cases.

Are you sure? Have you done any benchmarking? My preliminary testing shows no substantial performance difference between those functions when operating with RAM data buffers:
0x4000df48	memcpy
0x400018b4	ets_memcpy
0x400006c4	xthal_memcpy
newlib's memcpy
Am I correct that unaligned exception handler works only for unaligned flash(ROM) access?

In #163 @sheinz noticed substantial performance drop using the newlib memcpy for spiffs, and he's written a new one. He also points out that the one in Espressif's ROM is pretty fast.

I couldn't use standard memcpy because it discards volatile qualifier for registers.
You might misunderstood me. I noticed performance drop between manually copying  data from registers into unaligned buffer with pure C. So, I had to use assembler to do it efficiently.
Doesn't e-o-r currently use memcpy from rom?

I've done some benchmarking.
The number in the following log is the time in microseconds required to copy 128 bytes 1000 times.
RAM to RAM copy:
newlib memcpy:
aligned src, dst and size: 1777
unaligned src, dst and size: 1826
unaligned both src and size: 2274
unaligned only src: 2275
unaligned only dst: 2500
unaligned only size: 1832
unaligned both src and dst: 1939
unaligned both dst and size: 2480

rom ets_memcpy:
aligned src, dst and size: 1907
unaligned src, dst and size: 1941
unaligned both src and size: 2400
unaligned only src: 2402
unaligned only dst: 2630
unaligned only size: 1977
unaligned both src and dst: 2007
unaligned both dst and size: 2572

rom memcpy:
aligned src, dst and size: 1860
unaligned src, dst and size: 1827
unaligned both src and size: 2280
unaligned only src: 2275
unaligned only dst: 2505
unaligned only size: 1826
unaligned both src and dst: 1984
unaligned both dst and size: 2477

rom xthal_memcpy:
aligned src, dst and size: 1875
unaligned src, dst and size: 2543
unaligned both src and size: 2456
unaligned only src: 2419
unaligned only dst: 3063
unaligned only size: 1925
unaligned both src and dst: 2602
unaligned both dst and size: 3064

ROM to RAM copy:
newlib memcpy:
aligned src, dst and size: 3746
unaligned src, dst and size: 5095
unaligned both src and size: 5690
unaligned only src: 4378
unaligned only dst: 10052
unaligned only size: 6645
unaligned both src and dst: 8137
unaligned both dst and size: 8506

rom ets_memcpy:
aligned src, dst and size: 4042
unaligned src, dst and size: 5323
unaligned both src and size: 5823
unaligned only src: 4522
unaligned only dst: 10199
unaligned only size: 6740
unaligned both src and dst: 8204
unaligned both dst and size: 8751

rom memcpy:
aligned src, dst and size: 3745
unaligned src, dst and size: 5098
unaligned both src and size: 5694
unaligned only src: 4380
unaligned only dst: 10050
unaligned only size: 6646
unaligned both src and dst: 8138
unaligned both dst and size: 8627

rom xthal_memcpy:
aligned src, dst and size: 3817
unaligned src, dst and size: 4651
unaligned both src and size: 4520
unaligned only src: 4606
unaligned only dst: 5296
unaligned only size: 3984
unaligned both src and dst: 4600
unaligned both dst and size: 5299

The only implementation which doesn't throw unaligned exception interrupt is xthal_memcpy. Which is not a surprise as it is designed to use only 32 bit access
But it is slower when copying from RAM to RAM.

Hi @sheinz,
I think you're right that I misunderstood the previous discussion, sorry. If everything you were doing was DRAM to DRAM then the unaligned exception handler never gets invoked, as data RAM is designed for byte-level access. I should have looked closer at the code first.
Is newlib's memcpy significantly slower if you use it in the spiffs implementation, in place of the hand-rolled one?

Hi Angus,

Is newlib's memcpy significantly slower if you use it in the spiffs implementation, in place of the hand-rolled one?

Not at all. But as I already said standard memcpy ignores volatile qualifier.
The code in Espressif rom uses memw instructions for each  load/store operation of SPI data registers. It's volatile implementation in C. So, I decided to do it as well.
I'm not sure what implications might be if not to use memw instruction for SPI data registers access.
My experiments show that memcpy that ignores volatile qualifier works just as good and as fast as my own implementation.
Maybe @foogod or @raburton might shed some light whether memw is really needed for SPI data registers access.

I'm not sure if MEMW is strictly necessary on LX106, but if it is needed then it's to ensure that any load/store operation ordered before MEMW completes fully before any operations ordered after MEMW are attempted. As I understand it, for LX106 this would only (if ever) be a risk for race conditions between operations on one slower bus and another faster bus.
In the case of memcpy_unaligned_XXX in spiffs it's copying in/out of the SPI data registers, so that's safe in this case - the SPI peripheral is all in one bus, so it's unlikely anything will happen faster than anything else (and also it wouldn't matter if it does, as they're just data registers).
If you want guaranteed safety, I believe you could add a single __asm__ volatile("memw"); after the memcpy() call that writes to SPI memory, and the same before the memcpy that reads from SPI memory. This should take care of any potential races. I don't think this will turn out to be strictly necessary, but it doesn't really hurt either.
(Sorry again that I didn't look at the code earlier, I totally misunderstood the problem to begin with!)


knexfile.js environment keywords should be enforced consistently

The environment keywords development and production should be enforced consistently across the client and the cli. The fact that these are not arbitrary is non-obvious - especially to new users - and can lead to ambiguous errors.
For example:
This runs fine with no errors:
//knexfile.js
module.exports = {
 test : {
  client: 'sqlite3',
  connection: {
    filename: "./test.db"
  }
}

//index.js
'use strict'

const  env    = 'test'
const config = require('./knexfile.js')
const knex   = require('knex')(config[env])

module.exports = knex

knex.migrate.latest([config])

However, when I go to the cli to seed the db:
$knex seed:run
Error: There is no pool defined on the current client

Solution

This could be easily resolved by noting in the documentation that you can't use arbitrary environment keywords in your knexfile.
It would be nice if we could add validation of knexfile.js for environment keywords or allow arbitrary environment keywords across the whole module.

what, you aren't allowed to name environments as whatever you like?! This could explain some really weird errors I was having when doing something completely unrelated (-overriding environment variables, including NODE_ENV in docker-compose but having issues with failing integration tests) ... 🙅

@washt @cbrunnkvist You should be able to specify environments as you wish.
@washt In your example above you are declaring the env test, but are not setting NODE_ENV when invoking the seed command.
I just tried to reproduce your issue locally and yes, if I do not set NODE_ENV to test, it fails. As soon as I ran the command as NODE_ENV=test knex seed:run the seed files ran fine.


First draft of generic concurrency algorithm

Implements https://github.com/jonhoo/rust-evmap/issues/45#issuecomment-723706112.
Not quite done, but very promising! I'll try to get it tidied up in the coming week.
Fixes #45 and #70 by allowing separate implementations of the data structure that re-use the concurrency primitive.
/cc @jeff-hiner, @comath, @mattdm -- you've all expressed interest in having a single-map version in the past.

This change is

Note to self: I also got an email pointing out that it's probably not okay for us to alias a Box, even if we never cause a data race specifically. We should probably just store the raw pointer (probably through a NonNull) instead. I should fix that before landing this.

I feel that "publish" could possibly be a more descriptive name for WriteHandle::refresh.
(Hello from YouTube by the way lol)

I feel that "publish" could possibly be a more descriptive name for WriteHandle::refresh.

"flush" seems like it might be okay too

I feel that "publish" could possibly be a more descriptive name for WriteHandle::refresh.

"flush" seems like it might be okay too

Yeah, flush seems like a good name, as it's synonymous with network/file sync operations that already carry the meaning of "this is expensive and may block your current thread for a bit".

Just wanted to say that this is awesome, and a similar idea to what I had in mind in my follow-up proposal in #48, just far more elegant. Excited for this one, thank you! 💜

I finally got a chance to take a proper look at this! Tomorrow I'm going to see about implementing maps with different value storages with it and seeing what else comes up, but one thing I can see immediately:
I think ShallowCopy will need to be a part of left-right. It's a concern that's going to come up and need a solution in any serious usage of the package. At the very least, I think it needs to provide it; ideally it would also solve some of the boilerplate for the implementation.
I haven't tried any of this out, but just to throw out some ideas for this: Absorb's type parameter could probably require ShallowCopy (which with the derive macro should be no problem to achieve) so both absorb_* functions could receive an owned operation, and maybe it could abstract away the usage of ManuallyDrop in absorb_first in some way.
Other than that, this all seems awesome and I'll report back after having given it a proper try!

@MayaWolf That's exciting — I look forward to seeing what you come up with (though it may take me a little while to get back to you — apologies in advance).
As far as ShallowCopy goes, I think it probably belongs in its own crate more so than in left-right since there's nothing specific to left-right about it. That said, I also don't know that it'd be useful anywhere else, so :shrug: Unfortunately, I think ShallowCopy will also have to change quite a bit to deal with the unsoundness identified in #74 and that arises from https://github.com/rust-lang/unsafe-code-guidelines/issues/35#issuecomment-731656729. I've started sketching out a plan in #81, but it is ugly. Would love some more eyes on it!
I'll also note that I don't think ShallowCopy can appear in left-right's API specifically. The reason for that is that you do not want to shallow copy the oplog entries, nor the entire wrapped data structure. Instead, you generally want to shallow copy the individual values stored in the wrapped data structure (such as the values in evmap). But left-right knows nothing about "values". All it knows is that you have two copies of some T that can absorb opaque operations, and at that level of abstraction ShallowCopy isn't really useful.

@MayaWolf Actually, it looks like ShallowCopy may go away entirely! :tada: Take a look at https://github.com/jonhoo/rust-evmap/blob/787ffb755b8b76536b1a9650f5cc0d21b8abb5b3/evmap/src/aliasing.rs from #81 for what I came up with instead.

@jonhoo Awesome, I'll look into this!
For now, I've implemented basic versions of both a single-value map, and a map using a hashset as the value storage, and left-right really makes this incredibly easy and convenient. The only unpleasant thing is really the boilerplate of ShallowCopy and ManuallyDrop, but I've not been able to come up with a way around this while also keeping left-right as generic as it is.
There are, however, two things about the public API I find curious/questionable:

Why is operation passed mutably? Not a huge issue, but for something that absolutely, positively has to stay the same between runs, that seems weird. If it's just because of retain, does predicate really need to be an FnMut?
Similarly, it seems very strange to be given other in the absorb methods. It seems that this is primarily because of JustCloneRHandle - and honestly, I believe direct_write is something that would make sense to have built into left_right itself. What do you think?

@MayaWolf Hopefully the change in #83 that gets rid of ShallowCopy should make your life a whole lot easier!
Out of curiosity, what use do you have for a map that has a HashSet as the value storage?
As for your API questions:

operation is passed mutably to absorb_first in case the implementation needs to store information in it to ensure that absorb_second has the exact same effect as absorb_first. For example, to fix #78, it's likely that we need to store things like hashes and indices in the operation so that absorb_second does not invoke user-defined functions like PartialEq and Hash a second time (since they may be non-deterministic).
other is passed in mainly because it is easy to provide, and so I'd rather provide it in case a consumer needs it (like evmap does). The other reason it is passed in is, again, because it may be necessary for some implementations to ensure that their absorption is deterministic between the two maps (e.g., by ensuring that the same hasher is used).
(I split your direct_write into its own point) I don't think left-right can implement the direct_write optimization directly, since it does not have a safe way (I don't think) to produce a duplicate of T that will deterministically apply operations the same as T. For example, in evmap, we need to ensure that any HashBags we construct in the new Values use the same hasher as the originals. Clone won't do, since it does not promise to have the same initialized state as the T it clones. For example, it could be that if you clone a HashMap it gets its own dedicated hasher, with a different random seed, which would yield different iteration orders. Like #78 indicates, we cannot generally rely on "sane" implementations of user-defined traits.

@MayaWolf I'll add to ^ that if you come across any part of the left-right documentation that could be better, please let me know/file an issue/file a PR. Concurrency primitives are hard enough that they warrant very good documentation, and the only way to get to that is to document things as we discover holes :)

@jonhoo I'm working with at-least-once delivery guarantees and a multitude of unique has-many relationships - so for something like member lists, a HashSet is just easiest to work with. To be clear, this would be entirely possible with what evmap provides out of the box, but HashSet allows me to add values without having to check whether they already exist first, and is probably a little more efficient than evmap's general-purpose value bag.
While I get the arguments of passing operation mutably and other in case they're needed, I'm not sure with it helping to minimize user errors - if anything, it just moves the potential for them into the implementations of Absorb. But if we consider that better, then yeah, it makes a lot of sense!
This is more of a question because I may very well be missing something - but does calling other.data.hasher(); actually have an advantage over calling self.data.hasher()? Unless I'm missing something, all this does is ensure the maps use each other's hasher, not that they actually use the same one.
As for direct_write, I believe all we would need for this is to add a clone_first method (with perhaps a better name. create_second?) to the Absorb trait - it could have a default impl of calling self.clone() if Self: Clone, and unsafe implementations like evmap could override it. It would also have the added benefit of making new's type parameter not require Clone!
So far, the docs seemed on point and very easy to understand - but that's admittedly coming from someone already quite intricately familiar with the internals of evmap!

@MayaWolf Ah, yes, that makes sense! Neat to see that this already makes sense in more contexts :D
So, I think that operation must be passed mutably, because the alternative is to pass &O, which would mean implementations cannot stash deterministic info in the O, and would be left without any way to do it. Implementors of Absorb already have to be quite careful, so I'm completely happy with also requiring them to not abuse the &mut O.
Hehe, no, you're right, it doesn't. What it does buy you is the ability to get at a &Hasher while mutating self. Normally, that's super annoying. I think evmap could probably be tweaked a bit to use the hasher from self instead, but it'd likely require a bit more complex code to satisfy the borrow checker. The way we ensure that the two maps have the same hasher is that we construct one with the hasher of the other. The reason we need to also pass the &Hasher around is so that when we construct new HashBags, those also use the same hasher.
Hmm, I'm conflicted about adding direct_write to left-right directly. I feel like it adds complexity to the trait for something that can be fairly easily implemented externally. Now there's an additional method on Absorb that implementors need to make sure they got right, and an additional optimization they must understand. We also couldn't lift the Clone requirement on new easily, since we still need to have a read copy even if is initially empty and will just use clone_into to "fill" initially. I'll have to think on that one a little.


can not enter the homepage when using localhost:5000

Hello, I use digits-4.0 and install several PyPI packages using the command 'sudo pip install -r $DIGITS_ROOT/requirements.txt'. Then I do command './digits-devserver', but it shows error
ImportError: cannot import name socketio_manage
So, I modified the item 'Flask-SocketIO==0.6.0' to 'Flask-SocketIO==2.6' in requirements.txt. Thus, digits can start. However when I input URL 'localhost:5000' in my browser, it shows error
Couldn't import dot_parser, loading of dot files will not be possible.
2016-10-24 10:11:29 [INFO ] Loaded 0 jobs.
  ___ ___ ___ ___ _____ ___
 |   \_ _/ __|_ _|_   _/ __|
 | |) | | (_ || |  | | \__ \
 |___/___\___|___| |_| |___/ 4.0.0

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/gevent/server.py", line 102, in wrap_socket_and_handle
    ssl_socket = self.wrap_socket(client_socket, **self.ssl_args)
TypeError: wrap_socket() got an unexpected keyword argument 'policy_server'
<Greenlet at 0x7f2b4a41d550: <bound method WSGIServer.wrap_socket_and_handle of <WSGIServer at 0x7f2b4a0ddc90 fileno=17 address=<IP_ADDRESS>:5000>>(<socket at 0x7f2b4a10b5d0 fileno=30 sock=<IP_ADDRESS>, ('<IP_ADDRESS>', 55138))> failed with TypeError

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/gevent/server.py", line 102, in wrap_socket_and_handle
    ssl_socket = self.wrap_socket(client_socket, **self.ssl_args)
TypeError: wrap_socket() got an unexpected keyword argument 'policy_server'
<Greenlet at 0x7f2b4a41d5f0: <bound method WSGIServer.wrap_socket_and_handle of <WSGIServer at 0x7f2b4a0ddc90 fileno=17 address=<IP_ADDRESS>:5000>>(<socket at 0x7f2b4a10b7d0 fileno=31 sock=<IP_ADDRESS>, ('<IP_ADDRESS>', 55139))> failed with TypeError

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/gevent/server.py", line 102, in wrap_socket_and_handle
    ssl_socket = self.wrap_socket(client_socket, **self.ssl_args)
TypeError: wrap_socket() got an unexpected keyword argument 'policy_server'
<Greenlet at 0x7f2b4a41d690: <bound method WSGIServer.wrap_socket_and_handle of <WSGIServer at 0x7f2b4a0ddc90 fileno=17 address=<IP_ADDRESS>:5000>>(<socket at 0x7f2b4a10b850 fileno=32 sock=<IP_ADDRESS>, ('<IP_ADDRESS>', 55140))> failed with TypeError

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/gevent/server.py", line 102, in wrap_socket_and_handle
    ssl_socket = self.wrap_socket(client_socket, **self.ssl_args)
TypeError: wrap_socket() got an unexpected keyword argument 'policy_server'
<Greenlet at 0x7f2b4a41d730: <bound method WSGIServer.wrap_socket_and_handle of <WSGIServer at 0x7f2b4a0ddc90 fileno=17 address=<IP_ADDRESS>:5000>>(<socket at 0x7f2b4a10b8d0 fileno=33 sock=<IP_ADDRESS>, ('<IP_ADDRESS>', 55141))> failed with TypeError

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/gevent/server.py", line 102, in wrap_socket_and_handle
    ssl_socket = self.wrap_socket(client_socket, **self.ssl_args)
TypeError: wrap_socket() got an unexpected keyword argument 'policy_server'
<Greenlet at 0x7f2b4a41d7d0: <bound method WSGIServer.wrap_socket_and_handle of <WSGIServer at 0x7f2b4a0ddc90 fileno=17 address=<IP_ADDRESS>:5000>>(<socket at 0x7f2b4a10b950 fileno=34 sock=<IP_ADDRESS>, ('<IP_ADDRESS>', 55142))> failed with TypeError

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/usr/lib/python2.7/dist-packages/gevent/server.py", line 102, in wrap_socket_and_handle
    ssl_socket = self.wrap_socket(client_socket, **self.ssl_args)
TypeError: wrap_socket() got an unexpected keyword argument 'policy_server'
<Greenlet at 0x7f2b4a41d7d0: <bound method WSGIServer.wrap_socket_and_handle of <WSGIServer at 0x7f2b4a0ddc90 fileno=17 address=<IP_ADDRESS>:5000>>(<socket at 0x7f2b4a10b790 fileno=30 sock=<IP_ADDRESS>, ('<IP_ADDRESS>', 55143))> failed with TypeError

And I can not enter the homepage of digits.

Why did you change the line in requirements.txt? DIGITS 4.0 does require v0.6.0 of flask_socketio - that's correct.
https://github.com/NVIDIA/DIGITS/blob/v4.0.0/requirements.txt#L11

@lukeyeager  It shows error ImportError: cannot import name socketio_manage when using
Flask-SocketIO==0.6.0. How to solve this problem?

@JulyUp:  Can you access the page via <IP_ADDRESS>:5000?  That worked for me when I had the same problem.

This is a straight-forward (but not simple) matter of conflicting dependencies. On Ubuntu, you could have packages coming from apt-get, pip and/or conda. You've probably mixed two or more installation methods and have conflicting packages on your system.
This should be fool-proof:
virtualenv venv
source venv/bin/activate
pip install -r $CAFFE_ROOT/python/requirements.txt
pip install -r $DIGITS_ROOT/requirements.txt
./digits-devserver

If you're still having trouble, try reading through these threads/articles:

https://github.com/NVIDIA/DIGITS/issues/1195
https://github.com/NVIDIA/DIGITS/blob/digits-2.2/docs/VirtualEnvironment.md

@michaelholm-ce  I can not  access the page via <IP_ADDRESS>:5000.
@lukeyeager  It does not work. And I uninstall the dependences and install them again using pip, but it still does not work. It seems that I should give up digits-4.0.

If you want to give up on configuring your system, you can try using Docker.
As explained on our README, another installation method is to use nvidia-docker to run DIGITS.

@lukeyeager Thank you very much.

@JulyUp did you find something that works for you?


Non-multiple-of-4 copies between images and buffers in Metal

We now have support for nm4 sizes in copy_buffer (#2002) and fill_buffer (#1995). However, there are still copies between buffers and images that can ruin that assumption of Metal, and we'll need to cover those as well. These copies are heavily used at least in the mipmap generation section of Vulkan CTS.

Got an idea about image to buffer copy (which is the one actually needed for mipmap generation tests). We could copy the first multiple-of-4 chunk into the destination, then allocate a temporary buffer storage of size 4 and copy the whole 4 bytes from the image (note: requires the image rows to be aligned), then issue a buffer-to-buffer copy with our new compute shader.


Remove collect_broker_version

What does this PR do?

Motivation

Additional Notes

Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] PR title must be written as a CHANGELOG entry (see why)
[ ] Files changes must correspond to the primary purpose of the PR as described in the title (small unrelated changes should have their own PR)
[ ] PR must have changelog/ and integration/ labels attached
[ ] If the PR doesn't need to be tested during QA, please add a qa/skip-qa label.

Current dependencies on/for this PR:

master

PR #13918

PR #14077

PR #14078

PR #14095   👈
PR #14094
PR #14080
PR #14079

PR #14076

This comment was auto-generated by Graphite.


em_jumpchars can't contain shell syntax characters

The script fails,  when the em_jumpchars config option contains shell syntax characters: (){}&"'.

Now <> cannot be used instead :see_no_evil: , but it would be a too painful not to use the special kakoune nesting quotes.


Better errors, multiple types

Fixes #33

Return error on parse failure rather than a thrown ArgumentError.
Support checking against multiple types.

From https://elixir-lang.slack.com/archives/absinthe-graphql/p1480927370000208

I've had a need for checking the node ID type against many rather than just one (in the case of interfaces) so I've played around with parsing_node_ids/2 to accommodate the requirement.  It's a non-breaking change and fixes an issue where an error should be returned rather than a thrown error.
The only concern you may have is that it returns %{ type, id } or id depending on expected_type(s), mainly to prevent this being a breaking change, and also that it makes sense.

Rolled into #50.


i2c: i2c_mcux_flexcomm: add multi-target support

Add support for multiple target addresses. The flexcomm peripheral support up-to 4 target addresses per interface. This commit extends the target implementation to allow the registration of multiple targets.
This is done by splitting the target configuration from the peripheral configuration. When the data callback is triggered, the destination address is used to route retrieve the correct target configuration and call the associated callbacks.
Tested on LPC55S69

One note that it would be nice if the title of the PR matched the commit terminology, the commit notes its a multi-target support while the PR title terms use slave which the I2C spec has moved away from

One note that it would be nice if the title of the PR matched the commit terminology, the commit notes its a multi-target support while the PR title terms use slave which the I2C spec has moved away from

Updated title and description to match commit terminology.


ConcurrentModificationException when looping connections

Describe the bug
ConcurrentModificationException when looping connections returned by getConnections() and a connection is created/removed elsewhere at the same time.
java.util.ConcurrentModificationException
	at java.util.HashMap$HashIterator.nextEntry(HashMap.java:810)
	at java.util.HashMap$KeyIterator.next(HashMap.java:845)
	at java.util.AbstractCollection.toArray(AbstractCollection.java:141)
	at java.util.ArrayList.<init>(ArrayList.java:151)
	at org.java_websocket.server.WebSocketServer.getConnections(WebSocketServer.java:289)
        ...

To Reproduce
Steps to reproduce the behavior:

. Create a thread that requests connections via getConnections() and iterates over the connections (say gathering stats). Run all of that in a loop.
.. Whilst that thread is running connect and disconnect from the WebSocket server using a WebSocket client.
... Should see an intermittent race condition leading to a ConcurrentModificationException

Expected behavior
No ConcurrentModificationException
Environment(please complete the following information):

Version used: 1.3.9 & 1.4.0
Java version: 1.8
Operating System and version: MacOS / Linux
Endpoint Name and version: Chrome/Safari/Firefox

Fixed with #922


Create some sample PolicySets that help with hardening OCP

Create a few sample PolicySets that help to harden OpenShift managed
cluster, the ACM installation and to deploy OpenShift Plus.
Refs:

https://github.com/stolostron/backlog/issues/19095
https://github.com/stolostron/backlog/issues/19096

Signed-off-by: Gus Parvin<EMAIL_ADDRESS>

/hold

Be aware the openshift-plus policy set sample creates 2 policy sets.  I need to do some testing with it as a combined sample.  My previous testing was with it split apart into 2 directories which I have combined.

/unhold


[BUG] {{time}} doesn't render when triggering a template

I have an Obsidian template with {{date}} and {{time}} in the frontmatter.
When I trigger a QuickAction Template, {{date}} renders the expected current date, but {{time}} is ignored and outputs as {{time}}. This happen within the body of the note, as well.
Inserting the Obsidian template without the use of the QuickAction plugin renders {{time}} with the current time, as expected.
Expected behaviour: when triggering a QuckAdd Template, {{time}} renders the current time in the default format specified in Obsidian.

M1 iMac
MacOS 13.2.1
Obsidian v1.2.3
QuickAdd 0.21.0

Thank you!

Hi @henryfaber
Thanks for opening the issue.
This isn't actually a bug: https://github.com/chhoumann/quickadd/issues/364
But I'm getting enough of these to warrant just adding the feature.
Will be in 0.22 :)
Please let me know if it works as expected.

Wow, that was fast! I didn't realize you were custom re-rendering the tags in the Obsidian template format - I wouldn't have bugged you if I knew that, but it makes sense since you have so much control with {{DATE:}} in the settings.
{{time}} default you've set is 24hrs which works, but I can see how someone may want that extra control in the future. All of that being said, fantastic work and thank you for being so responsive!

No worries! I think it should have been added much earlier, if nothing else then simply to have carryover and a more flowing experience when learning templates in Obsidian.
Thank you! Sure thing :)


[POC] implement scalar metrics

Context
This ticket aims to propose an initial implementation of scalar metrics in xDEM.
We assume that these metrics can be an attribute of DEM just like the slope, and that users can retrieve them as follows: dem_mean = xdem.scalar_metric.mean(dem). If this API is validated, here is our proposal:
Code

[ ] Create the file scalar_metrics.py (inspired by terrain.py)

[ ] List of metrics to implement:

[ ] List item:

"mean"
"max"
"min"
"std"
"rmse"
"median"
"nmad"
"sum"
"sumSquaredErr"
"Percentil90"

[ ] Implement the get_scalar_metric function with all the options from the above list:

@overload
def get_scalar_metric(
    dem: NDArrayf | MArrayf,
    attribute: str,
) -> np.float32:
    ...

@overload
def get_scalar_metric(
    dem: RasterType,
    attribute: list[str],
) -> np.float32:
    ...

def get_scalar_metric(
    dem: NDArrayf | MArrayf | RasterType,
    attribute: str | list[str],
) -> NDArrayf | list[NDArrayf] | RasterType | list[RasterType]:
"""
:param dem: The DEM to analyze.
:param attribute: The terrain attribute(s) to calculate.

:raises ValueError: If the inputs are poorly formatted or are invalid.

:examples: >>> dem = np.repeat(np.arange(3), 3).reshape(3, 3)
			>>> dem array([[0, 0, 0], [1, 1, 1], [2, 2, 2]])
			>>> min, max = get_scalar_metric(dem, ["min", "max"])
			>>> min
			0
			>>> max
			2

:returns: One or multiple arrays of the requested attribute(s) """
 # Validate and format the inputs
 if isinstance(attribute, str):
        attribute = [attribute]

    # Initialize the scalar_metrics dictionary, which will be filled with the requested values.
  terrain_attributes: dict[float] = {}

    # Get array of DEM
  if isinstance(data, np.ma.masked_array):
    data_arr = get_array_and_mask(data, check_shape=False)[0]
  elif isinstance(data, Raster):
    data_arr = data
  else:
    data_arr = np.asarray(data)

    if "mean" in attribute:
        scalar_metrics["mean"] = np.nanmean(data_arr)
    if "max" in attribute:
        scalar_metrics["mean"] = np.nanmax(data_arr)
    if ...:

    return output_attributes if len(output_attributes) > 1 else output_attributes[0]

[ ] Each metric should be implemented as follows:

@overload
def mean(
    dem: NDArrayf | MArrayf,
) -> NDArrayf:
    ...

@overload
def mean(
    dem: RasterType,
) -> RasterType:
    ...

def mean(
    dem: NDArrayf | MArrayf,
) -> NDArrayf | RasterType:
    """
 Calculate dem mean value :param dem: The input DEM to calculate the mean from.
 :raises AssertionError: If the given DEM is not a 2D array. :raises ValueError: If invalid argument types or ranges were given.
 :returns: A mean value with the dtype "float32". """

return get_scalar_metric(
        dem,
        attribute="mean",
    )

[ ] Handling the NMAD metric:

[ ] It is already implemented; retrieve it from the spatialstats file.
[ ] It is called in various places; reinitialize it as follows: nmad = xdem.scalar_metric.nmad(dem)

[ ] affine.py
[ ] base.py
[ ] workflows.py
[ ] spatialstats.py

[ ] The nfact is hardcoded in demcompare and parameterized in xdem; if we decide to use it as a parameter, modify the APIs accordingly, e.g.:

@overload
def get_scalar_metric(
    dem: RasterType,
    attribute: list[str],
    nfact: float = 1.4826
) -> np.float32:
    ...

[ ] from DEM class : should implement each metrics as follow

    @copy_doc(scalar_metrics, remove_dem_res_params=True)
    def mean(
        self
    ) -> float:

        return scalar_metrics.mean(
            self
        )

Tests

[ ] Create the file test_scalar_metrics.py
[ ] Test all possibilities: It is possible to retrieve the TUs from demcompare: test_scalar_metric.py
[ ] To test with all array types, move the test_nmad function from test_spatial_stats to test_scalar_metrics.py

Example

[ ] Add an example script in the basic folder that displays the scalar metrics of a DEM using the new APIs

Documentation

[ ] Add a scalar_metrics.md file in the xdem documentation inspired by the terrain.md documentation

Estimation
5 days

Based on my limited experience with xdem, I believe it's possible. I will create an issue for the metrics in the CLI before developing this one, just to be sure.

From @adehecq :
"In fact, the other functions are not specifically implemented because they are available with NumPy (e.g., min, max, std, var, etc.). The interface with NumPy (https://geoutils.readthedocs.io/en/stable/core_array_funcs.html) makes these calculations direct and intuitive.
In this sense, xdem seems more advanced because we have access to any existing metric in NumPy or SciPy."

One more note in addition to @adehecq's that might be relevant here: Xarray has exactly the same NumPy array interface as we have for the Raster object (can call any np.func() or derivative like some SciPy's functions, on the object, and it knows where to go look for the array), so the array interfacing approach will work exactly the same with the planned dem Xarray accessor.
Usually the critical point when deriving those metrics through an array interface is the behaviour with nodata values:

For a Xarray object, one needs to force a float32+/NaN array to ensure the nodata are masked during the array interfacing operation,
For a Raster object, the NumPy masked arrays allows to support any data type, but the casting of classic NumPy functions to masked arrays is suspicious for a couple functions. For instance np.percentile cannot be cast to np.ma.percentile that does not exist in the masked array module, and so returns a NaN instead of masking nodata values, while other functions are naturally cast. There's only a few exceptions that don't work so well like this. To remedy this, I've added an override for those functions here: https://github.com/GlacioHack/geoutils/blob/main/geoutils/raster/raster.py#L2329. NumPy is working to make masked array fully consistent (including being able to call np.ma.func on any object that has a masked array, which is impossible right now), see for details: https://github.com/GlacioHack/geoutils/issues/358.

Overall, I agree with adding functionalities to address certain scalar metrics. Just a few remarks/questions:

I believe this should sit in geoutils rather than xdem, as it can be generalized to any raster
I'm wondering if having a function geoutils.scalar_metric.mean() for each metric makes sense. This would add confusion to using the easier alternative of np.mean(my_raster).
your example with the mean shows that it would add at least 20 lines of code (because of the overloads) to the code, for each metric, whereas the same can be obtained in 1 line for many of these statistics.
because of the two previous points, I'm wondering if we should not just add a method to the raster class for these statistics, like in pandas, e.g. my_raster.min(), my_raster.nmad() etc. Or if we don't want to add too many methods, they could be gathered in a my_raster.scalar_metric.min() etc. We get rid of the overloads (because it will only work on Raster type) and most methods would be a 1 line code.
regarding NMAD: we definitely discussed before the fact that nmad should be moved to a more appropriate location, so that's perfect. The only reason for having the nfact argument is probably to calculate the MAD instead of NMAD, but personally I have never used that argument and don't know of anyone who has, so we could also remove it (and add a MAD metric if relevant).

@duboise-cnes, I can't really answer your question as I didn't understand the meaning of this line

        "metrics": ["mean", {"ratio_above_threshold": {"elevation_threshold": [1, 2, 3]}}]

One more note that @adehecq's comment reminded me of on the MAD:
Adding the MAD to NumPy was already proposed and rejected 5+ years ago (with a not such a convincing excuse, in my opinion, pointing out the "niche" aspect of robust estimators), they redirected towards a statsmodel implementation at the time. Since then (3 years ago), there is a consistent SciPy implementation: https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.median_abs_deviation.html which is already a dependency for many other functionalities.
See details in our issue here: https://github.com/GlacioHack/xdem/issues/349.


Array replacer raises an error

The documentations says:

The first three arguments are the same as to JSON.stringify.

But when I try to pass an array of strings as the second parameter, the module raises an error:
> var object = { a: 'b', c: 'd' }
undefined
> stringify(object, ['a'])
TypeError: undefined is not a function
    at Object.<anonymous> (/node_modules/json-stringify-safe/stringify.js:25:48)
    at Object.stringify (native)
    at stringify (/node_modules/json-stringify-safe/stringify.js:5:15)
    at repl:1:11
    at REPLServer.defaultEval (repl.js:132:27)
    at bound (domain.js:254:14)
    at REPLServer.runBound [as eval] (domain.js:267:12)
    at REPLServer.<anonymous> (repl.js:279:12)
    at REPLServer.emit (events.js:107:17)
    at REPLServer.Interface._onLine (readline.js:214:10)

The same argument works with JSON.stringify:
> JSON.stringify(object, ['a'])
'{"a":"b"}'

Hey! Thanks for the report. You're right. That slipped through. Will fix it. ;-)

Incorporated into forked package https://www.npmjs.com/package/@merlin4/json-stringify-safe


bro why all hacks down

no hacks workin this can be fixed if not oh well

What's the error message, if any? @tommyboiiiiii

Ikr gui don’t work

All of mine don't work and Im on a school chromebook and have to do the bookmark javascript: thing.

Ya know, if you tell me the error message, I can fix them.

When i click on the bookmark it doesn't do anything.

and im using the coin hack in the shop.

when i use the school cheats one it says this link has been archived and send me to gilixxzys twitter or discord.

when i use the school cheats one it says this link has been archived and send me to gilixxzys twitter or discord. @VillainsRule4000

Use the hacks here then:
https://github.com/therealgliz/blooket-hacks
Click the name of the gamemode in the list.

its the global or the token.js

@sdkhfgvwierg IDK what you're talking about.

skill issue

dont use you'll get banned i just did!
On Sun, Sep 11, 2022 at 11:16 PM Toxic_Troll @.***>
wrote:

skill issue
—
Reply to this email directly, view it on GitHub
https://github.com/therealgliz/blooket-hacks/issues/407#issuecomment-1243166370,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AWQ335DR53EP52DHWSDGOH3V52OATANCNFSM56W3JS6Q
.
You are receiving this because you were mentioned.Message ID:
@.***>

L

Working cheats here: https://github.com/Minesraft2/Blooket-Cheats


openshot-qt: enable on darwin

Motivation for this change
Provide OpenShot on darwin
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[x] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

There is a FreeBSD port for openshot:
https://www.freshports.org/multimedia/openshot


Incompatible ipset protocols

When using openSuse MicroOS Kubic calico fails to use upsets:
2022-03-06 16:26:02.356 [ERROR][20604] felix/ipsets.go 574: Bad return code from ‘ipset list’. error=exit status 1 family=“inet” stderr=“ipset v7.1: Kernel and userspace incompatible: settype hash:ip with revision 5 not supported by userspace.\n”
2022-03-06 16:26:02.356 [WARNING][20604] felix/ipsets.go 322: Failed to resync with dataplane error=exit status 1 family=“inet”

Expected Behavior
Calico works and has no errors in its logs.
Current Behavior
Possible Solution

Steps to Reproduce (for bugs)

Install openSuse Kubic
2.Install a cluster
3.Install Calico (I used the 'less than 50 on bare metal'

Context
I am trying to build a cluster on Hetzner using minimal OS. Kubic comes with Kubernetes pre-installed so that saves on some installation steps.
Your Environment

Calico version: 3.22.1
Orchestrator version (e.g. kubernetes, mesos, rkt): k8s 1.23
Operating System and version: openSUSE MicroOS Kubic latest
Link to your project (optional):

It looks like you're hitting https://github.com/projectcalico/calico/issues/5011 which according to our release notes was fixed in Calico v3.22.1
https://projectcalico.docs.tigera.io/release-notes/#v3221

Except that OP states that he's using

Calico version: 3.22.1

@lwr20 yeah it looks like there are more reports of more reports of some ipset incompatibility in v3.22.1 in #5011

Is there anything I can do to help here? I can provide root access to my temporary servers that have this issue if needed.
I am now considering using Flannel, and otherwise looking for another lightweight host OS.

@joskuijpers Are you sure you're on v3.22.1.  The error message above says ipset v7.1 but v3.22.1 shipped with ipset v7.11
What is the version of ipset on the host itself, ipset version should show it.

We've tested it and it's fixed on amd64 clusters, however, this is still an issue for non-amd64 clusters (e.g. arm64). This is as expected because the original PR fixed it only for amd64: https://github.com/projectcalico/calico/pull/5485#discussion_r789876954
Is there a chance to get this fix for other architectures as well?
@joskuijpers Is your cluster a non-amd64 cluster by any chance?

Oh boy, more arm64 compilation steps.
@caseydavenport I'm afraid this will push the arm64 compilation time even higher.

@caseydavenport I'm afraid this will push the arm64 compilation time even higher.

Such is life. :sob:

This was fixed for arm64 in v3.23.2. The upcoming v3.22.4 will also have the fix when released.


test dhparam

I have no real idea of what I'm doing ;)

I cannot seem to make this spec fail. I'm guessing it has something to do with debian 8.3 with backports

I confirm it does not fail with Puppet 3.8. The problem in #59 must be somewhere else then.

I have now deprecated Puppet 3 for this module, but I'm merging your tests anyway, as 8c292251da3e7cbb54eca3086f20ed96f47f7082


DDL generator is missing attributes for Redshift tables (DBeaver 5.1.4)

Missing attributes:
varchar size of column
encode of column
sortkey of table
diststyle of table
distkey of table

DBeaver doesn't support Reshift-specific features yet.

Check this in 5.2


Rename binary to function

Based on conversation during test day, the consensus is that the binary and subsequent kn plugin should be renamed to functions. This has implications both in the name of the binary, but also in the CLI help strings as the faas.yaml filename.

function or functions?

I suppose it should be function

We should probaly rename env variables, such as $FAAS_CONFIRM,$FAAS_IMAGE, $FAAS_PATH and$FAAS_REGISTRY.
And what about  quay.io/boson/faas ?

Then we should follow up with renaming this repo from boson-project/faas -> /boson-project/function and change the occurrences in code (package..) :trollface:

Also, this should include rename of faas.yaml to function.yaml.


Typo on Dynamics365 V9 release notes.

Link to article:
Link
Problem:
Typo in the first sub-heading. Presumably should read Public Preview but currently reads Pubic Preview

@KumarVivek Can you take a look at this issue?

Fixed.


Preparing kernel for NFS/FEL-Boot?

Not an issue more a suggestion/question. Since A64 can boot through USB it might be worth an idea to prepare the kernel to load the rootfs through NFS.
Since we (Armbian Team) support quite a few sunxi boards we had a discussion whether we could use both FEL-boot and NFS to reduce the time between build and boot to 0 seconds (possible). The board will be connected to the build host via USB using the upper OTG port, after image creation the rootfs will be provided by NFS and by calling sunxi-fel the Pine64 already boots without inserted SD card. This might speed up OS image testing (not that important at this stage) but also situations where the board might frequently crash to prevent SD card corruption.
Link to discussion and  kernel config / Armbian build system changes

Sure i will add the NFS stuff to the Kernel config. Though i will probably not get myself too deep into FEL-anything :)

Ask apritzel, he loves sunxi-fel in the meantime ;)
Changing kernel settings already should be sufficient since everything else is stuff for uEnv.txt (the BSP u-boot seems recent enough. At least that's my hope)

Can you use the stuff from initrd? After thinking about it, i would rather not add all the NFS stuff directly into the Kernel by default as most users will never need it. Maybe you can add them to initrd?

Ok, everything should have been enabled in https://github.com/longsleep/linux-pine64/commit/decaa59a513a9d8584b279ab8c03aa5f6b358202


fdsfdfdsfds

What cog is this feature request for?
fdsfdsfdsf
Describe the feature request in as much detail as possible
dsfdsfdsfsdfsdfsd

im testing this cuz im poopoo


Implemented Filestore api

Resolves #37

@amaid A minor few changes to make here and in https://github.com/ipfs-shipyard/net-ipfs-core/pull/37.

Looks like the new AddFileOptions haven't been implemented in FileSystemApi.AddAsync, either.


4.6.0 Post-release checklist

These are chores that we should do before starting the cycle to reduce ripple effects if we do it in mid-cycle.
Applies to all releases

This list should be copied to versions in the future.

[x] Bump package.json to 4.6.1-0

#2528

[x] Verify the build works minimally
[x] ~On QFE branch, make sure CHANGELOG.md is cherry-picked to master~

Applies to major/minor releases

[x] Bump all dev tool chain to latest version

[x] All NPM packages (@babel/*, jest, lerna, typescript, webpack, etc) (#2533)
[x] Docker container for headless Chrome (#2545)

[x]  Run npm audit fix to make sure everything is fixed
[x] ~Bump React, Redux, and related dependencies to latest version~

We are locking React to 16.8.6 unless another major feature released

[x] ~Bump Adaptive Cards to latest version~

Currently, Adaptive Cards 1.2.3 is bugged

working on verifying the builds

All items finished.


Handle different LED color orders, simplify LED glasses use

Main Thing: ISSI eval board, QT matrix and glasses all now accept an optional color order argument in the constructor. At present this only benefits the QT matrix, where two different versions were produced, but the idea really is to future-proof all of these devices against future LED supply changes. QT matrix examples show how to use this.
Less Main Thing: Simpler API for LED glasses via a new class called EyeLights. Uses a single constructor, returns a single object…doesn’t require drawPixel() on one object and then show() on another, it’s all the same item. Glasses examples have been updated to use this. The old API/objects are still there for early code that might be using them, but won’t be documented in any guides, and new projects should use the new approach. The separation between old & new is pretty well demarcated in the code and header and at some point we should be able to safely delete.
Tertiary Thing: numerous minor bug fixes, speed improvements, size reduction through refactoring, and better documented a few items.

If/when merged, I’ll bump the library version # and make a new release 1.2.0, because changes are not minor (but shouldn’t break existing code).

Fixed now. For some reason CI fails when I commit to my branch (some nonsense error about can’t make a UF2, unrelated to the code) and never got to the doxy step, is why I didn’t see these before. 🤷♂

thhanx, the ci tool was broken this morning, but should be ok now


Run fails when ssh not installed

Describe the Issue
Does not work without ssh package, does not respect ubtu18stig_ssh_required: false
Expected Behavior
All tasks relating to ssh should be skipped.
Actual Behavior
TASK [/home/user/UBUNTU18-STIG : HIGH | UBTU-18-010412 | PATCH | The Ubuntu operating system must enforce SSHv2 for network access to all accounts.]
fatal: [localhost]: FAILED! => {"changed": false, "msg": "Destination /etc/ssh/sshd_config does not exist !", "rc": 257}

Control(s) Affected
010412
010420
010424
010411
010414
010415
010416
010417
010418
010419
010512
and possibly more, I gave up here.
Environment (please complete the following information):

devel (==main)
Ansible Version: 2.9.27
Host Python Version: 2.7.17 (old, I know)
Ansible Server Python Version: 2.7.17
Additional Details:
Ubuntu Desktop 18.04.5 LTS
ssh package NOT installed

Additional Notes
Steps to reproduce:

git clone https://github.com/ansible-lockdown/UBUNTU18-STIG
sed -i 's/ubtu18stig_ssh_required: true/ubtu18stig_ssh_required: false/' UBUNTU18-STIG/defaults/main.yml
ansible-playbook -D UBUNTU18-STIG/site.yml -i localhost, --connection=local -e "ansible_become_password=[password]" | tee stig.txt

Possible Solution
I ran these to get past the 10 failing tasks.
sed -i '/ubtu_18_010412/a\      - ubtu18stig_ssh_required' UBUNTU18-STIG/tasks/fix-cat1.yml
sed -i '/ubtu_18_010420/a\      - ubtu18stig_ssh_required' UBUNTU18-STIG/tasks/fix-cat1.yml
sed -i '/ubtu_18_010424/a\      - ubtu18stig_ssh_required' UBUNTU18-STIG/tasks/fix-cat1.yml
sed -i '/ubtu_18_010411/a\      - ubtu18stig_ssh_required' UBUNTU18-STIG/tasks/fix-cat2.yml
sed -i '/ubtu_18_010414/a\      - ubtu18stig_ssh_required' UBUNTU18-STIG/tasks/fix-cat2.yml
sed -i '/ubtu_18_010415/a\      - ubtu18stig_ssh_required' UBUNTU18-STIG/tasks/fix-cat2.yml
sed -i '/ubtu_18_010416/a\      - ubtu18stig_ssh_required' UBUNTU18-STIG/tasks/fix-cat2.yml
sed -i '/ubtu_18_010417/a\      - ubtu18stig_ssh_required' UBUNTU18-STIG/tasks/fix-cat2.yml
sed -i '/ubtu_18_010418/a\      - ubtu18stig_ssh_required' UBUNTU18-STIG/tasks/fix-cat2.yml
sed -i '/ubtu_18_010419/a\      - ubtu18stig_ssh_required' UBUNTU18-STIG/tasks/fix-cat2.yml

But after all of that I still get this
TASK [/home/user/UBUNTU18-STIG : MEDIUM | UBTU-18-010512 | PATCH | The Ubuntu operating system must configure the uncomplicated firewall to rate-limit impacted network interfaces. | limit on service] *********************************************************************************************
failed: [localhost] (item=OpenSSH) => {"ansible_loop_var": "item", "changed": false, "commands": ["/usr/sbin/ufw status verbose", "/bin/grep -h '^### tuple' /lib/ufw/user.rules /lib/ufw/user6.rules /etc/ufw/user.rules /etc/ufw/user6.rules /var/lib/ufw/user.rules /var/lib/ufw/user6.rules", "/usr/sbin/ufw --version", "/usr/sbin/ufw limit from any to any app 'OpenSSH'"], "item": "OpenSSH", "msg": "ERROR: Could not find a profile matching 'OpenSSH'\n"}

I gave up at that point and resolved it with
sudo apt-get install -y ssh

It seems that this is just not setup to run on a system without ssh.

Sorry for the delay in this taking a look at it today and will address it.

This will be fixed in the upcoming release for v2r10 and that option will be removed, this was artifact from a old release.  If you would like to run the playbook you can either shut off the controls in the default/main file, or run your playbook ansible-playbook example.yml --skip-tags "ssh"


Missing 'Reveal' definition

My bad - but no, the docs never mentioned this was Prerelease API 1803.
Disregard my issue.
I added this on my app which targets 16299, but an error shows that FocusVisualKind does not contain a definition for Reveal...
Am I missing an SDK or something?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 1cf80b3e-ce8c-b3bd-c87a-5d8ddc0f2b92
Version Independent ID: 9a7d0b0f-e373-1e50-ab9f-69ec00e21dc4
Content: Reveal focus - UWP app developer
Content Source: windows-apps-src/design/style/reveal-focus.md
Service: unspecified
GitHub Login: @cphilippona
Microsoft Alias: mijacobs

I tried the same thing and got the same error. I'm guessing we need to wait until the Spring Creators Update with the new SDK

This feature is part of an upcoming update that will RTM later this month. If you'd like to use the feature now, you can join the Windows Insider Program and get the pre-release OS and SDK:
https://insider.windows.com/en-us/
(Btw, we're working on improving the docs to make these sort of OS/SDK requirements more clear--thank you for filing an issue!)


delete keys to ban?

could it be possible to delete your private keys while playing, making it possible to ban people at will?

That's not how this works lol
if you just stopped sending your key with your messages/send a bad key, it would either

Not let you chat
Send it as an "unverified message"
Kick you from the server

The only way to kick others from the server is by waiting for your key to expire


Move phpunit to require-dev

Codecov Report

Merging #2 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             master     #2   +/-   ##
=======================================
  Coverage       100%   100%
- Complexity        0     41   +41
=======================================
  Files             2      2
  Lines            92     90    -2
=======================================
- Hits             92     90    -2

Impacted Files
Coverage Δ
Complexity Δ

src/class-container.php
100% <ø> (ø)
39% <ø> (+39%)
:white_check_mark:

Continue to review full report at Codecov.

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

Also added a fix for travis, the config had invalid calls to global phpunit


Some questions

Hey there,
First one, congratulations about the project, it's amazing!
I have a few questions about the usability:

Can I use the filter only in only a specific column? If so, how do I do it?

Can I use a range to the search? If so, how do I do it?

Thank you!

See here in the sample app:

@tom-englert, thanks you for answer.
I can't compile the sample app, if you can, please send me a code-example (just for the 1st question).
Anyway, I will try compile that again.
Thanks you so much =D


Release Google.Cloud.Datastore.V1 version 2.2.0

Most important changes since 2.1.0:

Implement DatastoreDbBuilder for easy configuration, including emulator support
Multiple code generation improvements

(The release notes are a bit fuzzy - it's a long time since 2.1.0, so the API compatibility checker doesn't know what's going on - it looks for netstandard2.0.)


Fixed translation of "製品要求仕様書"

I think "Product requirements document" is better than "Product requirement document".
ref. https://en.wikipedia.org/wiki/Product_requirements_document

Exactly! Thank you for the fix :+1:


Add support for the ubuntu platform.

Hello,
That seems a great addition! Thanks!
But I don't have any ubuntu device, so I can't test :)
Anyway, if you tell me it works, it's ok to merge, since it will be a starting point for other to test!
Thanks again,
Regards

Yes it does work, at least on my Ubuntu Desktop system. Thanks in advance for merging it!

Oh, I was thinking it was for ubuntu phones, if it's for desktop I will test it!

My hope is that it will work on both Ubuntu Phone and Desktop, but so far I have tested it only on Desktop.

@hexluthor Hello,
It is very nice extension for this plugin, but it doesn't work for me. Can u write small exmaple of requestPermision, open and write because exmaple from android version is not working. Should I pass vid and pid too ?  I am using device which has two interfaces data and control, probably using ttyACM0 instead of ttyUSB0, is it this problem ? How can i see error messages from callback function? I would really appreciate help.

Hi @ChoseKurosa. I don't think requestPermission() will really matter under Ubuntu Desktop. That's more of a smartphone thing. My plugin assumes that the Linux kernel has already enumerated the serial device as e.g. /dev/ttyUSB0 so specifying the VID/PID won't help. You have a different device name so you'll need to specify that: serial.open({device: "/dev/ttyACM0"});. Error messages should appear as the first parameter to your errorCallback().
Two interfaces will be tough, as I believe this library only supports one serial port.
I suspect you might be experiencing a permission problem. Under Ubuntu you probably need to be a member of the dialout group to access the serial devices. Confirm that your user account can access the device using, for example cutecom.

var errorCallback = function (message) { 			alert('Error: '+message); };  var succCallback = function (message) { 			alert('succ: ' + message); };
serial.write('CONNECT\tREQ\n',succCallback, errorCallback);
For e.g. this implementation is working well on android, but nothing happens in ubuntu (using console.log()). In some cases message is undefined.
Cutecom can open device but device is not responding after sending command. I am member of the dialout. I have already specified in serial.cpp: serial.open({device: "/dev/ttyACM0"});.
serial.requestPermission( 	function(successMessage) { console.log("Opening port!");    	$rootScope.serial.open(	{baudRate: 9600},  function(successMessage) {     	}, errorCallback);    },    errorCallback );
It is strange because even in this case console.log doesn't show. I think my implementation is bad but i don't know how it can work. Also cutecom should work as well.

One thing to be aware of is that Linux allows multiple processes to open the same serial port simultaneously but only one will actually receive incoming data. Disconnecting and reconnecting the USB cable should close any other processes vying for the same port.
Try to figure out why cutecom isn't working. Check your wiring. If cutecom doesn't work, cordovarduino will never work.

Encoding for sending data to my device should be windows 1250. Do you think that this can be the problem ?

I doubt it. For plain text, Windows-1250 shouldn't be any different. If the device is expecting wide (16-bit) characters, that could be a problem.
You mentioned that you have it working on Android. Can you connect the transmit wire from the Android device to the receive pin on the Ubuntu desktop? Then you can confirm exactly what bytes are being transmitted by Android. cutecom has a handy "Hex output" mode.
If you have a spare UART, you can then repeat the same test under Ubuntu with one UART looped-back to the other and examine what bytes are being transmitted, if any. With proper wiring you should be able to run two cutecoms simultaneously and type messages between them.

Cutecom is sending data in bad way. I think i have a problem with this plugin installation and implementing because even errorCallback are not calling. I think methods in serial.cpp is not call either. I did whole installation according to the instructions.


Code is bad

All the code sucks because Pazer is an incompetant idiot, please see PR #75 for a start on a fix

I don't know how obvious this is but better do not download anything that guy there posts. I'm not a programmer so I don't understand code. If someone just randomly comes in and calls the author an "incompetent idiot" chances are high this is a salty cheater who's trying to infect you with a virus or something.
Even if it's not the case, their attitude should be a red flag.

I don't know how obvious this is but better do not download anything that guy there posts.
I dont understand what you mean here, Who's "that guy"?
I'm not a programmer so I don't understand code. If someone just randomly comes in and calls the author an "incompetent idiot" chances are high this is a salty cheater
I agree with that.
who's trying to infect you with a virus or something.
I dont understand how he will infect me with a virus if he didn't upload any files or anything. But, Yeah that's a possibility.

Maybe I don't understand how GitHub works but the link leads to this page with a bunch of (already deleted) files:
https://github.com/PazerOP/tf2_bot_detector/pull/75/commits/a39d6d3fd49a4b6e58bf63593fba016fe3872756

Maybe I don't understand how GitHub works but the link leads to this page with a bunch of (already deleted) files:
a39d6d3

Oh wow, I didn't notice that one, Thank you!

If someone just randomly comes in and calls the author an "incompetent idiot" chances are high this is a salty cheater

I can confirm he's a cheater, by seeing his lua scripted "cheat" for tf2 [apparently]

The pull request just deletes all the files. Definitely a salty cheater 😂

Lovely, well forget this guy Pazer keep up the good work! Hopefully one day the community itself can become casual's VACC shield by setting up software to auto kick cheating software!

that's a troll, in his repo he simply deleted all the files


Enable critest to use CRI server configuration file similar to crictl

crictl tool allows CRI server configuration to be set in the following ways:

CLI flags like --runtime-endpoint and image-endpoint
Config file as specified by CLI flag (--config), in default system location, or in the binary path
default values

critest uses:

CLI flags like --runtime-endpoint and image-endpoint
default values

I think critest CRI server configuration should work similar to crictl. For example, if user configures crictl to use containerd in a config file, then critest should work the same without having to pass the containerd runtime flag to it.

If this is accepted, I would like to work on this if that's ok?

/assign @hickeyma

Yes I agree they should behave the same. Feel free to open a PR for it if no other voices raise up. :)

Thanks @saschagrunert. I will push a PR soon unless someone objects in the meantime.

/assign @hickeyma

Pushed PR #594


(MAINT) added overview to main README

Refer to this link for build results (access rights to CI server needed):
http://jenkins-beaker.delivery.puppetlabs.net//job/qe_beaker_btc-intn/2525/


lastest Unity DEMO pointclound  ：out of memory and unity crash！

Before opening a new issue, we wanted to provide you with some useful suggestions (Click "Preview" above for a better view):

Consider checking out SDK examples.

Required Info

Camera Model
{ R200 / F200 / SR300 / ZR300 / D400 }

Firmware Version
(Open RealSense Viewer --> Click info)

Operating System & Version
{Win (10)

Platform
unity

SDK Version
latest }

Issue Description
<Describe your issue / question / feature request / etc..>

Hi @Zhangliuwei
I also experienced the same issue. After isolating and testing different parts of PointCloudGenerator.cs, I have found that the reason may be how FrameQueue pointsQueue manages its frames. At the line 69 (pointsQueue.Enqueue(points);), the reference count of points is increased by pointsQueue but I could not find where it is decreased in the native code.
So I think that garbage collector is not able to clean up unused memory of pointsQueue. I have decided not to use this queue and implemented two alternative queues to store the vertices and texture coordinates instead. It seems to work well so far if running on Unity Thread. I haven't found how to solve the issue when processing the frames with Multithread.
Here is my alternative implementation of PointCloudGenerator.cs
public class PointCloudGenerator : MonoBehaviour
{
    private ParticleSystem.Particle[] particles = new ParticleSystem.Particle[0];
    private PointCloud pc = new PointCloud();
    //FrameQueue pointsQueue = new FrameQueue(1);
    Points.Vertex[] vertices;
    Points.TextureCoordinate[] textureCoordinate;
    private byte[] lastColorImage;
    Texture2D colorTexture;
    private int colorFrameWidth;
    private int colorFrameHeight;

    public bool mirrored;
    public float pointsSize = 0.01f;
    public int skipParticles = 2;
    public ParticleSystem pointCloudParticles;

    Queue textureQueue = Queue.Synchronized(new Queue());
    Queue vertexQueue = Queue.Synchronized(new Queue());

    // Use this for initialization
    void Start()
    {
        //RealSenseDevice.Instance.onNewSample += OnFrame;
        RealSenseDevice.Instance.onNewSampleSet += OnFrames;

    }
    object l = new object();
    private void OnFrames(FrameSet frames)
    {
        if(frames.DepthFrame == null)
        {
            Debug.Log("No depth frame in frameset, can't create point cloud");
            return;
        }

        if (!UpdateParticleParams(frames.DepthFrame.Width, frames.DepthFrame.Height))
        {
            Debug.Log("Unable to create point cloud");
            return;
        }

        using (var points = pc.Calculate(frames.DepthFrame))
        {
            if (frames.ColorFrame != null)
            {
                if (frames.ColorFrame.BitsPerPixel == 24)
                {
                    pc.MapTexture(frames.ColorFrame);
                    colorFrameWidth = frames.ColorFrame.Width;
                    colorFrameHeight = frames.ColorFrame.Height;
                    var newSize = frames.ColorFrame.Stride * colorFrameHeight;
                    lock (l)
                    {
                        if (lastColorImage == null || lastColorImage.Length != newSize)
                            lastColorImage = new byte[newSize];

                        frames.ColorFrame.CopyTo(lastColorImage);
                    }
                }
            }

            Points.Vertex[] tmpvertices = new Points.Vertex[points.Count];
            points.CopyTo(tmpvertices);
            vertexQueue.Enqueue(tmpvertices);

            Points.TextureCoordinate[] tmpTextureCoordinate = new Points.TextureCoordinate[points.Count];
            points.CopyTo(tmpTextureCoordinate);
            textureQueue.Enqueue(tmpTextureCoordinate);

            //pointsQueue.Enqueue(points);
        }
    }

    private bool UpdateParticleParams(int width, int height)
    {
        var numParticles = (width * height);
        if (particles.Length != numParticles)
        {
            particles = new ParticleSystem.Particle[numParticles];
        }

        return true;
    }

    void Update()
    {
        /*
        Frame frame;
        if (pointsQueue.PollForFrame(out frame))
        {
            using (Points points = frame as Points)
            {
                if (points == null)
                    throw new Exception("Frame in queue is not a points frame");

                vertices = vertices ?? new Points.Vertex[points.Count];
                points.CopyTo(vertices);

                lock (l)
                {
                    if (textureCoordinate == null || textureCoordinate.Length != points.Count)
                        textureCoordinate = new Points.TextureCoordinate[points.Count];

                    points.CopyTo(textureCoordinate);

                    if (lastColorImage != null)
                    {
                        if (colorTexture == null || colorTexture.width != colorFrameWidth || colorTexture.height != colorFrameHeight)
                        {
                            colorTexture = new Texture2D(colorFrameWidth, colorFrameHeight, TextureFormat.RGB24, false, true)
                            {
                                wrapMode = TextureWrapMode.Clamp,
                                filterMode = FilterMode.Point
                            };
                        }

                        colorTexture.LoadRawTextureData(lastColorImage);
                        colorTexture.Apply();
                    }
                }

                Debug.Assert(vertices.Length == particles.Length);
                int mirror = mirrored ? -1 : 1;
                for (int index = 0; index < vertices.Length; index += skipParticles)
                {
                    var v = vertices[index];
                    if (v.z > 0)
                    {
                        particles[index].position = new Vector3(v.x * mirror, v.y, v.z);
                        particles[index].startSize = pointsSize;
                        particles[index].startColor = colorTexture.GetPixelBilinear(textureCoordinate[index].u, textureCoordinate[index].v);
                    }
                    else //Required since we reuse the array
                    {
                        particles[index].position = Vector3.zero;
                        particles[index].startSize = 0;
                        particles[index].startColor = Color.black;
                    }
                }
            }
        }
        */

        if (vertexQueue.Count > 0 && textureQueue.Count > 0)
        {
            vertices = (Points.Vertex[])vertexQueue.Dequeue();
            textureCoordinate = (Points.TextureCoordinate[])textureQueue.Dequeue();

            lock (l)
            {
                if (lastColorImage != null)
                {
                    if (colorTexture == null || colorTexture.width != colorFrameWidth || colorTexture.height != colorFrameHeight)
                    {
                        colorTexture = new Texture2D(colorFrameWidth, colorFrameHeight, TextureFormat.RGB24, false, true)
                        {
                            wrapMode = TextureWrapMode.Clamp,
                            filterMode = FilterMode.Point
                        };
                    }

                    colorTexture.LoadRawTextureData(lastColorImage);
                    colorTexture.Apply();
                }
            }

            Debug.Assert(vertices.Length == particles.Length);
            int mirror = mirrored ? -1 : 1;
            for (int index = 0; index < vertices.Length; index += skipParticles)
            {
                var v = vertices[index];
                if (v.z > 0)
                {
                    particles[index].position = new Vector3(v.x * mirror, v.y, v.z);
                    particles[index].startSize = pointsSize;
                    particles[index].startColor = colorTexture.GetPixelBilinear(textureCoordinate[index].u, textureCoordinate[index].v);
                }
                else //Required since we reuse the array
                {
                    particles[index].position = Vector3.zero;
                    particles[index].startSize = 0;
                    particles[index].startColor = Color.black;
                }
            }

        }

        //Either way, update particles
        pointCloudParticles.SetParticles(particles, particles.Length);
    }
}

[Realsense Customer Engineering Team Comment]
hi @Zhangliuwei
would like to confirm if solution for #1394 works for you?
thanks.

[Realsense Customer Engineering Team Comment]
let me close this ticket here and please feel free to create new ticket if any question.


Openstack command to create a VM + k8s is not correct

Issue
The document page of openstack is not correct as the command suggested fails to create a VM as it tries to create the VM on hetzner
ansible-playbook playbook/openstack_vm_create_aggregate.yml -e k8s_type=masters -e k8s_version=121 \
-e vm_name=${VM_NAME} --tags create

Result
ansible-playbook playbook/openstack_vm_create_aggregate.yml -e k8s_type=masters -e k8s_version=121 -e vm_name=${VM_NAME} --tags create
[WARNING]:  * Failed to parse /Users/cmoullia/code/snowdrop/infra-jobs-productization/k8s-infra/ansible/inventory/id_openstack.rsa with ini plugin: /Users/cmoullia/code/snowdrop/infra-jobs-
productization/k8s-infra/ansible/inventory/id_openstack.rsa:1: Expected key=value host variable assignment, got: OPENSSH
[WARNING]: Unable to parse /Users/cmoullia/code/snowdrop/infra-jobs-productization/k8s-infra/ansible/inventory/id_openstack.rsa as an inventory source
[WARNING]:  * Failed to parse /Users/cmoullia/code/snowdrop/infra-jobs-productization/k8s-infra/ansible/inventory/pass_inventory.py with script plugin: Inventory script (/Users/cmoullia/code/snowdrop/infra-jobs-
productization/k8s-infra/ansible/inventory/pass_inventory.py) had an execution error: Traceback (most recent call last):   File "/Users/cmoullia/code/snowdrop/infra-jobs-
productization/k8s-infra/ansible/inventory/pass_inventory.py", line 55, in <module>     for (dirpath, dirnames, filenames) in walk(password_store_dir):   File
"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.py", line 278, in walk     names = listdir(top) TypeError: coercing to Unicode: need string or buffer, NoneType found
[WARNING]:  * Failed to parse /Users/cmoullia/code/snowdrop/infra-jobs-productization/k8s-infra/ansible/inventory/pass_inventory.py with ini plugin: /Users/cmoullia/code/snowdrop/infra-jobs-
productization/k8s-infra/ansible/inventory/pass_inventory.py:6: Error parsing host definition '"""': No closing quotation
[WARNING]: Unable to parse /Users/cmoullia/code/snowdrop/infra-jobs-productization/k8s-infra/ansible/inventory/pass_inventory.py as an inventory source

PLAY [Check the passwordstore installation] ****************************************************************************************************************************************************************************

TASK [Check passwordstore installation] ********************************************************************************************************************************************************************************

TASK [passstore/check : Validate pass is installed] ********************************************************************************************************************************************************************
changed: [localhost]

TASK [passstore/check : Validate PASSWORD_STORE_DIR environment variable is set if password_store_dir is not set] ******************************************************************************************************
ok: [localhost]

TASK [passstore/check : Validate password_store_dir environment variable is set] ***************************************************************************************************************************************
skipping: [localhost]

TASK [passstore/check : Check Hetzner structure] ***********************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"msg": "An unhandled exception occurred while running the lookup plugin 'passwordstore'. Error was a <class 'ansible.errors.AnsibleError'>, original message: passname: hetzner/console not found, use create=True"}

PLAY RECAP *************************************************************************************************************************************************************************************************************
localhost                  : ok=2    changed=1    unreachable=0    failed=1    skipped=1    rescued=0    ignored=0

To be fixed (= docu page reviewed completely) and retested

passwordstore validation role doesn't find the hetzner folder.

The ticket has been opened for openstack and not hetzner. So why do you say that ? @jacobdotcosta

Question: Do we have to pass as parameter -e type=cloude to create an openstack VM ?

Probably due to the PASSWORD_STORE_DIR environment variable not being positioned correctly.

If I set the password-store, then I got another error
TASK [Pull pass git database] ******************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": true, "cmd": "git pull", "delta": "0:00:00.047297", "end": "2022-03-24 08:58:23.061211", "msg": "non-zero return code", "rc": 128, "start": "2022-03-24 08:58:23.013914", "stderr": "error: cannot pull with rebase: You have unstaged changes.\nerror: please commit or stash them.", "stderr_lines": ["error: cannot pull with rebase: You have unstaged changes.", "error: please commit or stash them."], "stdout": "", "stdout_lines": []}

Remark: I still don't understand why the openstack playbook reports something about hetzner -->
TASK [passstore/check : Check Hetzner structure] ***********************************************************************************************************************************************************************
ok: [localhost]

If I try this command
pass-team (= alias that I use to use password team)
ansible-playbook playbook/openstack_vm_create_aggregate.yml -e type=cloude -e k8s_type=masters -e k8s_version=121 -e vm_name=${VM_NAME} --tags create

then we got as error
TASK [openstack/vm : Create VM instance] **************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "extra_data": null, "msg": "Network ['default_network'] is not a valid network in defaults:"}

@jacobdotcosta

When we try to remove the VM, we got also another error from macbook
ansible-playbook playbook/openstack_vm_create_aggregate.yml -e type=cloude -e k8s_type=masters -e k8s_version=121 -e vm_name=${VM_NAME} -e '{"openstack": {"vm": {"network": "provider_net_shared"}}}' --tags remove
...
TASK [Show 'Wait for connection to host' output] ******************************************************************************************************************************************
ok: [k121-tap] => {
    "msg": [
        "ip : <IP_ADDRESS>",
        "port : 22"
    ]
}

TASK [Wait for connection to host] ********************************************************************************************************************************************************
The authenticity of host '<IP_ADDRESS> (<IP_ADDRESS>)' can't be established.
ECDSA key fingerprint is SHA256:yrcphttnA9a/koq+Ib7E6wuRQUjhNlwq0Hly2uln3CU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
fatal: [k121-tap]: FAILED! => {"changed": false, "module_stderr": "Shared connection to <IP_ADDRESS> closed.\r\n", "module_stdout": "/bin/sh: /usr/bin/python: No such file or directory\r\n", "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error", "rc": 127}

PLAY RECAP ********************************************************************************************************************************************************************************
k121-tap                   : ok=1    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
localhost                  : ok=33   changed=7    unreachable=0    failed=0    skipped=19   rescued=0    ignored=0

@jacobdotcosta

To be fixed
ansible-playbook playbook/openstack_vm_remove_aggregate.yml -e type=cloude -e k8s_type=masters -e k8s_version=121 -e vm_name=${VM_NAME} -e '{"openstack": {"vm": {"network": "provider_net_shared"}}}'
...
TASK [openstack/vm : Set required facts] **************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result"}

PLAY RECAP ********************************************************************************************************************************************************************************
localhost                  : ok=14   changed=4    unreachable=0    failed=1    skipped=4    rescued=0    ignored=0

@jacobdotcosta

What is the workaround ? @jacobdotcosta
ansible-playbook playbook/openstack_vm_create_aggregate.yml \
  -e type=cloude \
  -e k8s_type=masters \
  -e k8s_version=121 \
  -e vm_name=${VM_NAME} \
  -e '{"openstack": {"vm": {"network": "provider_net_shared","flavour":"m1.large"}}}' \
  --tags create
...
PLAY [Wait for the VM to boot and we can ssh] *********************************************************************************************************************************************

TASK [Show 'Wait for connection to host' output] ******************************************************************************************************************************************
ok: [k121-tap] => {
    "msg": [
        "ip : <IP_ADDRESS>",
        "port : 22"
    ]
}

TASK [Wait for connection to host] ********************************************************************************************************************************************************
fatal: [k121-tap]: FAILED! => {"changed": false, "module_stderr": "Shared connection to <IP_ADDRESS> closed.\r\n", "module_stdout": "/bin/sh: /usr/bin/python: No such file or directory\r\n", "msg": "The module failed to execute correctly, you probably need to set the interpreter.\nSee stdout/stderr for the exact error", "rc": 127}

Fixing the whole OpenStack creation with our passwordstore...
TASK [openstack/vm : Get information about keypairs using optional parameters] ***************************************************************************************************************************************************************
Tuesday 05 July 2022  14:52:06 +0200 (0:00:29.458)       0:01:59.966 **********
An exception occurred during task execution. To see the full traceback, use -vvv. The error was:     None (HTTP 400)

Fixed.
VM_NAME=fedora-35-leesa-odelia ; ansible-playbook playbook/openstack/openstack_vm_create_paswordstore.yml -e vm_name=${VM_NAME} -e k8s_type=masters -e k8s_version=123 -e '{"openstack": {"vm": {"network": "provider_net_shared","image": "Fedora-Cloud-Base-35", "flavor": "m1.medium"}}}' -e key_name=test-adm-key

...
PLAY RECAP ***********************************************************************************************************************************************************************************************************************************
localhost                  : ok=20   changed=9    unreachable=0    failed=0    skipped=2    rescued=0    ignored=0


Feature: playing multiple sounds at once

While using the board, we often encountered sounds being accidentally overwriten by other users. Maybe it's possible to allow any sound to be played without aborting the previous one?

This should be a straightforward thing to implement and seems sensible to me.
IIRC there was no "Stop"-button in earlier versions of the soundboard, so overwriting a sound with a new one was the only way to stop it. This was crucial for stopping some of the minute-long sounds we had...

Implement in #10.


Proposal for an improved CglibThrowableRenderer

Following our discussions on mailing list, here is a PR with a proposal for an improvement on “CglibThrowableRenderer”. We would still have to define a number to limit the stack traces of causes (I randomly chose 3, just to get the code running). The test case is also not good in my opinion, but I ran out of ideas (waiting for suggestions on that).

LGTM, reviewing this I finally understand why we have a custom renderer at all. The travis failing checks are unrelated timeouts.

Does anyone else have some ideas on how to test that code?
I am not comfortable with the test I coded, the test feels shallow.

The tests that have failed do not seem to be related to the code that was changed.

@rafaelweingartner I see windows line endings in the new test file. Can you fix that please?
Other than that, LGTM. once thats fixed I will merge

since this fixes slow build, I am going to merge this PR and push another commit for line endings fix.

@Karuturi, Sorry for the windows line endings (did you see that on log files? I was not able to see anything there). Sometimes I jump between OS and forget that I am coding from a Windows machine, instead of my usual Ubuntu.
BTW: I think we are in very different time zones, I just woke up. Thanks for the windows line fix.

cat -v filename will show you line endings.
I figured the timezone issue. didnt want to wait for another day with broken build. hence pushed it.
The recent build passed. Thanks :)

With your comments, I fixed my Eclipse configuration on my Windows
environment, now I am using UNIX lines for ACS on windows.
On Tue, Sep 1, 2015 at 9:33 AM, Rajani Karuturi<EMAIL_ADDRESS>wrote:

cat -v filename will show you line endings.
I figured the timezone issue. didnt want to wait for another day with
broken build. hence pushed it.
The recent build passed. Thanks :)
—
Reply to this email directly or view it on GitHub
https://github.com/apache/cloudstack/pull/762#issuecomment-136698602.

--
Rafael Weingärtner


Add project filtering

Added parameters groups and projects that can be used to filter projects by specific groups and/or projects.
This pr partly implements the suggested solution of issue #8

Nice! Thank you :)


Ideas about preemption.

I thought I'd just open this issue to share my ideas about preemptive multitasking. Currently, we have a very basic preemptive scheduler, using something akin to the Round Robin scheduling algorithm. A simple way to implement priority scheduling would be to add several different process queues. In pseudocode:
pub struct Scheduler {
    // ...
    process_queues: [RwLock<ProcessList>; n],
}

N.B I have renamed CoopScheduler to Scheduler, since our global kernel scheduler has not been a cooperative scheduler since PIT support was added, realistically speaking.
n here can just be however many process queues we want to have. Ideally, when a process is created, it has a set priority and the scheduler automagically pushes the new process to the correct queue. A helper method checks whether each queue is empty in turn when a rescheduling call is made. If any of the higher process queues are not empty, then the first available process there gets marked as the next process to run. Of course, this process would also have to be marked as ready for the scheduler to be allowed to run it. This in theory should not be too difficult to implement. If such a scheduling algorithm were to be implemented, we would be using Priority-based  Round Robin scheduling of a kind.

Hi Will, thanks for the contribution!
I am planning on using xinu's implementation of Priority Scheduling first since this project focuses on re-implementing the xinu operating system.
This system will use one process queue and aging to ensure all processes are able to run.
I'll eventually add more scheduler implementations.  A secondary goal of this project is to make the kernel extensible and useful for research.  I think an interesting exercise with the kernel could be benchmarking various scheduling programs.

Interesting, good to know. Thanks.


229 integration of i2masschroq results in dda quantification ion level module

I have made the toml, and added "i2MassChroQ" where needed (included to set up the colors of the dots, maybe we want to make this bit automatic).
I have not work at all on tests. I am happy to do so but may need pointers, never did testing before.
There is an error, and I think that it is connected to proforma parsing. The error message is triggered from get_proforma_bracketed (from what I understood):

here is an example of a modified sequence in the input table: "AALQEELQLC[MOD:00397]K"

looks good. @wolski , we turned off some features of the plots that you added because it was becoming too slow. We can discuss this.


Improved theme settings and auto theme

Description
The theme selection has been improved by replacing the dropdown with theme previews. Additionally, an auto option has been added, which automatically syncs the application's theme with the system preference.
Changelog

replaced the theme setting dropdown with a radio group of theme previews
added auto setting
added event listener to update theme if system preference changes
fixed German language not being selectable with keyboard

Checklist

[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[x] The light- and dark-theme are both supported and tested
[x] The design was implemented and is responsive for all devices and screen sizes
[x] The application was tested in the most commonly used browsers (e.g. Chrome, Firefox, Safari)

Visual Changes
Auto sync:

Doing the PR soon, but here is a sneak preview:
The state updates only when going to the appearance settings, not before.
https://user-images.githubusercontent.com/44020029/185094247-ac6521ba-5d7a-470f-a924-2153b8b813fc.mov


Taps Not Working on Simulator

Describe the bug
When the tap method is called, Detox attempts to tap the button (as the circle shows up) but nothing happens. If instead of tap I use multiTap(2) the button works correctly. If I click on the button on the simulator the button works correctly so tap should as well.
To Reproduce

[x] I have tested this issue on the latest Detox release and it still reproduces

Environment (please complete the following information):

Detox: 12.11.0
React Native: 0.59.8
Node: 10.15.3
Device: iPhone 7
Xcode: 10.2.1
iOS: 12.2
macOS: 10.14.3

Not sure what you expects us to do here. This is most likely a problem on your end, rather than Detox. Create a new, clean project, try to reproduce it, and if you can, please attach that project here.

@LeoNatan doesn't the tap function mimic the same thing as when I press on a button through the simulator? Why would one work but not the other?
It's not the problem of getting the wrong element because multiTap is able to replace tap and work.

Touch events are generated using the same low-level system API as normal events are reported to the app. Since you mentioned that the touch indicator circle shows up when you tap(), that means the system has correctly sent the touch events. This is why I suspect a problem on your end, rather than in Detox.

@LeoNatan Could it have anything to do with it being the second instance of the button on the screen?
    await element(by.text('LOG IN')).tap(); // navigates to log in screen
    await logIn('autotest', 'autotest'); // function to fill out form
    await element(by.text('LOG IN')).atIndex(1).multiTap(2); // just tap doesn't work
    await element(by.id(AppMenu.MenuButton.ProfilePhoto)).tap(); // works

If not, since tap seems to work with other elements I'll just leave multiTap.

Why not add a testID and match by.id()?

@LeoNatan I tried switching it to id and tap still doesn't work.

If you see the circle touch indicator, the tap works. Your app doesn't respond to it.

I will please direct you to Stack Overflow for more assistance, as there is not much else we can do here.


Site cloudflare deployment

After some investigation, Mosaic currently does not support static hosting or the edge runtime, so we cannot use Cloudflare to host the new site.
We've raised these issues to the Mosaic team, but for now, we will use Vercel to host the site.

Feb 21 - in progress

Done; the site is available at https://next.saltdesignsystem.com


added space between search area and search icon

hi, I have added space between the search area and search icon which was not present before this and was not looking good at the website.

please accept my PR


MAINT: git security shim for 1.9.x

replicate gh-16139 on the latest maintenance branch
because the master branch of the wheels repo will
encounter the issues described in that PR (for example, see:
https://github.com/MacPython/scipy-wheels/pull/166 which
has Travis and Azure failures caused by those same
versioning issues)

I think the cwd is still correct even though the patch
is being applied to a different file this time (used to be
setup.py), though we could double check this by pointing
the wheels PR at the commit hash of this PR on my fork if we want

any reason not to forward port this as well at this point,
if we're going to need to keep "backporting" it?

(there are other issues in the wheels repo as well, possibly even the PROPACK
Windows stuff to shim around again? but one thing at a time)

Ok, I'll have to debug this locally, the CI failures are similar to exactly what I want to fix in the wheels repo.

I fixed locally with two versions of git (including the bleeding edge version), we'll see if CI agrees.
I do see an unrelated mingw download error on Windows Azure 32-bit


"Trying to open BAM file and ZLIB is not available!"

Hi,
We've tried installing and running "Q" in two different Ubuntu systems,
and in both cases configure/make/makeinstall runs smoothly
but then when we try to run it with "-t afile.bam" and "-o somefolder" , we get the following error:
"
ERROR: Trying to open BAM file and ZLIB is not available!
ERROR: Could not open <MY_FILE_NAME>.bam !
ERROR: Function 'ReadAlignmentFile' failed !"
"
It looks like a problem with seqan but I don't know what I could do to fix it, any ideas?

Try
sudo apt-get install zlib1g-dev libbz2-dev libboost-dev libgomp1
and recompile Q. Alternatively, use the precompiled linux binary for Q which can be downloaded from here
http://charite.github.io/Q/downloads/executables/Linux_x86_64_binary/Q-1.0.0/Q
Best,
Peter


CanonicalizedSequenceOp: Do not hoist buffer transfers

MLIR does not model parallel contexts yet and hoisting buffer transfers may or may not be safe, depending on which semantics we decide on in the future. Disable it for now to be safe. Transfers should be hoisted on tensors when possible.

Draft for now to see if this affects any tests.

I see one error, reduction_pipeline_transform.mlir.test it is fine to update it to a form without the hoisting for now.


Series Resistor Calculator

Add option for computing resistance of resistors in series

2 - 10 (?) resistors in series
Each resistor has it's own text field for resistance,
A slider or some component will be used to increase or decrease the resistor count
Switch to indicate all values are the same (?)
Some sort of LazyColumn will probably be easiest for implementation
Will need to get SVG image of a circuit diagram.

Observations:

Need to round decimal and maybe clean up double input as an Int when it ends with .0

Feature to Consider:

Added a toggle for units (or some way to dictate units)

Decided that I will not be saving any of the data to the shared prefs like with the other calculators.