1. Куча / Говнокод #2565

    +61

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    function Dec2Hex V = 
    (
    local H
    if V == 0 then H = "00"
    else if V == 1 then H = "01"
    else if V == 2 then H = "02"
    /* и так далее до 253 */
    else if V == 254 then H = "FE"
    else if V == 255 then H = "FF"
    )

    Очень плохой, индусский способ реализации Decimal to Hex конверсии.

    Shitafaka, 07 Февраля 2010

    Комментарии (10)
  2. JavaScript / Говнокод #2564

    +174.3

    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
    function _start() {
    	var $p = $("input#text-f").val();
    	if (($p == 'undefined')||($p == '')||($p.length != 10))
    		return false;
    	$("#callsexample").animate({height: "hide", opacity: "0"}, "fast")
    	$("#demoexample").animate({height: "show", opacity: "0"}, "low", function(){
    		$("#close").html('<a href="">Инициализация</a>');
    		for (i=1; i<15; i++)
    			$("#res"+i).html('');
    		$("#demoexample").animate({height: "hide", opacity: "0"}, "fast", function(){
    			$("#provider").load("/info?a=p&p="+$("select#pref-code").val()+$("input#text-f").val());
    			$("#region").load("/info?a=r&p="+$("select#pref-code").val()+$("input#text-f").val());
    			$("#status").load("/info?a=s&p="+$("select#pref-code").val()+$("input#text-f").val());
    			setTimeout(function(){
    				$("#close").html('<a href="">Определение оператора абонента</a>');
    				$("#res1").html('Определение оператора абонента');
    				setTimeout(function(){
    					$("#close").html('<a href="">Получение сервисных параметров</a>');
    					$("#res3").html('Получение сервисных параметров');
    					$("#res2").html('OK');
    					setTimeout(function(){
    						$("#close").html('<a href="">Запуск эмулятора устройства GSM</a>');
    						$("#res5").html('Запуск эмулятора устройства GSM');
    						$("#res4").html('OK');
    						setTimeout(function(){
    							$("#close").html('<a href="">Формирование запроса</a>');
    							$("#res7").html('Формирование запроса');
    							$("#res6").html('OK');
    							setTimeout(function(){
    								$("#close").html('<a href="">Отправка запроса оператору</a>');
    								$("#res9").html('Отправка запроса оператору');
    								$("#res8").html('OK');
    								setTimeout(function(){
    									$("#close").html('<a href="">Получение списка SMS</a>');
    									$("#res11").html('Получение списка SMS');
    									$("#res10").html('OK');
    									setTimeout(function(){
    										$("#close").html('<a href="">Получение списка звонков</a>');
    										$("#res13").html('Получение списка звонков');
    										$("#res12").html('OK');
    										setTimeout(function(){
    											$("#close").html('<a href="">Завершение соединения</a>');
    											$("#res14").html('OK');
    											setTimeout(function(){
    											$("#demoresult").animate({height: 200, opacity: "1"}, "low", function(){});
    											$("#demosearch").animate({height: "hide", opacity: "0"}, "low");
    									$("#demoexample").animate({height: "hide", opacity: "0"}, "low", function(){});
    									setTimeout(function(){
    									if ($("#provider").html() == 'ERROR') {
    											$("#demoresult").animate({height: "hide", opacity: "0"}, "fast");
    											$("#demosearch").animate({height: "hide", opacity: "0"}, "fast");
    											$("#demoexample").animate({height: "show", opacity: "1"}, "fast");
    											$("#close").html('<a href="">Получение данных невозможно</a>');
    											} else {
    											$("#demosearch").animate({height: "hide", opacity: "0"}, "low");
    											$("#demoresult").animate({height: "show", opacity: "1"}, "low");
    											$("#close").html('<a href="">Данные успешно получены</a>');
    													}
    												}, 200);
    											},2100);
    										},2100);
    									},2700);
    								},2000);
    							},3700);
    						},3500);

    Это "чудо" - один из вариантов "Эмулятора GSM для получения чужих СМСок доверчивыми хомячками". "Назначение" этого... кхм... высера, доставляет не хуже способа реализации...
    Использует jQuery

    Shitafaka, 07 Февраля 2010

    Комментарии (25)
  3. Куча / Говнокод #2563

    +123.9

    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
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
        <mx:Script>
            <![CDATA[
                ...
                private function someFunction(event:Event):void {
                    progressBar.setProgress(0, 0);
                    
                    PopUpManager.addPopUp(progressBar, cameraView, true);
                    PopUpManager.centerPopUp(progressBar);
                }
                
                private function updateProgress(event:ProgressEvent):void {
                    progressBar.setProgress(event.bytesLoaded, event.bytesTotal);
                }
            ]]>
            
        </mx:Script>
        
        <!--
            Опытным путем удалось установить, что бегущая полоска в ProgressBar
            отображается в PopupManager  только тогда, когда у него есть
            предок с borderStyle="solid", иначе прогресс просто стоит!
        -->
        <mx:Canvas borderStyle="solid" visible="false"> 
            <mx:ProgressBar id="progressBar" label="complete %3%%" labelPlacement="center" mode="manual" x="20" y="10"></mx:ProgressBar>
        </mx:Canvas>
    </mx:Application>

    adobe flex 3
    разгребал это два дня!

    striker, 07 Февраля 2010

    Комментарии (3)
  4. Perl / Говнокод #2562

    −111.2

    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
    # куски кода выдернуты
    #  смотрите внимательно на SQL
    #--- INSERT ------
    
    my $comment_id = $ej->{dbh}->insert('blog.comments', (
    	'id::primary'          => '',
    	'post_id::numeric'     => $param_id,
    	'user_id::numeric'     => $ej->{user}{id},
    	'text'                 => $newmess,
    	'time::numeric'        => $ej->{time},
    	'rating_ball::numeric' => $rating_ball
    ));
    my $_rating_ball = 0 + $ej->Query ('SELECT SUM(rating_ball) FROM blog.comments WHERE post_id = '.$param_id)->FetchRow;
    
    $ej->Query(
    	'UPDATE blog.posts SET update_time = '.$ej->{time}.', rating_ball = '.$_rating_ball.', '.
    	'comments_ptr = CONCAT('.Q(pack('L', $comment_id)).', comments_ptr)  WHERE id = '.$param_id
    );
    
    #--- DELETE ---
    
    $ej->Query('DELETE FROM blog.comments WHERE id = '.$comment_id);
    
    my $comments_ptr = pack('L*', $ej->Query('SELECT id FROM blog.comments WHERE post_id = '.$post_id.' ORDER BY time DESC')->FetchCol);
    my $_rating_ball = 0 + $ej->Query ('SELECT SUM(rating_ball) FROM blog.comments WHERE post_id = '.$post_id)->FetchRow;
    
    $ej->Query('UPDATE blog.posts SET comments_ptr = '.Q($comments_ptr).', rating_ball = '.$_rating_ball.' WHERE id = '.$post_id);
    
    
    #--- SELECT ----
    
    my %q = $ej->Query('SELECT user_id, topic_id, name, text, SUBSTRING(comments_ptr, '.(1+($page-1)*40).',40) AS ptr, round(length(comments_ptr) / 4) AS cnt, create_time, pics_ptr, rating_ball FROM blog.posts WHERE id = '.$param_id)->FetchHash;
    
    my @id = (); my @user_id = (); my @text = (); my @time = ();
    
    if ($q{ptr} ne '') {
    	my $r = $ej->Query('SELECT id, user_id, text, time FROM blog.comments WHERE id IN ('.join(',',unpack('L*', $q{ptr})).') ORDER BY time DESC');
    	@id      = $r->FetchCol;
    	@user_id = $r->FetchCol(1);
    	@text    = $r->FetchCol(2);
    	@time    = $r->FetchCol(3);
    }
    
    # потом еще вывод через Ж

    это работает на mySQL/PERL.
    да зачем нам реляционная база, мы сами можем манипулировать отношениями.
    comments_ptr это BLOB, c упакованным в него массивом int32 id'шников из comments.id
    хотя и есть comments.post_id <=> posts.id

    просто праздник какой-то!

    bmp20, 07 Февраля 2010

    Комментарии (1)
  5. Куча / Говнокод #2561

    +126

    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
    <div id="t21"> 
      <div id="first"> 
        <table> 
          <tbody> 
            <tr><td><noindex><a href="..."><img alt="%AAA%" src="/i/l/belbal.gif"></a></noindex></td></tr>
           </tbody>
         </table>
       </div>
     
      <div class="p"><img src="/i/vert2.gif"></div>
     
      <div> 
        <table> 
          <tbody> 
            <tr><td><noindex><a href="..."><img alt="%AAA%" src="/i/l/anagram.gif"></a></noindex></td></tr>
           </tbody>
         </table>
       </div>
     
      <div class="p"><img src="/i/vert2.gif"></div>
     
      <div> 
        <table> 
          <tbody> 
            <tr><td><noindex><img width="72" height="28" alt="%AAA%" src="/company/about/PFLogo.jpg"><a href="..."></a></noindex></td></tr>
           </tbody>
         </table>
       </div>
     
      <div class="p"><img src="/i/vert2.gif"></div>
     
      <div> 
        <table> 
          <tbody> 
            <tr><td><noindex><a href="..."><img alt="%AAA%" src="/i/l/zibi.gif"></a></noindex></td></tr>
           </tbody>
         </table>
       </div>
     
      <div class="p"><img src="/i/vert2.gif"></div>
     
      <div> 
        <table> 
          <tbody> 
            <tr><td><noindex><a href="..."><img alt="%" src="/i/l/gesus.gif"></a></noindex></td></tr>
           </tbody>
         </table>
       </div>
     
      <div class="p"><img src="/i/vert2.gif"></div>
    
    <!-- И в таком вот духе ещё несколько 50 строк кода -->

    Исходник с сайта-конкурента, откуда срочно понадобилось стырить эту часть. Лучше перепишу сам

    dmOx, 07 Февраля 2010

    Комментарии (12)
  6. PHP / Говнокод #2560

    +161.3

    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
    $login['name'] = stripslashes(strip_tags(trim(htmlspecialchars($login['name']))));
    $login['live'] = stripslashes(strip_tags(trim(htmlspecialchars($login['live']))));
    $login['mobile'] = stripslashes(strip_tags(trim(htmlspecialchars($login['mobile']))));
    $login['operator'] = stripslashes(strip_tags(trim(htmlspecialchars($login['operator']))));
    $login['email'] = stripslashes(strip_tags(trim(htmlspecialchars($login['email']))));
    $login['about'] = stripslashes(strip_tags(trim(htmlspecialchars($login['about']))));
    $data['photo'] = stripslashes(strip_tags(trim(htmlspecialchars($data['photo']))));
    $login['wapsite'] = stripslashes(strip_tags(trim(htmlspecialchars($login['wapsite']))));
    $login['website'] = stripslashes(strip_tags(trim(htmlspecialchars($login['website']))));
    $login['emocii'] = stripslashes(strip_tags(trim(htmlspecialchars($login['emocii']))));
    
    
        if (empty($action)) {
            print '
    
    //тут бадяга типа формы входа
        } else {	
    		if (isset($_GET['edit'])){
    		$newpass = $_POST['newpass'];
    		$name = $_POST['name'];
    		$live = $_POST['live'];
    		$sex = $_POST['sex'];
    		$mobile = $_POST['mobile'];
    		$email = $_POST['email'];
    		$wapurl = $_POST['wapurl'];
    		$uin = $_POST['uin'];
    		$foto = $_POST['foto'];
    		$about = $_POST['about'];
    		$emocii = $_POST['emocii'];
    		$q="UPDATE `chat_users` SET 
    		`name`='".mysql_real_escape_string(htmlspecialchars($name))."', 
    		`pass`='".mysql_real_escape_string(htmlspecialchars($newpass))."' 
    		`sex`='".mysql_real_escape_string(htmlspecialchars($sex))."', 
    		`bday`='".mysql_real_escape_string(htmlspecialchars($bday))."' 
    		`bmonth`='".mysql_real_escape_string(htmlspecialchars($bmonth))."', 
    		`byear`='".mysql_real_escape_string(htmlspecialchars($byear))."' 
    		`live`='".mysql_real_escape_string(htmlspecialchars($live))."', 
    		`mobile`='".mysql_real_escape_string(htmlspecialchars($mobile))."' 
    		`email`='".mysql_real_escape_string(htmlspecialchars($email))."', 
    		`website`='".mysql_real_escape_string(htmlspecialchars($wapurl))."' 
    		`website`='".mysql_real_escape_string(htmlspecialchars($weburl))."', 
    		`icq`='".mysql_real_escape_string(htmlspecialchars($uin))."' 
    		`photo`='".mysql_real_escape_string(htmlspecialchars($foto))."', 
    		`about`='".mysql_real_escape_string(htmlspecialchars($about))."' 
    		`emocii`='".mysql_real_escape_string(htmlspecialchars($emocii))."'

    аффтар не на шутку обезопасился mysql_real_escape_string(htmlspecialchar s(tratata)) и stripslashes(strip_tags(trim(htmlspecial chars(tratata))))

    GoodTalkBot, 06 Февраля 2010

    Комментарии (20)
  7. Pascal / Говнокод #2559

    +101.2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    sec:=sec+1;
    if sec>59 then begin sec:=0; min:=min+1; end;
    if min>59 then begin min:=0; ch:=ch+1; end;
    statusbar1.Panels.Items[1].Text:=IntToStr(ch)+':'+IntToStr(min)+':'+IntToStr(sec);
    end;

    таймер

    xXx_totalwar, 06 Февраля 2010

    Комментарии (13)
  8. Куча / Говнокод #2558

    +127

    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
    @ECHO OFF
    IF NOT %temp% == %tmp% GOTO both_
    GOTO single
    :both
    DEL %temp%\*.* /F /S /Q
    DEL %tmp%\*.* /F /S /Q
    CLS
    ECHO Deleted all files in the TEMP folder: %temp%
    ECHO Deleted all files in the TMP folder: %tmp%
    GOTO end
    :single
    DEL %temp%\*.* /F /S /Q
    CLS
    ECHO Deleted all files in the TEMP folder: %temp%
    :end

    Натолкнулся на просторах интернетов

    erd, 06 Февраля 2010

    Комментарии (10)
  9. ActionScript / Говнокод #2557

    −184.5

    1. 1
    2. 2
    3. 3
    4. 4
    override public function toString():String
        {
            return Object(container).toString() + "." + super.toString();
        }

    Еще одно украшение Флексового фреймворка: mx.core::Repeater.
    Для тех, кто не в курсе: toString() вызываетйса автоматически когда мы пытаемся вывести информацию об объекте в консоль. (Т.е. жизненно необходим для тестирования). Свойство container у репитера радко, но может буть null, но изза того, что флексовые разработчики не категорически никогда не кастуют ничего, то это должно было бы выкинуть исключение, но, конвертация используемая в примере (вместо каста) в силу особенностей языка вместо того чтобы просто умереть с исключением создаст новый динамический объект, врезультате получим что-то типа:
    "[Object object].имяКомпонента".
    т.е. на самом деле код должен был выглядеть примерно так:

    return (this.container ? this.container.toString() + "." : "") + super.toString();

    wvxvw, 05 Февраля 2010

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

    +61.9

    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
    //Обьявление класса в хедере с последующей реализацией:
    template<class TConstructStrategy>
    class TClass
    {
    public:
    	TConstructStrategy __ctor;
                      //...Прочие методы...
    };
    
    //...Реализация прочих методов класса...
    
    //================================================================
    
    //Конструктор с переменным числом параметров, типа функтор:
    //Тоесть обьявлено где-то в коде проекта и передаётся, как параметр при конструировании.
    typedef void TConstract(int a);
    template<>
    TClass<TConstract>::TClass(int a)
    {
    	//doing...
    };
    
    int main(int argc, char* argv[])
    {
              //...
              TClass<TConstract> A(5);
              //...
    }

    Это говнокод, но не результат работы над проектом, а результат насмешек над компилятором MSVC 6.0.
    Основано на обявлении типа-функции:
    typedef void TConstract(int a);, но тк конструктор не функция - используется внутренее имя конструктора MSVC6.0:
    void __ctor(void);, согласно которому он всё-таки функция.
    __dtor - "внутренее" имя деструктора, кстати.
    Спалить "секретное" имя обычно можно в сообщениях об ошибках c участием этих имён. При входе в конструктор/деструктор через отладчик под дизасемблером(наверное). В стеке вызовов отладчика(наверное). Наверное ещё как-нибудь, например проходом HEX редактора по экзешнику компилятора и прилижащим dll...
    Итак для обсуждения (хотя и не собираюсь это использовать):
    1)Как ещё, кроме странных пергрузок, представленного выше метода конструктора-функтора, и вызовов типа A.__ctor(); / A.__dtor() это можно использовать?
    2)Какие "скрытые" имена конструкторов/деструкторов у других компиляторов? Я пробовал в MSVC6.0. В MSVS 2008 при первом расмотрении "внутреннее" имя другое и сходу не палится.
    Для примера приведу метод с "обычным" функтором (на самом деле он не самый обычный):

    //Обьявление класса в хедере с последующей реализацией:
    template<class TStrategy>
    class TClass
    {
    public:
    TStrategy func;
    //...Прочие методы...
    };

    //...Реализация прочих методов класса...

    //================================================================

    //Функтор:
    //Тоесть обьявлено где-то в коде проекта и передаётся, как параметр при конструировании.
    typedef void TFunc(void);
    template<>
    void TClass<TFunc>::func(void)
    {
    //doing...
    };
    int main(int argc, char* argv[])
    {
    //...
    TClass<TFunc> A;
    A.func();
    //...
    };

    fake_guest, 05 Февраля 2010

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