Webでシェルを実行するwebshを作った
https://gyazo.com/a97fac5fec737ca86d5f315c605a4395 デザイン新しくした (追記 2020/2/1)
https://gyazo.com/2b3112daf95741ade55eeaaa2f8b9d56 初期UI
目次
自己紹介
webshとは
デモ
作った経緯
開発の話
今後の課題
まとめ
自己紹介
https://lh4.googleusercontent.com/-j_KBtztsqEc/AAAAAAAAAAI/AAAAAAAAAFE/vBJ2jwo9y30/photo.jpg
最近は家でも仕事でもCIで自動化フロー組んだりしている デモ
code:正弦波泳法.sh
muscular shout 正弦波泳法 -p front-relax|tee >(cat) >(cat) >(cat) >(cat)|tee >(cat) >(cat) >(cat) >(cat)|awk '{PI=4*atan2(1,1);for(i=0;i<(sin(NR/25*PI*2)+1)*5;i++){printf " "}{print $0}}'|textimg -asl25 -d5
ちょっとまて
はい
何だこのやる気のない画面は
フロントエンド何もわからないので勘弁して
作った経緯
これが一番大きい
開発の話
長くならないように努めます
長くならないとは言っていない
システム構成
こんなかんじ
https://gyazo.com/f96ccb379c65098864688e060de47bb9
貧乏なのでサーバ1台で運用してる
高い
開発言語
構文はPythonライクで、静的型付け言語であり、コンパイルすることでC、JS、ObjectC、C++のコードを出力することができる言語
ネイティブコードを吐ける
超高速
2019年9月に 1.0.0 がリリースされた最近の言語 (12年目)
このあたりの記事で雰囲気が伝わる
今年のアドベントカレンダー
スイスイ書けて楽しいよ
とりあえずunko.towerを実装してみたので動かしてみて
code:nim
import strutils
proc unkoTower(n: int): string =
# 先端の追加
let topPad = " ".repeat(n+2)
rows.add(topPad & "人")
# うんこの段を追加
for i in 1..n:
let pad = " ".repeat(n - i + 1)
let row = "(" & " ".repeat(i * 2 + 1) & ")"
rows.add(pad & row)
# 結合して返却
return rows.join("\n")
echo unkoTower(3)
僕がいれた
rect 矩形を切り取ったり貼り付けたりするコマンド $ unko.shout | rect crop -x 10 -y 5 -W 6 -H 10
https://gyazo.com/acedc91b50ff5e2eaae44f5afa0c3a51
edens 独自の辞書を使用して文字列をエンコーディングする $ edens kakikokera <<< かきとこけら
杮杮杮柿柿柿杮杮杮柿柿柿柿柿柿杮杮柿柿柿杮柿杮杮杮杮杮柿柿柿杮杮杮柿柿柿柿柿柿杮杮柿柿柿杮杮柿杮杮杮杮柿柿柿杮杮杮柿柿柿柿柿柿杮杮柿杮柿杮柿柿柿杮杮杮柿柿柿杮杮杮柿柿柿柿柿柿杮杮柿柿杮柿柿杮杮杮杮杮柿柿柿杮杮杮柿柿柿柿柿柿杮杮柿柿杮柿柿柿杮杮杮杮柿柿柿杮杮杮柿柿柿柿柿杮柿杮柿柿柿杮柿柿杮
$ edens unko <<< かきとこけら
ウンウこうんこんウウンウこうんこんコウンウこうんこコうウンウこうんここウウンウこうんここんウンウこうここんん
$ maze -H:21
code:text
#######################################
# # # # # # # # #
### ####### ### # # ### # ##### #######
# # # # # #
# # ################### # ##### #######
# # # # # #
# # ### ##### # ####### # # ### #######
# # # # # # # # # # # # # # #
# # # ### # # # # # ### # ##### #######
# # # # # # # # # # #
### # ##### ##### # ### # ##### #######
# # #
### ################# ######### # # ###
# # # # # # # # # # # #
##### ########### ##### # # # # ### ###
# #
# # # # # # # # # # # # # # # # # # ###
# # # # # # # # # # # # # # # # # # ###
#######################################
今後の課題
UI周り
フロントエンド何も分からない
パフォーマンス
2コアじゃ詰まりすぎる
札束で殴れ
バグ
シェルのパイプの最初のコマンドでファイルを開くと固まる
なんで起きるのかわからん
セキュリティ対策
インフラは非公開にしてるので僕がやるしかない
まとめ
webshの紹介
改善点があればissuesまたはPRください
webshの実装まわりの話
はじめてのおつかいならぬ、はじめてのWebアプリ
Nimの紹介
Nimは良い言語
流行ってほしい
終わり
https://gyazo.com/377bfd53d9cedfea3b7f13cbb4946e56