- http://stackoverflow.com/questions/804115 (
rebase
vsmerge
). - https://www.atlassian.com/git/tutorials/merging-vs-rebasing (
rebase
vsmerge
) - https://www.atlassian.com/git/tutorials/undoing-changes/ (
reset
vscheckout
vsrevert
) - http://stackoverflow.com/questions/2221658 (HEAD^ vs HEAD~) (See
git rev-parse
) - http://stackoverflow.com/questions/292357 (
pull
vsfetch
) - http://stackoverflow.com/questions/39651 (
stash
vsbranch
) - http://stackoverflow.com/questions/8358035 (
reset
vscheckout
vsrevert
)
Discover gists
import os | |
def parse_man_file(man_filepath): | |
with open(man_filepath, "r") as man_file: | |
lines = man_file.read().split("\n") | |
formatted_lines = [] | |
for line in lines: | |
# remove Apple developer comments included on the same line and strip off trailing white space |
# alias to edit commit messages without using rebase interactive | |
# example: git reword commithash message | |
reword = "!f() {\n GIT_SEQUENCE_EDITOR=\"sed -i 1s/^pick/reword/\" GIT_EDITOR=\"printf \\\"%s\\n\\\" \\\"$2\\\" >\" git rebase -i \"$1^\";\n git push -f;\n}; f" | |
# edit all commit messages | |
git rebase -i --root | |
# clone all your repos with gh cli tool | |
gh repo list --json name -q '.[].name' | xargs -n1 gh repo clone |
package main | |
import "fmt" | |
func main() { | |
fmt.Println("hello world") | |
} |
When following a log file with the tail
command you are typically looking for a specific pattern. If the log output is verbous it can be difficult to catch the lines your interested in. For example a PHP log file might contain many PHP Notice:
entries but your only interested in lines containing PHP Fatal error:
. To grep the output of tail
simply tell the grep
command to red from stdin and pipe the output from tail
to grep
as follows.
tail -f {path/to/log/file} | grep 'PHP Fatal error:' -
PulseAudio actually has great networking capabilities. Especially when combined with Avahi/Zeroconf it is especially easy to set up, though technically it should also be possible without.
- Open /etc/pulseaudio/default.pa
- At the end of the file, add
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.254.0/24 auth-anonymous=1
to activate networked audio from 192.168.254.0-255 without needing authentication. - Kill pulseaudio, it should be auto-restarted, or restart your login session to activate the changes. You should now be able to set
PULSE_SERVER=192.168.254.XXX
and have the remote audio working! If not check the firewall settings, PulseAudio seems to open a random port by default.
- On both the server and client, install
pulseaudio-module-zeroconf
andavahi
, then after installing make sure Avahi always runs by runningsystemctl enable --now avahi-daemon
UEsDBBQAAAAIABNQjFGCf/GfLgAAACwAAAAHAAAAUHJvLmtleTMqdncpCXQOKDAp9woMzEo1MTVOrHAzTjTLME7VNs1LK8owTjQpcU8tcuLlAgBQSwECFAAUAAAACAATUIxRgn/xny4AAAAsAAAABwAAAAAAAAAAAAAAAAAAAAAAUHJvLmtleVBLBQYAAAAAAQABADUAAABTAAAAAAA= |
scph5500.bin 26-Aug-2018 20:47 512.0K
scph5501.bin 26-Aug-2018 20:47 512.0K
scph5502.bin 26-Aug-2018 20:47 512.0K
For communication between wifi and ethernet devices, the DDS layer in ROS2 relies on the multicast ability of a given network.
This is often disabled on enterprise networks (at university or work etc) for (I think) security reasons .
To get around this, you have to configure CycloneDDS to comunicate in a unicast manner, and you must specify the local IPs of all the participants you want to communicate.
_I am using CycloneDDS instead of the default (for ROS2 humble at least) FastDDS, because I ran into lots of issues trying to get topic
This guide is intended for installing RetroNAS on an already configured Unraid server. If you're not familiar with Unraid or RetroNAS, head over to the RetroNAS GitHub page to learn about RetroNAS and consider setting it up on a Raspberry Pi.
Within Unraid, enable NFS by going to Settings
and NFS
.
- Enable NFS:
Yes
- Click
Apply