Asciinema: ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋””์Šคํฌ์— ์“ฐ๊ธฐ

์— ๋งŒ๋“  2015๋…„ 08์›” 19์ผ  ยท  23์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: asciinema/asciinema

์žฌํ˜„ ๋‹จ๊ณ„:

  • ํŒŒ์ผ์— ๋…น์Œ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • asciinema ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: ํ„ฐ๋ฏธ๋„ ์ฐฝ ๋‹ซ๊ธฐ).
  • ๋…น์Œ์„ ์ฐพ์œผ๋ ค๊ณ  ์‹œ๋„ํ•˜์‹ญ์‹œ์˜ค. ์•„๋ฌด ๊ฒƒ๋„ ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ๋ชจ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

asciinema๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋…น์Œ ํŒŒ์ผ์„ ํ”Œ๋Ÿฌ์‹œํ•˜๋ฉด ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฏธ์™„์„ฑ JSON ํŒŒ์ผ์€ ์ˆ˜์ •ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค( asciinema play ). ์„ธ์…˜ ๋…น์Œ์˜ ์†์‹ค์€ ๋•Œ๋•Œ๋กœ ๋‹ค์†Œ ์‹ค๋ง์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(๋‚ด dayjob ํ”„๋กœ์ ํŠธ์—๋Š” ์žฅ๊ธฐ ์‹คํ–‰ ์‹œ์Šคํ…œ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” asciinema๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์›น UI๋ฅผ ํ†ตํ•ด ํฅ๋ฏธ๋กœ์šด ์ง€์ ์œผ๋กœ ์ด๋™ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ๋นจ๋ฆฌ ๊ฐ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.)

feature request improvement

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@sickill - ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  23 ๋Œ“๊ธ€

์ข‹์€ ์บ์น˜ @vvv. ๋น„๊ต์  ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ณด์•˜๋‹ค. ํ˜„์žฌ ์ƒ๊ฐ:

asciinema๋Š” JSON ์ŠคํŠธ๋ฆผ์„ ์ฆ‰์‹œ ์ƒ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ „์ฒด JSON ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ์ „์ฒด stdout์ด ์บก์ฒ˜๋˜๋ฉด ํŒŒ์ผ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฃผ๋กœ Go์˜ JSON ๋งˆ์ƒฌ๋Ÿฌ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ์€ tmp ํŒŒ์ผ๋กœ ํ”Œ๋Ÿฌ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค( foo.json.tmp ๊ธฐ๋กํ•˜๋Š” ๊ฒฝ์šฐ foo.json ). ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{ "version": 2, "width": 80, "height": 24, "env": { "TERM": "xterm-256color" } ... }
[0.1, "bash-4.3$ "]
[0.3, "l"]
[0.1, "s"]
...
...

๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์ตœ์ƒ์œ„ ๊ฐœ์ฒด๊ฐ€ ์žˆ๋Š” JSON ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” JSON ๋งต์ด๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ชจ๋‘ ์ตœ์ข… ํŒŒ์ผ์˜ stdout ํ‚ค ์•„๋ž˜์— ์žˆ์–ด์•ผ ํ•˜๋Š” stdout ์ธ์‡„์ž…๋‹ˆ๋‹ค.

๋ณต๊ตฌ์— ๊ด€ํ•ด์„œ๋Š” ์Šค์Šค๋กœ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(vim์—์„œ ์ค„์„ ์˜ฎ๊ธฐ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค).
์ด๋ฅผ ์ž๋™ํ™”ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ช…๋ น asciinema recover foo.json.tmp foo.json ์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค( asciinema play ์˜ ์ผ๋ถ€๋กœ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Œ).

ํ•œ ๊ฐ€์ง€ ๊ฐ€๋Šฅ์„ฑ์€ tmp ํŒŒ์ผ๋กœ ํ”Œ๋Ÿฌ์‹œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค( foo.json.tmp ๊ธฐ๋กํ•˜๋Š” ๊ฒฝ์šฐ foo.json ).

์ข‹์€ ์†Œ๋ฆฌ! ์ด ๊ธฐ๋Šฅ์€ Emacs์˜ ์ž๋™ ์ €์žฅ ํŒŒ์ผ ( #foo.json# ) ๋ฐ Vim ๋ณต๊ตฌ ํŒŒ์ผ ( .foo.json.swp )๊ณผ ์œ ์‚ฌ ํ•ฉ๋‹ˆ๋‹ค .

๋ณต๊ตฌ์— ๊ด€ํ•ด์„œ๋Š” ์Šค์Šค๋กœ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(vim์—์„œ ์ค„์„ ์˜ฎ๊ธฐ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค).

์†”์งํžˆ ๋งํ•˜๋ฉด ์ž๋™ ์ €์žฅ ํŒŒ์ผ์„ ์ˆ˜๋™์œผ๋กœ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค "๋ณต๊ตฌ" ๋ช…๋ น์ด๋‚˜ ๊ฐ€๋ฒผ์šด -r | --recover ์˜ต์…˜์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋ช…๋ฐฑํ•˜๊ฒŒ ๋งํ•˜๋ฉด #82๋„ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@xloem #82๋Š” asciinema.org์— ํ•œ๋ฒˆ์— rec+uploadํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. asciinema rec demo.json ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์ดํŠธ์— ์ž๋™์œผ๋กœ ์—…๋กœ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ ํŒŒ์ผ์— ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ๊ฒฝ์šฐ ๋””์Šคํฌ์— ์ฆ๋ถ„ ์“ฐ๊ธฐ๋„ ๋˜‘๊ฐ™์ด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” #196์—์„œ asciicast v2 ํ˜•์‹์˜ ์ดˆ์•ˆ ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ, ์ด๊ฒƒ์€ ๋””์Šคํฌ(๊ทธ๋ฆฌ๊ณ  ํŒŒ์ดํ”„, ๋„คํŠธ์›Œํฌ, ๋‹น์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ)์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ์“ฐ๊ธฐ๋ฅผ ํ›Œ๋ฅญํ•˜๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด PR์—์„œ ๋ฌธ์„œ์— ๋Œ€ํ•œ ์ง์ ‘ ๋งํฌ: https://github.com/asciinema/asciinema/blob/asciicast-v2/doc/asciicast-v2.md

ํ”ผ๋“œ๋ฐฑ์„ ๋†’์ด ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

@sickill ํŒŒ์ผ ํ˜•์‹ ๋ณ€๊ฒฝ(JSON ๋Œ€์‹  NDJSON )์ด ์ถœ๋ ฅ ํŒŒ์ผ์˜ ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ์— ์–ด๋–ป๊ฒŒ ์ ์šฉ

์ผ๋ฐ˜ JSON ํŒŒ์ผ์˜ @vvv ์—๋Š” ๋‹จ์ผ ๊ฐœ์ฒด๊ฐ€ ์žˆ๊ณ  ์ฆ๋ถ„์‹์œผ๋กœ ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ „์ฒด์ ์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ์ˆ ์ ์œผ๋กœ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ถฉ๋Œ ๋“ฑ์˜ ๊ฒฝ์šฐ ์ž˜๋ชป๋œ JSON ํŒŒ์ผ๋กœ ์ข…๋ฃŒ๋˜๊ณ  ๋‹ซํž˜์ด ๋ˆ„๋ฝ๋ฉ๋‹ˆ๋‹ค. ๊ด„ํ˜ธ). NDJSON(๋˜๋Š” ๊ฑฐ์˜ ๋™์ผํ•œ JSONLines )์„ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์—ฌ๋Ÿฌ JSON ๊ฐœ์ฒด๊ฐ€ ์žˆ๊ณ  ๊ฐ๊ฐ์˜ ์ค„์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒˆ ๋ฐ์ดํ„ฐ๋กœ ์ƒˆ ์ค„์„ ์ถ”๊ฐ€ํ•˜๊ณ  ๋งˆ์Œ๋Œ€๋กœ ์ค‘์ง€/์ถฉ๋Œํ•˜๊ณ  ํŒŒ์ผ์„ ์œ ํšจํ•˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋‘์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™๊ธฐ ๋ถ€์—ฌ/ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด asciicast v2 ํ˜•์‹ ๋ฌธ์„œ์˜ ์ดˆ์•ˆ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

@sickill ์ข‹์€ ๊ฒƒ์€ ์„ธ์…˜์˜ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ์ดˆ๊ธฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ์‚ฌ ๊ฐ€๋Šฅํ•œ ssh ์„ธ์…˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๋„๊ตฌ์—์„œ ์ถ”์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ "์ฃผ์ž…"ํ•˜๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ƒ์„ฑ๋œ ์„ธ์…˜์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ssh๋œ ์‚ฌ์šฉ์ž
  • ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
  • ์„œ๋ฒ„ ํ™˜๊ฒฝ

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ์ผ๋ถ€ ์™ธ๋ถ€ UI์— ๋…ธ์ถœ์‹œํ‚ค์‹ญ์‹œ์˜ค.

ํŽธ์ง‘: ํ˜•์‹์— ๋Œ€ํ•œ PR ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๊ฑฐ๊ธฐ์— ๋Œ“๊ธ€์„ ๋‹ฌ๊ฒ ์Šต๋‹ˆ๋‹ค. :)

ํ˜„์žฌ ์›๊ฒฉ ์ง์›์˜ ์„ธ์…˜ ๋กœ๊น…์„ ์œ„ํ•ด asciinema๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
ssh๋ฅผ ํ†ตํ•ด jumphost๋ฅผ ํ†ตํ•ด ๋ณด์•ˆ ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ,
์ŠคํŠธ๋ฆผ ๋ฐ ์žฌ์ƒ ์„ธ์…˜์ด ๋ฐœ์ƒํ•˜๋ฉด
ํ•ด๋‹น ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ asciinema์˜ ์œ ์šฉ์„ฑ.

2017๋…„ 4์›” 25์ผ ํ™”์š”์ผ ์˜ค์ „ 5:17 Jose Diaz-Gonzalez <
[email protected]>์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@sickill https://github.com/sickill
์„ธ์…˜์˜ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ์ดˆ๊ธฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ๊ฐ์‚ฌ ๊ฐ€๋Šฅํ•œ ssh ์„ธ์…˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๋„๊ตฌ์—์„œ ์ถ”์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ "์ฃผ์ž…"ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ํฅ๋ฏธ๋กœ์šธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ
์ž ์žฌ์ ์œผ๋กœ ์ƒ์„ฑ๋œ ์„ธ์…˜์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ssh๋œ ์‚ฌ์šฉ์ž
  • ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
  • ์„œ๋ฒ„ ํ™˜๊ฒฝ

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ์ผ๋ถ€ ์™ธ๋ถ€ UI์— ๋…ธ์ถœ์‹œํ‚ค์‹ญ์‹œ์˜ค.

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/asciinema/asciinema/issues/127#issuecomment-296872546 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AAi2o-cZFmoJonPeabG0UkPfb8MVR3EMks5rzVfNgaJpZM4FuWm_
.

๋‚˜๋Š” asciinema๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ(์ด ๋ฌธ์ œ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋˜๋Œ๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค) CYA์— ๋Œ€ํ•œ ๋ชจ๋“  ํ„ฐ๋ฏธ๋„ ์„ธ์…˜์˜ ๊ธฐ๋ก์„ ์œ ์ง€ํ•˜๊ณ  ์ง€๋‚œ ์ฃผ 3์‹œ์— ์„œ๋ฒ„ X์—์„œ ํ•œ ์ผ์„ ์žŠ์–ด๋ฒ„๋ฆฐ ๊ฒฝ์šฐ ์ฐธ์กฐ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜คํ›„. ๋ฌธ์ œ๋Š” ์ด๊ฒƒ์ด ์„ฑ๊ณต์ ์ธ ์ข…๋ฃŒ ์‹œ์—๋งŒ ํ”Œ๋Ÿฌ์‹œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ์„ธ์…˜์˜ ์ ˆ๋ฐ˜์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘๋‹จ๋œ ์„ธ์…˜์— ๋Œ€ํ•œ ์ฐฝ์„ ๋‹ซ์œผ๋ฉด ์„ธ์…˜ ๊ธฐ๋ก์ด ์™„์ „ํžˆ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ํ–‰๋™์ด์—ˆ๊ณ  ์ƒ๋‹นํžˆ ์‹ค๋ง์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค.

@gizmonicus asciicast v2 ํ˜•์‹ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋””์Šคํฌ ์“ฐ๊ธฐ๋Š” ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„  ์ˆœ์œ„์ž…๋‹ˆ๋‹ค. ETA๋Š” ์—†์ง€๋งŒ ๊ณง ๊ทธ๋ ‡๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@sickill - ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@timofonic ์—ฌ๊ธฐ์— ์งˆ๋ฌธ์„ ํ•˜๊ณ  ์ฐธ์„์„ฑ ์žˆ๊ฒŒ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•‘์„ ๋ณด๋‚ด ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ŠคํŒธ ๋ฉ”์ผ์„ ๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋””์Šคํฌ์— ์“ฐ๊ธฐ๊ฐ€ #196์—์„œ ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์˜ ์ผ๋ถ€๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๋ฒ ํƒ€ ํ…Œ์ŠคํŠธ์—ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๋Š” ์ฒดํฌ ์•„์›ƒ develop ์ง€์ ๊ณผ ํ•จ๊ป˜ ์ฒดํฌ ์•„์›ƒ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‹คํ–‰ : python3 -m asciinema rec filename . ๋‹ค์–‘ํ•œ Linux ๋ฐฐํฌํŒ๊ณผ macOS์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ‘‹

์ฐธ๊ณ : ํ˜„์žฌ ์„œ๋ฒ„์™€ ์›น ํ”Œ๋ ˆ์ด์–ด๋Š” ์ƒˆ๋กœ์šด asciicast ํ˜•์‹์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋กœ์ปฌ ๋…น์Œ ๋ฐ ํ„ฐ๋ฏธ๋„ ๋‚ด ์žฌ์ƒ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž˜ํ–ˆ์–ด @sickill! ๋ฐฉ๊ธˆ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ๊ณ  ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(Ubuntu 17.04).

๊ทธ๋ž˜๋„ ์•ฝ๊ฐ„์˜ ์„ค๋ช…; ๋ฌด์—‡์ด ๋คํ”„๋ฅผ ์œ ๋ฐœํ•ฉ๋‹ˆ๊นŒ? ํŒŒ์ผ ๋ฒ„ํผ๋ง์ž…๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ์ž…๋‹ˆ๊นŒ? ์–ด๋Š ์ชฝ์ด๋“ , ํŠน์ • ์ž„๊ณ„ ๊ฐ’์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋ช‡ ๊ฐ€์ง€ ๋น ๋ฅธ ์—์ฝ”๋ฅผ ์ˆ˜ํ–‰ํ•œ ํ›„ ํŒŒ์ผ์—์„œ ์•„๋ฌด ๊ฒƒ๋„ ๋ณผ ์ˆ˜ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌป์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋” ๋งŽ์ด ๊ฐ€์ง€๊ณ  ๋†€๋ฉด์„œ ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

@metasoarous ์ข‹์€ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.

์“ฐ๊ธฐ๋ฅผ ์ผ๊ด„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ช…์‹œ์ ์ธ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋˜๋Š” ๊ธฐํƒ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์—†์œผ๋ฉฐ ๋Œ€๊ธฐ์—ด์„ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

https://github.com/asciinema/asciinema/blob/8e1b6f7da1a0ad4d52e63998b14c1a5133fc7836/asciinema/asciicast/v2.py#L72

"์ž‘๊ฐ€" ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜๋ ค๋ฉด:

https://github.com/asciinema/asciinema/blob/8e1b6f7da1a0ad4d52e63998b14c1a5133fc7836/asciinema/asciicast/v2.py#L36 -L40

f.write(...) ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ~8KB ์ฒญํฌ๋กœ ์“ฐ์—ฌ์ง„ ๊ฒƒ๋„ ๊ด€์ฐฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ๋ฒ„ํผ๋ง์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Python์˜ TextIOWrapper ๊ฐ€ ์—ฌ๊ธฐ์— ์ฑ…์ž„์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๋ญ๊ฐ€ ์ œ์ผ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ˆ? ์—ด๋ฆฐ io ๊ฐ์ฒด์—์„œ ๋ฒ„ํผ๋ง์„ ๋„๊ฑฐ๋‚˜ ๋ชจ๋“  ์“ฐ๊ธฐ์—์„œ f.flush() ๋˜๋Š” ์ž„๊ณ„๊ฐ’์— ๋„๋‹ฌํ•  ๋•Œ ๋ฐ”์ดํŠธ/์‹œ๊ฐ„ ๊ณ„์‚ฐ ๋ฐ ํ”Œ๋Ÿฌ์‹œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ช…์‹œ์  ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” io ๊ฐ์ฒด์—์„œ ๋ฒ„ํผ๋ง์„ ๋„๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์‰ฌ์šด ํ•ด๊ฒฐ์ฑ…์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๊นŒ์šด ์ดˆ์— N์ดˆ๋งˆ๋‹ค ์ˆ˜๋™ ํ”Œ๋Ÿฌ์‹œ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋” ๋ฉ‹์ง„ ์ „๋žต์„ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ ์„ ํƒ ์ค‘ ํ•˜๋‚˜์— ๊ฐ€๊นŒ์šด ๊ฒƒ์ด ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์“ฐ๊ธฐ๋ฅผ ์œ„ํ•ด ํŒŒ์ผ์„ ์—ด ๋•Œ ๋ฒ„ํผ๋ง ์ •์ฑ…์„ "๋ผ์ธ ๋ฒ„ํผ๋ง"์œผ๋กœ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜๋„๋ก ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค(== ์“ฐ๊ธฐ์— \n ํฌํ•จ ์‹œ ํ”Œ๋Ÿฌ์‹œ, ์ด ๊ฒฝ์šฐ ์“ฐ๊ธฐ์˜ 100% ๊ฒฝ์šฐ). ์ง€๊ธˆ ๋‹น๊ฒจ์„œ ์‹œ๋„ํ•˜๋ฉด ํŒŒ์ผ์ด ์ฆ‰์‹œ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•œ! ๋น ๋ฅธ ๊ด€์‹ฌ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด๊ฒƒ์ด ๊ตฌํ˜„๋˜์—ˆ๊ณ (#227์—์„œ) ๊ณง ์ถœ์‹œ๋  asciinema 2.0๊ณผ ํ•จ๊ป˜ ์ถœ์‹œ๋  ์˜ˆ์ •์ด๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ๋ˆ„๊ตฌ๋“ ์ง€ ์ด๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด v2 ์ง€์ ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

bashfulrobot picture bashfulrobot  ยท  11์ฝ”๋ฉ˜ํŠธ

laughedelic picture laughedelic  ยท  7์ฝ”๋ฉ˜ํŠธ

TyrfingMjolnir picture TyrfingMjolnir  ยท  7์ฝ”๋ฉ˜ํŠธ

SR-Lut3t1um picture SR-Lut3t1um  ยท  3์ฝ”๋ฉ˜ํŠธ

abaykan picture abaykan  ยท  10์ฝ”๋ฉ˜ํŠธ