feat: add copying files to/from container

solves https://github.com/testcontainers/testcontainers-python/issues/665

i usually prefer using typing.Union[str, os.PathLike] - if you wanna use strings with this as well as paths

one other thing to consider is that there is this great interface "Transferable" in other language implementations-- does this PR make it harder or easier to add this to this implementation as well.
the interface (found here) is basically:
class Transferable(abc.ABC):
  @abstractmethod
  def transfer_to(content_stream, destination: typing.Union[str, os.PathLike]):
    ...

where content_stream is some bytesio or something pythonic for a place where you can write bytes to.

when i tried to do it, i accidentally interpreted the interface a bit too widely and instead of passing just the content output stream, i passed the whole container as that first argument.
https://github.com/testcontainers/testcontainers-python/commit/4b7db74176c0f00ca275bc39409ebb891a93cbb9 - misc functions, next commit doesnt make sense without reading first
https://github.com/testcontainers/testcontainers-python/commit/bbc44ec8e6d0ce35d40466f1d636106d75e0b197 - the commit where i add the transferable stuff

so im tiny bit hesitant to merge without a plan for adding transferable on top of this

do we need it to be 1:1 with java implementation though? any binary object now can be passed here using tempfile.NamedTemporaryObject:
with tempfile.NamedTemporaryObject() as f:
f.write(binary_data)
DockerContainer("nginx").with_copy_file_to_container(f.name, "/tmp/target.data").start()

we dont need to be 1-1 but what if instead of a file you had a string? i think it is beneficial to not force people to create temporary files.

refactored for Transferable although creating temp files cannot be avoided, now instead of asking users for 3 extra lines we add some complexity to codebase here. working example
input:
from pathlib import Path

from testcontainers.core.container import DockerContainer, Transferable
from testcontainers.core.network import Network

c = DockerContainer('nginx')

network = Network()

c \
    .with_copy_file_to_container(Transferable(b'asd', Path('/tmp/mariusz.md1'))) \
    .with_copy_file_to_container(Transferable(Path('/Users/mariusz/Documents/Programming/testcontainers-python/README.md'),Path('/tmp/mariusz.md2'))) \
    .start()

c2 = DockerContainer('nginx')

print(c._container.exec_run('head /tmp/mariusz.md1'))
print(c._container.exec_run('head /tmp/mariusz.md2'))

output
ExecResult(exit_code=0, output=b'asd')
ExecResult(exit_code=0, output=b'[![Poetry](https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json)](https://python-poetry.org/)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n![PyPI - Version](https://img.shields.io/pypi/v/testcontainers)\n[![PyPI - License](https://img.shields.io/pypi/l/testcontainers.svg)](https://github.com/testcontainers/testcontainers-python/blob/main/LICENSE)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/testcontainers.svg)](https://pypi.python.org/pypi/testcontainers)\n[![codecov](https://codecov.io/gh/testcontainers/testcontainers-python/branch/master/graph/badge.svg)](https://codecov.io/gh/testcontainers/testcontainers-python)\n![Core Tests](https://github.com/testcontainers/testcontainers-python/actions/workflows/ci-core.yml/badge.svg)\n![Community Tests](https://github.com/testcontainers/testcontainers-python/actions/workflows/ci-community.yml/badge.svg)\n[![Docs](https://readthedocs.org/projects/testcontainers-python/badge/?version=latest)](http://testcontainers-python.readthedocs.io/en/latest/?badge=latest)\n\n')

@mgorsk1 I have opened #677 to solve the same issue (I did not see you already had opened one 😓).
Yours have the Transferable feature. But I have the read_only feature.
And they are not implemented the same way :

I am passing the paths in the HostConfig.Bind to the docker_client.create (so the file exist before the container starts)
You are writing the files using the docker.models.containers.Container.put_archive method (which works after the container has been started)

Are our two approaches complementary ?
Reading again the Java documentation for copying files, there does not seem to be a difference, at the API level at least, between copying to a container before or after its startup.

I think copying before can already be solved by with_volume 😅

committed some code here - https://github.com/testcontainers/testcontainers-python/compare/main...feat/665-with-copy-file-to-container

rebased here https://github.com/testcontainers/testcontainers-python/compare/feat/665-with-copy-file-to-container_rebased

since this is not a high priority feature this can probably wait for 1) more api refinement - feedback welcomed on my suggestions above 2) more of my free time, as I'm not sure ill be able to spend too much more time on this this week (just spent my entire week's time budget on this today).


Pool: add min_idle option

It would be nice to have an option for the minimum number of idle connections at any point of time. This is basically a form of preconnect or connection pipelining to reduce the chance of hitting an empty pool.
For example with a max_idle of 3 any acquire that resulted in less than 3 connections remaining in the pool would immediately begin to establish a new connection in the background while it returns the existing connection to the caller.
With a sufficiently high min_idle and max_connections a workload would never see an empty pool and would never block on connection establishment. In practice setting min_idle to 1 or 2 will significantly reduce the latency impact of allocating a connection because the additional latency will be hidden by the delay between the last acquire and the current acquire, instead of the "cache miss" waiting for the full connection establishment. An additional benefit is that you are effectively racing connection attempts which improves the tail latency. For example with min_idle(1) an acquire on an empty pool will race the new connection attempt and the attempt that is already in flight due to the min_acquire setting. This means that even if the in-flight one (which should usually finish first) experiences delay (such as a packet drop) the fresh one will likely connect quickly. This can significantly mitigate an occasional 1s delay due to a SYN packet drop or other random effects.
Some notes:

The effectively means that the Poll will attempt to maintain min_idle connections. In practice there will be at least min_idle connections either being established or idle at all times.
max_idle(0) is equivalent to the current behaviour.
Any acquire with an empty pool must:

Start establishing a new connection.
Return the first available connection, NOT necessarily the one it opened itself.

min_idle must be less than or equal to min_connections (or min_connections is implicitly increased to match min_idle)

Honestly, I'm not happy with the current guarantee of min_connections because it's not really a guarantee at all. It's kind of misleading to have it as a setting on PoolOptions when it only really takes effect in the .connect() or .connect_with() finishers.
I initially envisioned min_connections being similar to what you want min_idle to be (where the pool actively maintains that many connections with a background task), but for some reason I didn't end up implementing it that way.
I think I would like to drop min_connections as an option and implement min_idle almost exactly as you've specified here, although I don't see a good way to have acquire() race the background task in opening a connection.
As the pool is currently implemented, all task waiting is governed by a single semaphore where acquiring a permit from it allows acqure() to either get a connection from the idle queue, or open a new connection, and it tries them in that order. The idle queue itself is just a crossbeam::queue::ArrayQueue so it has no way to notify waiting tasks.
It could be an async MPMC channel instead, but that'd be a redundant waiting queue.

Yeah, the implementation wouldn't be trivial.

although I don't see a good way to have acquire() race the background task in opening a connection.

With the way Rust futures work you would probably have to tokio::spawn the "background" connection so that it is driven even though it isn't being returned to the user as a future. (I assume there is a similar function on other executors?)

I think I would like to drop min_connections as an option and implement min_idle

Yeah, they are fairly similar concepts. I can imagine that min_connections is still useful for very bursty workloads where you want to keep some connections ready but not allocate 2x that when a burst occurs. The two can work in concert to keep a buffer during quiet times and a small amount of pipelining for new connections during bursts over that minimum buffer. But if I had to pick one or the other I would pick min_idle.

It could be an async MPMC channel instead, but that'd be a redundant waiting queue.

I think you can just use a futures::FuturesUnordered which is basically selecting among the in-flight requests. So the implementation would look something like this.
async fn acquire(&mut self) -> Result<Connection> {
  let connections = self.idle.len() + self.connecting.len();
  if connections <= self.min_idle && connections < self.max_connections {
    self.connecting.push(tokio::spawn(self.connect()));
  }

  if let Some(conn) = self.idle.pop() {
    Ok(conn)
  } else {
    self.connecting.next().await
  }
}

Where self.idle is the existing connection pool and self.connection is a futures::FuturesUnordered of new connections.There is definitely some non-trivial error-handling missing and I haven't thought too carefully about the performance but it seems to be roughly what is needed. It probably also needs some logic to fit in with other config options and other executors. I hope I'm not missing anything major.

I was thinking it'd be a single task spawned on start of the pool that would be woken when the idle queue is empty, which tries to create min_idle connections and then goes back to sleep. That way it uses constant memory instead of spawning a task on every .acquire().
Implemented that way, that would mean min_idle is at most a best effort and not a solid guarantee, but that'd be an issue anyway because it'd have to clamp at max_connections. It'd lose the parallelism of your proposed racing-tasks solution though.
I do also think it's probably worth trying to avoid opening 2x connections during a burst. Maybe instead it could be woken on a hard-coded timeout, or just be integrated into the existing idle reaper. At that point, I'd probably just prefer to continue calling it min_connections and just fix it so that it actually guarantees what it says it does.
Or maybe we could work to make the pool smarter? Tuning min_connections or min_idle by hard-coding them isn't the best when you're talking about parameters that are meant to help adapt to dynamic loads. If you're using managed database hosting like Google Cloud, keeping a bunch of idle connections open when you don't need them could get expensive.
If the pool kept a running tally of, say, the average/maximum number of concurrent acquire() calls over the last five minutes, and worked to keep that many connections idle, then it could adapt to bursts but then settle back down to a minimum idle state when it's not being hit.
Whatever metric we use, we would probably want to track the first or second derivative of that so we can preemptively start opening connections when a burst starts coming in, and then close connections as it tapers off.

Hmm, maybe that'd be trying too hard though. With prepared statement caching, it's probably better to keep connections around. Ryan and I have talked about this at length in the past and if memory serves we decided against that kind of dynamic approach because it would just be too complex for little benefit.
Looking at Google Cloud and Digital Ocean, there isn't really dynamic billing for databases. As long as they're up and accepting connections, you're paying for them. For, say, Google Cloud's Shared Instances, it sounds like you would need to close all connections to the database server to get it to stop automatically and for you to stop being charged for it (although the documentation isn't really clear on how that works).

That way it uses constant memory instead of spawning a task on every .acquire().

Yeah, that would be nice. Maybe you can keep using FuturesUnordered but polling that can be done by a spawn'ed task that moves them to the idle list? But at that point you are basically writing a SPMC queue.

It'd lose the parallelism of your proposed racing-tasks solution though.

I really like the tail-latency mitigation. There are always just some connections that just happen to be slow, especially if there is a bit of distance/network between your client and your DB. Maybe that racing can be implemented somewhere else? But it does appear nice to merge the pipelining and racing like this would do.

I do also think it's probably worth trying to avoid opening 2x connections during a burst.

I don't think this is a major concern. It is really just an issue when you have a workload that often bursts to N and you set min_idle(N). Maybe it is best to keep min_connections so that for this workload you can do something like min_connections(N).min_idle(1) or something near it. I don't think the implementation of keeping min_connections around would be too hard, but it does lead to complexity to the user configuring the knobs.

Or maybe we could work to make the pool smarter?

This is also an interesting idea, but I don't really know what that would be. My first thought would be implementing something like min_idle and slowly bumping it up or down as we hit an empty pool or have connections that haven't been used in a long time. Although at this point it isn't clear that this is much better than the regular connection cache. It would basically just be bumping min_idle if it detects that your workload is bursty.

If you're using managed database hosting like Google Cloud

Do any databases bill on connections? From looking at Google Cloud SQL and AWS RDS it seems like they both have connection limits but they seem to be quite reasonable for the backing VM. Really it just seems like the problem is that connections are expensive for the DB and it isn't a major issue to have idle connections (across all clients), the bigger issue is having too many connections. Of course one client's idle connection could be a slot that another client needs.

the average/maximum number of concurrent acquire() calls over the last five minutes

I'm not sure this is really necessary. It is probably enough to get a very similar metric by just tracking "misses".

we would probably want to track the first or second derivative of that so we can preemptively start opening connections when a burst starts coming in, and then close connections as it tapers off.

The problem of doing this second derivitve is that it means that the library over-reacts. This setting is already adding some amount of over-reaction but it is well defined and easy to account for. Trying to guess the increase of connections needed is likely to thunder the DB.

Instead of selecting over JoinHandles we could use a oneshot channel, actually. That would be more efficient I think.

we do have some dynamic scaling already as connections that are idle too long are closed without being replaced

This works if your app is hovering around 0 connections. But for apps that use a couple of connections constantly min_connections does very little. Especially if the reaper doesn't respect it. The benefit of min_idle is that it "reacts" to the current number of connections that the app is using.

Do you think it would be best to just always have it race the opening of 2 connections concurrently

It would be an interesting idea but this is probably dangerous at app startup or other bursts. You would be bursting to 2*N connections if you are trying to acquire N connections in parallel. The min_idle as I proposed will only ever bust to N+min_idle. I don't think it is a bad option but other than simplicity it seems to lose to min_idle.

The issue of FuturesUnordered vs spawning tasks is that the former would serialize any CPU-bound work...

These aren't mutually exclusive. For example I proposed spawn+FuturesUnordered but as you pointed out that is adding an extra allocation for each new connection. Although thinking about it further the allocation probably isn't too signification compared to the cost of opening the connection (Especially because the connections state is already being allocated and more important the DB has to spin up a new thread (for most DB servers) which will be much more expensive and the resources on the server are usually more expensive than client resource (...not that that is a good excuse to be inefficient).

The other idea I had would be to have each call to .acquire() that pulls from the idle queue wake the task to start more connections concurrently if it's necessary. This could be governed by min_idle. Rereading your comment, I think we're converging on this idea but in different terms.
This wouldn't 100% address your tail latency concern, but can help refill the idle queue while a burst is coming in without becoming a thundering herd, and would cap at N + min_idle connections.
The one issue with this is that ArrayQueue::len() is surprisingly involved. It looks like it'll keep looping as long as concurrent updates are happening to the queue, so it can be sure it's calculating the "latest" length. It's hard to say whether that's really useful since if the queue is constantly being updated, the value may be out of date anyway before the method call even returns.
So I would probably only trigger this if the idle queue is empty after popping a connection from it, which means the next call may still block on opening a connection but subsequent ones shouldn't.
At that point, do we just say "screw it" and use an MPMC channel for the idle queue? It wouldn't be the end of the world. We could use the one from futures_intrusive (we're already using the semaphore from there) which doesn't use heap allocations for the waiting queue.
Then we could race the connection attempt with waiting on the idle queue. If the queue wins though, do we abort the connection attempt or spawn it as a task so it can complete? It really depends on how far it's progressed, I guess, but we don't have a good way to introspect that. We could wrap it in a futures::future::poll_fn() to count how many times it's woken, and assume if it's woken at least once that it's in-progress and should be spawned.

pulls from the idle queue wake the task to start more connections concurrently if it's necessary

I'm not sure what you mean here. Do you mean that we do start min_idle connections into a queue at startup and the connection will pull from here if there are none available? I think the concern is when we are polling this but it is hard to say without more exact detail.

It's hard to say whether that's really useful since if the queue is constantly being updated

Yeah, concurrency is hard. I also wonder how many people have enough short-lived connection checkouts to make this contention-heavy. I would expect that a mutex is fine for most cases. But I guess people maybe check out a connection per-request even if they don't actually use them?

So I would probably only trigger this if the idle queue is empty after popping a connection from it,

Isn't this just opening a new connection if the idle-pool is empty? Or is this better because the connecting "pool" has N connections in flight?

At that point, do we just say "screw it" and use an MPMC channel for the idle queue?

It sounds like we are going to need benchmarks soon. Honestly I suspect that an array+mutex is the best option. If you are actually running into problems what you probably want is cache-per-core not a fancier single queue. But only benchmarks can answer this.

Then we could race the connection attempt with waiting on the idle queue. If the queue wins though, do we abort the connection attempt or spawn it as a task so it can complete?

My gut tells me to keep the connection. Connections tend to be expensive for database servers and in the most common setups database server resources are sacred because you only have one database server while the clients can often scale. I wouldn't want to be causing thread churn on the DB to save an allocation and a bit of bookkeeping on the client.

if it's woken at least once that it's in-progress and should be spawned.

This could be a reasonable option. Presumably if it has never been woken the TCP connection was never started and it is nearly free to throw it away.

Isn't this just opening a new connection if the idle-pool is empty? Or is this better because the connecting "pool" has N connections in flight?

I think we can actually already figure out the count of idle connections even if the idle queue itself doesn't support it (or it's potentially slow in the case of ArrayQueue::len()). It would be num_idle = semaphore.permits() - (max_size - size). If that falls below min_idle, we can wake the idle-connecting task.
The task will then attempt to acquire num_idle - min_idle permits from the semaphore (if that's a positive value), and attempt to open that many connections.
It can use FuturesUnordered as you suggested to track the connect() calls in-flight and then push them to the idle queue as they complete.
The idle queue being an MPMC channel would allow acquire() calls to select!() between their own connect() calls and the idle queue. If the idle queue wins and the connect() call was woken at least once, the future of the connect() call is spawned into its own task so it can complete.

Hey! Looks like this has dropped off the radar a bit. I wanted to log a very dumb hacky workaround that works well enough for us to not look at it any longer; if there are any obvious issues with it please let me know!

use futures::StreamExt;
use sqlx::PgPool;
use tokio::time::MissedTickBehavior;
use tokio_stream::wrappers::IntervalStream;

// ideally, this would be obviated by https://github.com/launchbadge/sqlx/issues/1472
// but they're in the design phase, so for now you get this
pub fn task(pool: PgPool, min_idle: usize) {
    let mut interval = tokio::time::interval(Duration::from_secs(2));
    interval.set_missed_tick_behavior(MissedTickBehavior::Delay);
    let stream = IntervalStream::new(interval);

    tokio::spawn(async move {
        stream
            .then(|_| async {
                if pool.num_idle() < min_idle {
                    let n = min_idle.saturating_sub(pool.num_idle());
                    futures::future::join_all(iter::repeat_with(|| pool.acquire()).take(n)).await;
                };
            })
            .boxed()
            .collect::<()>()
            .await;
    });
}


How to know checkbox is checked or not for automation

Usecase: In order to write automation test for a component which is based on react-bootstrap-table , we are unable to get checkbox value at any point of time , when I see in developer tool in browser it shows checkbox's attribute value as "on" and it remains "on" whether checkbox is checked or not .
when we use normal checkbox in a form it gives value as "true" in case of checked and "false" in case of unchecked so this helps us in automation.
please let us know how we know the current state of checkbox problematically for automation.

jquery:
$("#checkbox").is(':checked')

javascript:
document.getElementById("checkbox").checked

it's very simple, for your testing, you can get the DOM and try the DOM.checked
Let me know if you still have problem


pkg/report: skip allocation frames in KMSAN origin stacks

Turns out a lot of KMSAN bugs get merged because of some insignificant origin like "allocate_slab".
Ensure we skip all allocation-related frames when parsing KMSAN reports.

Before sending a pull request, please review Contribution Guidelines:
https://github.com/google/syzkaller/blob/master/docs/contributing.md

Please take another look


Fix typo

    "linkedServiceName": "MyHDInsightLinkedService",
    "typeProperties": {
      "script": "Hive script",
      "scriptPath": "<pathtotheHivescriptfileinAzureblobstorage>", ← scriptPath, Not script path
      "defines": {
        "param1": "param1Value"
      }
    },

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

Verified the update. @changeworld Thanks!


MemoryManager should not call errorHandler when the requested chunk size is too large

Required information
When acquiring a too large chunk via the publisher so that no mempool is available the memory manager calls the error handler despite having a fitting enum value to return - AllocationError::RUNNING_OUT_OF_CHUNKS.
Maybe we could also add a new enum value called AllocationError::CHUNK_SIZE_TOO_LARGE and return this to the user. There is no need to call the error handler.
We already return an error enum instead of a call to the errorHandler when running out of chunks so we should be consistent.

@elfenpiff this comes from a code base which was created before we had the expected and it seems afterwards we decided that if we are never able to return a chunk it would be best to just terminate. Maybe it's not the best option nowadays.

@elfenpiff according to the code we already have an error code for a request for a chunk which is larger than any available mempool can hold.
I would argue that it is a programming error when such a chunk is requested since it will never succeed. I would keep the behavior as is and close the issue. What do you think?

We keep the current behavior


make check failures: assert() and then several unable to execute bc: No such file or directory

make check command fails at
addremove.c:64: main: Assertion `p == &allocation_packets[i]' failed.
There are also lot of errors as:
check/z/shift
unable to execute bc: No such file or directory
unable to receive result from bc: Success
Below is a copy of the make check command output:
check/alloc/addremove
addremove: check/alloc/addremove.c:64: main: Assertion `p == &allocation_packets[i]' failed.
runtests.sh: line 13: 17777 Aborted                 (core dumped) $1
check/alloc/fixed
check/p/pcmp
check/p/pcopy
check/p/pmove
check/p/pnorm
check/p/pzero
check/p/negnot
check/p/strings
check/z/getset
check/z/shift
unable to execute bc: No such file or directory
unable to receive result from bc: Success
check/z/zcmp
unable to execute bc: No such file or directory
unable to receive result from bc: Success
check/z/zcmpmag
unable to execute bc: No such file or directory
unable to receive result from bc: Success
....

Hi, thanks for trying it out. What compiler, OS, and user environment are you using to build hebimath?
bc(1) is required to run the unit tests (it uses it as a test oracle), and it looks like it's failing to find it in your PATH. Please make sure to install it through your package manager as not all distros have it available by default. I should add a check to runtests.sh for bc so that is fails more gracefully.
It's been a couple of years since I've worked on this project, but I'm looking at dedicating some time over the next couple of months to take it to the next level. A few things I have planned are to shorten the namespace prefix from hebi_ to hm_ and implement function variants using the mulx/adx instruction extensions now that I have a new workstation with a CPU that supports it. Also take care of everything on the TODO list.

Hi !
Thanks for your advice! I installed bc and get rid of those 'unable to
execute bc' errors. How ever I still have following assert() error:
addremove: check/alloc/addremove.c:64: main: Assertion `p ==
&allocation_packets[i]' failed.
runtests.sh: line 13: 19251 Aborted                 (core dumped) $1
My computer is HP Elitebook 8460p. OS is Linux OpenSuse Tumbleweed,
x86_64, Intel(R)
Core(TM) i7-2620M CPU @ 2.70GHz.
Linux kernel: 4.18.15-1-default #1 SMP PREEMPT Thu Oct 18 08:56:17 UTC 2018
(5a53676) x86_64.
Attached you will find detailed information of my system, output of uname
-a, lscpu commands as well as 'make check and make bench' cmd outputs.
About the hebimath, I'm considering to test and possible use it as a
replacement for GNU MP and MPIR libaries.
Do you have any experience how fast hebimath is compared to those libraries
? My app does a lot of basic bignum arithmetic with long integers like 2048
bit and it needs to be fast.
Best Regards,

Markku

Please consider environment before printing this email
Markku Pulkkinen | +358(0)407758706 | keybase-user-id: pulmark
<EMAIL_ADDRESS>| http://www.markkupulkkinen.com
running check tests
check/alloc/valid
check/alloc/query
check/alloc/addremove
addremove: check/alloc/addremove.c:64: main: Assertion `p == &allocation_packets[i]' failed.
runtests.sh: line 13: 19251 Aborted                 (core dumped) $1
check/alloc/fixed
check/p/pcmp
check/p/pcopy
check/p/pmove
check/p/pnorm
check/p/pzero
check/p/negnot
check/p/strings
check/z/getset
check/z/shift
check/z/zcmp
check/z/zcmpmag
check/z/zcmpi
check/z/zcmpu
check/z/zabs
check/z/zneg
check/z/zadd
check/z/zaddmag
check/z/zaddi
check/z/zaddu
check/z/zsub
check/z/zsubmag
check/z/zsubi
check/z/zsubu
check/z/zmul
check/z/zmuli
check/z/zmulu
check/z/zdiv
check/z/zdivi
check/z/zdivu
check/z/zdivrem
check/z/zrem
check/z/zremi
check/z/zremu
check/z/zsqr
check/z/znot
check/z/zand
check/z/zor
check/z/zxor
all done
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              4
On-line CPU(s) list: 0-3
Thread(s) per core:  2
Core(s) per socket:  2
Socket(s):           1
NUMA node(s):        1
Vendor ID:           GenuineIntel
CPU family:          6
Model:               42
Model name:          Intel(R) Core(TM) i7-2620M CPU @ 2.70GHz
Stepping:            7
CPU MHz:             1189.409
CPU max MHz:         3400.0000
CPU min MHz:         800.0000
BogoMIPS:            5388.09
Virtualization:      VT-x
L1d cache:           32K
L1i cache:           32K
L2 cache:            256K
L3 cache:            4096K
NUMA node0 CPU(s):   0-3
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx lahf_lm epb pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid xsaveopt dtherm ida arat pln pts flush_l1d
Linux linux-1hz6 4.18.15-1-default #1 SMP PREEMPT Thu Oct 18 08:56:17 UTC 2018 (5a53676) x86_64 x86_64 x86_64 GNU/Linux
running bench tests
bench/p/padd
0.49489915 seconds<PHONE_NUMBER> cycles
bench/p/paddu
0.35208627 seconds           948452415 cycles
bench/p/pclz
0.28267302 seconds           761466267 cycles
bench/p/pctz
0.03130600 seconds            84331760 cycles
bench/p/pcmp
0.18370391 seconds           494862011 cycles
bench/p/pcopy
0.38649048 seconds<PHONE_NUMBER> cycles
bench/p/pdivrem
9.92275814 seconds<PHONE_NUMBER>5 cycles
bench/p/pdivremu
2.80525938 seconds<PHONE_NUMBER> cycles
bench/p/pmove
0.60950455 seconds<PHONE_NUMBER> cycles
bench/p/pmul
6.43515861 seconds<PHONE_NUMBER>4 cycles
bench/p/pmul_karatsuba
1.70007787 seconds<PHONE_NUMBER> cycles
bench/p/pmulu
0.61165674 seconds<PHONE_NUMBER> cycles
bench/p/pnorm
0.21148709 seconds           569704590 cycles
bench/p/pshl
0.64591751 seconds<PHONE_NUMBER> cycles
bench/p/pshr
0.51904426 seconds<PHONE_NUMBER> cycles
bench/p/psqr
6.32452144 seconds<PHONE_NUMBER>9 cycles
bench/p/psqr_karatsuba
1.66059592 seconds<PHONE_NUMBER> cycles
bench/p/psub
0.49964968 seconds<PHONE_NUMBER> cycles
bench/p/psubu
0.36310075 seconds           978122987 cycles
bench/p/pzero
0.22329756 seconds           601520304 cycles
all done

I tried out OpenSUSE Leap, it didn't repro the issue. I then updated to Tumbleweed and suddenly got the same error as yourself, which is promising. I will attempt to debug and fix it tomorrow.
Hebimath is as fast or faster than GNU MP on most operations for larger integers under 4096 bits, but GNU MP is quite a bit faster with dividing and multiply very large integers due to it using more complex algorithms that scale more efficiently. If you're interested, the author of libzahl put together a benchmark with an older version of Hebimath, GMP and Tom's Fast Math. Since then, Hebimath has borrowed many of the tricks that libzahl used to beat GMP.
Hebimath doesn't try to be fast on older hardware or 32-bit hardware. I'm only interested in implementing modern x86-64 and ARM64 optimized assembly backends.

Turns out the problem was a false positive and is simpler to fix than I thought it might be. Looks like GCC 8.2 now optimizes away that equality checks on return values from functions marked with the malloc function attribute, so all of the assertions on pointers returned from hebi_alloc or hebi_allocfp were being turned into false conditions. I'll get a fix for affected unit test submitted sometime soon.


iScroll 4.2 + Rubaxa Sortable: Unexpected dragging occurs

jQuery Mobile 1.4.5
iScroll 4.2
iScrollview plugin
When touch-holding the draggable elements, they appear approximately 150px below the touch point instead of at the touch point.  If iScroll is disabled or not used, the draggable tile traces the touch correctly.  I tried adding the following:
var targetArea = document.getElementById('photoList');
targetArea.addEventListener('touchstart', function(e) {
      e.stopPropagation();
}, false);

Which allows the #photoList to be draggable without scrolling the page.. but does not improve this bug.  Any ideas to make these scripts play together?  Both plugins are the best solutions for my needs independently (scrolling & ordering items).
Thank you for your input!
Seth

No ideas.

Solved. The JS function getBoundingClientRect() was detecting the location of the dragged element (dragEl) incorrectly. This function detects viewport location and was struggling on IOS, and with iScroll. This appears to be fairly documented as I discovered. I simply pulled the position using offsetTop() and offsetLeft() to show me offsets in relation to their parent container (which has position: relative) in order to properly show the cloned ghostEl. Not sure whether later versions of iScroll are affected, as I'm only using 4.2 for this project. IScroll rocks, thank you.


Linux kernels 2022-03-16

Things done

[x] Fits CONTRIBUTING.md.

bcachefs supports 5.16 now, so as far as the part I'm concerned with, should be fine.


[Ionic 2 feature] Overlays (Alert, Popover): cssClass option with support for multiple classes

For a better and more flexible styling of my alert and popover overlays I would like to have the cssClass option supporting multiple classes. That could be in the form of concatenated class names or as an array of class names.
Now the cssClass supportes only one string token, any space character within results in runtime exceptions (InvalidCharacterError).
So cssClass="class-1 class-2" or cssClass=['class-1', 'class-2'] would be ideal.
Platform: Ionic 2 beta.11
Thank you!

You currently can pass multiple classes, like so:
  doAlert() {
    let alert = this.alertCtrl.create({
      title: 'Alert',
      subTitle: 'Subtitle',
      message: 'This is an alert message.',
      buttons: ['OK'],
      cssClass: 'my-alert another-class'
    });

    alert.present();
  }

This should probably be documented better though.

Thank you for looking into it. I only tried it with a Popover and
cssClass: "infopage mytheme"
which produces the following exception at runtime:
EXCEPTION: Error: Uncaught (in promise): EXCEPTION: Error in ./PopoverCmp class PopoverCmp_Host - inline template:0:0
ORIGINAL EXCEPTION: InvalidCharacterError: Failed to execute 'add' on 'DOMTokenList': The token provided ('infopage mytheme') contains HTML space characters, which are not valid in tokens.
....

I just checked my Alerts and they do fine with multiple classes, as you said. So this seems to be an Popover issue only.

Thanks! I have added support for multiple classes to be passed to Popover, Action Sheet, Loading, and Toast components. It was already supported for the Alert and Picker components. I published a nightly version if you would like to test it out:
npm install --save<EMAIL_ADDRESS>

Nice, thank you! Now it works as expected, and I can declutter my SCSS...

Awesome. I updated the documentation to reflect this. It will be in the beta 12 release. :)

Hey,
How about modals?

how update the alert color with ionic 2 ??


🐞 Allow empty luks struct

Sometimes the backend adds empty luks struct to the plan spec, we need to show nice "no luks" when we get an empty struct

addressed by #1262


example async test or resolve will not work and return error of  TypeError: Cannot read property 'then' of undefined

Do you want to request a feature or report a bug?
Bug
What is the current behavior?
Return error when setup the test and mock properly 99% according to the tutorial page here https://facebook.github.io/jest/docs/en/asynchronous.html
**If the current behavior is a bug, please provide the steps to reproduce and
either a repl.it demo through https://repl.it/languages/jest or a minimal
Test suppose to pass. An exampl here
https://github.com/adamchenwei/jest-playground
run npm install && npm run test:watch you should observe the error.
What is the expected behavior?
Test should pass as tutorial indicated.
Please provide your exact Jest configuration and mention your Jest, node,
yarn/npm version and operating system.
They are in the demo repo https://github.com/adamchenwei/jest-playground

Not really sure what is the significant difference.

In the doc folder where you define user.js and request.js you should have a mocks folder and within that you should define the request.js mock function.

@jack-evans how you know that so quickly? Did I missed it from the doc reading? Or there is way somehow you debug and found the issue? ? Super curious to know how you did that!!!

There is this on the Jest website that I remember using when i first wrote some manual mocks:
https://facebook.github.io/jest/docs/en/manual-mocks.html


Particle and track data structures in AdePT

The most fundamental data structure for the whole project is the data structure that holds tracks to be simulated. In this issue, we should discuss which pieces of data will be necessary in this data structure, and decide on an initial in-memory layout for this data as well as on an initial API to access it from both CPU and GPU in a generic way.
In this issue, we should discuss:

What components are needed in the track data structure (name, type, size in bytes)
In-memory data layouts for CPU and GPU
API required to access data on CPU and GPU
Memory management of track data
Specializations for different particle types if required

Design Goals:

Data that is common to all tracks of a given type should not be repeated in memory (i.e. pdg code, or charge/mass for photons).
The API to create/delete/access/modify tracks should not expose the in-memory data layout to other parts of the code. This is necessary to allow the data layout to be changed later to optimize for performance, and to allow different layouts on the CPU/GPU if necessary.
We should strive to design the data layouts and the API in a way that allows easy modification/extension of the data components for each track. This is important to create a system in which we can have track data that is specialized for different particle types. That is, omit charge and mass for neutral and massless particles, but add polarization, or atomic properties for ions if required. If all tracks must use the exact same data layout, we will waste memory and not be able to fit as many tracks on the device to run in parallel.
Dynamic memory management happening at fixed-sized blocks of tracks in between simulation steps. Rationale: memory allocation within a kernel is complex to handle, as a call to malloc() from within a kernel will actually allocate memory for every block, which depends on kernel launch configuration. Therefore, it is better to have allocations happen in between kernel calls instead, or inside a specific kernel for this purpose.

Required components:

track id, parent track id, event id, geometry id (i.e. navigation state), material id (+region id), position, momentum, energy, global/proper time, RNG state, flags field (dead/alive, active physics process, and other boolean flags).

Optional components:

spin, polarization, ionization state, nuclear excitation state, etc

Others:

components used during stepping (i.e. cached safety, interaction length, etc), and for scoring (i.e. hit information)

Proposed data layout:
Data layout could be based on entity component systems, which are common to handle many diverse objects in computer games. Each particle type would be an archetype in this system, and contain its own set of components. Each stepping phase would be one behavior depending on one or more systems for physics models, etc. Please see reference below for more information about these concepts.

Required functionality:

Query if an archetype (e.g. a particle type) has a given component (by name or id number)
Query what is the type/size of some component in an archetype
Query number of memory chunks, number of entities per memory chunk
Query what is the offset (from base pointer to a memory chunk) of some component in an archetype
Query and set on/off mask status of an entity slot or full memory chunk
Query and set the value of a component of an entity (i.e. query/set position of a given particle)
Query number of entities (active slots) and capacity (i.e. including holes)
APIs to insert, erase, and swap entities
Sorting to remove unused slots in memory chunks
Sorting of entities based on mask/bool components
Iteration over memory chunks (for CPU) and random access of memory chunks by number (for GPU)

References:

PDG Table of Particle Information
Geant4 Particles
ECS Concepts in Unity
Entity Component Systems & Data Oriented Design
Design and Implementation of Particle Systems for Meshfree Methods with High Performance
Data Oriented Design and C++ (video)
Data Oriented Design and C++ (slides)
std::colony proposal and implementation in PLF library (thanks @bernhardmgruber for the pointers)

Here is a gist with a simple example of how to obtain good performance on CPU/GPU by using SoA layout. The next step will be to work on good interfaces that satisfy our requirements as written above and that are able to handle data like this within a larger code that may have different kinds of tracks.

I played as well, see here.
Slides here.

Some more results are discussed here:
https://indico.cern.ch/event/1020971/


Peng/203 improve buttons

improves primary button style
adds support for image icons @faboweb
adds success, warning, danger button styles
fixed the cut-off text bug
improves the hover-bg variable color

Closes #203

Instead of adding the .btn__primary class to the element, you now have to add the attribute type="primary". This is less prone to breaking CSS changes.

Thx for adding it in the end ^^ Let's see if we need them anywhere.
One note: The colors look very (maybe too) intense. @jolesbi what do you think? But nothing blocking for me.

they are really intense. but i think it's for the best. they are much brighter than the rest of the app... but i think this means we need to brighten more things as opposed to keeping everything so dark!


create local in-memory database

the bot should have a database for storing waypoints and player data

shouldn't be in-memory, for max durability.
use mongoDB or other NoSQL document db


create a script to authorize burners to write to the various dojo components

components

Current dependencies on/for this PR:

main

PR #1   👈

This stack of pull requests is managed by Graphite.


NAS-132049 / <IP_ADDRESS> / add ixnvdimm output to debug (by yocalebo) (by bugclerk)

Simple omission that exists in CORE debug but not in SCALE debug.
Original PR: https://github.com/truenas/ixdiagnose/pull/234
Jira URL: https://ixsystems.atlassian.net/browse/NAS-132049
Original PR: https://github.com/truenas/ixdiagnose/pull/235
Jira URL: https://ixsystems.atlassian.net/browse/NAS-132049

This PR has been merged and conversations have been locked.
If you would like to discuss more about this issue please use our forums or raise a Jira ticket.

backport


The "edit-tag" option is formatted the same as your name if you are in a cc

If you aren't in a cc, your edit-tags option looks normal:

If you are in a cc, your edit-tags option looks like your name in cc (different colour, purple in my case), and has your rank icon in front of it:

Managed to have it happen to me as well, was resolved by relogging without closing the client.

As suspected its plugin hub related plugins I have are: Banked value tracker, banked experience, chat transcripts, clan chat warnings, clanchatcountryflags, detatched camera (i think its this one), emoji palette, equipment inspector, fight cave waves, flipping utilities, friends exporter, herb sack price check, inventory setup, loot logger, menu swapper extender, profiles, raidreloader, spec gregen timer, supplies tracker, volcanic mine, world highlighter, zulrah plugin

Probably the Player Indicators plugin https://github.com/runelite/runelite/commit/087b2ac9695778464962f6d28b02db7c2e3ae9cd

Do we know why this happens?

Happens with menuType == RUNELITE and the entry identifier op happens to be an index in client.getCachedPlayers() with clan information.
Because the only check on identifier is if (identifier >= 0 && identifier < players.length)


Black dashed lines across image

Describe the bug
intermittent black 'dashed' lines appear in acquisition
To Reproduce
Begin acquisition on camera with tcam-capture, save image.
Expected behavior
Image appears without artifacts.
Screenshots

computer used (please complete the following information):

OS: Debian 12
Architecture/Platform: amd64 Desktop
DMK 33GX174 (occurs with any camera)
tiscamera version tcam-ctrl --version
Versions:
Tcam:   1.1.1_/rev
Aravis: unknown_version_external <- libaravis-dev 0.8 from official debian repo
Modules:        gst_aravis_arvu3v_v4l2_libusb_tools

Additional context
I am not sure which layer this problem originates in, perhaps it's an Aravis problem.

Hello
We are not sure, what causes these artifacts. But you could try to use a different MTU on the network controller and see, whether the spacing of the dots changes. This may gives a hint for the cause.
I am sorry for guessing.
Stefan

Hi Stefan,
Thanks for your reply. It only occurs on one specific machine, so you might be correct that it has to do with the physical layer. I will check and report back.

Yes, that fixed it. Dropping MTU to 1024 and returning it to 1500 made the lines disappear. Thanks for pointing this out!

Hello
What happens, if you set the MTU to 9000? Is that at least possible on your computer? It will reduce network traffic.
Stefan

Hi Stefan,
Bumping up to 9000 works just fine, but I am not sure all of our production network infrastructure supports jumbo frames or not. I'd have to check with our IT guy.


Shared pathfinding logic

Target Tiles
Whenever a ghost is in chase or scatter mode, it is trying to reach a target tile somewhere on (or off) the screen. A target tile is merely a way to describe the tile a ghost would like to occupy at any given moment.
This tile can be fixed in place or change location frequently. Whenever the ghosts scatter to the corners of the maze, for example, each ghost is striving to reach a fixed target tile located somewhere near its home corner.
In chase mode, the target tile is usually (but not always) related to Pac-Man's current tile which changes often. Although it may not be obvious at first, the only difference between chase and scatter mode to a ghost is where its target tile is located. The same pathfinding logic applies in either case.
Looking Ahead
Ghosts are always thinking one step into the future as they move through the maze. Whenever a ghost enters a new tile, it looks ahead to the next tile along its current direction of travel and decides which way it will go when it gets there.
When it eventually reaches that tile, it will change its direction of travel to whatever it had decided on a tile beforehand. The process is then repeated, looking ahead into the next tile along its new direction of travel and making its next decision on which way to go.
When a ghost looks ahead into the upcoming tile, it must examine the possible exits from that tile to determine a way to proceed. In the picture below, the red ghost has just arrived at tile A and is moving right-to-left. It immediately looks ahead to tile B (the next tile along its direction of travel).
Each tile has four potential exits to be considered: right, left, up, and down. In the case of tile B, the up and down exits are blocked by walls and must be discarded as potential candidates. The right exit is also discounted because it would only take the ghost back to tile A again, and ghosts never voluntarily reverse direction. With three of the four possible exits eliminated from tile B, moving left is the only remaining choice.

This example is the most simple to explain as the ghost has but one way it can legally move. As such, we did not have to worry about where its target tile was located. The majority of game tiles in legal space are similar to this one, but things get more interesting when a ghost approaches a tile with more potential exits to choose from.
Intersections
When a ghost arrives one tile away from an upcoming intersection, it must choose between several possible directions in which to proceed. Consider the following example:

In the first picture, the red ghost has just reached tile A and is seeking its target (shown as the green tile). It immediately looks ahead to the subsequent tile along its present direction of travel (up). In this case, that tile is a four-way intersection. As this intersection tile has no walls blocking off any of the exits, the ghost can only discard his reverse direction (down), leaving three exits open for travel.
It looks one tile beyond the intersection in each of the three remaining directions, collecting "test tiles" (shown as the tiles with dashed, white lines). In the middle picture, the ghost triangulates the distance from each of these test tiles to its target tile.
Whichever direction's test tile has the shortest distance to the target becomes the direction the ghost will take upon reaching the intersection tile. In this case, the right test tile has the shortest distance to the target, and the ghost updates its chosen direction for the intersection tile accordingly.
Sometimes a ghost is presented with two or more test tiles that have the same distance to the target tile. In the example below, the red ghost must choose between moving down or left at the upcoming intersection tile. Unfortunately, both test tiles have the same distance to the target (bottom left).
To break the tie, the ghost prefers directions in this order: up, left, down, right. Up is the most preferred direction; right is the least. Therefore, the ghost chooses to go left at the intersection because left precedes down in the preference list. Although it may seem obvious to a person that going down was the better choice to reach the target, ghosts are not that smart. They cannot see more than a few tiles ahead and, as a consequence, cannot recognize the disparity between these two options.

All good for me !!! INSANE WORKKKK


Provide typings for typescript projects

Hi @crashtimer, we are definitely planning to provide typings.
We'll take care of that as soon as we can, but please don't hesitate to give us a hand if you want to.
Thanks!

One year ago. No typings. I will take this on.

Resolved by:
https://github.com/marker-io/browser-sdk/pull/14

@olivierkaisin Request you merge this and release right away. I'm a customer integrating this into our site for UAT and need it within 2 weeks. I don't like referring to my own github repos in production code.

Released today in 0.13.0


Pagination increment/decrement arrow not displaying in "Windows 10 Edge"

I've used react-table .
Pagination increment/decrement arrow not getting display in a Windows 10 Edge .
This might be because edge not supporting  html5 feature which this plugin is using.

Could you please post a screenshot?

Please reopen with a screenshot or more information :)


loadbalancer  has no option for defining a list of availability zones

Hi all,
for the  module opentelekomcloud.cloud.loadbalancer an important option is missing:

availability_zone_list

Maybe someone can add this option in a future release.
Regards
Uli

hi @hadoopch! if you are talking about elb - availability_zone_list is not supported, for vlb loadbalancer module is missing, but if you need it, we will take it

Yes exactly. There is no option to configure this.

do you mean loadbalancer module for vlb?

yes, then we will take to work

yes the loadbalancer module for elb

@hadoopch for elb  availability_zone_list is unsupported

Hi Polina,
i was able to define an array  "availability_zone_list" when using the API.
Best regards
Uli
Url : POST https://{ELB_Endpoint}/v3/{projectid}/elb/loadbalancers

Json:

{
  "loadbalancer" : {
    "vpc_id" : "e5a892ff-3c33-44ef-ada5-b713eb1f7a8b",
    "availability_zone_list" : [ "br-iaas-odin1a" ],
    "admin_state_up" : true,
    "vip_subnet_cidr_id" : "1800b6b8-a69f-4719-813d-24d62aaf32bd",
    "elb_virsubnet_ids" : [ "1fe8c0a8-d648-4294-8ea5-4d7f0c700e69" ],
    "name" : "elb-ipv4-public",
    "publicip" : {
      "network_type" : "5_bgp",
      "bandwidth" : {
        "size" : 2,
        "share_type" : "PER",
        "charge_mode" : "traffic",
        "name" : "elb_eip_traffic"
      }
    }
  }
}


Fix meta image

This hardcodes https://www.rudderstack.com/images/rudderstack_thumbnail.png in to the meta image tag. I couldn't figure out how to pull it from sanity.

I've tested the deploy URL and I'm just getting this fixed for now


Travis CI on master failed

See https://travis-ci.org/kubernetes-incubator/cri-tools/jobs/226291949.

We’re performing a logs database partition maintenance for public repositories from 1:00AM UTC to 4:00AM UTC on April, 27th.

Travis is under maintenance, no logs could be seen now.

I met this issue several times, and all caused by attach test. All in the tip version of golang, and time out of this line.

The above test is failed because of exec stream timeout.


Fix typo in iris.analysis.cartography._xy_range.

Spotted this line whilst skimming the file looking for something else. I am assuming this was just a mistake and always meant to test x_coord and y_coord...

Well spotted @ajdawson :grin:
I've sent you a small PR which includes a test.

I've merged your changes @rhattersley (thanks for mitigating my laziness) and it looks good... except for the bits that don't! See #1724.

it looks good... except for the bits that don't! See #1724.

I restarted the build and now we have a tick. :smile:

Is it too incestuous if one of us merges now?!

Is it worth getting a third person involved for a one character functional change? I doubt it...

Agreed. :+1:

We can always ask for forgiveness later. :stuck_out_tongue_winking_eye:


Trader System

Summarize your proposal
A generic system to buy and sell items in an interaction with an NPC or object
Describe the solution you'd like
It should be a generic system that can be used for NPC traders.
The goal is to use it in most of the farming routes and NPC shops
The items and the prices should be configurable with a config
In the future, an external connection for a dynamic system should be considered when implementing the system

@salutesh is assigned for GUI and implementation of this now. Contact him if you want to cooperate Steve aka Salutesh#4539.

Could add the basic logics/configs/layouts based on this:
https://www.youtube.com/watch?v=8yzQq6hme30

Started working on the basic prototype for the trader menu and added also some basic functionality:
https://gyazo.com/2bea8633770c2ea763d8481029f838f5

For further progress on the menu i am on a stage now where i need to know how you guys see the buy/sell handling with this menu here and what kind of information i should display for the items.
For example the quantity when the player wants to sell and buy something:

Great stuff @salutesh
I think each item also has a item description that could potentially be displayed?
Other then that, it would be great to optimise the interface for speed (I have always hated spending time in the UI rather then properly In-Game).
One way you could do that is by using multiple buttons that allow you to quickly buy different quantities.
An example of this could be to have a +1, +5 and +10 button that adds that to the quantity. This would make it easy for people to quickly buy large or small specic quantities.
Another example, maybe in combination with the above would be to have a text field in quantity that you could manipulate directly aswell.
For selling, you should be able to one click sell all of an item and it will do that.
That's a few ideas for now, love that work is already being done on this @salutesh

I have started a concept on a shop menu too, I will send you some pictures tomorrow.
Just something I already mentioned before: Keep the console/controller players in mind! Things like text fields might not be the best solution for using with a controller.

An example of this could be to have a +1, +5 and +10 button that adds that to the quantity. This would make it easy for people to quickly buy large or small specic quantities.

I also thought of something like that, but we need to decide if we then want to make sure we always get stacks that fit that system, because if you need to click all three buttons 6 times we rather do it with just a one button.
What we definetly need is the "max amount" function, especially for selling stuff you mined ect. My idea was that if you go up/to the left with the arrow from 1, you automatically get the max amount you have.

As promised a picture of my shop concept:

I like the overall concept and design. In my version i started with the selling part and how to bring the inventory and the players items into this whole concept and use it for a fluent experience when interacting with the menu. I would suggest that we bring our ideas together and work a concept out that fits to the required needs that @Arkensor posted.

Player Driven Economy would be a cool addition to bring into the trader system, notice

Here you see the #/X that X could be optionally changed to only be able to sell as much as is bought by the trader.

Wanted to check on something really quick. Isn't the trader system discussed here a legacy system for #186 ? Will we have both implemented? If that's the case, what's the point?
My train of thought is that if we have the item shops (#186) traders will be useless.

The quick item shop via 3d actions is an early variant that is still going to be be a nice addition once I had time to take care of a proper trader menu. In the long term there needs to be a UI to buy and sell, see prices, buy back, having a search if there are many items on e.g. a general store. So no this is still relevant.

Hey @salutesh @DrLuk just wanted to see if either of you were still keen on contributing something here?
We'll probably get our basic item shop in, in the next few days on dev branch but would still love to see this. Plus I think it provides a great example of how UIs can be built for the community.


Battlenet install failing with blizzard error

Battlenet installation failing mid install with a blizzard error code.

@M3rl1nnn did you close the window and let it install?

first, I got same problem too. Always install in 45%, It will appear an error message. But still can install and log in to battle.net.
Steam deck lib doesn't show the app.
second, I install Youtube, Netflix or EA, they doesn't show in the lib

Install Battle net and EA app success when I enable developer mode. But Youtube and Netflix still can not work.

@jaco9613 what is developer mode?

@moraroy It's under Settings -> System SETTINGS --> Enable Developer Mode.
This is for software developer use.

@jaco9613 oh OK gotcha... well I'm not on developer's and nsl works fine for me. Can you show in your log what are the changes or permissions that are different in developer mode?

Uploading NonSteamLaunchers-install.zip…

Hi @moraroy thanks for this awesome project. Same error here. Error says "The application encountered an unexpected error" and you're offered to send detaild do Blizzard, also with Dev mode enabled. I had other launchers selected during install time and non appear on the Non-steam tab.
Started the installation again (not afresh, just ran the installer again, selected the same launchers, clicked next). No errors this time but still nothing on the non-steam tab. Restarted the deck just in case, no dice.
Then tried again but with the option to install afresh, same error. And nothing on the non-steam tab.

Here's the log file. I do see some errors in there but not sure if they are expected or not. NonSteamLaunchers-install.log

@lfilho you guys need to close that error and let battlenet install twice

Hey @moraroy you mean just clicking ok on the error message and then running the installer again? That's what i did

@lfilho hmmm should work... basically with the current Proton, battlenet needs to be installed twice over on top of each other to install. Check the compatdata folder and see if there is any left over files that needs to be deleted it should just be a NSL folder once it's done that is ymlinked to your real folder. But regardless battlenet should install once you close that error window.

Alright, i just saw another #256 and the comment about not having a previous non-steam app installed borked it. Indeed after adding Chrome and running the installer, it worked! (Ignoring the battle.net error as you mentioned). Now i see all the installer on the non-steam tab, just have to test the actual games now! Woop! I'll definetely donate something later

@lfilho yeah not.your fault I need to fix that chrome error I don't know why it's doing that and preventing people installing properly.

@moraroy I do add chrome. But I reinstall the launch, it doesn’t appear in steam.
Event now, I play battle net still need open developer mode


Add ability for developers to pin available versions

Is your feature request related to a problem? Please describe.
We may release breaking versions of an integration and people complain they like the old version. ;)
Describe the solution you'd like
Allow integrations to pin versions somehow. Perhaps automatically grab the latest major version? i.e., if we're working on the v2.x branch always show the latest v.1.x branch. I know your components don't prepend v to releases, but I'd like to make sure v is supported for my use case.
Describe alternatives you've considered
Currently relying on "pre-release" flag to manually remove older versions so the last major version doesn't scroll off the end.
Additional context
Yes, working on not having a reason for people to downgrade.

How about you just don't release broken stuff? 🤣
Currently I actually grab all releases, but only show the last 5 (better UX), but I guess I can remove that filer 🤷
Adding a list of pinned versions adds complexity and confusion to the developer and the user.

Maybe expose a global setting so people can expand the filter beyond 5 and master. I think the filter makes sense as a default setting.

Next version adds the concept of options (both UI and YAML)
Would be a great place for it, you got a suggestion for (All)?
I guess setting a high # would do 🤷

Added with b04aa34

Thanks!

0.14.0 is now released.


UnitTests not possible with MaterialComponents

Bug, feature request, or proposal:
Bug
What is the expected behavior?
Unit-Tests should be runnable
What is the current behavior?
When writing UnitTests for Components that use Components from the MaterialModule, it crashes when TestBed resets the TestingModule
TypeError: Cannot read property 'unsubscribe' of undefined 	    at ScrollDispatcher.deregister (webpack:///~/@angular/material/core/overlay/scroll/scroll-dispatcher.js:52:0 <- config/karma-test-shim.js:24402:50) 	    at Scrollable.ngOnDestroy (webpack:///~/@angular/material/core/overlay/scroll/scrollable.js:28:0 <- config/karma-test-shim.js:136759:22) 	    at Wrapper_Scrollable.ngOnDestroy (/OverlayModule/Scrollable/wrapper.ngfactory.js:13:16) 	    at CompiledTemplate.proxyViewClass.View_MdSidenavContainer0.destroyInternal (/MdSidenavModule/MdSidenavContainer/component.ngfactory.js:66:24) 	    at CompiledTemplate.proxyViewClass.AppView.destroy (webpack:///~/@angular/core/src/linker/view.js:203:0 <- config/karma-test-shim.js:132618:14) 	    at CompiledTemplate.proxyViewClass.DebugAppView.destroy (webpack:///~/@angular/core/src/linker/view.js:606:0 <- config/karma-test-shim.js:133021:38) 	    at CompiledTemplate.proxyViewClass.View_PruefvorgangsverwaltungApp0.destroyInternal (/DynamicTestModule/PruefvorgangsverwaltungApp/component.ngfactory.js:880:19) 	    at CompiledTemplate.proxyViewClass.AppView.destroy (webpack:///~/@angular/core/src/linker/view.js:203:0 <- config/karma-test-shim.js:132618:14) 	    at CompiledTemplate.proxyViewClass.DebugAppView.destroy (webpack:///~/@angular/core/src/linker/view.js:606:0 <- config/karma-test-shim.js:133021:38) 	    at CompiledTemplate.proxyViewClass.View_PruefvorgangsverwaltungApp_Host0.destroyInternal (/DynamicTestModule/PruefvorgangsverwaltungApp/host.ngfactory.js:39:19) 	    at CompiledTemplate.proxyViewClass.AppView.destroy (webpack:///~/@angular/core/src/linker/view.js:203:0 <- config/karma-test-shim.js:132618:14) 	    at CompiledTemplate.proxyViewClass.DebugAppView.destroy (webpack:///~/@angular/core/src/linker/view.js:606:0 <- config/karma-test-shim.js:133021:38) 	    at CompiledTemplate.proxyViewClass.AppView.detachAndDestroy (webpack:///~/@angular/core/src/linker/view.js:187:0 <- config/karma-test-shim.js:132602:14) 	    at ComponentRef_.destroy (webpack:///~/@angular/core/src/linker/component_factory.js:147:51 <- config/karma-test-shim.js:60572:70) 	    at ComponentFixture.destroy (webpack:///~/@angular/core/bundles/core-testing.umd.js:263:0 <- config/karma-test-shim.js:7042:35) 	    at webpack:///~/@angular/core/bundles/core-testing.umd.js:728:61 <- config/karma-test-shim.js:7507:78 	    at Array.forEach (native) 	    at TestBed.resetTestingModule (webpack:///~/@angular/core/bundles/core-testing.umd.js:728:0 <- config/karma-test-shim.js:7507:34) 	    at Function.TestBed.resetTestingModule (webpack:///~/@angular/core/bundles/core-testing.umd.js:636:0 <- config/karma-test-shim.js:7415:26) 	    at Object.<anonymous> (webpack:///~/@angular/core/bundles/core-testing.umd.js:967:0 <- config/karma-test-shim.js:7746:21) 	    at ZoneDelegate.invoke (webpack:///~/zone.js/dist/zone.js:229:0 <- config/karma-test-shim.js:119404:26) 	    at ProxyZoneSpec.onInvoke (webpack:///~/zone.js/dist/proxy.js:79:0 <- config/karma-test-shim.js:119071:39) 	    at ZoneDelegate.invoke (webpack:///~/zone.js/dist/zone.js:228:0 <- config/karma-test-shim.js:119403:32) 	    at Zone.run (webpack:///~/zone.js/dist/zone.js:113:0 <- config/karma-test-shim.js:119288:43) 	    at Object.<anonymous> (webpack:///~/zone.js/dist/jasmine-patch.js:102:0 <- config/karma-test-shim.js:118786:34) 	    at ZoneQueueRunner.jasmine.QueueRunner.ZoneQueueRunner.execute (webpack:///~/zone.js/dist/jasmine-patch.js:132:0 <- config/karma-test-shim.js:118816:42) 	    at ZoneDelegate.invokeTask (webpack:///~/zone.js/dist/zone.js:262:0 <- config/karma-test-shim.js:119437:35) 	    at Zone.runTask (webpack:///~/zone.js/dist/zone.js:151:0 <- config/karma-test-shim.js:119326:47) 	    at drainMicroTaskQueue (webpack:///~/zone.js/dist/zone.js:405:0 <- config/karma-test-shim.js:119580:35)
What are the steps to reproduce?
Write a Karma-Test for a Component using a MaterialComponent like SideNav and calling fixture.detectChanges(), import MaterialModule and run the test
Which versions of Angular, Material, OS, browsers are affected?
Material Beta2
Is there anything else we should know?

Here someone already described the Problem: http://stackoverflow.com/questions/42345925/angular2-material-md-sidenav-container-causes-exception-in-ng-test

@Sabartius Can you provide some code from your test? We have many unit tests up and running for Material components in this repo, including sidenav, so it is probably specific to the test.

Happens to me too with just the default setup of sidebar nav and toolbar using angular cli generator.

@kara I created a new app using the angular-cli and installed material beta2.
The Component Code is quite simple:
<md-sidenav-container>
  <h1>
    {{title}}
  </h1>
  <md-sidenav #sidenav>
  </md-sidenav>
</md-sidenav-container>

i ran the original tests created by the cli for the app component. the only change i made was importing the MaterialModule:
import { TestBed, async } from '@angular/core/testing';
import { MaterialModule } from '@angular/material';

import { AppComponent } from './app.component';

describe('AppComponent', () => {
  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [
        AppComponent
      ],
      imports: [
        MaterialModule
      ]
    }).compileComponents();
  }));

  it('should create the app', async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app).toBeTruthy();
  }));

  it(`should have as title 'app works!'`, async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app.title).toEqual('app works!');
  }));

  it('should render title in a h1 tag', async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    fixture.detectChanges();
    const compiled = fixture.debugElement.nativeElement;
    expect(compiled.querySelector('h1').textContent).toContain('app works!');
  }));
});

and there's the error again:
Chrome 56.0.2924 (Linux 0.0.0) AppComponent should render title in a h1 tag FAILED
	TypeError: Cannot read property 'unsubscribe' of undefined
	    at ScrollDispatcher.deregister (webpack:///~/@angular/material/core/overlay/scroll/scroll-dispatcher.js:52:0 <- src/test.ts:10758:50)
	    at Scrollable.ngOnDestroy (webpack:///~/@angular/material/core/overlay/scroll/scrollable.js:28:0 <- src/test.ts:85186:22)
	    at Wrapper_Scrollable.ngOnDestroy (/OverlayModule/Scrollable/wrapper.ngfactory.js:13:16)
	    at CompiledTemplate.proxyViewClass.View_MdSidenavContainer0.destroyInternal (/MdSidenavModule/MdSidenavContainer/component.ngfactory.js:66:24)
	    at CompiledTemplate.proxyViewClass.AppView.destroy (webpack:///~/@angular/core/src/linker/view.js:203:0 <- src/test.ts:81045:14)
	    at CompiledTemplate.proxyViewClass.DebugAppView.destroy (webpack:///~/@angular/core/src/linker/view.js:606:0 <- src/test.ts:81448:38)
	    at CompiledTemplate.proxyViewClass.View_AppComponent0.destroyInternal (/DynamicTestModule/AppComponent/component.ngfactory.js:107:19)
	    at CompiledTemplate.proxyViewClass.AppView.destroy (webpack:///~/@angular/core/src/linker/view.js:203:0 <- src/test.ts:81045:14)
	    at CompiledTemplate.proxyViewClass.DebugAppView.destroy (webpack:///~/@angular/core/src/linker/view.js:606:0 <- src/test.ts:81448:38)
	    at CompiledTemplate.proxyViewClass.View_AppComponent_Host0.destroyInternal (/DynamicTestModule/AppComponent/host.ngfactory.js:33:19)
	    at CompiledTemplate.proxyViewClass.AppView.destroy (webpack:///~/@angular/core/src/linker/view.js:203:0 <- src/test.ts:81045:14)
	    at CompiledTemplate.proxyViewClass.DebugAppView.destroy (webpack:///~/@angular/core/src/linker/view.js:606:0 <- src/test.ts:81448:38)
	    at CompiledTemplate.proxyViewClass.AppView.detachAndDestroy (webpack:///~/@angular/core/src/linker/view.js:187:0 <- src/test.ts:81029:14)
	    at ComponentRef_.destroy (webpack:///~/@angular/core/src/linker/component_factory.js:147:51 <- src/test.ts:39360:70)
	    at ComponentFixture.destroy (webpack:///~/@angular/core/bundles/core-testing.umd.js:263:0 <- src/test.ts:69117:35)

@Sabartius Thanks for the additional info. It looks like the first two tests generated by the CLI do not call fixture.detectChanges(). This means that change detection isn't run, so the onInit hook will never fire properly to set up the subscription. In this case, the test should fail because it's not accurately simulating the lifecycle of the component.

Sorry to bring this up but I've got a setup here where fixture.detectChanges() is called but I still got the error.
Here is my spec
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { MaterialModule } from '@angular/material';

import { DashboardComponent } from './dashboard.component';

describe('DashboardComponent', () => {
  let component: DashboardComponent;
  let fixture: ComponentFixture<DashboardComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [MaterialModule],
      declarations: [DashboardComponent]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(DashboardComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

and the template
<md-card>
  <md-card-title>Dashboard</md-card-title>
</md-card>

@kara is this really the preferred way? I have around 200 Tests that worked with Beta1 that fail now after the upgrade to Beta2. I often use the TestBed and Injection to Test Component-Behavior without using the dom, so that i don't need to call fixture.detectChanges(), but now it would be always necessary to call it?

I got this error message to go away after I imported ComponentFixture from @angular/core/testing, which the cli did not include.  Then all my tests ran, including ones without the testbed for an isolated service test.  Prior to that, every single test failed whether it was using the service bed or not.

I have the same error, none of the workarounds described above works for me. I have ComponentFixture imported and fixture.detectChanges() in the spec.ts included by ng g component .. generator.

Here is a dirty workaround until this issue is resolved:
In file<EMAIL_ADDRESS>change line 52 to
    ScrollDispatcher.prototype.deregister = function (scrollable) {
        if (this.scrollableReferences.get(scrollable) != null) {
            this.scrollableReferences.get(scrollable).unsubscribe();
        };
        this.scrollableReferences.delete(scrollable);
    };

At least it makes tests pass until the issue is being investigated.


Question: can graph labels have different styles?

Hello,
I know this may be similar to https://github.com/capitalone/react-native-pathjs-charts/issues/51 and https://github.com/capitalone/react-native-pathjs-charts/issues/5 but I wanted to know if it's possible to have different style for the labels. I also didn't see something of the sort in the docs.
I'm currently working with a Radar graph and it works quite well. Right now it's something like this:

I would like having D, F and H in a different style. Is that possible?
Thanks.

Sorry for the extreme delay in the response and it's possible I'm misunderstanding something, but all the charts have a label property in the options to change the style of the label. In the example app (and in the docs) for the radar chart, I see this:
label: {
      fontFamily: 'Arial',
      fontSize: 14,
      fontWeight: true,
      fill: '#34495E'
    }

Are you looking for some customization beyond this?

No problem. Thanks for responding.
I'm still looking for a solution to this. I'm indeed looking for a deeper level of customization. I'm currently using this label config:
label: {
fontFamily: 'Arial',
fontSize: 12,
fill: 'white'
}
But this applies to EVERY label on the graph. I was wondering if I could set specific style for one of the labels in particular.


import_jax_weights_ failed on AlphaFold-Multimer 2.3.0

Hi,
Thanks for the conversion script. It worked on AlphaFold Multimer 2.2.0 but when I run the same command on AlphaFold 2.3.0
I guess that's because AlphaFold changed the layout of outputs in 2.3.0? Do you have plans to update the convert script later on?
Traceback (most recent call last):
  File "convert_alphafold_to_unifold.py", line 17, in <module>
    import_jax_weights_(model, load_ckpt, version=model_name)
  File "/g/kosinski/geoffrey/unifold_review/unifold_classification/Uni-Fold/scripts/translate_jax_params.py", line 532, in import_jax_weights_
    assign(flat, data)
  File "/g/kosinski/geoffrey/unifold_review/unifold_classification/Uni-Fold/scripts/translate_jax_params.py", line 113, in assign
    weights = torch.as_tensor(orig_weights[k])
  File "/home/dingquanyu/.conda/envs/unifold_3.8/lib/python3.8/site-packages/numpy/lib/npyio.py", line 260, in __getitem__
    raise KeyError("%s is not a file in the archive" % key)
KeyError: 'alphafold/alphafold_iteration/evoformer/template_embedding/single_template_embedding/template_embedding_iteration/triangle_multiplication_outgoing/layer_norm_input//scale is not a file in the archive'

I have attached the full error report as well: here and look forward to your advice. Thank you.

see if #112 fix this. plz use model names as multimer_af2_* when running.

Hi @ZiyaoLi
I've tested the new scripts but got an error: TypeError: init() got an unexpected keyword argument 'swap'
Traceback (most recent call last):
  File "scripts/convert_alphafold_to_unifold.py", line 17, in <module>
    import_jax_weights_(model, load_ckpt, version=model_name)
  File "/g/kosinski/geoffrey/unifold_review/Uni-Fold/scripts/translate_jax_params.py", line 431, in import_jax_weights_
    [TemplatePairBlockParams(b) for b in tps_blocks]
  File "/g/kosinski/geoffrey/unifold_review/Uni-Fold/scripts/translate_jax_params.py", line 431, in <listcomp>
    [TemplatePairBlockParams(b) for b in tps_blocks]
  File "/g/kosinski/geoffrey/unifold_review/Uni-Fold/scripts/translate_jax_params.py", line 339, in <lambda>
    "triangle_multiplication_incoming": TriMulInParams(b.tri_mul_in),
  File "/g/kosinski/geoffrey/unifold_review/Uni-Fold/scripts/translate_jax_params.py", line 244, in <lambda>
    "projection": LinearSwapParams(tri_mul.linear_ab_p, tri_mul.linear_ab_p.weight.shape[0]//2),
  File "/g/kosinski/geoffrey/unifold_review/Uni-Fold/scripts/translate_jax_params.py", line 174, in <lambda>
    "weights": LinearWeightSwap(l.weight),
  File "/g/kosinski/geoffrey/unifold_review/Uni-Fold/scripts/translate_jax_params.py", line 150, in <lambda>
    LinearWeightSwap = lambda l: (Param(l, param_type=ParamType.LinearWeight, swap=True))
TypeError: __init__() got an unexpected keyword argument 'swap'

Hi again,
I've fixed this error and it works now. I've also pushed it to a new PR but I'm not sure if my solution is correct?


Gate native Swift/Objective-C code per platform [SDK-4700]

[ ] All new/changed/fixed functionality is covered by tests (or N/A)
[ ] I have added documentation for all new/changed functionality (or N/A)

📋 Changes
This PR gates all the iOS-specific code and macOS-specific code in auth0_flutter behind compile-time conditionals, so it compiles correctly on both platforms.
Also the Podspec of auth0_flutter was updated to use the FlutterMacOS dependency on macOS, instead of Flutter, which is iOS-only, and the minimum deployment target of the sample app was updated to match the version specified in the Podspec.

The flutter analyze CI check (CI / Analyze auth0_flutter_platform_interface Flutter package) will pass once https://github.com/auth0/auth0-flutter/pull/347 gets merged.


Invalid configuration header: expected "data_source {data source name}"

pip install soda-core
pip install soda-core-postgres
configuration.yml
data_source my_postgres:
  type: postgres
  connection:
    host: localhost
    username: postgres
    password: postgres123
  database: postgres
  schema: transactional

Postgres Table:

checks.yml
checks for d_month:
- schema:
    fail:
      when required column missing:
        - month_id
        - action_month
- missing_count(action_month) = 0:
    name: All products have a key

soda test-connection -c configuration.yml -d my_postgres
[10:26:22] Soda Core 3.3.3
Successfully connected to 'my_postgres'.
Connection 'my_postgres' is valid.

soda scan -c configuration.yml -d my_postgres -c checks.yml -V
[10:26:53] Soda Core 3.3.3
[10:26:53] Reading configuration file "configuration.yml"
[10:26:53] Reading configuration file "checks.yml"
[10:26:53] Invalid configuration header: expected "data_source {data source name}".
  +-> line=None,col=None in checks.yml
[10:26:53] No checks file specified
[10:26:53] Scan execution starts
[10:26:53] Scan summary:
[10:26:53] No valid checks found, 0 checks evaluated.
[10:26:53] 1 errors.
[10:26:53] Oops! 1 error. 0 failures. 0 warnings. 0 pass.
ERRORS:
[10:26:53] Invalid configuration header: expected "data_source {data source name}".
  +-> line=None,col=None in checks.yml

What am I doing wrong?
It would be great if the documentation could have simple, clear end-to-end examples like this

SAS-3356

hi, you are passing in the checks file as a config file using the -c parameter. Check files need to be passed in as a positional argument, with no prefix, i.e
soda scan -c configuration.yml -d my_postgres checks.yml -V

I am not sure what exactly are you missing from docs, our online docs have multiple examples, e.g. Take a sip of Soda and even the open source docs have complete docs and examples like this one.


Export the functions in types and changelogs

Would be nice if you export some of the functions in types.js and changelog.js, because i could want to use it in for instance in github actions to give info about a PR on a early stage. Is that possible? Thanks for the great work you did here.

Hi @miguelramos ! Apologies for not seeing this notification sooner!
The most recent beta version of lets-version has switched over to TypeScript, so the *.d.ts definitions that are generated should be a bit more accurate. Checkout the 0.8.5-beta.1 and let me know what you think!

Also, happen and open to feedback, as well!
Here's the latest open PR: https://github.com/benduran/lets-version/pull/22

@miguelramos the latest version of lets-version has been released, which should hopefully help address this<EMAIL_ADDRESS>is the latest version
I'll close this ticket for now, but if you still notice issues, please don't hesitate to create a new ticket and ping me. Thank you!

@benduran thanks for the reply. I will try the new version. In the meanwhile i will open. a new bug that i found it.


Feat/beta

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@c03a2d9). Click here to learn what that means.
The diff coverage is 100%.

@@           Coverage Diff           @@
##             master     #1   +/-   ##
=======================================
  Coverage          ?   100%
=======================================
  Files             ?      2
  Lines             ?     62
  Branches          ?      2
=======================================
  Hits              ?     62
  Misses            ?      0
  Partials          ?      0

Impacted Files
Coverage Δ

src/utils.ts
100% <100%> (ø)

src/use-formstate.ts
100% <100%> (ø)

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 c03a2d9...201e27d. Read the comment docs.

:tada: This PR is included in version 1.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


⚠ Bofrost.fr has degraded performance

In e385c21, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1671 ms

Resolved: Bofrost.fr performance has improved in 01779cc after 6 minutes.


PR Review: Clean POM

Update the pom file.
Will probably need to compare with existing pom files from other classes (e.g., HttpClient, Netty, etc).
File: pom.xml
Lines: All
Comment from Jonathan:

The pom needs cleaning up, but we can hold on that until it is merged into the combined httpClient + HttpUrlConnection http project.

Updated pom.xml to be more in line with other HTTP Clients.
The file will need to be further developed as the project progresses but it should be enough for now.
Merged to main branch with this commit and checked to make sure tests still run.


Sometimes featuredpath get rendered wrong

Expected Behavior
featuredpath option always gets rendered as "/img/YEAR/MONTH"
Current Behavior
Sometimes the URL for the images gets rendered wrong:
Here is a example:
<snip>
featured: "image.jpg"
featuredalt: "xxx"
featuredpath: "date"
---
</snip>

bad rendering (html  source) in the post itself:

the preview in the "recent posts" sections looks fine:

...

   <time class="published" datetime='2016-08-26'>August 26, 2016</time>

Your Environment
Hugo Version: 0.40.2
**Browser:**Chrome
Desktop or Mobile: desktop

I'm closing this, as I can't reproduce this myself reliably


Reconsider design of filters

Follow on from #12. Got some great tips from Bret on Twitter: https://twitter.com/binarybret/status/1291191732579827714

Did you consider making filters part of the schema instead of strings?
A couple of examples of what I’m talking about:
https://grandstack.io/docs/graphql-filtering/
https://pypi.org/project/graphene-sqlalchemy-filter/
https://realtime-location-tracking.demo.hasura.app/console

As a reminder, filters currently look like this:
{
  repos(filters: ["license=apache-2.0", "stargazers_count__gt=10"]) {
  ...

I quite like the design proposed here: https://github.com/graphql-python/graphene-sqlalchemy/pull/164
query {
    pets(filter: {name: {eq: "Lassie"}}) {
    ...

I want to support a list rather than a dictionary, but I do like the idea that each filter looks like this:
{name: {operator: "value"}}

So repos(filters: ["license=apache-2.0", "stargazers_count__gt=10"]) would instead be:
{
  repos(filters: [{license: {eq: "apache-2.0"}}, {stargazers_count: {gt: '0}}]) {
  ...

If this means I get autocomplete against column names and operators - plus compatibility with GraphQL variables for the values - this could be a worthwhile change.

I can't figure out how to represent a type in Graphene which looks like this:
filters: is a list of {enum_of_column_names: {enum_of_operators: string-value}}

Full list of operators I would want to support: https://datasette.readthedocs.io/en/stable/json_api.html#column-filter-arguments

I think I know how to do this: filters is a list of usersComparison objects, where usersComparison is a type that has a field for each column name that has a value of type Operation.
The Operation type has a field for each of the allowed operations each matching to a value that's a string. Or maybe even a value that's dependent on the type of the column - so there would be StringOperation and IntegerOperation and FloatOperation types.

Got this working in dev:
{
  repos(filters: [{name: {contains: "datasette"}, stargazers_count: {gt: "10"}}]) {
    nodes {
      full_name
      stargazers_count
    }
  }
}

Got this working too:
{
  repos(filters: [{name: {in: ["datasette", "sqlite-utils"]}, stargazers_count: {gt: "10"}}]) {
    nodes {
      full_name
      stargazers_count
    }
  }
}

Managed to fix the types:
{
  repos(filters: [{name: {in: ["datasette", "sqlite-utils"]}, stargazers_count: {gt: 10}}]) {
    nodes {
      full_name
      stargazers_count
    }
  }
}

This is great. I was hacking on this a little last night, but didn't quite get there. Excited to see this progress!

Here's the example in the test:
https://github.com/simonw/datasette-graphql/blob/87eba0c242efbc0b1096ebcc5f16cc36062de520/examples/filters.md#L1-L12

I'm a bit annoyed by the use of a list here. In the vast, vast majority of cases the list will only have a single item in it, especially since this is a valid way of doing an AND (provided the and is between two different columns):
{
    users(filters:[{score: {gt: 50}, name: {contains: "dog"}}]) {
        nodes {
            name
            score
        }
    }
}

I'm tempted to ditch the list part of this entirely.

The downside of this is that you won't be easily able to use two conditions on the same column - for example "name contains 'simon' and name is not equal to 'simontest'".
But even that case can be covered like so:
{
    users(filters: {name: {contains: "simon", not: "simontest"}}) {
        nodes {
            name
            score
        }
    }
}

So the only thing that won't work is an AND that needs to apply the same operation to the same column more than once. I think I can live with that limitation.

And if it's not a list any more I can call it filter: instead:
{
  repos(filter: {license: {eq: "apache-2.0"}, stargazers_count: {gt: 10}}) {
    nodes {
      full_name
      stargazers_count
      license {
        key
      }
    }
  }
}


Reduce workload of bigdecimal test

Signed-off-by<EMAIL_ADDRESS><EMAIL_ADDRESS>

Tested: /Test_grinder/job/Grinder_Advanced/1308/console


Multiple copies of the UnityMainThreadDispatcher

Hi,
I came across this when I searched for some sort of Singleton gameobject pattern which is persistent across scenes. I implemented it just the way you did, but had the problem that my object was created several times when I switched back and forth between scenes. After reading this I ended up removing the OnDestroyed()-method which clears the _instance field and added this to the Awake-method:
`void Awake () {
    if (_instance == null) {
        _instance = this;
        DontDestroyOnLoad (this.gameObject);
        //...
    } else {
        Destroy (this.gameObject);
    }
}`

Maybe this is an issue for you, too (frankly, I don't know why the OnDestroy()-method was called on my gameobject)

Thank you for this. Adding it and pushing the new version. Sorry fo the inconvenience!

Fixed this in https://github.com/PimDeWitte/UnityMainThreadDispatcher/commit/ae76667b6504ee38ce8cdf480255c094ed5d38fd

Hi - I seem to be getting the same behaviour using the latest version here on github, not sure which part of it makes it do this. Here's a screenshot after loading between a few scenes -- showing  multiple instances of that object: https://i.imgur.com/1qaXJQH.png


Add the AnimatorJs library

A javascript animation viewer based on a custom animation API primarily designed for p5.js and allows for dynamic, lightweight, real-time rendered browser animations controlled purely by code.
The library's repository: https://github.com/RandomGamingDev/AnimatorJs/tree/main

Thanks for bringing these libraries over to this repo! I think since moving from the old repo, we changed the image format a bit, so now featuredImage is the path to the image and a separate top-level featuredImageAlt should contain the alt text:

Sorry about the late response, I've updated the library's yaml to fit the new format as specified by @davepagurek in this message: https://github.com/processing/p5.js-website/pull/626#issuecomment-2457129685


refactored the tts and stt in one file called Interlocus for better management

issues addressed in this PR:

fixed minor bugs
removed some recurrent words in the model. it no longer says how can i assist you today after every response. it still does, but less often now.
refactored the tts and stt in one file class called Interlocus for better integration.
improved the dataset and did new training


pod install 安装问题

在执行 pod install 时，出现报错
[!] Your Podfile requires that the plugin `cocoapods-ppbuild` be installed. Please install it and try installation again.

确认在 gem list 中有此插件
我的 ruby 版本：
ruby -v
ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.x86_64-darwin22]

pod env
Stack
   CocoaPods : 1.12.1
        Ruby : ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-darwin22]
    RubyGems : 3.4.10
        Host : macOS 13.5.1 (22G90)
       Xcode : 14.3.1 (14E300c)
         Git : git version 2.39.2 (Apple Git-143)
Ruby lib dir : /usr/local/Cellar/ruby/3.2.2_1/lib
Repositories : trunk - CDN - https://cdn.cocoapods.org/

Installation Source
Executable Path: /usr/local/Cellar/cocoapods/1.12.1/libexec/bin/pod

Plugins
cocoapods-deintegrate : 1.0.5
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.1
cocoapods-trunk       : 1.6.0
cocoapods-try         : 1.2.0

Podfile
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

install! 'cocoapods'

plugin 'cocoapods-ppbuild'
use_frameworks! :linkage => :static
# use_static_binary!

target 'Performance_Test' do
  # Comment the next line if you don't want to use dynamic frameworks

  pod 'DoraemonKit/Core', '~> 3.0.4', :configurations => ['Debug']
  pod 'DoraemonKit/WithLogger', '~> 3.0.4', :configurations => ['Debug']
  pod 'DoraemonKit/WithGPS', '~> 3.0.4', :configurations => ['Debug']
  pod 'DoraemonKit/WithLoad', '~> 3.0.4', :configurations => ['Debug']
  pod 'DoraemonKit/WithWeex', '~> 3.0.4', :configurations => ['Debug']
  pod 'DoraemonKit/WithDatabase', '~> 3.0.4', :configurations => ['Debug']
  pod 'DoraemonKit/WithMLeaksFinder', '3.0.4', :configurations => ['Debug']
  pod 'lottie-ios', '~> 2.5.3'
  pod 'SDWebImage'

  # Pods for Performance_Test

  target 'Performance_TestTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'Performance_TestUITests' do
    # Pods for testing
  end

end

尝试卸载重新安装一下：
sudo gem uninstall cocoapods cocoapods-ppbuild
sudo brew uninstall cocoapods cocoapods-ppbuild
sudo brew install cocoapods cocoapods-ppbuild
另外我看你使用的还是1.0.0版本，建议更新到最新版本，新版本加入了一些功能还修复了一些已知bug


Use round in CockroachDB timestampdiff pattern to avoid rounding errors

I agree that this is an improvement. (round() is I suppose better than cast().)
The thing is that it's actually kinda wrong to truncate the fractional seconds part, and on most databases the fractional seconds don't get truncated. But I don't know if there's a way to fix it on Cockroach.

But with Cockroach's fractional seconds precision of 1_000 (microseconds), I don't think we truncate: for e.g. a unit of SECOND, we multiply by 1e6 to take all the decimal digits into consideration. The round() here is only needed because extract returns a float8 type, which sometimes produces results with an error of .1  when multiplying.
@gavinking you think we can merge this?


Handle multiple Combine LivySession instances

The GUI attempts to prevent multiple LivySessions from existing, but it's possible in the following ways:

quickly clicking "Restart Livy Session" button

Need to handle multiple instances, either by preventing outright, or facilitating their removal.

Thanks to @colehudson for observing this.
Addressed.  Multiple instances of Combine LivySession can still be created, as can multiple Livy sessions, but the GUI can now handle that, and give a user course to remove and restart.  Additionally, polling is not infinite when restarting, timeout is 120 seconds.


Error message refers to non-existing argument

The error message describing how to adapt the code to v0.2 refers to an argument options. However, as far as I can tell, the function takes as an argument compilation_steps.

Thanks for raising this issue! 🙏  It slipped through my fingers.


FIX: Use np.bool_ instead of deprecated np.bool

Fixes the pre-release build. Guess we'll deal with the Docker build separately.


startTime issue in Waves

I am having an issue trying to set a startTime for Waves where no matter what value you put for startTime, if it is active and present, the level will not load and cause an error page to come up. As soon as startTime is gone then the level will load.

Can you check the JS console to see if it's spitting out any error messages about not being able to spawn the wave, maybe due to a misconfigured wave or not matching the Builds/Spawns dependent ThangTypes?

Yeah I fixed it. That's exactly what it was. Thanks for the message back
tho, appreciate it.
Can you check the JS console to see if it's spitting out any error messages
about not being able to spawn the wave, maybe due to a misconfigured wave
or not matching the Builds/Spawns dependent ThangTypes?
—
Reply to this email directly or view it on GitHub
https://github.com/codecombat/codecombat/issues/2086#issuecomment-69522695
.


oauth hard coded parameters in index.html

there are had coded parameters in index.html:
initOAuth({
clientId: "your-client-id",
clientSecret: "your-client-secret-if-required",
realm: "your-realms",
appName: "your-app-name",
scopeSeparator: ",",
additionalQueryStringParams: {}
});
is there any plan to make this more deployment friendly by either adding parameter whne invoking the swaggerui middleware or by configuration file... and should the scopeSeparator be " " instead of ",", and finally waht about the audience property?

This code is from swagger-ui.  Please file the bug with them if you think it's wrong, but between you and me I think it's just a placeholder.


Solidarity causes yarn failure with global.Observable on bare app

Solidarity is throwing an error on a super simple bare app. Easy to reproduce (see below), and this is causing issues with Ignite.
Error: Cannot find any-observable implementation nor global.Observable.

Reproduce:
mkdir solidarity-issue-263
cd solidarity-issue-263
yarn init # accept all defaults
yarn add -D solidarity
yarn solidarity # error will show

This no longer seems to happen -- closing!


fix(Makefile): silence docker-machine warning when it isn't installed

Without this change:
registry

To use a local registry for Deis development:
/bin/bash: docker-machine: command not found
    export DEV_REGISTRY=:5000

This change returns dev-registry to the old behavior:
registry

To use a local registry for Deis development:
    export DEV_REGISTRY=:5000

This is useful on Linux where it's common to use docker natively.

I know this was the previous behavior, but is :5000 actually a legitimate setting for DEV_REGISTRY?

it is not legit. I've always used $HOST_IPADDR:5000 on my linux workstation.

Switched to printing HOST_IPADDR. I was trying to bring the original behavior on linux back (pre-docker machine), but I agree that since people have HOST_IPADDR set anyway we should use it.

LGTM

code LGTM