Perl書くくせにpack/unpackの動作が全然わからなかったため休日に少し練習。 以下、チラシの裏程度のメモ書き。校正しておらず、自分が思いついた思考の順序で一発書きしたもの。 たぶん間違えた内容を含んでます。
packは、引数に配列、あるいは文字列を受け取って、それを規則に従ってバイナリに変換する。
入力: 配列 or 文字列 出力: バイナリ
#!/bin/bash | |
# From: https://twitter.com/grethlen/status/906154326975905793 | |
sudo ping -i 0 -c 1400 pong4.kooshin.net \ | |
| grep -oP "icmp_seq=\K\d+" \ | |
| cat - <(seq 1 1400) \ | |
| sort -n \ | |
| uniq -c \ | |
| awk '{printf $1}' \ | |
| fold -w70 \ |
import java.util.stream.IntStream; | |
class Main { | |
public static void main(String args[]) { | |
IntStream.rangeClosed(2, 100) | |
.filter(i -> IntStream.rangeClosed(2, (int)Math.sqrt(i)) | |
.allMatch(j -> i%j != 0)) | |
.forEach(n -> { | |
System.out.println(n); | |
}); |
base64sh() { | |
local input=${1:-$(cat)} | |
paste <(seq 0 63 | sed 's/^/obase=2;ibase=10;/' | bc | sed 's/^/00000/' | grep -oE '.{6}$') \ | |
<(echo {A..Z} {a..z} {0..9} + / | xargs -n 1) | \ | |
awk '{print "s|"$1"|"$2"|"}' | \ | |
sed -f - <(echo -n $input| perl -ne 'print unpack("B*", $_)."0000"' | \ | |
fold -w 6 | grep -oE '.{6}$') | tr -d '\n' | fold -w 4 | sed 's/$/===/' | grep -oE '^.{4}' | tr -d '\n' | awk 1 | |
} | |
# Usage: base64sh |
" Clipboard integration by Operating System Controls from Vim | |
" Usage: | |
" Yank something and run :OscCopy | |
" or | |
" Copy range in visual mode and run :'<,'>OscCopyRange | |
" From: https://stackoverflow.com/questions/1533565/how-to-get-visually-selected-text-in-vimscript | |
function! GetVisualSelection() | |
let [lnum1, col1] = getpos("'<")[1:2] |
import UIKit | |
import PlaygroundSupport | |
class MyViewController : UIViewController { | |
override func viewDidLoad() { | |
view.backgroundColor = .white | |
let s1 = generateLabel() | |
let s2 = generateLabel() | |
let s3 = generateLabel() |
import UIKit | |
import PlaygroundSupport | |
class MyViewController : UIViewController { | |
var label:UILabel! | |
var label2:UILabel! | |
let gap:CGFloat = 50 | |
let rep:Float = Float.infinity | |
let shape:CAShapeLayer = { | |
return CAShapeLayer() |
; ひねくれた方法な気がする。 | |
(map | |
3#(match [%1 %2 %3] something { | |
[[_ ,0 ,0] FizzBuzz] | |
[[_ ,0 _] Fizz] | |
[[_ _ ,0] Buzz] | |
[[$i _ _] i]}) | |
(map 1#[%1 (modulo %1 3) (modulo %1 5)] (take 100 nats))) |
# Input is like {"command":"bHMgLWFsIHwgZ3JlcCBob2dlaG9nZQo="} | |
function handler () { | |
EVENT_DATA="$1" | |
local _cmd | |
local _tmpdir | |
_cmd="$(tr -d '[:space:]' <<<"$EVENT_DATA" | sed -E "s/\{[\"']command[\"']:[\"']([0-9A-Za-z+/=]*)[\"']\}/\1/" | base64 --decode)" | |
_tmpdir="$(mktemp)" | |
eval "$_cmd" 2> "$_tmpdir-stderr" > "$_tmpdir-stdout" || true | |
echo "{\"stdout\": \"$(cat "$_tmpdir-stdout" | base64 | tr -d '\n')\", \"stderr\": \"$(cat "$_tmpdir-stderr" | base64 | tr -d '\n')\"}" || true | |
rm -rf "$_tmpdir-stderr" "$_tmpdir-stdout" "$_tmpdir" |
#!/bin/bash | |
ceiling () { | |
local divide="$1";shift | |
local by="$1" | |
printf "%s\\n" $(( ( divide + by - 1 ) / by )) | |
} | |
equalized_partition_nums () { | |
local number="$1";shift | |
local count="$1" |