Monthly report from cron is generating empty file

Hi
I've an Ubuntu 18.04 box where I run
sudo crontab -e
0 0 1 * * goaccess -f /var/log/apache2/access.log --log-format COMMON -a -d > "/var/www/html/stats/reporte_$(date +\%d\%m\%Y).html"
When I check the folder, file is 0bytes. Any clues?
If I execute the same command manually from shell:
sudo goaccess -f /var/log/apache2/access.log --log-format COMMON -a -d > "/var/www/html/stats/reporte_$(date +\%d\%m\%Y).html"
It works great

Hello - Can I ask what version of goaccess are you running?

GoAccess - 1.2.
For more details visit: http://goaccess.io
Copyright (C) 2009-2016 by Gerardo Orellana

Could you please upgrade to the latest version? This issue may have been fixed already.  Let me know. Thanks

Could you please upgrade to the latest version? This issue may have been fixed already. Let me know. Thanks

don't know why it didn't upgrade all this time, now i notice 1.2 is from 2017 🤦♂

Feel free to use the official deb repo, usually debian/ubuntu take time to upgrade packages.

Feel free to use the official deb repo, usually debian/ubuntu take time to upgrade packages.

Yea, I did that. It looks like I had installed manually 1.2, now removed it, reinstalled through repo and changed cron to daily to see how it goes. Will update. Thanks

Checked output. Cron worked perfectly now
It just needed an upgrade
Thanks


remove unnecessary preconcurrency imports

motivation: eliminate warnings
changes: require swift 5.7 and remove unnecessary preconcurrency imports for foundation

cc @MaxDesiatov @parkera @ktoso wrt to missing annotations on corelib-foundation


K3OS releases after v0.11.1 fail to get DHCP-assigned address from dnsmasq

Version (k3OS / kernel)
k3os version v0.20.4-k3s1r0
Architecture
x86_64
Describe the bug
DHCP was working well for me with versions up to and including v0.11.1. Upon upgrade to newer releases I am no longer able to get a DHCP lease from my DNSMasq server.
To Reproduce
k3os options:
k3os:
  data_sources:
  - cdrom
  modules:
  - kvm
  sysctl:
    kernel.printk: "4 4 1 7"
    kernel.kptr_restrict: "1"
  dns_nameservers:
  - 192.168.x.254
  ntp_servers:
  - 192.168.x.254
  password: <redacted>
  server_url: https://192.168.x.99:6443
  token: <redacted>
  labels:
    k3os.io/upgrade: enabled
  k3s_args:
  - agent
ssh_authorized_keys:
 - <redacted>
hostname: k3s-client1

Expected behavior
Prior to this release DHCP was working, if I revert to old version it works with no changes.
Actual behavior
connman debug output:
$ grep -i "daemon.debug connmand" /var/log/messages | grep -i dhcp
Apr 23 09:41:41 k3s-handbills daemon.debug connmand[3467]: src/network.c:set_connected_dhcp() network 0x556ab61448e0
Apr 23 09:41:41 k3s-handbills daemon.debug connmand[3467]: src/dhcp.c:__connman_dhcp_start()
Apr 23 09:41:41 k3s-handbills daemon.debug connmand[3467]: src/ipconfig.c:__connman_ipconfig_ref_debug() 0x556ab61455a0 ref 3 by src/dhcp.c:702:__connman_dhc
p_start()
Apr 23 09:41:41 k3s-handbills daemon.debug connmand[3467]: src/network.c:connman_network_ref_debug() 0x556ab61448e0 name Wired ref 4 by src/dhcp.c:706:__conn
man_dhcp_start()
Apr 23 09:41:41 k3s-handbills daemon.debug connmand[3467]: src/dhcp.c:dhcp_initialize() dhcp 0x556ab6145ee0
Apr 23 09:41:45 k3s-handbills daemon.debug connmand[3467]: src/network.c:check_dhcpv6() reply 0
Apr 23 09:41:45 k3s-handbills daemon.debug connmand[3467]: src/network.c:check_dhcpv6() re-send router solicitation 3
Apr 23 09:41:49 k3s-handbills daemon.debug connmand[3467]: src/network.c:check_dhcpv6() reply 0
Apr 23 09:41:49 k3s-handbills daemon.debug connmand[3467]: src/network.c:check_dhcpv6() re-send router solicitation 2
Apr 23 09:41:53 k3s-handbills daemon.debug connmand[3467]: src/network.c:check_dhcpv6() reply 0
Apr 23 09:41:53 k3s-handbills daemon.debug connmand[3467]: src/network.c:check_dhcpv6() re-send router solicitation 1
Apr 23 09:41:57 k3s-handbills daemon.debug connmand[3467]: src/network.c:check_dhcpv6() reply 0
Apr 23 09:41:57 k3s-handbills daemon.debug connmand[3467]: src/network.c:connman_network_unref_debug() 0x556ab61448e0 name Wired ref 4 by src/network.c:766:c
heck_dhcpv6()
Apr 23 09:42:11 k3s-handbills daemon.debug connmand[3467]: src/dhcp.c:no_lease_cb() No lease available ipv4ll 0 client 0
Apr 23 09:42:11 k3s-handbills daemon.debug connmand[3467]: src/dhcp.c:dhcp_invalidate() dhcp 0x556ab6145ee0 callback 0
Apr 23 09:42:11 k3s-handbills daemon.debug connmand[3467]: src/dhcp.c:dhcp_invalidate() last address (null)

Additional context
tcpdump of DHCP conversation:
sudo tcpdump -i ens9 port bootps
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens9, link-type EN10MB (Ethernet), capture size 262144 bytes
09:45:18.089844 IP <IP_ADDRESS>.bootpc > <IP_ADDRESS>.bootps: BOOTP/DHCP, Request from 52:54:00:6c:00:00 (oui Unknown), length 548
09:45:18.090332 IP 192.168.x.254.bootps > 192.168.x.99.bootpc: BOOTP/DHCP, Reply, length 303
09:45:23.089495 IP <IP_ADDRESS>.bootpc > <IP_ADDRESS>.bootps: BOOTP/DHCP, Request from 52:54:00:6c:00:00 (oui Unknown), length 548
09:45:23.089753 IP 192.168.x.254.bootps > <IP_ADDRESS>.bootpc: BOOTP/DHCP, Reply, length 303
09:45:23.521873 IP <IP_ADDRESS>.bootpc > <IP_ADDRESS>.bootps: BOOTP/DHCP, Request from 52:54:00:0d:de:fc (oui Unknown), length 548
09:45:26.831541 IP 192.168.x.254.bootps > 192.168.x.146.bootpc: BOOTP/DHCP, Reply, length 303
09:45:28.089649 IP <IP_ADDRESS>.bootpc > <IP_ADDRESS>.bootps: BOOTP/DHCP, Request from 52:54:00:6c:00:00 (oui Unknown), length 548
09:45:28.090301 IP 192.168.x.254.bootps > 192.168.x.99.bootpc: BOOTP/DHCP, Reply, length 303
09:45:28.539252 IP <IP_ADDRESS>.bootpc > <IP_ADDRESS>.bootps: BOOTP/DHCP, Request from 52:54:00:0d:de:fc (oui Unknown), length 548
09:45:28.539612 IP 192.168.x.254.bootps > <IP_ADDRESS>.bootpc: BOOTP/DHCP, Reply, length 303
09:45:33.089488 IP <IP_ADDRESS>.bootpc > <IP_ADDRESS>.bootps: BOOTP/DHCP, Request from 52:54:00:6c:00:00 (oui Unknown), length 548
09:45:33.089827 IP 192.168.x.254.bootps > <IP_ADDRESS>.bootpc: BOOTP/DHCP, Reply, length 303
09:45:33.537809 IP <IP_ADDRESS>.bootpc > <IP_ADDRESS>.bootps: BOOTP/DHCP, Request from 52:54:00:0d:de:fc (oui Unknown), length 548
09:45:33.538107 IP 192.168.x.254.bootps > 192.168.x.146.bootpc: BOOTP/DHCP, Reply, length 303
09:45:38.089781 IP <IP_ADDRESS>.bootpc > <IP_ADDRESS>.bootps: BOOTP/DHCP, Request from 52:54:00:6c:00:00 (oui Unknown), length 548
09:45:38.089945 IP 192.168.x.254.bootps > 192.168.x.99.bootpc: BOOTP/DHCP, Reply, length 303

dnsmasq journalctl:
Apr 23 09:51:28 bobafett dnsmasq-dhcp[198012]: DHCPOFFER(ens9) 192.168.x.146 52:54:00:0d:de:fc
Apr 23 09:51:33 bobafett dnsmasq-dhcp[198012]: DHCPDISCOVER(ens9) 52:54:00:0d:de:fc
Apr 23 09:51:33 bobafett dnsmasq-dhcp[198012]: DHCPOFFER(ens9) 192.168.x.146 52:54:00:0d:de:fc
Apr 23 09:51:38 bobafett dnsmasq-dhcp[198012]: DHCPDISCOVER(ens9) 52:54:00:0d:de:fc
Apr 23 09:51:38 bobafett dnsmasq-dhcp[198012]: DHCPOFFER(ens9) 192.168.x.146 52:54:00:0d:de:fc
Apr 23 09:51:43 bobafett dnsmasq-dhcp[198012]: DHCPDISCOVER(ens9) 52:54:00:0d:de:fc
Apr 23 09:51:43 bobafett dnsmasq-dhcp[198012]: DHCPOFFER(ens9) 192.168.x.146 52:54:00:0d:de:fc
Apr 23 09:51:48 bobafett dnsmasq-dhcp[198012]: DHCPDISCOVER(ens9) 52:54:00:0d:de:fc
Apr 23 09:51:48 bobafett dnsmasq-dhcp[198012]: DHCPOFFER(ens9) 192.168.x.146 52:54:00:0d:de:fc

Things I have tried

disabling ipv6connmanctl services ethernet_5254000ddefc_cable

/net/connman/service/ethernet_5254000ddefc_cable
Type = ethernet
Security = [  ]
State = ready
Favorite = True
Immutable = False
AutoConnect = True
Name = Wired
Ethernet = [ Method=auto, Interface=eth0, Address=52:54:00:0D:DE:FC, MTU=1500 ]
IPv4 = [ Method=auto, Address=<IP_ADDRESS>, Netmask=<IP_ADDRESS> ]
IPv4.Configuration = [ Method=auto ]
IPv6 = [  ]
IPv6.Configuration = [ Method=auto, Privacy=disabled ]
Nameservers = [ 192.168.x.254 ]
Nameservers.Configuration = [  ]
Timeservers = [ 192.168.x.254 ]
Timeservers.Configuration = [  ]
Domains = [  ]
Domains.Configuration = [  ]
Proxy = [ Method=direct ]
Proxy.Configuration = [  ]
mDNS = False
mDNS.Configuration = False
Provider = [  ]

I've done some more work on this issue, it definitely appears to be dnsmasq-specific. Replacing the DHCP server on this network segment with ISC DHCPd results in working nodes. I've done some tracing of the DHCP DISCOVERY and OFFER, trying to get the DNSMasq OFFER to be the same as that offered by ISC.
I've got the difference down to DHCP options 58 and 59, which are offered by DNSMasq but not ISC, and there is no way of disabling those options.
For now I have implemented a workaround by running both DHCP servers on my network device and limiting ISC to the segment running K3OS.

@TechnoTaff please re-open if you think there is something that k3OS can do to fix this for others that may run into it.


[Tabs] Screen reader focus shouldn't select the tab

Bug report
Hello! While debugging Reakit and checking the behavior on other libraries, I found out that Radix has a similar issue.
Current Behavior
Focusing on the tab with VoiceOver automatically selects it. Therefore, users can't access the panels of previous tabs by moving the VO cursor.
Expected behavior
Screen reader focus shouldn't select the tab, only keyboard focus and clicks.
Reproducible example
I tested https://www.radix-ui.com/docs/primitives/components/tabs using VoiceOver on an iPad. But the same happens on iOS and Mac (if you use only VO+Arrow keys to move the virtual cursor).
Note that I can't access the contents of the "Account" panel by moving the VO cursor:
https://user-images.githubusercontent.com/3068563/146335454-ab2f4f74-c65f-4b3b-a6b1-d657462d8598.mov
I also couldn't move to the password panel after selecting it, but I think this is a separate issue (I guess it has something to do with VO not detecting lazily rendered elements).
Suggested solution
The VoiceOver virtual cursor will move DOM focus (by calling element.focus()) to the element if it's a <button>. There should be a distinction between focusing on tabs using arrow keys and when just calling element.focus() without arrow keys.
Alternatively, the tab could be rendered as another element, but this has other implications.
Your environment

Software
Name(s)
Version

Radix Package(s)
n/a
latest on the site

React
n/a
latest on the site

Browser
Safari
15.1

Assistive tech
VoiceOver

Operating System
macOS/iOS/iPadOS

I've looked into this briefly. I know we followed the WAI ARIA example here but looks like we missed something because theirs does as @diegohaz suggests:
https://user-images.githubusercontent.com/175330/146408818-7c9d57b1-fc57-4449-b509-92ab868c25be.mp4
We could maybe take advantage of aria-owns here too. It seems weird to activate a tab and then have to cycle through all tabs before getting to the content, but perhaps that's normal with this pattern?

We could maybe take advantage of aria-owns? It seems a bit odd to activate a tab and then have to cycle through all tabs before getting to the content, but perhaps that's normal with this pattern?

Safari doesn't support aria-owns (which is unfortunate, because it's really useful sometimes). But, yeah, I think it would be a bigger pain having to navigate through the contents to get to the next tab. Ultimately, users can choose to navigate through headings or other elements that may be inside the tab panel.

To add to this matter, I was checking the aria docs and I noticed that an outline should be visible on the tabs content only when navigating with a keyboard.
The main example on the radix docs show:
const StyledContent = styled(TabsPrimitive.Content, {
  flexGrow: 1,
  padding: 20,
  backgroundColor: 'white',
  borderBottomLeftRadius: 6,
  borderBottomRightRadius: 6,
  outline: 'none',

///Should this be :focus-within or how to solve not showing the boxshadow on mouse focus????
  '&:focus': { boxShadow: `0 0 0 2px black` },
});

Thanks for the answer. I thought the same but it actually doesn't.
:focus-within is applied both on click and keyboard navigation.
Do you suggest any other solution?

Hey @asherccohen, are you sure?
I've just made that change in the sandbox created directly from our website's demo and it works fine.
You can see when I tab to the content, it shows the focus ring, but when I click into the content it doesn't.
https://user-images.githubusercontent.com/1539897/172823414-a2dab89a-ad4e-4a27-a235-546069c80655.mp4

Sorry my bad, I didn't notice you suggest to use :focus-visible and I was trying :focus-within 😁.
That solved it, thanks.
In addition is there any documentation about the focus ring and focus trap?
I've built some custom primitives but haven't found a way to replicate their behaviour.

In addition is there any documentation about the focus ring and focus trap?
I've built some custom primitives but haven't found a way to replicate their behaviour.

We don't do anything specific regarding focus ring, for focus trapping, we have some internal components that are used by the primitives but we do not document them as we do not consider part of the public API.

Hey there @benoitgrelard and @jjenzz! 👋 Wanted to drop a note and see if there was anything we could do to assist here. We've just run into this issue and it's a bit of a blocker for us (see the PR @diegohaz just linked from), and we'd be happy to collaborate on a fix if that would help!

👋 Hi!  We were investigating using radix Tabs, but this was an issue that is keeping us from going this route.  Dug into the issue a bit, but got stumped, wanted to write some notes down.
So, the way this usually gets fixed is that the keyDown handler is prevented on the current focused item if the voiceover nav keys are being pressed.  Which the RovigFocusGroup properly puts the keydown on the button.  What's fascinating, is that if you remove the keydown from RovingFocusGroup, it STILL moves on arrows, but only for screenreader.  Something is happening more natively to cause focus to shift, since react is not even seeing a keydown event for the arrows when the voiceover nav is used.


Build fails for -DUSE_CUDA=1

Description
https://github.com/microsoft/LightGBM/issues/5089 is marked as resolved but this is still the case trying to build in RAPIDS Docker container:
#0 153.8 /usr/include/c++/11/bits/std_function.h:435:145: note:         '_ArgTypes'
#0 153.8 /usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with '...':
#0 153.8   530 |         operator=(_Functor&& __f)
#0 153.8       |                                                                                ^
#0 153.8 /usr/include/c++/11/bits/std_function.h:530:146: note:         '_ArgTypes'
#0 154.6 make[2]: *** [CMakeFiles/lightgbm_objs.dir/build.make:734: CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_best_split_finder.cu.o] Error 1
#0 154.6 make[1]: *** [CMakeFiles/Makefile2:257: CMakeFiles/lightgbm_objs.dir/all] Error 2
#0 154.6 make: *** [Makefile:136: all] Error 2

Reproducible example
Environment info
LightGBM version or commit hash:
Command(s) you used to install LightGBM
mkdir /tmp/lib && cd /tmp/lib  \
    && git clone --recursive https://github.com/microsoft/LightGBM \
    && mkdir /tmp/lib/LightGBM/build && cd /tmp/lib/LightGBM/build \
    && cmake -DUSE_CUDA=1 .. && make -j \
    && pip uninstall -y lightgbm \
    && cd ../python-package/ && python setup.py install --precompile

Build in docker FROM rapidsai/rapidsai-core:23.02-cuda11.8-runtime-ubuntu22.04-py3.10
GCC 11.3
Additional Comments

@jmakov Is it possible to see more error message? For example, why the compilation of cuda_best_split_finder.cu fail?

@shiyu1994 there seems to be only 1 type of error:
/tmp/lib/LightGBM/include/LightGBM/utils/../../../external_libs/fmt/include/fmt/format-inl.h(85): here

/usr/include/c++/11/bits/std_function.h:435:145: error: parameter packs not expanded with '...':
  435 |         function(_Functor&& __f)
      |
     ^
/usr/include/c++/11/bits/std_function.h:435:145: note:         '_ArgTypes'
/usr/include/c++/11/bits/std_function.h:530:146: error: parameter packs not expanded with '...':
  530 |         operator=(_Functor&& __f)
      |
      ^
/usr/include/c++/11/bits/std_function.h:530:146: note:         '_ArgTypes'

This is kinda a blocker for me. Would be great to have some more insight into what can be done about it.

I've been having similar problems I think.  Builds were failing until I switched gcc (and g++ for good measure) to version 10 for compiling.
Found solution from this reference:  https://github.com/NVIDIA/nccl/issues/650

Sorry for the long delay in response. I believe recent changes in LightGBM have fixed this.
 -DUSE_CUDA=1
cmake --build build --target _lightgbm -j2
sh build-python.sh install --precompile

That built successfully for me.
full logs (click me)
Configure step:
-- The C compiler identification is GNU 11.4.0
-- The CXX compiler identification is GNU 11.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The CUDA compiler identification is NVIDIA 12.0.76
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Check for working CUDA compiler: /opt/conda/bin/nvcc - skipped
-- Detecting CUDA compile features
-- Detecting CUDA compile features - done
-- Found OpenMP_C: -fopenmp (found version "4.5")
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5")
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Found CUDA: /opt/conda/targets/sbsa-linux (found suitable version "12.0", minimum required is "11.0")
-- CMAKE_CUDA_FLAGS:  -Xcompiler=-fopenmp -Xcompiler=-fPIC -Xcompiler=-Wall -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_62,code=sm_62 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80 -gencode arch=compute_86,code=sm_86 -gencode arch=compute_87,code=sm_87 -gencode arch=compute_89,code=sm_89 -gencode arch=compute_90,code=sm_90 -gencode arch=compute_90,code=compute_90 -O3 -lineinfo
-- ALLFEATS_DEFINES: -DPOWER_FEATURE_WORKGROUPS=12;-DUSE_CONSTANT_BUF=0;-DENABLE_ALL_FEATURES
-- FULLDATA_DEFINES: -DPOWER_FEATURE_WORKGROUPS=12;-DUSE_CONSTANT_BUF=0;-DENABLE_ALL_FEATURES;-DIGNORE_INDICES
-- Performing Test MM_PREFETCH
-- Performing Test MM_PREFETCH - Failed
-- Performing Test MM_MALLOC
-- Performing Test MM_MALLOC - Failed
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/lib/LightGBM/build

Build step:
[  1%] Building CUDA object CMakeFiles/histo_16_64_256_sp.dir/src/treelearner/kernels/histogram_16_64_256.cu.o
[  2%] Building CUDA object CMakeFiles/histo_16_64_256-fulldata_sp.dir/src/treelearner/kernels/histogram_16_64_256.cu.o
[  2%] Built target histo_16_64_256-fulldata_sp
[  2%] Built target histo_16_64_256_sp
[  4%] Building CXX object CMakeFiles/lightgbm_capi_objs.dir/src/c_api.cpp.o
[  5%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/boosting/boosting.cpp.o
[  6%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/boosting/gbdt.cpp.o
[  8%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/boosting/gbdt_model_text.cpp.o
[  8%] Built target lightgbm_capi_objs
[  9%] Building CUDA object CMakeFiles/histo_16_64_256_sp_const.dir/src/treelearner/kernels/histogram_16_64_256.cu.o
[ 10%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/boosting/gbdt_prediction.cpp.o
[ 12%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/boosting/prediction_early_stop.cpp.o
[ 13%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/boosting/sample_strategy.cpp.o
[ 13%] Built target histo_16_64_256_sp_const
[ 14%] Building CUDA object CMakeFiles/histo_16_64_256-fulldata_sp_const.dir/src/treelearner/kernels/histogram_16_64_256.cu.o
[ 16%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/bin.cpp.o
[ 16%] Built target histo_16_64_256-fulldata_sp_const
[ 17%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/config.cpp.o
[ 18%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/config_auto.cpp.o
[ 20%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/dataset.cpp.o
[ 21%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/dataset_loader.cpp.o
[ 22%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/file_io.cpp.o
[ 24%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/json11.cpp.o
[ 25%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/metadata.cpp.o
[ 27%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/parser.cpp.o
[ 28%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/train_share_states.cpp.o
[ 29%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/tree.cpp.o
[ 31%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/metric/dcg_calculator.cpp.o
[ 32%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/metric/metric.cpp.o
[ 33%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/network/linker_topo.cpp.o
[ 35%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/network/linkers_mpi.cpp.o
[ 36%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/network/linkers_socket.cpp.o
[ 37%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/network/network.cpp.o
[ 39%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/objective/objective_function.cpp.o
[ 40%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/data_parallel_tree_learner.cpp.o
[ 41%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/feature_histogram.cpp.o
[ 43%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/feature_parallel_tree_learner.cpp.o
[ 44%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/gpu_tree_learner.cpp.o
[ 45%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/gradient_discretizer.cpp.o
[ 47%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/linear_tree_learner.cpp.o
In file included from /tmp/lib/LightGBM/external_libs/eigen/Eigen/Core:214,
                 from /tmp/lib/LightGBM/external_libs/eigen/Eigen/Dense:1,
                 from /tmp/lib/LightGBM/src/treelearner/linear_tree_learner.cpp:7:
/tmp/lib/LightGBM/external_libs/eigen/Eigen/src/Core/arch/NEON/PacketMath.h: In function 'Packet Eigen::internal::pload(const typename Eigen::internal::unpacket_traits<T>::type*) [with Packet = Eigen::internal::eigen_packet_wrapper<int, 2>; typename Eigen::internal::unpacket_traits<T>::type = signed char]':
/tmp/lib/LightGBM/external_libs/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:1671:9: warning: 'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper<int, 2>'} from an array of 'const int8_t' {aka 'const signed char'} [-Wclass-memaccess]
 1671 |   memcpy(&res, from, sizeof(Packet4c));
      |   ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /tmp/lib/LightGBM/external_libs/eigen/Eigen/Core:172,
                 from /tmp/lib/LightGBM/external_libs/eigen/Eigen/Dense:1,
                 from /tmp/lib/LightGBM/src/treelearner/linear_tree_learner.cpp:7:
/tmp/lib/LightGBM/external_libs/eigen/Eigen/src/Core/GenericPacketMath.h:159:8: note: 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper<int, 2>'} declared here
  159 | struct eigen_packet_wrapper
      |        ^~~~~~~~~~~~~~~~~~~~
In file included from /tmp/lib/LightGBM/external_libs/eigen/Eigen/Core:214,
                 from /tmp/lib/LightGBM/external_libs/eigen/Eigen/Dense:1,
                 from /tmp/lib/LightGBM/src/treelearner/linear_tree_learner.cpp:7:
/tmp/lib/LightGBM/external_libs/eigen/Eigen/src/Core/arch/NEON/PacketMath.h: In function 'Packet Eigen::internal::ploadu(const typename Eigen::internal::unpacket_traits<T>::type*) [with Packet = Eigen::internal::eigen_packet_wrapper<int, 2>; typename Eigen::internal::unpacket_traits<T>::type = signed char]':
/tmp/lib/LightGBM/external_libs/eigen/Eigen/src/Core/arch/NEON/PacketMath.h:1716:9: warning: 'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper<int, 2>'} from an array of 'const int8_t' {aka 'const signed char'} [-Wclass-memaccess]
 1716 |   memcpy(&res, from, sizeof(Packet4c));
      |   ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /tmp/lib/LightGBM/external_libs/eigen/Eigen/Core:172,
                 from /tmp/lib/LightGBM/external_libs/eigen/Eigen/Dense:1,
                 from /tmp/lib/LightGBM/src/treelearner/linear_tree_learner.cpp:7:
/tmp/lib/LightGBM/external_libs/eigen/Eigen/src/Core/GenericPacketMath.h:159:8: note: 'Eigen::internal::Packet4c' {aka 'struct Eigen::internal::eigen_packet_wrapper<int, 2>'} declared here
  159 | struct eigen_packet_wrapper
      |        ^~~~~~~~~~~~~~~~~~~~
[ 48%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/serial_tree_learner.cpp.o
[ 50%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/tree_learner.cpp.o
[ 51%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/voting_parallel_tree_learner.cpp.o
[ 52%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/utils/openmp_wrapper.cpp.o
[ 54%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/boosting/cuda/cuda_score_updater.cpp.o
[ 55%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/boosting/cuda/cuda_score_updater.cu.o
[ 56%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/cuda/cuda_algorithms.cu.o
[ 58%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/cuda/cuda_utils.cpp.o
[ 59%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/cuda/cuda_column_data.cpp.o
[ 60%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/io/cuda/cuda_column_data.cu.o
[ 62%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/cuda/cuda_metadata.cpp.o
[ 63%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/cuda/cuda_row_data.cpp.o
[ 64%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/io/cuda/cuda_tree.cpp.o
[ 66%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/io/cuda/cuda_tree.cu.o
[ 67%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/metric/cuda/cuda_binary_metric.cpp.o
[ 68%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/metric/cuda/cuda_pointwise_metric.cpp.o
[ 70%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/metric/cuda/cuda_pointwise_metric.cu.o
[ 71%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/metric/cuda/cuda_regression_metric.cpp.o
[ 72%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/objective/cuda/cuda_binary_objective.cpp.o
[ 74%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/objective/cuda/cuda_binary_objective.cu.o
[ 75%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/objective/cuda/cuda_multiclass_objective.cpp.o
[ 77%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/objective/cuda/cuda_multiclass_objective.cu.o
[ 78%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/objective/cuda/cuda_rank_objective.cpp.o
[ 79%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/objective/cuda/cuda_rank_objective.cu.o
[ 81%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/objective/cuda/cuda_regression_objective.cpp.o
[ 82%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/objective/cuda/cuda_regression_objective.cu.o
[ 83%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_best_split_finder.cpp.o
[ 85%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_best_split_finder.cu.o
[ 86%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_data_partition.cpp.o
[ 87%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_data_partition.cu.o
[ 89%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_gradient_discretizer.cu.o
[ 90%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_histogram_constructor.cpp.o
[ 91%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_histogram_constructor.cu.o
[ 93%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_leaf_splits.cpp.o
[ 94%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_leaf_splits.cu.o
[ 95%] Building CXX object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_single_gpu_tree_learner.cpp.o
[ 97%] Building CUDA object CMakeFiles/lightgbm_objs.dir/src/treelearner/cuda/cuda_single_gpu_tree_learner.cu.o
[ 97%] Built target lightgbm_objs
[ 98%] Linking CUDA device code CMakeFiles/_lightgbm.dir/cmake_device_link.o
[100%] Linking CXX shared library ../lib_lightgbm.so
[100%] Built target _lightgb

Python build + install logs.
building lightgbm
Collecting build>=0.10.0
  Downloading build-1.2.1-py3-none-any.whl.metadata (4.3 kB)
Requirement already satisfied: packaging>=19.1 in /opt/conda/lib/python3.10/site-packages (from build>=0.10.0) (24.0)
Collecting pyproject_hooks (from build>=0.10.0)
  Downloading pyproject_hooks-1.0.0-py3-none-any.whl.metadata (1.3 kB)
Collecting tomli>=1.1.0 (from build>=0.10.0)
  Downloading tomli-2.0.1-py3-none-any.whl.metadata (8.9 kB)
Downloading build-1.2.1-py3-none-any.whl (21 kB)
Downloading tomli-2.0.1-py3-none-any.whl (12 kB)
Downloading pyproject_hooks-1.0.0-py3-none-any.whl (9.3 kB)
Installing collected packages: tomli, pyproject_hooks, build
Successfully installed build-1.2.1 pyproject_hooks-1.0.0 tomli-2.0.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
found pre-compiled lib_lightgbm.so
--- building sdist ---
* Creating isolated environment: venv+pip...
* Installing packages in isolated environment:
  - setuptools
* Getting build dependencies for sdist...
running egg_info
creating lightgbm.egg-info
writing lightgbm.egg-info/PKG-INFO
writing dependency_links to lightgbm.egg-info/dependency_links.txt
writing requirements to lightgbm.egg-info/requires.txt
writing top-level names to lightgbm.egg-info/top_level.txt
writing manifest file 'lightgbm.egg-info/SOURCES.txt'
reading manifest file 'lightgbm.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.dll' under directory 'lightgbm'
warning: no files found matching '*.dylib' under directory 'lightgbm'
adding license file 'LICENSE'
writing manifest file 'lightgbm.egg-info/SOURCES.txt'
* Building sdist...
running sdist
running egg_info
writing lightgbm.egg-info/PKG-INFO
writing dependency_links to lightgbm.egg-info/dependency_links.txt
writing requirements to lightgbm.egg-info/requires.txt
writing top-level names to lightgbm.egg-info/top_level.txt
reading manifest file 'lightgbm.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.dll' under directory 'lightgbm'
warning: no files found matching '*.dylib' under directory 'lightgbm'
adding license file 'LICENSE'
writing manifest file 'lightgbm.egg-info/SOURCES.txt'
running check
creating lightgbm-<IP_ADDRESS>
creating lightgbm-<IP_ADDRESS>/lightgbm
creating lightgbm-<IP_ADDRESS>/lightgbm.egg-info
creating lightgbm-<IP_ADDRESS>/lightgbm/lib
copying files to lightgbm-<IP_ADDRESS>...
copying LICENSE -> lightgbm-<IP_ADDRESS>
copying MANIFEST.in -> lightgbm-<IP_ADDRESS>
copying README.rst -> lightgbm-<IP_ADDRESS>
copying pyproject.toml -> lightgbm-<IP_ADDRESS>
copying setup.cfg -> lightgbm-<IP_ADDRESS>
copying lightgbm/__init__.py -> lightgbm-<IP_ADDRESS>/lightgbm
copying lightgbm/basic.py -> lightgbm-<IP_ADDRESS>/lightgbm
copying lightgbm/callback.py -> lightgbm-<IP_ADDRESS>/lightgbm
copying lightgbm/compat.py -> lightgbm-<IP_ADDRESS>/lightgbm
copying lightgbm/dask.py -> lightgbm-<IP_ADDRESS>/lightgbm
copying lightgbm/engine.py -> lightgbm-<IP_ADDRESS>/lightgbm
copying lightgbm/libpath.py -> lightgbm-<IP_ADDRESS>/lightgbm
copying lightgbm/plotting.py -> lightgbm-<IP_ADDRESS>/lightgbm
copying lightgbm/py.typed -> lightgbm-<IP_ADDRESS>/lightgbm
copying lightgbm/sklearn.py -> lightgbm-<IP_ADDRESS>/lightgbm
copying lightgbm.egg-info/PKG-INFO -> lightgbm-<IP_ADDRESS>/lightgbm.egg-info
copying lightgbm.egg-info/SOURCES.txt -> lightgbm-<IP_ADDRESS>/lightgbm.egg-info
copying lightgbm.egg-info/dependency_links.txt -> lightgbm-<IP_ADDRESS>/lightgbm.egg-info
copying lightgbm.egg-info/requires.txt -> lightgbm-<IP_ADDRESS>/lightgbm.egg-info
copying lightgbm.egg-info/top_level.txt -> lightgbm-<IP_ADDRESS>/lightgbm.egg-info
copying lightgbm/lib/lib_lightgbm.so -> lightgbm-<IP_ADDRESS>/lightgbm/lib
copying lightgbm.egg-info/SOURCES.txt -> lightgbm-<IP_ADDRESS>/lightgbm.egg-info
Writing lightgbm-<IP_ADDRESS>/setup.cfg
Creating tar archive
removing 'lightgbm-<IP_ADDRESS>' (and everything under it)
Successfully built lightgbm-<IP_ADDRESS>.tar.gz
--- installing lightgbm ---
WARNING: Skipping lightgbm as it is not installed.
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Looking in links: .
Processing ./lightgbm-<IP_ADDRESS>.tar.gz
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: numpy in /opt/conda/lib/python3.10/site-packages (from lightgbm) (1.26.4)
Requirement already satisfied: scipy in /opt/conda/lib/python3.10/site-packages (from lightgbm) (1.13.0)
Building wheels for collected packages: lightgbm
  Building wheel for lightgbm (pyproject.toml) ... done
  Created wheel for lightgbm: filename=lightgbm-<IP_ADDRESS>-py3-none-any.whl size=62203670 sha256=ea5fe085de440887522cfa4a3b9f9ee1b076bc93be325cd1a3f068471d73bdf8
  Stored in directory: /tmp/pip-ephem-wheel-cache-_be0h8ev/wheels/97/06/d4/842e2ab3fea42d639f11ba3250fbe19b540afb7108b58b2cfc
Successfully built lightgbm
Installing collected packages: lightgbm
Successfully installed lightgbm-<IP_ADDRESS>
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
cleaning up

Sorry for the long delay in response. I believe recent changes in LightGBM have fixed this.
 -DUSE_CUDA=1
cmake --build build --target _lightgbm -j2
sh build-python.sh install --precompile

That built successfully for me.
full logs (click me)

Wondering if it's possible to enforce architecture somehow. Trying to reproduce your commands on NVIDIA RTX 6000 Ada (SM 8.9) &  CUDA Version: 12.4,  Ubuntu 20.04.6 LTS leads to

#$ "/usr/bin"/c++ -D__CUDA_ARCH__=300 -E -x c++
-DCUDA_DOUBLE_MATH_FUNCTIONS -D__CUDACC__ -D__NVCC__
-D__CUDACC_VER_MAJOR__=10 -D__CUDACC_VER_MINOR__=1
-D__CUDACC_VER_BUILD__=243 -include "cuda_runtime.h" -m64
"CMakeCUDACompilerId.cu" > "tmp/CMakeCUDACompilerId.cpp1.ii"
#$ cicc --c++14 --gnu_version=80400 --allow_managed -arch compute_30 -m64
-ftz=0 -prec_div=1 -prec_sqrt=1 -fmad=1 --include_file_name
"CMakeCUDACompilerId.fatbin.c" -tused -nvvmir-library
"/usr/lib/nvidia-cuda-toolkit/libdevice/libdevice.10.bc"
--gen_module_id_file --module_id_file_name
"tmp/CMakeCUDACompilerId.module_id" --orig_src_file_name
"CMakeCUDACompilerId.cu" --gen_c_file_name
"tmp/CMakeCUDACompilerId.cudafe1.c" --stub_file_name
"tmp/CMakeCUDACompilerId.cudafe1.stub.c" --gen_device_file_name
"tmp/CMakeCUDACompilerId.cudafe1.gpu" "tmp/CMakeCUDACompilerId.cpp1.ii" -o
"tmp/CMakeCUDACompilerId.ptx"
#$ ptxas -arch=sm_30 -m64 "tmp/CMakeCUDACompilerId.ptx" -o
"tmp/CMakeCUDACompilerId.sm_30.cubin"
ptxas fatal : Value 'sm_30' is not defined for option 'gpu-name'

Nevermind. I had to remove nvidia-cuda-toolkit (which I installed 'cause it allowed  open CL version of lightgbm to work, only to find out it's buggy on big datasets and overall an abandoned branch).
Currently stuck at

found pre-compiled lib_lightgbm.so
--- building sdist ---
build-python.sh: 347: python: not found

Why is it so hard to get lightgbm working with GPU? Catboost & Xgboost teams somehow managed to solve it with single "pip install" command.

build-python.sh: 347: python: not found

You have to have Python installed and a python executable available on PATH to build LightGBM's Python package.
I strongly suspect that you aren't using the exact example I provided in #5785 (comment), but you haven't described your setup here so it's not possible to help much more.

Why is it so hard to get lightgbm working with GPU?  Catboost & Xgboost teams somehow managed to solve it with single "pip install" command

We're doing the best we can with a much smaller amount of maintainer availability. Those projects both have multiple maintainers being paid to work on them full-time... LightGBM does not.
You're welcome to come contribute here any time.

Yeah, I know. Thanks a lot for your hard work, guys. I hope getting an easier access to GPU training is on the roadmap. Not experienced myself in that, otherwise would contribute for sure.


target java7

https://github.com/trueaccord/ScalaPB/pull/52 is not enough because

there are some java files in ScalaPB
does not support -target:jvm-1.7 option Scala 2.12.0-M2 or later

Thanks for fixing this!


Suggestion : Clicking on talent's from character sheet

Currently when we click on a talent in a character sheet it pulls up the specialization that is attached to the character. I think that if it brought up the specific talent it would be more logical, giving specific feedback on that particular talent instead of having to find it within the entire specialization tree.

I agree, this was the previous behaviour (and remains the behaviour for individual non-spec talents).

Yes, I noticed that dropped talents have the tooltip filling with the talent info on mouse hover. Sounds good!

Ok the interesting thing about this one is, the link from specialization to talent is to the global talent, not the ownedItem talent.   This means the talent HAS to be visible to the player in order for them to be able to click on it and display

Fixed in dev branch now


Added main menu

Added a minimal main menu for the purposes of implementing a 2 player game mode.
Currently both buttons start the original single player version.
closes #8

Closing this as the changes are included in #13


ELECTRON-430: Enable context isolation

Description
This PR helps in adding another layer of security to the Electron container. Enabling context isolation is going to provide the container and the remote content loaded in it their own sets of JS context thus preventing any modification of global objects. ELECTRON-430
Approach
N/A
Learning
N/A
Blog Posts
N/A
Related PRs
N/A
Open Questions if any and Todos

[ ] Unit-Tests
[x] Documentation
[ ] Automation-Tests

@VishwasShashidhar Do not merge this as we'll need to wait for 2.0.0 to be available first.


Add document for plugins?

Can we add document for plugins?

The package plugin has some documents in its comments: https://pkg.go.dev/github.com/cloudwego/thriftgo/plugin. See if it solves your question.

@lsjbd Is there any example of the reference implementation of the plugin?

@lsjbd Is there any example of the reference implementation of the plugin?

@choleraehyq We will provide some simple examples in the future. By the moment, the kitex command line tool may be the only plugin implementation whose source is public available. It is not so well written, but still an actual example demonstrating how to implement a plugin. See https://github.com/cloudwego/kitex/tree/develop/tool/internal/pkg/pluginmode/thriftgo.


[1.1.1] Append CVE-2019-1547 to related CHANGES entry

Title says it all.
The original PR with the code changes for 1.1.1 was #9781
Checklist

[x] documentation is added or updated
[ ] tests are added or updated

Merged to 1.1.1-stable with

95803917ad Append CVE-2019-1547 to related CHANGES entry

Thanks!


Fixed Issue #2692 for empty popup while uploading image

Description (required)
Fixed Issue #2692 of empty message in popup while uploading Image
Fixes #2692 Potential problems with this image : No problem
Changes made
Modified ImageUtils.java to Identify image with no EXIF
Screenshot

Codecov Report

Merging #2697 into master will decrease coverage by <.01%.
The diff coverage is 0%.

@@            Coverage Diff            @@
##           master   #2697      +/-   ##
=========================================
- Coverage    2.81%   2.81%   -0.01%
=========================================
  Files         258     258
  Lines       12376   12378       +2
  Branches     1111    1112       +1
=========================================
  Hits          349     349
- Misses      12001   12003       +2
  Partials       26      26

Impacted Files
Coverage Δ

...ain/java/fr/free/nrw/commons/utils/ImageUtils.java
0% <0%> (ø)
:arrow_up:

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 a1a65d0...75032b7. Read the comment docs.

Tested 2.10.1-debug-upload_image_popup~49e146bc3
Beta Commons Upload

Thanks for approving the PR @domdomegg :)


vector: 0.20.1 -> 0.21.0

Description of changes
here are the release notes https://vector.dev/releases/0.21.0/
don't expect any trouble upgrading (speaking for myself).
Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.05 Release Notes (or backporting 21.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

@thoughtpolice you might be impacted by this release. I couldn't figure out how to build with the kafka feature enabled.
it says mig: command not found.

I found a way to enable kafka in the end.
This breaks on darwin, but will merge for now.


Rename StackPointCloud to NKS

StackPointCloud is now NetApp Kubernetes Service (NKS). Also add On-prem checkmark to NKS.

CLA Signed.

/assign @bradtopol

great job
/lgtm
/approve


docker pull fail

not use DOCKER_BUILDKIT
if docker image pull is fail do re-pull

Great, everything is back to green 👍 Thank you for all your work!


add vue-antd-ui

add vue-antd-ui https://github.com/vueComponent/ant-design

Sure?
But the same type of element-ui and iview in this category


Chat Card Content gets removed after page refresh

In the example chat_room.py, the chat data remains after refresh, however when I implement it in modular style, the chat content history gets removed after refresh. I am not doing anything different than the example, for it is quite simple.
Any thoughts on this would be helpful!

Related: https://github.com/h2oai/wave/discussions/744


How to enable the feature of HTTP job callback under the multi-executor mode?

I install azkaban server with release version '3.52.0' in my multi-executor mode env, and with some configuration added to the file 'global.properties':
job.notification.started.1.headers=Content-type:application/json job.notification.started.1.method=POST job.notification.started.1.url=http://<IP_ADDRESS>:8080/job-scheduler/callback  job.notification.started.1.body={"project":"?{project}","flow":"?{flow}","job":"?{job}","executionId":"?{executionId}","status":"?{status}"}
And then I submit a job to Azkaban server, and job is succeeded, but no callbacks are received in the job submission side(job-scheduler/callback).  Maybe something is misconfigured?
Any advice and suggestions will be greatly appreciated.
Thanks in advance.
-dean

Try to add these configurations into *.job file


Set-Culture does not work in ScriptBlock

$server = "server1.xyz.com"
Invoke-Command -ComputerName $server -ScriptBlock{
#Requires -RunAsAdministrator
Set-Culture -CultureInfo en-GB;
Set-TimeZone -id "GMT Standard Time"
Get-UICulture
Get-Culture
}
Event though it is working when run directly on the server, Set-Culture does not work on the remote server.

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

ID: 3c3d9f2e-a037-cd47-8c16-1ac463bea7a7
Version Independent ID: df4184ad-7066-084b-da1b-2ecf46803043
Content: Set-Culture (international)
Content Source: docset/windows/international/set-culture.md
Product: w10
GitHub Login: @coreyp-at-msft
Microsoft Alias: coreyp

@officedocsbot unassign @e0i
@officedocsbot assign @yogkumgit

Hello @quickware
Thanks for your feedback.
I tested and could verify what you experienced. Also I assume you are taking into account this
Although, this issue resource system is specifically to address issues in documentation, so I encourage you to please visit this resource for further help:
https://support.microsoft.com
Thank you

@get-itips  Thank you very much for the contribution and sharing this explanation. @quickware
Hope this comment is helpful for you. Thanks for taking out some time to open the issue. Appreciate and encourage you to do the same in future also.

@officedocsbot close


Typo "a GitHub action"→"a  GitHub Action"

https://docs.microsoft.com/en-us/azure/devops/pipelines/ecosystems/github-actions?view=azure-devops
https://github.com/MicrosoftDocs/azure-devops-docs/blob/main/docs/pipelines/ecosystems/github-actions.md
#PingMSFTDocs

@hyoshioka0128 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@hyoshioka0128 We refer to GitHub Actions with the Actions capitalized as a product and actions in lowercase for specific actions. This matches the GitHub documentation.

@hyoshioka0128 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off

#sign-off


CLI tools

Hello,
Thanks a lot for the tool.
I wondered if there was a CLI version available?
Best regards,
David

Hi @davidpham87, glad Kaleido has been helpful for you.
The core of Kaleido is a command-line C++ application, but it's not very user friendly. It inputs JSON to standard in and outputs JSON to standard out. There's some more info at https://github.com/plotly/Kaleido/wiki/Language-Wrapper-Architecture.
One thing that wouldn't be too hard would be to add a Python-based CLI wrapper using click.  Would this approach work for you?  If so, we would need to decide whether to add it to the kaleido or plotly Python packages.
Another option would be to write a pure shell wrapper for the C++ executable using jq. This would avoid introducing a Python dependency, but I'm much less likely to tackle this myself.

Hi @jonmmease
Thanks a lot for your swift answer!
My use case would be to either give the path of a json plotly configuration or to inline it as well. I would embed it into bigger programs written in Clojure/ClojureScript/NodeJs.   It would nice to have the C++ executable exposed at least, so that we could experiment and is also the most simple (in the sense of not entangled and could be composed in many other applications). The python wrapper is probably the easiest solution, and would already help the community.

Hi @davidpham87,
Ok, if your goal is to programmatically call Kaleido from another programming language, then the current command-line JSON interface may actually be what you want to use.  You can download the C++ executable (without Python dependencies) from the release page (https://github.com/plotly/Kaleido/releases/tag/v0.0.1). Here you want the kaleido_*-0.0.1.zip files.
Then you can call this executable as a subprocess of nodejs and communicate with it over standard-in/standard-out according to https://github.com/plotly/Kaleido/wiki/Language-Wrapper-Architecture.  This has already been done by the plotly rust library (https://github.com/igiagkiozis/plotly/blob/master/plotly_kaleido/src/lib.rs), and there is a WIP wrapper for the plotly F# library at https://gist.github.com/jonmmease/2616440ebea523b83f25100f5c6a9a7f.
You're welcome to do this as a one-off for your application, but it would also be great if you were interested in creating a standalone kaleido npm package that bundles the C++ executable for each platform and includes the wrapper for communicating with it.
Since you mentioned NodeJS and ClojureScript I assume you're mostly interested in the JavaScript ecosystem, but if you're also interested in the Clojure JVM ecosystem then I wanted to mention that the Plotly Scala library is considering Kaleido integration in https://github.com/alexarchambault/plotly-scala/issues/207. In that case it might make sense to work together with them to create a pure Java wrapper that is easy to call from Scala or Clojure.
Hope that helps!

Hi @jonmmease
Thanks for your answer. I will double check all your solutions. Thanks a lot!


Skip binary files

If I were to run
$ eclint check *

eclint runs on all binary files, but these should be ignored, perhaps using is-binary-path as a blacklist or is-text-path as a whitelist

/cc @jedmao

The EditorConfig js core is one of many cores and should be the one responsible for handling this request. I think this issue would be best requested in the general EditorConfig issue tracker so that all cores would ignore binary files, if accepted. Until then, i don't think this is an eclint concern.

Reopening in response to https://github.com/editorconfig/editorconfig-core-js/issues/42#issuecomment-273396875. Willing to accept a PR, but I'm not really maintaining this project any more these days.

@bfred-it fixed in master branch.

Excellent! Thank you 🙂

I haven't released what's on master yet though. I'm waiting for https://github.com/DefinitelyTyped/DefinitelyTyped/pull/14996.

The type def has landed!


openvr: 1.23.6 -> 1.26.7

Description of changes
https://github.com/ValveSoftware/openvr/compare/v1.23.7...v1.26.7
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

I just added a commit to switch to finalAttrs pattern.


Bug Report: missing haxe toolkit?

I followed the instructions to download the kade engine and when I try to build the game it gives me this error message : Error: Source path "C:/HaxeToolkit/haxe/lib/extension-webm/git/ndll/Windows64/extension-webm.ndll does not exist" . how can I fix that?

make sure to download this here . close this issue once you fix this issue.

hello, I tried downloading what you sent me to but it still didn't work. is there anything else that might work?

do you have a ndll file for webm in the kade engine file ? if not , thats the issue. its suppose to be located like shown on here. also this is file should be on the most recent kade version.


[QUERY] CredentialUnavailableException handling when using DefaultAzureCredential and AzureSDKs

Library name and version
Azure.Identity 1.4.1
Query/Question
We have infrastructure that is deployed to AKS. In order to connect our managed identity in this current subscription we assign the ManagedIdentity in our resource group to the AAD-PodIdentity system assigned managed identity. For the most part this is working well. Our service is an EventHubProcessor client that is started using Microsoft Generic Host framework and deployed to our AKS. This service also communicates with CosmosDB and Azure Storage Accounts for both the eventhubcheckpoint in blob and storage queues. The problem occurs when our application starts up and tries to authenticate to our services using the DefaultAzureCredential. It appeared as thought we fixed the issue by always "newing" up the DefaultCredential with the ManagedIdentity Client ID being passed in and all other authentication methods turned off. Unfortunately I discovered today that we started getting CredentialUnavailableExceptions for all of our services with the message "Endpoint not found".  I haven't pinpointed exactly how this issue keeps appearing as it seems to happen immediately on startup which is ok because our istio sidecar proxy hasn't applied the identity binding immediately. However, when this is stood up and our service is running the credential seems to lose authentication and crashes the application causing the pod to restart.  The ask here is to figure out what we may need to do either in our code or with how our infrastructure is setup to get the proper credentials.
For services like the EventHubProducerClient, Storage, KeyVault we are using the AzureClientBuilder during registrations:
Func<IServiceProvider, TokenCredential> credentialFactory = (services) =>
				{
					var credentialFactory = services.GetRequiredService<IIdentityClientFactory>();
					return credentialFactory.GetTokenCredential();
				};

				builder
					.AddQueueServiceClient(serviceUri)

					.ConfigureOptions(
						opts =>
						{
							opts.MessageEncoding = QueueMessageEncoding.Base64;
						})
					.WithCredential((services) => credentialFactory.Invoke(services));

				builder
					.AddBlobServiceClient(blobServiceUri)
					.WithCredential((services) => credentialFactory.Invoke(services));

and passed a credential factory that only does this:
public TokenCredential GetTokenCredential()
		{
			DefaultAzureCredentialOptions azureCredentialOptions = TokenCredentialHelper.CreateCredentialOptions(_config["ManagedIdentityClientId"]);
			return new DefaultAzureCredential(azureCredentialOptions);
		}

However with other services like cosmos client we are just using the credential factory and passing it to the contructor of the cosmos client like so:
var credential = _identityClientFactory.GetTokenCredential();
cosmosClient = new CosmosClient(cosmosUri, credential, _cosmosConfig.ClientOptions);

The ask here is, what is the correct way to handle fetching new tokens when getting the CredentialUnavailableException? It seems the tokens are cached when instantiating these services and most have Scoped lifetimes to help reinitialize per event received. Is there some sort of retry functionality we should be including when CredentialUnavialbleException is thrown?
Example stacktrace:
Azure.Identity.CredentialUnavailableException: ManagedIdentityCredential authentication unavailable. No Managed Identity endpoint found.\n   at Microsoft.Azure.Cosmos.Routing.GlobalEndpointManager.GetAccountPropertiesHelper.GetAccountPropertiesAsync()\n   at Microsoft.Azure.Cosmos.GatewayAccountReader.InitializeReaderAsync()\n   at Microsoft.Azure.Cosmos.CosmosAccountServiceConfiguration.InitializeAsync()\n   at Microsoft.Azure.Cosmos.DocumentClient.InitializeGatewayConfigurationReaderAsync()\n   at Microsoft.Azure.Cosmos.DocumentClient.GetInitializationTaskAsync(IStoreClientFactory storeClientFactory)\n   at Microsoft.Azure.Cosmos.DocumentClient.EnsureValidClientAsync(ITrace trace)\n   at Microsoft.Azure.Cosmos.DocumentClient.GetCollectionCacheAsync(ITrace trace)\n   at Microsoft.Azure.Cosmos.ContainerCore.GetCachedContainerPropertiesAsync(Boolean forceRefresh, ITrace trace, CancellationToken cancellationToken)\n   at Microsoft.Azure.Cosmos.ContainerCore.GetPartitionKeyDefinitionAsync(CancellationToken cancellationToken)\n   at Microsoft.Azure.Cosmos.ContainerCore.ExtractPartitionKeyAndProcessItemStreamAsync[T](Nullable`1 partitionKey, String itemId, T item, OperationType operationType, ItemRequestOptions requestOptions, ITrace trace, CancellationToken cancellationToken)\n   at Microsoft.Azure.Cosmos.ContainerCore.CreateItemAsync[T](T item, ITrace trace, Nullable`1 partitionKey, ItemRequestOptions requestOptions, CancellationToken cancellationToken)\n   at Microsoft.Azure.Cosmos.ClientContextCore.RunWithDiagnosticsHelperAsync[TResult](ITrace trace, Func`2 task)\n   at Microsoft.Azure.Cosmos.ClientContextCore.OperationHelperWithRootTraceAsync[TResult](String operationName, RequestOptions requestOptions, Func`2 task, TraceComponent traceComponent, TraceLevel traceLevel)\n   at ResourceScheduler.Data.Infrastructure.Implementations.CosmosDbRepository`1.<>c__DisplayClass16_0.<<CreateAsync>b__0>d.MoveNext() in S:\\...\\CosmosDbRepository.cs:line 66\n--- End of stack trace from previous location ---\n   at....Implementations.CosmosDbRepository`1.<CosmosActionWrapper>z__OriginalMethod(String id, Func`1 action)

Environment
.NET 5 Generic Hosting Framework. Deployed to AKS cluster.

Thank you for your feedback.  Tagging and routing to the team members best able to assist.

Hi @d-m4m4n In version 1.5.0 of Azure.Identity, we made some changes to how the managed identity endpoint is discovered (and determined to be unavailable). The newer version tries for much longer, which avoids false negatives when the endpoint doesn't appear immediately. Are you able to reproduces this with that version?

Hi @d-m4m4n In version 1.5.0 of Azure.Identity, we made some changes to how the managed identity endpoint is discovered (and determined to be unavailable). The newer version tries for much longer, which avoids false negatives when the endpoint doesn't appear immediately. Are you able to reproduces this with that version?

Hey thanks for the reply! That was going to be my next step. I will give that a shot and see if that helps. I didn't see anything in the release notes so wasn't sure if there were any changes related. Will confirm in a few hours!

Hi @d-m4m4n In version 1.5.0 of Azure.Identity, we made some changes to how the managed identity endpoint is discovered (and determined to be unavailable). The newer version tries for much longer, which avoids false negatives when the endpoint doesn't appear immediately. Are you able to reproduces this with that version?

So I have updated and not seeing the CredentialUnavailableException. I am wondering if the above code seems correct? Or is there a better way to handle retries especially when these exceptions are thrown.

In version 1.5.0, the retries are handled automatically by DefaultAzureCredential so you shouldn't need to retry in your own code. Previously we just tried to make a TCP connection to the endpoint and failed if it did not connect on the first try after less than a second. The new code uses a default Retry policy.

In version 1.5.0, the retries are handled automatically by DefaultAzureCredential so you shouldn't need to retry in your own code. Previously we just tried to make a TCP connection to the endpoint and failed if it did not connect on the first try after less than a second. The new code uses a default Retry policy.

Awesome. Well that solves this issue. Thanks so much for your help!


ES: EXPECTEDKEYUSAGE

Affected Country: ES
Issue Description
Test files are failing EXPECTEDKEYUSAGE test. DSC Certificate used is valid for 'Email protection' and 'client authentication' only.
https://github.com/eu-digital-green-certificates/dgc-testdata/blob/main/ES/2DCode/raw/1101.json
https://github.com/eu-digital-green-certificates/dgc-testdata/blob/main/ES/2DCode/raw/1102.json
https://github.com/eu-digital-green-certificates/dgc-testdata/blob/main/ES/2DCode/raw/1103.json
https://github.com/eu-digital-green-certificates/dgc-testdata/blob/main/ES/2DCode/raw/1501.json
https://github.com/eu-digital-green-certificates/dgc-testdata/blob/main/ES/2DCode/raw/1502.json
https://github.com/eu-digital-green-certificates/dgc-testdata/blob/main/ES/2DCode/raw/1503.json
Proposed Solution
Either ExtendedKeyUsage should be Empty OR Have appropriate values from 4.3 Document Signer (DSC)

@SchulzeStTSI and @daniel-eder , This could be closed as latest tests for ES are good.


C code generation - encode function saturation on overflow

I think it would be good for the _encode(...) functions to saturate value to protect against overflow when converting from a floating-point number to an integer.
I think the saturation shall be according to a number of bits for the signal and not the specified signal range.
I think using saturation should be a default for the generated code.

Sounds reasonable. That overflow is never the wanted outcome. I think range test is probably best done using some bitwise ops to keep encode fast. PR welcome.

I also agree in principle, but I'm not sure if an overflow can actually happen here because when converting physical (float) to internal (integer) values, the physical values need to be "unscaled" before the type cast. (I might  miss something, though.)

@juleq I think the range test would have to be done while still in float.
It would have to be compared to 2^bits for unsigned and +/- 2^(bits-1) for signed signals.
For example (signed 8bit signal):
int8_t Msg_steering_status_steering_speed_encode(float value)
{
    return (int8_t)(value / 0.015625f);
}

Would become something like this:
int8_t Msg_steering_status_steering_speed_encode(float value)
{
value = value / 0.015625f;
if (value > 127)
{
   value = 127;  //or return (int8_t) 127;
}
if (value < -128)
{
   value = -128;
}
    return (int8_t)(value);
}

If the signal were stored in some weird 7bit, it would have to be compared to 63 and -64.

Yes, you are right. Not that familiar with the code gen. You naturally can just render out the constants to check against which makes it simple enough. I was thinking about encoding it into a generic int type and then masking it down to target width.

@juleq No, because double maximum value is a massive 1.79e+308. There would always be a possibility to overflow even int64. Neither would this be efficient.
Unless I misunderstood.

@andlaus Can still overflow.
@dzid26 Yes, but not fitting any intermediate integer format is a generic encoding error not specific to the signal. But your proposal is the best way to do it. I’d go with that.

@andlaus Can still overflow.

even if the value of the physical signal is in range [signal.minimum, signal.maximum]?

@andlaus I see what you are getting at. That depends:

Are the min and max correct? Is there code in place to enforce that min/max (phy) do fit the raw data type?
If they are correct: Is the value being in range (min, max) being enforced?

I have not looked into the generator. @andlaus comment does raise a question though: Maybe the safeguards before scaling and typecasting are sufficient (if in place).
If min and max are checked for validity and encode is aborted for values outside (min, max), overflows do not happen.

Are the min and max correct? Is there code in place to enforce that min/max (phy) do fit the raw data type?

possibly not. one could scale 0 and (1<<signal.length) -1 to get physical values that always ought to work, though? (if the scaling factor and offsets are not something ridiculous like NaN or Inf...)

@andlaus Can still overflow.

even if the value of the physical signal is in range [signal.minimum, signal.maximum]?

C code doesn't have access to these values currently. They are not generated.
Nor do I think the range values should be used as value limits to prevent overflow. They can be higher than the true signal range.
There is no safeguard currently for the float to int casting.
There is also a _range() test function being generated but it is expected to be used on integer values (after being converted from float).
For reference here example of what is available:
/**
 * Signals in message STEERING_STATUS.
 *
 * All signal values are as on the CAN bus.
 */
struct Msg_steering_status_t {
    /**
     * Steering speed calculated from motor position sensor
     *
     * Range: -128..127 (-2..1.984375 rev/s)
     * Scale: 0.015625
     * Offset: 0
     */
    int8_t steering_speed;
};

int8_t Msg_steering_status_steering_speed_encode(float value)
{
    return (int8_t)(value / 0.015625f);
}

bool Msg_steering_status_steering_speed_is_in_range(int8_t value)
{
    (void)value;

    return (true);
}

_range() test always returns true, when the whole signal range is used. I would say range test in this case shouldn't even be generated, but that's how it is now.

I see, I guess this is a workable solution given the limitations of the generated C code.

_range() test always returns true, when the whole signal range is used.  I would say range test in this case shouldn't even be generated, but that's how it is now.

I agree. That said, I think a better solution would be to make Msg_steering_status_steering_speed_is_in_range() take physical (float) values, and let it check either the limits deriving from the length of the signal or the ones given by the database file (whichever is more restrictive).


Meshes disappear when triggering blendshapes on some old GPUs

Hi!
Due to a bug in Unity, on certain old GPUs meshes can disappear when blendshapes are activated. This happens because GPU skinning requires compute shaders and Unity fails to fall back to CPU skinning. It mostly happens with old integrated Intel graphics, like Intel HD Graphics 3000 from 2011.
I heard today VMagicMirror is affected by this Unity bug as well. The result can look like this:

It can be resolved by either building with Unity 2019.4.12f1 or newer, or disabling GPU skinning.

@emilianavt
Hi!
Thank you for report, I am aware of this problem but did not know the background so it is very helpful.
In develop branch I already have updated Unity version to 2019.4.14f1 by #467 , so the problem will be solved.
I will close the issue when the next version is released.

close with v1.6.0 release.


[WebView] Provide a Dart<->Javascript communication channel

Edited by amirh:
This is a request for a communication mechanism between the Flutter app's Dart code, and Javascript code running in the WebView.
Original description:
Android allows specifying a Javascript interface to act as a bridge between the webview and Android code. Similarly, iOS provides the UiWebView stringByEvaluatingJavaScriptFromString method that allows communicating with the underlying webview. Flutter should support this.
Example use case: Embedding a rich text HTML editor to edit existing HTML.

There's a similar request in the fluttercommunity/flutter_webview_plugin plugin: https://github.com/fluttercommunity/flutter_webview_plugin/issues/71

Do you mean an interface between the Flutter app's Dart code and Javascript code that's running in the WebView?

Correct, for example being able to call a JS function in the webview from Dart code (as is allowed in both Android and iOS).

Examples:
https://developer.android.com/guide/webapps/webview#BindingJavaScript
https://developer.apple.com/documentation/webkit/wkwebview/1415017-evaluatejavascript

Thanks, I edited the description a bit.

Hi Amir, would you be willing to accept contributions for this feature? This would be a feature we'd require to use Flutter in a new app.

It would be great to have a way to pass data to and from JS context that is running inside the WebView.
On IOS it should be possible with postMessages: here are some examples https://nshipster.com/wkwebview/
It will be useful to report the DOM height, when it gets loaded, to update the container for the webview, if the dimensions are unknown. (Like for example to embed a tweet or some media inside the tree)

A very Map-OpenLayer feature embedded into page having a need on communication between js and dart where dart can call js functions and vice versa. It is supported in the native languages on both platform.

@amirh I am catching up to the changes here and it looks like they are really moving along.  Can you let me know what proposal from above that you ended up choosing?  Thanks!

@bagintz see the PR description for https://github.com/flutter/plugins/pull/1116 for the API I'm going with.

@amirh Thank you!!!!

Published with webview_flutter 0.3.1

Published with webview_flutter 0.3.1
when 0.3.1 will be published ? now 0.3.0+2
https://pub.dartlang.org/packages/flutter_webview_plugin#-analysis-tab-

I believe you are looking at a different plugin, see: https://pub.dartlang.org/packages/webview_flutter

额，sorry @amirh  and thanks

Hi @amirh, just wondering if all proposals were implemented and pushed, or only one of them? Do you have any documentations for using these channel? I can't find it anywhere on the pub or github...

Check the API docs for what ended up landing: https://pub.dartlang.org/documentation/webview_flutter/latest/webview_flutter/WebView/javascriptChannels.html

from the above link I can send my data from webview to flutter using javascript.
how can I send my data to webview using the same channel?

javascriptMessageChannelNames still can not use at 0.3.6.
@NewITCorp  can u share code.Thanks

Amirh you should help beginners too as
NewItCorp is right, there seems no way to do JavaScript-> dart.
I am in an urgent need of that though.
Your support is truly admired.

@heinzan you still need a working gist??

@heinzan you still need a working gist??

yes

JavaScriptChannel is the mechanism from sending messages from javascript code running in the webview to the Flutter app's Dart code. I'd suggest StackOverflow as a better form for support question (more people are looking for questions and answers there and will benefit from your questions).
Suggestion for improving the documentation/API are welcomed as well(probably best to start these as GitHub issues and followup with a PR after a proposal is finalized).

@heinzan
here is my implementation in Dart (your class that derived from State)
 final Completer<WebViewController> _controller = Completer<WebViewController>();
WebView getWebView() {
    return WebView(
      initialUrl: yourURL,
      javascriptMode: JavascriptMode.unrestricted,
      javascriptChannels: Set.from([
        JavascriptChannel(
            //my channel name is jsfunc1
            name: 'jsfunc1',
            onMessageReceived: (JavascriptMessage message) {
                print(message.message);
                //'hello' will be here
            }),
       // we can have more than one channels
      ]),
      onWebViewCreated: (WebViewController webViewController) {
        _controller.complete(webViewController);
      },
    );
  }
//and then call getWebView() in your build() method where you want to display it in your screen

and in your html, call this with javascript
var x = 'hello';
try { jsfunc1.postMessage(x); } catch (err) {}
jsfunc1.postMessage(x);

we always need to wrap with try/catch block because postMessage() is not recognized by any browsers. so it will raise an error when you open it with browser
@Prashant-K-V  after research for a while, we can send from flutter to webView using either url parameters or headers (like usual). It is not possible to send without page reloading anyway.
@amirh  thanks for you great contribution.

@NewITCorp  yes that feature is really a need. Can't proceed without it, for finalizing the webview implementation.
Hope Google admires our request.

@NewITCorp  / @Prashant-K-V the way to send messages from the Flutter app's Dart code to JavaScript is to call evaluateJavascript.

I was thinking like that, but that way only string can be passed, thats why I was not confident with that technique.
Although thanks Amirha. Tx all to be a great community. :) Viva de flutter.

any updates on this two way communication ?


Allow RapidsConf settings to be overridden by Java system properties

Signed-off-by: Andy Grove<EMAIL_ADDRESS>When running on a desktop where I am using the GPU to drive the display, I need to reduce the value for the spark.rapids.memory.gpu.allocFraction settings. Rather than modifying the source code and remembering to undo the change before committing changes, I would prefer to be able to override this setting from the command line when running Maven.
This PR provides a generic way to override RapidsConf settings using Java system properties.
For example, when running tests with Maven, I can now run:
mvn clean verify -DargLine="-Dspark.rapids.memory.gpu.allocFraction=0.7"

When running tests from an IDE, I can specify -Dspark.rapids.memory.gpu.allocFraction=0.7.

The side-channel hacks to adjust the Spark configs are interesting but IMO don't get to the crux of the problem: the defaults do not work for this kind of setup.  That's a bad initial experience for someone just trying things out on their desktop with their display GPU.
Should we make at least the initial pool allocation fraction be based on free memory rather than total memory?  Or is there an alternative where the system defaults still perform well on our expected setup but don't crash outright on this setup?

The side-channel hacks to adjust the Spark configs are interesting but IMO don't get to the crux of the problem: the defaults do not work for this kind of setup. That's a bad initial experience for someone just trying things out on their desktop with their display GPU.
Should we make at least the initial pool allocation fraction be based on free memory rather than total memory? Or is there an alternative where the system defaults still perform well on our expected setup but don't crash outright on this setup?

We initially had it on free memory, but it makes it impossible to share a GPU among tasks in a production setting, and can mask a GPU accidentally being shared.
I am fine with us having different defaults for the unit/integration tests that look at the free GPU memory and try to configure things accordingly, so long as we also fail if there is a bad setup.

it makes it impossible to share a GPU among tasks in a production setting

Not following.  All I'm talking about is the initial RMM pool size, not the maximum pool size or anything that has to do with tasks.  The RMM pool will try to grow from the initial size as it does today if the application attempts to allocate beyond that initial size.

can mask a GPU accidentally being shared.

Yes, that is definitely the case, as we are trying to share in this setup.  That's sort of my point -- should we make it easier to share by default.  Maybe the answer is no.  If that's the case, maybe we should emit a more useful error message when the initial pool size cannot be allocated to point users to the possibility that the GPU is being used by another process concurrently?  Bonus points for emitting details about the GPU that is being used, amount of free memory on it, amount trying to be allocated, etc.

If it is just the initial pool size then I would be fine with a change like that. We would need a lot of good documentation explaining it.

I've updated this and it works well for my desktop. I wasn't sure whether to use the term available or free in the documentation but I went for available since that is the term we use when describing the behavior of spark.rapids.python.memory.gpu.allocFraction and hopefully I'm using the term consistently with that.

build

Is this what we want? Perhaps I misunderstand this PR.
Say I set allocFraction to 50% and launch N executors using a 32GB GPU:

First executor: 16 GB
Second executor: 8 GB
Third executor: 4 GB
Fourth executor: 2 GB
and so on.

That's a good point @abellina ... I will rethink the approach and look at having the initial allocation for the tests be set based on free memory instead

@abellina @andygrove the reason why we are doing this is because what you described does not happen in practice.  Yes it happens for our tests, but that is the only place. We are not recommending that people share a GPU between different executors, and we have never recommended that. In fact Spark, kuberneted, and Yarn do not support doing it. We had to hack things up to make it work for our tests.

Maybe there could be a config that sets what we are basing the fraction from: free or total. Use free as default, especially for production setups, but use total if you know what you are doing (the test hack)?
But agree that basing it off free by default is going to make for a better experience.

Why add a config that no one is going to set? If we hit a situation where we need a config we can look into it. But for now I would just have a hard coded minimum amount of free memory where we output a warning if the initial allocation would be too low.  That is not going to save us in all cases (because there will be races) but it should help

Why add a config that no one is going to set?

Never mind. I missed that since this is just the init setting, it will grow as necessary. This doesn't preclude the application I had in mind (to test shuffle locally), as I originally thought. Thanks @revans2 @andygrove.

This is ready for another review. I added the minimum check. I could not figure out a good way to test it though.

build

build

build

build

build


[Question] run privileged

Hi i have a short question, i want to run it on a linux based server and want to do with it also some things which i need root privileges. so i want to run it as root. but already at the time of doing the first registration i get the "FTL go-hass-agent should not be run with additional privileges or as root." message. how can i say to it i know that i run it as root and i want to do it?

Hey there! Thanks for trying out the agent. I'm reluctant to allow the agent itself to run as a privileged user, as it doesn't need any privileges. Although, I can understand that gathering some sensor data might require privileges, and some scripts or commands might need privileges. But in those cases, is it possible to elevate your privileges just for those actions? For example, using sudo to execute a script or command?
Would it be possible to provide some details about what you want to do? We could see if there is a workaround.

I thought about turning off the server when window sensors get triggered while I'm not at home, or using custom scripts to get statistics about game servers. These scripts would run on other users' machines or involve tasks that require root access, like shutting down the server. Yes, I could create a specific user with sudo privileges and specific root allowances, or I could just run everything as root. At this point, the question is whether it's worth taking the time to configure everything correctly, or if the quick and dirty solution is more appropriate for my home network, which already has a good firewall configuration with subnets, etc. :/

Hey there, so if you have MQTT connected to Home Assistant, you can configure Go Hass Agent to connect to MQTT and it will expose a button for shutting down the device running the agent. You can then trigger that in an Home Assistant automation (or dashboard) by calling the button.press service.
For fetching information from other places, I feel like its best if the any privileged operations stay within the script/program that fetches the data.
I can understand it is easier to avoid any privilege switching, but I'm not convinced there is any benefit for Go Hass Agent itself, to run privileged. I am hoping the current custom script sensors and custom commands via MQTT cover any kind of situation for custom fetching. I would be very interested to hear any specific scenario where you need privileges to get or control some data/thing, cannot do it with a custom script/command and therefore it would be useful for the agent to have privileges.
Sorry this is not the answer you were looking for.
It might be interesting to create a discussion about custom data sources that need privileges. It always seems a bit arbitrary IMO what data I can get without privileges vs what needs certain privileges.

no problem, than i will first try to do it the "correct" (no privileges from the start) way :D
i just thought that it would be usefull if there would be an option like allow run as root and im aware of the security danger. but i can understand the point that you would like not to implement these so it will get setup up correctly :)
i will do an discussion for things i dont find :)

I'm going to close this issue off as I believe the discussion has concluded. Please reply back to re-open if you have any further comments! I've updated the FAQ in the README with an entry about running with privileges.


doc(templating-basics): Added a note on using repeat.for with arrays

Added a note on using repeat.for with arrays.
Use the array methods instead of replacing array elements by index with [] if you want Aurelia to observe the changes.

Another good addition. Thanks!


Quay.io is down and there is no alternative to use a mirrored image

Bug
Environment

Platform: bare-metal
OS: container linux

Problem
Quay.io is down and there is no alternative to use a mirrored image.
rkt[1281]: run: Unexpected HTTP code: 500, URL: https://quay.io/v2/poseidon/kub>
Feature Request
Feature
Be able to retrieve docker images through an alternative mirror registry.

https://status.quay.io/incidents/kw2627bsdwd9

Yes - just had this issue - was horrible!! didn't know whats wrong - spend 3 hours debugging until i found that the image pull return 500!

Closing in favor of #735


using eureka client healthcheck - DiscoveryCompositeHealthIndicator prevents status recover

I have enabled healthcheck for eureka.
A custom HealthIndicator might change the status of the appliction to DOWN or OUT_OF_SERVICE which works fine and Eureka server shows the expected status.
If my application recovers to status UP, I am unable to send the correct status to the Eureka server.
EurekaHealthCheckHandler aggregates the states of all available HealtIndicators. This includes DiscoverCompositeHealthIndicator that holds the current status from the Eureka server (DOWN).
Because the HealthAggregator will return the status with the lowest 'level' we will allways receive DOWN.
Is there a configuration option that I might have missed?
Output of health endpoint below shows that the custom HealthIndicator 'healdIndicator' is UP, but discoveryComposite.eureka stays DOWN
{
 "description": "Remote status from Eureka server",
 "status": "DOWN",
 "healthIndicator": {
 "status": "UP"
 },
 "discoveryComposite": {
 "description": "Remote status from Eureka server",
 "status": "DOWN",
 "discoveryClient": {
 "description": "Spring Cloud Eureka Discovery Client",
 "status": "UP",
 "services": []
 },
 "eureka": {
 "description": "Remote status from Eureka server",
 "status": "DOWN",
 "applications": {
 "ECHO-SERVICE": 0
 }
 }
 },
 "diskSpace": {
 "status": "UP",
 "total":<PHONE_NUMBER>56,
 "free":<PHONE_NUMBER>48,
 "threshold": 10485760
 },
 "hystrix": {
 "status": "UP"
}}

This is easy to reproduce with bringing down RabbitMQ for example. Service will go down, but will never recover because "Remote status from Eureka server" id in DOWN state.


Record sourmash query-containment as query-coverage

Changes our sourmash and branchwater wrappers to always record max-containment as the ANI (which was the default mode), and record containment via the query-coverage matrix along side it.
To do this via sourmash compare (our sourmash method), we no longer run sourmash in --max-containment mode, but just in --containment mode and infer the max value for each query/subject pair.  This drops --mode max-containment or --mode containment as a user-facing option.
For our branchwater method, this just looks at an additional column from the output.
This PR also transposes the containment values from sourmash.csv before loading it as our query-coverage values. See discussion on #202 which this PR replaced, and the test case introduced on #212 which confirms this orientation is consistent.
Type of change

[x] Bug fix (non-breaking change that fixes an issue)
[x] New feature (non-breaking change that adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality not to work as expected)
[ ] This change requires a documentation update
[ ] This is a documentation update

Action Checklist

[x] Work on a single issue/concept (if there are multiple separate issues to address, please use a separate pull request for each)
[ ] Fork the pyani-plus repository under your own account (please allow write access for repository maintainers)
[x] Set up an appropriate development environment (please see CONTRIBUTING.md for this repository)
[x] Create a new branch with a short, descriptive name
[x] Work on this branch

[x] style guidelines have been followed (please see CONTRIBUTING.md for this repository)
[x] new code is commented, especially in hard-to-understand areas
[x] corresponding changes to documentation have been made
[x] tests for the change have been added that demonstrate the fix or feature works

[x] Test locally with pytest-plus -v non-passing code will not be merged
[x] Rebase against origin/master
[x] Check changes with linting/formatting tools before submission (please see CONTRIBUTING.md for this repository)
[x] Commit branch
[x] Submit pull request, describing the content and intent of the pull request
[x] Request a code review
[x] Continue the discussion at Pull requests section in the pyan-plus repository

Yes - we loose the --mode max-containment versus --mode containment option. This is only an option in sourmash compare, with sourmash branchwater's equivalent commands you get all of query-containment, subject-containment, and max-containment.
Mapping query-containment to query-coverage is a slight stretch, but a reasonable analogy. Leighton was OK with the idea on Monday, but hasn't seen this code yet.

This needed rebasing for the matrix label changes in #208.

Reviewed in person with @kiepczi, merging now.


When multiple PG Back Web connections are made to the same PostgreSQL instance, the same scheduled task is executed multiple times.

When multiple PG Back Web connections are made to the same PostgreSQL instance, the same scheduled task is executed multiple times.

Solution: Create multiple databases.


Extend binaries to be self updating binaries.

All binaries must self update so that when a new release happens they update.
Where to look for updates ?

github releases.

Which binaries ?

Booty, Cli and Server need it.

Behaviour
Booty and Cli should do a check when you use them, so just add a check to cobra root.go.  This is what flutter does, alerting you that an update exists, but still running your command.
Server should do the same i think. A User would be expected.
Where
Do the code in Shared repo so EVERYTHING gets it ?
Downside is that now Server and CLI is now importing dev tools. If anyone has better suggesting please propose it.
CLi framework we use is Cobra remember.. )
Make it a Cobra Cmd so the other Cmd's of booty, Cli and Server can import it.
Desktop apps later will also need to self update.. But we worry about that much later.
go-rocket-update:

https://github.com/mouuff/go-rocket-update
https://www.reddit.com/r/golang/comments/kz6pxu/selfupdating_binaries/
Unlike others uses provider pattern and so is flexible for which source to get the binary from that it uses, and also for the update strategy you need to employ.
Just a suggestion. If its not ready then find another, but dont write your own :)

Moved into Booty Epic..

Moved into Booty Epic..


test new inlining strategy

Please read contributing guidelines and remove this line.

Benchmark results
Metrics with a significant change:

app_circuit_proving_time_in_ms (Token:transfer): 45,344 (-24%)
protocol_circuit_witness_generation_time_in_ms (root-parity): 96.4 (+46%)
protocol_circuit_proving_time_in_ms (private-kernel-inner): 42,221 (-18%)
protocol_circuit_proving_time_in_ms (private-kernel-tail-to-public): 91,013 (-17%)
protocol_circuit_proving_time_in_ms (private-kernel-tail): 36,579 (-16%)
protocol_circuit_proving_time_in_ms (root-rollup): 19,465 (-18%)

Detailed results
All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call  to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.
This benchmark source data is available in JSON format on S3 here.
Proof generation
Each column represents the number of threads used in proof generation.

Metric
1 threads
4 threads
16 threads
32 threads
64 threads

proof_construction_time_sha256
5,686
1,544
712
750 (-3%)
778

L2 block published to L1
Each column represents the number of txs on an L2 block published to L1.

Metric
8 txs
32 txs
64 txs

l1_rollup_calldata_size_in_bytes
1,412
1,412
1,412

l1_rollup_calldata_gas
9,452
9,452
9,452

l1_rollup_execution_gas
616,093
616,093
616,093

l2_block_processing_time_in_ms
1,297
4,829 (+1%)
9,595 (+1%)

l2_block_building_time_in_ms
45,093
177,680 (-1%)
355,163 (-1%)

l2_block_rollup_simulation_time_in_ms
44,916
177,048 (-1%)
353,914 (-1%)

l2_block_public_tx_process_time_in_ms
24,286
100,554
205,028 (-1%)

L2 chain processing
Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric
3 blocks
5 blocks

node_history_sync_time_in_ms
9,526
14,464

node_database_size_in_bytes
14,475,344
21,291,088

pxe_database_size_in_bytes
18,071
29,868

Circuits stats
Stats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.

Circuit
simulation_time_in_ms
witness_generation_time_in_ms
proving_time_in_ms
input_size_in_bytes
output_size_in_bytes
proof_size_in_bytes
num_public_inputs
size_in_gates

private-kernel-init
159 (-1%)
3,706 (+4%)
22,577 (-15%)
20,630
64,614
89,536
2,731
1,048,576

private-kernel-inner
623 (-1%)
4,414 (+8%)
:warning: 42,221 (-18%)
92,318
64,614
89,536
2,731
2,097,152

private-kernel-tail
568 (-2%)
2,994 (+7%)
:warning: 36,579 (-16%)
96,541
77,498
10,656
266
2,097,152

base-parity
6.55 (+1%)
1,238 (+9%)
2,867 (+1%)
128
64.0
2,208
2.00
131,072

root-parity
49.9 (+1%)
:warning: 96.4 (+46%)
44,400 (-12%)
27,084
64.0
2,720
18.0
2,097,152

base-rollup
715 (+2%)
2,208 (-9%)
73,958 (-13%)
119,610
756
3,648
47.0
4,194,304

root-rollup
112 (+2%)
63.9 (-20%)
:warning: 19,465 (-18%)
25,297
620
3,456
41.0
1,048,576

public-kernel-app-logic
524 (-1%)
2,951 (-2%)
47,833 (-8%)
104,941
86,302
114,784
3,520
2,097,152

public-kernel-tail
1,086 (-1%)
22,729 (+6%)
155,514 (-13%)
395,386
7,522
10,656
266
8,388,608

private-kernel-reset-small
588 (-2%)
2,049 (+5%)
45,361 (-9%)
120,733
64,614
89,536
2,731
2,097,152

merge-rollup
28.6
N/A
N/A
16,534
756
N/A
N/A
N/A

public-kernel-setup
628 (-1%)
N/A
N/A
104,941
86,302
N/A
N/A
N/A

public-kernel-teardown
531 (-1%)
N/A
N/A
104,941
86,302
N/A
N/A
N/A

private-kernel-tail-to-public
N/A
8,573 (+3%)
:warning: 91,013 (-17%)
N/A
N/A
114,784
3,520
4,194,304

Stats on running time collected for app circuits

Function
input_size_in_bytes
output_size_in_bytes
witness_generation_time_in_ms
proof_size_in_bytes
proving_time_in_ms
size_in_gates
num_public_inputs

ContractClassRegisterer:register
1,344
9,944
460
N/A
N/A
N/A
N/A

ContractInstanceDeployer:deploy
1,408
9,944
42.1 (+3%)
N/A
N/A
N/A
N/A

MultiCallEntrypoint:entrypoint
1,920
9,944
1,443 (+2%)
N/A
N/A
N/A
N/A

SchnorrAccount:constructor
1,312
9,944
996 (+2%)
N/A
N/A
N/A
N/A

SchnorrAccount:entrypoint
2,304
9,944
2,091 (+1%)
16,768
51,199 (-8%)
2,097,152
457

Token:privately_mint_private_note
1,280
9,944
1,139 (+4%)
N/A
N/A
N/A
N/A

Token:transfer
1,376
9,944
4,045 (+1%)
16,768
:warning: 45,344 (-24%)
2,097,152
457

Benchmarking:create_note
1,312
9,944
954
N/A
N/A
N/A
N/A

FPC:fee_entrypoint_public
1,344
9,944
221
N/A
N/A
N/A
N/A

SchnorrAccount:spend_private_authwit
1,280
9,944
82.7 (+7%)
N/A
N/A
N/A
N/A

Token:unshield
1,376
9,944
3,235
N/A
N/A
N/A
N/A

FPC:fee_entrypoint_private
1,376
9,944
4,017 (-1%)
N/A
N/A
N/A
N/A

Tree insertion stats
The duration to insert a fixed batch of leaves into each tree type.

Metric
1 leaves
16 leaves
64 leaves
128 leaves
512 leaves
1024 leaves
2048 leaves
4096 leaves
32 leaves

batch_insert_into_append_only_tree_16_depth_ms
10.5
17.0 (+1%)
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_count
16.7
31.8
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_16_depth_hash_ms
0.609
0.522 (+1%)
N/A
N/A
N/A
N/A
N/A
N/A
N/A

batch_insert_into_append_only_tree_32_depth_ms
N/A
N/A
48.7 (+1%)
76.3 (-1%)
247
476 (+1%)
937 (+1%)
1,854 (+1%)
N/A

batch_insert_into_append_only_tree_32_depth_hash_count
N/A
N/A
95.9
159
543
1,055
2,079
4,127
N/A

batch_insert_into_append_only_tree_32_depth_hash_ms
N/A
N/A
0.497 (+1%)
0.470 (-1%)
0.447
0.444 (+1%)
0.443 (+1%)
0.442 (+1%)
N/A

batch_insert_into_indexed_tree_20_depth_ms
N/A
N/A
58.6 (+1%)
113 (+1%)
357 (+1%)
700 (+1%)
1,394 (+1%)
2,775 (+1%)
N/A

batch_insert_into_indexed_tree_20_depth_hash_count
N/A
N/A
106
208
692
1,363
2,707
5,395
N/A

batch_insert_into_indexed_tree_20_depth_hash_ms
N/A
N/A
0.508 (+1%)
0.506 (+1%)
0.482
0.481 (+1%)
0.481 (+1%)
0.481 (+1%)
N/A

batch_insert_into_indexed_tree_40_depth_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
62.6 (+1%)

batch_insert_into_indexed_tree_40_depth_hash_count
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
107

batch_insert_into_indexed_tree_40_depth_hash_ms
N/A
N/A
N/A
N/A
N/A
N/A
N/A
N/A
0.555 (+1%)

Miscellaneous
Transaction sizes based on how many contract classes are registered in the tx.

Metric
0 registered classes
1 registered classes

tx_size_in_bytes
83,794
665,117

Transaction size based on fee payment method
| Metric |  |
| - |  |

Done in https://github.com/noir-lang/noir/pull/5121


Support multiple ESLint versions in demo

It's useful to be able to create a demo permalink like this as an easy way to demonstrate a bug. Ideally, we could allow users to supply a demo URL as an alternative to a code/config sample when reporting a bug.
However, since the demo always uses the latest version of ESLint, demo URLs aren't ideal with respect to archival, because after a bug is fixed the demo will only display the fixed behavior. This might make it difficult to tell what the bug originally was, which could cause problems when trying to figure out whether a certain piece of code is necessary (if the code was originally added while addressing the bug).
To fix this issue, I think it would be nice if the demo supported multiple ESLint versions, perhaps selected with a dropdown menu. The permalink produced by the demo would include the ESLint version (defaulting to the latest version), and when loading a permalink, the appropriate version would be extracted from the URL and configured in the demo.
This would require some changes to the automatic site generation in the ESLint repository, because we would have to copy the generated browser file to a versioned location in addition to putting it at js/app/eslint.js. We would also want to update the frontend code of the demo to load ESLint versions on-demand.

I was thinking we would support every released version (assuming the site updates would be automatic, it doesn't seem like there would be much of a disadvantage to having fine-grained version options for future versions). If we wanted, we could also run a one-time script to extract old versions of ESLint, based on the contents of js/app/eslint.js at different points in the git history. (At a certain point, the past versions would stop working if they no longer support the APIs used by the demo. For example, I don't think we would be able to go before v4.0.0, since that's when the Linter class was introduced.)


NPE fix

Fixed a bug reported from @hanahmily
If he set the properties : "" in k8s config map, then cause NPE.

Coverage remained the same at 16.823% when pulling a7789376a8b062e812c3aa0c1a6014848a157598 on init-bug into 202918cbea7337cce4f2e07167359025108a668d on master.


[util] Set deviceLossOnFocusLoss for Assassin's Creed 2

Makes it not crash on alt tab when using at least Proton on Linux. Was unable to test regular Wine or Staging as Ubisoft Connect doesn't work there currently.
See issue description for behavior on Windows.
Closes #3653

I confirm, adding d3d9.deviceLossOnFocusLoss = True manually in dxvk.conf fixes the alt+tab in AC2 for me

Ubisoft Connect doesn't work there currently.

Disable ESYNC and FSYNC as well, after Ubisoft connect has updated correctly, close it, enable ESYNC/FSYNC and open Ubisoft connect again and have fun..

Upstream Wine doesn't have Esync or Fsync. It's just a issue that has been worked around in Proton

Upstream Wine doesn't have Esync or Fsync

Wine Staging has ESYNC, that I am using..
and you can get FSYNC in Wine using wine-tkg-git


Radium transition checksum was invalid

I'm looking at using a CSS transition in Radium in a React isomorphic setting.
However the error returned is:
Warning: React attempted to reuse markup in a container but the checksum was invalid. This generally means that you are using server rendering and the markup generated on the server was not what the client was expecting. React injected new markup to compensate which works but you have lost many of the benefits of server rendering. Instead, figure out why the markup being generated is different on the client or server:
 (client) 0;padding:10px 20px;transition:backgroun
 (server) 0;padding:10px 20px;font-size:14px;backg

Here is the source:
import { global } from '../../config/styles';
import Color from 'color';

const color = global.color;
const radius = global.radius;
const styles = {
  base: {
    borderRadius: radius.base,
    color: color.white.base,
    border: 0,
    padding: '10px 20px',
    transition: 'background .5s',
    fontSize: 14,
    ':hover': {
      cursor: 'pointer',
    },
    ':focus': {
      outline: 0,
    },
  },
}

All other properties are working correctly. Is this a known bug? I can't find any reference to this issue anywhere.

Don't think this is a known issue. If you could create a minimal reproduction, that would be really helpful in tracking it down.