本文譯自 Julio Merino 2018 年七月撰寫的 Rust vs. Go 一文。Julio Merino 是 G 社僱員,在 G 社工作超過 8 年,無論工作內外,都接觸開發不少 Go 語言,並撰寫 [Rust 點評][rust-review]系列文,來聽聽他對 Rust 與 Go 的想法吧。
Thanks Julio Merino for this awesome article!
#!/usr/bin/env bash | |
# Time-stamp: <2017-04-27 09:57:21 kmodi> | |
# Time-stamp: <2018-03-20 12:58:02 bobpaul> | |
# derived from kmodi's gist: https://gist.github.com/kaushalmodi/74e9875d5ab0a2bc1010447f1bee5d0a | |
# | |
# Example of using getopt to parse command line options | |
# http://stackoverflow.com/a/29754866/1219634 Limitation: All the options | |
# starting with - have to be listed in --options/--longoptions, else getopt will | |
# error out. | |
# The downside is that if you intend to use this as a wrapper to some other program, |
Get-ChildItem . -Recurse -Filter "*.inf" | ForEach-Object { PNPUtil.exe /add-driver $_.FullName /install } |
Given a Parent
class with value
property, Child
can inherit and overload the property while accessing Parent
property getter and setter.
Although we could just reimplement the Child.value
property logic completely without using Parent.value
whatsover, this would violate the DRY principle and, more important, it wouldn't allow for proper multiple inheritance (as show in the example property_inheritance.py
bellow).
Two options:
Child
redefinesvalue
property completely, both getter and setter.
<# | |
.SYNOPSIS | |
Script to Initialize my custom powershell setup. | |
.DESCRIPTION | |
Script uses scoop | |
.NOTES | |
**NOTE** Will configure the Execution Policy for the "CurrentUser" to Unrestricted. | |
Author: Mike Pruett | |
Date: October 18th, 2018 |
""" | |
A demonstration on how raising KeyboardInterrupt in the context of tasks | |
spawned via asyncio's loop.run_in_executor does not cancel the threads | |
using any of the cancellation methods in asyncio Futures. | |
The only "proper" way to cancel is to: | |
1. unregister the `atexit` registered `_python_exit` function | |
2. call `shutdown(wait=False)` | |
The reason is that the `thread` module registers `_python_exit` forcing a |
Install WireGuard via whatever package manager you use. For me, I use apt. | |
$ sudo add-apt-repository ppa:wireguard/wireguard | |
$ sudo apt-get update | |
$ sudo apt-get install wireguard | |
MacOS | |
$ brew install wireguard-tools | |
Generate key your key pairs. The key pairs are just that, key pairs. They can be |
Using MSYS2 with Visual Studio Code is extremely easy now thanks to the Shell Launcher extension by Tyriar.
First, install the extension and reload Visual Studio Code.
Then, open the settings.json
to edit your settings.
Add the field shellLauncher.shells.windows
. I recommend using autocompletion here so that all the default shells are added.
You should having something like this now:
- during installation, set config to enabled
- edit policy, add your user on Local Comp Policy > Computer Configuration > Windows Settings > Security Settings > Local Policies > User Rights Assignment > Create symbolic links
- enable Windows Developer mode to bypass UAC requirement
- Search > For developer settings > Dev mode