ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืื™ืš ื•ื•ื™ืœืŸ ืฆื• ื“ืขืจืฆื™ื™ืœืŸ ืื™ืจ ื•ื•ืขื’ืŸ ืื™ื™ืŸ ื–ื•ื›ืŸ ื ื•ืฆืŸ ื•ื•ืึธืก ื–ื™ื™ืขืจ ืกื™ืžืคึผืœืึทืคื™ื™ื– ืœืขื‘ืŸ. ื•ื•ืขืŸ ืื™ืš ื‘ืึทืงื•ืžืขืŸ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืื•ืŸ ืื™ืš ื“ืึทืจืคึฟืŸ ืฆื• ืงื•ืงืŸ ืคึฟืึทืจ ืขืคึผืขืก, ื“ืขืจ ืขืจืฉื˜ืขืจ ื–ืึทืš ืื™ืš ื˜ืึธืŸ ืื™ื– ื˜ืฉืขืง ืื•ื™ื‘ ack ืื™ื– ืื™ื ืกื˜ืึทืœื™ืจืŸ. ื“ืขื ื ื•ืฆืŸ ืื™ื– ืึท ื•ื™ืกื’ืขืฆื™ื™ื›ื ื˜ ืคืึทืจื‘ื™ื™ึทื˜ ืคึฟืึทืจ grep, ื•ื•ื™ ืื•ื™ืš ื’ืขืคึฟื™ื ืขืŸ ืื•ืŸ wc ืฆื• ืขื˜ืœืขื›ืข ืžืึธืก. ืคืืจื•ื•ืืก ื ื™ืฉื˜ ื’ืจืขืค? Ack ื”ืื˜ ื ื™ืกืขืจ ืกืขื˜ื˜ื™ื ื’ืก ืื•ื™ืก ืคื•ืŸ ื“ื™ ืงืขืกื˜ืœ, ืžืขืจ ืžืขื ื˜ืฉ-ืœื™ื™ื ืขื•ื•ื“ื™ืง ืึธืคึผืฆื™ืขืก, ืคึผืขืจืœ ืจืขื’ืขืงืก ืื•ืŸ ืึท ืงืึธื ืคื™ื’ ืกื™ืกื˜ืขื. ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ (ื“ืึทืจื‘ืŸ) ื–ื•ื›ืŸ ื“ื•ืจืš ื“ื™ ื•ื•ืึธืงื–ืึทืœ, ืื™ืจ ื–ืึธืœ ื‘ืืฉื˜ื™ืžื˜ ืคึผืจื•ื‘ื™ืจืŸ ืขืก.

ื™ืงืขืจื“ื™ืง ืคึฟืขื™ึดืงื™ื™ื˜ืŸ

ืึทืง ืื™ื– ืจืขืงื•ืจืกื™ื•ื•ืข ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืื•ืŸ ืฉืจื™ื™ื‘ืŸ ื•ื•ื™ื™ื ื™ืงืขืจืข ืึธืคึผืฆื™ืขืก ืื™ื– ืฉื˜ืขื ื“ื™ืง ืึท ื’ื•ื˜ืข ื’ืขื“ืึทื ืง.

ืžื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืึท ืคืึธืŸ -wืฆื• ื–ืึธื’ืŸ ื“ื™ ื ื•ืฆืŸ ืฆื• ืงื•ืงืŸ ืคึฟืึทืจ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืžื•ืกื˜ืขืจ ืกืขืจืึทื•ื ื“ืึทื“ ื“ื•ืจืš ื•ื•ืึธืจื˜ ื‘ืึทื•ื ื“ืจื™ื– (ื•ื•ื™ื™ึทืก ืกืคึผื™ื™ืก, ืกืœืึทืฉื™ื–, ืืื–"ื• ื•).

ack -w mysql

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืึทืง ืฉื˜ื™ืฆื˜ ื–ื•ื›ืŸ ื“ื•ืจืš ื˜ืขืงืข ื˜ื™ืคึผ. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืœืึธืžื™ืจ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืžืึธื“ื•ืœืข ื•ื•ืขืจืกื™ืข ืื™ืŸ json ื˜ืขืงืขืก.

ack --json '"version":s+"d+.d+.d+"'

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ื ื’ืึทื ืฅ ืจืฉื™ืžื” ืคื•ืŸ ื’ืขืฉื˜ื™ืฆื˜ ื˜ืขืงืข ื˜ื™ื™ืคึผืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื•ื•ื™ื•ื“ ื ื™ืฆืŸ:

ack --help-types

ืึธืคื˜ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฆื™ื™ืœืŸ ื•ื•ื™ ืคื™ืœืข ืžืึธืœ ืึท ืคืจืึทื–ืข ืื™ื– ืืจื•ื™ืก ืื™ืŸ ืึท ืงืœืึธืฅ ื˜ืขืงืข, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืฆื• ืคึฟืึทืจืฉื˜ื™ื™ืŸ ื•ื•ื™ ืคื™ืœ ื“ืึทื˜ืŸ ื“ื™ ืฉืจื™ืคื˜ ืคึผืจืึทืกืขืกื˜.

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep
ืžื™ืจ ืฆื™ื™ืœืŸ ื•ื•ื™ ืคื™ืœืข ืžืึธืœ ืคึผืจืึธืฆืขืก ืึทืงืขืจื– ืื™ืŸ ื“ื™ test.log ื˜ืขืงืข, ื ื™ื˜ ื’ืขื ื•ืžืขืŸ ืื™ืŸ ื—ืฉื‘ื•ืŸ ืคืึทืœ (-i).

ืžื™ืจ ืงืขื ืขืŸ ืฆื™ื™ืœืŸ ืคืึทื ืก ื ื™ื˜ ื‘ืœื•ื™ื– ืื™ืŸ ืื™ื™ืŸ ืกืคึผืขืฆื™ืคื™ืฉ ื˜ืขืงืข, ืึธื‘ืขืจ ืื™ืŸ ืึท ื’ืจื•ืคึผืข. ืœืึธืžื™ืจ ืขื ื“ื™ืงืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื–ื•ื›ืŸ ืคึฟืึทืจ ื“ื™ ื•ื•ืึธืจื˜ mysql: ืฆื™ื™ืœืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื’ืขืฉืขืขื ื™ืฉืŸ ืคื•ืŸ ื•ื•ืขืจื˜ืขืจ (-ั) ืื™ืŸ *.js ื˜ืขืงืขืก(--js), ืขืงืกืงืœื•ื“ื™ื ื’ ื˜ืขืงืขืก ืื™ืŸ ื•ื•ืึธืก ื’ืึธืจื ื™ืฉื˜ ืื™ื– ื’ืขืคื•ื ืขืŸ (-h) ืื•ืŸ ืกืึทืžืขืจื™ื ื’ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜.

# ะฒั‹ะฒะตะดะตะผ ะฝะฐ ัะบั€ะฐะฝ ะฒัะต ะฒั…ะพะถะดะตะฝะธั
ack --js -w mysql
# ัั‡ะธั‚ะฐะตะผ ะพะฑั‰ัƒัŽ ััƒะผะผัƒ ะฒั…ะพะถะดะตะฝะธะน
ack --js -wch mysql

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ืžื™ืจ ืงืขื ืขืŸ ื‘ืึทืงื•ืžืขืŸ ืึท ื“ื™ื˜ื™ื™ืœื“ ื‘ืึทืจื™ื›ื˜ ื•ื•ืขื’ืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื’ืขืฉืขืขื ื™ืฉืŸ ืื™ืŸ ื™ืขื“ืขืจ ื˜ืขืงืข ื ื™ืฆืŸ (-l)

ack --js -w -cl mysql

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ื ืึธืš ืงืึธื ื˜ืขืงืกื˜ ืคึฟืึทืจ ื“ื™ื™ืŸ ื–ื•ื›ืŸ, ืื™ืจ ืงืขื ืขืŸ ืคืจืขื’ืŸ ack
ื•ื•ื™ื™ึทื–ืŸ ืฉื•ืจื•ืช ืึทืจื•ื™ืฃ ืฆื• (-B) ืื•ืŸ ื ืึธืš (-A) ืคื•ืŸ ื“ื™ ื’ืขืคื•ื ืขืŸ ืื•ื™ืกื“ืจื•ืง. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ืฉื•ืจื•ืช ื•ื•ืึธืก ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื–ืŸ ื ืึธืš ื“ื™ ืึธืคึผืฆื™ืข.

# 2 ัั‚ั€ะพะบะธ ะดะพ 
ack --js --column -B 2 "query.once('" ./lib/

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

# 2 ัั‚ั€ะพะบะธ ะฟะพัะปะต 
ack --js --column -A 2 "query.once('" . /lib/

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืื•ืŸ ืื•ื™ื‘ ืื™ืจ ื“ืึทืจืคึฟืŸ ื‘ื™ื™ื“ืข, ื ื•ืฆืŸ (-ืžื™ื˜)

ack --js --column -C 2 "query.once('" ./lib/

ืขืก ืื™ื– ืื•ื™ืš ืึทืŸ ืึธืคึผืฆื™ืข (-v) ืฆื• ื™ื‘ืขืจืงืขืจืŸ ื“ื™ ื–ื•ื›ืŸ, ื“"ื” ื•ื•ื™ื™ึทื–ืŸ ืฉื•ืจื•ืช ื•ื•ืึธืก ื˜ืึธืŸ ื ื™ื˜ ืึทื ื˜ื”ืึทืœื˜ืŸ ืึท ื’ืขื’ืขื‘ืŸ ืžื•ืกื˜ืขืจ.

ืจืขื’ื•ืœืขืจ ืื•ื™ืกื“ืจื•ืง

Ack, ื ื™ื˜ ืขื ืœืขืš grep, ื ื™ืฆื˜ ืคึผืขืจืœ ืงืึทืžืคึผืึทื˜ืึทื‘ืึทืœ ืื•ื™ืกื“ืจื•ืงืŸ.
ืคึฟืึทืจ ืžื™ืจ ื“ืึธืก ืื™ื– ืึท ื’ืจื•ื™ืก ืคึผืœื•ืก; ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืฆื• ื’ืขื“ืขื ืงืขืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืกื™ื ื˜ืึทืงืก ืคึฟืึทืจ ืจืขื’ื•ืœืขืจ ืื•ื™ืกื“ืจื•ืงืŸ.

ack 'vars+adds+'

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืžืขืจ ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ื‘ื™ื™ึทืฉืคึผื™ืœ

ack '*s+[vd+.d+.d+]'

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืึธืคื˜ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ืœืึธื–ืŸ ืื™ืŸ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ื‘ืœื•ื™ื– ื•ื•ืึธืก ืฉื•ื•ืขื‘ืขืœืขืš ื“ื™ ืžื•ืกื˜ืขืจ. ื“ื™ --output ืึธืคึผืฆื™ืข ื•ื•ืขื˜ ื”ืขืœืคืŸ ื“ืึธ (-o)

ack -o '*s+[vd+.d+.d+]'

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ื ื™ืฆืŸ ืงืœืึทืžืขืจืŸ ืžื™ืจ ืงืขื ืขืŸ ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ื“ืขื ื’ืขืคึฟื•ื ืขืŸ ื˜ื™ื™ืœ ืื•ืŸ ืึทืงืกืขืก ืขืก ืื™ืŸ ืจืขื–ื•ืœื˜ืึทื˜ ื“ื•ืจืš ื“ื™ $ [ื’ืจื•ืคึผืข ื ื•ืžืขืจ] ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง. ืœืžืฉืœ,

ack --output='version is $1' '*s+[v(d+.d+.d+)]'

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืึทืง ื”ืื˜ ื ื•ืฆื™ืง ืึธืคึผืฆื™ืขืก --range-start ะธ --range-end. ื–ื™ื™ ื”ืขืœืคืŸ ื•ื•ืขืŸ
ื“ื™ ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ืกื˜ืึธืจื“ ื ื™ืฉื˜ ืื™ืŸ ืื™ื™ืŸ ืฉื•ืจื”, ืึธื‘ืขืจ ืื™ืŸ ืžืึทืœื˜ื™-ืฉื•ืจื” ืคืึธืจืขื.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืขืก ืื™ื– ืึท ื˜ืขืงืข ืžื™ื˜ sql ืงืึธื“

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ื–ืืœ ืก ืขืงืกื˜ืจืึทืงื˜ ื“ื™ ื–ื™ื™ึทืœ ื ืขืžืขืŸ. ื“ืขืจ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ื“ื™ ื‘ืœืึธืง ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ืฉื•ืจื” ืกื˜ืึทืจื˜ื™ื ื’ ืžื™ื˜ SELECT, ืื•ืŸ ื“ืขืจ ืกื•ืฃ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ืฉื•ืจื” ืกื˜ืึทืจื˜ื™ื ื’ ืžื™ื˜ FROM.

ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืื•ื™ื‘ ื“ืขืจ ื–ื•ื›ืŸ ืื•ื™ืกื“ืจื•ืง ื›ึผื•ืœืœ ืกืคึผืขืฆื™ืขืœ ืื•ืชื™ื•ืช ืึทื–ืึท ื•ื•ื™ ืึท ืคึผืขืจื™ืึธื“, ืึท ืงืœืึทืžืขืจืŸ, ืื•ืŸ ืื ื“ืขืจืข, ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ ืึธืคึผืฆื™ืข ืฆื• ื ื™ืฉื˜ ืึทื ื˜ืœื•ื™ืคืŸ ืคื•ืŸ ื–ื™ื™. -Q.

# ะŸะพะธัะบ ั ัะบั€ะฐะฝะธั€ะพะฒะฐะฝะธะตะผ 
ack --json 'mysql.'    
# ะŸะพะธัะบ ะฑะตะท ัะบั€ะฐะฝะธั€ะพะฒะฐะฝะธั
ack --json -Q mysql.

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืึทืจื‘ืขื˜ ืžื™ื˜ ื˜ืขืงืขืก

ื‘ืึทืงื•ืžืขืŸ ืึท ืจืฉื™ืžื” ืคื•ืŸ ื˜ืขืงืขืก ืžื™ื˜ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืคืึทืจืœืขื ื’ืขืจื•ื ื’

ack -f --js

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ื’ืขืคึฟื™ื ืขืŸ ืึทืœืข js ื˜ืขืงืขืก ื•ื•ืขืžืขื ืก ื ืึธืžืขืŸ ืกื˜ืึทืจืฅ ืžื™ื˜ P * ื ื™ืฆืŸ ื“ื™ ืึธืคึผืฆื™ืข (-g).

ack -g --js '/Pa.+.js$'

ืึทืง ืื™ื– ื‘ืขืกืขืจ ื•ื•ื™ grep

ืงืึธื ืคื™ื’ื•ืจืึทื˜ื™ืึธืŸ

ื“ื™ ื ื•ืฆืŸ ื”ืื˜ ื–ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืงืึธื ืคื™ื’ ื˜ืขืงืข. ืื™ืจ ืงืขื ืขืŸ ื”ืึธื‘ืŸ ื‘ื™ื™ื“ืข ืึท ื’ืœืื‘ืืœืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื“ื™ ื‘ืึทื ื™ืฆืขืจ (~/.ackrc) ืื•ืŸ ืึท ื”ื™ื’ืข ืคึฟืึทืจ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื˜ืขืงืข (ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืึทืคึฟืŸ ืึท .ackrc ื˜ืขืงืข ืื™ืŸ ื“ืขืจ ื˜ืขืงืข).

ืจื•ื‘ึฟ ืคื•ืŸ ื“ื™ ืึธืคึผืฆื™ืขืก ื•ื•ืึธืก ื–ืขื ืขืŸ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ ื“ื™ ืงืึธื ืคื™ื’ืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืžืึทื ื™ื•ืึทืœื™ ืกืคึผืขืกื™ืคื™ืขื“ ื•ื•ืขืŸ ื’ืขืจื•ืคืŸ. ื–ืืœ ืก ืงื•ืง ื‘ื™ื™ึท ืึท ื‘ื™ืกืœ ืคื•ืŸ ื–ื™ื™.

ืื™ื’ื ืึธืจื™ืจืŸ ื˜ืขืงืข ื•ื•ืขืŸ ืื™ืจ ื–ื•ื›ื˜

--ignore-dir=dist

ืœืึธืžื™ืจ ืœื™ื™ื’ืŸ ืึท ืžื ื”ื’ ื˜ืขืงืข ื˜ื™ืคึผ -vue.

--type-add=vue:ext:js,vue

ืื™ืฆื˜ ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ --vue ืึธืคึผืฆื™ืข ืฆื• ื–ื•ื›ืŸ ื˜ืขืงืขืก .vue. ืœืžืฉืœ: ack --vue ืึทืคึผ.
ืื™ืจ ืงืขื ืขืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจืŸ ืึท ืจืฉื™ืžื” ืคื•ืŸ ื™ืงืกื˜ืขื ืฉืึทื ื– ืคึฟืึทืจ ื“ืขื ืึธืคึผืฆื™ืข. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ืึธ, ื•ื•ืขืŸ ื ื™ืฆืŸ -vue, ื“ื™ ืคืืœื’ืขื ื“ืข ื•ื•ืขื˜ ื–ื™ื™ืŸ ืคึผืจืึทืกืขืกื˜:
.js ื˜ืขืงืขืก.

ืื™ื’ื ืึธืจื™ืจืŸ ื˜ืขืงืขืก, ืœืžืฉืœ ืžื™ื ื™ืคื™ืขื“ *.ืžื™ืŸ.ื“ื–ืฉืก

--ignore-file=match:/.min.js$/

ื™ื ืกื˜ืึทืœื™ืจื•ื ื’

ืกืขื ื˜ืึธืก

yum update -y && yum install ack -y

ื•ื‘ื•ื ื˜ื•

apt-get update -y && apt-get install ack-grep -y

Mac OS

brew update && brew install  ack

ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’ ืคื•ืŸ ื“ืขื ืคึผืœืึทืฅ

curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack

ืคึผืœื•ื’ื™ื ืก ืคึฟืึทืจ ืจืขื“ืืงืฆื™ืข:

ืกืึธืฃ

ื“ืืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืึทืœืข ื“ื™ ืคึผืึทืกืึทื‘ื™ืœืึทื˜ื™ื–. ื“ื™ ืคื•ืœ ืจืฉื™ืžื” ืคื•ืŸ ืคืึทื ื’ืงืฉืึทื ื– ืงืขื ืขืŸ ื–ื™ื™ืŸ ื•ื•ื™ื•ื“ ื“ื•ืจืš ืคืœื™ืกื ื“ื™ืง:

ack โ€“-help
# ะธะปะธ
ack --man

ื“ื™ ืึทืง ื ื•ืฆืŸ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืžืึทื›ืŸ ื–ื•ื›ืŸ ืื™ืŸ ื“ืขืจ ื•ื•ืึธืงื–ืึทืœ ืžืขืจ ื‘ืึทืงื•ื•ืขื ืื•ืŸ ืคืœืขืงืกืึทื‘ืึทืœ. ืื•ืŸ ื ื™ืฆืŸ ืจืขืจื  - ืœื™ื ื™ืข (ืึทืง -C 10 ื”ืขืœื | ืึทืง ื•ื•ืขืœื˜) ืื™ืจ ืงืขื ืขืŸ ืžืึทื›ืŸ ืึท ืฉื˜ืึทืจืง ืคืึทืจื‘ื™ื ื“ืŸ ืคึฟืึทืจ ื–ื•ื›ืŸ ืื•ืŸ ืคึฟื™ืœื˜ืจื™ืจื•ื ื’ ื“ืึทื˜ืŸ ืื™ืŸ ื“ื™ ื˜ืขืงืข ืกื™ืกื˜ืขื ืื•ืŸ ืื™ืŸ ื“ื™ ื˜ืขืงืขืก ื–ื™ืš.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’