- 1
- 2
- 3
def read_file(file)
File.read(File.join(File.expand_path(File.dirname(__FILE__)), file))
end
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
Всего: 5
−149
def read_file(file)
File.read(File.join(File.expand_path(File.dirname(__FILE__)), file))
end
Оставлю так, ради смеха.
+151
// $reg_date = "12.12.2007 15:41";
$this->reg_date = strptime($reg_date, "%d.%m.%Y %H:%M");
// и теперь обратно. Казалось бы, все просто, ан нет!
$rd = $this->reg_date;
$reg_date = mktime($rd['tm_hour'], $rd['tm_min'], 0, $rd['tm_mon']+1, $rd['tm_mday'], 1900+$rd['tm_year']); //как это???
$reg_date = strftime("%d.%m.%Y %H:%M", $reg_date);
// нормально, у strptime и strftime порядок аргументов разный
// $r_date == "12.12.2007 15:41"
Попытался написать на PHP простенькую штуку, глаза на лоб полезли от того как там делаются элементарнейшие вещи. Скажите, что все можно сделать проще и я просто плохо читал документацию!
−90
def mprint(*args): print (reduce(lambda a,b: a+b, [u"{"+str(i)+"} " for i in range(len(args))])).format(*args).encode('utf-8')
Делает то же самое, что и print, но в правильной кодировке) Еще бы от скобочек избавиться при вызове.
−86
def MonthsListGen(*args, **kwargs):
from datetime import datetime
if kwargs.has_key('month') and kwargs.has_key('year'):
return "%s-%s"%(kwargs['year'], "0%d"%kwargs['month'] if kwargs['month']<10 else str(kwargs['month']))
if kwargs.has_key('date'): return MonthsListGen(year = kwargs['date'].year, month = kwargs['date'].month)
if kwargs.has_key('decodeName'): return MONTH_NAMES[int(kwargs['decodeName'].split('-')[1])]
if kwargs.has_key('decodeYear'): return int(kwargs['decodeYear'].split('-')[0])
if kwargs.has_key('startDate') and kwargs.has_key('endDate'):
startDate = kwargs['startDate']
endDate = kwargs['endDate']
monthList = []
if startDate.year < endDate.year:
startDate1 = startDate
endDate1 = datetime.strptime('%d.%d.%d'%(DAYS_IN_MONTH[12], 12, startDate1.year) , '%d.%m.%Y')
monthList = MonthsListGen(startDate = startDate1, endDate = endDate1)
startDate2 = datetime.strptime('%d.%d.%d'%(1, 1, startDate1.year+1) , '%d.%m.%Y')
endDate2 = endDate
monthList += MonthsListGen(startDate = startDate2, endDate = endDate2)
return monthList
if startDate.year == endDate.year:
monthRange = range(startDate.month, endDate.month+1)
year = startDate.year
for monthNo in monthRange:
monthList.append(MonthsListGen(year = year, month = monthNo))
return monthList
return False
Вместо того, чтобы писать несколько разных функций, решил сделать одну, которая почти во всех случаях вызывает сама себя с разными параметрами.
−90
#! /usr/bin/python2.4
# -*- coding: utf-8 -*-
'''
from Tkinter import *
import subprocess
import Queue
import threading
class ifStatThreadClass(threading.Thread):
"""класс потока с ifstat"""
def __init__(self,breakCount):
global listBox
selectedIface=listBox.curselection()
if not selectedIface: selectedIface=0
self.ifaceName=listBox.get(selectedIface);
self.breakCount=breakCount
threading.Thread.__init__(self)
def run(self):
global queue
global stop_event
# рабочий тред, запускает ifstat на вывод 20 строк
global listBox
cmd="ifstat -i %s 1 %s"% (self.ifaceName, self.breakCount,)
print "Запускаю: %s"%cmd
PIPE = subprocess.PIPE
p = subprocess.Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE,
stderr=subprocess.STDOUT, close_fds=True)
#пока нет стоп-события ловим строки из стдоута
if (stop_event.is_set()): print "stop event detected!"
while not stop_event.is_set():
s = p.stdout.readline()
if not s: break
if self.breakCount==0: break
self.breakCount-=1
#кладем очередную строку в очередь
queue.put(s)
print s,
def startIfStat():
""" стартуем рабочий тред"""
global stop_event
global ifStatThread
ifStatThread = ifStatThreadClass(10)
try:
stop_event.clear()
ifStatThread.start()
except:
print "Не могу запустить поток! Может, он уже запущен?"
stop_event.set()
#вот тут стартуем
def stopWorker():
"""создаем стоп-событие"""
print("Тпырррр!")
global stop_event
global ifStatThread
# установим событие останова
stop_event.set()
def ifStatResultUpdater():
"""обновлялка текстового поля из очереди query"""
global queue
global stop_event
global ifStatResult
global ifStatThread
global emptyQueueCounter
# print("updater")
# ifStatResult.configure(text=time.strftime('%H:%M:%S'))
#только если не было стоп-события
if not stop_event.is_set():
if ifStatThread.isAlive(): print "Поток еще жив!"
else: print "Потока в живых не обнаружено"
s=''
try:
#берем из очереди строку и выводим на лейбл
print 'Что у нас в очереди? ',
s = queue.get_nowait()
print "а в очереди вот:",s
ifStatResult.configure(text=s)
except Queue.Empty:
print('ничего в очереди нету(')
if (emptyQueueCounter>2):
print('аааа.. похоже, все умерли... щас заново запущу!')
startIfStat()
emptyQueueCounter=0
emptyQueueCounter+=1
#если стоп-события не было, запускаем эту же функцию через секунду
root.after(1000,ifStatResultUpdater)
queue = Queue.Queue() #создаем очередь
emptyQueueCounter=0
Мой первый (мало-мальÑки Ñерьезный) опыт на питоне. Выводит ÑпиÑок из 3Ñ… интерфейÑов, по нажатию Старт запуÑкает тред Ñ Ð¸Ñ„Ñтатом, выводит в окошко результаты. Кривинько-коÑо, но работает)
ЕÑли еÑÑ‚ÑŒ Ð·Ð°Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ ÐºÐ°Ðº криво напиÑано и Ð¿Ñ€ÐµÐ´Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ ÐºÐ°Ðº лучше, жду комментарии.
P.S. до Ñтого пиÑал на пхÐ%BF, D1‚ак что не пинайте Ñильно)