1. Python / Говнокод #7779

    −182

    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
    HOME_DIR = "/home/user"
    
    LAST_DIR = HOME_DIR + "/.habralast"
    HTML_DIR = HOME_DIR + "/.habr.html"
    SHOW_FIRST_TIME = 5
    n = 1
    new_addr = 0
    count = 0
    
    if os.path.isfile(LAST_DIR):
    	fp = open(LAST_DIR, "r")
    	topic1 = fp.readline()
    	fp.close()
    	last_existed = 1
    else:
    	fp = open(LAST_DIR, "w")
    	topic1 = ""
    	fp.close()
    	last_existed = 0
    
    while(1):
    	if n == 1:
    		url = "habrahabr.ru"
    	else: url = "habrahabr.ru/page" + str(n) + "/"
    	wget = "wget " + url + " -O " + HTML_DIR
    	try:
    		os.system(wget)
    	except:
    		print "Cannot connect to server"
    		sys.exit()
    
    	index = open(HTML_DIR, "r")
    	s = '				  <a href="http://habrahabr.ru/'
    	ss = '						<a'
    	sss = '			<div class="published"><!-- Дата в формате ISO пихается в title -->'
    
    	for i in range(2000):
    		line = index.readline()
    		if s in line:
    			blog_s = line.find('">')
    			blog_e = line.find("</a>")
    			blog = line[blog_s+2:blog_e]
    
    			for j in range(50):
    				line = index.readline()
    				if ss in line:
    					topic_s = line.find('">')
    					topic_e = line.find("</a>")
    					topic = line[topic_s+2:topic_e]
    					if topic.find("</span>") != -1:
    						topic = topic[topic.find("</span>")+7:]
    					if topic != topic1:
    						if new_addr == 0:
    							fp = open(LAST_DIR, "w")
    							fp.write(topic)
    							fp.close()
    							new_addr = 1
    						print "Blog:\t" + blog
    						print "Topic:\t" + topic
    
    						for k in range(100):
    							line = index.readline()
    							if sss in line:
    								line = index.readline()
    								time_s = line.find("<span>")
    								time_e = line.find("</span>")
    								date = line[time_s+6:time_e]
    								print "Date:\t" + date + "\n"
    								notify = "notify-send 'Habrahabr.ru: " + blog + "' '" + topic + "\n<i>" + date + "</i>'"
    								os.system(notify)
    								count += 1
    								if count == SHOW_FIRST_TIME and last_existed == 0:
    									os.system("rm -f " + HTML_DIR)
    									sys.exit()
    								break
    						break
    					else:
    						os.system("rm -f " + HTML_DIR)
    						sys.exit()
    	n += 1
    	index.close()

    http://habrahabr.ru/blogs/python/127806/
    Мне нравится, когда программа/код полностью своя… понимаешь назначение каждой буквы и почему решение именно такое. В данном топике хочу предложить свой парсер топиков Хабрахабра на Python без сторонних библиотек.
    При появлении нового топика — всплывающее окошко сообщает об этом.

    alexoy, 05 Сентября 2011

    Комментарии (14)
  2. Куча / Говнокод #7777

    +126

    good luck, suckers!

    Lure Of Chaos, 05 Сентября 2011

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

    +146

    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
    function define_week_start_and_end($what)
    {
            $time_stamp = time();
            $cur_day = getdate($time_stamp); 
            $month_day = $cur_day['mday'];        
            $month_num = $cur_day['mon'];        
            $year_num = $cur_day['year'];        
            $day_num = $cur_day['wday'];
            if ($day_num!=0)
            {
                    $week_start = $month_day-$day_num+1;
            }
            else
            {
                    $week_start = $month_day-6;
            }
            $week_end = $week_start+6;
            $week_start_month_num = $month_num;
            $week_end_month_num = $month_num;
            $week_start_year_num = $year_num;
            $week_end_year_num = $year_num;
            
            if ($week_start < 1)
            {
                    if ($month_num == 1)
                    {
                            $week_start_year_num--;
                            $week_start_month_num = 12;
                    }
                    else
                    {
                            $week_start_month_num--;
                    }
                    $last_day_in_previous_month = 31;
                    while (!checkdate ($week_start_month_num, $last_day_in_previous_month, $week_start_year_num))
                    {
                            $last_day_in_previous_month--;
                    }
                    $week_start += $last_day_in_previous_month;
            }
    
            $last_day_in_month = 31;
            while (!checkdate ($week_start_month_num, $last_day_in_month, $week_start_year_num))
            {
                    $last_day_in_month--;
            }
    
            if ($week_end > $last_day_in_month)
            {
                    if ($month_num == 12)
                    {
                            $week_end_year_num++;
                            $week_end_month_num = 1;
                    }
                    else
                    {
                            $week_end_month_num++;
                    }
                    $week_end = $week_end-$last_day_in_month;
            }
    
            $week_start_time_stamp = gmmktime (0, 0, 0, $week_start_month_num, $week_start, $week_start_year_num);
            $week_end_time_stamp = gmmktime (23, 59, 59,  $week_end_month_num, $week_end, $week_end_year_num);
    
            if ($what == "start")
            {
                    return $week_start_time_stamp;
            }
            else if ($what == "end")
            {
                    return $week_end_time_stamp;
            }
            return NULL;
    }

    определение конца недели

    Lure Of Chaos, 05 Сентября 2011

    Комментарии (0)
  4. PHP / Говнокод #7775

    +147

    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
    function ckos() {
            $so = $_SERVER['HTTP_USER_AGENT'];
            $windowsxp = preg_match("/windows nt 5.1/i", $so);
            $windowsxp2 = preg_match("/windows xp/i", $so);
            $linux = preg_match("/linux/i", $so);
            $windowsme = preg_match("/win 9x 4.90/i", $so);
            $windowsme2 = preg_match("/windows me/i", $so);
            $windows2k = preg_match("/windows nt 5.0/i", $so);
            $windows2kb = preg_match("/windows 2000/i", $so);
            $windowsnt = preg_match("/windows nt 3.1/i", $so);
            $windowsnt2 = preg_match("/windows nt 3.5.0/i", $so);
            $windowsnt3 = preg_match("/windows nt 3.5.1/i", $so);
            $windowsnt4 = preg_match("/windows nt 4.0/i", $so);
            $windows98 = preg_match("/windows 98/i", $so);
            $windows95 = preg_match("/windows 95/i", $so);
            if ($windowsxp == 1 or $windowsxp2 == 1) {
            $sys = "Windows XP";
            } else if ($linux == 1) {
            $sys = "Linux";
            } else if ($windowsme == 1 or $windowsme2 == 1) {
            $sys = "Windows ME";
            } else if ($windows2k == 1 or $windows2kb == 1) {
            $sys = "Windows 2000";
            } else if ($windowsnt == 1 or $windowsnt2 == 1 or $windowsnt3 == 1 or $windowsnt4 == 1) {
            $sys = "Windows NT";
            } else if ($windows98 == 1 and $windowsme != 1) {
            $sys = "Windows 98";
            } else if ($windows95 == 1) {
            $sys = "Windows 95";
            } else {
            $sys = "Not identified";
            }
            return($sys);
    }

    вариация на тему броузеросниффера

    Lure Of Chaos, 05 Сентября 2011

    Комментарии (0)
  5. Си / Говнокод #7774

    +107

    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
    char *getcwd(char *buf, size_t size)
    {
    	if (!buf)
    	{
    		errno = EFAULT;
    		return NULL;
    	}
    	if (size < 2)
    	{
    		errno = ERANGE;
    		return NULL;
    	}
    	buf[0] = '.';
    	buf[1] = '\0';
    	return buf;
    }

    -- Где мы находимся, Сэр?
    -- В корзине воздушного шара.

    P.S. Ссылка на коммит - http://git.altlinux.org/people/ldv/packages/?p=girar.git;a=commit;h=3ff0ce7b00907ba1 dce6406f6

    raorn, 05 Сентября 2011

    Комментарии (8)
  6. C# / Говнокод #7773

    +976

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public static bool MegaDispose(this IDisposable thіs)
    {
      if (thіs != null)
      {
        thіs.Dispose();
        return true;
      }
      return false;
    }

    CPPGovno, 05 Сентября 2011

    Комментарии (16)
  7. PHP / Говнокод #7772

    +170

    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
    <?php
    // $Id: post.php, v 1.12 2010/08/09 11:42:55 dries Exp $
    
    /**
     * Description of post
     *		Sending Email
     *
     * @author Unknown
     */
    class post {
    
    	public function send ( $email, $subject, $message, $addHeaders, $addParameters ) {
    
    		return mail($email, $subject, $message, $addHeaders, $addParameters);
    	}
    }
    ?>

    Цит: "Говорят, что сначала была нарисована какая-то картина, а потом Малевич закрасил ее в черный цвет".
    Ну мы ХОТЕЛИ нарисовать. Очень очень...

    istem, 05 Сентября 2011

    Комментарии (10)
  8. Java / Говнокод #7771

    +84

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    List<SomeClass> someClassList = new ArrayList<SomeClass>();
    <...>
    int i = 0;
    for (SomeClass someClassVariable: someClassList) {
        doSomething(someClassList().get(i).getText(), someClassList().get(i).getId);
        ++i;
    }

    Art, 05 Сентября 2011

    Комментарии (5)
  9. C++ / Говнокод #7770

    +175

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if (l1->Initilalize("4D353141",true))
    	StatusBarBottom->Panels->Items[2]->Text="Плата XXX загружена";
    else StatusBarBottom->Panels->Items[2]->Text="Не обнаружена плата L791, ном. 4D353141";
    
    if (l1->Initilalize("4D353129",true))
    	StatusBarBottom->Panels->Items[2]->Text="Платы XXX загружены";
    else StatusBarBottom->Panels->Items[2]->Text="Не обнаружена плата XXX, ном. 4D353129";
    
    if (l1->Initilalize("4D353129",true) && l1->Initilalize("4D353129",true) )
    	StatusBarBottom->Panels->Items[2]->Text="Загружены две платы XXX";

    Копипаста - враг программиста. Чувак инициализировал одну плату 4 раза!!!

    phys-tech, 05 Сентября 2011

    Комментарии (16)
  10. Java / Говнокод #7769

    +86

    1. 1
    //while(client.isProtected());           // очень важно подождать

    Очень важно, но нам пофигу

    exeed, 05 Сентября 2011

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