Add media shortcuts

I can't regulate the sound from my headset either with the buttons on it or on my keyboard

I hope this gets addressed. Without media keys you have no volume control on laptop or handheld computers.

Found a suitable and smaller replacement for xbindkeys called sxhkd (installation through pacman in a clean GamerOS instance is 0.14MiB total).
It's configuration can be passed as parameters if started like sxhkd -c <configfile>(or be located by default in ~/.config/sxhkd/sxhkdrc)
Here's the equivalent configuration file as the example in the previous comment:
XF86AudioRaiseVolume
	pactl set-sink-volume @DEFAULT_SINK@ +1000

XF86AudioLowerVolume
	pactl set-sink-volume @DEFAULT_SINK@ -1000

XF86AudioMute
	pactl set-sink-mute @DEFAULT_SINK@ toggle

Please consider it adding to a future version of GamerOS by default.

@qchto sudo will not work here since this is a user systemd service
should and can this be a system wide systemd service? Seems like maybe not.

@qchto sudo will not work here since this is a user systemd service

It wasn't a problem on my environment, as sudo commands executed directly, but it's possible I changed my /etc/sudoers file to allow for this (probably gamer ALL=(ALL) NOPASSWD:ALL). Still I'll revise and update with the rule I set when I have the chance.

should and can this be a system wide systemd service? Seems like maybe not.

I don't think it's possible, as this command should explicitly apply to the user graphical environment.
An easy workaround could be to change owner of /sys/class/backlight/*/brightness to gamer at startup and/or with a udev rule on connected devices.

Ok, so after considering the bug that made volume go up indefinitelly, I created handle scripts at these locations (followed by their content):
/usr/share/steamos-compositor-plus/bin/audio_volup.sh:
#!/bin/bash

# Volume Up script
STEP="5000"
MAXVOLUME=100 #as a percentage

defindex=""
volumel=
volumer=
ready=false

# retrieve volume for default output
while read line
do
 if [ -z "$defindex" ]
 then
  defindex="$(echo "$line" | awk '/* index:/{print $3}')"
 elif [ -z "$volume" ]
 then
  read volumel volumer <<<$(echo "$line" | awk '/volume:/{print $5" "$12}')
  if [[ "$volumer" =~ "%"$ ]] && [[ "$volumel" =~ "%"$ ]]
  then
    volumer=${volumer%\%}
    volumel=${volumel%\%}
    ready=true
    break
  else
    volumer=
    volumel=
  fi
 fi
done<<<$(pacmd list-sinks | grep -e "index:" -e "volume:")

# execute only if volume is lesser than MAXVOLUME for both channels
if $ready && [[ "$volumer" -lt $MAXVOLUME ]] && [[ "$volumel" -lt $MAXVOLUME ]]
then
 pactl set-sink-volume @DEFAULT_SINK@ +$STEP
 aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null
else
 aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/activation_change_fail.wav &>/dev/null
fi

/usr/share/steamos-compositor-plus/bin/audio_voldown.sh:
#!/bin/bash

# Volume Down script
STEP=5000
MINVOLUME=0 #as a percentage

defindex=""
volumel=
volumer=
ready=false

# retrieve volume for default output
while read line
do
 if [ -z "$defindex" ]
 then
  defindex="$(echo "$line" | awk '/* index:/{print $3}')"
 elif [ -z "$volume" ]
 then
  read volumel volumer <<<$(echo "$line" | awk '/volume:/{print $5" "$12}')
  if [[ "$volumer" =~ "%"$ ]] && [[ "$volumel" =~ "%"$ ]]
  then
    volumer=${volumer%\%}
    volumel=${volumel%\%}
    ready=true
    break
  else
    volumer=
    volumel=
  fi
 fi
done<<<$(pacmd list-sinks | grep -e "index:" -e "volume:")

# execute only if volume is greater than MINVOLUME for both channels
if $ready && [[ "$volumer" -gt $MINVOLUME ]] && [[ "$volumel" -gt $MINVOLUME ]]
then
 pactl set-sink-volume @DEFAULT_SINK@ -$STEP
 aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null
else
 aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/activation_change_fail.wav &>/dev/null
fi

/usr/share/steamos-compositor-plus/bin/audio_mute.sh:
#!/bin/bash

# Volume Mute script
pactl set-sink-mute @DEFAULT_SINK@ toggle
aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null

(Don't forget the permission for hte files to make them executable chmod +x /usr/share/steamos-compositor-plus/bin/audio_*.sh)
Finally, the file /usr/share/steamos-compositor-plus/sxhkdrc could be simplified to:
XF86Audio{RaiseVolume,LowerVolume,Mute}
	/usr/share/steamos-compositor-plus/bin/audio_{volup,voldown,mute}.sh

(And keep in mind, this way, new scripts can be added to media keys. I'll be working in brightness media key scrips and even a script that could toggle screens when pressing the monitor selecting media key -binds to super + p)

To add functionality for screen toggling, here's the script /usr/share/steamos-compositor-plus/bin/screen_toggle.sh:
#!/bin/bash

[ -z "$DISPLAY" ] && export DISPLAY=:0

active_o=""
current_r="zzz"
current_m=""
list_o=""
mirror=false
ready=false

while read line
do
 fline=$(echo "$line" | awk '/'"$current_r"'/{print $0" M"} ; / connected/{print $1" "$3" O"} ; / disconnected/{print $1" "$3" D"} ; /Screen/{print $8$9$10",R"}')
 if [[ "$fline" =~ "R"$ ]]
 then
  current_r="$(echo "$fline" | awk -F, '{print $1}')"
 elif [[ "$fline" =~ "O"$ ]]
 then
  read connected_o connected_m <<<"$(echo "$fline" | awk '{print $1" "$2}')"
 elif [[ "$fline" =~ "D"$ ]]
 then
  connected_o=""
  connected_m=""
 elif [[ "$fline" =~ "M"$ ]]
 then
  #output has mode, but only proceed if the monitor is connected
  if [ -n "$connected_o" ]
  then
   #only add to list if it hasn't been already added
   ! [[ "$list_o" =~ ",$connected_o"$ ]] && list_o="$list_o,$connected_o"
   selected_m="$(echo "$fline" | awk '/*/{print $1}')"
   if [ -n "$selected_m" ]
   then
    current_m="$selected_m"
    [ -n "$active_o" ] && mirror=true && active_o=M || active_o="$connected_o"
   fi
  fi
 fi
done<<<$(xrandr)

[ -n "$current_m" ] && [ -n "$active_o" ] && ready=true
if $ready
then
 if $mirror
 then
  #is mirrored, go for the first option and turn off all others
  next_o="$(echo "$list_o" | awk -F, '{print $2}')"
  for output in ${list_o//,/ }
  do
   ! [ "$output" = "$next_o" ] && xrandr --output "$output" --off
  done
 else
  #is single active_o
  next_o="$(echo "$list_o" | awk -F",$active_o" '{print $2}' | awk -F, '{print $2}')"
  if [ -n "$next_o" ]
  then
   #moving to next_o
   xrandr --output "$next_o" --mode "$current_m" --same-as "$active_o"
   xrandr --output "$active_o" --off
  else
   #moving to mirror
   for output in ${list_o//,/ }
   do
    ! [ "$output" = "$active_o" ] && xrandr --output "$output" --mode "$current_m" --same-as "$active_o"
   done
  fi
 fi
elif ! [ "$current_r" = "zzz" ]
then
 #try to fallback to first available output if there's a valid current_r
 next_o="$(echo "$list_o" | awk -F, '{print $2}')"
 [ -n "$next_o" ] && xrandr --output "$next_o" --mode "$current_r"
fi

(It will toggle through all monitors that allow for a current resolution, and mirror to all if in the last position, returning to the first afterwards).
Enable it by adding the following lines to /usr/share/steamos-compositor-plus/sxhkdrc:
super + p
	/usr/share/steamos-compositor-plus/bin/screen_toggle.sh

Finally, for brightness control:

A sudoer permission file is needed at /etc/sudoers.d/brightness_control

ALL ALL=(ALL) NOPASSWD: /usr/bin/tee /sys/class/backlight/*/brightness

These scripts must be added:
Contents of /usr/share/steamos-compositor-plus/bin/brightness_up.sh:

#!/bin/bash

# Brightness Up script
[ -z "$DISPLAY" ] && export DISPLAY=:0

! [ -f "/tmp/brcf" ] && echo 100 > /tmp/brcf
curbr=$(cat /tmp/brcf)
newbr=$(( curbr + 10 ))
[[ $newbr -gt 100 ]] && newbr=100
echo "$newbr"  > /tmp/brcf
for brfile in /sys/class/backlight/*/brightness
do
 brmax=$(cat "$(dirname "$brfile" )/max_brightness")
 brnew=$(( newbr * brmax / 100 ))
 echo "$brnew" | sudo tee "$brfile"
done
for xoutput in $(xrandr | grep connected | awk '{print $1}')
do
 xrandr --output $xoutput --brightness $(awk 'BEGIN{printf "%.2f",'$newbr'/100}')
done

Contents of /usr/share/steamos-compositor-plus/bin/brightness_down.sh:
#!/bin/bash

# Brightness Down script
[ -z "$DISPLAY" ] && export DISPLAY=:0

! [ -f "/tmp/brcf" ] && echo 100 > /tmp/brcf
curbr=$(cat /tmp/brcf)
newbr=$(( curbr - 10 ))
[[ $newbr -lt 0 ]] && newbr=0
echo "$newbr"  > /tmp/brcf
for brfile in /sys/class/backlight/*/brightness
do
 brmax=$(cat "$(dirname "$brfile" )/max_brightness")
 brnew=$(( newbr * brmax / 100 ))
 echo "$brnew" | sudo tee "$brfile"
done
for xoutput in $(xrandr | grep connected | awk '{print $1}')
do
 xrandr --output $xoutput --brightness $(awk 'BEGIN{printf "%.2f",'$newbr'/100}')
done

Enable it by adding the following lines to /usr/share/steamos-compositor-plus/sxhkdr:

XF86MonBrightness{Up,Down}
	/usr/share/steamos-compositor-plus/bin/brightness_{up,down}.sh

Here are better versions of audio_*.sh scripts follows using pamixer (which will make these scripts ready for pipewire support):
For /usr/share/steamos-compositor-plus/bin/audio_mute.sh:
#!/bin/bash

# Volume Mute script
pamixer -t
aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null

For /usr/share/steamos-compositor-plus/bin/audio_voldown.sh:
#!/bin/bash

# Volume Down script
STEP=10 #as percentage
MINVOLUME=0 #as a percentage

volume="$(pamixer --get-volume)"

# execute only if volume is greater than MINVOLUME
if [[ "$volume" -gt $MINVOLUME ]]
then
 pamixer -d $STEP
 aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null
else
 aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/activation_change_fail.wav &>/dev/null
fi

For /usr/share/steamos-compositor-plus/bin/audio_volup.sh:
#!/bin/bash

# Volume Up script
STEP=10 #as percentage
MAXVOLUME=100 #as a percentage

volume="$(pamixer --get-volume)"

# execute only if volume is lesser than MAXVOLUME
if [[ "$volume" -lt $MAXVOLUME ]]
then
 pamixer -i $STEP
 aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null
else
 aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/activation_change_fail.wav &>/dev/null
fi

I think you can merge the three of them into one:
# Volume control script
STEP=10 #as percentage
MAXVOLUME=100 #as a percentage
MINVOLUME=0 #as a percentage

action=$1
volume="$(pamixer --get-volume)"

case $action in
  up) # execute only if volume is lesser than MAXVOLUME
    if [[ "$volume" -lt $MAXVOLUME ]]; then
      pamixer -i $STEP
      aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null
    else
      aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/activation_change_fail.wav &>/dev/null
    fi
  ;;
  down) # execute only if volume is greater than MINVOLUME
    if [[ "$volume" -gt $MINVOLUME ]]
    then
      pamixer -d $STEP
      aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null
    else
      aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/activation_change_fail.wav &>/dev/null
   fi
  ;;
  mute) # Volume Mute script
    pamixer -t
    aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null
  *) ;;

Sorry to reopen this, but here's a better version of a script under /usr/share/steamos-compositor-plus/bin/audio.sh that works for pipewire (and should also work on pulseaudio):
# Volume control script
STEP=10 #as percentage
MAXVOLUME=100 #as a percentage
MINVOLUME=0 #as a percentage

action=$1
volume="$(pulsemixer --get-volume | awk '{print $1}')"

case $action in
 up) # execute only if volume is lesser than MAXVOLUME
  if [[ "$volume" -lt $MAXVOLUME ]]; then
   pulsemixer --change-volume +$STEP
   aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null
  else
   pulsemixer --set-volume $MAXVOLUME
   aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/activation_change_fail.wav &>/dev/null
  fi
 ;;
 down) # execute only if volume is greater than MINVOLUME
  if [[ "$volume" -gt $MINVOLUME ]]
  then
   pulsemixer --change-volume -$STEP
   aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null
  else
   pulsemixer --set-volume $MINVOLUME
   aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/activation_change_fail.wav &>/dev/null
  fi
 ;;
 mute) # Volume Mute script
  pulsemixer --toggle-mute
  aplay $HOME/.local/share/Steam/tenfoot/resource/sounds/volume_change.wav &>/dev/null
 ;;
 *)
  echo "Usage: $(basename $0) <up|down|mute>"
 ;;
esac

Note that thi swill require to change an entry on /etc/steamos-compositor-plus/sxhkdrc to use this new script:
XF86Audio{RaiseVolume,LowerVolume,Mute}
	/usr/share/steamos-compositor-plus/bin/audio.sh {up,down,mute}

Thanks to @Samsagax for the help.

@qchto Thanks for your efforts. This issue should remain closed as it is already solved. You are proposing an improvement and should be added as a patch. Maybe you can PR your changes to the steamos-compositor-plus repo?


.Net 5

Thanks for a brilliant project :)
Are you able to update the Nuget packages with a release for .Net 5?
Cheers

I’ll try, I haven’t done it before. I’m a bit of a GitHub newbie.
Cheers
Ps. Been using your pdfium builds for years. Brilliant project, many thanks!
On Thu, 20 May 2021 at 08:04, Benoît Blanchon @.***>
wrote:

Hi @makingbloke https://github.com/makingbloke,
Unfortunately, my .NET days are long gone.
Can you make a Pull Request?
Best regards,
Benoit
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/bblanchon/WpfBindingErrors/issues/11#issuecomment-844771466,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABPMCPJPVJJP7KO773NHTM3TOSX7LANCNFSM45BHUUTA
.

Just that you know: Visual Studio has now a "XAML Binding Failures" window that lists all binding errors rather than just writing them to the output window. Since this window is available, I do not use WpfBindingErrors any more. Advantage: you might have binding errors that are temporarily OK. WpfBindingErrors does not allow it, while the new "XAML Binding Failures" window does.
https://devblogs.microsoft.com/visualstudio/whats-new-in-xaml-developer-tools-in-visual-studio-2019-for-wpf-uwp/

Thanks, In my case I’m using DI to inject a configuration object. This may
throw an error if the app.settings file isn’t correct so I want the error
to be raised rather than be quietly ignored.
On Thu, 20 May 2021 at 12:34, sa-he @.***> wrote:

Just that you know: Visual Studio has now a "XAML Binding Failures" window
that lists all binding errors rather than just writing them to the output
window. Since this window is available, I do not use WpfBindingErrors any
more. Advantage: you might have binding errors that are temporarily OK.
WpfBindingErrors does not allow it, while the new "XAML Binding Failures"
window does.
https://devblogs.microsoft.com/visualstudio/whats-new-in-xaml-developer-tools-in-visual-studio-2019-for-wpf-uwp/
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/bblanchon/WpfBindingErrors/issues/11#issuecomment-845010667,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABPMCPL54BKYF7WK3PLLSGTTOTXVBANCNFSM45BHUUTA
.


Include base OS value from /etc/os-release as part of Tern's data model

Obtain the os_guess value (as used in common.get_os_style()) from the path tern/command_lib/base.yml when /etc/os-release and /usr/lib/os-release do not exist.
 Below was my commit message:
``
Include base OS value from /etc/os-release as part of Tern's data model
Obtain the os_guess value (as used in common.get_os_style()) from the path tern/command_lib/base.yml when /etc/os-release and /usr/lib/os-release do not exist.
Resolves: #524
Signed-off-by: Aditi Dutta<EMAIL_ADDRESS>``

@aditi137 You are getting closer! The reason the commit check is failing is because the body and title line are too long. All commit messages must adhere to a convention of <72 characters in a line for the body and < 50 characters for the title. This is documented in Tern's "Commit Message Format" section in the contributing guide here. If you change the formatting of your commit message to be the following it should work:
Include base OS as part of Tern's data model

Obtain the os_guess value (as used in common.get_os_style()) from the
path tern/command_lib/base.yml when /etc/os-release and
/usr/lib/os-release do not exist.

Resolves: #524

Signed-off-by: Aditi Dutta<EMAIL_ADDRESS>

Additionally, instead of opening a new PR, I would recommend trying to amend your commit. This will come in handy also when we are reviewing your PR should you need to make changes. You can use git commit --amend to make your changes to the commit message and then git push -f origin add-os-guess and this PR will be automatically updated. Make sure you are on add-os-guess branch before pushing :)

Hi @rnjudge a million thanks for helping me finally get this up! 😄
It's open for your review now.

Hi @aditi137. Thanks for your PR!
The get_os_release function where you are making your changes is a function designed to get the PRETTY_NAME value from either /etc/os-release or /usr/lib/os-release. If you are unfamiliar with the /etc/os-release file and run a Linux OS, you can see what they look like for yourself by running cat /etc/os-release :) The changes you have introduced change the function to add a third file, command_lib/base.yml to check for the PRETTY_NAME value in. However, base.yml does not contain a PRETTY_NAME value, and therefore, would not return a value.
To solve the issue at hand, we will want to use common.get_os_release to set the os_guess value in the image_layer object for the first layer only. If common.get_os_release() does not return a value, then we will want to use the default os_guess value(s) as defined in tern/command_lib/base.yml.
You will want to make changes primarily in the analyze_first_layer function in tern/analyze/docker/analyze.py as this is where the first image layer will be mounted to check for the /etc/os-release OS value. I hope this helps! If you have any other questions, don't hesitate to reach out.

@aditi137 will you be updating this PR?

Closing this as we needed the change in master soon.


Update webpack-dev-server version to address CVE in glob-parent

🚀 Feature request
Command (mark with an x)

[ ] new
[ ] build
[x] serve
[ ] test
[ ] e2e
[ ] generate
[ ] add
[ ] update
[ ] lint
[ ] extract-i18n
[ ] run
[ ] config
[ ] help
[ ] version
[ ] doc

Description
All currently supported versions of angular-devkit/build-angular depend on webpack-dev-server 3.11.x.  webpack-dev-server depends on chokidar ^2.1.8, which in turn depends on glob-parent ^3.1.0.  glob-parent 3.x has a resource consumption vulnerability rated HIGH by NIST: https://nvd.nist.gov/vuln/detail/CVE-2020-28469#vulnCurrentDescriptionTitle
Describe the solution you'd like
Updating to webpack-dev-server 4.x allows updating glob-parent to 5.1.2 or later, where this CVE is resolved.
Describe alternatives you've considered
n/a

Duplicate of #21214

Duplicate of #21214

ahh, I didn't check for closed issues before submitting.  Thanks.


chore(debug): Add pg_stat_statements to debug and diagnostic bundles

Description
Adds the 1000 most expensive queries in terms of exec time to the diagnostic and debug bundles. This will allow us to see where postgres is spending time and what we could optimize. The pg stat statement object is just what i think is useful for now but more data may be necessary in the future. I also limited the number of queries to 1k and the size of the query to 1k so approximate max bound should be around 1MB
Checklist

[ ] Investigated and inspected CI test results
[ ] Unit test and regression tests added
[ ] Evaluated and added CHANGELOG entry if required
[ ] Determined and documented upgrade steps
[ ] Documented user facing changes (create PR based on openshift/openshift-docs and merge into rhacs-docs)

If any of these don't apply, please comment below.
Testing Performed
Get diag and debug and see data in there
Reminder for reviewers
In addition to reviewing code here, reviewers must also review testing and request further testing in case the
performed one does not seem sufficient. As a reviewer, you must not approve the change until you understand the
performed testing and you are satisfied with it.

/test gke-scale-tests


.json file

Hi, great package, I was wondering is its possible to use it with a json file instead of csv, where you could search using where() and write new lines, or if you know any package that does this?
Hope... wishing... you make a json version

Currently this package handles csv files only. I'm planing to create new one that will allow to import/export json files but it won't be soon.
If you need to export data to json you can use toJson method. As it comes to importing json, I don't know any package that would do this.


Pep8: Fixes E131 and E122

I didn't even start the google code-in task I just. Did it. Remind me to do that task so I get the point later.

Automated message from Dropbox CLA bot
@grave-w-grave, it looks like you've already signed the Dropbox CLA. Thanks!

@grave-w-grave, looks great! There are some merge conflicts so you will have to rebase this branch with upstream/master. Also, it would be super if merge https://github.com/zulip/zulip/pull/2490/commits/71a85a154b35f2c6f329d3b45d5924ea0c207f19 and https://github.com/zulip/zulip/pull/2490/commits/22494b6afaa1a120a4b3a69d743b072adfc16fbb into one commit. I think you will also have to remove those merge commits :).

what is happening

let me uh. do this again.


Functions 'length' is configurable but can't be deleted.

Works on built-in functions and other non ECMAScript forms:
var x = function() {};
Object.getOwnPropertyDescriptor(x, "length").configurable; // true
delete x.length; // expected true, received false
Object.getOwnPropertyDescriptor(x, "length"); // expected undefined, received the previous descriptor for 'length'

Same works for some built-in functions, not all of them.
eshost -s -x 'var x = Array.prototype.forEach; print(Object.getOwnPropertyDescriptor(x, "length").configurable); print(delete x.length); print(Object.getOwnPropertyDescriptor(x, "length"));'
#### ch, d8, jsc, jsshell, node
true
true
undefined

eshost -s -x 'var x = Array.prototype.filter; print(Object.getOwnPropertyDescriptor(x, "length").configurable); print(delete x.length); print(Object.getOwnPropertyDescriptor(x, "length"));'
#### d8, jsc, jsshell, node
true
true
undefined

#### ch
true
false
[object Object]

This is described in tests like test/built-ins/Array/prototype/filter/length.js but I couldn't find any matching bug here.

Was this testing vs master or vs a release? I believe I fixed this in master with #5405

I'm using jsvu to fetch chakracore so I imagine this should be a release version and I'm out of date and hopefully this problem is fixed.
I'm also planning to add a few tests on Test262 for checking the length property in function forms, it should prevent any regression and confirm everything is fixed.
ch --version
ch version <IP_ADDRESS>

Yep, jsvu is using the releases that we publish, while the fix has landed in master which doesn't have a release yet. It should be fixed with @rhuanjl's change, but it won't show up in a release for a while.

@rhuanjl @MSLaguana  feel free to close if you believe this is a duplicate or fixed, but if it's possible I'd appreciate if someone could confirm these cases are also fixed from #5405.

I can confirm that this is fixed in my local copy of master(ish):
## Source
var x = function() {};
print(Object.getOwnPropertyDescriptor(x, "length").configurable); // true
print(delete x.length); // expected true, received false
print(JSON.stringify(Object.getOwnPropertyDescriptor(x, "length"))); // expected undefined, received the previous descriptor for 'length'

┌────────────────────────────────┬─────────────────────────────────────────────────────────────────────┐
│ ch (Chakra1 x64_debug)         │ true                                                                │
│ ch (Chakra2 x64_debug)         │ true                                                                │
│ SpiderMonkey                   │ undefined                                                           │
│ V8                             │                                                                     │
├────────────────────────────────┼─────────────────────────────────────────────────────────────────────┤
│ Chakra (JSVU)                  │ true                                                                │
│                                │ false                                                               │
│                                │ {"value":0,"writable":false,"enumerable":false,"configurable":true} │
└────────────────────────────────┴─────────────────────────────────────────────────────────────────────┘

Just for reference #5405 made "length" of functions (and bound functions) a normal configurable property - prior to this it had lots of special casing all of which has now been removed so it should behave like any other configurable property.
Note this has not yet been done for async functions and generator functions there is a follow up PR #5610 open to fix for those.
Also the following test cases were added to ChakraCore's CI with #5405 which I hope somewhat extensively cover this: https://github.com/Microsoft/ChakraCore/blob/master/test/Function/funcAndboundFuncLength.js


Is BitBLAS supported on the H100 GPU?

Hi @Chenglin-Yang , we haven't tested BitBLAS on the Hopper yet, but theoretically, the generated kernel should compile and run on Hopper. However, the performance might be suboptimal due to the absence of warp specialization and TMA support. We are currently working on this aspect, and we expect to release the related updates next month.


Improve evalscript performance

Closes https://git.sinergise.com/team-6/openeo-platform/-/issues/112
The code produced by the converter was not optimised for speed, as it was more or less a proof of concept and thus the ease of implementation was the primary concern.
This PR improves the speed of the evalscript execution up to approximately an order of magnitude, imo making the execution time bearable.
Calling _iter was very slow and particularly reduceByDimension caused the biggest slowdown.
Changes with biggest effects include (for the specific script I was testing on):

replacing _iter and array-inside-array data with ndarray library (from 1min13s to 48s)
replacing newData.push(...entry) with newData.concat(Object.values(entry)) in makeArrayFromSamples, introduced when changing to support ndarray. (from 48s to 31s). Replaced spread operators everywhere.
replacing JSON.parse(JSON.stringify(this.dimensions)) for copying dimensions with a for loop. (31s to 10s).
other minor changes

I added a simple script that runs a generated evalscript, instructions are in the readme. By default it runs 1 000 000 iterations, simulating processing a 1000x1000px image. The actual times can vary quite a bit depending on the computer and the load.
Old performance (current master):
1000000 iterations per test (1000x1000)

test_graph_1                            : 50.460s
reduce_mean_one_band                    : 1:20.089 (m:ss.mmm)
reduce_mean_one_band                    : 1:17.199 (m:ss.mmm)
reduce_mean_one_band                    : 1:07.611 (m:ss.mmm)
test_short_graph                        : 15.879s
test_apply_absolute                     : 37.084s
test_apply_math                         : 25.813s
test_apply_linear_scale_range           : 24.855s
test_count_with_condition               : 38.004s
test_count_without_condition            : 34.294s

New perfomance (this branch):
1000000 iterations per test (1000x1000)

test_graph_1                            : 6.056s
reduce_mean_one_band                    : 6.074s
reduce_mean_one_band                    : 6.484s
reduce_mean_one_band                    : 6.622s
test_short_graph                        : 2.884s
test_apply_absolute                     : 5.254s
test_apply_math                         : 6.545s
test_apply_linear_scale_range           : 4.907s
test_count_with_condition               : 10.007s
test_count_without_condition            : 7.547s

There are of course possible improvements, these were just low hanging fruits. Hardcoded specialised evalscripts are 1-2 orders of magnitude faster than the general ones. So we could handle some common cases separately. For example, many process graphs will likely be linear (doesn't branch out, so e.g. cloning the DataCube - which is very expensive - can be omitted), and they will likely never work with more than 2 dimensions (or 4, meaning just that spatial dimensions, temporal dimension and bands dimension, so a lot of complication with generalised handling of ndarrays can be simplified).
Feel free to suggest or implement any other ideas for improving the performance.

Also fixes some incorrect tests: add_dimension, rename_labels, filter_bands which had invalid input samples (band values were arrays).
Skips merge_cubes tests as it wasn't properly implemented to begin with (there is a ticket for that).
Also fixes a problem with bands to hold dimension information being added to updateOutput even though there encoding was disabled.

Comments are again purely cosmetical so fftr. You probably also need a computer upgrade as they are ( also on the master) much faster on mine

Haha it has indeed been struggling recently, sometime running eobrowser locally slowed it down to a crawl 😆.
Anyway, the difference can also be checked in EOB. Here are the evalscript generated from reduce_mean_one_band. I have only changed the sampleType to AUTO and set output bands to 1 in updateOutput. I set the timespan to 1st to 14th march.
Old: https://sentinelshare.page.link/L5oz
New: https://sentinelshare.page.link/62xS
For normal 512x512 tiles the old ones load in 13-15s for me and the new ones in 3-5s. Analytical download 1250x933px of the same location (zoom=12&lat=43.02109&lng=11.73855) took 20s vs 1.1min.


connecting to apps running HTTPS

Is there a way to configure wiretap to connect an app running HTTPS?
I have an app running HTTPS on port 4000, and when I try this:
wiretap('My App', {port: 49899});

...I get a lot of errors in my network console:
Mixed Content: The page at 'https://localhost:8443/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://localhost:49899/socket.io/?EIO=3&transport=polling'. This request has been blocked; the content must be served over HTTPS.

Several years ago I worked at Sencha and built a similar tool called Sencha Inspector -- we solved this by shipping with an SSL certificate, but considering you're building an open-source product I doubt that's a viable option here.

That's going to be tricky. Do you think a self-signed certificate would help?

Self-signed cert could help, but the problem there is that any user has to manually navigate to https://localhost:49899 (or whatever port) and manually accept the self-signed cert (because otherwise browsers, specifically Chrome, block these connections as a security precaution).
TL;DR it's a temporary work-around.
I should probably dig into your code at this point and see how you fire up the localhost server, then offer some suggestions. I was just curious if you had already thought of this problem.

That's right, it would be temporary workaround. But again the tool is intended to be used in a development environment and I presumed that most would be using it with http.
Here is the server which is pretty straight forward socket.io server.
https://github.com/Raathigesh/wiretap/blob/master/packages/app/src/main/server.js

Was experimenting with a hosted app approach using webRTC. This should work with https since the broker is running on https. https://github.com/Raathigesh/wiretap/blob/master/README.md#mobx-wiretap-live-experimental

That does seem like it should work. Thanks!


Usage with Ionicframework

I would really like some guidance on how to use this with the ionicframework. Thanks

Hi cozzble, here you have a tutorial: https://blog.nraboy.com/2014/09/show-native-toast-notifications-using-ionic-framework/

Thanks alot.


Do you plan to support TAXII 2.1 spec?

Do you plan to support TAXII 2.1 spec in OpenTAXII? or is it something out of scope? Thank you!

Yes we are. In fact, I'm working on it right now :)

@erwin-eiq the latest merge adds taxii2.1 support? cause according to the docs it's not.
Thank you!


Implement Log Books and their generation

[ ] Make different verisions of Log Books with different but similar contents.
[ ] Make them generat in vanilla structures

generat

generat

shutt


Added Problem Statement Texts

@agrawal-deeksha solutions have already been added by you to mega contest 4 and link to all the problem statements have been added to the readme so I think we do not need this PR!

Editorials in c++ are already added for Mega Contest 4.
Contributions for further contests are appreciated. 😁


MUMMNG-1524: Adds metric units to weather widget - UPDATED

I think I broke the old pull request for this, so I created another one.
Continuation from https://github.com/UW-Madison-DoIT/angularjs-portal/pull/316
Added a dropdown button that, when clicked, gives the user the choice for weather in imperial units or metric units.
The code I added is in the weather widget controller (between lines 46-106 of controllers.js). The functions on lines 77 and 90 are called when the user clicks an item on the dropdown menu, and that does the calculations from Fahrenheit to Celsius, and from Celsius to Fahrenheit.
Temperature in degrees Fahrenheit

Dropdown button is clicked.

Temperature is now in degrees Celsius

The reason the images are not showing is because I was running this locally on the angular-mock portal, and I think that's also why the temperature is getting cut off at the bottom.
UPDATED SCREENSHOTS:
User now has the ability to toggle between Celsius and Fahrenheit

Button fades out if the user tries to click Celsius when they're already viewing the temperature in Celsius.

:+1:


When using global mixin in plugin, performance degradation occurs due to increased requests.

Version
v2.12.2
Reproduction link
https://github.com/hoiheart/nuxt-issue-demo
Steps to reproduce
https://github.com/hoiheart/nuxt-issue-demo/blob/master/plugins/demo.js
using global mixin in plugin

Confirm the response time for the first time
Generates hundreds or thousands of requests
Check the response time afterwards

What is expected ?
Has a response time that is similar to the first
What is actually happening?
The response time is getting slower
First response time

Response time after 1000 request

Additional comments?
If the mixin declaration is in export, it will also be affected by production.
In dev mode, it is affected regardless of the position of the mixin declaration.

This bug report is available on Nuxt community (#c10515)

We encountered this error long time ago,
This has a memory leak, cause Vue instance on server side is a single object. exported function calls for each user request. after too many requests, heap memory max size will reach and cause an app crash.
Use mixin outside exported function, and if you want to use nuxt context, (req, modules, ...) store it in a local variable like this:

let user;

Vue.mixin({
   mounted () {
      console.log(user)
  }
})

export default function (ctx, inject) {
  user = ctx.req.user // example
}

@SasanFarrokh
Thank you for your reply.
In addition, Should I use outside export when calling a Vue instance?
// Can't I install the plug-in like this?
export default ({ app, store }) => {
  Vue.use(myPlugin, { app, store })
}

@SasanFarrokh
Thank you for your reply.
In addition, Should I use outside export function when calling all Vue instance?
// Can't I install the plug-in like this?
export default ({ app, store }) => {
  Vue.use(myPlugin, { app, store })
}

Yes, of course.
Vue global functions (use, mixin, component, ...)  should all be outside export function.

Actually you should never add a global mixins when doing SSR without checking if it has been registered before!
// my-mixin-plugin.js
if (!Vue.__my_mixin__) {
  Vue.mixin({
    ...
   })
   // Avoid registering again the mixin and other calls from SSR
   Vue.__my_mixin__ = true
}

This case also applies for un-names plugins, components.


Incorrect value for Service List Logo

The HowRelated@href value for a service list logo should be urn:dvb:metadata:cs:HowRelatedCS:2019:1001.1 according to the defintiion of the HowRelatedCS
example service list has
   <RelatedMaterial>
      <tva:HowRelated href="urn:dvb:metadata:cs:HowRelatedCS:2019:1001.2"/>
      <tva:MediaLocator>
        <tva:MediaUri contentType="image/png">https://stage.sofiadigital.fi/dvb/dvb-i-reference-application/backend/channel_icons/chicon_harmonic.png</tva:MediaUri>
      </tva:MediaLocator>
    </RelatedMaterial>```

tested against my service list validator
http://paulhiggs.ddns.net:3010/check?SLurl=https://raw.githubusercontent.com/DVBproject/DVB-I-Reference-Client/master/backend/servicelists/example.xml

They are meant to be service logos (clause <IP_ADDRESS>), not service list logos (clause <IP_ADDRESS>).
I assumed that service list logos would be used in the RelatedMaterial-elements in the ServiceList-element and they would be displayed when selecting the service list.

Looks like a problem with my XML parser...


Tab order (tabindex) is strange in login screen

Please provide us with the following information:

This issue is for a: (mark with an x)
- [x] bug report -> please search issues before submitting
- [ ] feature request
- [ ] documentation issue or request
- [ ] regression (a behavior that used to work and stopped in a new release)

Minimal steps to reproduce

Create a simple ui and load the login screen. The tab order is:
Email
forget password link
password
submit button

Any log messages given by the failure

Expected/desired behavior

Want the expected order:
email field
password field
fortget password link
submit button

OS and Version?

Windows 7, 8 or 10. Linux (which distribution). macOS (Yosemite? El Capitan? Sierra?)

Versions

Mention any other details that might be useful

Thanks! We'll be in touch soon.

Any action on this?
@Sammak do you know who the owner from Microsoft is on this subject?

Had the same issue after using newer page layout version. My workaround in the end was to use JavaScript. I also had contact with a Support Engineer, though that did not really provide insight into the topic and I am not certain if they consider this an issue as well.
    <script>"use strict"; $(document).ready(function () {
            document.getElementById("forgotPassword").tabIndex = "1";
        });
    </script>

You'll need to tweak it to your exact desired order.
I think that they changed it to be more in line with accessibility standards. However, I believe that they should have moved the "forgot password" link further down on the page.

@LXBdev , @LockTar , You can work around the issue by making sure you have the latest version of Page Layout.
<ContentDefinition Id="api.signuporsignin">         <LoadUri>~/tenant/templates/AzureBlue/unified.cshtml</LoadUri>         <RecoveryUri>~/common/default_page_error.html</RecoveryUri>         <DataUri>urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.5</DataUri>         <Metadata>           <Item Key="DisplayName">Signin and Signup</Item>         </Metadata>       </ContentDefinition>

@shmiyaza we're using urn:com:microsoft:aad:b2c:elements:contract:unifiedssp:2.1.7 and still getting following sequence of the elements

That does misbehave in Chrome browser. Very annoying for keyboard-addicted users.
Is there any way we could facilitate the fix? Or is there any way we can suggest a change in code via a PR (I guess that the sources for the B2C are not public)?
The fix is trivial. HTML element order change. Works fine once changed.

Thank you.

One way to achieve this is configure passwordlinklocation in technical profile of custom policy.
<Item Key="setting.forgotPasswordLinkLocation">AfterInput</Item>
you may have to change css little bit.


Funky inventory

When you try to use the creative inventory in the building example, it is a bit funky.
https://user-images.githubusercontent.com/98261860/197361746-e664b6ad-0228-47a5-bcce-eb76e45d9a6b.mp4
The items disapear when you click them, but if you took an item from the creative menu it doesn't go away when you close the inventory.
And I didn't show it in the video, but the search menu doesn't work when you try to search.

The items disappearing when you click them from your hotbar are because creative mode intentionally doesn't track item movements, it purely operates by sending packets to set slots to have contents using SetCreativeModeSlot. When you pick up the item, the server sees your inventory change, marks it dirty, and flushes it to your client. This includes carried_item, which is never set in creative mode because the client doesn't send packets for it.
Similarly, when you pick something up from the creative menu and close the window without placing it in your hotbar, carried_item is was never set, so the server never sends the packet to clear our your clear your carried item.

Also, I'm unable to reproduce the creative search not working. The client doesn't send any packets to do that I'm pretty sure its all client side.


Five Digit Up Counter

Zero To Mastery - Webblocks 2022 📦📦
👉 Please remove the below and replace with your own values, leaving the headers where they are. 👈
PR contains:

INFO ABOUT YOUR PULL REQUEST GOES HERE (Please be as descriptive as possible) 🤜

Breaking changes

IF ANYTHING YOU'RE COMMITTING WOULD BREAK SOMETHING, INCLUDE HERE WHAT WOULD BREAK
IF YOU HAVE NO BREAKING CHANGES, ENTER 'None'

Screenshots

IF YOU HAVE ANY SCREENSHOTS, INCLUDE THEM HERE.
IF YOU HAVE NO SCREENSHOTS, ENTER 'None'

Please check the contribution guidelines for how to setup the correct folder structure.
You are currently breaking the github workflow.

Also, please fill out the request template.

These seem to be two contributions, and you still need to add the missing meta.json to the "Catch Me If you Can" artwork.


Thoughts on removing TestListener to TestHook rule?

There is a rule provided in phpunit90 rule set that converts TestListener usages to TestHook usages. This was done because phpunit deprecated TestListener and provided somewhat similar functionality under their TestHook system. This has a couple gotchas where I think maybe removing this from the rule set may be a good idea?
First is the TestListener service provides wildly different functionality to the TestHook system, For example TestListener provides the actual test object whereas the TestHook only provides a string representation. Unfortunately this means that there is a large part of functionality available that a simple method signature change can't ever address.
I think the more important issue though is that TestHook is not a system they recommend to use nor is it actually staying long term, a new event system is under development for phpunit 10. You can see some of the discussion around that here https://github.com/sebastianbergmann/phpunit/issues/3390.
The main reason I suggest this change is that its a potentially breaking change rule since the interface isn't at all the same but its also not even a system that will be in use going forward. I can make a PR to do this but wanted to discuss first what your thoughts were on this?
Just for reference the rule I"m talking about.
https://github.com/rectorphp/rector-phpunit/blob/main/config/sets/phpunit90.php#L13

Hi @ccovey ,
thanks for the proposal. I personally don't use these listeners much, but I recall I decompose it to hook as soon as possible.
Removing the rule from set would kill the point of making upgrade sets.
If there is a specific bug, it should be backed by fixture in the tests and fixed. E.g. by skipping the edge case you talk about.
Could you add such failing fixture to the rule test itself? It would help to have this case covered and not break anything :)

I'll try to look at getting you a failing test but for now I'll just try to describe the issue. below is from our actual listener, we get the object under test and reset all the properties after a test has run. Note that the Test object is passed in and we are able to manipulate it.
public function endTest(Test $test, float $time) : void
{
    $refl = new ReflectionObject($test);
    foreach ($refl->getProperties() as $prop) {
        if (!$prop->isStatic() && strpos($prop->getDeclaringClass()->getName(), 'PHPUnit_') !== 0) {
            $prop->setAccessible(true);
            $prop->setValue($test, null);
        }
    }
}

when converting to a hook we see public function executeAfterTest(string $test, float $time): void; as the new signature and only a string representation of a test is passed in not the object itself. I don't have thoughts on how to determine whether a string is good enough or not?
The reason I suggested not adding it to the upgrade set is because phpunit doesn't actually recommend you use them and also plans on deleting the TestHooks along with the TestListeners.
Sorry I can't get you a test case atm, in the middle of work day and just came across this. I'll try and get you something tonight.
Thanks!

Closing for lack of momentum here. Feel free to send a PR with rule proposal, we can push it from there together :+1:


Alerts does not understand queries with several series

For some reason, the quering code for graphs and for alerts are different.
It is not a bug itself, but, as a result, it produces a lot of issues.
The most of our queries to clickhouse look like
SELECT t, arraySort(groupArray((key, val))) AS groupArr
...

Here we request several series in one query.
Alert cannot parse such series and returns error for some reason
request handler error: failed to query data: Failed to query data: rpc error: code = Unavailable desc = error reading from server: EOF"

Current workaround: use one-series requests for alerts like
SELECT $timeSeries as t, avg(value) as value
...

@ertong sorry for late response,
your query format should be properly processed on golang part
could you provide "generated sql" from graph panel which you pass to golang part of plugin?

 I have error much like this with alerts (with current master build) and problem was with Decimal type key, not sure about UInt64.
t=2021-11-18T18:07:30+0000 lvl=warn msg="Value [[[500 1]]] has compound type [Array(Tuple(Decimal(16, 3), UInt64))] and will be returned as string" logger=plugins.backend pluginId=vertamedia-clickhouse-datasource

Hm ... it is not an SQL issue, grafana itself shows graphs successfully.
propId is just a join key, it is not selected to final table.
In final groupArray((key, val)), key is a string.

Ah, sorry, I didn't notice there is T.key field, so this is not the case then.

@ertong sorry for late reply
looks a little bit strange
why your WHERE $timeFilter clause
replaced only as WHERE timeCreate >= toDateTime(1633713342)
instead of WHERE timeCreate >= toDateTime(xxx) AND timeCreate <= toDateTime(yyy)
could you setup
GF_LOG_LEVEL=debug
or change level=debug via config file https://grafana.com/docs/grafana/latest/administration/configuration/#log
And share your grafana logs after press "save dashboard"?
On backend side we have simple process Generated SQL just parsed with regexp and xxx and yyy timestamps from dashboard json should replaced to actual values

@ertong i tried to reproduce and failed
SELECT t, arraySort(groupArray((key, val))) AS groupArr
FROM
(
	SELECT $timeSeries as t, propId, avg(value) val, T.key
	FROM (
		  SELECT toDateTime($from+toUInt32(number)*60) as event_time, propId propId, null value
		  FROM numbers(toUInt32(($to-$from)/60)) TNums
		  JOIN
		  (
		    SELECT 'mysql' propId UNION ALL
		    SELECT 'postgresql' propId
		  ) TProps
		  ON 1=1
		  UNION ALL
		  SELECT event_time, $table.service_name AS propId, too_big_value AS value FROM $table
		  WHERE $timeFilter
			  AND $table.service_name IN ('mysql','postgresq')
		) TData
	JOIN (
	  SELECT 'mysql' propId, '0 exit.temp' key UNION ALL
	  SELECT 'postgresql' propId, '2 mid.temp' key UNION ALL
	  SELECT 'mysql' propId, '3 bottom.temp' key UNION ALL
	  SELECT 'postgresql' propId, '1 top.temp' key
	) T USING propId
	GROUP BY t, propId, T.key
	ORDER BY t, T.key
) TR
GROUP BY t
ORDER BY t

works OK with unified and panel alerts


docker pull fails because of a concurrent connection failing

Output of docker version:
Client:
 Version:      1.10.1
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   9e83765
 Built:        Thu Feb 11 19:14:21 2016
 OS/Arch:      windows/amd64

Server:
 Version:      1.10.1
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   9e83765
 Built:        Thu Feb 11 20:39:58 2016
 OS/Arch:      linux/amd64

Output of docker info:
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 1.10.1
Storage Driver: aufs
 Root Dir: /mnt/sda1/var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 5
 Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
 Volume: local
 Network: null host bridge
Kernel Version: 4.1.17-boot2docker
Operating System: Boot2Docker 1.10.1 (TCL 6.4.1); master : b03e158 - Thu Feb 11
22:34:01 UTC 2016
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 996.2 MiB
Name: default
ID: NO2I:IT3M:H23O:D5GS:PEQY:GADX:WCGC:HVBU:BVV6:ZPI2:6HGQ:5UON
Debug mode (server): true
 File Descriptors: 10
 Goroutines: 21
 System Time: 2016-05-01T18:03:11.184715369Z
 EventsListeners: 0
 Init SHA1:
 Init Path: /usr/local/bin/docker
 Docker Root Dir: /mnt/sda1/var/lib/docker
Username: parhamdoustdar
Registry: https://index.docker.io/v1/
Labels:
 provider=virtualbox

Additional environment details (AWS, VirtualBox, physical, etc.):
I have set an HTTP proxy for my docker daemon. The proxy works, but is slow.
Steps to reproduce the issue:

On a slow connection, pull the nginx:latest image by typing docker pull nginx.

After about 30 seconds, the output will be something like this:
Using default tag: latest
latest: Pulling from library/nginx
efd26ecc9548: Downloading 523.2 kB/51.34 MB
a3ed95caeb02: Download complete
a48df1751a97: Downloading 212.1 kB/19.82 MB
8ddc2d7beb91: Retrying in 1 seconds

Describe the results you received:
After a while, the Docker engine will give up downloading all those layers, even though 2 of them are in progress and only one of them has failed:
net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

Describe the results you expected:
A download failure should not stop the whole build while concurrent gorutines are already downloading data. Instead, it should wait until the other threads have finished downloading. Either that, or there should be a way to provide a maximum concurrent downloads limit.
Additional information you deem important (e.g. issue happens only occasionally):
As I said, this issue happens on network connections that don't support multiple downloads.

Thanks for reporting; I think this is closely related to https://github.com/docker/docker/issues/22443, which is for docker push

Thanks!
It seems you gave the wrong issue ID; #22443 is this issue, not a different one.

Might be related to #20936?

It seems that the number of concurrent connections in docker push or docker pull is controlled by
https://github.com/docker/docker/blob/v1.11.0/daemon/daemon.go#L77-L85
The value is set with maxDownloadConcurrency = 3 and maxUploadConcurrency = 5.
Maybe those two values could be changed to adjustable and passed as arguments from docker daemon?

Oh! Wrong link on my clipboard; meant to refer to https://github.com/docker/docker/issues/20936 indeed

@parhamdoustdar @thaJeztah I just added a PR #22445 to add the option for max upload/download concurrency. Hopefully the issue could be resolved.

Awesome! Thank you!
On 5/2/2016 2:20 AM, Yong Tang wrote:

@parhamdoustdar https://github.com/parhamdoustdar @thaJeztah
https://github.com/thaJeztah I just added a PR #22445
https://github.com/docker/docker/pull/22445 to add the option for
max upload/download concurrency. Hopefully the issue could be resolved.
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
https://github.com/docker/docker/issues/22443#issuecomment-216074977


Fix the with and height asserts in Console::rect

The upstream docs are wrong on this one: x + width can be equal to the
console's width as well. It would be impossible to have a rect that ends
at the right edge of the console. And the same goes for height.
In addition, I've split the conditions each into its own assert. When it
fires, it's useful to know which condition in particular failed (was it
the x or the y check?). This generates much more useful error
messages.

The linux and windows jobs passed and the osx ones will fail (see #230), so I'm merging this.


setloclist triggers BufWinEnter, but no Leave autocommand event

Using setloclist() triggers BufWinEnter for the (already open) qf window,
but no leave events from the originating buffer/window.
TEST CASE:
Given t-autocmd-with-setloclist.vim:
function! MyDebugAutocommands() abort
  augroup my_debug_autocmd
    au!
    for e in split('BufAdd BufCreate BufDelete BufEnter BufFilePost BufFilePre BufHidden BufLeave BufNew BufNewFile BufRead BufReadPost BufReadPre BufUnload BufWinEnter BufWinLeave BufWipeout BufWrite BufWritePost BufWritePre CmdwinEnter CmdwinLeave ColorScheme CompleteDone EncodingChanged FileAppendPost FileAppendPre FileChangedRO FileChangedShell FileChangedShellPost FileEncoding FileReadPost FileReadPre FileType FileWritePost FileWritePre FilterReadPost FilterReadPre FilterWritePost FilterWritePre FocusGained FocusLost GUIEnter GUIFailed InsertChange InsertCharPre InsertEnter InsertLeave MenuPopup OptionSet QuickFixCmdPost QuickFixCmdPre QuitPre RemoteReply SessionLoadPost ShellCmdPost ShellFilterPost SpellFileMissing StdinReadPost StdinReadPre SwapExists Syntax TabEnter TabLeave TermChanged TermResponse TextChanged TextChangedI User VimEnter VimLeave VimLeavePre VimResized WinEnter WinLeave WinNew')
      exe 'au' e '* echom "DBG: ".string(map(range(1, winnr(''$'')), ''winheight(v:val)''))." ('.e.': abuf: ".expand(''<abuf>'').", amatch: ".expand(''<amatch>'').", winnr():".winnr().", ft: ".&ft.", bt: ".&bt.")"'
    endfor
  augroup END
endfunction

call setloclist(0, [])
lopen
wincmd p

call MyDebugAutocommands()
call setloclist(0, [])
echom 'current: winnr='.winnr().', bufnr='.bufnr('%')

Running vim -Nu NONE t-autocmd-with-setloclist.vim, and then :source % will display:
DBG: [37, 10] (FileType: abuf: 2, amatch: qf, winnr():2, ft: qf, bt: quickfix)
DBG: [37, 10] (OptionSet: abuf: , amatch: filetype, winnr():2, ft: qf, bt: quickfix)
DBG: [37, 10] (BufRead: abuf: 2, amatch: …/Vcs/vim/quickfix, winnr():2, ft: qf, bt: quickfix)
DBG: [37, 10] (BufReadPost: abuf: 2, amatch: …/Vcs/vim/quickfix, winnr():2, ft: qf, bt: quickfix)
DBG: [37, 10] (BufWinEnter: abuf: 2, amatch: …/Vcs/vim/quickfix, winnr():2, ft: qf, bt: quickfix)
current: winnr=1, bufnr=1

Changing to the location list window using Ctrl-w j will display this:
DBG: [37, 10] (BufLeave: abuf: 1, amatch: …/Vcs/vim/t-autocmd-with-setloclist.vim, winnr():1, ft: , bt: )
DBG: [37, 10] (WinLeave: abuf: 1, amatch: …/Vcs/vim/t-autocmd-with-setloclist.vim, winnr():1, ft: , bt: )
DBG: [37, 10] (WinEnter: abuf: 2, amatch: , winnr():2, ft: qf, bt: quickfix)
DBG: [37, 10] (BufEnter: abuf: 2, amatch: , winnr():2, ft: qf, bt: quickfix)

Using Vim 8.0.628.

I think this issue is void, and I was confused: there is no WinEnter event, but only BufWinEnter, and I've wrongly used this to update my statusline(s).


How to get the Auth Token from client?

I need to retrieve the access_token from this package so I can set it in the angular-spotify package similar to this: Spotify.setAuthToken($rootScope.token)
This way I can utilize the spotify web api from the client, and not only on the server (like this package does - https://github.com/xinranxiao/meteor-spotify-web-api )
Printing Meteor.user() only lists the 'profile' field, not the 'services' where the token lies.
Or is there a better way to be able to get the auth/access token from the server, and use the spotify web api from the client with Angular?

Answered my own question. Included some extra/commented code that shows how queries work.
Meteor.methods({
  'users.get_spotify_access_token' () {
    if (!this.userId) {
      return this.ready();
    }
    // selector to query MiniMongo
    var selector = {
      _id: this.userId
    };
    // If we only want specific fields
    var options  = { };

    // find() returns a cursor to iterate over.
    // TODO: just use Meteor.user()
    var user = Meteor.users.findOne(selector, options);

    var spotify = user.services.spotify;
    console.log(spotify);

    return spotify.accessToken;
  }
});


idea: be able to create a GH release on publish

Similar to how goreleaser works, but without the compilation, archiving, etc. We just want a formal GH release associated with the tag.

Easier to just use GitHub's release.yaml feature


fix testing history

this will fix the testing history, because the RKI moved the excel data sheet from website to github! the excel sheet on thier website is still there but not updated anymore!

Thanks @Rubber1Duck!


Non host players buying upgrades doesn't use credits

Seems to be a bug where if the host buys upgrades it works fine but if a non host player buys any upgrades it doesn't cost anything.

If you could post logs from both host and client whenever they are buying an upgrade, I would appreciate it.

Log for the host:
[Info   :More Ship Upgrades] [LguStore] Received server request to handle shared upgrade for: Weed Genetic Manipulation increment: False
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Weed Genetic Manipulation increment: False
[Info   :More Ship Upgrades] [LguStore] First purchase, executing BaseUpgrade.load()
[Info   :More Ship Upgrades] [LguStore] Node found (Weed Genetic Manipulation) and unlocked (level = 0)
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client:<PHONE_NUMBER>2951390
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client: 0
[Info   : Unity Log] Setting animation on client
[Info   : Unity Log] Setting animation on client
[Info   : Unity Log] Setting animation on client
[Info   : Unity Log] Setting animation on client
[Info   :More Ship Upgrades] [LguStore] Received server request to handle shared upgrade for: Bargain Connections increment: False
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Bargain Connections increment: False
[Info   :More Ship Upgrades] [LguStore] First purchase, executing BaseUpgrade.load()
[Info   :More Ship Upgrades] [LguStore] Node found (Bargain Connections) and unlocked (level = 0)
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client:<PHONE_NUMBER>2951390
[Info   : Unity Log] clip index: 10; current planet: 41 Experimentation
[Info   : Unity Log] Current ship ambience clips length: 12
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client: 0
[Info   :More Ship Upgrades] [LguStore] Received server request to handle shared upgrade for: Oxygen Canisters increment: False
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Oxygen Canisters increment: False
[Info   :More Ship Upgrades] [LguStore] First purchase, executing BaseUpgrade.load()
[Info   :More Ship Upgrades] [LguStore] Node found (Oxygen Canisters) and unlocked (level = 0)
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client:<PHONE_NUMBER>2951390
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client: 0
[Info   :More Ship Upgrades] [LguStore] Received server request to handle shared upgrade for: Oxygen Canisters increment: True
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Oxygen Canisters increment: True
[Info   :More Ship Upgrades] [LguStore] upgrade already unlocked, executing TierUpgrade.Increment()
[Info   :More Ship Upgrades] [LguStore] Node found (Oxygen Canisters) and unlocked (level = 1)
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client:<PHONE_NUMBER>2951390
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client: 0
[Info   :More Ship Upgrades] [LguStore] Received server request to handle shared upgrade for: Oxygen Canisters increment: True
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Oxygen Canisters increment: True
[Info   :More Ship Upgrades] [LguStore] upgrade already unlocked, executing TierUpgrade.Increment()
[Info   :More Ship Upgrades] [LguStore] Node found (Oxygen Canisters) and unlocked (level = 2)
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client:<PHONE_NUMBER>2951390
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client: 0
[Info   :More Ship Upgrades] [LguStore] Received server request to handle shared upgrade for: Weed Genetic Manipulation increment: True
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Weed Genetic Manipulation increment: True
[Info   :More Ship Upgrades] [LguStore] upgrade already unlocked, executing TierUpgrade.Increment()
[Info   :More Ship Upgrades] [LguStore] Node found (Weed Genetic Manipulation) and unlocked (level = 1)
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client:<PHONE_NUMBER>2951390
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client: 0
[Info   :More Ship Upgrades] [LguStore] Received server request to handle shared upgrade for: Weed Genetic Manipulation increment: True
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Weed Genetic Manipulation increment: True
[Info   :More Ship Upgrades] [LguStore] upgrade already unlocked, executing TierUpgrade.Increment()
[Info   :More Ship Upgrades] [LguStore] Node found (Weed Genetic Manipulation) and unlocked (level = 2)
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client:<PHONE_NUMBER>2951390
[Info   :More Ship Upgrades] [LguStore] Received and updated save info for client: 0
[Info   : Unity Log] clip index: 2; current planet: 41 Experimentation
[Info   : Unity Log] Current ship ambience clips length: 12
[Info   : Unity Log] Setting animation on client
Log for non host:
[Info   : Unity Log] Could not parse word: lgu
[Error  : Unity Log] Only the owner can invoke a ServerRpc that requires ownership!
[Info   :More Ship Upgrades] [LguStore] Bargain Connections is registered as a shared upgrade! Calling ServerRpc...
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Bargain Connections increment: False
[Info   :More Ship Upgrades] [LguStore] First purchase, executing BaseUpgrade.load()
[Info   :More Ship Upgrades] [LguStore] Node found (Bargain Connections) and unlocked (level = 0)
[Info   : Unity Log] clip index: 10; current planet: 41 Experimentation
[Info   : Unity Log] Current ship ambience clips length: 12
[Error  : Unity Log] Only the owner can invoke a ServerRpc that requires ownership!
[Info   :More Ship Upgrades] [LguStore] Oxygen Canisters is registered as a shared upgrade! Calling ServerRpc...
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Oxygen Canisters increment: False
[Info   :More Ship Upgrades] [LguStore] First purchase, executing BaseUpgrade.load()
[Info   :More Ship Upgrades] [LguStore] Node found (Oxygen Canisters) and unlocked (level = 0)
[Error  : Unity Log] Only the owner can invoke a ServerRpc that requires ownership!
[Info   :More Ship Upgrades] [LguStore] Oxygen Canisters is registered as a shared upgrade! Calling ServerRpc...
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Oxygen Canisters increment: True
[Info   :More Ship Upgrades] [LguStore] upgrade already unlocked, executing TierUpgrade.Increment()
[Info   :More Ship Upgrades] [LguStore] Node found (Oxygen Canisters) and unlocked (level = 1)
[Error  : Unity Log] Only the owner can invoke a ServerRpc that requires ownership!
[Info   :More Ship Upgrades] [LguStore] Oxygen Canisters is registered as a shared upgrade! Calling ServerRpc...
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Oxygen Canisters increment: True
[Info   :More Ship Upgrades] [LguStore] upgrade already unlocked, executing TierUpgrade.Increment()
[Info   :More Ship Upgrades] [LguStore] Node found (Oxygen Canisters) and unlocked (level = 2)
[Error  : Unity Log] Only the owner can invoke a ServerRpc that requires ownership!
[Info   :More Ship Upgrades] [LguStore] Weed Genetic Manipulation is registered as a shared upgrade! Calling ServerRpc...
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Weed Genetic Manipulation increment: True
[Info   :More Ship Upgrades] [LguStore] upgrade already unlocked, executing TierUpgrade.Increment()
[Info   :More Ship Upgrades] [LguStore] Node found (Weed Genetic Manipulation) and unlocked (level = 1)
[Error  : Unity Log] Only the owner can invoke a ServerRpc that requires ownership!
[Info   :More Ship Upgrades] [LguStore] Weed Genetic Manipulation is registered as a shared upgrade! Calling ServerRpc...
[Info   :More Ship Upgrades] [LguStore] Received client request to handle shared upgrade for: Weed Genetic Manipulation increment: True
[Info   :More Ship Upgrades] [LguStore] upgrade already unlocked, executing TierUpgrade.Increment()
[Info   :More Ship Upgrades] [LguStore] Node found (Weed Genetic Manipulation) and unlocked (level = 2)
[Info   : Unity Log] clip index: 2; current planet: 41 Experimentation
[Info   : Unity Log] Current ship ambience clips length: 12

Can confirm this happens. Becomes an issue for individual player upgrades.

Should be fixed in 3.10.2 release, will keep this open incase it's not.

People confirmed it was fixed so closing.


Huge refactor: backends, package layout, ...

Packaging of the code is now based on this approach:
https://medium.com/@benbjohnson/standard-package-layout-7cdbc8391fc1
Now we can have different backends to store/deliver/process messages
dummy backend
logrus for logging (I hadn't a quick way in my mind to keep the server
log file feature, so I've temporary dropped that feature)
Makefile, to inject git metadata into the binary (version, build time, ...)
cobra as the CLI parser

serve subcommand
version subcommand

Fixes #14

To be honest, I haven't tested the guerrilla-db-redis backend yet. I'll test it tomorrow 😉

Thanks, that's an impressive effot!
Looks like you're going to collect 3 prizes, one for Testing, Modularize and "fix any tidbits" ones.
The "Standard Package Layout" article is an eye-opener, and very eager to use it. Also good to see logging is improved.
Just had a superficial look so far, will review and test more thoroughly soon.

Was able to build, but not run - seems like goguerrilla.conf.sample doesn't have the latest config, getting this error: Error while loading the backend ""            error="backend "" not found"
Some small points:

Looks like cobra is a powerful tool, should give more flexibility in the future for managing the server from the command line. The generation of a man page feature is interesting to say the least! As for the 'cmd' folder - perhaps better to call it cli (command line interface)?

prepareAllowedHosts() - should that be part of the config package? Because it's read from the config, only the config should be concerned if it's parsed or not, and should provide the already parsed map into the server. This also needs to be reloaded once a SIG-HUP is caught.,(The SIG-HUP config reloading feature needs a lot of work in the future. A related one would be graceful shut down)

There is an init() method in each of the backends, could not find where is that called from?

Noticed that the build doesn't complain anymore when there are unused variables, is this something that could be turned on?

The Client struct has been placed in the backend.go file and also the readers too. Wouldn't these be more part of their own server.go file (or similar named file)? (Noticed that there is a TODO there, so assuming not yet completed).

How does the version.go work? What is the correct way to use?

logrus - excellent choice. So when the logging to a file feature goes back, it would be best to have a separate file per server (like for eg. Nginx does) and a main error log file for general errors (which can be pointed to syslog). Also, really need logurus to work with SIG-HUP so that the logs can be put on rotation)

In all, excellent refactor which should make it more test friendly. It's really good to see this little server grow up :+1:  Looking forward to run it in prod when it's merged!

Thank you. I hope we (@cafebazaar) also switch to go-guerrilla as our mail server in near future. In that case I guess we'll be happy to alse offer awards for contribution :smile:
On the points

cmd seems to have become a convention. You can see that in great projects like docker and kubernetes.
You're right. I'll fix it ;)
init is like static {} in java. It's called while the package is loaded. More details: https://golang.org/ref/spec#Package_initialization and http://stackoverflow.com/a/24790378/171732
Unused variable is an error in golang! Maybe it was a warning in older versions?
For a cleaner Backend, we need to refactor the client a lot. As you and @Xeoncross noted in #14 , I believe we should pack the headers and the connection (or a restricted interface with access to connection), and pass them to the backend. But to keep this refactoring as minimal as possible, I tried to introduce the backend mechanism without a huge change in the codes. And yes, the util should not be dependant on Client struct. But I guess we can iterate the refactoring in multiple minimal pull requests, to have more control over the changes.
The variables inside version.go are filled at the build time. They're currently used in the greeting message. To have a more friendly version string, you can tag the git repository on releases, and the Makefile will use the tag name instead of the long and unfriendly hash.
I can work on it. Is this a blocker for your deployment? As I have mentioned in 5, I'm trying this pull request to not grow more than this. But I understand that your deployment has count on it. :wink:

And I've found out that I've forgotten to load the config for GuerrillaDBAndRedisBackend. I'll fix it and update the pull request very soon.

Thanks for the update.
Sure, you're welcome to offer rewards too.

OK, looking at some other projects too - seems like this is the convention. 'cmd' it is then.

2 & 3. Thanks!

Ahh, yes, updated the go version recently.

Good that we are all on the same page.

Thanks.

Not really a blocker, since the stdout can be redirected to a logfile. On Guerrilla mail, the SIG_HUP is used only to reload the allowed host list. Save it for another pull request.

Thanks - indeed, it looks like config not loaded for GuerrillaDBAndRedisBackend.

Added you to collaborators; you're welcome to work on this repo instead of your fork.

Hi @remohammadi, could you please provide an update on your status? Looking to merge this soon, so that more work can continue.

Sorry I was so busy :(
There is still one step before merging: reload after SIGHUP. But it's a bit complicated. To support the reload completely, we have to kill the listening servers, and relisten (to support changes in servers and  servers.listen_interface. I don't know how to that without nanoseconds of downtime. any idea?

Thanks for the update!
That's OK, will work on the reload after sighup in another branch.
For now, don't need complete reload support.
Yes, how to do it is not trivial as you have noted.
The SIGHUP should not cause any disconnection to established connections,
but a slight pause would be acceptable (if can't be avoided).
The way to change the interface would be to start listening on new one
first then stop accepting from the old one. Disconnect all clients on the
old one if not in DATA state or at end of DATA state (graceful shutdown).
Then completely stop the server once all clients disconnected.
We also need a graceful shutdown function that will also notify the backend
to stop our workers to close any session / connection / files it may need
to close or perform any other shutdown work.
The SIGHUP handler function would need to work out what needs to be
reloaded & then notify whch parts to shutdown/init..
We also need to reload our ssl config if it changed.
Once this is merged, would like to do a quick experiment on this.
On 20 Nov. 2016 23:27, "Reza Mohammadi"<EMAIL_ADDRESS>wrote:

Sorry I was so busy :(
There is still one step before merging: reload after SIGHUP. But it's a
bit complicated. To support the reload completely, we have to kill the
listening servers, and relisten (to support changes in servers and
servers.listen_interface. I don't know how to that without nanoseconds of
downtime. any idea?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/flashmob/go-guerrilla/pull/16#issuecomment-261781443,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAnmP7RedtQ-tgomaB2wl8Y1DZ-X10Dcks5rAFjPgaJpZM4KqvCW
.

I've also found this. But it doesn't support changing of ports.
I'm adding a graceful shutdown function to the backend interface. After that, I guess the code is ready for merge.

I guess it's now ready to be merged. I tested it using this script with the dummy backed. Can you please test the GuerrillaDBAndRedisBackend and check if it's storing the email the way it's supposed to do? 😄
To summarize the notable behavioral changes from the main branch:

Reloaded config is not applied 😞
The log outputs are not separated based on the server configs
The format of configuration is changed to support different backends

Merged!
Going to try it out on Guerrilla Mail soon.
Thank you for your contribution - very much appreciated!


adds effective client request url var expansion

[approve ci]

Comment addressed.
Also added a clarifying comment for TSHttpTxnEffectiveUrlStringGet that callers must free.

There's no need to cast here.

The compiler complained of an illegal conversion of const char * to char *. As discussed, I removed the const and then squashed the commits.

[approve ci]

[approve ci]

Fixed a clang-format error. I learned you can run make clang-format to discover which code style differences will trigger a failure in CI.

[approve ci]

[approve ci autest]

@SolidWallOfCode I think this is finally ready.


Add builtins specific data providers.

Every language has specific data that suit only for ones. For example SSN for en (USA) or CPF for pt-br. CPF can be useful only for brazilians.
If user want to use this providers then he must be imported explicitly.
Here's how it will look:
>>> from elizabeth import Generic
>>> from elizabeth.builtins import Brazil

>>> generic = Generic('pt-br')

>>> class BrazilProvider(Brazil):
        class Meta:
            name = "brazil_provider"

>>> generic.add_provider(BrazilProvider)
>>> generic.brazil_provider.cpf()
'001.137.297-40'

@Battleroid What you think about it? It's sounds useful?

Yes, this is useful.
Perhaps we can also make a general one for custom pieces of data that can be useful as well altough im having trouble picturing how you'd make that

Yes, I think it's useful. It's be nice to have an in depth comparison vs faker, both with usage examples and speed information.

@Battleroid @Uncleleech Also i added really small comparison to README with screenshot.

@Battleroid If you wish, you can carry out more in-depth comparison and add the results to the README. My comparison was too humble.

Sounds good.


WIP: Add rankicon parameter to CLIENTSTATUS command

Context
Contributors use a high rank to determine their rank icon. The problem is that this makes contributors look like pro gamers and they might not be. In order to create more flexibility to rank icons, we should separate them from rank. If we can separate it from rank we could use rank icons made by Ice
The current protocol is this:
CLIENTSTATUS userName status

status contains bits of information including rank.
Proposed Changes
I propose to send this instead from TeiServer
CLIENTSTATUS userName status rankIcon

where rankIcon is a string that can take these values:

1Chev, 2Chev, ...8Chev
1Moderator, 2Moderator, ...8Moderator
1Contributor, 2Contributor, ...8Contributor
1Streamer, 2Streamer, ...8Streamer
1Mentor, 2Mentor, ...8Mentor
Bot

But it's very flexible and can really be anything. The numeric prefix represents their chev level purely based on playtime. After that the postfix depends on if they have a special role or not. If a user has multiple roles it will pick one in this order: Moderator > Contributor > Streamer > Mentor.
Required SPADS modification
SPADS will error due to the extra argument. The var/plugins/barmanager.py needs the hCLIENTSTATUS_pre signature to change (see below)
Required Chobby Modifications
No change is required to Chobby to prevent errors. Chobby is using regex that will simply ignore the extra argument.
Test Steps
1. Fix SPADS Plugin
Before launching SPADS you will need to modify var/plugins/barmanager.py
Change this line
def hCLIENTSTATUS_pre(command, userName, status):

to this
def hCLIENTSTATUS_pre(command, userName, status, rankIcon=None):

Also at the top of this function add a log:
	spads.slog("Rank icon: " + str(rankIcon), 0)

Now launch SPADS as normal
perl spads.pl etc/spads.conf

2. Add TeiServer Test Users
Launch teiserver with this command (that allows running Elixir commands)
iex -S mix phx.server

In the same terminal run this to generate test users
TestScript.run()

This will generate the following users:
1Chev, 2Chev, 3Chev, 4Chev, 5Chev, 6Chev, 7Chev, 8Chev

Each of them will have a password of password. Their chev level is defined by their name.
3. Login with test users
Launch Chobby and login with any of the test users. In the SPADS logs you will see what rank icon is being sent. Now go to Teiserver website and login with root@localhost with password password
Go to Users > Find the user > Edit > Change their role to include any of Moderator/Contributor/Streamer/Mentor
Relogin with that user in Chobby. Check the SPADS logs and it should be different.

The code works but requires a DB call whenever we update the client's status. Not good


OpenGL ES Support

Running MagicMirror on TinkerBoard, scripts run fine. No issues except Node.js wants to use OpenGL but TinkerBoard supports only OpenGL ES. Is there any chance of recompiling electron Node for use with OpenGL ES?
Greetings
When submitting a new issue, please supply the following information:
Platform: TinkerBoard
Node Version: v9.11.2
MagicMirror Version: 2.4.

This is an electron question. Please ask in the electron repository.


[Build Window] App package versioning not applied properly

Describe the bug
Sometimes, 'Versioning options' in Appx Build Options are ignored and not applied properly and the package is generated with the same version number. Because of this, the installation of the app package fails. There are no attempts for uninstallation as well. Both the automatic increment or manual version numbers are ignored.
To workaround this, I have to manually delete the previous installations through Device Portal, before installing a newly generated one. This degrades productivity a lot.
Screenshots

Expected behavior
Version number automatically increased for each appx generation or manually specified version number should be applied to the app package.
Your setup (please complete the following information)

Unity Version 2019.4.12f1
MRTK Version mrtk_development

@cre8ivepark I haven't been able to repro this :/ I clicked "Build AppX" a couple times in a row, and it generated distinctly versioned builds. I also then manually incremented the 6 to a 7 and it worked:

I then tried installing using these buttons and settings:

and didn't have any fail. Were you going through a different flow?

@cre8ivepark I haven't been able to repro this :/ I clicked "Build AppX" a couple times in a row, and it generated distinctly versioned builds. I also then manually incremented the 6 to a 7 and it worked:

I then tried installing using these buttons and settings:

and didn't have any fail. Were you going through a different flow?

@keveleigh One thing I can think of - In the Player Settings, could you please try renaming the Product Name and package name?

@keveleigh One thing I can think of - In the Player Settings, could you please try renaming the Product Name and package name?

It seems it happens when I have a custom project name/app package name. Even thought the auto increment version number says <IP_ADDRESS>, generated build just replaces the existing <IP_ADDRESS>. (timestamp is updated)

More detailed example:
Before (version number <IP_ADDRESS>)

After a new build

Still shows only <IP_ADDRESS> but timestamp is updated which means this is a new package

Auto-increment version has been increased to <IP_ADDRESS>

@keveleigh It seems this might happen when you open VS project and modify something from it. Then even if you close VS Unity does not increase the version number anymore. (Maybe Unity cannot modify manifest?)

We appreciate your feedback and thank you for reporting this issue.
Microsoft Mixed Reality Toolkit version 2 (MRTK2) is currently in limited support. This means that Microsoft is only fixing high priority security issues. Unfortunately, this issue does not meet the necessary priority and will be closed. If you strongly feel that this issue deserves more attention, please open a new issue and explain why it is important.
Microsoft recommends that all new HoloLens 2 Unity applications use MRTK3 instead of MRTK2.
Please note that MRTK3 was released in August 2023. It features an all new architecture for developing rich mixed reality experiences and has a minimum requirement of Unity 2021.3 LTS. For more information about MRTK3, please visithttps://www.mixedrealitytoolkit.org.
Thank you for your continued support of the Mixed Reality Toolkit!


support trailing space in replace_branch's 'replacement_text' config

Changes

support trailing spaces in PrepareCommitMsg::ReplaceBranch's replacement_text pattern

Issue

When on a branch named JIRA-123-fix-another-issue
And using the below overcommit config
When I run git commit -m 'test'
Then I should have commit message [JIRA-123] test

ERROR: I actually get  [JIRA-123]test

PrepareCommitMsg:
  ReplaceBranch:
    enabled: true
    branch_pattern: '\A([A-Za-z]{1,10}-?[0-9]+).*\z' # JIRA-123-some-branch
    replacement_text: '[\1] ' # [JIRA-123] commit message
    skipped_commit_types: ['merge', 'squash']

@sds CI spec failures are unrelated, but seem to be present on master: https://github.com/sds/overcommit/pull/799#issuecomment-1329493163
(FWIW, spec/overcommit/git_repo_spec.rb fails locally for me as well)


fix(telescope): use dynamic workspace symbols

lsp_workspace_symbols may fail or return nothing when query is empty. Use the new lsp_dynamic_workspace_symbols to dynamically query symbols in the workspace.
Related: https://github.com/nvim-telescope/telescope.nvim/issues/964
Fixes: https://github.com/LazyVim/LazyVim/issues/576

thank you!


Allow forward slashes within PS literal

The global substitution in the powershell command match is eating potentially useful forward slash characters.
Full detail at https://github.com/chef/chef-dk/issues/526

Thanks.

Released as v2.43.9.

Thanks for the merge!


Improve documentation for custom methods

http://vuemc.io/#model-request-custom
It's still not clear how to write a custom method, I'm still trying to figure out which method do I need to call to save API's response to model.

Let's try an example. You have a User that can subscribe to a Channel.
class User extends Model {
    defaults() {
        return {
            id: null,
        }
    }
}

class Channel extends Model {

    defaults() {
        return {
            id: null,
        }
    }

    routes() {
        return {
            save:       '/channel/{id}'
            subscribe:  '/channel/{id}/subscribe'
        }
    }

    subscribe(user) {
        let method = 'POST';
        let route  = this.getRoute('subscribe');
        let url    = this.getURL(route);
        let data   = {user: user.id},

        return this.getRequest({method, url, data}).send();
    }
}

let channel = new Channel({id: 1});

let user = new User({id: 2});

channel.subscribe(user).then(() => {
    // Successfully subscribed
}).catch((error) => {
    // Something went wrong
});

Your controller would then receive the following request:
POST /channel/1/subscribe "{user: 2}"

I agree that the documentation needs some work here. 👍

There's also a missing this.saving = true and this.saving = false required if you use that

Can anyone make demo for this? Using the channel.subscribe() gives unresolved route channel.subscribe.

As per the original comment (and my other issue raised) this could still do with alot better documentation.
An exact copy and paste of @rtheunissen 's code results in an error:
http://domain.test/channel/undefined/subscribe

And since there's so little documentation it's impossible to debug what's going on. Presumably it has something to do with using getRouteParameters() but again there's no documentation on that, just a mild reference to it...
It also doesn't seem to account for what's set in options such as options: {methods: subscribe: "PATCH"}. Or maybe it does, but there's no way of knowing.
It's a shame because this feels like a great package but there's so many black holes to get sucked into because the documentation is so vague. It all just becomes trial and error, which isn't what you want from a package.

Note: You can use getURL(route, parameters = {}) to resolve a route’s URL directly.
let url    = this.getURL(route, this.getRouteParameters())
passing getRouteParameters() the url parameter will be solved :)

@robjbrain you're right that the example I suggested has a mistake in it - we're not passing the route parameters to the URL builder. Custom requests were not a priority for us so naturally came as a "oh yeah you could probably do that if you want". I'm going to update the example, and base the documentation on that.
class User extends Model {
    defaults() {
        return {
            id: null,
        }
    }
}

class Channel extends Model {

    defaults() {
        return {
            id: null,
        }
    }

    routes() {
        return {
            save:       '/channel/{id}'
            subscribe:  '/channel/{id}/subscribe'
        }
    }

    subscribe(user) {
        let method = this.getOption('methods.subscribe');
        let route  = this.getRoute('subscribe');
        let params = this.getRouteParameters();
        let url    = this.getURL(route, params);
        let data   = {user: user.id},

        return this.getRequest({method, url, data}).send();
    }
}

let channel = new Channel({id: 1});

let user = new User({id: 2});

channel.subscribe(user).then(() => {
    // Successfully subscribed
}).catch((error) => {
    // Something went wrong
});

Almost a year later... https://vuemc.io/#model-request-custom


Notes about people and events should be broken into dated sections

Each addition to the notes field of a Site or Event should automatically be timestamped, so that we can know when notes like "Waiting to hear about invoice" were written.  Don't know what this should mean for edits to old notes (maybe the notes field becomes append-only?), but the timestamps should always be visible when the notes are displayed - users shouldn't have to click separately to bring up history.

We could:

make a Note model with GenericForeignKey. Each note would have timestamp, maybe author, and corresponding GenericFK object (Award, Site or Event), or

force a specific markup to be added to the current notes fields upon saving (and, as @gvwilson suggested, probably append-only mode).

Not sure if it's possible to timestamp-annotate old notes.
Any thoughts, @gvwilson, @wking?

This isn't a high priority right now...

On Sun, May 24, 2015 at 02:50:01PM -0700, Greg Wilson wrote:

Each addition to the notes field of a Site or Event should
automatically be timestamped, so that we can know when notes like
"Waiting to hear about invoice" were written.

The notes functionality sounds like it should get rolled into per-site
mail archives (#287).  Then you get timestamps for free by mailing
comments like this to the per-site list.  Adding a UI to send that
mail from Amy (or embed the HyperKitty poster 1) would be fine, but
I don't like the idea of splitting notes between a mailing list and a
timestamped notes field.
 “Obviously, list subscribers can already reply via their email
 client, but HyperKitty allows them to respond through the web
 interface as well, first authenticating them against the Mailman
 server.”

Interesting idea...

Discarding, but see #309.


Update concepts-security.md

Proposing adding a small clarification that when using your own subnet for AKS the NSG is actually attached to the Nodes NIC instead of the AKS Subnet.  This applies for both, Azure CNI and Kubenet. Here's is quick table that compares both:
Network Security Groups

Networking Option
VNET
NSG

Kubenet
Created by Azure
NSG attached to the AgentPool subnet

Kubenet
Existing VNET/Subnet
NSG attached to the Nodes NICs

Azure CNI
Created by Azure
NSG attached to the AgentPool subnet

Azure CNI
Existing VNET/Subnet
NSG attached to the Nodes NICs

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

Thank you for the feedback.
LGTM
#sign-off

@zr-msft: I'm sorry - only the author of this article, @mlearned, can sign off on your changes. But we do have an exception process - if you are on the Microsoft content or product team for this product area, you can ask the PR review team to review and merge it by sending mail to the techdocprs alias.


Remove async assembly

This PR removes the AsyncAssembly functionality as it is more or less obsolete.
The regular Assembly Class is capable of asynchronous uploads already and the AsyncAssembly have been marked deprecated more than a year ago.
I want to reduce complexity by removing the AsyncAssembly logic.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Please upload report for BASE (main@448b1ee). Learn more about missing BASE report.

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #94   +/-   ##
=======================================
  Coverage        ?   75.06%
  Complexity      ?      186
=======================================
  Files           ?       13
  Lines           ?      726
  Branches        ?       62
=======================================
  Hits            ?      545
  Misses          ?      146
  Partials        ?       35

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Selectively keep intermediate files

Description of your pull request and other information
Adding an option to keep .vtt when with --convert-subs to .srt for most video players as a fallback subtitle.
When having --keep-subs, the .vtt will be kept for new players that can play .vtt correctly, because most players can only play .srt, .ass.
WIP:

[X] use keepsubs in YoutubeDL.py (need to separate the keepvideo to work only for video formats?)
[ ] add options --keep-subs in options.py
[ ] add docs
[ ] add test?

Fixes https://github.com/yt-dlp/yt-dlp/issues/6330
Template

Before submitting a pull request make sure you have:

[x] At least skimmed through contributing guidelines including yt-dlp coding conventions
[x] Searched the bugtracker for similar pull requests
[x] Checked the code with flake8 and ran relevant tests

In order to be accepted and merged into yt-dlp each piece of code must be in public domain or released under Unlicense. Check all of the following options that apply:

[x] I am the original author of this code and I am willing to release it under Unlicense
[ ] I am not the original author of this code but it is in public domain or released under Unlicense (provide reliable evidence)

What is the purpose of your pull request?

[x] Fix or improvement to an extractor (Make sure to add/update tests)
[ ] New extractor (Piracy websites will not be accepted)
[ ] Core bug fix/improvement
[ ] New feature (It is strongly recommended to open an issue first)

What's the purpose of dict['__files_to_move']?
If subs are less important than video, should just remove them from files_to_delete instead of operating on dict['__files_to_move']?

This is not an acceptable solution. A new option for just the subs will not be added.
Similar requirements for thumbnails, pre-merged video files, --recode-video, --extract-audio etc have been asked before. The issue with current --keep-video is that it doesn't give more control over what files to keep. A solution would need to handle all of these, but also without breaking backward compat.

What's the purpose of dict['__files_to_move']?

It makes -P temp: work

what about moving it to the youtube extractor args? since mostly only youtube has this issue?

I checked the youtube extractor, but it seems to be unable to control the postprocess progress but only the infodict.
So the solution may be --keep-video default/all/videos/subs/etc. or
--keep-video + a more precedence --keep default/all/videos/subs/etc.?

I remember @Grub4K had some suggestion about using regex for it

If that way, then that may need to add conditions to the run method of every postprocess class (but those don't have access to opts now).
Or
If using regex on the suffix of the file names, then that may need to only change in YoutubeDL.py

If that way, then that may need to add conditions to the run method of every postprocess class (but those don't have access to opts now).

No. The files are deleted by YoutubeDL, not by the PPs

Right, maybe can check what instance the pp is + whether to keep its files at https://github.com/yt-dlp/yt-dlp/blob/c459d45dd4d417fb80a52e1a04e607776a44baa4/yt_dlp/YoutubeDL.py#L3462

I checked the documents and it seems that every switch of Post-Processing Options could have intermediate files. But that the new flag has 20+ possible different inputs seems not to be a good idea.


[admin] (Script Lab) No longer works with IE

Update alerts in these articles based on info in Browsers used by Office Add-ins.

Docs Build status updates of commit 54214e1:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/develop/support-ie-11.md
:white_check_mark:Succeeded
View

docs/testing/ie-11-testing.md
:white_check_mark:Succeeded
View

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


Docker image won't run.

FWIW, I'm no expert in Docker, but I built the image on MacOS. Here's what happened when I tried to run it.
$ docker run -p 8888:8888 -t -i audiogram
Starting local redis
nohup: appending output to 'nohup.out'
curl: (7) Failed to connect to audiogram.newslabs.co port 8081: Connection refused
/home/audiogram/src/lib/transports/redis/remote.js:14
    throw err;
    ^

Error: Redis connection to <IP_ADDRESS>:6379 failed - connect ECONNREFUSED <IP_ADDRESS>:6379
    at Object.exports._errnoException (util.js:1020:11)
    at exports._exceptionWithHostPort (util.js:1043:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)

npm ERR! Linux 4.9.87-linuxkit-aufs
npm ERR! argv "/usr/local/nvm/versions/node/v6.12.0/bin/node" "/usr/local/nvm/versions/node/v6.12.0/bin/npm" "run" "debug"
npm ERR! node v6.12.0
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>debug: `DEBUG=1 bin/server`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>debug script 'DEBUG=1 bin/server'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the audiogram package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     DEBUG=1 bin/server
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs audiogram
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls audiogram
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/audiogram/src/npm-debug.log

i get this same error on mint/ubuntu


FixedFeatureTemplate

What does this PR do?
Fixed the error in the feature template
Type of change

Bug fix (non-breaking change which fixes an issue)

Extremely sorry for my error

@jjf2009 Please fix conflict
.github/ISSUE_TEMPLATE/feature.yml


Zip file not dowloading correctly from REST source

Describe the bug
I am trying to consume a resource that points to a REST API. The retrieved resource is a zip file which I am able to dowload through a get request in the navigator. When I consume the ZIP file through the connector I receive a file without extension and with incorrect encoding so I cannot unzip it. I think that it could be because the connector is returning text instead of the context of the HTTP response.
To Reproduce
Steps to reproduce the behavior:

Go to Data Consumption
Click on IDS Resources
Try to get the resource
The resource downloads without extension and with wrong format when trying to unzip it.

Expected behavior
Get a ZIP file
Desktop (please complete the following information):

OS: Docker in Windows
Browser Edge, Chrome

Hello and thank you for the issue and sorry for the delay, I will forward this internally.

Did an initial analysis, seems to be an issue in file-type vs mime-type.
I have opened an issue in the UI repo with further info:
https://github.com/International-Data-Spaces-Association/DataspaceConnectorUI/issues/214

Thank you very much!

file-type vs. mime-type doesn't fix the issue completely.
We reproduced the behavior with the UI and tried to reproduce it with the swagger ui. In latter case everything works fine. Thus, the issue might be related to the UI.
Will move the issue to the ui repo