text:
[silicon_creator] Harden epmp_state_check return value

Use a counter rather than a bool to track whether a mismatch has been detected.

Disassembly:

0000a8cc :
epmp_state_check():
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:30
    CSR_READ(reg, &csr);      \
    checks += csr == (value); \
  } while (false)
// Check address registers.
CHECK_CSR(CSR_REG_PMPADDR0, s->pmpaddr[0]);
a8cc:       3b0025f3                csrr    a1,pmpaddr0
a8d0:       4910                    lw      a2,16(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:31
CHECK_CSR(CSR_REG_PMPADDR1, s->pmpaddr[1]);
a8d2:       3b1026f3                csrr    a3,pmpaddr1
a8d6:       4958                    lw      a4,20(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:30
CHECK_CSR(CSR_REG_PMPADDR0, s->pmpaddr[0]);
a8d8:       8db1                    xor     a1,a1,a2
a8da:       0015b593                seqz    a1,a1
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:31
CHECK_CSR(CSR_REG_PMPADDR1, s->pmpaddr[1]);
a8de:       00e6c633                xor     a2,a3,a4
a8e2:       00163613                seqz    a2,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:32
CHECK_CSR(CSR_REG_PMPADDR2, s->pmpaddr[2]);
a8e6:       3b2026f3                csrr    a3,pmpaddr2
a8ea:       4d18                    lw      a4,24(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:31
CHECK_CSR(CSR_REG_PMPADDR1, s->pmpaddr[1]);
a8ec:       95b2                    add     a1,a1,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:33
CHECK_CSR(CSR_REG_PMPADDR3, s->pmpaddr[3]);
a8ee:       3b302673                csrr    a2,pmpaddr3
a8f2:       4d5c                    lw      a5,28(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:32
CHECK_CSR(CSR_REG_PMPADDR2, s->pmpaddr[2]);
a8f4:       8eb9                    xor     a3,a3,a4
a8f6:       0016b693                seqz    a3,a3
a8fa:       95b6                    add     a1,a1,a3
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:33
CHECK_CSR(CSR_REG_PMPADDR3, s->pmpaddr[3]);
a8fc:       8e3d                    xor     a2,a2,a5
a8fe:       00163613                seqz    a2,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:34
CHECK_CSR(CSR_REG_PMPADDR4, s->pmpaddr[4]);
a902:       3b4026f3                csrr    a3,pmpaddr4
a906:       5118                    lw      a4,32(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:33
CHECK_CSR(CSR_REG_PMPADDR3, s->pmpaddr[3]);
a908:       95b2                    add     a1,a1,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:35
CHECK_CSR(CSR_REG_PMPADDR5, s->pmpaddr[5]);
a90a:       3b502673                csrr    a2,pmpaddr5
a90e:       515c                    lw      a5,36(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:34
CHECK_CSR(CSR_REG_PMPADDR4, s->pmpaddr[4]);
a910:       8eb9                    xor     a3,a3,a4
a912:       0016b693                seqz    a3,a3
a916:       95b6                    add     a1,a1,a3
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:35
CHECK_CSR(CSR_REG_PMPADDR5, s->pmpaddr[5]);
a918:       8e3d                    xor     a2,a2,a5
a91a:       00163613                seqz    a2,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:36
CHECK_CSR(CSR_REG_PMPADDR6, s->pmpaddr[6]);
a91e:       3b6026f3                csrr    a3,pmpaddr6
a922:       5518                    lw      a4,40(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:35
CHECK_CSR(CSR_REG_PMPADDR5, s->pmpaddr[5]);
a924:       95b2                    add     a1,a1,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:37
CHECK_CSR(CSR_REG_PMPADDR7, s->pmpaddr[7]);
a926:       3b702673                csrr    a2,pmpaddr7
a92a:       555c                    lw      a5,44(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:36
CHECK_CSR(CSR_REG_PMPADDR6, s->pmpaddr[6]);
a92c:       8eb9                    xor     a3,a3,a4
a92e:       0016b693                seqz    a3,a3
a932:       95b6                    add     a1,a1,a3
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:37
CHECK_CSR(CSR_REG_PMPADDR7, s->pmpaddr[7]);
a934:       8e3d                    xor     a2,a2,a5
a936:       00163613                seqz    a2,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:38
CHECK_CSR(CSR_REG_PMPADDR8, s->pmpaddr[8]);
a93a:       3b8026f3                csrr    a3,pmpaddr8
a93e:       5918                    lw      a4,48(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:37
CHECK_CSR(CSR_REG_PMPADDR7, s->pmpaddr[7]);
a940:       95b2                    add     a1,a1,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:39
CHECK_CSR(CSR_REG_PMPADDR9, s->pmpaddr[9]);
a942:       3b902673                csrr    a2,pmpaddr9
a946:       595c                    lw      a5,52(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:38
CHECK_CSR(CSR_REG_PMPADDR8, s->pmpaddr[8]);
a948:       8eb9                    xor     a3,a3,a4
a94a:       0016b693                seqz    a3,a3
a94e:       95b6                    add     a1,a1,a3
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:39
CHECK_CSR(CSR_REG_PMPADDR9, s->pmpaddr[9]);
a950:       8e3d                    xor     a2,a2,a5
a952:       00163613                seqz    a2,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:40
CHECK_CSR(CSR_REG_PMPADDR10, s->pmpaddr[10]);
a956:       3ba026f3                csrr    a3,pmpaddr10
a95a:       5d18                    lw      a4,56(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:39
CHECK_CSR(CSR_REG_PMPADDR9, s->pmpaddr[9]);
a95c:       95b2                    add     a1,a1,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:41
CHECK_CSR(CSR_REG_PMPADDR11, s->pmpaddr[11]);
a95e:       3bb02673                csrr    a2,pmpaddr11
a962:       5d5c                    lw      a5,60(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:40
CHECK_CSR(CSR_REG_PMPADDR10, s->pmpaddr[10]);
a964:       8eb9                    xor     a3,a3,a4
a966:       0016b693                seqz    a3,a3
a96a:       95b6                    add     a1,a1,a3
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:41
CHECK_CSR(CSR_REG_PMPADDR11, s->pmpaddr[11]);
a96c:       8e3d                    xor     a2,a2,a5
a96e:       00163613                seqz    a2,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:42
CHECK_CSR(CSR_REG_PMPADDR12, s->pmpaddr[12]);
a972:       3bc026f3                csrr    a3,pmpaddr12
a976:       4138                    lw      a4,64(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:41
CHECK_CSR(CSR_REG_PMPADDR11, s->pmpaddr[11]);
a978:       95b2                    add     a1,a1,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:43
CHECK_CSR(CSR_REG_PMPADDR13, s->pmpaddr[13]);
a97a:       3bd02673                csrr    a2,pmpaddr13
a97e:       417c                    lw      a5,68(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:42
CHECK_CSR(CSR_REG_PMPADDR12, s->pmpaddr[12]);
a980:       8eb9                    xor     a3,a3,a4
a982:       0016b693                seqz    a3,a3
a986:       95b6                    add     a1,a1,a3
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:43
CHECK_CSR(CSR_REG_PMPADDR13, s->pmpaddr[13]);
a988:       8e3d                    xor     a2,a2,a5
a98a:       00163613                seqz    a2,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:44
CHECK_CSR(CSR_REG_PMPADDR14, s->pmpaddr[14]);
a98e:       3be026f3                csrr    a3,pmpaddr14
a992:       4538                    lw      a4,72(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:43
CHECK_CSR(CSR_REG_PMPADDR13, s->pmpaddr[13]);
a994:       95b2                    add     a1,a1,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:45
CHECK_CSR(CSR_REG_PMPADDR15, s->pmpaddr[15]);
a996:       3bf02673                csrr    a2,pmpaddr15
a99a:       457c                    lw      a5,76(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:44
CHECK_CSR(CSR_REG_PMPADDR14, s->pmpaddr[14]);
a99c:       8eb9                    xor     a3,a3,a4
a99e:       0016b693                seqz    a3,a3
a9a2:       95b6                    add     a1,a1,a3
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:45
CHECK_CSR(CSR_REG_PMPADDR15, s->pmpaddr[15]);
a9a4:       8e3d                    xor     a2,a2,a5
a9a6:       00163613                seqz    a2,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:48
// Check configuration registers.
CHECK_CSR(CSR_REG_PMPCFG0, s->pmpcfg[0]);
a9aa:       3a0026f3                csrr    a3,pmpcfg0
a9ae:       4118                    lw      a4,0(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:45
CHECK_CSR(CSR_REG_PMPADDR15, s->pmpaddr[15]);
a9b0:       95b2                    add     a1,a1,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:49
CHECK_CSR(CSR_REG_PMPCFG1, s->pmpcfg[1]);
a9b2:       3a102673                csrr    a2,pmpcfg1
a9b6:       415c                    lw      a5,4(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:48
CHECK_CSR(CSR_REG_PMPCFG0, s->pmpcfg[0]);
a9b8:       8eb9                    xor     a3,a3,a4
a9ba:       0016b693                seqz    a3,a3
a9be:       95b6                    add     a1,a1,a3
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:49
CHECK_CSR(CSR_REG_PMPCFG1, s->pmpcfg[1]);
a9c0:       8e3d                    xor     a2,a2,a5
a9c2:       00163613                seqz    a2,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:50
CHECK_CSR(CSR_REG_PMPCFG2, s->pmpcfg[2]);
a9c6:       3a2026f3                csrr    a3,pmpcfg2
a9ca:       4518                    lw      a4,8(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:49
CHECK_CSR(CSR_REG_PMPCFG1, s->pmpcfg[1]);
a9cc:       95b2                    add     a1,a1,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:51
CHECK_CSR(CSR_REG_PMPCFG3, s->pmpcfg[3]);
a9ce:       3a302673                csrr    a2,pmpcfg3
a9d2:       455c                    lw      a5,12(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:50
CHECK_CSR(CSR_REG_PMPCFG2, s->pmpcfg[2]);
a9d4:       8eb9                    xor     a3,a3,a4
a9d6:       0016b693                seqz    a3,a3
a9da:       95b6                    add     a1,a1,a3
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:51
CHECK_CSR(CSR_REG_PMPCFG3, s->pmpcfg[3]);
a9dc:       8e3d                    xor     a2,a2,a5
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:55
// Check Machine Security Configuration (MSECCFG) register.
// High bits are hardcoded to 0.
CHECK_CSR(CSR_REG_MSECCFG, s->mseccfg);
a9de:       747026f3                csrr    a3,0x747
a9e2:       4928                    lw      a0,80(a0)
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:51
CHECK_CSR(CSR_REG_PMPCFG3, s->pmpcfg[3]);
a9e4:       00163613                seqz    a2,a2
a9e8:       95b2                    add     a1,a1,a2
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:56
CHECK_CSR(CSR_REG_MSECCFGH, 0);
a9ea:       75702673                csrr    a2,0x757
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:55
CHECK_CSR(CSR_REG_MSECCFG, s->mseccfg);
a9ee:       8d35                    xor     a0,a0,a3
a9f0:       00153513                seqz    a0,a0
a9f4:       952e                    add     a0,a0,a1
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:56
CHECK_CSR(CSR_REG_MSECCFGH, 0);
a9f6:       00163593                seqz    a1,a2
a9fa:       952e                    add     a0,a0,a1
launder32():
/home/mndy/Development/opentitan/opentitan/sw/device/lib/base/hardened.h:242
a9fc:       862a                    mv      a2,a0
a9fe:       45d9                    li      a1,22
epmp_state_check():
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:63
#undef CHECK_CSR
enum { kTotalChecks = 22 };
// Hamming distance of 3, error = 0x72f, kErrorOk = 0x739.
rom_error_t error = kErrorOk ^ kTotalChecks;
if (launder32(checks) == kTotalChecks) {
aa00:       02b61363                bne     a2,a1,aa26 <epmp_state_check+0x15a>
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:64
HARDENED_CHECK_EQ(checks, kTotalChecks);
aa04:       00b50663                beq     a0,a1,aa10 <epmp_state_check+0x144>
aa08:       0000                    unimp
aa0a:       0000                    unimp
aa0c:       0000                    unimp
aa0e:       0000                    unimp
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:65
error ^= checks;
aa10:       72f54513                xori    a0,a0,1839
aa14:       73900593                li      a1,1849
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:66
HARDENED_CHECK_EQ(error, kErrorOk);
aa18:       00b50663                beq     a0,a1,aa24 <epmp_state_check+0x158>
aa1c:       0000                    unimp
aa1e:       0000                    unimp
aa20:       0000                    unimp
aa22:       0000                    unimp
/home/mndy/Development/opentitan/opentitan/build-out/../sw/device/silicon_creator/lib/epmp.c:70
return error;
}
return kErrorEpmpBadCheck;
}
aa24:       8082                    ret
aa26:       01455537                lui     a0,0x1455
aa2a:       0535                    addi    a0,a0,13
aa2c:       8082                    ret


text:
chore(uart): Move to D3

This commit moves UART to D3 state. CDC has been reviewed at the
top-level and waived

chore? :)

source: gharchive/pull-request

authors: eunchan tjaychen

repo: lowRISC/opentitan

license_type: permissive

license_source: github-api


text:
[sw/silicon_creator] Move chip-level constants to chip.h

This PR

moves chip-level constants from manifest.h and manifest_size.h to sw/device/silicon_creator/lib/base/chip.h,
removes manifest_size.h, and
renames these constants.

Fixes #9045

@cfrantz, I'll merge this now but I'll remind you to take a look later. I can address your comments in a follow-up PR.


text:
[fpga] Increase CW310 base clock frequency to 24 MHz

Set clock frequencies for CW310 to the following
clk_main:    24 MHz (drives SYS and IO clocks on CW310)
clk_io_div4: 6 MHz

This should enable performing fast I2C mode at closer to 400 kHz, possibly enabling faster than 400 kHz I2C (fast-plus mode).

Since we are entering a phase where there might be longer-running tests for silicon validation, I figured I'd take up some of the slack on the FPGA build. The increase in frequencies does not materially affect build times, so CI should not be impacted.
It also doesn't materially decrease test times in CI, since most of the delays there are in software build, bitstream programming, and UART output, haha.

What I had forgotten is that this will also impact SCA measurements. So for SCA measurements we should generate a custom bitstream with a 10 MHz main clock again in the future. But since we were anyway creating custom bitstreams for KMAC already (to switch the masking on), I think this is not a big issue. @wettermo , @vrozic , @bilgiday , @johannheyszl

authors: a-will vogelpi


text:
[entropy_src/rtl] split out module enable, add extra regwen gate

For better solution of sequencing control, the module enable has been split out into its own register, with a separate write enable gage (REGWEN).
Fixes #9637.
Signed-off-by: Mark Branstad mark.branstad@wdc.com

This TODO is related to issue #9853. Thought it would be best to leave this TODO placeholder and implement the issue fix in a separate PR.

Hi @matutem: Could we please get your approval on your requested changes?

Also, it looks like this needs a rebase onto one of the labeling edits.

LGTM, but please consider @matute's comment on commit messages: lines should wrap at 72 chars.

x

LGTM, but please consider @matute's comment on commit messages: lines should wrap at 72 chars.

Fixing now.  However since I missed the review on the Contributions guide, I'm curious why 72 if the RTL is 100?
Can we open an issue to have this checked in CI?

Does the updated commit message look better?

LGTM, but please consider @matute's comment on commit messages: lines should wrap at 72 chars.

Fixing now. However since I missed the review on the Contributions guide, I'm curious why 72 if the RTL is 100? Can we open an issue to have this checked in CI?

These are different style guides and for Git we are following common practices.
Yes, please file an issue if you think that would be useful, and tag @GregAC, @rswarbrick and me.

Hi Everyone,
Thanks for your patience on this. With multiple rebases (and a lot of recent activity around this IP) and with multiple hands making edits, this poor commit had been looking fairly ragged.   However it has been completely repolished, and the commit message has been completely rewritten for clarity.   Please take a look.
Hi @matutem: with the new commit re-write I have done my upmost to make sure that the commit matches the detailed guidelines for contributing.   Could you please do me a favor and tell me if I have missed anything? (Thanks in advance!)

Regarding the commit text guidelines, the line length has no relation to the verilog code line length, since they have very different "consumers".

Thanks @matutem.   Also, thanks for pointing out that the commit guidelines changed at some point since we started.   It looks like these guidelines were established some ago, so we are surprised to see that no one else as mentioned this (except in your reviews to recent commits on this subsystem.)   I'll remind everyone on our side to take a look at these if they haven't already.
As far as the differences go, I'm always eager to have automated checks in place to help me polish up my commits and I like tool reuse.  Though having one more emacs hook or whatever is not the end of the world.  Is there some external "best-practices guide for commits" that I can point to when starting other projects?

There are a few such pages, for example https://gist.github.com/robertpainsi/b632364184e70900af4ab688decf6f53 and https://www.freecodecamp.org/news/writing-good-commit-messages-a-practical-guide/.

I had a quick tour through this post-merge - LGTM.

authors: cdgori martin-lueker matutem msfschaffner mwbranstad


text:
Reduce UART baudrate for OpenTitan target

See also lowRISC/OpenTitan#3647.

LGTM. Please fold this change into the second patch in the series of the ot branch ("Add OpenTitan target"), and force-push, instead of merging this PR. This will then update the patch when being vendored in, instead of creating an additional one.

Ah, now I understand. Thanks @imphil !

Closing this PR, the changes have been folded into the second patch on the ot branch and force pushed.

authors: imphil vogelpi

repo: lowRISC/riscv-compliance


text:
🛑 AnyGPT is down

In 788f9f6, AnyGPT (https://getanygpt.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: AnyGPT is back up in fe3a117 after 11 minutes.

source: gharchive/issue

repo: lqhl/upptime

license: MIT


text:
fix clippy::doc_lazy_continuation warnings

Fix for Clippy warnings failing here: https://github.com/lquerel/gcp-bigquery-client/actions/runs/10094537611/job/27912604804?pr=97

Close this PR because I added #![allow(clippy::all)] on top of the imported generated code to avoid fixing Clippy issues in the generated code.

authors: imor lquerel

repo: lquerel/gcp-bigquery-client


text:
Fix: racecondition

As well as further reducing locking pressure.

accident

repo: lrstanley/girc

license: mit

license_source: bigquery


text:
Are you having issues with performance?

I just realized that if I do socat udp->tcp->udp trick like this, my performance goes to hell. Speedtests show less than 300KB/s, vs 3MB/s otherwise. Do you see similar degradation?

To avoid the delays the complexed method, https://github.com/lrvl/tunnel-wireguard-udp2raw might help.

authors: lrvl tarasglek


text:
Downloading PDF file gives you f.txt file 🐛

Describe the bug
Instead of a PDF file you will be offered by Google Chrome a txt file with the name "f"
To Reproduce
Steps to reproduce the behavior:

Go to Artemis POM Lectures
Click on Lecture 1 Attachment with the slides
Try to save file to disk
See error

Expected behavior
A PDF file with the correct name and the .pdf file extension
Environment

 - OS: [Win10 Home]
 - Browser [chrome]
 - Version [73]

Good catch, the browser displays f.txt instead of the correct file name. This also happens in other browsers, e.g. Safari and on macOS

This is due the header Content-Disposition set by the server, that has value inline;filename=f.txt. I think we can safely drop the filename=f.txt, it shouldn't be necessary: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

authors: ibhh krusche rpadovani


text:
Lectures: Add lecture unit attachment file size pre-check

Checklist
General

[x] This is a small issue that I tested locally and was confirmed by another developer on a test server.
[x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
[x] I chose a title conforming to the naming conventions for pull requests.

Client

[x] Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data.
[x] I followed the coding and design guidelines.
[x] Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
[x] I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
[x] I added multiple screenshots/screencasts of my UI changes.
[x] I translated all newly inserted strings into English and German.

Motivation and Context

There was some confusion about uploading lecture unit attachments when the file size was too big.
Currently, you have to wait for the upload to then receive a generic HTTP error 400. This is slightly annoying and overall no good user experience.
Description

Before you try to upload a lecture unit attachment with a size larger than the maximum (20 MB), you get an error message and cannot create the lecture unit.
Steps for Testing

Prerequisites:

1 Instructor
1 Course
A file larger than 20 MB, e.g. 21M.zip
A file smaller than 20 MB, e.g. 19M.zip

Log in to Artemis
Navigate to Course Administration > Your Course > Lectures
Create a lecture on the top right
Go to the Lecture Units
Choose "File", then enter a name
Try to upload a file larger than 20 MB. An error message should appear and the submit button should be disabled.
Verify that uploading a file smaller than 20 MB works.

Review Progress

Performance Review

[x] I confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance

Code Review

[ ] Code Review 1
[ ] Code Review 2

Manual Tests

[ ] Test 1
[ ] Test 2

Test Coverage

Class/File
Line Coverage
Confirmation (assert/expect)

attachment-unit-form.component.ts
88.9%
✅

Screenshots

Codecov Report

Merging #6469 (6f3d29c) into develop (c9707db) will increase coverage by 3.97%.
The diff coverage is 33.33%.

:exclamation: Current head 6f3d29c differs from pull request most recent head 8fc4ad5. Consider uploading reports for the commit 8fc4ad5 to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@              Coverage Diff              @@
##             develop    #6469      +/-   ##
=============================================
+ Coverage      76.48%   80.45%   +3.97%
- Complexity         0    13032   +13032
=============================================
  Files           1248     2323    +1075
  Lines          47096    89245   +42149
  Branches        8797    13190    +4393
=============================================
+ Hits           36020    71802   +35782
- Misses          5684     9615    +3931
- Partials        5392     7828    +2436

Impacted Files
Coverage Δ

...chment-unit-form/attachment-unit-form.component.ts
80.00% <33.33%> (-1.40%)
:arrow_down:

... and 1075 files with indirect coverage changes

Flag
Coverage Δ

client
76.48% <33.33%> (-0.01%)
:arrow_down:

server
84.89% <ø> (?)

Continue to review full report in Codecov by Sentry.

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


text:
inference fail for tflite model

I am trying to get inference for tflite model but getting the following error. Any idea?
2021-05-03 19:25:53.843226: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
2021-05-03 19:25:53.843252: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
Traceback (most recent call last):
  File "run.py", line 36, in <module>
    kp_detector, process_kp_driving, generator, _interpreter_obj_list = load_funcs[parser.target](parser.model, prediction_only=parser.datamode=='file')
  File "/home/faraz/Desktop/Esper_Solutions/PROJECTS/deepfake/code/first-order-model-tf/utils.py", line 88, in load_models_tflite
    kp_detector_base = kp_detector_interpreter.get_signature_runner()
AttributeError: 'Interpreter' object has no attribute 'get_signature_runner'

Hello. As mentioned in the FAQ, running inference on python TF Lite interpreter requires  the signature runner functionality, which is available starting TensorFlow 2.5. You'll have to install the release candidate by specifying the version manually (pip install tensorflow==2.5.0rc2).
Alternatively, if you really need to stick to 2.4.1, you can use this tag, which points to the state of the repository at which everything was compatible with 2.4.1, including inference on TF Lite.

@lshug  Ive installed required packages and specially tensorflow==2.5rc2 but still getting tensorflow error
ValueError: SignatureDef method_name is None and model has 0 Signatures. None is only allowed when the model has 1 SignatureDef
and i tried your 2.4.1 version suggestion, but still getting the same error.
AttributeError: 'Interpreter' object has no attribute 'get_signature_runner'
I ve made python env and installed all the module specified in requirements.txt file.  I am using Python3.6

That's weird. I'm reopening the issue and will try to replicate the issue in a bit. Meanwhile, can you try with 2.5rc0?

Concerning "model has 0 Signatures" error, tf lite files generated by build.py should by default have 1 signature, named ""serving_default" (inherited from the SavedModel's default signature). Can you open the generated kp_detector tflite (e.g. tflite/vox/kp_detector.tflite) in Netron and tell me the name of the input tensor? If the signature is "serving_default" as it's supposed to be, then the input tensor name will be serving_default_img:0.
Concerning "no attribute 'get_signature_runner'", that's definitely not supposed to be happening in the linked tag, as tf lite inference method in utils.py for the 2.4.1 tag does not call get_signature_runner method. You're probably in the main branch. Please make sure to fetch the tag (git fetch --all --tags) and checkout (git checkout tags/tf2.4.1).

Closing issue due to inactivity. If you do manage to find out what was going on here though, please inform me.

authors: farazBhatti lshug

repo: lshug/first-order-model-tf


text:
🛑 lsy223622.com is down

In 3feed90, lsy223622.com (https://lsy223622.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: lsy223622.com is back up in 05317ed after 43 minutes.


text:
🛑 lsy223622.com is down

In 8ffe925, lsy223622.com (http://lsy223622.com) was down:

HTTP code: 0
Response time: 0 ms

Resolved: lsy223622.com is back up in 8aa6884.


text:
🛑 Mirror-爬 is down

In a670379, Mirror-爬 (https://ncov.zhouym.tech/) was down:

HTTP code: 404
Response time: 1001 ms

Resolved: Mirror-鱼露 is back up in 4a09c6f.


text:
🛑 Mirror-爬 is down

In 86e14e1, Mirror-爬 (https://ncov.zhouym.tech/) was down:

HTTP code: 404
Response time: 778 ms

Resolved: Mirror-鱼露 is back up in dbeb95b.


text:
🛑 Mirror-木生 is down

In 435a645, Mirror-木生 (https://t.lsy223622.com/ncov-xidian-times) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Mirror-爬 is back up in 9702f7b.


text:
🛑 Mirror-没有女朋友跨年的群傻逼 is down

In 07a1f0c, Mirror-没有女朋友跨年的群傻逼 (https://x.ksfu.top/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Mirror-木生 is back up in 7c5458f.


text:
🛑 Mirror-没有女朋友跨年的群傻逼 is down

In 6981f5d, Mirror-没有女朋友跨年的群傻逼 (https://x.ksfu.top/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Mirror-木生 is back up in f9f4106.


text:
🛑 Mirror-爬 is down

In 4662974, Mirror-爬 (https://ncov.zhouym.tech/) was down:

HTTP code: 404
Response time: 1017 ms

Resolved: Mirror-鱼露 is back up in fe4b3fc.


text:
🛑 Mirror-爬 is down

In ea3c92a, Mirror-爬 (https://ncov.zhouym.tech/) was down:

HTTP code: 404
Response time: 1030 ms

Resolved: Mirror-鱼露 is back up in aaf0449.


text:
🛑 Mirror-爬 is down

In ff14653, Mirror-爬 (https://ncov.zhouym.tech/) was down:

HTTP code: 404
Response time: 745 ms

Resolved: Mirror-鱼露 is back up in 9c97ca0.


text:
🛑 Hacker News is down

In f023a2a, Hacker News (https://news.ycombinator.com) was down:

HTTP code: 502
Response time: 227 ms

Resolved: Hacker News is back up in 695d696.

repo: luandevpro/status


text:
Fixes to use with Lua 5.4

This fixes issues when running luacheck with Lua 5.4 and allow installing luacheck with Lua 5.4 on luarocks. However this is a not proper support for Lua 5.4, because luacheck in theory should parse the new Lua 5.4 syntax for <close> and <const> annotations, and consider the new lua 5.4 features when doing its static analysis.
I don't see much reason to lock away people from installing luacheck with Lua 5.4 as it works, so I've also removed the constrain in the dev luarocks file. That file is not even a proper release anyway and removing the constrain allow installing luacheck with lua 5.4 using raw github url on the file.

@edubart thank you! I'll push a patch release to LuaRocks including this!

authors: edubart hishamhm

repo: luarocks/luacheck


text:
🛑 Školský šport is down

In 2ff3f35, Školský šport (https://skolskysport.sk/) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Školský šport is back up in a384730 after 8 minutes.

repo: lubosm/minedusk-uptime


text:
Reference to MediaItem in DAOIndexer

The DAOIndexer seems to expect the MediaItem's name without preceding zeros (e.g. 1, 2, 231) as reference. However, some component that evaluates AVS submissions seems to expect the same name with preceding zeros (e.g. 00001, 00002, 00231).
Hence, it is currently not possible to submit AVS tasks.

I was unable to reproduce the issue, please reopen in case it persists.

authors: lucaro ppanopticon

repo: lucaro/DRES


text:
Simplify code in a few places

Found by running gosimple ./...

Codecov Report

Merging #511 into master will increase coverage by 0.02%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master     #511      +/-   ##
==========================================
+ Coverage   90.86%   90.89%   +0.02%
==========================================
  Files          81       79       -2
  Lines        5440     5421      -19
==========================================
- Hits         4943     4927      -16
+ Misses        318      316       -2
+ Partials      179      178       -1

Impacted Files
Coverage Δ

frames/stop_waiting_frame.go
100% <100%> (ø)
:arrow_up:

handshake/ephermal_cache.go
77.78% <100%> (ø)
:arrow_up:

crypto/cert_compression.go
86.16% <100%> (ø)
:arrow_up:

session.go
87.47% <100%> (+0.06%)
:arrow_up:

handshake/crypto_setup_client.go
89.05% <100%> (ø)
:arrow_up:

frames/ack_frame.go
95.4% <100%> (-0.05%)
:arrow_down:

handshake/crypto_setup_server.go
87.39% <100%> (+0.73%)
:arrow_up:

utils/connection_id.go
66.67% <100%> (ø)
:arrow_up:

crypto/cert_manager.go
96.43% <100%> (ø)
:arrow_up:

streams_map.go
92.94% <100%> (-0.08%)
:arrow_down:

... and 3 more

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 fb5cccf...ce27a72. Read the comment docs.

authors: codecov-io lucas-clemente

repo: lucas-clemente/quic-go


text:
Expected tensor's dynamic type to be Variable, not Tensor

When the network calculate NMS, this error appeared, maybe I should maintain the NMS.cpp and recompile?

I have solve this problem by change lib/nms/src/nms_kernel.cu to below:
#include <torch/extension.h>
#include <ATen/ATen.h>

#include <cuda.h>
#include <cuda_runtime.h>
#include <vector>
#include <iostream>

// Hard-coded maximum. Increase if needed.
#define MAX_COL_BLOCKS 1000
#define STRIDE 4
#define N_OFFSETS 72 // if you use more than 73 offsets you will have to adjust this value
#define N_STRIPS (N_OFFSETS - 1)
#define PROP_SIZE (5 + N_OFFSETS)
#define DATASET_OFFSET 0

#define DIVUP(m,n) (((m)+(n)-1) / (n))
int64_t const threadsPerBlock = sizeof(unsigned long long) * 8;

// The functions below originates from Fast R-CNN
// See https://github.com/rbgirshick/py-faster-rcnn
// Copyright (c) 2015 Microsoft
// Licensed under The MIT License
// Written by Shaoqing Ren

template <typename scalar_t>
// __device__ inline scalar_t devIoU(scalar_t const * const a, scalar_t const * const b) {
__device__ inline bool devIoU(scalar_t const * const a, scalar_t const * const b, const float threshold) {
  const int start_a = (int) (a[2] * N_STRIPS - DATASET_OFFSET + 0.5); // 0.5 rounding trick
  const int start_b = (int) (b[2] * N_STRIPS - DATASET_OFFSET + 0.5);
  const int start = max(start_a, start_b);
  const int end_a = start_a + a[4] - 1 + 0.5 - ((a[4] - 1) < 0); //  - (x<0) trick to adjust for negative numbers (in case length is 0)
  const int end_b = start_b + b[4] - 1 + 0.5 - ((b[4] - 1) < 0);
  const int end = min(min(end_a, end_b), N_OFFSETS - 1);
  // if (end < start) return 1e9;
  if (end < start) return false;
  scalar_t dist = 0;
  for(unsigned char i = 5 + start; i <= 5 + end; ++i) {
    if (a[i] < b[i]) {
      dist += b[i] - a[i];
    } else {
      dist += a[i] - b[i];
    }
  }
  // return (dist / (end - start + 1)) < threshold;
  return dist < (threshold * (end - start + 1));
  // return dist / (end - start + 1);
}
//核函数
template <typename scalar_t>
__global__ void nms_kernel(const int64_t n_boxes, const scalar_t nms_overlap_thresh,
                           const scalar_t *dev_boxes, const int64_t *idx, int64_t *dev_mask) {
  const int64_t row_start = blockIdx.y; //分配的线程块位置x
  const int64_t col_start = blockIdx.x; //被分配的线程块位置y

  if (row_start > col_start) return; //如果y大于x，返回

  const int row_size =
        min(n_boxes - row_start * threadsPerBlock, threadsPerBlock); //纵向线程块大小
  const int col_size =
        min(n_boxes - col_start * threadsPerBlock, threadsPerBlock); //横向线程块大小

  __shared__ scalar_t block_boxes[threadsPerBlock * PROP_SIZE]; //相同线程块的内存可以访问，数组大小为每个线程块内部线程数量与线程块的总和相乘
  if (threadIdx.x < col_size) {
    for (int i = 0; i <  PROP_SIZE; ++i) {
      block_boxes[threadIdx.x * PROP_SIZE + i] = dev_boxes[idx[(threadsPerBlock * col_start + threadIdx.x)] * PROP_SIZE + i];
    }
  //   block_boxes[threadIdx.x * 4 + 0] =
  //       dev_boxes[idx[(threadsPerBlock * col_start + threadIdx.x)] * 4 + 0];
  //   block_boxes[threadIdx.x * 4 + 1] =
  //       dev_boxes[idx[(threadsPerBlock * col_start + threadIdx.x)] * 4 + 1];
  //   block_boxes[threadIdx.x * 4 + 2] =
  //       dev_boxes[idx[(threadsPerBlock * col_start + threadIdx.x)] * 4 + 2];
  //   block_boxes[threadIdx.x * 4 + 3] =
  //       dev_boxes[idx[(threadsPerBlock * col_start + threadIdx.x)] * 4 + 3];
  }
  __syncthreads();

  if (threadIdx.x < row_size) {
    const int cur_box_idx = threadsPerBlock * row_start + threadIdx.x; //当前线程块位置
    const scalar_t *cur_box = dev_boxes + idx[cur_box_idx] * PROP_SIZE;//
    int i = 0;
    unsigned long long t = 0;
    int start = 0;
    if (row_start == col_start) {
      start = threadIdx.x + 1;
    }
    for (i = start; i < col_size; i++) {
      if (devIoU(cur_box, block_boxes + i * PROP_SIZE, nms_overlap_thresh)) {
        t |= 1ULL << i;
      }
    }
    const int col_blocks = DIVUP(n_boxes, threadsPerBlock); //
    dev_mask[cur_box_idx * col_blocks + col_start] = t;
  }
}

__global__ void nms_collect(const int64_t boxes_num, const int64_t col_blocks, int64_t top_k, const int64_t *idx, const int64_t *mask, int64_t *keep, int64_t *parent_object_index, int64_t *num_to_keep) {
  int64_t remv[MAX_COL_BLOCKS];
  int64_t num_to_keep_ = 0;

  for (int i = 0; i < col_blocks; i++) {
      remv[i] = 0;
  }

  for (int i = 0; i < boxes_num; ++i) {
      parent_object_index[i] = 0;
  }

  for (int i = 0; i < boxes_num; i++) {
    int nblock = i / threadsPerBlock;
    int inblock = i % threadsPerBlock;

    if (!(remv[nblock] & (1ULL << inblock))) {
      int64_t idxi = idx[i];
      keep[num_to_keep_] = idxi;
      const int64_t *p = &mask[0] + i * col_blocks;
      for (int j = nblock; j < col_blocks; j++) {
        remv[j] |= p[j];
      }
      for (int j = i; j < boxes_num; j++) {
        int nblockj = j / threadsPerBlock;
        int inblockj = j % threadsPerBlock;
        if (p[nblockj] & (1ULL << inblockj))
            parent_object_index[idx[j]] = num_to_keep_+1;
      }
      parent_object_index[idx[i]] = num_to_keep_+1;

      num_to_keep_++;

      if (num_to_keep_==top_k)
          break;
    }
  }

  // Initialize the rest of the keep array to avoid uninitialized values.
  for (int i = num_to_keep_; i < boxes_num; ++i)
      keep[i] = 0;

  *num_to_keep = min(top_k,num_to_keep_);
}

#define CHECK_CONTIGUOUS(x) AT_ASSERTM(x.is_contiguous(), #x " must be contiguous")

std::vector<at::Tensor> nms_cuda_forward(
        at::Tensor boxes,
        at::Tensor idx,
        float nms_overlap_thresh,
        unsigned long top_k) {

  const auto boxes_num = boxes.size(0);
  TORCH_CHECK(boxes.size(1) == PROP_SIZE, "Wrong number of offsets. Please adjust `PROP_SIZE`"); //检查boxes的数量

  const int col_blocks = DIVUP(boxes_num, threadsPerBlock);  //(boxes_num+threadsperblock-1)/boxes_num

  AT_ASSERTM (col_blocks < MAX_COL_BLOCKS, "The number of column blocks must be less than MAX_COL_BLOCKS. Increase the MAX_COL_BLOCKS constant if needed.");

  auto longOptions = torch::TensorOptions().device(torch::kCUDA).dtype(torch::kLong);
  //auto mask = at::empty({boxes_num * col_blocks}, longOptions); //创建一个boxes_num*col_blocks的数组
  auto mask = torch::empty({boxes_num * col_blocks}, longOptions); //创建一个boxes_num*col_blocks的数组

  dim3 blocks(DIVUP(boxes_num, threadsPerBlock),
              DIVUP(boxes_num, threadsPerBlock));
  dim3 threads(threadsPerBlock);

  CHECK_CONTIGUOUS(boxes);
  CHECK_CONTIGUOUS(idx);
  CHECK_CONTIGUOUS(mask);

  AT_DISPATCH_FLOATING_TYPES(boxes.type(), "nms_cuda_forward", ([&] {
    nms_kernel<<<blocks, threads>>>(boxes_num,
                                    (scalar_t)nms_overlap_thresh,
                                    boxes.data<scalar_t>(),
                                    idx.data<int64_t>(),
                                    mask.data<int64_t>());
  }));

  /*auto keep = at::empty({boxes_num}, longOptions);
  auto parent_object_index = at::empty({boxes_num}, longOptions);
  auto num_to_keep = at::empty({}, longOptions); */
  auto keep = torch::empty({boxes_num}, longOptions);
  auto parent_object_index = torch::empty({boxes_num}, longOptions);
  auto num_to_keep = torch::empty({}, longOptions);

  nms_collect<<<1, 1>>>(boxes_num, col_blocks, top_k,
                        idx.data<int64_t>(),
                        mask.data<int64_t>(),
                        keep.data<int64_t>(),
                        parent_object_index.data<int64_t>(),
                        num_to_keep.data<int64_t>());

  return {keep,num_to_keep,parent_object_index};
}

I also came across this error. And I just changed all the at:: to torch:: in nms.cpp and nms_kernel.cu.

I also came across this error. And I just changed all the at:: to torch:: in nms.cpp and nms_kernel.cu.

I also came across this error. And I just changed all the at:: to torch:: in nms.cpp and nms_kernel.cu. But do you know where the problem is all at?

because pytorch1.2 and pytorch1.6 supported by different cuda, and cuda have changed the namespace after upgrade.

I also came across this error. And I just changed all the at:: to torch:: in nms.cpp and nms_kernel.cu. But do you know where the problem is all at?

because pytorch1.2 and pytorch1.6 supported by different cuda, and cuda have changed the namespace after upgrade.

Yes. As written in the README, PyTorch 1.6 should be used.

Yes. As written in the README, PyTorch 1.6 should be used.

repo: lucastabelini/LaneATT


text:
A load persistent id instruction was encountered, but no persistent_load function was specified.

File "D:/Road/LaneATT/utils/gen_video.py", line 57, in main
predictions = np.array(pickle.load(pred_file,encoding='bytes'))
_pickle.UnpicklingError: A load persistent id instruction was encountered,
but no persistent_load function was specified.
How to generate pkl files

Run the test with the --save_predictions flag.

authors: lucastabelini xiaoyvlongoing


text:
🛑 Nasini is down

In 0409a35, Nasini (https://nasini.com.ar) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Nasini is back up in 1301e81 after 13 minutes.

repo: luciano-buono/upptime


text:
Moon phases

Icon Request

Icon name: moon-new moon-waxing-crescent moon-first-quarter moon-waxing-gibbous moon-full moon-waning-gibbous moon-last-quarter moon-waning-crescent
Use case: displaying the current phase of the moon in applications and sites that usually display it, e.g. calendar, astrology, and weather services.
Screenshots of similar icons: https://static.thenounproject.com/png/11882-200.png

To avoid using a fill, perhaps a hatched, dotted, or lined pattern could be used to provide the shading for the unlit portion of the moon.

A personal first run as an idea: full-moon can be represented with the existing circle. I don't think the size of the gap in the two gibbous icons is considered ok since it creates a very small white space, and rotating the lined pattern for the shadow didn't help much either. Perhaps another approximation of shading could work, or replacing shading with a dotted line pattern for the unlit side.
Another option would be to not have a shadow at all, although this would create ambiguity between waxing and waning. Ultimately, I'd rather the guidelines be followed and the icons not exist within the pack.
moon-new

moon-waxing-crescent

moon-first-quarter

moon-waxing-gibbous

moon-waning-gibbous

moon-last-quarter

moon-waning-crescent

@dsvoid See also eclipse in https://github.com/lucide-icons/lucide/pull/1280#issuecomment-1549433462.

Hey @dsvoid,
Thank you for submitting this icon request. The thing is, we do not currently support fills (please refer to #458), crosshatching and similar patterns mimicking them are sadly not an acceptable alternative, since they do not scale well with either icon size nor stroke width. Nonetheless, I think we would happy to add these as soon as we add support for filled icons, up until then, I'm closing this as not planned, but marking them with a dedicated tag so they can be reopened later on).

I'm also leaving this Figma file here with some initial drafts for future filled versions, once we can finally support these: https://www.figma.com/file/A7K6e8DjdQDZOEHwry3yNl/lucide%2Fmoon-phases?type=design&node-id=0%3A1&mode=design&t=Mq1L0fEUkpPn4Mkt-1

An option could be to not show the part that's in the shadow

An option could be to not show the part that's in the shadow

I did think of that, unfortunately that still would not allow to differentiate between a full moon and a new moon.

I did think of that, unfortunately that still would not allow to differentiate between a full moon and a new moon.

circle-dashed -> moon-crescent -> moon-half -> moon-gibbous -> circle

It's not quite that easy, since a moon not only waxes but also wanes, but I guess in principle that could kinda work, although it's a bit sub-optimal, I don't like the lack of consistency between different stages & new moon, but using dashed parts is a bit funky as well:

but using dashed parts is a bit funky as well

Looks pretty good IMO.
We don't need the waning ones, they are just flipped, and we don't create flipped versions.

Looks pretty good IMO.

As the one who designed them I disagree. 😄

We don't need the waning ones, they are just flipped, and we don't create flipped versions.

Um... sure we do, we have all kinds of "up/down/right/left" variants for a whole lot of icons.

Hello, sorry for commenting but I was also looking into moon icons and where theses added?

Hello, sorry for commenting but I was also looking into moon icons and where theses added?

They weren't and are very unlikely to be. The dashed icons are simply not up to par, and we cannot yet support fills, I'm closing this issue again until we do.

@karsa-mistmere can you post the svgs for the dashed version so people can still use theme by taking them from here?

@karsa-mistmere can you post the svgs for the dashed version so people can still use theme by taking them from here?

I've added them to the Figma file above.

authors: RjManhas danielbayley dsvoid jguddas karsa-mistmere

repo: lucide-icons/lucide

license: ISC


text:
AssertionError: folder "\path\to\audio\files" does not exist

Hi ,I am trying to implement musiclm by following the instructions.
However, I got an error "AssertionError: folder "\path\to\audio\files" does not exist" when I was trying to train the three transformers.

I wonder where I can download those files ?

wherever your files are?
its a place holder?

authors: Finnilda twobob

repo: lucidrains/musiclm-pytorch


text:
Server crashes when command block is used to set permission

Description
We have multiple command blocks at spawn to set prefixes, suffixes, keep inventory true or false, and natural health regen true or false.
Each command block gives a player the permission by targeting them with the @p selector
lp user @p permission set noregen.on true server=neatobuilds
/lp user @p permission set essentials.keepinv false server=neatobuilds
lp user @p meta setsuffix &4
lp user @p meta setprefix &4
Reproduction steps

Start server
click on the button that triggers the command block
the button triggers the first command block /lp user @p permission set essentials.keepinv true server=neatobuilds
then it triggers the second command block say @p turned on Keep Inventory
command goes through but when it sends to luckperms the server goes down

Here is the start and crash log
start and crash log
Here is the luckperms config for the server
config.yml
Expected behavior
Before all the command blocks worked fine until I recently upgraded the server to 1.16.4 and updated luckperms.
We used to use the 'commandhook' plugin but it failed as well then we learned we had the option for LuckPerms to resolve Vanilla command target selectors
Environment details
The server runs in a bungeecord network and serves as the main survival world where players first join and can choose a name and chat color and whether to enable keep-inv or not

`>.... [18:54:09 INFO]: Previous version: git-Paper-259 (MC: 1.16.4)

.... [18:54:09 INFO]: You are running the latest version`

LuckPerms version: LuckPerms-Bukkit-5.2.23.jar

Can you try to reproduce on a clean server (i.e. nothing other than LP installed). The errors are the server not responding, which I'm doubtful is LP's fault since just about everything we can do off the main thread, we use a different thread(s).

ok I copied over the command blocks to another server and removed all the plugins except Luckperms but still got a crash
start and crash log
let me try switching to a local database now

here is the crash again on a H2 database after I imported the data from the mysql database
start and crash
we can do the command no problem by typing it in but when a command block does the command it crashes

Try set register-command-data-list up to false in luckperms config.yml

@benwoo1110 it already is

I have the same issue with the new update (5.2.26) after restoring the previous version (5.1.107) it stopped happening.

Thanks - silly mistake from me.
Should be all fixed in the latest version.

repo: lucko/LuckPerms


text:
Netcat / easier command line pasting

Love using pastes.dev, but would love to see the ability from e.g. https://termbin.com/ to netcat content to pastes.dev.
I guess an alternative to this would be sending an HTTP request to the pastes.dev API which I guess I could create an alias for, but something like netcat is a lot easier.

This is a nice idea, thanks!
Functionality to support this has been added in:

https://github.com/lucko/paste-netcat/commit/8f7bce0d6429ff8f79f0ce2d555c1358767f93dd
https://github.com/lucko/bytebin/commit/5150d0fa85f8f564158e7427d783dab754069e90

You can now upload as below:
# Pipe in some output from any command
> echo "Hello world" | nc nc.pastes.dev 1337

# Upload the contents of a file
> cat example123.txt | nc nc.pastes.dev 1337

Bit of a childish port number but I thought it'd be easier to remember 😛
See https://github.com/lucko/paste-netcat/ for more info on the implementation. I thought it was better to have a separate service that handles the netcat connections and proxies them to the normal HTTP storage API (bytebin). You could even standup your own instance of paste-netcat (e.g. inside a firewall) but still proxy out to the pastes.dev service.
In theory it supports the same content size limits as bytebin - currently configured to a max of 10mb post-gzip. The paste-netcat server handles compression before forwarding the request on. All of which means it should be able to handle reasonably large plaintext files with no issue.
I've also updated the readme with this info :)
Thanks again!

Hm, nc.pastes.dev doesn't seem to be working for me?
/tmp/server via ☕ v17.0.1
❯ cat paper.yml | nc nc.pastes.dev 1337

/tmp/server via ☕ v17.0.1 took 30s
❯

Ah! I was testing with netcat on macOS, which has some subtle differences compared with other versions (e.g. on Linux machines)
Should be fixed by https://github.com/lucko/paste-netcat/commit/8673ada05839a5b05da3ce697238bf6aa1e85fbb :)
Let me know if that works

Works! Another suggestion would be to add the ability to specify a language for syntax highlighting until there's some auto detection.
e.g. netcat to nc.pastes.dev/yaml for YAML

Sweet!
Unfortunately netcat only works with hostnames & ports, not URLs - that's a HTTP thing.
Only options are:

more subdomains (bit of a pain)
more ports (hard to remember)
some sort of header in the submitted content - but that that point you're better off using curl

echo "test: 123" | curl -d @- -H 'Content-Type: text/yaml' https://api.pastes.dev/post

Auto-detection is also a bit tricky, but I'll elaborate more on that another time, on the other issue.

Sweet!
Unfortunately netcat only works with hostnames & ports, not URLs - that's a HTTP thing.
Only options are:

more subdomains (bit of a pain)
more ports (hard to remember)
some sort of header in the submitted content - but at that point you're better off using curl

echo "test: 123" | curl -d @- -H 'Content-Type: text/yaml' https://api.pastes.dev/post

Auto-detection is also a bit tricky, but I'll elaborate more on that another time, on the other issue.

Subdomains seem somewhat doable? Because you can have wildcard subdomains & SSL records.
Something like yaml.nc.pastes.dev could work.

The server doesn't know which subdomain the request was made from.
This is only possible for HTTP servers because of the Host header - whereas netcat does the DNS resolution on the client side and then opens a direct TCP connection.

The server doesn't know which subdomain the request was made from.
This is only possible for HTTP servers because of the Host header - whereas netcat does the DNS resolution on the client side and then opens a direct TCP connection.

Ahhhhh, okay. Makes sense.

authors: clrxbl lucko

repo: lucko/paste


text:
Code Review for Project Awesome Books with Navigation

Dear Code Reviewers' Team 👨💻,
I would like to ask for your kindly help to do the CR for my Awesome Books' project.
The following requirements were fulfilled:

Modify the Awesome books application to have:

A Navigation bar.

Three content sections:

Books list.
Add book form.
Contact info.
Make sure that when you click on any of the links, the main area changes to display only one of the three content sections.

To change the contents of the page, don't use any library or framework, use only plain JavaScript and CSS.

I think the result it's very close to the wireframe provided.

As usual, I really appreciate your kindly help 🙏.
Thanks 👍, until next time!
Cheers,
Luis 👋
PS. For the record, this week my paired coding partner left the Microverse program, that's why I worked "solo" below is a screenshot of TS response that I got on Wednesday.

Hello @Kamba56, sorry, I forgot to add the PS in the PR. But yes... I worked "solo" this week, my coding partner left the program. I've already submitted another code review. Thanks!!

repo: luigirazum/mv-awesomeBooks


text:
Why is the performance of ioredis client for redis sharded cluster is slow?

the latency of reads and writes to redis sharded cluster is very high than expected and it is not consistent, when i try to connect to the redis sharded cluster using a nodejs redis library called "ioredis". for example when i try to read and write about 100 key value pairs it takes about ~10-15 seconds.
i have set up a 6 node redis sharded cluster (3 master & 3 slaves) which is set up in cloud (SCALEWAY CLOUD).when i try to read and write via redis-cli it's quite fast. i observe inconsistency only via node library ioredis
`var ioredis = require('ioredis');
var redisCluster =new ioredis.Cluster([
{
host:"redis-server-1",
port:6379
},
{
host:"redis-server-2",
port:6379
},
{
host:"redis-server-3",
port:6379
},
{
host:"redis-server-4",
port:6379
},
{
host:"redis-server-5",
port:6379
},
{
host:"redis-server-6",
port:6379
}
]);
var startDate = new Date();
var total = 0;
//var total2 = 0;
for(var i = 0;i<10000;i++){
redisCluster.set("fookar"+i,"barkar"+i,function(err,res){
if(err){
console.log(err);
}
else{
var endDate   = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;
total = total+seconds;
startDate = endDate;
console.log(total+"set");
}
});
}
for(var i = 0;i<10000;i++){
redisCluster.get("fookar"+i,function(err,res){
if(err){
console.log(err);
}
else{
var endDate2   = new Date();
var seconds = (endDate2.getTime() - startDate.getTime()) / 1000;
total = total+seconds;
startDate = endDate2;
console.log(total+"get");
}
});
}`
i expect the latency to be in milliseconds as it can process millions of transaction in a second. Is this the normal behavior, since there will be redirects to the server where key is to be read or written or is there something i have to tune?

You can't put asynchronous code inside of a for loop (which is synchronous) and expect valid results.

No, This is just an example just to benchmark results. Even when performing single operation on redis sharded cluster with ioredis is taking more than a few seconds than estimated.

authors: klinquist manojdevs

repo: luin/ioredis


text:
Minimize to system tray feature

It would be awesome if we have the possibility to minimize the icon to the system tray.

@msmosso, your suggestion has been marked as an "enhancement", and will be implemented on future releases.
Just so I can be sure about this feature, the ideia is that the app should "disappear" from the taskbar when minimised and keep running on the background as a system tray icon, right?
I've seen a few apps doing this with the "close" button.
Anyways, when implemented, this feature will be configurable via the app settings panel.

@luizf-lf Exactly! I think it would be a great addition.

@msmosso This feature has been implemented and is available on the v0.4.0 preview release (https://github.com/luizf-lf/fluig-monitor/releases/tag/v0.4.0)

authors: luizf-lf msmosso

repo: luizf-lf/fluig-monitor


text:
Two instances on local machine

I've created a @Scheduled method in my project and run two instances of it on my local machine. The method gets executed properly on one instance but where I stop it, the other one does not take over the scheduled task. Is this normal behavior?

This is my method:
    @Scheduled(cron = "0 0/1 * * * ?")
    @SchedulerLock(name = "updateJob")
    public void updateJob() {
        System.out.println("UPDATING: " + LocalDateTime.now());
    }

repo: lukas-krecan/ShedLock


text:
How to extend locking time

I've seen nowhere how to extend locking time, even in the documentation. Can you help us out implementing extend feature ?

Hi, some of the lock providers support extending, but you have to implement the locking this way. See the methods on the SimpleLock class. It's not documented since it was an experimental feature, but I think it's time to document it now.

Actually, you have to created the lock directly using the LockProvider.

authors: deepeshdarshan lukas-krecan


text:
Add OpenSUSE Os's logos

We have the logo from the organization but their OSs use different logos, Tumbleweed and Leap are the more popular ones.

cmake, river WM

是的，我也需要添加OpenSUSE的操作系统的徽标，希望添加

Please add Opensuse-Tumbleweed
https://en.opensuse.org/images/e/e3/Tumbleweed-logo.svg
https://www.opensuse.org/

https://news.opensuse.org/2023/10/25/os-to-have-logos-competition/
https://en.opensuse.org/Logocontest
https://www.phoronix.com/news/openSUSE-New-Logo
Somehow I can not see this as real final logo change? :thinking:
And personally I must say, the tumbleweed logos somehow do not fit the style of all other (new) logos, but that is their decision of course ;)

3 Tumbleweed Logos

authors: Finii hasecilu musicclub1563

repo: lukas-w/font-logos

license: Unlicense


text:
What can I do about Weak Diffie-Hellman and the Logjam Attack

What can I do about this?
I ran https://www.ssllabs.com/ssltest/analyze.html on a domain with the certificates generated by dehydrated.
And the NGINX config:
server {
        listen 443 ssl;

        server_name                 notifi.it;

        root /var/www/notifi.it/public_html;
        index index.php index.html index.htm;

        ssl on;
        ssl_certificate             /etc/nginx/certs/notifi.it/fullchain.pem;
        ssl_certificate_key         /etc/nginx/certs/notifi.it/privkey.pem;

        error_page 404 /404.html;

        location / {
                try_files $uri $uri/ @extensionless-php;
        }

        location @extensionless-php {
            rewrite ^(.*)$ $1.php last;
        }

        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;

        }
}

And I got a B because of the key exchange:

This server supports weak Diffie-Hellman (DH) key exchange parameters

Consider generating stronger DH parameters than Nginx's default 1024 bits.
openssl dhparam -out /etc/nginx/dhparam.pem 2048
then add the line
ssl_dhparam /etc/nginx/dhparam.pem; to your nginx config(s).
It is possible to up the size to 4096 bits, 2048 is a generally safe size.

http://pasteboard.co/1OvuYl1Pf.png

authors: dorelo maxisme


text:
Image AutoPlays when thumbail arrow is clicked few times.

When thumbnail arrow is continuously clicked a few times, the images will start to autoplay even though AutoPlay is set False.
Here is my setup for the ngx-gallery:
this.galleryOptions = [
       {
         width: '50%',
         height: '900px',
         preview: false,
         previewAutoPlay:false,
         imageSize: NgxGalleryImageSize.Contain,
         imageAutoPlay: false,
         imageArrowsAutoHide: true,
         thumbnailsArrowsAutoHide: true,
         thumbnailsPercent: 20,
         thumbnailSize:"contain",
         thumbnailsMargin: 5,
         thumbnailMargin: 5,
         thumbnailsColumns:6
       },
       {
         breakpoint:1024,
         width: '90%',
         height: '700px',
         preview: false,
         previewAutoPlay:false,
         imageSize: NgxGalleryImageSize.Contain,
         imageAutoPlay: false,
         imageArrowsAutoHide: true,
         thumbnailsArrowsAutoHide: true,
         thumbnailsPercent: 20,
         thumbnailsColumns:6,
         thumbnailSize:"contain",
         thumbnailsMargin: 5,
         thumbnailMargin: 5,
       },
   ];

Hi @bibash-mi I can't reproduce this issue, could you record a video with this issue? Could you reproduce it using plunker https://plnkr.co/edit/D1tdBCeFo6L9tMOCOb9p?p=preview ?

authors: bibash-mi lukasz-galka

repo: lukasz-galka/ngx-gallery


text:
use this package but find can not do transaction

here is my code, I have tested it more than once
const connection = await mysql.createConnection({
        host: host,
        user: user,
        password: password,
        database: database
      });

      try {
        await connection.beginTransaction();
        await connection.query('UPDATE account SET vip_start_time = 11111, vip_end_time = 11111 WHERE user_id = 44');
        await connection.query('INSERT INTO notification SET type = ?, user_id = ?, content = ?, is_read = ?, created_at = ?',
          ['1', 44, 'aaa', 0, Math.floor(new Date() / 1000)]);
      } catch (err) {
        return connection.rollback();
      }

the err stack is about this
{ [Error: ER_LOCK_WAIT_TIMEOUT: Lock wait timeout exceeded; try restarting transaction]
  code: 'ER_LOCK_WAIT_TIMEOUT',
  errno: 1205,
  sqlState: 'HY000',
  index: 0 }

And I find this the first query did not work at all

You've closed the issue so I'm assuming you've sorted it, but the error is a mysql error and not related to this library.

authors: Prumeth-shen lukeb-uk

repo: lukeb-uk/node-promise-mysql


text:
⚠ oweb-mail-lukeschweickart has degraded performance

In 7827361, oweb-mail-lukeschweickart (https://mail.oweb3.lukeschweickart.com) experienced degraded performance:

HTTP code: 401
Response time: 179 ms

Nonissue

repo: lukebsa/status


text:
[request] Add DiskGenius.

DiskGenius is an excellent utility that comes packed with various useful features on data recovery, disk partition management, backup & restore.
website:http://www.diskgenius.cn/

I have tried to add it by myself. But I found that the latest version is 5.1.2. But the URL is http://download.eassos.cn/DG512766_x64.zip. I don't know how to deal with it.

You can use $cleanVersion . See https://github.com/lukesampson/scoop/wiki/App-Manifest-Autoupdate#version-variables

The version is 5.1.2.766. You can use $cleanVersion . See https://github.com/lukesampson/scoop/wiki/App-Manifest-Autoupdate#version-variables

Thank you.

Disk Genius Activation Key is a powerful tool for data recovery, partitioning and partitioning, as it offers a lot of features. The free edition offers various parts for repairing parts and discs and recovering lost files for home and business users.
Deborah
keygenbro.com

authors: keygen-maker linsui ssfjhh

repo: lukesampson/scoop-extras


text:
hwinfo@7.12-4580: Hash check failed

Hash check failed!
App:         extras/hwinfo
URL:         https://www.hwinfo.com/files/hwi_712.zip
First bytes: 60 33 68 79 67 84 89 80
Expected:    1ca729f1ff7b8fc3c4b4063dc99aa4b79644ce9937ffd0a00dde68cb3f10b9bd
Actual:      b0f77a7888558eb3ab5ffb5abc31505f40013c12076b6f5bac60a496cae2d13b

Ok, file here - https://www.hwinfo.com/files/hwi_712.zip - seems broken. But from other link - https://www.sac.sk/download/utildiag/hwi_712.zip - seems fine.

And correct hash is: 2e0049c5b0ac6f8008e0f17051a32525d37e7c36d87f01612b6d160132bcbb60


text:
qemu has the wrong url to download

% scoop install qemu
Installing 'qemu' (2.10.0-rc3).
The remote server returned an error: (404) Not Found.
URL https://qemu.weilnetz.de/w64/qemu-w64-setup-20170816.exe#/dl.7z is not valid

Url showld be
http://qemu.weilnetz.de/w64/qemu-w64-setup-20170824.exe
See here for a list of files
https://qemu.weilnetz.de/w64/

Your scoop bucket is out of date, please run scoop update and try it again.

Sorry for the trouble.  Thanks for the help.

repo: lukesampson/scoop

license: unlicense


text:
python27 app manifest removed?

Hi
Just did a scoop status, and received the following message:-
scoop is up-to-date.
these app manifests have been removed:
    python27

I assume this means it was removed from the buckets in the repo. Is there a reason for that? I have a particular script that only works when I use python27 rather than python 3.5.1.
Regards
Mike

Hi Mike
It's been moved to the versions bucket. You just need to add it using scoop bucket add versions

Thanks so much, appreciate it!

authors: deevus mmcalli


text:
Some path parameters where passed using [path] AND other using [queryParameters] Use one or the other but not both

Flutter version: 2.5.2
vrouter: 1.2.0+14
I tried the above solution provided @lulupointu  using context.vRouter.to(context.vRouter.url, isReplacement: true, queryParameters: {"value": value}); for changing the url according to the form.  I tried adding key to VWidget but the error still persists.
I have written a test case as follows
routes.dart
import 'package:vrouter/vrouter.dart';

const String homePath = "/";
const String formPath = "/forms";

List<VRouteElement> routes = [
  VWidget(path: homePath, widget: const MyHomePage(title: "hello")),
  VWidget(path: formPath, widget: const FormScreen())
];

form_screen.dart
import 'package:flutter/material.dart';
import 'package:vrouter/vrouter.dart';

class FormScreen extends StatelessWidget {
  const FormScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: TextField(onChanged: (value) {
          print(value);
          context.vRouter.to(context.vRouter.url, isReplacement: true, queryParameters: {"value": value});
        }),
      ),
    );
  }
}

But when onChange is triggered. I get the following error.
══╡ EXCEPTION CAUGHT BY WIDGETS ╞═══════════════════════════════════════════════════════════════════
The following assertion was thrown while calling onChanged:
Assertion failed:
file:///C:/Users/Ritesh/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/vrouter-1.2.0+14/lib/src/core/vrouter_delegate.dart:1313:7
pathQueryParameters.isEmpty || queryParameters.isEmpty
"Some path parameters where passed using [path] AND other using [queryParameters]\nUse one or the
other but not both"

When the exception was thrown, this was the stack:
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 251:49      throw_
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 29:3        assertFailed
packages/vrouter/src/core/vrouter_delegate.dart 1313:53                                                                        to
packages/vrouter/src/core/vrouter_delegate.dart 2111:13                                                                        to
packages/vrouter/src/core/local_vrouter_data.dart 165:26                                                                       to
packages/router_example/screens/form_screen.dart 13:18                                                                         <fn>
packages/flutter/src/widgets/editable_text.dart 2329:27                                                                        [_formatAndSetValue]
packages/flutter/src/widgets/editable_text.dart 1772:7                                                                         updateEditingValue
packages/flutter/src/services/text_input.dart 1386:9
_handleTextInputInvocation
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54                runBody
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5                _async
packages/flutter/src/services/text_input.dart 1331:45
[_handleTextInputInvocation]
packages/flutter/src/services/platform_channel.dart 386:55                                                                     _handleAsMethodCall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54                runBody
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5                _async
packages/flutter/src/services/platform_channel.dart 383:40                                                                     [_handleAsMethodCall]
packages/flutter/src/services/platform_channel.dart 379:34                                                                     <fn>
packages/flutter/src/services/binding.dart 379:35                                                                              <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 84:54                runBody
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/async_patch.dart 123:5                _async
packages/flutter/src/services/binding.dart 376:98                                                                              <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 1034:13               invoke2
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/ui/src/ui/channel_buffers.dart 25:5                           invoke
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/ui/src/ui/channel_buffers.dart 65:7                           push
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/ui/src/ui/channel_buffers.dart 130:16                         push
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/platform_dispatcher.dart 302:25                invokeOnPlatformMessage
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/text_editing/text_editing.dart 1662:39         updateEditingState
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/text_editing/text_editing.dart 1770:17         <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/lib/_engine/engine/text_editing/text_editing.dart 974:7           handleChange
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 334:14  _checkAndCall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 339:39  dcall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 37308:58                              <fn>
════════════════════════════════════════════════════════════════════════════════════════════════════
hel
Another exception was thrown: Assertion failed:
file:///C:/Users/Ritesh/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/vrouter-1.2.0+14/lib/src/core/vrouter_delegate.dart:1313:7
hell
Another exception was thrown: Assertion failed:
file:///C:/Users/Ritesh/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/vrouter-1.2.0+14/lib/src/core/vrouter_delegate.dart:1313:7
hello
Another exception was thrown: Assertion failed:
file:///C:/Users/Ritesh/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/vrouter-1.2.0+14/lib/src/core/vrouter_delegate.dart:1313:7

This is specially useful in forms and filter screens.
``window.history.replaceState("", "", context.vRouter.url + "?value=${value}")` this works but it imports dart:html package and also is causing a error.
Originally posted by @dewbambs in https://github.com/lulupointu/vrouter/issues/120#issuecomment-944697831

Maybe we can update the document to include this as it's useful case

I want to wait until dartpad supports external packages until reworking on the example on this package. A which point I surely will seriously look into it!

I'm trying to read your code base and trying to understand the whole system, hopefully I will be able to contribute soon as well

I would love that !

repo: lulupointu/vrouter


text:
VRouteElementData.of(context).vChild for vStack too?

Hi Lulu,
I have a current router setup with a main VStacked which handles the /app route. This route has a bottom navigation bar in MyScaffold() and VRouteElementData.of(context).vChild, like so:
class MyScaffold extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("app")),
      body: VRouteElementData.of(context).vChild,
      bottomNavigationBar: BottomNavigationBar(
        currentIndex: VRouterData.of(context).url!.contains("products") ? 0 : 1,
        items: [
          BottomNavigationBarItem(
              icon: Icon(Icons.print_rounded), label: 'Products'),
          BottomNavigationBarItem(
              icon: Icon(Icons.person_outline), label: 'Account'),
        ],
      ),
    );
  }
}

Now, under this stack I have 2 more VStacked, which handle the Products and Account tabs. These VStacked both have their own ProductsScaffold() and AccountScaffold(), which look like this:
class ProductsScaffold extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (context) => ProductsCubit(),
      child: Scaffold(
        appBar: AppBar(title: Text("Products")),
        body: VRouteElementData.of(context).vChild,
      ),
    );
  }
}

Inside of these nested VStacked routes I have VChild routes for both Products and Account stacks.
I would like my main MyScaffold bottom navigation bar show up in my VChild routes of the Products and Account stacks. However, the bottom navigation bar from MyScaffold does not show up. I believe this is because I am doing body: VRouteElementData.of(context).vChild in MyScaffold, and there are no vChild under the main /app path.
Here is my router setup:
VRouter(
  debugShowCheckedModeBanner: false,
  mode: VRouterModes.history,
  routes: [
    VStacked(
        beforeEnter: (vRedirector) async =>
            vRedirector.pushReplacement("/app/products"),
        path: "/app",
        widget: MyScaffold(),
        subroutes: [
          // Here is my Products stack
          VStacked(
            beforeEnter: (vRedirector) async =>
                vRedirector.pushReplacement("/app/products/bear"),
            path: "/app/products",
            widget: ProductsScaffold(),
            key: ValueKey("Products"),
            subroutes: [
              VChild(
                path: "bear",
                widget: BearPage(),
              ),
              VChild(
                path: "cup",
                widget: CupPage(),
              ),
            ],
          ),
          // Here is my Account stack
          VStacked(
            beforeEnter: (vRedirector) async =>
                vRedirector.pushReplacement("/app/account/profile"),
            path: "/app/account",
            widget: ProductsScaffold(),
            key: ValueKey("Account"),
            subroutes: [
              VChild(
                path: "profile",
                widget: ProfilePage(),
              ),
              VChild(
                path: "settings",
                widget: SettingsPage(),
              ),
            ],
          ),
        ]),
    VRouteRedirector(
      redirectTo: '/app',
      path: r':_(.*)',
    ),
  ],
);

Thanks Lulu

First of all, when you use VRouteElementData.of(context).vChild in MyScaffold, in is null (since the VRouteElement containing MyScaffold does not have any VChild).
If I am right in what you are trying to achieve, I don't understand the utility of the ProductsScaffold (you DO NOT want nested scaffold right ?)
If I am right, why not use the following VRouter structure:
VRouter(
  debugShowCheckedModeBanner: false,
  mode: VRouterModes.history,
  routes: [
    VStacked(
        beforeEnter: (vRedirector) async => vRedirector.pushReplacement("/app/products"),
        path: "/app",
        widget: MyScaffold(),
        subroutes: [
          // Here is my Products stack
          VChild(
            beforeEnter: (vRedirector) async =>
                vRedirector.pushReplacement("/app/products/bear"),
            path: "/app/products",
            name: 'products',
            widget: Container(),
            key: ValueKey("Products"),
            subroutes: [
              VStacked(
                path: "bear",
                widget: BearPage(),
              ),
              VStacked(
                path: "cup",
                widget: CupPage(),
              ),
            ],
          ),
          // Here is my Account stack
          VChild(
            beforeEnter: (vRedirector) async =>
                vRedirector.pushReplacement("/app/account/profile"),
            path: "/app/account",
            name: 'account',
            widget: Container(),
            key: ValueKey("Account"),
            subroutes: [
              VStacked(
                path: "profile",
                widget: ProfilePage(),
              ),
              VStacked(
                path: "settings",
                widget: SettingsPage(),
              ),
            ],
          ),
        ]),
    VRouteRedirector(
      redirectTo: '/app',
      path: r':_(.*)',
    ),
  ],
)

Here the Container widget will never be shown, since there will always be the widget of a VStacked on top of it.
Also some improvement that you can make:
I used name in the VChilds so your MyScaffold current index can be changed to:
currentIndex: VRouteElementData.of(context).vChildName == "products" ? 0 : 1,

Also when you use push or pushReplacement, path are relative, so you could have the following changes:
// ABSOLUTE
beforeEnter: (vRedirector) async => vRedirector.pushReplacement("/app/account/profile"),

// RELATIVE
beforeEnter: (vRedirector) async => vRedirector.pushReplacement("profile"),

// ABSOLUTE
beforeEnter: (vRedirector) async => vRedirector.pushReplacement("/app/products/bear"),

// RELATIVE
beforeEnter: (vRedirector) async => vRedirector.pushReplacement("bear"),

Finally I am not sure why you are using the key argument in VStack but you do you 😉

I see i see, thanks for the suggestions! Yes, i don't have any reason to put that key arg in haha...
I understand better now. Whenever VStacked is used, it wraps it's vChild children. And if VChild is used, it does not wrap widgets under it.
However, when you say

If I am right in what you are trying to achieve, I don't understand the utility of the ProductsScaffold (you DO NOT > want nested scaffold right ?)

I would like to say that I do indeed want a ProductsScaffold to wrap all of it's children. This is because ProductsScaffold is providing my ProductsCubit state to it's children. I don't want ProductsCubit state to wrap everything - I only want to provide it to children of the /products path
Since VChild doesn't wrap it's children, how can I provide ProductsCubit to it's children only without lifting state all the way up to the top?

I don't really understand what you mean by "wrap" but I'm glad you understood 😀
Ok I understand your issue with keeping the state local. In that case would this work?:
VRouter(
  debugShowCheckedModeBanner: false,
  mode: VRouterModes.history,
  routes: [
    VStacked(
        beforeEnter: (vRedirector) async => vRedirector.pushReplacement("/app/products"),
        path: "/app",
        widget: MyScaffold(),
        subroutes: [
          // Here is my Products stack
          VChild(
            beforeEnter: (vRedirector) async =>
                vRedirector.pushReplacement("/app/products/bear"),
            path: "/app/products",
            name: 'products',
            widget: Container(),
            key: ValueKey("Products"),
            subroutes: [
              VStacked(
                widget: ProductsScaffold(),
                subroutes: [
                  VChild(
                    path: "bear",
                    widget: BearPage(),
                  ),
                  VChild(
                    path: "cup",
                    widget: CupPage(),
                  ),
                ]
              ),
            ],
          ),
          // Here is my Account stack
          VChild(
            beforeEnter: (vRedirector) async =>
                vRedirector.pushReplacement("/app/account/profile"),
            path: "/app/account",
            name: 'account',
            widget: Container(),
            key: ValueKey("Account"),
            subroutes: [
              VStacked(
                widget: ProductsScaffold(),
                subroutes: [
                  VChild(
                    path: "profile",
                    widget: ProfilePage(),
                  ),
                  VChild(
                    path: "settings",
                    widget: SettingsPage(),
                  ),
                ]
              )
            ],
          ),
        ]),
    VRouteRedirector(
      redirectTo: '/app',
      path: r':_(.*)',
    ),
  ],
)

And ProductsScaffold is the same you gave me:
class ProductsScaffold extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (context) => ProductsCubit(),
      child: Scaffold(
        appBar: AppBar(title: Text("Products")),
        body: VRouteElementData.of(context).vChild,
      ),
    );
  }
}

This makes a lot of sense - I should have been able to think of this myself..
Thanks~!

authors: lulupointu theweiweiway


text:
A temporary fix for the WS library

Pull Request Description
It was the first time I'm trying out Luna and I tried some WebSocket basics, and noticed how the library fails when I'm adding a path, so I noticed the source code is not coded to accept paths.
Checklist
Please include the following checklist in your PR:

[x] The documentation has been updated if necessary.
[x] The code conforms to the Luna Style Guide.
[x] The code has been tested where possible.

 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.You have signed the CLA already but the status is still pending? Let us recheck it.

authors: CLAassistant TheOnlyArtz

repo: luna/luna


text:
Document external ID

It's unclear exactly what the external ID does. Is it just transaction metadata? It seems to protect against duplicates. However, if you delete transaction(s) in LM it's not clear if you can add another transaction with the same external ID again.

I'm running into this issue, I am syncing between systems and getting duplicate external_id errors but when searching for the transaction via the API, none exist.

authors: dylanmazurek iloveitaly

repo: lunch-money/developers


text:
Initial codes for typescript.

This patch imports TypeScript modules and then introduce gulpfile.ts to replace
gulpfile.babel.js. Until finishing this migration, we can use the following
command to run gulpfile.ts.
$ ./absolute --gulpfile gulpfile.ts

Checked it late. :D

authors: nadongguri romandev

repo: lunchclass/absolute


text:
What are fallback locales used for?

Hey,
As I understand from the API, there's no way to actually translate the massage to the particular language, right?
I mean, I can set fallback locales, but they are not even used in FormatMessage func.
I'm just a bit confused how it was designed and how to translate to any other language?

Hello!
Project Fluent is just a localization system, nothing is translated like you may know it from translators like Deepl or Google Translate.
Localization is often done by creating multiple source files (JSON, YML, etc.) that contain the translations for the particular language.
An app thus could have the following two files:
en.json
{
    "greeting": "Hello, {user}!"
}

de.json
{
    "greeting": "Hallo, {user}!"
}

Whenever the app renders the greeting to a particular user, the message is loaded from the file that contains the translations for the language this user chose before.
Fluent represents an alternative syntax for those files to make it easier to write naturally sounding translations.
That said, the language(s) you pass to the fluent.NewBundle function will be used to format numbers and dates into the target language in the future, but that feature is not yet implemented into this library.
I hope I could help making things a bit more clear ^^

@lus  Yes, that's totally understandable that this is not a translation but internationalization library.
The problem that I faced is that it's not possible to use a single bundle of all the messages I have (all the languages).
It appears that I must create a new bundle for every single language my system has.
// There's no way to pass a concrete language tag, like `language.DE`
// and I should use a different bundle if I want to use German, for example
message, _, _ := englishBundle.FormatMessage("greeting", fluent.WithVariable("subject", "world"))

// And if German string is needed, then
message, _, _ := germanBundle.FormatMessage("greeting", fluent.WithVariable("subject", "welt"))

As an example, this is how it is implemented in the https://github.com/nicksnyder/go-i18n:
func(w http.ResponseWriter, r *http.Request) {
    accept := r.Header.Get("Accept-Language")
    localizer := i18n.NewLocalizer(bundle, accept)
}

Actually, it stores all the language and all the messages in a single bundle that later may be used to localize based on the Accept-Language for instance.

I was also thinking that it would be nice not to reinvent the wheel and instead of writing some i18n specific logic here, it would be nice to just export the functionality of the parser, to be able to unmarshal random strings.
go-i18n library has an ability to register a custom unmarshal func, and if I could use this package just for unmarshaling fluent messages, it would be jest great
Consider this usecase:
import (
"github.com/nicksnyder/go-i18n/v2/i18n"
"github.com/lus/fluent.go/fluent"
)

bundle := i18n.NewBundle(language.English)
bundle.RegisterUnmarshalFunc("ftl", fluent.Unmarshal) // ← This is the most important part
bundle.MustLoadMessageFile("common.en.ftl")
bundle.MustLoadMessageFile("common.de.ftl")
bundle.MustLoadMessageFile("common.es.ftl")

accept := r.Header.Get("Accept-Language")
localizer := i18n.NewLocalizer(bundle, accept)

message := localizer.MustLocalize(&i18n.Message{ID: "helloworld"})

The problem I see there is that, while applying similar concepts, nicksnyder/go-i18n works fundamentally different.
Pluralized strings are written like
[PersonCats]
description = "The number of cats a person has"
one = "{{.Name}} has {{.Count}} cat."
other = "{{.Name}} has {{.Count}} cats."

(one and other are treated as completely different strings)
while Fluent uses
person-cats =
    { $name } has { $count ->
        [one] one cat.
        *[other] { $count } cats.
    }

which is a completely unique syntax.
Thus, a simple key-value mapping like go-i18n uses is not that easy to implement and would lead us to the same situation Project Fluent wants to move away from, namely having key-value translation files without any logic.

Hm... Yeah, now I see it. Approaches are kinda different 🤔
Thank you for pointing this out.

No problem!
Do you have any other questions or can this issue be marked as resolved?

Nope, let's close it then 🙂

authors: ElForastero lus


text:
checkbox with Array default color is wrong

vsCheckBox.vue
code in line 3 should be
<span :style="{'border':(!value || !value.length)?'2px solid rgb(160, 160, 160)':'2px solid '+backgroundx()}" class="cuadro">

Ready friend the final solution for the error was:
<span :style="{'border':typeof value == 'boolean'?!value?'2px solid rgb(160, 160, 160)':'2px solid '+backgroundx():!valueArray?'2px solid rgb(160, 160, 160)':'2px solid '+backgroundx()}" class="cuadro">
thank you very much for the contribution this change will be in the next update I warn you to review it

repo: lusaxweb/vuesax


text:
Fix multiple select checkbox

vs-checkbox component doesn't emit click event. It's emit only change and input events.

:+1:

Bug origin : https://github.com/lusaxweb/vuesax/commit/37e43cbb94f7fac1a4ccb5f721f4b7489213938e#diff-918c93b93249157f4a990d7e02d0c0ab
Fixed by :
const BaseVsCheckbox = Vue.options.components.VsCheckbox
const VsCheckbox = BaseVsCheckbox.extend({
  computed: {
    listeners () {
      return {
        ...this.$listeners
      }
    }
  }
})

Vue.component('VsCheckbox', VsCheckbox)

Just uncomment ...this.$listeners is VsCheckbox to fix multipe select

authors: cedvan nitogel


text:
memory usage for minidump-stackwalk

Processing this crash report died because of an OOM:
https://crash-stats.allizom.org/report/index/cea2d009-a1af-4964-bd1b-9cad90211213
The stderr is:
memory allocation of 268435456 bytes failed

Aria looked at the minidump and things seem fine.
However, it kind of looks like rust-minidump minidump-stackwalk uses memory differently than breakpad stackwalker did. I'm seeing spikes in memory usage on the stage processor node:

stage environment has a single processor node which runs one processor process which has 5 threads, so it could be running 5 simultaneous minidump-stackwalk processes.
How much memory should a single minidump-stackwalk process be using? What should Socorro do when it runs out of memory? Should it try it again?

Is this something we can deploy to production without resolving?

Some notes:
I haven't verified but it's almost certain that the overwhelming source of memory usage is symbol loading + parsing (files on the order of 100mb-1gb are standard).
Places where there may be room for easy improvement:

How we (re)allocate memory during download (will #329 improve this?)
How we load symbols from the disk cache (do we mmap? can we? should we?)
How we allocate parsed symbol results (not sure what we could do here specifically but presumably this is linear in the size of the minidump, and split up into different collections. do we hold pointers into the symbol file for strings? can we? should we?)

In stage, I see some spikes, but it's pretty infrequent. Maybe one or two spikes every 6 hours. However, stage and prod are different and I can't tell from stage data whether this will be a bigger issue in prod or not.
I think given it's infrequent on stage we should move forward, but I'll keep an eye on it and we can roll back if something goes awry.

#357 might help? I don't have a good setup for measuring memory usage/traffic though.

n.b.: the symbol parser allocates a Vec for the entire contents when it reads a symbol file from disk:
https://github.com/luser/rust-minidump/blob/eb8f13c202d95fc46e5cb8dd557d7e3b903102e1/breakpad-symbols/src/sym_file/parser.rs#L467
(that could definitely be an mmap).
The parser is pretty allocation-heavy in general since it returns an owned type and doesn't borrow from the input. e.g. every FUNC line allocates a new String for the function name:
https://github.com/luser/rust-minidump/blob/eb8f13c202d95fc46e5cb8dd557d7e3b903102e1/breakpad-symbols/src/sym_file/parser.rs#L163
Changing that to borrow from the input would probably help a lot, but might be annoying to deal with API-wise.

I hopped into the tokio discord and got some interesting insights:

as long as minidump-stackwalk is a one-shot minidump processor and we aren't trying to like, walk every thread in parallel, async is ~useless (and potentially actively harmful for file i/o?)

#[tokio::main(flavor = "current_thread")] may help with this a bit, it would avoid bouncing things around thread pools we don't need/use.
if we run on a linux kernel new enough to have uring stuff, this may be mitigated?

if we manually write a Read loop (or in async, chunk), that passes data to both cache writing and parsing in pieces, then we should actually be able to write to the cache + parse concurrently with the download, even for reqwest::blocking.

and in theory we'd never need to have the whole symbol file in memory ever
this would necessitate some rearchitecting of the code so that fetch_symbols calls "into" parsing/caching (it already does for caching)
unclear how well our ancient version of nom supports streaming input
unclear if there's a need to keep the whole file around (afaict no, you don't even need to backtrack while parsing breakpad symbol files, I think?)

if we manually write a Read loop (or in async, chunk), that passes data to both cache writing and parsing in pieces, then we should actually be able to write to the cache + parse concurrently with the download, even for reqwest::blocking.

This feels like a lot of work for something that should ultimately all be replaced by symbolic-symcache, TBH.

This should be resolved by #359

authors: Gankra luser willkg

repo: luser/rust-minidump


text:
On behalf of Ville Aikas: Added Mermaid graph and some clarifications

Couple of tiny suggestions.

Thanks a lot! ❤

authors: luxas vaikas

repo: luxas/kube-rebac-authorizer


text:
Changed length of generated id from 64 to 63 bits.

One less bit for datacenter/id. Eases usage in languages where there are no unsigned data types (i.e. Java, Scala, ...)

Changes Unknown when pulling 0794bfe08b3a9687d099f9fc66fe71b375cec488 on feature/64-to-63-bit-conversion into ** on master**.

Changes Unknown when pulling 60ad6a93630d074faef43b7b1f887692eab38c85 on feature/64-to-63-bit-conversion into ** on master**.

Changes Unknown when pulling 17d7e2e5a78b070f0ae3f545094690301e1b81e8 on feature/64-to-63-bit-conversion into ** on master**.

authors: coveralls nicolasgramlich