Livesense Advent Caelendar 2015 Tag 12 ist @sion_cojp.
Ich habe als Infrastrukturingenieur gearbeitet, und als ich krank war, fuhr ich mit dem Zug zum Terminal meines Chefs. ](Http://qiita.com/sion_cojp/items/e4c61485f9204b2abf95) Jetzt wechsle ich als Webanwendungsingenieur in eine andere Abteilung und entwickle APIs.
Haben Sie so etwas bei der Arbeit?
Ich verstehe. Dieses Gefühl. Ja.
~~ Ich bin so viel umgezogen, dass ich mir wünschte, ich könnte teures Sushi kaufen. .. ~~
Aber ich muss Ihnen dafür danken, dass Sie sich bewegen können. Die Gesellschaft ist kompliziert, nicht wahr?
Ich werde irgendwie krank sein. (Kimon)
Wieder schlich ich mich von hinten in den Monitor meines Chefs.
Ich bin entspannt und ringe mit dem Legacy-Code von PHP.
Holen Sie sich die Serverinformationen, die Ihr Chef entwickelt.
Mach es richtig.
Lassen Sie uns MATRIX_ANGRY_CHARS mit Wut schlagen.
Wie Sie beim Ausführen des Programms sehen können, können Sie sicher sein, dass der verärgerte Teil nicht kahl sein darf </ b>.
Wir danken MATRIX_THANKS_CHARS.
matrix_curses.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import locale
import time
import curses
import sys, string
import random
import struct
locale.setlocale(locale.LC_ALL, '')
encoding = locale.getpreferredencoding()
########################################################################
# const
MIN_SPEED = 1
MAX_SPEED = 2
MATRIX_ANGRY_CHARS = "Es ist in Ordnung, mich spät per Chat statt per E-Mail zu kontaktieren. Ich möchte Hadoken eingeben. Ich bin fast weg."
MATRIX_THANKS_CHARS = "THANKS DEAR TAKU !!!"
MATRIX_COLOR_WORD = 46
MATRIX_COLOR_BACK = 232
########################################################################
class FallingChar(object):
matrixchr = list(MATRIX_ANGRY_CHARS)
normal_attr = curses.A_NORMAL
highlight_attr = curses.A_REVERSE
def __init__(self, width, MIN_SPEED, MAX_SPEED):
self.x = 0
self.y = 0
self.speed = 1
self.char = ' '
self.reset(width, MIN_SPEED, MAX_SPEED)
def reset(self, width, MIN_SPEED, MAX_SPEED):
self.char = random.choice(FallingChar.matrixchr).encode(encoding)
self.x = random.randint(1, width - 1)
self.y = 0
self.speed = random.randint(MIN_SPEED, MAX_SPEED)
def tick(self, scr):
height, width = scr.getmaxyx()
self.out_of_screen_reset(width, height)
scr.addstr(self.y, self.x, self.char, curses.color_pair(1))
self.char = random.choice(FallingChar.matrixchr).encode(encoding)
self.y += 1
if not self.out_of_screen_reset(width, height):
scr.addstr(self.y, self.x, self.char, curses.A_REVERSE)
def out_of_screen_reset(self, width, height):
if self.x > width-2:
self.reset(width, MIN_SPEED, MAX_SPEED)
return True
if self.y > height-2:
self.reset(width, MIN_SPEED, MAX_SPEED)
return True
return False
def rand():
a = 1
while True:
a ^= (a << 1);
a ^= (a >> 135);
a ^= (a << 104);
yield a
r = rand()
def randint(_min, _max):
n = r.next()
return (n % (_max - _min)) + _min
def color():
curses.start_color()
curses.init_pair(1, MATRIX_COLOR_WORD, MATRIX_COLOR_BACK)
curses.curs_set(0)
curses.noecho()
def main():
scr = curses.initscr()
scr.nodelay(1)
color()
height, width = scr.getmaxyx()
lines = []
for i in range(8):
l = FallingChar(width, MIN_SPEED, MAX_SPEED)
lines.append(l)
scr.refresh()
while True:
for line in lines:
line.tick(scr)
for i in range(30):
x = randint(0, width-1)
y = randint(0, height-1)
scr.addstr(y, x, ' ')
scr.refresh()
time.sleep(0.04)
def last_main():
curses.endwin()
curses.curs_set(1)
curses.reset_shell_mode()
curses.echo()
screen = curses.initscr()
color()
lastchr = string.join(list(MATRIX_THANKS_CHARS), " ")
last_height, last_width = screen.getmaxyx()
start_width = last_width/2 - len(lastchr)/2
for i in range(last_height/2):
screen.clear()
screen.addstr(i, start_width, lastchr, curses.color_pair(1))
screen.refresh()
time.sleep(0.2)
screen.getch()
curses.endwin()
try:
main()
except KeyboardInterrupt:
try:
last_main()
except KeyboardInterrupt:
curses.endwin()
curses.curs_set(1)
curses.reset_shell_mode()
curses.echo()
$ python /tmp/matrix_curses.py
Gut. </ b>
$ w
Es stellt sich heraus, dass mein Chef, taku, / dev / pts / ○○ ist. Befehlseingabe sofort.
$ python /tmp/matrix_curses.py > /dev/pts/○○
Drücken Sie dann Strg + C, wenn Sie zufrieden sind oder der Ärger Ihres Chefs maximal ist.
THANKS DEAR TAKU!!!
Verwenden Sie es nicht, wenn es wichtig ist, z. B. wenn ein Fehler vorliegt. Absolut. Geben Sie es Ihrem humorvollen, warmen und sanften Chef, der niemals wütend wird!
Recommended Posts