go를 잘못해서 og를 입력했을 때, 거꾸로 Gopher군이 지나가는 명령
개요
go ... 라고 치고 싶어서 og ... 그렇지?
그런 때에 좋은 느낌에 typo를 주의해 주는 og 커맨드를 만들었습니다! !
👇👇👇
기주 b. 코 m / 라멘 주니치 / 오 g
👆👆👆
sl 명령 같은 사람입니다 웃음
거동(2019/11/16에 gif 수정)
무려! 거꾸로 Gopher 군이 지나갑니다! 그냥 지나갈 거야!
og run main.go
같은 경우에도 용서없이 Gopher군은 지나갑니다!Gopher 너 귀여운!
설치 (2019/11/15에 추가)
Go 환경이 있으면
go get
에서 설치할 수 있습니다.실행하려면
$GOPATH/bin
에 PATH가 다녔어야 합니다. (2019/11/16에 추가)go get github.com/ramenjuniti/og
만드는 방법
이미지 준비
원래 이미지는 여기에서 받았습니다 htps : /// g g. 오 rg/도 c/고 p에 r/f 롱 t 빵. pg
AA 변환(아스키 아트 생성)으로 AA 생성
D;;:;;:;;:;;:;:;:;;:;:;:;:;;:;;:;;:;;:;z
$;:;:;::;::;:;;:;;:;;:;;:;;::;;::;;:;;;I
.I;;:;;:;;:;;::;;:;:;:;;:;:;;:;:;:;::;;:I
,<;;::;:;;::;;:;;;;;;;;:;::;;:;;:;;;:;;;I
,(;;;:;::;:;;::;;j=1J71<;;;:;:;;::;:;:;:I
J;;:;;;:;;::;;;;:r ] .>;;;:;:;:;;:;:;;;r
z;;::;:;;:;;:;;j=<?75?7~?I;;:;;:;;;:;:;<]
(<;;;;;;:;;;;;;?+~(J-J-_(3;;;;;;::;;:;;+\
,(;:;:;j/7!''??1+?MMMMM1+?7771+<;;;:;;:j
.P;;;;J!.. 4;<<iJ .4<;;:;;2
.3;J<;;j\(M#Q D;<2.MM5. 1:;;;j73,
$;jMN<;?|,WH3 $;:t.MM# ,(;;jP;;?|
4<;T9TJ;?. .J;;;?& .t;;jM@:;+%
(1++++Y+;?C+...J7<;;;:;;?i.. ..J>;jv<;;;j=
.71+<;;;;;;;:;;;;;;;;;;<+J= ?77!
'_?771+++++++++?77!
코드 작성
물론 Go에서!
main.go
package main
import (
"fmt"
"os"
"strings"
"syscall"
"time"
"github.com/gosuri/uilive"
"golang.org/x/crypto/ssh/terminal"
)
func main() {
og := []string{
" D;;:;;:;;:;;:;:;:;;:;:;:;:;;:;;:;;:;;:;z ",
" $;:;:;::;::;:;;:;;:;;:;;:;;::;;::;;:;;;I ",
" .I;;:;;:;;:;;::;;:;:;:;;:;:;;:;:;:;::;;:I ",
" ,<;;::;:;;::;;:;;;;;;;;:;::;;:;;:;;;:;;;I ",
" ,(;;;:;::;:;;::;;j=1J71<;;;:;:;;::;:;:;:I ",
" J;;:;;;:;;::;;;;:r ] .>;;;:;:;:;;:;:;;;r ",
" z;;::;:;;:;;:;;j=<?75?7~?I;;:;;:;;;:;:;<] ",
" (<;;;;;;:;;;;;;?+~(J-J-_(3;;;;;;::;;:;;+| ",
" ,(;:;:;j/7!''??1+?MMMMM1+?7771+<;;;:;;:j ",
" .P;;;;J!.. 4;<<iJ .4<;;:;;2 ",
".3;J<;;j|(M#Q D;<2.MM5. 1:;;;j73, ",
"$;jMN<;?|,WH3 $;:t.MM# ,(;;jP;;?|",
"4<;T9TJ;?. .J;;;?& .t;;jM@:;+%",
" (1++++Y+;?C+...J7<;;;:;;?i.. ..J>;jv<;;;j= ",
" .71+<;;;;;;;:;;;;;;;;;;<+J= ?77! ",
" '_?771+++++++++?77! ",
}
ogw := len(og[0])
tw, _, err := terminal.GetSize(syscall.Stdin)
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
for i := range og {
og[i] = strings.Repeat(" ", tw) + og[i]
}
writer := uilive.New()
writer.Start()
for i := 0; i <= tw+ogw; i++ {
var out string
for _, v := range og {
if i < ogw {
out += v[i:tw+i] + "\n"
} else if i < len(v) {
out += v[i:] + "\n"
} else {
out += "\n"
}
}
fmt.Fprint(writer, out)
time.Sleep(10 * time.Millisecond)
}
writer.Stop()
}
코드는 이것뿐! 간단!
terminal의 크기를 얻기 위해 미안해. rg / x / cryp 및 / sh / 테르 모두 l
terminal 출력을 실시간으로 업데이트하기 위해 기주 b. 코 m / 잔물결 / 우이 ゔ ぇ
요약
연구실에있을 때 문득 생각하고 심야 텐션으로 만들었습니다 만, 귀엽게 할 수 있었으므로 만족합니다 웃음
앞으로 시간이 있으면 움직임을 추가하고 싶습니다.
참고
Reference
이 문제에 관하여(go를 잘못해서 og를 입력했을 때, 거꾸로 Gopher군이 지나가는 명령), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ramenjuniti/items/fd502b4870f8e4ea87bb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)