Le 12e jour de Livesense Advent Caelendar 2015 est @sion_cojp.
J'avais l'habitude de travailler comme ingénieur d'infrastructure, et quand j'étais malade, je conduisais un train jusqu'au terminal de mon patron. Je passe maintenant à un autre département en tant qu'ingénieur d'application Web et développe des API.
Avez-vous ce genre de choses au travail?
Je comprends. Ce sentiment. Ouais.
~~ J'ai tellement déménagé, alors j'aimerais pouvoir acheter des sushis chers. .. ~~
Mais je dois vous remercier de pouvoir bouger. La société est compliquée, n'est-ce pas?
Je serai malade d'une certaine manière. (Kimon)
Encore une fois, je me suis faufilé dans l'écran de mon patron par derrière.
Je suis décontracté et je lutte avec le code hérité de PHP.
Obtenez les informations sur le serveur que votre patron développe.
Faites-le correctement.
Frappons MATRIX_ANGRY_CHARS avec colère.
Comme vous pouvez le voir en exécutant le programme, soyez assuré que la partie en colère est de ne pas être chauve </ b>.
Remercions 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 = "Je peux me contacter en retard, pas par e-mail, mais par chat. Je veux taper Hadoken. Je suis presque parti."
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
Bien. </ b>
$ w
Il s'avère que mon patron, taku, est / dev / pts / ○○. Entrée de commande immédiatement.
$ python /tmp/matrix_curses.py > /dev/pts/○○
Appuyez ensuite sur ctrl + c lorsque vous êtes satisfait ou que la colère de votre patron est au maximum.
THANKS DEAR TAKU!!!
Ne l'utilisez pas lorsque c'est important, par exemple en cas de panne. Absolument. Donnez-le à votre patron humoristique, chaleureux et doux qui ne se fâche jamais!
Recommended Posts