Yazi no longer recognizes LibreOffice and Word files

UPDATE -- I tried an earlier version of yazi 0.2.5 (c65a14c 2024-04-23) and the problem is not there. So it's something that happened since.
#######################
What system are you running Yazi on?
Linux Wayland
What terminal are you running Yazi in?
Kitty 0.35
Did you try the latest code to see if this problem got fixed?
Tried, but the problem still
yazi --debug output

Yazi
    Version: 0.2.5 (53d658d 2024-05-26)
    OS: linux-x86_64 (unix)
    Debug: false

Ya
    Version: Ok(Output { status: ExitStatus(unix_wait_status(0)), stdout: "Ya 0.2.5 (bf1c325 2024-05-20)\n", stderr: "" })

Emulator
    Emulator.via_env: ("xterm-kitty", "")
    Emulator.via_csi: Ok(Kitty)
    Emulator.detect: Kitty

Adaptor
    Adaptor.matches: Kitty

Desktop
    XDG_SESSION_TYPE: None
    WAYLAND_DISPLAY: Some("wayland-0")
    DISPLAY: Some(":0")

SSH
    shared.in_ssh_connection: false

WSL
    /proc/sys/fs/binfmt_misc/WSLInterop: false

Variables
    SHELL: Some("/bin/bash")
    EDITOR: None
    ZELLIJ_SESSION_NAME: None
    YAZI_FILE_ONE: None
    YAZI_CONFIG_HOME: None

file(1)
    Version: Ok(Output { status: ExitStatus(unix_wait_status(0)), stdout: "file-5.44\nmagic file from /etc/magic:/usr/share/misc/magic\n", stderr: "" })

Text Opener
    default: Some(Opener { run: "nvim \"$@\"", block: true, orphan: false, desc: "nvim", for_: None, spread: true })
    block: Some(Opener { run: "nvim \"$@\"", block: true, orphan: false, desc: "nvim", for_: None, spread: true })

tmux
    TMUX: false

Ueberzug++
    Version: Err(Os { code: 2, kind: NotFound, message: "No such file or directory" })

--------------------------------------------------
When reporting a bug, please also upload the `yazi.log` log file - only upload the most recent content by time.
You can find it in the "/home/bert/.local/state/yazi" directory.

Describe the bug
For some reason, yazi stopped recognizing LibreOffice and Word files. This behavior started after I updated to latest. Also I am running in a Debian 12 VM under Crostini and recently my Chromebook crashed. I restored everything, but not sure things are working properly. In nemo if I hit enter on an office or Word file it opens properly in LibreOffice. Same thing in Doublecmd. So Linux recognizes the files and what should open them. But not in yazi. Is this a yazi issue? Or a Linux issue?
Expected Behavior
LibreOffice and Word files should open when I hit . Also I have set up previewers in plugins. They also don't work anymore.
To Reproduce
Run yazi with my yazi.toml
Configuration
Using build 53d658d.
Here is my yazi.toml...
A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config.
If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas.
"$schema" = "https://yazi-rs.github.io/schemas/yazi.json"
[manager]
ratio          = [ 2, 3, 6 ]
sort_by        = "alphabetical"
sort_sensitive = false
sort_reverse   = false
sort_dir_first = true
linemode       = "none"
show_hidden    = false
show_symlink   = false
scrolloff      = 5
[preview]
tab_size        = 2
max_width       = 600
max_height      = 900
cache_dir       = ""
image_filter    = "triangle"
image_quality   = 75
sixel_fraction  = 15
ueberzug_scale  = 1
ueberzug_offset = [ 0, 0, 0, 0 ]
[opener] # sets of definitions of openers referenced in rules below
edit = [
{ run = 'nvim "$@"',  desc = "nvim",  block = true },
{ run = 'vim "$@"',   desc = "vim",   block = true },
{ run = 'gvim "$@"',  desc = "Gvim",  block = true },
{ run = 'geany "$@"', desc = "Geany", block = true },
{ run = 'meld "$@"',  desc = "meld",  block = true },
]
open = [
{ run = 'xdg-open "$@"',  desc = "Open" },
]
reveal = [
{ run = 'xdg-open "$(dirname "$0")"', desc = "Open dir in nemo" },
{ run = '''exiftool "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show EXIF" },
]
extract = [
{ run = 'file-roller "$1"', desc = "Archive Manager" },
{ run = 'unar "$1"',        desc = "Extract to new folder" },
{ run = 'peazip "$1"',      desc = "Peazip" },
]
play = [
{ run = 'celluloid "$@"', desc = "Celluloid", orphan = false },
{ run = 'audacity "$@"',  desc = "Audacity",  orphan = false },
{ run = '''mediainfo "$1"; echo "Press enter to exit"; read _''', block = true, desc = "Show media info" },
]
mp4edit = [
{ run = 'audacity "$@"',  desc = 'Audacity',  orphan = false },
{ run = 'celluloid "$@"', desc = 'Celluloid', orphan = false },
]
aup3edit = [
{ run = 'audacity "$@"',  desc = "Audacity", orphan = false },
]
pdfedit = [
{ run = 'okular "$@"',      desc = "Okular",       orphan = false },
{ run = 'evince "$@"',      desc = "Evince",       orphan = false },
{ run = 'pdfarranger "$@"', desc = "PDF Arranger", orphan = false },
]
mdedit = [
{ run = 'nvim "$@"',   desc  = "nvim",   block = true },
{ run = 'typora "$@"', desc  = "typora", block = true },
{ run = 'geany "$@"',  desc  = "geany",  block = true },
{ run = 'gvim "$@"',   desc  = "gvim",   block = true },
{ run = 'vim "$@"',    desc  = "vim",    block  = true },
{ run = 'meld "$@"',   desc  = "meld",   block = true },
]
[open] #rules for which opener(s) for which filetypes
rules = [
{ name = "*/",       use =         [ "edit", "open", "reveal" ] },

{ name = ".mp4",    use =         [ "mp4edit", "reveal" ] },
{ name = ".m4a",    use =         [ "mp4edit", "reveal" ] },
{ name = ".conf",  use =         [ "edit", "reveal" ] },
{ name = ".pdf",    use =         [ "pdfedit", "reveal" ] },
{ name = ".md",     use =         [ "mdedit", "reveal" ] },
{ name = "*.aup3",   use =         [ "aup3edit", "reveal" ] },
{ mime = "text/*",  use =          [ "edit", "reveal" ] },
{ mime = "image/*", use =          [ "open", "reveal" ] },
{ mime = "audio/*", use =          [ "play", "reveal" ] },

{ mime = "video/*", use =          [ "play", "reveal" ] },
{ mime = "inode/x-empty", use =    [ "edit", "reveal" ] },
{ mime = "*/javascript",     use = [ "edit", "reveal" ] },
{ mime = "application/json", use = [ "edit", "reveal" ] },

{ mime = "application/zip",             use = [ "extract" ] },
{ mime = "application/gzip",            use = [ "extract" ] },
{ mime = "application/x-tar",           use = [ "extract" ] },
{ mime = "application/x-bzip",          use = [ "extract" ] },
{ mime = "application/x-bzip2",         use = [ "extract" ] },
{ mime = "application/x-7z-compressed", use = [ "extract" ] },
{ mime = "application/x-rar",           use = [ "extract" ] },
{ mime = "application/xz",              use = [ "extract" ] },

Fallback
{ mime = "*", use = [ "open", "reveal" ] },
]
[tasks]
micro_workers    = 10
macro_workers    = 25
bizarre_retry    = 5
image_alloc      = 536870912  # 512MB
image_bound      = [ 0, 0 ]
suppress_preload = false
[plugin]
my custom previewers and pre-loaders
prepend_previewers = [
{ name = "txt",                        run = "code" },
{ name = ".md",                        run = "glow" },
{ name = ".od",                       run = "odt" },
{ name = ".wps",                       run = "odt" },
{ name = ".xlsx",                      run = "xlsx" },
{ name = ".xls",                       run = "xls" },
{ name = ".docx",                      run = "docx" },
{ name = ".doc",                       run = "doc" },
{ mime = "text/csv",                    run = "csv"},
{ mime = "audio/",                     run = "exifaudio" },
{ mime = "application/*zip",            run = "ouch" },
{ mime = "application/x-tar",           run = "ouch" },
{ mime = "application/x-bzip2",         run = "ouch" },
{ mime = "application/x-7z-compressed", run = "ouch" },
{ mime = "application/x-rar",           run = "ouch" },
{ mime = "application/xz",              run = "ouch" },
]
removed below when added to core
preloaders = [

{ name = "*", cond = "!mime", run = "mime", multi = true, prio = "high" },
# Image
{ mime = "image/vnd.djvu",    run = "noop" },
{ mime = "image/*",           run = "image" },
# Video
{ mime = "video/*",           run = "video" },
# PDF
{ mime = "application/pdf",   run = "pdf" },
]
previewers = [ # standard previewers
directories
{ name = "*/", run = "folder", sync = true },

# Code
{ mime = "text/*",                 run = "code" },
{ mime = "*/xml",                  run = "code" },
{ mime = "*/javascript",           run = "code" },
{ mime = "*/x-wine-extension-ini", run = "code" },

# JSON
{ mime = "application/json",       run = "json" },

# Image
{ mime = "image/vnd.djvu",         run = "noop" },
{ mime = "image/*",                run = "image" },

# Video
{ mime = "video/*",                run = "video" },

# PDF
{ mime = "application/pdf",        run = "pdf" },

# Archive
{ mime = "application/zip",             run = "archive" },
{ mime = "application/gzip",            run = "archive" },
{ mime = "application/x-tar",           run = "archive" },
{ mime = "application/x-bzip",          run = "archive" },
{ mime = "application/x-bzip2",         run = "archive" },
{ mime = "application/x-7z-compressed", run = "archive" },
{ mime = "application/x-rar",           run = "archive" },
{ mime = "application/xz",              run = "archive" },

Fallback
{ name = "*", run = "file" },
# { name = "*", run = "hexyl" }, # use hex viewer as fallback

]
input labels and locations
[input]
cd
cd_title  = "Change directory:"
cd_origin = "center"
cd_offset = [ 0, 2, 50, 3 ]
create
create_title  = "Create:"
create_origin = "center"
create_offset = [ 0, 2, 50, 3 ]
rename
rename_title  = "Rename:"
rename_origin = "center"
rename_offset = [ 0, 1, 50, 3 ]
trash
trash_title 	= "Move {n} selected file{s} to trash? (y/N)"
trash_origin	= "center"
trash_offset	= [ 0, 2, 40, 3 ]
delete
delete_title 	= "DELETE {n} SELECTED PERMANENTLY? (y/n)"
delete_origin	= "center"
delete_offset	= [ 0, 2, 50, 3 ]
put message higher than others to make it stand out
delete_offset	= [ 0, -5, 40, 3 ]
filter
filter_title  = "Filter:"
filter_origin = "center"
filter_offset = [ 0, 2, 30, 3 ]
find
find_title  = [ "Find next:", "Find previous:" ]
find_origin = "center"
find_offset = [ 0, 2, 50, 3 ]
search
search_title  = "Search via {n}:"
search_origin = "center"
search_offset = [ 0, 2, 50, 3 ]
shell
shell_title  = [ "Shell:", "Shell (block):" ]
shell_origin = "center"
shell_offset = [ 0, 2, 30, 3 ]
overwrite
overwrite_title  = "Overwrite an existing file? (y/N)"
overwrite_origin = "center"
overwrite_offset = [ 0, 2, 50, 3 ]
quit
quit_title  = "{n} task{s} running, sure to quit? (y/N)"
quit_origin = "center"
quit_offset = [ 0, 2, 50, 3 ]
[select]
open_title  = "Open with:"
open_origin = "center"
open_offset = [ 0, 1, 50, 11 ]
[which]
sort_by        = "none"
sort_sensitive = false
sort_reverse   = false
[log]
enabled = false
[headsup]
Anything else?
Love yazi! Really need this fixed.

Hi, can you upload these files for me to test?

Which files?

LibreOffice and Word files that dont work

Attached are 2 test files I just made with LibreOffice. These do not work with the latest build but do work with Yazi 0.2.5 (c65a14c 2024-04-23). The same problem exists with any LO or MS Office file. As I said, the work fine with nemo and Doublecmd which open them properly.
On Mon, May 27, 2024, at 07:29, 三咲雅 · Misaki Masa wrote:

LibreOffice and Word files that dont work
—
Reply to this email directly, view it on GitHub https://github.com/sxyazi/yazi/issues/1091#issuecomment-2132669991, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALLYYRKWZDHIZ4LYPGD2J6LZELACDAVCNFSM6AAAAABIJ6C5BKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZSGY3DSOJZGE.
You are receiving this because you authored the thread.Message ID: @.***>

And here is a file I made with MS Office 365 on line. Does not work either.
On Mon, May 27, 2024, at 07:47, Bert wrote:

Attached are 2 test files I just made with LibreOffice. These do not work with the latest build but do work with Yazi 0.2.5 (c65a14c 2024-04-23). The same problem exists with any LO or MS Office file. As I said, the work fine with nemo and Doublecmd which open them properly.
On Mon, May 27, 2024, at 07:29, 三咲雅 · Misaki Masa wrote:

LibreOffice and Word files that dont work
—
Reply to this email directly, view it on GitHub https://github.com/sxyazi/yazi/issues/1091#issuecomment-2132669991, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALLYYRKWZDHIZ4LYPGD2J6LZELACDAVCNFSM6AAAAABIJ6C5BKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZSGY3DSOJZGE.
You are receiving this because you authored the thread.Message ID: @.***>

Attachments:
• test.docx
• test.odt

I can't receive the attachment. It looks like GitHub dropped it. You'll need to drag and upload it using the GitHub web UI.

Attachments.zip

Should be fixed in https://github.com/sxyazi/yazi/commit/e8c35cba9a7a2ec307f3992aef87aae21899d1b0, please try it.
Thanks for reporting this bug!

Now it properly opens the right programs. But it still does not trigger the previewer I have specified. Attached is a zip with my entire config.
yaziconfig.zip

Hi, I resubmitted the commit https://github.com/sxyazi/yazi/commit/b81b707a3ea767e04fb02fddfc3a093e7769229e, please try again.

Perfect! That works as it did before.
Thanks again for all your hard work and responsiveness.
Bert
On Mon, May 27, 2024, at 15:37, 三咲雅 · Misaki Masa wrote:

Hi, I resubmitted the commitb81b707, please try again.
—
Reply to this email directly, view it on GitHub https://github.com/sxyazi/yazi/issues/1091#issuecomment-2133505726, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALLYYRLF2AI7I6JF6YSSFW3ZEMZLLAVCNFSM6AAAAABIJ6C5BKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZTGUYDKNZSGY.
You are receiving this because you authored the thread.Message ID: @.***>


NIFI-12225 Improve NiFi splash loading animation

Summary
NIFI-12225
With NiFi 2.0 just around the corner, I thought it's a great opportunity to differentiate it from from the 1.x line by introducing a fresh splash screen.
The PR includes both a GIF and a JSON version. The JSON format would be the preferred choice, but it requires an additional frontend dependency to render. Personally, I don't believe that having just a single animation from that source justifies adding the extra dependency. I'm including it in the PR primarily as an option for potential future use.
To see it in action, I recommend setting a breakpoint at: https://github.com/apache/nifi/blob/ae61ebb5eda7076c6a18ba0419b614b8516faf14/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-web/nifi-web-api/src/main/java/org/apache/nifi/web/api/FlowResource.java#L1229
Screenshot taken from a running NiFi:
https://github.com/apache/nifi/assets/11146937/9d302bfe-3123-4875-93ef-8aa2730a3b0d
Tracking
Please complete the following tracking steps prior to pull request creation.
Issue Tracking

[x] Apache NiFi Jira issue created

Pull Request Tracking

[x] Pull Request title starts with Apache NiFi Jira issue number, such as NIFI-00000
[x] Pull Request commit message starts with Apache NiFi Jira issue number, as such NIFI-00000

Pull Request Formatting

[x] Pull Request based on current revision of the main branch
[x] Pull Request refers to a feature branch with one commit containing changes

Verification
Please indicate the verification steps performed prior to pull request creation.
Build

[x] Build completed using mvn clean install -P contrib-check

[x] JDK 21

Licensing

[ ] New dependencies are compatible with the Apache License 2.0 according to the License Policy
[ ] New dependencies are documented in applicable LICENSE and NOTICE files

Documentation

[ ] Documentation formatting appears as expected in rendered files

the actual look of it - super cool.  Nice touch!
implementation - i defer to others
thanks!

Thanks for proposing this new animation option @nandorsoma! It is a clean new look, and the animated GIF approach seems reasonable as opposed to the JSON version. The only minor downside is the size of the GIF (300 KB).
For background, what is the library required to read the JSON file?
I am in favor of this change. What do you think @mcgilman, @pvillard31, @joewitt?

Thanks for the review @exceptionfactory!
In our scenario, I think we need this package: https://www.npmjs.com/package/ngx-lottie
If you want to delve deeper, there's more information on the format available here: https://lottiefiles.com/
Regrettably, this guide won't work for our needs, however, it can be helpful for testing the JSON file I've attached: https://lottiefiles.com/blog/working-with-lottie/how-to-add-lottie-animation-in-web-page-html

Thanks for the background @nandorsoma!

@nandorsoma On further consideration, 300 KB seems too large for an initial loading image, given that the point of the loading screen is to render quickly before the rest of the content is ready.
I looked at optimizing the animated GIF, which consists of 90 frames, and I was able to shrink it down to about 40 KB with 11 frames. It is not quite as smooth, but it is one possible approach.
Thoughts?

Thanks for the feedback, @exceptionfactory. To be honest, I had some concerns about the initial 300kB as well. When I tested it on my machine with a blank canvas, the splash screen only appeared for a fraction of a second. It doesn't seem like the loading time is significantly affected by the animation's size in that scenario, although I do recognize this is an edge case. In a more typical scenario with a complex canvas and a longer loading time for NiFi, that 300kB animation download shouldn't be the bottleneck. In that situation, having a smoother animation also appears to be more beneficial.

Thanks for the feedback, @exceptionfactory. To be honest, I had some concerns about the initial 300kB as well. When I tested it on my machine with a blank canvas, the splash screen only appeared for a fraction of a second. It doesn't seem like the loading time is significantly affected by the animation's size in that scenario, although I do recognize this is an edge case. In a more typical scenario with a complex canvas and a longer loading time for NiFi, that 300kB animation download shouldn't be the bottleneck. In that situation, having a smoother animation also appears to be more beneficial.

Thanks for the reply @nandorsoma. It is important to note that testing on a local machine is an ideal scenario, where traffic does not have to go over a network connection to reach the browser. In standard deployments, there will be some amount of network latency. The latency could vary considerably based on a variety of factors. For those reasons, having a small size for an initial loading screen is more critical. Although it would be great to have a new look, I lean in the direction of thinking that 300 KB is too large. An SVG version would be optimal.

Thanks again for proposing this improvement @nandorsoma. The concept is great, but without a vector-based approach, it does not seem suitable for an initial loading animation. I am closing this pull request for now, but feel free to re-open if you come up with alternatives.


fix: fixed search event persist issue, added functionality to support initial value

fix: fixed search event persist issue, added functionality to support initial value

Codecov Report

:exclamation: No coverage uploaded for pull request base (main@e9a5f0e). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #169   +/-   ##
=======================================
  Coverage        ?   77.70%
=======================================
  Files           ?       63
  Lines           ?     1552
  Branches        ?      606
=======================================
  Hits            ?     1206
  Misses          ?      336
  Partials        ?       10

Continue to review full report at Codecov.

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


Deprecation and syntax warnings in Python 3.8

Deprecation warning due to invalid escape sequences. Using raw strings or escaping them again helps in resolving this. Check https://github.com/asottile/pyupgrade/ for automatic fix of this.
find . -iname '*.py' | grep -Ev 'rdf4|doc|benchmark|tool' | xargs -P4 -I{} python3.8 -Wall -m py_compile {}
./icontrol/session.py:475: DeprecationWarning: invalid escape sequence \*
  """Sends a HTTP DELETE command to the BIGIP REST Server.
./icontrol/session.py:503: DeprecationWarning: invalid escape sequence \*
  """Sends a HTTP GET command to the BIGIP REST Server.
./icontrol/session.py:531: DeprecationWarning: invalid escape sequence \*
  """Sends a HTTP PATCH command to the BIGIP REST Server.
./icontrol/session.py:561: DeprecationWarning: invalid escape sequence \*
  """Sends a HTTP POST command to the BIGIP REST Server.
./icontrol/test/unit/test_session.py:554: SyntaxWarning: "is" with a literal. Did you mean "=="?
  assert icrs.session.verify is '/path/to/cert'
./icontrol/test/unit/test_session.py:555: SyntaxWarning: "is" with a literal. Did you mean "=="?
  assert icrs.session.auth.verify is '/path/to/cert'

archiving this repo, this request will not be implemented.


Syntax of storage and memory handling

Storage and memory
This isn't actionable but it's a thought I wanted to get written down to pick back up when the time comes.
Solidity has two keywords storage and memory that can control where a value ends up being stored.
Example:
    function example1(uint storage value) public {
        // code
    }
    function example2(uint memory value) public {
        //code
    }

The Rust language has a philosophy that often prefers to make things library features  rather than syntax features  if possible. (That isn't to say rust has a simple syntax, it sure has a lot of syntax rules).
For instance, in Rust, to store a u256 on the heap rather than the stack one would but it in a Box<T> so the type would end up being Box<u256> and no special keyword is needed. I find that to be superior in many circumstances. Not only does it mean less keywords, it also means that the language can evolve easier without introducing breaking changes to its syntax. For instance, at some point a BetterBox<T> may be introduced and one could even end up using both side by side. Alternatively versions of Box<T> could live behind different import paths.
So, to translate the Solidity example into a made up form of future Fe code, this is what I could see it end up looking:
    pub def example1(value: Storage<u256>):
        # code
    pub def example2(value: Memory<u256>):
        # code

If we decide to add a feature like this, I think this is the way to go. I do wonder, though, if it's possible to completely avoid the need for this.
Say we have this function:
def foo(bar: u256[100]) -> u256:
    return bar[42]

Currently, this would be mapped to something like:
function foo(bar) -> val {
    val := _mem_array_index(bar, 42) // note: there is no runtime function `_mem_array_index` atm, but we should have one
}

I'm thinking we could create multiple versions of the same Fe function in Yul, but with different parameter locations to accommodate all invocations.
For example, let's say foo is called two different ways within the contract:

self.foo(my_mem_array)
self.foo(self.my_sto_array)

The semantic analysis pass would notice this and determine that two separate foo functions need to be created. One where bar is in memory and the other where bar is in storage i.e.:
function foo_mem(bar) -> val {
    val := _mem_array_index(bar, 42)
}

function foo_sto(bar) -> val {
    val := _sto_array_index(bar, 42)
}

Then the two function calls would be mapped like so:

self.foo(my_mem_array) -> foo_1(my_mem_array)
self.foo(self.my_sto_array) -> foo_2(<storage index>)

I agree that this could be inferred for the parameters to the function but I assume there are still situations (e.g. contract member variables) where the programmer needs/wants to be in control whether something is stored in memory or on the storage.

Hey, just noticed recently that you guys are continuing work on the lang.  Awesome stuff!
Thought I'd jump in and comment that you might want to consider this syntax extension against the already existing syntax for declaring indexed event fields and public contract fields and methods.  In other words, would it make sense to also convert indexed field declarations to looking like this?
# old
event Signed:
    idx book_msg: BookMsg

# new
event Signed:
    book_msg: Indexed<BookMsg>

I think maybe not for some of the reasons I discuss in this thread: https://github.com/ethereum/fe/issues/8.  Namely, it might get cumbersome to stack multiple annotation on anything that uses any kind of "calling" syntax where pairs of delimiters need to enclose some argument.  So in an imaginary future where we want to annotate a single variable with multiple properties, it might start to look a bit hairy:
# with angle bracket call-like syntax
def myFunc(foo: SomeAnnotation<Storage<u256[100]>>) -> u256:
    ...

# with prefix qualifier syntax
def myFunc(som_annotation storage foo: u256[100]) -> u256:
    ...

# with prefix qualifier syntax
def myFunc(som_annotation storage foo: u256[100]) -> u256:
    ...

The latter might be a bit more readable...maybe.  Actually, I don't know how I feel about it now that I'm seeing it typed out.  But I guess the point is that there seems to be some overlap between these different syntaxes and it would be good to think about if that will ever seem confusing or if they should be consolidated somehow.

One argument that could be made on behalf of using angle brackets here is that the programmer could shorten things up using type definitions.
type Custom<T> = SomeAnnotation<Storage<T>>

# with angle bracket call-like syntax
def myFunc(foo: Custom<u256[100]>) -> u256:
    ...

My hope, though, is that the situations requiring compound annotations would be limited, as they take a toll on the languages accessibility regardless of the syntax.

I think that if we go down that route of turning these things that are currently kewords (e.g. indexed) into a generic builtin like Indexed<T> then it would be crucial to go along with a std library and imports.
E.g.
from std import Indexed, Storage, Memory

# Now usage as Indexed<uint256>, Storage<address>, Memory<string> etc

Because, if we don't do that, then it seems to me that we would be giving up on the mentioned benefits of library features vs syntax features (e.g. improved types importable from a different path).
I've also recently read that a std library is one of the things that the solidity team has on their radar and @pipermerriam also mentioned it as one of the things being on his personal wish list. I think this would naturally go hand in hand.

Grant:

One argument that could be made on behalf of using angle brackets here is that the programmer could shorten things up using type definitions.

Christoph:

I think that if we go down that route of turning these things that are currently kewords (e.g. indexed) into a generic builtin like Indexed<T> then it would be crucial to go along with a std library and imports.
...
I've also recently read that a std library is one of the things that the solidity team has on their radar and @pipermerriam also mentioned it as one of the things being on his personal wish list. I think this would naturally go hand in hand.

Both great points, guys.  In that case, I feel better about favoring the generics syntax.  And as I mentioned already, I didn't really like the way those prefixes looked when they appeared together in my previous example.
I think there's still a question of how these generic-like annotations line up conceptually with prefix annotations such as pub on methods and fields.  Previously, I had sort of conceptually lumped the idx prefix together with the pub prefix.  Now, we're looking at breaking those things up into different syntaxes.  So I wonder, is there anything that should happen to pub?  Should fields be annotated with a Public<T> type?  Should we also break down and just use decorator-like syntax for method annotations (@public) and get rid of the pub prefix?

then it would be crucial to go along with a std library and imports

We could probably just import the std library implicitly. This way we don't need to worry about implementing imports now just for the sake of the std library. It seems like most languages do this anyway.

So I wonder, is there anything that should happen to pub? Should fields be annotated with a Public type?

I think pub is good where it's at. If we're using Rust as a model language for library features and where you should draw the line between library and syntax features, then leaving public/private as a syntax feature is the correct way to go. And if we are going to leave it as a syntax feature, then I think the pub prefix looks best.

We could probably just import the std library implicitly.

Yes, I thought about that, too and I think it is ok to begin with. I do think that - at a later stage - it is valuable to opt-out of it and conditionally import (e.g. to decide between different versions of built-ins)

I think pub is good where it's at. If we're using Rust as a model language for library features and where you should draw the line between library and syntax features, then leaving public/private as a syntax feature is the correct way to go. And if we are going to leave it as a syntax feature, then I think the pub prefix looks best.

Yes, I'm on the same page with pub. I want to add that I just recently opened up the same discussion about using decorators for visibility and I would stay open to the thought if it turns out that we will have to support a range of different modifiers (e.g. public, external, internal whatever)
For now, I think going forward with pub is the right approach.

Alright, cool.  It sounds like the proper conceptual difference is this lib vs syntax feature distinction.  I think it sounds good.


[PROBLEM] In muti-process server might be a problem

https://github.com/LeaYeh/webserver/tree/refactor-multiproc-logger
Not quite sure it is necessary or not...


Keep an object at the same position with scaling and movement

Hi,
I have one problem I simply don't get a solution for, using the onTap handler I can draw a circle at a position and move it according to the changes provided from PhotoViewController to keep it on the same spot in the image.
I store the local position, the offset and scale when clicked, I draw the circle using position + forPoint.
//.....
onTapUp: (a, b, c) {
            setState(() {
              position = b.localPosition;
              offsetToCenter = c.position;
              forPoint = Offset.zero;
              initialScale = c.scale;
}
//.....
//Custom painter draw method
@override
  void paint(Canvas canvas, Size size) {
    if(position == null){
      return;
    }
    canvas.drawCircle(position+forPoint, 5, line);
  }
//.....

Calculating the move for the point is done in the listen method of the controller stream:
 controller2.outputStateStream.listen((onData) {
      print(onData.position.toString());
      print(onData.scale.toString());
      if (position != null) {
        setState(() {
          final newOffset = (offsetToCenter - onData.position) * -1;
          print("new offset: " + newOffset.toString());
          forPoint = newOffset;
        });
      }
    });

My issue is as soon as I change the scale the point moves, I spend more or less two days and a lot of paper but I can't get it right. Could somebody help me out and explain how to apply the scaling to keep the point at the right place in the image?
Thanks

@SergeShkurko I had a look at your solution and got some issues giving it a try. I had to change a few things like the findChild method (unable to find where this was comming from). Also I didn't found the origin of:

visibleArea
visiblePosition

Could you maybe provide a little insight on this?
@renancaraujo Did you had any time / luck to get something in that direction ?

@Dev-Owl – are you trying to keep the overlayed widget at the same size relative to the screen when scaling occurs, or to scale in size proportional to the PhotoView child?  I'm trying to get the widget to remain the same size relative to the screen, as Google Maps markers do when scaling occurs, but haven't had any luck – I have managed to keep overlayed widgets in the same position and have them scale proportionally.
final size = Size(someWidth, someHeight);
PhotoView.customChild(
  child: CustomWidget(size: size),
  childSize: size,
)

class CustomWidget extends StatelessWidget {
  CustomWidget({this.size});

  final Size size;

  @override
  Widget build(BuildContext context) {
    return OverflowBox(
      maxWidth: size.width,
      maxHeight: size.height,
      child: Stack(
        children: <Widget>[
          Image.asset(
            "images/some-image.png",
            width: size.width,
            height: size.height,
          ),
          Positioned(
              top: size.height / 3,
              left: size.width / 3,
              child: Container(
                color: Colors.pink,
                width: 20,
                height: 20,
              ),
           ),
        ],
      ),
    );
  }
}

Hi Guys,
Sorry busy over here,  @scopendo actually my code would like to do the same as @renancaraujo  beside that its not so smooth and doesn't support rotation. Big thanks to @renancaraujo I will definitely have a look at your code, for me the last thing I couldn't get to work was recognizing a tap on my drawn element/marker. It would be great if this could be build into the tool, I think it would open up some nice use cases. My case by the way is using it as a simple map (to display a layout of a vessel with all decks/rooms etc. ) to put hotspots on it and let user interact with it. For the web solution we use Leaflet unfortunately the leaflet implementation for Flutter has some issues with "simple" coordinates (plain pixel) and did not work for this use case.
Again, thanks for the response and effort from your side :)

Looks like this got solved. I've created the related issues for the tap detection location. I shall close this issue for now. If you wanna retake the discussion, feel free to open it again.

Sorry, so many things pilled up the last weeks I just had the time to check this today. Your solution works. Just wondering how I get the absolute position of the tap (regarding the image)? Let's say you want to exchange the information with another solution (or get the data from 3rd party) I would get a list of positions in absolute points on the image, somehow this needs to be fitted to and from the view. Still looking at the code and trying to wrap my head around, any help is welcome

I found a way to do it, just in case somebody else needs this. The below code recalculates the position from/to absolute position based on the example provided from @renancaraujo (with a small change to get the max width). Please note that the below code is the complete view, just take the parts you need, yes its kind of messy as it's my development try-out project:
class _ComponentLocationState extends State<ComponentLocation> {
  File _loadedFile;
  PhotoViewControllerBase controller;
  double currentScale = 1;
  final double pinSize = 50;
  final GlobalKey _centerKey = GlobalKey();
  double maxWidth = 0;
  Size imageSize;

  @override
  void initState() {
    super.initState();
    controller = PhotoViewController()
      ..outputStateStream.listen(onControllerState);
  }

  void onControllerState(PhotoViewControllerValue value) {
    setState(() {
      currentScale = value.scale;
    });
  }

  Future<File> getLayoutPicture() async {
    if (_loadedFile != null) return _loadedFile;
    var dirToSave = await getApplicationDocumentsDirectory();
    var localFileName =
        File(dirToSave.path + "/layout_${globals.currentWorkingVessel.id}.jpg");
    if (!await localFileName.exists()) {
      return null;
    } else {
      painting.imageCache.evict(new FileImage(localFileName));
      painting.imageCache.evict(localFileName.path);

      _loadedFile = localFileName;
      var info = await _getImage();
      imageSize =
          Size(info.image.width.toDouble(), info.image.height.toDouble());
      return localFileName;
    }
  }

  Future<ImageInfo> _getImage() {
    final Completer completer = Completer<ImageInfo>();
    final ImageStream stream = Image.file(_loadedFile).image.resolve(
          const ImageConfiguration(),
        );
    final listener = ImageStreamListener((
      ImageInfo info,
      bool synchronousCall,
    ) {
      if (!completer.isCompleted) {
        completer.complete(info);
        if (mounted) {
          final setupCallback = () {
            imageSize = Size(
              info.image.width.toDouble(),
              info.image.height.toDouble(),
            );
          };
          synchronousCall ? setupCallback() : setState(setupCallback);
        }
      }
    });
    stream.addListener(listener);
    completer.future.then((_) {
      stream.removeListener(listener);
    });
    return completer.future;
  }

  Widget pointToWidget(double x, double y) {
    if (x == null || y == null) return null;
    var currentSize =
        (currentScale > 1 ? pinSize / currentScale : 25.0).roundToDouble();
    var scaledX = x / (imageSize.width / maxWidth);
    var scaledY = y / (imageSize.width / maxWidth);
    return Positioned(
        top: (scaledY - (currentSize / 1.5)).roundToDouble(),
        left: (scaledX - (currentSize / 2)).roundToDouble(),
        child: Icon(
          Icons.location_on,
          color: Colors.blue,
          size: currentSize,
        ));
  }

  void onTapUp(TapUpDetails details) {
    print(details.localPosition);
    widget.currentComponent.locationX = details.localPosition.dx * (imageSize.width / maxWidth);
    widget.currentComponent.locationY =details.localPosition.dy * (imageSize.width / maxWidth);
    print("X:${details.localPosition.dx * (imageSize.width / maxWidth)}");
    print("Y:${details.localPosition.dy * (imageSize.width / maxWidth)}");

    widget.currentComponent.saveToDb().then((_) {
      setState(() {});
    });
  }

  Widget _buildInner(BuildContext context) {
    if (_loadedFile == null) {
      return FutureBuilder<File>(
          future: getLayoutPicture(),
          builder: (context, snapshot) {
            if (snapshot.connectionState == ConnectionState.done) {
              if (snapshot.data == null) {
                return Center(child: Text("No layout picture found"));
              }
              return _buildGADrawing(snapshot.data);
            } else {
              return CircularProgressIndicator();
            }
          });
    } else {
      return _buildGADrawing(_loadedFile);
    }
  }

  Widget _buildGADrawing(File file) {
    var layoutChilds = <Widget>[
      Image.file(file),
    ];
    return Container(
      child: PhotoView.customChild(
        enableRotation: false,
        initialScale: 1.0,
        controller: controller,
        onTapUp: (context, tapUp, controllerVlaue) {
          print(tapUp);
        },
        child: LayoutBuilder(builder: (buildContext, boxConstraints) {
          maxWidth = boxConstraints.maxWidth;
          var currentPoistion = pointToWidget(widget.currentComponent.locationX,
              widget.currentComponent.locationY);
          if (currentPoistion != null) {
            layoutChilds.add(currentPoistion);
          }
          return Center(
            key: _centerKey,
            child: GestureDetector(
                onTapUp: onTapUp,
                child: Stack(
                  children: layoutChilds,
                )),
          );
        }),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Edit component location"),
      ),
      body: _buildInner(context),
    );
  }
}


Support for Multiple PHP Executable Paths Based on Operating System

I want to request a feature that allows specifying multiple PHP executable paths in VS Code based on the operating system. This would be particularly useful for developers who work across different environments (e.g., Windows and Mac) and need to switch between different PHP executables seamlessly.
Current Behavior:
Currently, the php.validate.executablePath setting in settings.json only supports a single path. This requires manual path modification when switching between operating systems, which is inefficient for developers who frequently switch between environments.
Proposed Solution:
Introduce support for specifying multiple PHP executable paths in the settings.json configuration, allowing for conditional paths based on the operating system. An example configuration could look like this:
"php.validate.executablePath": {
 "windows": "C:/xampp/php/php.exe",
 "mac": "/Applications/XAMPP/xamppfiles/bin/php"
}
Environment Details:
VS Code Version: 1.87
OS Version: Windows 11, macOS Monterey (12.7.5)
This feature could be extended to similar settings where different executables or paths are required based on the operating system. It would enhance the overall development experience in cross-platform environments.

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.89.1. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

What exactly is the scenario- how are you moving settings between machines?
This setting is a "machine"-scoped setting, meaning Settings Sync won't sync it between machines when configured in your user settings. You can configure it once per machine and leave it alone.
I don't think we should change how this works, otherwise you could make the same argument for many other settings.

I use Windows for my desktop and macOS for my laptop, and I have the same project set up on both systems. The project depends on PHP, but the PHP executable paths differ between the two operating systems. I use the official VS Code Settings Sync with my GitHub account to ensure my settings remain consistent across machines. However, I encountered an issue with the php.validate.executablePath setting, as it doesn't support multiple paths.
For instance:
On Windows, the path is C:/xampp/php/php.exe.
On macOS, the path is /Applications/XAMPP/xamppfiles/bin/php.
Each day, before starting work on either system, I have to manually update the PHP path in the settings, which disrupts my workflow.
Is it possible to enhance the php.validate.executablePath setting to support an array of paths? This way, VS Code will check each path in order until it finds a valid PHP executable. Here’s an example of what this could look like:
  "php.validate.executablePath": [
    {
      "path": "C:/xampp/php/php.exe"
    },
    {
      "path": "/Applications/XAMPP/xamppfiles/bin/php"
    }
  ]
This change would greatly simplify the workflow for developers like myself who work across multiple operating systems.
Thank you for considering this suggestion. I appreciate the fantastic work you do with VS Code!

Please let me know if you have any other solutions to my problem.

Are you saying that settings sync is syncing that setting across machines? It should not do that. I just tested and I don't see it being synced.

These are the settings in settings.json. As you can see in the screenshot, my current solution is to comment and uncomment the code in VS Code > User > settings.json.

Thank you for your time and effort in helping me understand the issue.
After reading your message, I uninstalled and deleted VS Code from both my Windows and iOS systems, including their related hidden extension folders and the main VS Code folder. After reinstalling VS Code, I noticed that the path "php.validate.executablePath": "" is now updating the PHP path correctly on both my Windows and Mac devices. My previous settings had an issue, but everything is functioning correctly now.
I appreciate your help in helping me through this problem.


Add option to disable use of proxies

This PR adds the option to disable the use of a proxy (i.e. configured via HTTP_PROXY and HTTPS_PROXY environment variables).
The proxy configuration could be targeted at a client used in the gRPC server, and does not apply to the health probe client.

@googlebot I signed it!

Is there another way to solve this? Like:
env -u http_proxy ./probe
Also, in what environment you're ending up inheriting the env vars of the main server process?

The health probe and main server is installed in the same container, and the health probe is called from a kubernetes liveness probe. I have solved it by wrapping the call in a script from the liveness probe command instead.
Thanks.


Add support for Caltech-UCSD Birds-200-2011 dataset

🚀 Feature
I want to add support for Caltech-UCSD Birds-200-2011 dataset  in torchvision.datasets.
Motivation and Pitch
A lot of people are using Caltech-UCSD Birds-200-2011 dataset for the evaluation of their proposed models. According to paperswithcode.com 787 papers employed this dataset since 2017 and these numbers are growing. So, I want to add support for this data in the datasets library.
cc @fmassa @vfdev-5 @pmeier

Can this issue be closed because of #5154 ?


[Gally]: master <- dev

Automatically created by Git-Ally

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


The instructions to get it working in Expo web does not work

Describe the bug
I started a new app using the blank typescript template and the instructions in https://www.nativewind.dev/quick-starts/expo
To Reproduce
Steps to reproduce the behavior:

npx create-expo-app
choose blank typescript
yarn add nativewind
yarn add --dev tailwindcss<EMAIL_ADDRESS><EMAIL_ADDRESS>npx tailwindcss init
Change content: ["./App.tsx"],
babel.config.js add nativewind/babel plugin
create webpack.config.js as per https://www.nativewind.dev/quick-starts/expo#expo-web
Modify App.tsx as per https://www.nativewind.dev/quick-starts/expo#expo-web but change to bg-red

Expected behavior
Red screen with text in the middle
Expo Snack
If applicable, add a link to an Expo snack demonstrating the issue. There are multiple example snacks available at nativewind.dev.
Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here.

Please follow the instructions, especially this step "You will need follow a Tailwind CSS installation guide"
NativeWind is just a compatibility layer on the web, it doesn't compile the styles.
Additionally there an example Expo project in the repo

@marklawlor I also had the same misunderstanding, may I suggest to put a link to the expo example in the section: https://github.com/marklawlor/nativewind/tree/main/examples/expo

@marklawlor I also had the same misunderstanding, may I suggest to put a link to the expo example in this section: https://www.nativewind.dev/quick-starts/expo#expo-web

A link has always existed? If you have a suggestion on how to improve it can you please open a PR


[Suggestion] Locking progression behind levels

Similar to how reskillable  was able to lock items behind skill levels. As a config option turned off by default- and using a list of user created requirements for items they wish to add requirements to.
So, an example would be:
to use a diamond sword you'd have to have strength 10
This is mostly an idea targeted towards mod-pack creators making a pack which is trying to stretch out the game-play a little- like for example on a server, stopping a player from just obtaining end-game gear right away

Hi there,
I appreciate your suggestion! I've had a few people request this - however, I will probably not be adding this any time soon, if at all on PlayerEx. I feel that if this feature were to be implemented, it should probably be an addon mod. Indeed, I've exposed the relevant functionality in the PlayerEx API with this in mind, so that anyone can develop an addon.
Thanks.

Hmmm, alright, so basically the groundwork is there, just waiting for someone to make the addon?
Also, sorry, i looked through the closed ones to see if someone hadn't mentioned the idea before but didn't see anything


Multiple stories

When I have something like:
const Template = () => ....

export const Story1 = Template.bind({})
export const Story2 = Template.bind({})

Story1.parameters = {
   msw: [ graphql.query('MyQuery', .....) ]
}

Story2.parameters = {
   msw: [ graphql.query('MyQuery', .....) ]
}

when I switch from story1 to story2, it uses the resolver for story1.

Turns out the issue was I called client.resetStore() before every story, and this caused the queries to be refetched.
client.cache.reset() is what I wanted instead


KeyBoard action instance not disposed, using Action Builder after WinAppDriver upgraded to 4.1.1

Hi,
Recently we upgraded Appium.WebDriver from <IP_ADDRESS> to 4.1.1 for wpf application automation, we have scripts using Action Builder used for keyboard operation like Control + A, Control + C but found some unusual behavior after these related scripts executed in latest WinAppDriver (4.1.1).
Few other lib's upgraded along with Appium WebDriver:
Selenium.Support, Selenium.WebDriver: 3.0.1 to 3.141.0
Castle.Core: 3.3.3 to 4.4.0
The keyboard instance is not getting disposed, ie., consider if your recent test script performed key board control action which works perfectly fine. But once this test script is completed, we see that key board control instance still exists, just try to scroll mouse up and down, you can see zoom-in and zoom-out of the desktop items, else just press Esc button Windows menu list will display. And you can still try other keyboard with control actions.
We did tried to dispose Action builder instance but still above mentioned issue was not solved.
Please let us know how do we need to handle to dispose Keyboard action using Action Builder.
Action Builder snippet:
Actions builder = new Actions(windows_driver);
builder.KeyDown(Keys.Control);
builder.SendKeys(Keys.ArrowUp);
builder.KeyUp(Keys.Control);
builder.Perform();
Note:

Changes taken care:  AppiumOptions instead of DesiredCapabilities
Changes taken care:  ImplicitWait instead of ImplicitlyWait

Even I am facing the same issue, Were you able to solve this. Any help into this will be highly appreciated.

@kat-y Can This be taken on priority?

And this happens  with <IP_ADDRESS> also.

We are facing the same issue. Probably that is the reason, the value being entered into TextBox is $)))! where it is supposed to enter 40001. This issue happens randomly
This is the code where Shift Key is used:
var action = new Actions(ApplicationSession);
action.KeyDown(Keys.Shift);
element.Click();
action.KeyUp(Keys.Shift);  // This does not work hence we are using Action release to release SHIFT key
action.build().Perform();
action.Release().Perform();


How to do exception handling in kafka output trigger if trigger fails to write to kafka

Hello,
I'm using KafkaOutput Trigger with Azure In-Process function. Surprisingly, it's not throwing any exception if I provide invalid brokername also. Just wondering, how would I get acknowledgement form or at least throw an exception if something wrong during writing to kafka. I tried with both the ways AsyncCollection<kafkaEventData<,>> and  output parameter of kafkaEventData but none of them is throwing any exception.  Just fyi, I'm using timerTrigger to run the azure function.

@alpeshdhanesha1984 Are no exceptions getting logged for the function executions or Are you looking for a way to fail the function execution and mechanism for subsequent retries?

Hello,
I'm looking for delivery report which we are getting in confluent.kafka library. If kafkatriggets fails to write into topic how will I get acknowledgement whether it's successful or not.
One more point , is the kakfa trigger support for specific offset reading. For eg. If I want to read specific offset in Kafkatrigger how can I achieve it.
Is there any sample wherein I can refer these points ?
Best regards,
Alpesh
Sent from Outlook for Androidhttps://aka.ms/AAb9ysg

From: jainharsh98 @.>
Sent: Tuesday, October 17, 2023 10:17:39 PM
To: Azure/azure-functions-kafka-extension @.>
Cc: alpeshdhanesha1984 @.>; Mention @.>
Subject: Re: [Azure/azure-functions-kafka-extension] How to do exception handling in kafka output trigger if trigger fails to write to kafka (Issue #460)
@alpeshdhanesha1984https://github.com/alpeshdhanesha1984 Are no exceptions getting logged for the function executions or Are you looking for a way to fail the function execution and mechanism for subsequent retries?
—
Reply to this email directly, view it on GitHubhttps://github.com/Azure/azure-functions-kafka-extension/issues/460#issuecomment-1766011512, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BDHOMNOJ4A3KQLDPLD3XRPTX7ZELHAVCNFSM6AAAAAA56KKHU2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONRWGAYTCNJRGI.
You are receiving this because you were mentioned.Message ID: @.***>


ping.Statistics is not thread-safe

ping.Statistics docs says This can be run while the pinger is running or after it is finished
https://github.com/sparrc/go-ping/blob/4e5b6552494c8005c60de6c60b50ebaefc69e592/ping.go#L356-L359
But the only safe places to run ping.Statistics are in ping.OnRecv and ping.OnFinish.
There is no sync mechanics to protect fields like PacketsRecv, PacketsSent, Rtts while they are being updated in processPacket
Imagine your pinger.Run goroutine is rescheduled and put to sleep just before  https://github.com/sparrc/go-ping/blob/4e5b6552494c8005c60de6c60b50ebaefc69e592/ping.go#L499  PacketsRecv is updated, but Rtts is not. And your another goroutine calls pinger.Statistics on the same pinger  - it will get inconsistent data.
But there is more, as far as I know, gouroutines can be rescheduled in the middle of statement, like p.PacketsSent++ or append. Then call to Statistics will read corrupted data.
Options:

Fix Statistics to be thread-safe
Fix godoc on Statistics

wow that is an interesting avatar....but yes you are correct, this should be fixed probably with a semaphore

This should be fixed by https://github.com/go-ping/ping/pull/150 and https://github.com/go-ping/ping/pull/151.


Add database security monitoring dashboards

In this PR, I would like to add 2 dashboards for monitoring database security in Amazon Redshift.
Background
Currently Redshift users need to query system tables to monitor security features (e.g. user, schema, table, privileges) configured in Redshift. This requires querying multiple system tables and writing SQL.
By using this dashboard, user will be able to navigate these information in Redshift quickly without writing SQL.
Amazon Redshift Identities and Objects dashboard
This dashboard will visualize identity (user/role/group) and database objects (schema/table etc).

Amazon Redshift Privileges dashboard
This dashboard will visualize privileges (who have what access).

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Yota Hamaoka seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Yota Hamaoka seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Hi team,
There are workflows failing with Error: Input required and not supplied: token.
Would someone from code owner help me resolve this, or can we just ignore?
Workflows are failing at:
https://github.com/grafana/redshift-datasource/blob/58116f0b519a68bda133f88e95ce7ceaa8308e5a/.github/workflows/issue_and_pr_commands.yml#L22
https://github.com/grafana/redshift-datasource/blob/09e086c86aa62392929a6384667b264981cc17ca/.github/workflows/issue_commands.yml#L23
As far as I searched, this error is happening because PR from forked repository cannot reference secrets.GH_BOT_ACCESS_TOKEN due to GitHub's security feature (same as #125 ).
There's a workaround like using pull_request_target described in this article but I would like to hear your thoughts.
https://securitylab.github.com/research/github-actions-preventing-pwn-requests/

Thanks for looking into that; I don't think you need to worry about those checks for now.
I think you'll need to add these dashboards to the plugin.json so they will be suggested on the Dashboards page. Like:
"includes": [
    {
      "type": "dashboard",
      "name": "Redshift Monitoring",
      "path": "dashboards/redshift-monitoring.json"
    },
    {
      "type": "dashboard",
      "name": "Redshift Privileges",
      "path": "dashboards/redshift-privileges.json"
    },
    {
      "type": "dashboard",
      "name": "Redshift Identities and Objects",
      "path": "dashboards/redshift-identities-and-objects.json"
    }
  ],

Thanks for contributing @yota-p!
When I test the dashboards, the query editors aren't loading properly.

To work around this, you may need to tips the option Export for sharing externally when exporting your dashboard.

@fridgepoet @sunker Thank you for the response. I'll check plugin.json and dashboard definition file.
I need some time to build the plugin on my side and test it. WIll let you know once ready.

@fridgepoet
Updated plugin.json. I built the plugin locally and confirmed the dashboards can be imported & are working.

@sunker
Interesting, I didn't see the same error. The dashboards are loading properly on when I tested.
Would you try again with the latest commit?

I used the option Export for sharing externally. FYI, I also made changes to the JSON manually since exported file still contains environment specific info (e.g. datasource uid). I can still load the dashboard properly so I think it's not the cause here. Changes I made are:

Removed __inputs, __elements, __requires, iteration
Replaced “datasource”: {“type”: xxx, “uid”: xxx} to "datasource": "${ds}"
Replaced values of templating.list[0].current.text, templating.list[0].current.value to default

Hi @yota-p, could you change the following in the dashboards
"datasource": "${ds}"

to the following
"datasource": {
  "type": "grafana-redshift-datasource",
  "uid": "${ds}"
},

I suspect that's what's causing @sunker to not be able to see the correct query editor. Just a bit of background. We changed the shape of the datasource some time in v8.3.x of Grafana I believe. It used to be a string, but now it's an object with the type and uid property. I think what's happening is when we read the datasource property after importing the dashboard, it's setting the datasource as the whatever is set as the default datasource for the Grafana instance.
I was seeing the same issue as @sunker when I changed my default datasource to a different plugin, but using the new format for the datasource property fixed it.

@kevinwcyu Thank you for the suggestion. I changed the format for datasource property and confirmed it's loading properly on my end (I'm using latest v9.1.1). Would you review?

Great, thank you team!

Hi @sunker @kevinwcyu ,
Do you have a plan when to release the next version?
This feature is merged but not released yet. If possible, I want this feature to be released by the end of September (not a hard limit tho).

Yes it was just released in 1.2.0. Thanks again for contributing!


Add Pelican URL Parsing library to standardize how we handle pelican URLs

This new pelican_url package and its overall integration should feel like our beloved, familiar net/url package, but with some added niceties for Pelican URL parsing. In particular, it handles

Query param validation
Metadata discovery
URL caching (to avoid frequent metadata lookup for URLs with the same discovery host)

A few caveats -- this grew more than I anticipated. The reviewer should pay particular attention to tests that I deleted -- in many cases, I moved the essence of the test to what I thought was a more appropriate location (such as within the pelican_url module), but there isn't a 1-1 relationship here. If I deleted something I shouldn't have, do let me know.

One to-do that came from a discussion with Brian -- go back through this and restore any exported APIs from the client to have the same signature. There were a few places where I changed whether a URL or a string were passed.

One to-do that came from a discussion with Brian -- go back through this and restore any exported APIs from the client to have the same signature. There were a few places where I changed whether a URL or a string were passed.

@jhiemstrawisc Shall I wait until this is done?

One to-do that came from a discussion with Brian -- go back through this and restore any exported APIs from the client to have the same signature. There were a few places where I changed whether a URL or a string were passed.

@jhiemstrawisc Shall I wait until this is done?

Probably a good idea for now, I think I'll have to adjust a few things that are non-trivial


Parse properties doesn't refresh when checking files in foreachmessage after 3 iterations everytime. Any upgrade ??

Describe the Bug with repro steps
We are using Logic Standard Application for our workflows for more than a year now. I see the UI is all updated today.
I am iterating through ForEachmessage loop to see the file content in parse properties. The content doesnt update after I iterate 3 or 4 times and I need to refresh or close browser everytime.
What type of Logic App Is this happening in?
Standard (Portal)
Are you using Preview Designer or GA Designer
Generally Available
Workflow JSON
No response
Screenshots or Videos
I see Azure upgraded the look and feel of Azure Standard logic application. But I see bugs while I try to iterate through foreachmessage loop since morning. The content doesn't update in Parse properties after 3 iterations. I rebooted and refreshed as well nothing works. All this was just fine before the upgrade. I am wasting so much time refreshing , closing browsers and rebooting. No code change from our side as this is happening in Production environment. Please look into this issue.
Browser
Chrome
Additional context
All this was working before the upgrade and there is no code change from our side. This is in Production environment. Please look into this urgently.

Hi @rathna-apd, thank you for raising this issue. Could you please add screenshots with the current and expected behavior or the workflow.json example you are having trouble with? This would speed up the fixing time. You can also share with me the requested data here<EMAIL_ADDRESS>

Hi @rathna-apd, just commenting on this again to see if we can get more info about this issue. Otherwise, we will close it through the week.


[FR] Flatten TextSyle in TextAppearance

The service won’t add new values to TextAppearance in this shape of API, so it is a great opportunity for us to improve the design.
Fixes: https://github.com/Azure/azure-sdk-for-net/issues/20688

By the way, changelog?

By the way, changelog?

Thank you! I keep forgetting it!


Implement allowFontScaling on Android

Android Text components are wanting the ability to disallow font scaling. This is a key feature for design in order to prevent breaking layouts when the user sets their font sizes to huge. Allowing font scaling by default is fine, but there should be a convenient way to disallow it when needed so that apps work well for all users. It is an accessibility concern.
I currently work around this applying the following function in my style sheets:
  // Returns a scale-invariant font size.
  // On iOS this is a no-op, since we can use `allowFontScaling` to disable
  // scaling there. On Android, this reduces the font size so that when Android scales it
  // it will give the desired font size.
  function fixedFont(size) {
    // NOTE: Font Scale should always be the same as the Pixel Ratio on iOS, making this
    // a no-op.
    return size * ReactNative.PixelRatio.get() / ReactNative.PixelRatio.getFontScale();
  }

I have a general idea of how to fix this, but my Java skills chops aren't really up to the task of creating a pull request. The issue seems to be that in ReactTextShadowNode.java:390 we compute the font size from Android's SP units, which scale. What we want, instead, is to do this from DIP units when allowFontScaling is false. This is the recommended way to handle non-scaling font sizes in Android.
So, we would want something like:
if (allowFontScaling) {
  fontSize = (float) Math.ceil(PixelUtil.toPixelFromSP(fontSize));
else {
  fontSize = (float) Math.ceil(PixelUtil.toPixelFromDIP(fontSize));
}

Has there been any progress on this issue?

Running across this issue myself at the moment, @mcrowe would you recommend your approach for the time being?

@awitherow Yes, my approach is annoying: I have probably 300+ calls to fixedFont scattered throughout my code. Still, its the best option right now, AFAIK.

I've replace StyleSheet.create with the following function
export const createStyleSheet = dict => {
    for (let key of Object.keys(dict)) {
        for (let name of Object.keys(dict[key])) {
            if (name === 'fontSize' || name === 'lineHeight') {
                dict[key][name] = fixedFont(dict[key][name])
            }
        }
    }
    return StyleSheet.create(dict)
}

This was fixed by #10898.

@mcrowe is this fixed for u?

@sibelius if you set in index.ios.js Text.defaultProps.allowFontScaling = false it will set it globally.

awesome hack, tks

Yes, I believe this has now been resolved.

For anyone else still struggling with this issue on Android, this did the trick for me:
https://stackoverflow.com/a/32832216/1044620


[AutoPR sql/resource-manager] Adding VA support for manged instance - Update readme.md

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/4057

Build output:

This PR has been merged into https://github.com/Azure/azure-sdk-for-java/pull/2138


Validation error doesn't improve during training

After downloading the datasets from zenodo and trying to train the models (both VDSR and IRUNet), the validation error seems to barely improve.
For IRUNET:
Epoch 00041: val_loss did not improve from 0.53506
410/410 - 23s - loss: 0.5371 - mae: 0.2116 - val_loss: 0.5374 - val_mae: 0.2080 - lr: 5.0000e-04 - 23s/epoch - 55ms/step
Epoch 42/100

Epoch 00042: val_loss did not improve from 0.53506
410/410 - 23s - loss: 0.5386 - mae: 0.2129 - val_loss: 0.5362 - val_mae: 0.2067 - lr: 5.0000e-04 - 23s/epoch - 55ms/step
Epoch 43/100

Epoch 00043: val_loss did not improve from 0.53506
410/410 - 23s - loss: 0.5378 - mae: 0.2121 - val_loss: 0.5390 - val_mae: 0.2098 - lr: 5.0000e-04 - 23s/epoch - 56ms/step
Epoch 44/100

Epoch 00044: val_loss did not improve from 0.53506
410/410 - 23s - loss: 0.5378 - mae: 0.2123 - val_loss: 0.5390 - val_mae: 0.2092 - lr: 5.0000e-04 - 23s/epoch - 55ms/step
Epoch 45/100

Epoch 00045: val_loss improved from 0.53506 to 0.53492, saving model to output/trained_model/ckpt_loss=0.53492188.hdf5
410/410 - 23s - loss: 0.5379 - mae: 0.2127 - val_loss: 0.5349 - val_mae: 0.2054 - lr: 5.0000e-04 - 23s/epoch - 55ms/step
Epoch 46/100

Epoch 00046: val_loss did not improve from 0.53492
410/410 - 23s - loss: 0.5355 - mae: 0.2097 - val_loss: 0.5383 - val_mae: 0.2086 - lr: 5.0000e-04 - 23s/epoch - 55ms/step
Epoch 47/100

Epoch 00047: val_loss improved from 0.53492 to 0.53479, saving model to output/trained_model/ckpt_loss=0.53478527.hdf5
410/410 - 23s - loss: 0.5375 - mae: 0.2117 - val_loss: 0.5348 - val_mae: 0.2049 - lr: 5.0000e-04 - 23s/epoch - 55ms/step
Epoch 48/100

Epoch 00048: val_loss did not improve from 0.53479
410/410 - 23s - loss: 0.5367 - mae: 0.2111 - val_loss: 0.5358 - val_mae: 0.2060 - lr: 5.0000e-04 - 23s/epoch - 55ms/step
Epoch 49/100

I've tried with VDSR and it the loss stays at infinity.
Maybe not relevant but one thing I noticed in the dataset was that the image size described in journal (194 × 242 pixels) is actually (194 × 240 pixels I recall) in the dataset.
Sidenote: Do you perhaps have the trained model available somewhere?

When training the models, make sure that you are using the appropriate tensorflow version (2.4.1). The optimization of the weights and biases for IRUNet is "smoother" compared to VDSR, which might explain why the loss of VDSR stays at infinity (see loss curves shown in Fig. 3(a) in the supplementary information of the paper). If you cannot use tensorflow 2.4.1 then it might also help to reduce the learning rate, and/or changing from MAE+MS-SSIM loss to the simpler MAE+SSIM loss.
The trained model weights have now been uploaded to Zenodo (using images of size 192x240 pixels, therefore minor image pre-processing is required when using the Zenodo datasets).

Could you comment on why the network would fail to train on a newer tensorflow version? I am using 2.11.
But I will try the suggested approaches.

It seems the optimizer has changed in newer versions. Using tf.keras.optimizers.legacy.Adam allows the training to work


Suggestion to revampt API endpoint table (hub-docs/api.md)

Discussed multiple times. Last time in https://github.com/huggingface/huggingface_hub/issues/1682#issuecomment-1728161950. I'll first revamp the table and in a later PR add the Collection API endpoints.
Let's agree on the layout first. What I did here is to delete the table and have 1 endpoint = 1 section in the page. That should create a "nice" table of content on the right.
Any opinion or feedback? cc @julien-c @osanseviero @Pierrci
(Note: I -almost- didn't change the content but some things should be clarified. Payloads often don't include the headers so either add them everywhere or have a section dedicated to it. Also maybe at some point have different section to group APIs together (e.g. the collection API in one section). Anyway, that's off-topic for now.).
WDYT?

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.

i do think https://moon-ci-docs.huggingface.co/docs/hub/pr_962/en/api is much better already!
@gary149 WDYT?

Not 100% sure, but would it work to have a h2 with section titles (models, datasets, spaces, repos, user, others) and then the specific endpoints as h3?

Not 100% sure, but would it work to have a h2 with section titles (models, datasets, spaces, repos, user, others) and then the specific endpoints as h3?

Yes, I would personally be in favor of this. Haven't touched it yet as I wanted to have general feedback on the layout first before spending more time on it. I can take care of the h2/h3 section titles when adding the Collections API (https://github.com/huggingface/hub-docs/issues/967)

very cool contrib, @Wauplin <3
let's aim to grow the usage & developer experience of the Hub API in the coming months 🦾

Much clearer indeed, thanks @Wauplin!


Using Remix with vanilla.js

What version of Remix are you using?
1.11
Are all your remix dependencies & dev-dependencies using the same version?

[X] Yes

Steps to Reproduce

Add a header
Add a banner using vanillajs
Place the banner on top of header

Expected Behavior

Banner should be placed without rerendering.

Actual Behavior
I want to add a banner on the top of my screen and I want to do that on the client-side. I also want it to load immediately since I don't want CLS on my site. Vanilla.js script can place it immediately, much faster than useEffect but after the render the banner disappears. How can I use my vanilla.js without being affected from React or Remix?

React won't touch elements using dangerouslySetInnerHTML so you can put that on the banner and populate into there: https://stackblitz.com/edit/remix-run-remix-entcb7?file=app%2Froot.tsx,app%2Fentry.client.tsx
For future reference, please only file issues for bugs found in Remix (with minimal reproductions demonstrating the bug).  Questions like these can be asked in the Remix Discord or files as Github Discussions with the Q&A label.  Thank you!

Actually it touches. I used dangerouslySetInnerHTML but after changing an element in the dom it causes to rerender. Is there a best practice to load things like banner that create CLS?

Render them on the server 😉

The system uses cloudflare as cache. So this banner should be rendered on the client as fast as possible. Normally if you use vanilla.js without react it can load immidately. I am asking that is there an equivalent thing for that in React or Remix?

Can you provide a reproduction of what you mean by "rerender"?  The code in the stackblitz renders immediately upon entry-client loading,  before React does any hydration, and never re-renders the banner (as shown by the updating of count and navigating back and forth between pages).
If you want it to run even earlier, then take it out of entry-client and put it directly in a <script> tag in your root and then it will run while the document parses (but I generally try to avoid mutating the DOM during parsing):
<body>
  <div
    id="client-content"
    dangerouslySetInnerHTML={{ __html: "" }}
    suppressHydrationWarning
  />
  <script
    dangerouslySetInnerHTML={{
      __html: [
        "let banner = document.createElement('p');",
        "banner.textContent = 'This is a client side banner';",
        "document.getElementById('client-content').appendChild(banner);",
      ].join("\n"),
    }}
  ></script>

Also, you keep referring to "vanilla.js" which is very confusing to me 😂 .  Are you being cheeky and referring to the gag site http://vanilla-js.com?  Or are you just referring to javascript that's built into the browser?

I managed to do that. By using dangerouslySetInnerHTML but now just for the banner but the neighbour elements like header and breadcrumb, you can show a banner on top without server-side rendering it in case it is a thing that you should not render on server side.


Make the User model notifiable

Isn't this something that should be handled by the RainLab.Notify plugin?

@LukeTowers Since the Notifiable trait is supported by the default App\User model in Laravel, I think RainLab User should support it as well. Why should we remove a functionality provided by Laravel and then add it back by a plugin?

Because the Authentication/User system in October is different than the one used by Laravel. October's User model does not implement Laravel's App\User model. @meysammahfouzi

@LukeTowers Yes I know they are different. But conceptually, they should be the same, don't they? I think if we ever need to make a model notifiable, the user model would be the first one that may need notification, that's why App\User supports it by default because so many people would probably need it by default.

They should ideally, but Laravel keeps switching their authentication implementation around and October hasn't kept up. There's a lot of work to be done to make them line up perfectly right now. The RainLab.Notify plugin is intended as an implementation of the Laravel notification system.
What happens when you add this line of code? Does everything work exactly as anticipated? What code do you use to trigger the behaviour?

Yes, after adding that everything works as expected. I used the following to notify the user, and it worked:
$user->notify(new SomeNotification());
The following worked as well:
Notification::send($user, new SomeNotification());
Another solution is the inherit from User model and add the Notifiable trait to it:
use Illuminate\Notifications\Notifiable;
use RainLab\User\Models\User as FrontUser;

class NotifiableUser extends FrontUser
{
    use Notifiable;
}

Then:
NotifiableUser::find($userId)->notify(new SomeNotification());
Although the above works, I don't like it much. Another option as you suggested is to wrap the Notifiable trait in a behavior and then dynamically add that behavior the the RainLab.User model. Someone tried to do this, but it does not seem to work:
https://github.com/CptMeatball/notifiable-user
User::extend(function($model) {
     $model->implement[] = 'Meysam.Notification.Behaviors.Notifiable';
});

I used that above code and got this error when calling Notification::send($user, ...):

Call to undefined method Meysam\Notification\Behaviors\Notifiable::morphMany()

@meysammahfouzi that's because the trait expects to be attached directly to a model, not to a behavior that's attached to a model. See https://github.com/CptMeatball/notifiable-user/pull/1 for my attempt to make it work; which may not work if the scope of the method in question isn't public. If it works well and we can test it thoroughly, perhaps we could add the __call() magic to the October\Rain\Database\ModelBehavior class so that it's more intuitive in the future.

@LukeTowers Thanks for the attempt. I tested it and got this error when calling Notification::send:

Call to a member function orderBy() on null

Any ideas?

@meysammahfouzi forgot a return statement; see https://github.com/LukeTowers/notifiable-user/commit/40ac9c9df5c25bb39d04d5013103b4706bb3acb1

@LukeTowers  Great! It works now 👍

Excellent @meysammahfouzi! What do you think about including that __call()logic in the base ModelBehavior class?

@LukeTowers That would definitely make wrapping traits in behaviors easier. I'm not sure what unexpected side effects adding it might have though...

Exactly; which is why I'm leery about just going ahead and doing it though; perhaps I'll talk to @daftspunk about it

Closing as it has been over a month since any activity on this occurred and we are trying to figure out what issues are still relevant. If this is still something that you would like to see through to fruition please respond and we can get the ball rolling.


operator/ingress: introduce tlsSecurityProfile field

Support tlsSecurityProfile configuration on ingresscontroller.
Part of the TLS Config for Externally Facing Services enhancement.
@openshift/sig-network-edge @deads2k @enj

I still prefer ingress.config/cluster for default cluster ingress TLS config, but we need something.
/lgtm


Use shorter name

kube-registry.kube-system.svc.cluster.local:31000 is a bit much to type.

@amouat kube-registry.kube-system is sufficient.

Yeah. It should probably be kube-public though.


Isomalloc fails with large memory footprints when using the GNI mempool

Original issue: https://charm.cs.illinois.edu/redmine/issues/1922

Isomalloc has not been stress tested for its efficiency for large memory footprint applications.
What is the memory overhead of using Isomalloc and its mempool implementation?
How close can we get to the memory limit of a node with and without Isomalloc?
I've seen XPACC's PlasComCM crash with out of memory errors when using Isomalloc before, but had no real way to debug this easily or to say how much extra memory Isomalloc was using.

Original date: 2018-05-22 21:03:37

From Yidong Xia and his postdoc at Idaho National Lab, who are currently running MiniMD on AMPI:
When I run miniMD_ampi for small system (in.lj.miniMD), there is not any problem. However, when I increased the system size from 36*36*36 to 360*360*360 (natoms ~ 130M), miniMD_ampi gave me the following error message:

$ ./obj_ampi/charmrun +p8 ./miniMD_ampi +vp8
Running command: ./miniMD_ampi +p8 +vp8
Charm++: standalone mode (not using charmrun)
Charm++> Running in Multicore mode:  8 threads
Warning> Using Isomalloc in SMP mode, you may need to run with '+isomalloc_sync'.
Converse/Charm++ Commit ID: v6.8.2-682-ga8b455cfe
CharmLB> Load balancer assumes all CPUs are same.
Charm++> Running on 1 unique compute nodes (24-way SMP).
Charm++> cpu topology info is gathered in 0.000 seconds.
1. Create System:
------------- Processor 4 Exiting: Called CmiAbort ------------
Reason: Mempool-requested slot is more than what mempool can provide as    one chunk, increase cutOffNum and cutoffPoints in mempool
Charm++ fatal error:
Mempool-requested slot is more than what mempool can provide as    one chunk, increase cutOffNum and cutoffPoints in mempool
Abort trap: 6
-----------------------------------------------------------------

miniMD without ampi indeed works for the large system (360*360*360).

Note that this is without migrating anything, just from having Isomalloc turned on. We need to find out if it's one really large allocation, a bunch of small ones, or something inbetween. Is Isomalloc internally fragmented and wasting memory? We need to develop better debug modes for Isomalloc too...
The version of MiniMD they are using is here: https://drive.google.com/file/d/1WZECeU3nH2j5o74UWA-pbnbmjC1wCsTg/view?usp=sharing

Original date: 2018-05-24 19:36:37

The problem here appears to be that the application tried to allocate a buffer of size >= 256 MB, which is the max size that the mempool supports. The mempool should allow be able to handle larger allocations for generality, but we probably don't want to actually pool such large allocations at all (related to issue #1921).

Original date: 2018-05-30 19:14:01

Related issue to make Isomalloc/mempool not use the pool for large allocations: https://charm.cs.illinois.edu/redmine/issues/1921


why do $state.go shallow-copy, while uiSref deep-copy

issue #2010 tells that deep copy of uiSref is implemented on purpose. (and b5f7b59 also does)
This leaves me this further thought
I regard ui-sref="..." as ng-click=$state.go(...) (This is my premise)
If deep copy is intended for uiSref, why not for $state.go ?
Also I cannot get the point of that deep copy is better than shallow copy for uiSref.
(If preventing object mutation is the goal, why not leave it to us to deep copy explicitly?)
I have already read b5f7b59's message, but I couldn't understand.
plus, suggest reading my second-to-last comment at #2010
(I'm sorry if this issue is complete repetition of issue #2010. But I want to make sure)

+1 I think the behaviour should be consistent. I created a small Plunker demonstrating the difference: http://plnkr.co/edit/YsEPOtDX2j2zOzJydP2N

I also noticed that it also depends on from where you access the $stateParams object. For example if you access it from a $modal's controller it always contains deep copies even if the state was reached using $state.go.

https://gist.github.com/christopherthielen/b3fc0304b737a4bf8ec9

@eddiemonge Can you please explain why is there the inconsistency? I don't think this is something that can/should be answered on StackOverflow.

If deep copy is intended for uiSref, why not for $state.go?

Is there some specific problem this is causing you?


Create configuration structure for masking

To date the options for masking of images (when cleaning) have been pretty minimal. Recently having added beam-wise clean mask construction with different paths for smoothing, thresholds, flood fills etc in #74 it might be worth considering an option structure to better represent this stage.
It might also make it more straight forward when trying to change the parameters of these operations throughout the imaging process.

Completed this in #78


Translation files cannot exceed 65536 bytes

Observed behavior
With a translation file from 65536 bytes, I don't observe any error on application start-up.
But with an higher size, the application triggers 2 kind of errors:
SyntaxError: Unexpected token (1:60927) while parsing /datatools-build/i18n/french.yml while parsing file: /datatools-build/i18n/french.yml
    at DestroyableTransform.end [as _flush] (/datatools-build/node_modules/insert-module-globals/index.js:114:21)
    at DestroyableTransform.prefinish (/datatools-build/node_modules/readable-stream/lib/_stream_transform.js:138:10)
    at DestroyableTransform.emit (events.js:400:28)
    at prefinish (/datatools-build/node_modules/readable-stream/lib/_stream_writable.js:619:14)
    at finishMaybe (/datatools-build/node_modules/readable-stream/lib/_stream_writable.js:627:5)
    at endWritable (/datatools-build/node_modules/readable-stream/lib/_stream_writable.js:638:3)
    at DestroyableTransform.Writable.end (/datatools-build/node_modules/readable-stream/lib/_stream_writable.js:594:41)
    at DuplexWrapper.onend (/datatools-build/node_modules/readable-stream/lib/_stream_readable.js:577:10)
    at Object.onceWrapper (events.js:519:28)
    at DuplexWrapper.emit (events.js:412:35) {
  type: 'syntax',
  filename: '/datatools-build/i18n/french.yml',
  stream: [Labeled]
}

Or after another certain size (I didn't ran the test):
[ParseMore [Error]: Malformed inline YAML string ('Ceci remplacera toutes les données actives de l éditeur GTFS po).] {
  parsedLine: 1564,
  snippet: "confirmLoad: 'Ceci remplacera toutes les données actives de l éditeur GTFS po"
}

There is no error on this line, expected its size if I refer to this. But the English version is already about 261 characters long, where our is 329.
Expected behavior
The size for a translation file shouldn't be an issue.
The French language requires more characters to write the same thing as in English.
Also, with feature addition over time (and the need to translate more strings) will raise the errors.
Steps to reproduce the problem
Generate a translation file with a size higher than 65536 bytes.
Any special notes on configuration used
n/a
Version of datatools-ui and datatools-server if applicable (exact commit hash or branch name)
datatools-ui: f256f0f5b9c6c10292bc3f43a4bcd26c71fef9b6
datatools-server: 8eda62515dcb1dc7eea728e07ae77f30ce60519e

This is a mastarm bug. It's trying to load the entire translation file into a buffer with an undefined size. If the file doesn't fit into the buffer, things go south. Sometimes you get lucky and your OS allocates a buffer large enough. Either way this is not a good solution and we should prioritize moving away from mastarm. If you'd like to try your luck, here is the bug: https://github.com/ibi-group/datatools-ui/issues/865


Add One-Shot Test Batch Strategy

Allow tests from distinct test-suites to be executed in one execution via the configuration element:
<TestBatchStrategy>One</TestBatchStrategy>

Closes #174

@netspiri do we have to extend docu?

Documentation updated.


Targeting all for bootstrap_os and preinstall is presumptive

In our environment we provision nodes that are not part of the cluster via ansible and one of those nodes (a bastion host) needs to be in our inventory.  The presumption that all nodes need bootstrap_os and kubernetes/preinstall causes Kargo to make changes on nodes that it should not.
I propose targeting k8s-cluster for these roles instead of all.

Good point! Although there is a use case for a separate etcd cluster supported, so the etcd group members are not included into the k8s-cluster (normally, the etcd group members fully intersect with the kube-node group, which is the member of the k8s-cluster). And bootstrap-os and preinstall expected to include those as well.

Could we resolve that by targeting k8s-cluster:etcd for those steps?

Or otherwise, we could note in docs that users with customized node groups could extend the default inventory like - hosts: all:!network-storage:!foo:!bar

That method would require users to maintain their own fork of the project just to provide that override, increasing the difficulty of upstreaming changes as well as pulling updates.

Didn't realize there was a CLA for this repository, waiting on legal approval before submitting.

Sorry, intended to close the PR and closed the issue instead.


Can't get the correct view of entity blocks such as chest with AMD Graphic.

Describe the Bug
I use AMD 780M and flywheel cannot work corrctly when the instancing mode is on.
Reproduction Steps

...
Expected Result
I hope AMD Graphic will be supported completely
Screenshots and Videos
No response
Crash Report or Log
No response
Operating System
Windows11
What is your GPU?
AMD 780M
Mod Version
0.6.8.a
Minecraft Version
1.19.2
Loader Version
Forge40.2.17
Other Mods
Only Create mod
Additional Context
No response

Can confirm same issue with a 7900XTX

Can confirm also have this issue sometimes on my RX 7900XT

For anyone still having problem with that, here is my workaround:

Go to .minecraft/config folder
Open flywheel.json file
Change the backend from INSTANCING to BATCHING,
Save file.

It fixes the problem with entity rendering, but this may slightly reduce perfomance, not sure.

Duplicate of https://github.com/Engine-Room/Flywheel/issues/226


Abnormal Security Sentinel Integration

Proposed Changes
The Abnormal Security Sentinel integration polls the Abnormal Security SOAR API for recent threats and ATO cases and publishes them to a customer's Sentinel via the Data Collector API .
TODOs:

[x] add logo
[x] how can customers find the IP address of azure function?
[x] how to put secrets & keys in environment variables?

@tyng94 Please provide sample data.

added sample data

could anyone share insights as to what is causing the KqlValidations check to fail? I can't seem to understand the error message

I have fixed this issue. Thanks!

after deployement, unable to see function [PFB screenshot for reference]. Can you please fix? Thanks!

after deployement, unable to see function [PFB screenshot for reference]. Can you please fix? Thanks!

@tyng94 , Can you please check and fix. Thanks!

@tyng94 , Please merge your branch with master to pass KqlValidation. Thanks!

after deployement, unable to see function [PFB screenshot for reference]. Can you please fix? Thanks!

@tyng94 , Can you please check and fix. Thanks!

Hey @v-maudan just got back from PTO looking at this today. is there a documentation to reproduce the steps to test the deployment?


Can't create in Southeast Asia region

Subscription for DNS resolver was not found. dnsResolverResourceId
when i create DNS resolver in West Europe, it works well.

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

ID: 67376353-3eff-47d3-3e52-13600075ebd4
Version Independent ID: 88cd7c90-2a27-a389-a751-99b5dc37120e
Content: Quickstart - Create an Azure private DNS resolver using the Azure portal
Content Source: articles/dns/dns-private-resolver-get-started-portal.md
Service: dns
GitHub Login: @greg-lindsay
Microsoft Alias: greglin

@hadr10 , thank you for your feedback. We'll review this and get back to you shortly!

@hadr10 , thank you for the update. Glad to hear that the issue is now resolved.


create variable can't use the data source as 'MODEL_SCORE'

in the boto3 document, the dataSource can be 'MODEL_SCORE'
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/frauddetector.html#FraudDetector.Client.create_variable
But, your notebook will be failed with the following message:
ValidationException: An error occurred (ValidationException) when calling the CreateVariable operation: 1 validation error detected: Value 'MODEL_SCORE' at 'source' failed to satisfy constraint: Member must satisfy enum value set: [EXTERNAL_MODEL_SCORE, EVENT]
boto3 version is 1.16.10

This part should be marked in your end-to-end notebook. When you create model training job, the model score variable will be created by service automatically.
# -- create a model score feature
model_feature = "{0}_insightscore".format(MODEL_NAME)
# variable_list.append( {'name' : model_feature})
try:
resp = client.get_variables(name=model_feature)
except:
print("Creating variable: {0}".format(model_feature))
resp = client.create_variable(
name = model_feature,
dataType = 'FLOAT',
dataSource ='MODEL_SCORE',
defaultValue = '0.0',
description = model_feature,
variableType = 'NUMERIC' )

Sorry for my late reply...
Good callout, you are right that the model score variable will be automatically created by the service, so I commented that part out in the updated end-to-end notebook


Add styling to Highlights page

s/overview/highlights/

I am going to merge this into master so @agrabeli can edit the highlights.


Add new tax function: monotone cubic spline regression

This issue is relevant to three other open issues (#493, #574, #699). We are proposing to add a new tax function estimation method, which is a monotonically nondecreasing cubic spline regression. This approach will allow for smooth transitions at kink points (similar to the 0% tax thresholds described in Issue #493) and for points of inflection caused by increased taxes at the high end of the income distribution (see Biden campaign tax proposal analysis here).
I am posting my work on this in this Google Colab notebook until I officially open a PR.
cc: @jdebacker

Here is a picture of the nonmonotonic cubic spline regression (knot points at $50k, $100k, $500k, and $1m). Code is in the Colab Notebook.

This issue will be resolved and closed when PR #819 is merged.


Can I use this repo for WinForm project?

Hi,
I found your repo, it looks nice. But many of my projects are using WinForms, I need a lot of OpenCvSharp code and some SQL Server database code.  But I also need OCR, I think Windows 10 has built-in OCR support, but not for WinForms project, so I wounder if I can use your repo in my WinForms project.
If yes, then give me a general instructions on how to do this.
Thanks,

I doubt it, at least not directly (unless it's Maui). Can you access Windows.Media.OcrEngine? If so, you might be able to just do the same thing I'm doing for my windows implementation.


Add my first file.My first branch

I have created a branch, created a file and made a commit.

Done


Turn the ClaimToken in a K8s Secret

Great chart/tool, thanks for making this!
I use a GitOps approach for my cluster deployments, and didn't want to commit the claimToken in plain text to a git repo. So I decided to break it out into a secret!
This PR will allow the end user to specify either the name of an existing secret or still pass the plain text version and the secret will be made for them.
Feel free to make any suggestions and I can make changes or you can make any necessary changes yourself.

@mellena1 this is a good PR, and it's good to have more options.
As an aside, if you are using gitops (I am too), take a look at the vault-secrets-operator which will persist secrets from a vault instance.
I use this for the plex claim token in my setup, here:

flux (gitops) helm values from secrets definition
VaultSecret definition

Hmm interesting. I'll have to check it out. I've been using the sealed-secrets project for a while now. I'll have to see if it's worth switching over.

The claim is only good for 4 minutes.  Why are you saving it anyway?  I'm just curious, but it seems like this should be passed on the command line or in the call or whatever.


I forgot to set the token

Description
The extension does not add a Releases tab even when it says it should and hides the "Releases" button on the sidebar, making it annoying to try get to the releases page.

When extension is disabled:

How to replicate the issue + URL
https://github.com/refined-github/refined-github/tree/24.8.3
Extension version
24.7.30
Browser(s) used
Chrome

The bug report page is clear. You did not set the token.


cclient: Use flex_hash_to_tryte to transfer flex to trytes

There's a flex_hash_to_trytes can be used in transfering flex_hash to trytes.
Test Plan:
Pass cclient/serialization test.

Hey @jkrvivian - thanks for the PR! Looks like a very useful change :)

Sure!

Hi @jkrvivian , thanks for the PR ! Could you fix the coding style error ?

@jkrvivian thanks for yur PR, but flex_hash is deprecated in #473 and it will be removed in a cleanup on cclient.


Using the -t switch alone result in the script trying to upload nothing

Description
One could assume the -t switch can be used to set and save the token and use it that way, which bypass the failsafe about the "no argument given" :
https://github.com/BobbyWibowo/uguush/blob/18da63b36380c4827d3224188d8e1a5817a009b0/uguush#L344
The localFile variable isn't being checked and is assumed to be initialized.
How to reproduce
uguush -t <snip>
Try #1... [OK]
File has been uploaded:
rm:  cannot remove '': No such file or directory

Whoops, sorry for the late respond to this issue. Seen it while I was outside from email notification back then, and ended up forgetting about it ever since, lmao.
Should be fixed in 6f6ca7076572fc9e9841321ee463b81ffb8e602c.


Check boxes control is not saved as empty array if no boxes were checked (master)

Undo merge #1190, there was no bug there
The issue #1189 however stands valid: hidden_fields? seems poorly named. Maybe rename it hidden_fields_for_every? to oppose hidden_field_for_all

Oh, this is a fix for #1219

Thanks! It makes total sense.
That naming is terrible and has to be fixed. 4.0 would be a good time to do it.
Would you care to take a stab in it and try to improve it a bit?
Btw, the tests fail.

whoops. forgot to add expect() around output buffer

renamed the method
tests are passing now

Great. I think now I finally understood it :)