1. Список говнокодов пользователя hakimovis

    Всего: 5

  2. Ruby / Говнокод #16403

    −149

    1. 1
    2. 2
    3. 3
    def read_file(file)
        File.read(File.join(File.expand_path(File.dirname(__FILE__)), file))
      end

    Оставлю так, ради смеха.

    hakimovis, 22 Июля 2014

    Комментарии (19)
  3. PHP / Говнокод #8467

    +151

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    // $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 простенькую штуку, глаза на лоб полезли от того как там делаются элементарнейшие вещи. Скажите, что все можно сделать проще и я просто плохо читал документацию!

    hakimovis, 10 Ноября 2011

    Комментарии (34)
  4. Python / Говнокод #8359

    −90

    1. 1
    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, но в правильной кодировке) Еще бы от скобочек избавиться при вызове.

    hakimovis, 30 Октября 2011

    Комментарии (17)
  5. Python / Говнокод #7506

    −86

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    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

    Вместо того, чтобы писать несколько разных функций, решил сделать одну, которая почти во всех случаях вызывает сама себя с разными параметрами.

    hakimovis, 10 Августа 2011

    Комментарии (13)
  6. Python / Говнокод #5354

    −90

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    #! /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‚ак что не пинайте сильно)

    hakimovis, 23 Января 2011

    Комментарии (3)