이 글은 책 Learn You a Haskell for Great Good을 읽고 정리한 것입니다.
함수 foldl
의 모나드 버전은 foldM
이다. foldl
의 타입은 아래와 같다.
foldl :: (a -> b -> a) -> a -> [b] -> a
이 글은 책 Learn You a Haskell for Great Good을 읽고 정리한 것입니다.
함수 foldl
의 모나드 버전은 foldM
이다. foldl
의 타입은 아래와 같다.
foldl :: (a -> b -> a) -> a -> [b] -> a
If you don't know what Wireguard is, well, you should. It's fast, easy to setup and highly configurable. We will configure Wireguard for multiple users with various restrictions using iptables.
This should fit most setups (not mine though 😉)
#this | |
ffmpeg -loglevel debug -f hls -referer 'https://10play.com.au/live' -user_agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/82.0.4050.0 Safari/537.36' -f hls -i "https://manifest.prod.boltdns.net/manifest/v1/hls/v4/aes128/2199827728001/6bd7fe89-1f2f-42d0-b7a5-c676791a0d83/10s/master.m3u8?fastly_token=NWUzZDliOGZfNTJhZjJhN2IxMzQ5OTdjNGVkYmEzODkwNjYwZTYyMWY2ZmY1YjNmNGJkNWM3NjdiNDFiZmViNjczNzMwMmJlYQ%3D%3D" -c copy project5.mp4 | |
# or this | |
ffmpeg -loglevel debug -f hls -referer 'https://10play.com.au/live' -user_agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/82.0.4050.0 Safari/537.36' -f hls -i "https://manifest.prod.boltdns.net/manifest/v1/hls/v4/aes128/2199827728001/6bd7fe89-1f2f-42d0-b7a5-c676791a0d83/10s/master.m3u8?fastly_token=NWUzZDliOGZfNTJhZjJhN2IxMzQ5OTdjNGVkYmEzODkwNjYwZTYyMWY2ZmY1YjNmNGJkNWM3NjdiNDFiZmViNjczNzMwMmJlYQ%3D%3D" -c copy -bsf:a aac_adtstoasc project3.mp4 |
<?xml version="1.0" encoding="UTF-8"?> | |
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
<plist version="1.0"> | |
<dict> | |
<key>method</key> | |
<string>ad-hoc</string> | |
<key>uploadBitcode</key> | |
<false/> | |
<key>uploadSymbols</key> | |
<true/> |
import 'package:flutter/material.dart'; | |
class CustomPage extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return Scaffold( | |
body: Container(), | |
floatingActionButton: FloatingActionButton( | |
onPressed: () { | |
showModalBottomSheet( |
const functions = require('firebase-functions'); | |
const path = require('path'); | |
const glob = require('glob'); | |
const ENDPOINT_FOLDER = './endpoints'; | |
const DO_NOT_DEPLOY = /^(admin|a|debug|d)$/; | |
const IGNORE = /^(ignore|i)$/; | |
const BREAK_ON_ERROR = true; | |
const is = { |
diff --git a/gstreamer-send/main.go b/gstreamer-send/main.go | |
index 3a2ab8c..df5df2a 100644 | |
--- a/gstreamer-send/main.go | |
+++ b/gstreamer-send/main.go | |
@@ -27,8 +27,16 @@ func main() { | |
}, | |
} | |
+ m := webrtc.MediaEngine{} | |
+ s := webrtc.SettingEngine{} |
import 'package:flutter/material.dart'; | |
import 'package:rect_getter/rect_getter.dart'; | |
void main() => runApp(MyApp()); | |
class MyApp extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return MaterialApp( | |
title: 'Fab overlay transition', |
function reduce(f, acc, iter) { | |
if (arguments.length == 2) { | |
iter = acc[Symbol.iterator](); | |
acc = iter.next().value; | |
} | |
for (const a of iter) acc = f(acc, a); | |
return acc; | |
} | |
reduce((a, b) => a + b, function*() { |