By: @BTroncone
Also check out my lesson @ngrx/store in 10 minutes on egghead.io!
Update: Non-middleware examples have been updated to ngrx/store v2. More coming soon!
Table of Contents
| #EXTM3U | |
| #EXTINF:-1,BBC - Radio 1 | |
| http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio1_mf_p | |
| #EXTINF:-1,BBC - Radio 2 | |
| http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio2_mf_p | |
| #EXTINF:-1,BBC - Radio 3 | |
| http://open.live.bbc.co.uk/mediaselector/5/select/version/2.0/mediaset/http-icy-aac-lc-a/format/pls/vpid/bbc_radio_three.pls | |
| #EXTINF:-1,BBC - Radio 4 | |
| http://bbcmedia.ic.llnwd.net/stream/bbcmedia_radio4fm_mf_p | |
| #EXTINF:-1,BBC - Radio 5 live |
By: @BTroncone
Also check out my lesson @ngrx/store in 10 minutes on egghead.io!
Update: Non-middleware examples have been updated to ngrx/store v2. More coming soon!
Table of Contents
| import javax.crypto.*; | |
| import javax.crypto.spec.IvParameterSpec; | |
| import javax.crypto.spec.SecretKeySpec; | |
| import java.io.ByteArrayInputStream; | |
| import java.io.IOException; | |
| import java.io.InputStream; | |
| import java.nio.file.Files; | |
| import java.nio.file.Paths; | |
| import java.security.*; |
| const useFetch = (service) => { | |
| const [loading, setLoading] = useState(true); | |
| const [error, setError] = useState(); | |
| const [data, setData] = useState(); | |
| const fetchAPI = useCallback(async () => { | |
| try { | |
| const res = await fetch(service); | |
| const json = await res.json(); | |
| setData(json); |
| 'use strict' | |
| const sodium = require('libsodium-wrappers'); | |
| sodium.ready.then(function() | |
| { | |
| console.log('sodium ready'); | |
| //xchacha20ploy1305 ietf | |
| //A key and a nonce are generated by the encrypting party. The decrypting | |
| //party should use them for decryption |
| /** | |
| * Install and enable the rabbitmq_delayed_message_exchange plugin as described by Alvaro Videla in this blogpost: | |
| * https://www.rabbitmq.com/blog/2015/04/16/scheduling-messages-with-rabbitmq/ | |
| */ | |
| const amqp = require('amqplib'); | |
| const exchange = 'yourExchangeName'; | |
| const queue = 'yourQueueName'; | |
| const queueBinding = 'yourQueueBindingName'; | |
| // Message consumer |
running:
bash create-vod-hls.sh beach.mkv
will produce:
beach/
|- playlist.m3u8
|- 360p.m3u8
| #!/usr/bin/env pwsh | |
| # https://stackoverflow.com/questions/8761888/capturing-standard-out-and-error-with-start-process | |
| function Start-Command ([String]$Path, [String]$Arguments) { | |
| $pinfo = New-Object System.Diagnostics.ProcessStartInfo | |
| $pinfo.FileName = $Path | |
| $pinfo.RedirectStandardError = $true | |
| $pinfo.RedirectStandardOutput = $true | |
| $pinfo.UseShellExecute = $false | |
| $pinfo.Arguments = $Arguments |
# 为虚拟网络接口 utun0 配置 IP 地址 10.0.0.33 和子网掩码 255.255.255.0 网关地址 10.0.0.1
sudo ifconfig utun0 10.0.0.33 10.0.0.1 netmask 255.255.255.0
# 配置目标地址是网段 192.168.1.0/24 的流量走 10.0.0.1 网关
sudo route add 192.168.1.0/24 10.0.0.1
# 将 6.11.20.10 这个单一地址(因为掩码是 32)路由到 192.168.4.1 这个网关
sudo route add 6.11.20.10/32 192.168.4.1