default mapping for string/binary

consider using the mapping below  as default mapping for string/binary
types:
    - from: string:binary
      to: org.springframework.web.multipart.MultipartFile

Had a case where string:binary was mapped to another type (i think it was Resource, spring) so it is better to have no default mapping.


Two Submissions on Delaney

@rbharath This PR is for two submissions (random forest + ECFP & GCN + GC) on Delaney. Previously you mentioned a tool for filtering data points. Can you share it again?

You may go ahead and merge it. Which datasets might require filtering?

You may go ahead and merge it. Which datasets might require filtering?

Let me go ahead and start a new issue to figure out which datasets should be filtered...

Let me go ahead and start a new issue to figure out which datasets should be filtered...


Add upgrade_image option

For upgrading the cluster with the specific build, added upgrade_image variable.
Signed-off-by: Varad Ahirwadkar<EMAIL_ADDRESS>

/ok-to-test

@varad-ahirwadkar could you please mention in the doc that one of image or version is needed for upgrade? Also which one takes precedent. I think image will be considered when both are given. Would like confirmation on these tests from your side. Thanks.

@varad-ahirwadkar could you please mention in the doc that one of image or version is needed for upgrade? Also which one takes precedent. I think image will be considered when both are given. Would like confirmation on these tests from your side. Thanks.

ok sure, yes image will take precedent.

@varad-ahirwadkar you need to fix the format errors shown above. Sorry for being so picky about it.

@varad-ahirwadkar you need to fix the format errors shown above. Sorry for being so picky about it.

Yes, resolved format errors!

I have made the changes in documentation. Could you please review PR @yussufsh @sudeeshjohn ?
Thanks.

/unhold

/cc @Prajyot-Parab @cs-zhang

@mkumatag another one waiting to be merged using the bot.

Per my initial investigation what I see is that prow does optimisation while merging and feature called batch merge Automatically runs batch tests and merges multiple PRs together whenever possible. and this PR is now batched with #412   because per prow condition these PRs got the /lgtm and /approval and ready to merge and clubbed into one batch for the final test and merge.
But with our condition in the GH flow where we aren't allowing the PR to merge until we get 2 approval(which is a trouble maker here)
In future we need to find someway to workaround this or remove this +2 concept because prow is working properly.

/lgtm


fix

@sascala regarding "via" vs "using" - this is an old IBM habit I have. can you explain why "via" is a better option?

I can see why "via" could be problematic, since it's unnecessary latin. On the other hand, "by using" seemed vague. "Via" seemed to state more precisely what the user was doing with the GUI or CLI.

@sascala okay, thanks for the explanation.


Make a 90 second demo video

It's a bit hard to learn how to use Excalidraw. We should make a very quick demo video (English-only hosted on YouTube with internationalized captions) to demonstrate how to do things like enable collaboration and draw curved lines. We can include a link to the demo video somewhere in the UI with a "take a tour" call to action.

Rapid Mockup Creation Using Excalidraw by Michael Liendo via https://github.com/excalidraw/excalidraw-blog/issues/47
/cc @mtliendo

Maybe use Zoom to record an architecture session with the developers collaborating using excalidraw while explaining the architecture of excalidraw?

https://www.youtube.com/watch?v=JvDmJybANCQ
https://www.youtube.com/watch?v=fix2-SynPGE&t=423s

I think we can close this :)


Develop an SAP Fiori App Using ABAP

Mission URL: https://developers.sap.com/mission.cp-starter-extensions-abap.html
In total time its mentioned as "1hr. 20mins" but one tutorial is "15 mins" another is "1hr. 15mins", so total should be "1hr. 30mins". Please refer below screenshot.

Hi @MichaelCzcz ,
can you change this on the overview page?
We needed to update the time on one tutorial.
I'm not able to update it on the mission page.
Best regards,
Merve

@akula86 Can you please make this change? Thank you.

Fixed


CloudBees embedded build status showing 'unknown'

The embedded build status defined in README.md is currently showing 'unknown'.
Performs a configuration issue? According to the Embeddable Build Status Icon page:
https://netflixoss.ci.cloudbees.com/job/eureka-master/badge/

If you want the status icons to be public readable/accessible, just grant the ViewStatus permission globally to anonymous.

Thank you for spotting this. We created recently a new Jenkins build job for Eureka at different location. I have pushed fix for this (#432).

Thanks!


New Expansion-Only Functions $ELSE $ELSEIF

Add two new functions so things do not become crazy in complicated templates

Done easily with the switch to Ictiobus based frontends

Close ince #24 branch is merged


"guild cat" doesn't work like the linux cat tool in some cases

I'm trying to use guild cat to display the console output from a training run (stored in the .guild/output log file), however it seems like the guild cat command doesn't interpret the ANSI escape sequences the same way as the linux cat tool (for example the ^[[A character which I think cat interprets as "go back one line and continue outputing there" kind of like flushing the last printed row).
This results in some output looking like this

when it's supposed to look like this (which I get when reading the file with linux cat), note the progress bar staying at the bottom row the entire time

This issue is perhaps related to #54 .

Thank you! A couple questions:

Is the script using tgdm for progress?

2/ What is the file that the Linux cat is run on? Is it RUN_DIR/.guild/output or a file generated with a redirect/tee of your script output when run with Python?

Yes, tqdm for progress, printing to sys.stderr
It is RUN_DIR/.guild/output

There are sundry remaining issues with Guild and tqdm unfortunately and I suspect this is one of them. We need an issue resolution doc to help recreate this behavior and verify the fix when it lands. This is going to backlog for a post 0.7 followup release.


Pull request just for initial review purposes

Should add some unit tests

See my branch for cleaning up on the gateway stopped

Coverage decreased (-0.08%) to 46.33% when pulling 795a1c2c999bd9755f9203d086baf91054e0a902 on irina-mitrea-luxoft:develop into 89934a14f1019913b97b43432d5d506dbc7afcc8 on kaazing:develop.

@alingherasim can we close this?

Coverage decreased (-0.08%) to 46.33% when pulling cfaff50bcf8bb7e6bc2c17d2dac77e92d9151d9d on irina-mitrea-luxoft:develop into 89934a14f1019913b97b43432d5d506dbc7afcc8 on kaazing:develop.

Yes, we can close this pull request. We will create a new pull request which will contain the necessary functionality.


chore(main): release 0.2.21

:robot: I have created a release beep boop
0.2.21 (2024-11-10)
Bug Fixes

完成拆分将一个job拆成多个jobs执行3 (8f711c2)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

v0.2.21
:sunflower:


More db methods

I would appreciate if you would add more methods, as quickmongo and quick.db has.

push()
pull()
add()
subtract()

 await db.push("userInfo.items", "Sword");
    // -> { difficulty: 'Easy', items: ['Sword'] }

    // Adding to a number (that doesn't exist yet) in an object:
    await db.add("userInfo.balance", 500);
    // -> { difficulty: 'Easy', items: ['Sword'], balance: 500 }

    // Repeating previous examples:
    await db.push("userInfo.items", "Watch");
    // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 500 }
    await db.add("userInfo.balance", 500);
    // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 1000 }

    // Fetching individual properties
    await db.get("userInfo.balance"); // -> 1000
    await db.get("userInfo.items"); // -> ['Sword', 'Watch']

    // remove item
    await db.pull("userInfo.items", "Sword");
    // -> { difficulty: 'Easy', items: ['Watch'], balance: 1000 }

@ririko5834 - thanks for asking this and we have looked at that in the past. For right now I am going to keep this here but as you can see there are other functionality just around Map that we want to focus on and extend onto.
With this we would be extending what is standard across all the storage adapters. It might make more sense to build this as a super set on top.

@ririko5834 - after looking at this I think we are going to not do this as part of the core. If you would like to make an extension onto Keyv to support this we are happy to list it in the README.
Thanks so much for posting on this.

I will wait until someone will make extension for it. I am not sure how to extend the core of keyv to implement those methods


[Sticky] - Refreshing content on scrolling back to top.

Steps to Reproduce

Open http://semantic-ui.com/modules/sticky.html
Press "End" key
Press "Home" key

Expected
The Sticky should refresh contents of 1st and 3rd columns (rails).
Result
The Sticky does not refresh contents until page is scrolled.

Testcase
http://semantic-ui.com/modules/sticky.html
User agent
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.155 Safari/537.36

Can reproduce on Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36
Does not occur on Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0

I'm unable to reproduce on Chrome/Win. Home/end seem to trigger scrollchange event, and everything appears fine.

@jlukic any chance you could try Chrome in a virtual machine?

I've just tested on Chrome 45 / OS X Yosemite using BrowserStack.com
Unable to reproduce.

Just tested on Windows, using Chrome: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36
Can reproduce reliably. Open the page, wait until it loads. End, then Home. The elements appear as in the screenshot by @klenkovic and they are interactive (react to hover, links are clickable etc.). Switching to another tab and back doesn't change anything, but resizing the browser window makes the elements reappear in the correct place.

@jlukic any luck in reproducing?

Yes. I realized my issue was I was using page down and page up not end and home`. These seem to work fine
Might be something like #15847

Fixed, pretty simple. Sorry about delay


This does not use Om!

It looks like you rewrote this to use Reagent rather than Om - README and project description should be updated. Thanks for the code, either way!

This is true. [insert excuse for lazy here] :)

feel free to PR over my laziness


msvc: warning suppressions for template instantiations

In DPF convention is to pad macros with 1 space inside each condition.
So this should be:
#ifdef _MSC_VER
# pragma warning(disable:4661)
#endif

Also please add small text describing why the warning is there. Otherwise readers will not be able to follow what 4661 means without looking up online.
Thanks


Why object creation is slow in PyO3 and how to enhance it

This is a support issue following #661, where I explain why PyO3’s object creation can be slow and how we can speed up this.
Since I joined this project a year ago, I’m not sure my understanding is correct, especially about the historical aspect of the design.
cc: @ijl @ehiggs
TL; DR

We have an overhead around object creation.
For PyObject and Py<T>, we cannot remove this overhead.
For current &PyAny, &PyDict or so, we can remove this overhead by changing them to PyAny<'py>, PyDict<'py>, and so on.
But for it to come true, we need a careful design decision about how to handle owned/borrowed pointers.
Once this would come true, we could replace many usages of PyObject with low-cost PyAny<'py> types(and then we should rename PyAny with PyObject).

First, let’s revisit our 2 kinds of object
It is a really confusing thing, but we have 2 types for representing Python’s object, named PyObject and PyAny .
So, what’s the difference between them?
The answer is PyAny is forced to use as &’py PyAny, which has the same lifetime as GILGuard, but PyObject isn’t.
    let any: &PyAny = {
        let gil = Python::acquire_gil();
        let dict: &PyDict = PyDict::new(gil.python());
        dict.as_ref()
    };

Thus, this snippet causes a compile error, because &PyAny has the same lifetime as GILGuard.
CPython has a reference-count based GC, which really differs from Rust’s lifetime based memory management system. For integrating these two systems, it’s a natural choice to represent Python objects’ lifetime by GILGuard(= our RAII guard that corresponds to Python’s thread lock).
In contrast, PyObject can exist even after GILGuard drops.
    let obj: PyObject = {
        let gil = Python::acquire_gil();
        let dict: &PyDict = PyDict::new(gil.python());
        dict.to_object()
    };

This ‘not bounded’ nature of PyObject helps users to write complicated extensions. For example, you can send PyObject into another thread, though you cannot send PyAny.
However, &PyAny is a sufficient and reasonable choice for many use cases.
For other types than PyAny like PyDict, this ‘not bounded’ types are represented by Py<T> wrapper type.

Bounded by GIL
Not bounded

&PyAny
PyObject

&PyDict, &PyList, …
Py<PyDict>, Py<PyList>, …

PyObject retrieval and object storage
Then, how we ensure that PyObject can be used after GILGuard drops?
Let’s think about the this situation.
fn object() -> PyObject {
    let gil = Python::acquire_gil();
    // do something
    make_object(gil.python())
}
{
    let obj = object();
    let gil = Python::acquire_gil();
    // do something
}

First, we need to ensure that PyObject is not deallocated after first GILGuard drops by incrementing
the reference count of the object when creating it.
Then we have to decrement the reference count when it drops, but here comes the problem.
Let’s recall that values are dropped in reverse order of declaraton in Rust, which means obj drops after gil drops.
{
    let obj = object();
    let gil = Python::acquire_gil();
    // do something
    implicit_drop(gil);
    implicit_drop(obj);
}

This is a really problematic thing, because we cannot touch any Python objects when we have no GIL.
To prevent this behavior, we have object storage that stores object pointers.
When PyObject drops, we don’t decrement its reference count but store its internal pointer to the storage.
Then after we release another GILGuard, we decrement reference counts of released PyObjects.
Yeah, object storage is a core overhead we discuss in this issue and ideally should be removed.
But for PyObject, I have no idea other than using storage to enable this complicated behavior.
&’py Lifetime and object storage
For &PyAny, the situation is a bit simpler.
What we want to do for &Py~ types is just forcing them to have the same lifetime as GILGuard.
So when we create &Py~ types, we store its internal pointer to the object storage and returns the reference to the pointer in the storage.
And when GILGuard drops, we decrement the object’s reference count for owned objects and do nothing for borrowed1 objects.
To enable this conditional behavior, we have 2 object storages(for owned/borrowed) for &Py~ types.

This owned/borrowed does not mean Rust’s owned value and reference, but the term used in Python C-API doc. In the CPython doc, ‘borrowed’ object means we shouldn’t increment the reference count of the object. E.g., CPython doc says

Note that any Python object references which are provided to the caller are borrowed references; do not decrement their reference count!

How we can remove this overhead
So, yeah, for &Py~ types what we do is just decrementing reference count or doing nothing when it drops.
We can do this operation without the internal storage by Drop::drop.
Then we would have PyAny<’py>, PyDict<’py>, and so on instead of &PyAny, &PyDict or so.
Thus this would be a really breaking change.
However, since I don’t think our current API that uses reference only for representing lifetime is not reasonable, I’m sure it is worth considering.
The problem is how we distinguish borrowed and owned object without two types of object storage.
A possible idea is the use of a wrapper type, say, PyOwned<PyAny>.
This design is clear and zero-cost but it requires lots of API changes.
Another possible idea is to use a boolean flag to represent if the object is owned or not.
struct PyAny<'py> {
    pointer: NonNull<ffi::PyObject>,
    owned: bool,
}

It doesn’t force users to rewrite lots of codes but needs some runtime costs.
We need discussion and help
We appreciate any idea, discussion, and PRs around this area, especially about zero-cost object types design.
Thanks.

I feel that perhpas "bounded by GIL" and "not bounded" is a wrong distinction to make and implement, at least at the core construct level. Instead we should just use "owned reference" (Py<Py*>, adjusts refcount on creation and drops) and "borrowed reference" (&Py*, no refcount opereations on creation or drop).
Neither of those would be tied to any particular GIL lock and would require a GIL token to work with. Once we do that, we ought to fix our APIs to properly use these types. For instance, the new methods for native types should return owned references, not &T ones.
We could then look for a way to add versions owned and borrowed references that are bound to a particular instance of a GIL guard, but IMO those should be an add-on rather than a core construct.
This, I believe, would remove the book-keeping overhead in object creation and deletion in most, but not all, cases. For example, consider this exceedingly common pattern (in pseudocode):
// now
fn myfn(...) {
    let my_thing = Py*::new(py); // calls gil::register_owned(...) = overhead!
    let return_object = my_think.into_object(); // overhead, increasing refcount on `my_thing`.
    drop(gil); // internal overhead, reducing refcount on stuff registered with `gil::register_owned`!
    return return_object.into_ptr();
}

// adjusted
fn some_glue(...) -> ... {
    let my_thing: Py<Py*> = Py*::new(py); // does not need to call `gil::register_owned`.
    let return_object: Py<PyAny> = my_think.into_object(); // effectively a pointer cast
    drop(gil); // does not touch my_thing refcount...
    return return_object.into_ptr();
}

Then gil::register_owned overhead would remain necessary only in the instances where we are able to get an owned reference to be dropped after GIL is unlocked, as in your example from code above:
{
    let obj: Py<Py*> = object();
    let gil = Python::acquire_gil();
    // do something
    implicit_drop(gil);
    implicit_drop(obj);
}

It should be possible to mitigate this overhead here as well by doing something along the lines of:
#[thread_local]
static mut WE_HOLD_THE_GIL = false;

impl Drop for Py<T> {
    fn drop(&mut self) {
        if WE_HOLD_THE_GIL { // super cheap hot branch
             decref(self)
        } else {
             // will be decrefd once pyo3 takes GIL lock.
             register_to_decref_on_next_lock(self)
        }
    }
}

Somewhat related, something that could inform our design a little: in order to enable implementation of Python::finalize (Py_Finalize) we should be releasing objects in our object storage on entry to GIL rather than on exit, because otherwise we open ourselves up for double-frees.

For integrating these two systems, it’s a natural choice to represent Python objects’ lifetime by GILGuard(= our RAII guard that corresponds to Python’s thread lock).

I am having trouble totally wrapping my head around how the two object management philosophies mesh, but I thought I would chime in to point out that this is not strictly true: GILGuard does not ensure that you hold the GIL during its lifetime, it ensures that you hold the GIL whenever you are successfully executing Rust code during the lifetime of the GIL guard. Any calls to Python APIs can release and re-acquire the GIL, which is why this hack was necessary. This makes me think that the idea of tying object lifetimes to the lifetime of a given GILGuard object might be the wrong abstraction.
I still don't totally understand the object storage stuff, but it seems like acquiring the gil just around refcount operations (and other operations where we actually perform Python operations that require the GIL) would solve this problem, no?

I still don't totally understand the object storage stuff, but it seems like acquiring the gil just around refcount operations (and other operations where we actually perform Python operations that require the GIL) would solve this problem, no?

Technically it would, yes, but you don’t really want GIL to be acquired and released for each and single local that is being dropped – inefficiency in doing so is exactly what makes it worth implementing the object storage.
Then, again, if we stop putting every single object we create into this storage, then perhaps just taking GIL for the !WE_HOLD_THE_GIL branch would be good enough.

Instead we should just use "owned reference" (Py<Py*>, adjusts refcount on creation and drops) and "borrowed reference" (&Py*, no refcount opereations on creation or drop).

Bounded by the current design, I didn't come up with such a design but representing borrowed pointer by &Py sounds really natural and good choice.

It should be possible to mitigate this overhead here as well by doing something along the lines of:
#[thread_local]
static mut WE_HOLD_THE_GIL = false;
...

And I like this thread_local too.

I thought I would chime in to point out that this is not strictly true: GILGuard does not ensure that you hold the GIL during its lifetime, it ensures that you hold the GIL whenever you are successfully executing

Ah, thank you for pointing it out. Maybe my explanation should be refined.

Any calls to Python APIs can release and re-acquire the GIL, which is why this hack was necessary. This makes me think that the idea of tying object lifetimes to the lifetime of a given GILGuard object might be the wrong abstraction.

Yeah, just owned or borrowed model can be much clearer.

I think that &Py* for borrowed, Py<Py*> for owned is a great idea.

Then, again, if we stop putting every single object we create into this storage, then perhaps just taking GIL for the !WE_HOLD_THE_GIL branch would be good enough.

I would think that this is likely to be true. C++'s pybind11 doesn't actually check the GIL state at when decreasing references for owned values. This isn't perfect, though in my experience only creates problems in very rare circumstances. If we had a check for the GIL, from my experience 99% of the time we'll have the GIL, and the slow path will be rarely hit.
It's worth remembering that the GIL lock is ref-counted, so even in the example code we've been discussing:
{
    let obj: Py<Py*> = object();
    let gil = Python::acquire_gil();
    // do something
    implicit_drop(gil);
    implicit_drop(obj);
}

The GIL might well still be held after implicit_drop(gil) - all that's doing is decreasing the GIL lock reference count by one 😄

Also, for checking if we have the GIL: there's an API PyGILState_Check(). But perhaps it's faster if we maintain the information in a static mut bool as proposed.

A data point for the discussion here: the following code, from a question on Gitter, will cause memory  consumption to indefinitely grow when inside the loop. I think it's from pyo3's use of GilPool to hold all references, meaning none of the temporary PyDict objects ever get freed.
#[pymethods]
impl Test {
    #[new]
    #[args(callback = "None")]
    fn new(py: Python) -> PyResult<Self> {
        Ok(Test{n:0})
    }

    fn run(&mut self,callback: PyObject, py: Python) -> PyResult<()> {
        let d=PyDict::new(py);
        loop {
            d.set_item("val", self.n)?;
            callback.call(py, (d,),None)?;
            self.n+=1;
        }
    }
}

Here I propose a new idea to remove internal storage for borrowed objects.
It would look like
pub struct PyAny(ffi::PyObject);

impl PyAny {
    fn from_borrowed_object(py: Python, ptr: *mut ffi::PyObject) -> &Self {
        ptr as _
    }
    fn from_owned_object(py: Python, ptr: ...) -> &Self {
        py.register_ptr(ptr);
        ptr as _
    }
}

Pros

Compatibility. It doesn't require so much user efforts for migration.
Relationship with PyCell. Now we have many abstraction layers to treat &PyCell(=pointer) and  &PyAny(=pointer to pointer) as the same, but with this formulation of PyAny we don't need them.

Cons
Apparently, it solves nothing for owned pointers. Still getting many owned objects can cost.
So I think we should add 3rd constructor for this:
impl PyAny {
    // or better name
    fn as_owned(py: Python, ptr: ...) -> Py<Self> {
        ...
    }
}

Py already has Drop implementation that decrements the reference count, which means it is an owned object. So we can use Py as Owned type.

Or from_owned_ptr should return Py<Self>? :thinking:

It's an interesting idea, we should definitely explore it. I think that most of the return types would have to become Py<T> though, which means user will have to write as_ref(py) a lot. Maybe that's an acceptable compromise.
I wonder whether we can skip actually having the concrete layout and just have struct PyAny(Unsendable);
After I realised PyO3/pyo3#883 last night I think getting owned pointers performant and ergonomic is probably more important than borrowed pointers, because I think most return types will have to become owned pointers.

I wonder whether we can skip actually having the concrete layout and just have struct PyAny(Unsendable)

Yeah, we can skip it... but PyAny(UnsafeCell<ffi::PyObject>) would be easier to implement.

After I realised #883 last night I think getting owned pointers performant and ergonomic is probably more important than borrowed pointers, because I think most return types will have to become owned pointers.

Hmm... :thinking:  I don't think either owned or borrowed object is important.
For a pyfunction, args/kwargs is obtained by from_borrowed and the return type is obtained by from_owned.
#[pyfunction]
fn py_function(arg: Vec<i32>, kwargs: &PyDict) -> PyResult<SomeRustType> {
...
}

Hmm... 🤔 I don't think either owned or borrowed object is important.

For a pyfunction, args/kwargs is obtained by from_borrowed and the return type is obtained by from_owned.

Agreed. What I was thinking is that general users will be making a lot of owned objects from these borrowed pointers, so they should hopefully be easy to work with.

general users will be making a lot of owned objects from these borrowed pointers,

You mean iterating list/dict or so?
I think we need with_borrowed APIs for that.


IDEM-216

Was not sure which fields required it, so just added it to... Mobile, TFN, and House number for now. :)

Mobile needs to be the mobile and email the email keypad


Migrate chains to use genreconciler

This leverages genreconciler to dramatically reduce the boilerplate needed for tekton/chains and dramatically increase the code coverage.
Much of the churn in vendor is from go mod tidy && go mod vendor, which I ran to pull in a few previously pruned packages from knative.dev/pkg, and it seems to have drifted a bit.
WIP until the baseline change: https://github.com/tektoncd/chains/pull/138 lands.
/assign @dlorenc
/kind cleanup

cc @priyawadhwa
I rebased this one.

linting error, checking...

Same test, definitely flaky.
/retest

Ok, this is RFAL @priyawadhwa and @dlorenc

I'll try to spin up a PR that replaces reflect.DeepEqual, and hopefully that adds some stability 🤞

/approve

/lgtm


Add example for ethernet

Just noticed that most of the examples are missing link_patches, should we add it?

Number and type of GPIOs are MCU-specific.
You need to #[cfg(esp32)], #[cfg(esp32c3)] and so on. Or you can only do a single #[cfg(esp32)] and for the other MCUs panic with an error that the user needs to adjust the GPIOs for their MCUs in the example and then run it.


Fix reconnect on connection reset

The current check for detecting whether a reconnect is necessary does not work correctly.
According to the official documentation fwrite() returns false when encountering an error.  In order to detect whether the connection was reset we should therefore check for false and not 0.
I am aware that this package is deprecated, but it is still a dependency of gos/web-socket-bundle 2.x and 3.x. Without this fix this package and therefore gos/web-socket-bundle's Pusher doesn't work reliably

Thanks!

Tagged and released in 1.2.1

I am aware that this package is deprecated, but it is still a dependency of gos/web-socket-bundle 2.x and 3.x.

And that's why the package isn't completely abandoned.  As long as those versions of the bundle are still supported I'll make sure that this package functions and take in bug fixes to keep it reliable, but new functionality or major updates aren't going to be added in at this point.

Thanks. Much appreciated.


Docker container for generate.py

Hi,
For a work, I had to create a Docker container to create multiresolution panoramas with generate.py.
You can get the project here: https://hub.docker.com/r/quadeare/docker_multiresolution_pannellum/
This example creates a multiresolution of "my_image.jpg" in the folder where you are.
$ docker run --rm -it -v $(pwd):/opt/output \
quadeare/docker_multiresolution_pannellum:latest my_image.jpg

Bye bye ;)

Looks interesting. Thanks!

@mpetroff what do you think about adding docker file to the repo and building some kinda official docker image and mention it in the docs? It would be very useful for other uses to not search this info inside issues IMO. Maybe @quadeare can create a PR with Dockerfile?


Interesting summary

https://blog.jetbrains.com/datalore/2020/12/17/we-downloaded-10-000-000-jupyter-notebooks-from-github-this-is-what-we-learned/

Another interesting article on community notebook pain points and some solutions: https://www.nature.com/articles/d41586-021-01174-w


fix: change attestor names to witness.dev domain

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
600

Relevant Lines:
1555

💛  - Coveralls


/bosses command still shows permanent W7 call_of_the_mists

![image](https://user-images.githubusercontent.com/20122405/178114500-796f3f09-2c95-4d37-a9ca-71a847a035f8.png
Description:
After June 28 patch to Guild Wars 2, Call of the Mists system was changed in-game. "/bosses" command has not been updated to reflect these changes.
Steps to Reproduce:

Go to a channel (or DM) with GW2Bot
Enter "/bosses" command
See error

Expected behavior:
Bot output will show only one raid wing with Call of the Mists effect active, as well as one wing with Emboldened effect active.
Resulted behavior:
Bot output shows Call of the Mists effect active on two different raid wings. See screenshot.

Fixed! I think. Hopefully. Maybe. Possibly. Perhaps.


Fullscreen option takes time to load for YouTube and Vimeo player as compare to Video player

Steps to Reproduce

Hit the URL : https://plyr.io/
Go to Video player and observe that 'fullscreen' control is loaded along with other player controls
Now, go to YouTube player and observe that 'fullscreen' control is not loading/displayed along with other player controls. It takes few seconds to load
Now, go to Vimeo player and observe that 'fullscreen' control is not loading/displayed along with other player controls. It takes few seconds to load

Expected Results :
Fullscreen option should load/appear along with other player controls
Actual Results :
Fullscreen option takes time to load for YouTube and Vimeo player as compare to Video player
Notes :
See the attached screen shot :

The time to load is the Vimeo or YouTube API's loading. There's no point showing the fullscreen action unless it can be used?

@SamPotts : As per your above comment, not sure if its possible to hide the all the player controls and show only when full-screen option is available for Vimeo and YouTube player for better user experience?


FAT-9771: Apply changes to authority source file POST DTO

Purpose
Fix steps for creating Authority Source Files from initialization step in mod-search module.
Approach
In order to fix failing steps to create authority source files apply latest changes to authority source file POST DTO
Learning
FAT-9771
Test Run results:

Shouldn't there be no source at all?
@psmagin, Why? or I did not get the question


Width and Height are not reactive

I'm using the Vue3 version and it looks like the width and height values are not reactive, so for example, I can't dynamically resize the zoomer in a responsive design app.  I guess I can understand this isn't an easy undertaking, but thought I'd save somebody a few hours trying to make it work.
 <PinchScrollZoom
    :width="item.slideSizeWidth"  // dynamically changing item.slideSizeWidth has no effect !!!
    :height="item.slideSizeHeight"

If one were to implement this feature, forcing a reset whenever the width or height changed would be a fine simplification.

Hi, @jaybo if you still use this package I would like to update that I completely refactored it, now @coddicat/vue-pinch-scroll-zoom for vue3 and clearer

Hi, @jaybo if you still use this package I would like to update that I completely refactored it, now @coddicat/vue-pinch-scroll-zoom for vue3 and clearer

I came across the same problem, but my project is still based on Vue2. So is there any way to make the width or height reactive in Vue2?


Fix reference in help to renamed offset UI section

Use current text of locale key:background.fix_misalignment in
key:help.imagery.offset (renamed in
11035127a34c125f844245e279c736c8ed0d5810).

@mikini Thanks!

You`re welcome, just stumbling upon these things while working on the Danish translation.
But thinking it ought to be possible somehow to reference other keys like this to pull them in from the translation automatically. But I see this might become rather complex requiring circular reference detection and such.

But thinking it ought to be possible somehow to reference other keys like this to pull them in from the translation automatically.

It'd be tough to do this automatically, but straightforward to do manually in code. Definitely worth considering in order to avoid mismatches like this.


[Refactor] Rename enum TableType.LAKE to TableType.CLOUD_NATIVE

Also rename TableType.LAKE_MATERIALIZED_VIEW to TableType.CLOUD_NATIVE_MATERIALIZED_VIEW
What type of PR is this：

[ ] BugFix
[ ] Feature
[ ] Enhancement
[x] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto backported to target branch

[x] 3.0
[ ] 2.5
[ ] 2.4
[ ] 2.3

@Mergifyio backport branch-3.0

Fixed failed test case, PTAL @imay @wyb


Unexpected error

System Health details
System Information

version
core-2023.5.3

installation_type
Home Assistant OS

dev
false

hassio
true

docker
true

user
root

virtualenv
false

python_version
3.10.11

os_name
Linux

os_version
6.1.25

arch
x86_64

timezone
America/Chicago

config_dir
/config

Home Assistant Community Store

GitHub API
ok

GitHub Content
ok

GitHub Web
ok

GitHub API Calls Remaining
4967

Installed Version
1.32.1

Stage
running

Available Repositories
1355

Downloaded Repositories
14

HACS Data
ok

Home Assistant Cloud

logged_in
true

subscription_expiration
June 11, 2023 at 7:00 PM

relayer_connected
true

relayer_region
us-east-1

remote_enabled
true

remote_connected
true

alexa_enabled
true

google_enabled
true

remote_server
us-east-1-5.ui.nabu.casa

certificate_status
ready

can_reach_cert_server
failed to load: timeout

can_reach_cloud_auth
ok

can_reach_cloud
ok

Home Assistant Supervisor

host_os
Home Assistant OS 10.1

update_channel
stable

supervisor_version
supervisor-2023.04.1

agent_version
1.5.1

docker_version
23.0.3

disk_total
30.8 GB

disk_used
10.6 GB

healthy
true

supported
true

board
ova

supervisor_api
ok

version_api
ok

installed_addons
Terminal & SSH (9.7.0), Cloudflared (4.1.5), File editor (5.6.0), Node-RED (14.1.5), Home Assistant Google Drive Backup (0.110.4), ESPHome (2023.4.4), Let's Encrypt (4.12.8), Ring-MQTT with Video Streaming (5.2.2), Mosquitto broker (6.2.1), Studio Code Server (5.5.7)

Dashboards

dashboards
1

resources
6

views
7

mode
storage

Recorder

oldest_recorder_run
May 12, 2023 at 3:47 PM

current_recorder_run
May 17, 2023 at 10:54 AM

estimated_db_size
123.58 MiB

database_engine
sqlite

database_version
3.40.1

Checklist

[X] I have enabled debug logging for my installation.
[X] I have filled out the issue template to the best of my ability.
[X] This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
[X] This issue is not a duplicate issue of currently previous issues..

Describe the issue
Upon submitting host/port/API token, I receive "Unexpected Error." Any hints on how to get additional debug information? Teams to Stream Deck works using the same API token.
Reproduction steps

Install repo
Add Integration
Fill out the fields
receive "Unexpected Error"
...

Debug logs
No logs available

Diagnostics dump
No response

I also had an Unexpected Error, however mine was when trying to add a second device. Is that possible?

I'm getting the same.  I have next to zero permissions on my work/teams laptop, could that be why?
Otherwise, I've tried host name and IP but no luck.  Bummer.  :(

Upon further research, it appears the organization has to have enabled the third party apps to connect.  I'm certain my company has not allowed it, as they are the no fun club.  :)
Oh well, a geek can dream...

Seeing the same. Slightly confused as to what the host and port should be? Should it be left as localhost or is this HA hostname?

@TarheelGrad1998 and @adam-cobb, I figured it out.
Initially, I had the same suspicions about the integration being locked down. I see the "There are no allowed apps or devices" message too – but it was working in my Steam Deck.

Instructions

On your WiFi router, assign a fixed IP address to your computer.
Open up HomeAssistant and start your integration setup.
Replace localhost with your local IP address.
Enter your API token.

Made no difference to me, I still get the error.  I wasn't sure how that would but I'll try anything.
Below is what I get from the ha log, in case there is anything to be done about it.
Logger: custom_components.ms_teams_websockets.config_flow
Source: custom_components/ms_teams_websockets/hub.py:38
Integration: Microsoft Teams (Local Websockets) (documentation, issues)
First occurred: 10:37:47 AM (2 occurrences)
Last logged: 10:50:56 AM
Unexpected exception
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/websockets/legacy/client.py", line 655, in await_impl_timeout
return await self.await_impl()
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/websockets/legacy/client.py", line 659, in await_impl
_transport, _protocol = await self._create_connection()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/asyncio/base_events.py", line 973, in _connect_sock
await self.sock_connect(sock, address)
File "/usr/local/lib/python3.11/asyncio/selector_events.py", line 628, in sock_connect
return await fut
^^^^^^^^^
asyncio.exceptions.CancelledError
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/config/custom_components/ms_teams_websockets/config_flow.py", line 64, in async_step_user
info = await validate_input(self.hass, user_input)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/ms_teams_websockets/config_flow.py", line 45, in validate_input
if not await ms_teams_hub.test_endpoint():
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/config/custom_components/ms_teams_websockets/hub.py", line 38, in test_endpoint
async with websockets.connect(self._uri) as websocket:
File "/usr/local/lib/python3.11/site-packages/websockets/legacy/client.py", line 637, in aenter
return await self
^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/websockets/legacy/client.py", line 654, in await_impl_timeout
async with asyncio_timeout(self.open_timeout):
File "/usr/local/lib/python3.11/asyncio/timeouts.py", line 111, in aexit
raise TimeoutError from exc_val
TimeoutError

I also get "Unexpected Error" when trying to connect, but with a different error in the logs - not sure if this is the same bug:
2023-10-11 10:37:11.810 ERROR (MainThread) [custom_components.ms_teams_websockets.config_flow] Unexpected exception
Traceback (most recent call last):
  File "/config/custom_components/ms_teams_websockets/config_flow.py", line 64, in async_step_user
    info = await validate_input(self.hass, user_input)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/ms_teams_websockets/config_flow.py", line 45, in validate_input
    if not await ms_teams_hub.test_endpoint():
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/ms_teams_websockets/hub.py", line 38, in test_endpoint
    async with websockets.connect(self._uri) as websocket:
  File "/config/lsiopy/lib/python3.11/site-packages/websockets/legacy/client.py", line 637, in __aenter__
    return await self
           ^^^^^^^^^^
  File "/config/lsiopy/lib/python3.11/site-packages/websockets/legacy/client.py", line 655, in __await_impl_timeout__
    return await self.__await_impl__()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/lsiopy/lib/python3.11/site-packages/websockets/legacy/client.py", line 662, in __await_impl__
    await protocol.handshake(
  File "/config/lsiopy/lib/python3.11/site-packages/websockets/legacy/client.py", line 329, in handshake
    raise InvalidStatusCode(status_code, response_headers)
websockets.exceptions.InvalidStatusCode: server rejected WebSocket connection: HTTP 403


Export badges button appears when no badges

It doesn't make sense for the export badges button to appear when there are no badges.

This is done but we need to not show the badges section or display a message to say there are no messages if there are none on the users profile.

Export badges never made it back to the front-end. Closing


You need to login to the ACR first before you push...

...the documentation fails to tell you you'll need to execute a 'docker login https://<acrname>.azurecr.io/' command prior to the push.

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

ID: 6afe8c14-efa4-31a6-9fd9-e68f2d878226
Version Independent ID: c67857a5-ee1b-3ed2-f281-dd62c4c4c6f3
Content: Kubernetes on Azure tutorial - Prepare ACR
Content Source: articles/aks/tutorial-kubernetes-prepare-acr.md
Service: container-service
GitHub Login: @neilpeterson
Microsoft Alias: nepeters

Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.

Actually, I think this is my error.  😊
I missed the  az acr login --name   step outlined.
I did get the docker login to work after turning on the Admin and getting the Access Key though, so either work, but the one described is more secure and private.
Sorry for the fire drill.
Ron Bokleman  |  Services Manager, Digital Innovation  |  BlueMetal, a division of Insight
c.<PHONE_NUMBER>  |  ron.bokleman@bluemetal.commailto:ron.bokleman@bluemetal.com?subject=Inquiry  |  bluemetal.comhttp://bluemetal.com/
#noclickyclicky
From: Micah<EMAIL_ADDRESS>Sent: Thursday, June 28, 2018 4:57 PM
To: MicrosoftDocs/azure-docs<EMAIL_ADDRESS>Cc: Bokleman, Ron<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/azure-docs] You need to login to the ACR first before you push... (#10942)
Thanks for the feedback! I have assigned the issue to the content author to investigate further and update the document as appropriate.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/azure-docs/issues/10942#issuecomment-401170899, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AHHxLBhbipT7Un4pn0DaIztoLgZByp8dks5uBUMrgaJpZM4U8Bvh.

@ronbok thanks for the update! If you notice other issues just let us know :)

Please could you update the docs with full command-line only instructions.  Many thanks.
For those who have arrived here because you can't authenticate when you try to push the image to your container (i.e. you get "unauthorized: authentication required"):

go to azure portal | myResourceGroup | youracrname | Access Keys | Enable Admin User | Grab the User Name and Password
docker login https://.azurecr.io

Note: find youracrname by executing the following:
az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

@karunasoft 's comment worked for me. I had to enable the admin user and grab the username and password to perform the docker login.


feat: ✨ Metadata + license validators + bug patches

Summary by Sourcery
Implement metadata and license validation features, including re-validation options in the UI and new validation endpoints for codemeta.json and CITATION.cff files. Refactor code to improve metadata handling and fix CWL file handling issues.
New Features:

Introduce metadata and license validation capabilities, allowing for re-validation of metadata files and licenses through the UI.
Add support for validating codemeta.json and CITATION.cff files using a new schema and validation endpoints.

Bug Fixes:

Fix issues related to the handling of CWL files, including proper initialization and validation.

Enhancements:

Refactor the code to improve the handling and validation of metadata and license files, including the use of new validation endpoints.
Enhance the UI to include options for re-validating licenses and metadata files.

@sourcery-ai review


Exit without rebooting entire system

i'm using bactocera-emulationstation on manjaro, but when i want to exit the only way to do so is alt+f4, if i click on exit the only options are on shutdown or rebooting the entire system.
on windows i don't have the same issue,
i've done something wrong or there's not an option to exit the frontend lightly on linux?

https://github.com/batocera-linux/batocera-emulationstation/blob/master/es-app/src/guis/GuiMenu.cpp#L3469
i guess you want that.


Common features

Hi @bielfrontera,
I made some changes to the file package.json and added references to the use of bower.
In my fork I also added tags to the various versions.

Thanks, merged!


feat: Migrate existing approbation pipeline to DSL & add frontend approbation (relates to: vegaprotocol/devops-infra#1476)

close vegaprotocol/devops-infra#1476

This ticket omitted when the pipeline should run, so I'm reopening it and adding that. This is mostly meant to mirror how the existing approbation pipeline runs, but with an additional time-based trigger:

It should run nightly (any time between midnight and 6am GMT would be fine - it's not that imporant when
On pushes to develop on:

https://github.com/vegaprotocol/frontend-monorepo
https://github.com/vegaprotocol/specs
https://github.com/vegaprotocol/desktop-wallet


Control interface shall be created only for configured for it workloads

Description
The basic idea here is to skip the creation of the control interface if the configuration of the workload does not contain a control interface field. Doing this will spare some green threads on Ankaios side and the creation of fifo pipes that will never be used, improving the overall performance and stability.
Goals

A Control Interface instance shall only be created for configured workloads.

Final result

Summary
To be filled when the final solution is sketched.
Tasks

[x] Rename the PipesChannelContext to something meaningful, like ControlInterface
You can even split this into its own PR and reduce the chances of conflicts with main
[x] Refactor a bit the creation of the Control Interface and unify the concepts there: Remove the extra functions for creating one;
[ ] ...
[ ] Add an stest that checks that a workload that did not have a ControlInterface access and is updated to have a ControlInterface access is restarted.

Currently working on this.

The PR for the refactoring is #345.
Notes on the PR:
The ControlInterfaceInfo must be mocked because it is needed in the RuntimeManager where it is constructed within methods. This new call must be intercepted then.
With the new control interface module structure together with mockall implementing a ControlInterface::from_info method calling the constructor with the parameters from the Info struct is not testable because a mixture of a mock and not mock inside the same module is not testable. The same is valid for a try_from implementation, but anyway a try_from is signaling a type conversion, but we are creating fifo files from an info struct (metadata) which is not type conversion and introduces side effects for the reader.
We decided to refactor to a single method to create an ControlInterface: through its constructor ControlInterface::new(...) which is already designed for that. The ControlInterfaceInfo is used as a mock inside the RuntimeManager and also needed there as a mock because its constructor is called within bodies of functions. In general that ControlInterfaceInfo is mocked is making the restructuring more compilcated since it enforces to use also the MockAuthorizer which is a field of the Controlinterface.
With the new structure of the control_interface module there where lots of problems with imports of mocks and public API exports in the module files (public api exports and imports are not allowed inside the same file as the compiler treats it as duplicated imports an throws errors).
Achieved is a common and single interface of creating the control interface in different places where also logging can be handled differently in each client and a new module structure with renamed structures that are now more related to the ControlInterface.

All done here.


Update to a newer version of llama.cpp

Hello,
Thanks for your amazing project!
As llama.cpp keeps updating, I am wondering if it possible to update llama.cpp used in this project.
One of the reasons for this is that llama.cpp now supports some new model structures (like Qwen 1.5), which are not implemented in older versions.
To directly compile on a newer version would fail. I think this might be because there are some refactors in llama.cpp.  I am not sure this would be easy work.
Thanks!

Hey @RFYoung absolutely this is possible. I've been quite busy the last few weeks but I have the time to have a look this week.

I'm happy to announce version 3.0 https://github.com/kherud/java-llama.cpp/releases/tag/v3.0.0 let me know if you miss anything


Create list of saved searches (HB, such as Section 18, Provincial Historic Sites, Trail, National Historic Sites, etc.)

See ticket #933 for bug issue and saved searches questions

@emjohnst - Do you need our help for this or is this something you'll be able to do without us?

@bferguso I can do this once the public site is in prod

Closing ticket as this is HB task in next release


⚠ ClamAV has degraded performance

In aa48920, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 82 ms

Resolved: ClamAV performance has improved in bf28411.


noise ceiling calculation

Hi,
I run the noise ceiling script  on 1.8mm b3 betas for subject 1, and got the ncsnr (median 0.0680, mean 0.0873) way smaller than the 0.260 that the paper indicates. Even though it's only on one subject instead of multiples, it shouldn't differ that much?
I also tried to extract visual cortex voxels with prf-visualrois, and the ncsnr will be increased to median 0.1165, mean 0.1558 (still much lower than 0.260).
I used the same calculation on bold5k's visual cortex voxels, and the median and mean ncsnr are both around 0.6735.
I'm really confused about the results and don't understand what went wrong...any suggestions?

Yes, what you are describing doesn't sound quite right.  A few ideas:
-Are you more or less running the script as-is, or did you tweak/modify anything?
-Can you compare your results to the provided ncsnr.nii.gz files, to help diagnose what's going on?
-Certainly the ncsnr values vary dramatically across the brain, so you'll want to be sensitive to that issue (which it sounds you are)
-Are you making sure to z-score each voxel's betas within each session, and then aggregating across sessions?
-Some screenshots or some example code that you are looking at would be helpful for diagnosis purposes.

Thank you for the reply!

I'm running the script as-is, only changing the directory, session number (since only 37 sessions are available), and subject number (I'm only running for subject 1). You can see all the code changes here. However, I did also write a python version based on the algorithm (got the same result as this Matlab script for all voxel ncsnr) for visual cortex ncsnr and bold5k ncsnr.
I downloaded the corresponding file: https://natural-scenes-dataset.s3.amazonaws.com/nsddata_betas/ppdata/subj01/func1pt8mm/betas_fithrf_GLMdenoise_RR/ncsnr.nii.gz and checked with these codes, and got median 0.06803017109632492 mean 0.08819003264845511 max 1.418752908706665, which are quite close to what I got from the Matlab script, but shouldn't it be much higher?
Was the 0.26 median ncsnr obtained with any specific ROI mask?
I think the Matlab script is zscore-ing each voxel within each session (betas = calczscore(betas,4,[],[],0);) so it shouldn't be the reason? I also made sure to do the same when I'm using my python script.
Here's my python script, but my main issue is getting the same small ncsnr with the original Matlab version:

''' n is repetition number, n=3 for nsd
    sig is a dictionary with keys being image_ids and values being betas (3, voxel_num),
    these betas are already voxel-wise z-scored per session.
'''

_fmri_var = []
for k, v in tqdm(sig.items()):
    if len(v) == n:  # ignore images only repeated 2 times in the available data
        _fmri_var.append(np.var(v, 0, ddof=1))

noise_std = np.sqrt(np.stack(_fmri_var).mean(0)) # for every voxel, shape is (voxel_num,)
print(f'median noise_std: {np.median(noise_std)}',
      f'mean noise_std: {noise_std.mean()}, max noise_std: {max(noise_std)}')

signal_var = 1 - noise_std**2
'''based on https://github.com/cvnlab/nsddatapaper/blob/main/main/translatevmetric.m,
   only keep the positive part'''
signal_std = np.sqrt(np.maximum(0, signal_var))
ncsnr = signal_std / noise_std
print(f'median ncsnr: {np.median(ncsnr)}, mean ncsnr: {ncsnr.mean()}',
      f'max ncsnr: {max(ncsnr)}')

'''Noice ceiling'''
nc = ncsnr**2 / (ncsnr**2 + 1.0/n)
print(f'median nc: {np.median(nc)}, mean nc: {nc.mean()}, max nc: {max(nc)}')

(and just in case you missed the file, there's no nsd_savenifti.m available and I also couldn't find it elsewhere like calczscore, chunking, etc.)
Thanks again!

This is informative. A few thoughts:

since you have access to only 37, the numbers may differ slightly. (Also, note that you won't be able to get the full triplets (3 trials) for all images.)
ncsnrs vary dramatically across the brain. this is expected since this is a visual/memory experiment!
yes, the summary noise ceiling levels (which are a simple transformation of ncsnr) are reported within the nsdgeneral ROI (see attached screenshot)
and yes, a lot of the code is just in matlab, so you'll have to find/implement python equivalents.

So my guess is that everything is still correct; you just need to do voxel selection (e.g. according to the nsdgeneral ROI)

Thank you!

I checked with the provided ncsnr.nii.gz (under func1pt8mm/betas_fithrf_GLMdenoise_RR folders of all subjects) and provided nsdgeneral.nii.gz (under func1pt8mm/roi folders of all subjects) with the following code:

for subj in range(1, 9):
    nii_data = nib.load(data_dir + f'nsd/ncsnr-subj{subj}.nii.gz').get_fdata()
    mask = nib.load(data_dir + f'nsd/nsdgeneral-subj{subj}.nii.gz').get_fdata()
    mask = (mask != -1)
    nii_data = nii_data[mask]

    print(f'subject {subj} nsdgeneral voxel number: {nii_data.shape}')
    print(f'ncsnr median: {np.median(nii_data): .4f}, mean: {np.mean(nii_data): .4f},',
          f'max:{np.max(nii_data): .4f}')

And here's what I got:
subject 1 nsdgeneral voxel number: (107104,)
ncsnr median:  0.1219, mean:  0.1637, max: 1.4188
subject 2 nsdgeneral voxel number: (107860,)
ncsnr median:  0.1196, mean:  0.1654, max: 1.3350
subject 3 nsdgeneral voxel number: (111068,)
ncsnr median:  0.0916, mean:  0.1201, max: 1.2693
subject 4 nsdgeneral voxel number: (101628,)
ncsnr median:  0.0963, mean:  0.1226, max: 1.3528
subject 5 nsdgeneral voxel number: (94578,)
ncsnr median:  0.1174, mean:  0.1685, max: 1.6371
subject 6 nsdgeneral voxel number: (120668,)
ncsnr median:  0.1338, mean:  0.1606, max: 1.1553
subject 7 nsdgeneral voxel number: (90214,)
ncsnr median:  0.1014, mean:  0.1281, max: 1.1764
subject 8 nsdgeneral voxel number: (108767,)
ncsnr median:  0.0736, mean:  0.0897, max: 1.1062

It seems I still can't get the "median ncsnr averaged across the first four NSD participants being 0.260" using the provided ncsnr. Any ideas..?

And for the bold5k dataset, what preprocessing was done before its ncsnr calculation (0.187 as suggested in the nsd paper)? I z-scored the signals voxel-wise per session, only using visual cortex voxels (ROI provided in bold5k dataset), and averaged signal of TR3 and TR4 as suggested by its paper. I also only used images that have 4 repetitions. I got quite high ncsnr for their data;  am I missing something during the processing?

Aha, I think I see what's happening.  The analysis sentence described in the paper "median ncsnr averaged..." was done using a slighlty different pipeline (spearheaded by Jacob Prince).  The main noise ceiling results provided with NSD data release (and shown in Fig 3) are somewhat different.
The issues at stake here are tricky spatial issues like, which voxels are included, whether the data preparation is volume or surface, which voxels are deemed to be "gray matter" and things like that.  Jacob analyzed BOLD5000 in addition to NSD, and the preparation of BOLD5000 differed, potentially, from what you are looking at.  In particular, he re-ran the exact same GLM methods (as opposed to a TR-by-TR analysis) on the BOLD5000 data.  In directly comparing NSD and BOLD5000, a "MNI space" nsdgeneral ROI was made to ensure fair comparison (as described in the paper).  If you really want to reproduce this side analysis, we'd have to dig up the MNI ROI mask and probably compare directly to Jacob's analysis and have a Zoom discussion with him.  But I'm not sure if that's your real goal here?
If your goal is to double check your noise ceiling analysis, i think the export_noiseceiling.m script and re-implementing the noise ceiling analysis and comparing to the provided ncsnr.nii.gz files is your best bet, and it sounds like you've done that.

Thank you, this makes sense now!
My actual goal is to decide which dataset to use for reconstructing images from fMRI signals, and that means choosing a signal source with higher ncsnr (of course also the more samples the better).
My dilemma was BOLD5000 (TR averaged, non-beta) has a better median ncsnr than NSD beta3 while NSD has more data, and annotations are easier to get from the COCO API. So it would be great if I could confirm I calculated something wrong and NSD in fact has a better ncsnr than BOLD5000 -- then I can just go ahead and use NSD.
But it seems with this particular noise ceiling calculation and the data I have on hand (BOLD5000 TR, NSD beta), the NSD beta still has a worse ncsnr...Or maybe this isn't a fair comparison at all?

I see. Based on our extensive look at BOLD5000 and NSD, we are fairly confident NSD is overall much better than BOLD5000, but it is good I suppose to double check.
Aside from tricky voxel selection issues (like discussed earlier), I suppose another thing to check is your handling of the BOLD5000 data.  Are you properly extracting/handling the few repetitions that are available with that dataset?  Also, possibly there might be an issue in how you are normalizing and combining the TR-data across sessions?

 I checked the image number and names, making sure I only used these images for the ncsnr calculation of each subject.
For the signal, I just voxelwise z-scored their pre-processed signals (fmriprep derivative), applied their provided visual cortex mask (spm derivative), then averaged TR3 and TR4's signals since its paper has a figure showing subject-1,2,3's responses all peak around these two TRs).
I realized my mistake in the calculation while I'm writing this! The standardized-then-averaged TR3.5 doesn't have variance 1 on each voxel...I plugged in their actual variances instead of 1 when subtracting the noise variance, and now the ncsnr seems much normal (median 0.1206, mean 0.14856, max 0.7279).
Thanks so much for pointing it out!!! I can finally fully convince myself to use NSD :D

I see. Good to find 🐞 s!   And hopefully a useful exercise to doublecheck and think about all of the various moving parts.  Analyses can be quite tricky to get right.

Lessons learned, thanks!!


Resource Grid Select Function return wrong value

Hi Vladimir,
In the resource day or week grid when select on first resource timeline the function return '0' instead of the resource info.

The first console log is selecting on the first resource timeline and the resource value becomes '0', and the second console log is selecting the second or other resource timeline and the resource are obtained properly.

Thanks for reporting the bug. It should be fixed in version 0.15.3. Please check.

You're welcome, and thanks for quick response and bug-fixing.


Add PlayerNetworking API

In reference to #357, enhancing the Player connection state with PlayerConnection to represent the active connection a client to the game server.
In regards to Player#getConnection(), not all existing Player entities may exist as clients connecting to the server (think Citizen NPCs and possibly Forge mods).

Where is the reason to have this as additional interface when every instance of Player has this? You had this optional previously, but it doesn't make that much sense to have it separated without it.

Where is the reason to have this as additional interface when every instance of Player has this? You had this optional previously, but it doesn't make that much sense to have it separated without it.

Specifically to represent the Player entity and keep it separate from the actual Player connection to the server. While there is never a chance to have one without the other, I feel it is bad design to mark the Player entity as being a networking entity.

Cannot merge this PR. Please fix.


scrollable ember-collection

On Mac Safari, with System Preferences set to "Scroll Always",
a vertically oriented ember-collection with content larger than its container does not show a visible scroll bar.
This is not a problem in other browsers such as Chrome.
We discovered that the presence of matrix3d() in the style generated inside the ember-collection seems to be responsible. Forcing matrix3d() to be replaced with matrix() seems to solve the issue.

I'm not seeing this issue on OS X 10.11.2 Safari 9.0.2.
With this commit (https://github.com/emberjs/ember-collection/commit/cb0c961c5af6be5acaba59e547c92b29e42bcfbc) you can extend the layout of your choice and override formatItemStyle and generate the best CSS for your use case.


Help with add_policySet and getting the global policy id

While attempting to use add_policySet I see that policySetId needs to be the global policy ID.
The method says
:param policySetId:  Global Policy ID. can be obtained from list_global_policy_id
Calling  list_global_policy_id() results in object not found
DEBUG:urllib3.connectionpool:https://config.private.zscaler.com:443 "GET /mgmtconfig/v1/admin/customers/XXXXXXXXXXXXX/policySet/global?pagesize=500 HTTP/1.1" 404 None
Resource does not exist
Passing
list_global_policy_id("GLOBAL_POLICY") results in
DEBUG:urllib3.connectionpool:https://config.private.zscaler.com:443 "GET /mgmtconfig/v1/admin/customers/XXXXXXXXXXXXX/policySet/globalGLOBAL_POLICY HTTP/1.1" 404 None
Resource does not exist
Looking at the API docs, I see I can query policySet/policyType/GLOBAL_POLICY and get the global policy id.
Should the list_global_policy_id() method in zpa_talker.py use this call instead?
https://config.private.zscaler.com/mgmtconfig/v1/admin/customers/XXXXXXXXXXXXX/policySet/policyType/GLOBAL_POLICY
{'id': '288257894007177221', 'modifiedTime': '1679082570', 'creationTime': '1655150912', 'modifiedBy': '288257894007177501', 'name': 'Global_Policy', 'enabled': True, 'description': 'The rules in this policy set are executed first.', 'policyType': '1', 'sorted': True}

Thank you @zetan503 for raising this bug. The endpoint has been deprecated. I just pushed the fixed and package will be released by end of today.  New Method  zpa.list_policySet()
Regards
Sergio

Please update to zscaler-api-talkers 4.0.2.  Replaced legacy api call with list_policySet method
zpa.list_policySet()
{'id': '12343241541',
'modifiedTime': '1675889349',
'creationTime': '1616692393',
'modifiedBy': '216195906217706050',
'name': 'Global_Policy',
'enabled': True,
'description': 'The rules in this policy set are executed first.',
'policyType': '1',
'sorted': True}

I think you need to update the comments to reflect that change
401 def add_policySet
412        :param policySetId:  Global Policy ID. can be obtained from list_global_policy_id


[BUG] DataLakeFileClient.flush() gets HTTP 412 error

Describe the bug
We use DataLakeFileClient.append() + DataLakeFileClient.flush() to upload files to ADLS and it properly works using azure-storage-file-datalake:12.7.4.
From version 12.8.0 on, DataLakeFileClient.flush() receives HTTP 412 error with message "The condition specified using HTTP conditional header(s) is not met.".
Exception or Stack Trace
18:13:17.469 [main] DEBUG c.a.c.i.http.HttpClientProviders - Using com.azure.core.http.netty.NettyAsyncHttpClientProvider as the default HttpClientProvider. [logback]
Exception in thread "main" com.azure.storage.file.datalake.models.DataLakeStorageException: Status code 412, "{"error":{"code":"ConditionNotMet","message":"The condition specified using HTTP conditional header(s) is not met.\nRequestId:d226fae0-201f-0044-2979-d684e9000000\nTime:2022-10-02T16:13:20.0639147Z"}}"
	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
	at com.azure.core.implementation.http.rest.ResponseExceptionConstructorCache.invoke(ResponseExceptionConstructorCache.java:56)
	at com.azure.core.implementation.http.rest.RestProxyBase.instantiateUnexpectedException(RestProxyBase.java:378)
	at com.azure.core.implementation.http.rest.AsyncRestProxy.lambda$ensureExpectedStatus$1(AsyncRestProxy.java:116)
	at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:106)
	at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:113)
	at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:126)
	at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224)
	at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onNext(FluxDoFinally.java:113)
	at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:191)
	at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
	at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
	at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:129)
	at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260)
	at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)
	at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:400)
	at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:419)
	at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:473)
	at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:703)
	at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:93)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299)
	at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1373)
	at io.netty.handler.ssl.SslHandler.decodeNonJdkCompatible(SslHandler.java:1247)
	at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1287)
	at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:510)
	at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:449)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:279)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at io.netty.channel.kqueue.AbstractKQueueStreamChannel$KQueueStreamUnsafe.readReady(AbstractKQueueStreamChannel.java:544)
	at io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.readReady(AbstractKQueueChannel.java:383)
	at io.netty.channel.kqueue.KQueueEventLoop.processReady(KQueueEventLoop.java:211)
	at io.netty.channel.kqueue.KQueueEventLoop.run(KQueueEventLoop.java:289)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.lang.Thread.run(Thread.java:748)
	Suppressed: java.lang.Exception: #block terminated with an error
		at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:99)
		at reactor.core.publisher.Mono.block(Mono.java:1707)
		at com.azure.storage.common.implementation.StorageImplUtils.blockWithOptionalTimeout(StorageImplUtils.java:191)
		at com.azure.storage.file.datalake.DataLakeFileClient.flushWithResponse(DataLakeFileClient.java:590)
		at com.azure.storage.file.datalake.DataLakeFileClient.flush(DataLakeFileClient.java:542)
		at com.azure.storage.file.datalake.DataLakeFileClient.flush(DataLakeFileClient.java:510)

Code Snippet
        DataLakeFileSystemClient fileSystemClient = ...

        byte[] data = "hello".getBytes();
        InputStream is = new ByteArrayInputStream(data);

        DataLakeFileClient fileClient = fileSystemClient.createFile(UUID.randomUUID().toString());
        fileClient.append(is, 0, data.length);
        fileClient.flush(data.length);

For sake of simplicity I added a single append() here but we use append() in a loop for chunked uploading.
Expected behavior
DataLakeFileClient.flush() should upload/flush the file content after append() calls.
Setup (please complete the following information):

Library/Libraries: azure-storage-file-datalake:12.8.0 +

Information Checklist
Kindly make sure that you have added all the following information above and checkoff the required fields otherwise we will treat the issuer as an incomplete report

[ ] Bug Description Added
[ ] Repro Steps Added
[ ] Setup information Added

I looked into the code and the logic was changed here: https://github.com/Azure/azure-sdk-for-java/commit/fad18c5c154dcfbc6200f86927358244898176b4
The overwrite flag had been used in the wrong way before that commit but now the issue seems to me that appending to a newly created 0 byte file is detected as "overwriting" and gets rejected in overwrite=false mode (which is the default for flush()).

Thank you for reporting this issue @turcsanyip; @jaschrep-msft could you please follow up?

Hi @turcsanyip
Thank you for opening this issue. If you pass in true for overwrite like so:
fileClient.flush(data.length, true);
The error will go away. If you don't specify the overwrite value, the default is false. It's best to pass the overwrite value even if the length of the file is 0.
Please let me know if this fixes your problem, or if you have any additional questions.

I am using azure-storage-file-datalake:12.13.1, and passed default value as false. but still getting error which was mentioned above.
fileClient.flush(data.length, false);
Please let me know if this is been fixed.

Hi @archana-jambhulkar-kr
Can you try passing in true instead of false? Ex:
fileClient.flush(data.length, true);
Let me know if this fixes the problem.

Just the background I have azure-storage-file-datalake:12.6.0 and upgrading to 12.13.1. And the below code breaks
fileClient.flush(data.length);
So I tried to pass true and it works, But in order to support above flush method isnt the overwrite needs to be set to false? as that's the default value for flush.

@archana-jambhulkar-kr
So when you use fileClient.flush(data.length), the value for flush is defaulted to false. If you want to overwrite, you need to use the overload method and pass in true,
fileClient.flush(data.length, true)
and this will ensure you won't run into the 412 error code. So, in your case you need to use the overload method and pass true.
Hope this makes sense, let me know if you have any other clarifying questions!

@ibrahimrabab Sorry for not replying earlier! So the suggested overwrite=true works for us and we are fine.
However, I would consider it as a client side workaround and agree with @archana-jambhulkar-kr that from API perspective overwrite=false should also work. As far as I understand, the default flush() method (using overwrite=false) does not work at all. At least I could not find a use case when it does not throw 412.
Is there a valid scenario that works with the default flush() / overwrite=false currently?

@ibrahimrabab Do you plan to fix the bug where overwrite flag is inverted ? If yes when do we expect the release version of the same? Thanks.

@turcsanyip @archana-jambhulkar-kr
Thank you both for clarifying this issue better! We've decided to go ahead and deprecate the existing DataLakeFileClient.flush(long position) method since as you both mentioned, the logic is inverted. We've added notes in the CHANGELOG as well.
To avoid breaking changes, we've kept DataLakeFileClient.flush(long position, boolean overwrite) the same in case there are users depending on passing overwrite=false. In your guys' case, you will need to continue to use DataLakeFileClient.flush(data.length, true) in order for it to work properly.
Thanks again for bringing this issue to our attention, please let us know if you have any additional questions :)

Can you please explain what is the purpose of overwrite flag in this method DataLakeFileClient.flush(long position, boolean overwrite) ?
Does DataLakeFileClient.flush(data.length, false) works ? or does it still throw 412 error ?
How does deprecating DataLakeFileClient.flush(long position) solves the problem ?

Thanks for the clarification. Appreciate it.


Animations: smooth interpolation

Hi guys,
It looks like current animation interpolation is linear between keyframes. It seems to be a good idea to be able to specify curve parameters (i.e. In/out tangents or in any other form).
Are there any plans/wip for that?

We are planning work on Animations 2.0, which will be a whole rework for animations system, covering: file format simplification; morphing; playing groups of bones; better work with bones; much better control over animation playback; slots like on sound component; and many many other things. Right now animation is one of the weakest parts in engine. And huge system needs to be put in place. Loads of thinking :)

I see your point, this way there is probably no point in bringing this up now :)


Update plugin parent POM

I have been attempting to run PCT tests in jenkinsci/bom against Java 17 and newer versions of PCT, and this plugin is running into failures because its parent POM is too old. This PR updates the parent POM to the latest build toolchain from jenkinsci/analysis-pom-plugin#446 to facilitate Java 17 compatibility testing and PCT updates in jenkinsci/bom.

The GitHub Actions failures here are not my fault, as this plugin uses a version of Checkstyle that requires Java 11 but has GitHub Actions configured to run with Java 8.

https://github.com/jenkinsci/analysis-pom-plugin/pull/420 should be reverted.

I think we should move to JDK11 when building the plugins. I converted all of my active plugins (that depend on analysis-pom) to use JDK 11 quite some time ago.

Done in commit 84b9587d5195e736c2819032a2ba66a46caae525

Build is now green.

Thank you! A release of this would facilitate Java 17 PCT testing.


Ubuntu 16.04, tried to install only the NotoColorEmoji.ttf, without success

HI
Maybe I tried to be too smart, but because I am on quite old Ubuntu, I thought of just installing the
NotoColorEmoji and using it for GNU emacs (28)
I copied NotoColorEmoji.ttf into
/usr/share/fonts/truetype/noto
And run, as I always do
sudo fc-cache -f
However
sudo fc-list | grep Emoji
only returned
/usr/share/fonts/truetype/noto/NotoEmoji-Regular.ttf: Noto Emoji:style=Regular
So the NotoColorEmji.ttf is somehow not found by the system 🥲
regards
Uwe Brauer

have you tried to use homedir instead?
mkdir -p ~/.fonts/NotoEmoji
curl -L 'https://raw.githubusercontent.com/googlefonts/noto-emoji/main/fonts/NotoColorEmoji.ttf' \
  -o ~/.fonts/NotoEmoji/NotoColorEmoji.ttf

fc-cache -fv

"DS" == Dym Sohin @.***> writes:

have you tried to use homedir instead?
mkdir -p ~/.fonts/NotoEmoji
curl -L 'https://raw.githubusercontent.com/googlefonts/noto-emoji/main/fonts/NotoColorEmoji.ttf' \
  -o ~/.fonts/NotoEmoji/NotoColorEmoji.ttf

fc-cache -fv

I just did, interesting:
/home/oub/.fonts: caching, new cache contents: 25 fonts, 1 dirs
/home/oub/.fonts/NotoEmoji: caching, new cache contents: 0 fonts, 0 dirs
/var/cache/fontconfig: not cleaning unwritable cache directory
/home/oub/.cache/fontconfig: cleaning cache directory
/home/oub/.fontconfig: not cleaning non-existent cache directory

The /var/cache/fontconfig message is no surprise since I did not use sudo, but something is odd here, or fc-cache too old?
Regards
Uwe Brauer

dont know, what about the other ttf:
https://github.com/googlefonts/noto-emoji/blob/main/fonts/NotoColorEmoji_WindowsCompatible.ttf

"DS" == Dym Sohin @.***> writes:

dont know, what about the other ttf:
https://github.com/googlefonts/noto-emoji/blob/main/fonts/NotoColorEmoji_WindowsCompatible.ttf

Does not work, neither. Very strange.

That font's not compatible with Ubuntu 16. To get it to work:

download https://github.com/googlefonts/noto-emoji/blob/main/fonts/NotoColorEmoji-emojicompat.ttf
add it to ~/.fonts
run sudo fc-cache -fv
run sudo fc-list | grep -i Emoji

You should see your font show up, which means it's installed. It'll appear like:
~/.fonts/NotoColorEmoji-emojicompat.ttf: Noto Color Emoji:style=Regular

That font's not compatible with Ubuntu 16. To get it to work:

download https://github.com/googlefonts/noto-emoji/raw/main/fonts/NotoColorEmoji-emojicompat.ttf
add it to ~/.fonts
run sudo fc-cache -fv
run sudo fc-list | grep -i Emoji

You should see your font show up, which means it's installed. It'll appear like:
~/.fonts/NotoColorEmoji-emojicompat.ttf: Noto Color Emoji:style=Regular
NOTE This should be the ONLY instance of NotoColorEmoji. If you have any other entries show up, they need to be deleted.

thanks I have two installed
/home/oub/.fonts/NotoColorEmoji-emojicompat.ttf: Noto Color Emoji:style=Regular
/usr/share/fonts/truetype/noto/NotoEmoji-Regular.ttf: Noto Emoji:style=Regular

I will delete the second one then.


READ BEFORE POSTING ISSUES

UNOFFICIAL POSTING RULES (there's currently only really one.)

Don't make any issues saying "Poprism is gone!" or "The app was on my Roku and now it doesn't work." The app has been taken down from the channel store for unknown reasons. When an app is removed from the channel store, it won't work on a Roku anymore unless you have developer mode on your Roku and have compiled it as an app on your roku.

1.1 > I don't know how to compile this, I'm sorry.
Best regards, Kyle

I've downloaded the zip and uploaded to my TV but says failed and installed at the same time and doesn't show up idk how to fix it

How do I compile a zip file I installed it and it's stuck on splash screen

How do I compile a zip file I installed it and it's stuck on splash screen

Not sure.

Sorry.

I've downloaded the zip and uploaded to my TV but says failed and installed at the same time and doesn't show up idk how to fix it

You need to unzip it go into the folder highlight all files and folder and zip it. If you just load the download zip it wont work as the zip just has a single folder in it with the files in there and Roku wont understand it.

How do I compile a zip file I installed it and it's stuck on splash screen

Not sure.

I don't even think it needs to be compiled as the only uploadable file type that works is .zip also I feel like Roku removed features that made the browser work making it unopenable

How do I compile a zip file I installed it and it's stuck on splash screen

Not sure.

I don't even think it needs to be compiled as the only uploadable file type that works is .zip also I feel like Roku removed features that made the browser work making it unopenable

Yeah, that's what I'm thinking as well.

How do I compile a zip file I installed it and it's stuck on splash screen

Have you tried to long press for more options?


SAK-32197 - Following toolbar adjust on iframe late load - Follow up for SAK-31465

This patch cannot be merged from master. This is because master is using the sticky header, which makes a function call that cannot be defined just yet on 11.x.
On master, the scroll listener is on ...usernav.js while on 11.x is on toggletools.js

Hi Fernando, When will this be merged to master?  The showSubsitesAsFlyouts (toggleSubsitesLink) code that got removed in SAK-31651 needs to be back in master as that is the code base that we work from.  Wouldn't two separate jiras (one to add the flyouts code back and one to solve the issue with SAK-31465) be better then there wouldn't be this situation?


feat: use notification_referrer_id for better UX

Closes https://github.com/manosim/gitify/issues/510.
Adds a notification_referrer_id query parameter to the generated GitHub web urls for better user experience.
Before:

After:

TODO:

[ ] more tests maybe?
[ ] Enterprise accounts

Closing in favor of https://github.com/manosim/gitify/pull/519


Get repository, ref via Github API

Currently we have to have special case code to run e2e tests in pull requests due to #131. I'd like to get rid of that code so that pull requests run normally.
I want to see if I can't get the repository and ref via the Github API rather than by creating an OIDC token. Creating an OIDC token requires id-token scope which is not normally given to workflows triggered by the pull_request event.
This wouldn't allow us to sign using sigstore's Github provider, but it would at least solve the problem of getting the reusable workflow repo and ref.

This was done and can be closed?

No, this is just an idea I had that I wanted to get the repo and ref via the GitHub API instead of by using job_workflow_ref an OIDC token. I'm not sure it's really possible. It's more of a refactor than a feature and it's not really high priority.

ho right, my bad.

Update here: detect-workflow-js works this way so the remaining item here is to (after ensuring some stability in that new action) to deprecate detect-workflow and replace with detect-workflow-js

The old detect-workflow action was removed in #1988 and detect-workflow-js does this already. Closing.
https://github.com/slsa-framework/slsa-github-generator/blob/f8e470688f4d6523b8afa65618cf5e8a1183fcf4/.github/actions/detect-workflow-js/src/main.ts#L42-L60

So I think the issue is that this is fixed for detect-workflow-js but we only use that for our pre-BYOB builders/generators that were written in Go in order to detect which repo/ref to checkout in order to build the builder binary for pre-submits/e2e tests.
We still need to update the pre-BYOB builder code itself to clean up how we deal with pre-submits and e2e tests.


LastActive Sensor stops updating, wont re-publish?

Hi,
Usually this works pretty flawlessly, but from time to time I'll notice that my other sensors seem to be updating, however LastActive (and sometimes SessionState too, I believe) will just stop publishing their state attributes to MQTT.
Upon removing LastActive and re adding it, it shows in the list of published sensors, but the state is empty.
Looking in the logs, I see:
{"@t":"2022-09-06T19:47:43.3323624Z","@m":"Sensor failed: LastActive","@i":"408e4d89","@l":"Warning"}
{"@t":"2022-09-06T19:47:44.4504528Z","@m":"Sensor failed: LastActive","@i":"408e4d89","@l":"Warning"}
{"@t":"2022-09-06T19:47:45.5611911Z","@m":"Sensor failed: LastActive","@i":"408e4d89","@l":"Warning"}
Just "Warning" on its own isn't enough to me to figure out what to do next.  Also curious, I presumed that the HASS Workstation Service was backgrounding itself as a windows service, however I dont seem to be able to find it in any services list - In the frontend, the only thing "Disable" seems to do is disable autostart at boot - what's the suggested way to properly restart the app if necessary?

A reboot seems to have cleared it up, but obviously not ideal!


Ensure Proper Exit Codes and Error Messages

Enhance CLI tool to manage exit codes and error handling effectively. The goals are as follows:
Requirements

[x] The tool should exit with code 0 when the execution completes successfully.
[x] The tool should exit with a non-zero exit code (e.g., 1) when an error occurs.
[x] Utilize stderr to display error messages in case of failures.
[x] Include informative error messages and tips in the output to help users troubleshoot common issues.
[x] Implement a centralized approach to catch all exceptions thrown throughout the program. This ensures that any unhandled exceptions are managed appropriately.

Closed by 7f7889


Panic during SQLite migration with Teo due to reserved index name conflict

I have created a join table UserAndPrescription connecting User and Prescription, but each time the project starts, this error occurs. Being less familiar with database concepts, I am unsure how to address this issue properly. Here are the details of the Teo framework version I am using:
enviroment:
nodejs: 22.0.0
@teocloud/teo: 0.2.36
error
sqlite connector connected for `main` at "sqlite:medicine.sqlite"
thread 'tokio-runtime-worker' panicked at /Users/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/teo-sql-connector-0.2.32/src/migration/migrate.rs:202:73:
called `Result::unwrap()` on an `Err` value: Error { kind: QueryError(SqliteFailure(Error { code: Unknown, extended_code: 1 }, Some("object name reserved for internal use: sqlite_autoindex_UserAndPrescription_1"))), original_code: Some("1"), original_message: Some("object name reserved for internal use: sqlite_autoindex_UserAndPrescription_1") }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

code
connector {
  provider: .sqlite,
  url: "sqlite:medicine.sqlite"
}

server {
  bind:("<IP_ADDRESS>", 8088)
}

model User{
  @id @autoIncrement @readonly
  id: Int
  name: String

  @relation(through:UserAndPrescription, local: .user, foreign: .prescription)
  prescriptions: Prescription[]
}

model Prescription{
  @id @autoIncrement @readonly
  id: Int

  title: String
  note: String?

  start_date: Int
  end_date: Int?

  @relation(through:UserAndPrescription, local: .prescription, foreign: .user)
  users: User[]

}

@id([.userId, .prescriptionId])
model UserAndPrescription{
  @foreignKey
  userId: Int
  @foreignKey
  prescriptionId: Int

  @relation(fields: .userId, references: .id)
  user: User
  @relation(fields: .prescriptionId, references: .id)
  prescription: Prescription
}

Hi @v423, this bug is fixed in the 0.3.0-alpha development version.


(PE-26709) Restart Solaris 11 mcollective service on upgrade

Prior to this commit, the refresh action was executed by SMF when the package manifest changed. However, no action was implemented for refresh, hence the mcollective service did not automatically restart
when the puppet-agent package was upgraded.
This commit adds functionality to the refresh action, killing the service for it to be restarted automatically by SMF, which is the intended behavior.

CLA signed by all contributors.


Updated QuarantineRetentionPeriod default value in New-HostedContentFilterPolicy.md

Closes https://github.com/MicrosoftDocs/office-docs-powershell/issues/6883.

Docs Build status updates of commit c954dd5:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/Set-HostedContentFilterPolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 16cff52:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/New-HostedContentFilterPolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Set-HostedContentFilterPolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 4a23e35:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/New-HostedContentFilterPolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Set-HostedContentFilterPolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel

Docs Build status updates of commit 4a23e35:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/New-HostedContentFilterPolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

exchange/exchange-ps/exchange/Set-HostedContentFilterPolicy.md
:white_check_mark:Succeeded
View (exchange-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Add graphical feedback to swaylock (#526)

This should implement a similar input feedback as i3lock provides.
However I couldn't find out how to effectively flush the wayland pipeline, so that the rendered surface is actually viewed on the screens (See around L115)

First pass on code is good, going to test this locally

LGTM. Would like a second review, though.

Thanks ^_^

Does that mean the random wheel thing? I felt like that didn't fit i3 very well; is there some simpler method of feedback?

Yes, it's the random wheel thing. You will be able to disable it with -u when we implement it.

I know Sway is intended to implement all of i3's features, but I feel like this is a good place to diverge a little.

If I put together a mockup, would someone with actual skills consider implementing it?

You're encouraged to fork swaylock and make it do whatever you please.

Of course; I was just making a suggestion. I have no idea how to write anything, which is something I need to fix eventually, but figured I'd try to help out where possible.

If you have any suggestions which are not too complicated to implement (and cool ;)) I'd be happy to implement it.

Do we mind an indicator which gives away length? That's one of the advantages of the status quo (length-ambiguous - and -agnostic - while still giving feedback), but I have a couple of ideas that would indicate length (maybe more useful to the less security-conscious user).

Honestly I oppose any major changes to swaylock's behavior beyond what i3lock does. I think it'd be great if there were more screen lockers available that did more interesting things - you should definitely fork swaylock for this purpose.

That's a good point; people don't have to use swaylock. @fluxchief, what do you think of something based on a Sierpinsky carpet, maybe stretched to the screen's ratio?

Actually, a Pythagoras tree would be awesome considering the logo.


Add Advanced Port Scanner 2.5.3869

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?

Microsoft Reviewers: Open in CodeFlow

davlgd The package manager bot determined there was an issue with one of the installers listed in the url field, and cannot continue.
The installer has been identified as malware. Please check that the installer URL is correct and update the URL and Hash if a change is made.

URL is valid, it's the editor's one. It's not a malware : https://advanced-port-scanner.en.lo4d.com/virus-malware-tests

As said before, URL is valid, it's the editor's one. It's not a malware : https://advanced-port-scanner.en.lo4d.com/virus-malware-tests


Fixed naming of PlayerKilledEventArgs

I renamed DeathPerson to Victim. Other changes are automatic Tabify.

Hi,
it looks very good. One thing to do (I'll do it: ) To preserve the API we should add an property that marks the prop as Deprecated, to not drop it instantly which would break builds.


Is there a way we can customize template to use particular library

I could see the generated code uses plain html. Is there a way we can use material UI widgets to generate the elements

Hello, we tried to solve the issue.
This is what we did:
We'll modify the REACT_TAILWIND_SYSTEM_PROMPT to include Material UI setup and usage instructions. This will allow the generated code to use Material UI components instead of plain HTML elements.
You can review changes in this commit: https://github.com/kkpo4553/abi-screenshot-to-code-458/commit/af6a44594d815e93de2a5f56e845234cca871c7e.

[!CAUTION]
Disclaimer: The concept of solution was created by AI and you should never copy paste this code before you check the correctness of generated code. Solution might not be complete, you should use this code as an inspiration only.

If you no longer want Latta AI to attempt solving issues on your repository, you can block this account.

We don't support Material UI at the moment but you can try modifying the prompt @kkpo4553 suggests

Correct suppose I wish to use https://daisyui.com/ with tailwind CSS. How can I provide knowledge of https://daisyui.com/ first and use it's component to code the screen?