for m in *.flac; do ffmpeg -i "$m" -acodec alac "${m%.flac}.m4a"; done
In case when the .flac
contains the picture additionally to the audio stream
for m in *.flac; do ffmpeg -i "$m" -c:a alac -c:v copy "${m%.flac}.m4a"; done
// Future versions of Hyper may add additional config options, | |
// which will not automatically be merged into this file. | |
// See https://hyper.is#cfg for all currently supported options. | |
module.exports = { | |
config: { | |
// choose either `'stable'` for receiving highly polished, | |
// or `'canary'` for less polished but more frequent updates | |
updateChannel: 'stable', |
for m in *.flac; do ffmpeg -i "$m" -acodec alac "${m%.flac}.m4a"; done
In case when the .flac
contains the picture additionally to the audio stream
for m in *.flac; do ffmpeg -i "$m" -c:a alac -c:v copy "${m%.flac}.m4a"; done
brew install dnsmasq
- install dnsmasq
, a lightweight DNS server/usr/local/etc/dnsmasq.conf
no-resolv
for prevent looking in /etc/resolv.conf
server=8.8.8.8
and server=8.8.4.4
for addining Google's public DNS as a fallbackaddress=/my-custom-domain.com/127.0.0.1
so all requests to the my-custom-domain.com
and its subdomains will be forwarded to the 127.0.0.1
sudo brew services start dnsmasq
- run dnsmasq
as a service, so that it will work after restarting OSNetwork Preferences
Wi-Fi
The main point is to save the SSL/TLS keys those used by the web browser (SSLKEYLOGFILE=/tmp/tmp-google/.ssl-key.log
).
In the example below we run brand new instance of Google Chrome (--user-data-dir=/tmp/tmp-google
do the trick):
SSLKEYLOGFILE=/tmp/tmp-google/.ssl-key.log /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp/tmp-google
Then run the Wireshark and open the Preferences -> Protocols -> SSL, where we put the path to the SSL keys log file into the (Pre)-Master-Secret log filename
field.
Now all SSL/TLS traffic from this browser instance will be decrypted.
function useDebounce(callback, delay) {
// Using the useRef allows us to avoid any re-renders when the callback changes
const callbackRef = React.useRef(callback)
// The useLayoutEffect will be run before any other code, so that
// we will have always latest callback function called in the debounce
// payload function.
Here the Speak
trait has the blanket implementation for the references of any type that implement the Speak
trait (Human
type in the current example). That allows to pass Human
, &Human
, and &mut Human
to the introduce
method that expects a trait that has Speak
trait implemented. The blanket implementation is necessary as Rust doesn't dereference types in traits.
trait Speak {
fn speak(&self);
}
// Blanket implementation for &T