1. 1C / Говнокод #20224

    −16

    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
    Небольшой гуру-тест по сопровождению типовых конфигураций.
    
    
    Есть запрос, который получает себестоимость и выручку документа возврата товара от клиента (процедура ТекстЗапросаТаблицаВыручкаИСебестоимостьПродаж в модуле менеджера документа):
    
    
    ТекстЗапроса = "
    ....
     | - ВидыЗапасов.СуммаСНДСУпр          КАК СуммаВыручки,
    ....
     | ВЫБОР КОГДА ВидыЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар)
     |  ИЛИ ВидыЗапасов.ДокументРеализации = НЕОПРЕДЕЛЕНО
     | ТОГДА
     |  - ВидыЗапасов.СуммаСНДСУпр
     | ИНАЧЕ
     |  0
     | КОНЕЦ КАК Себестоимость,
    
    
    Для удобства сопровождения текст запроса меняется далее в коде, а не в самом запросе, в конструкции вида:
    
    
    ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "... что искать ...",
    ".. на что заменять...");
    
    
    Нужно заменить использование ВидыЗапасов.СуммаСНДСУпр так, чтобы СуммаВыручки не изменилась, а Себестоимость изменилась, допустим на число 666 (для гуру-теста).
    
    
    Это частая задача для УТ11, т.к. там не реализована возможность конкретного указания себестоимости, если возврат осущесвлятся без документа продажи (например, за прошлые периоды, до ввода начальных остатков), в этих случаях УТ11 принимает себестоимость возврата, равную цене продажи, а это не совсем правильно.
    
    
    В этом случае есть один хитрый трюк, чтобы без использования регулярных выражений добиться замены себестоимости на заданное число. Вопрос - как? Думаем.

    Немножко обо мне:
    Действующий пикапер. Честно соблазнил 174 женщин и купил 42 феи (на август 2015)
    Использует функциональную 5 бальную шкалу оценок женщин.
    Известный 1сник с кличкой Гений 1С. Получает от 120 тыщ.
    Изобрел фонд «Секс за ваши» - занимаюсь сексом с проститутками за счет пожертвований фанатов.
    Изобрел Религию Дембеля.

    Genius1C, 17 Июня 2016

    Комментарии (22)
  2. PHP / Говнокод #20221

    0

    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
    # https://www.fusionticket.org/ cms для продажи билетов 
    
    // файл includes/classes/class.router.php
    
        if(is_null($action)){
          if (isset($_POST['action'])) {
            $action=$_POST['action'];
          } elseif (isset($_GET['action'])) {
            $action=$_GET['action'];
          } else
            $action=false;
        }
    
        $_REQUEST['action'] = $action;
        $_GET['action']     = $action;
        $_POST['action']    = $action;
        //echo $controller,'-',$module, '-',$action;
    
    //  теперь с class.router.php попадаем сюда includes/template/web/shop.tpl
    
    {if  $smarty.post.action eq 'resendpassword'}
       {$user->forgot_password_f($smarty.post.email)}
    {/if}
    
    {if $smarty.request.action eq 'login' and $smarty.request.type != 'block'}
    	{include file="user_login.tpl"}
    
    {elseif $smarty.request.action eq 'register'}
      {if $smarty.request.register_user}
        {user->register ismember=true data=$smarty.post secure='user_nospam' login=true}
        {assign var='user_data' value=$smarty.post}
        {if $user_errors}
          {include file="user_register.tpl" ManualRegister=true}
        {else}
          {include file="user_activate.tpl"}
        {/if}
      {else}
        {include file="user_register.tpl" ManualRegister=true}
      {/if}
    
    {elseif $smarty.request.action eq 'activate'}
      {include file="user_activate.tpl"}
    
    {elseif $smarty.request.action eq 'resend_activation'}
      {include file="resend_activation.tpl"}
    {elseif $smarty.get.action eq "remove"}
      {$cart->remove_item_f($smarty.get.event_id,$smarty.get.cat_id,$smarty.get.item)}
      {include file="cart_view.tpl"}
    
    {elseif $smarty.request.action eq "addtocart"}
      {if $smarty.post.place}
        {assign var='last_item' value=$cart->add_item_f($smarty.post.event_id, $smarty.post.category_id, $smarty.post.place, $smarty.post.discount, 'mode_web')}
      {else}
        {assign var='last_item' value=$cart->add_item_f($smarty.post.event_id, $smarty.post.category_id, $smarty.post.places, $smarty.post.discount, 'mode_web')}
      {/if}
      {if $last_item}
        {redirect url="index.php?action=view_cart&event_id={$smarty.post.event_id}"}
      {else}
        {include file="event_ordering.tpl"}
      {/if}
    {elseif $smarty.request.action eq "buy"}
      {include file="event_ordering.tpl"}
     
    и т. д.  250 строк.

    https://www.fusionticket.org/.

    konmado, 17 Июня 2016

    Комментарии (0)
  3. C++ / Говнокод #20220

    +5

    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
    template<typename T>
    T* sanitize(T* p)
    {
        return reinterpret_cast<T*>(
          reinterpret_cast<uintptr_t>(p) & ~(alignof(T)-1));
    }
    
    template<typename T>
    constexpr size_t avaliable_width()
    {
      	switch(alignof(T))
        {
          case 1: return 0;
          case 2: return 1;
          case 4: return 2;
          case 8: return 3;
          case 16: return 4;
          case 32: return 5;
          case 64: return 6;
          case 128: return 7;
          case 256: return 8;
          default: return 0;
        }
    }
    
    template<size_t bit, typename T>
    T* set_tag(T* p, bool tagged = true)
    {
      	static_assert(bit < avaliable_width<T>(), "bad_width");
    
    	if(tagged) {
         	return reinterpret_cast<T*>(
            	reinterpret_cast<uintptr_t>(p) | 1 << bit); 
        }
      	return reinterpret_cast<T*>(
          	reinterpret_cast<uintptr_t>(p) & ~(uintptr_t(1) << bit));
    }
    
    template<size_t bit, typename T>
    bool get_tag(T* p)
    {
      	static_assert(bit < avaliable_width<T>(), "bad_width");
      	return reinterpret_cast<uintptr_t>(p) >> bit & 1;
    }

    Младшие биты указателей на выравненные типы всегда нулевые. Из за этого (по формуле Шеннона) указатель несёт в себе меньше информации, оставаясь того же размера. Битоёбов это расстраивает.

    Soul_re@ver, 16 Июня 2016

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

    +7

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    <?php
      $ip=$_SERVER[REMOTE_ADDR];
      if ($_GET['hash']="ae2b1fca515949e5d54fb22b8ed95575") {
        file_put_contents("deviceupdate.log","DATE: ".date("Y-m-d H:i:s")." IP: ".$ip."\n",FILE_APPEND | LOCK_EX);
        file_put_contents("homeip.log",$ip,LOCK_EX);
        print "DATE: ".date("Y-m-d H:i:s")." IP: ".$ip;
      }
    ?>

    http://wiki.mikrotik.com/wiki/Dynamic_DNS_on_private_DNS_server_(Route r_OS,_Bind,_Apache,_and_Shell_script)

    > Web server reads the IP from the router and if the hash is ok, it writes the IP into two files in the same folder
    > if the hash is ok

    Ок.

    zombiee, 16 Июня 2016

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

    −1

    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
    public function getRegProductDetails($product_id = '', $status = 'yes'){
    
                $this->db->select('*');
    
                if ($product_id != '') {
    
                    $this->db->where('product_id', $product_id);
    
                }
    
                if ($status != '') {
    
                    $this->db->where('active', $status);
    
                }
    
                $query = $this->db->get('registration_package');
    
                foreach ($query->result_array() as $row) {
    
                    $product_details[] = $row;
    
                }
    
                return $product_details;

    Работаю с коммерческой системой, писали Индусы. У меня 100 Мб анекдотов в исходном коде. В БД есть столбец статус, они туда пишут статус yes OR no. И проверка везде тоже идет через строку. а выборку делают вот такой функцией. Зачем тут проверять статус на пустоту? В других подобных функциях встречаю RETURN в форейче

    traney, 16 Июня 2016

    Комментарии (3)
  6. Java / Говнокод #20214

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    PreparedStatement ps = conn.prepareStatement(
    					"SELECT * FROM Task;");
    			ResultSet rs = ps.executeQuery();
    			while (rs.next()) {
    				logger.info(rs.getInt(1));
    				this.projects = new ProjectCollection.Project[rs.getInt(1)];			
    			}

    rs.getInt(1) - индексный столбец

    arny, 16 Июня 2016

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

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if(substr($_POST['id'], -3) == '_id'){
    	echo mpql(mpqw("SELECT name FROM {$conf['db']['prefix']}{$arg['modpath']}_". substr($_POST['id'], 0, strlen($_POST['id'])-3). " WHERE id=". (int)$_POST['value']), 0, 'name');
    }else{
    	echo $_POST['value'];
    }

    https://github.com/mpak2/mpak.su/blob/master/modules/users/edit.свойства.php

    3_dar, 15 Июня 2016

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

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    #define ROOSTER "?"
    #define CONDENSED_MILK "."
    
    string kokoko = string(ROOSTER, 1) + string(CONDENSED_MILK);

    ЧТО блять мешает написать
    string kudkudah(".?");

    ЧТО?

    codemonkey, 15 Июня 2016

    Комментарии (18)
  9. 1C / Говнокод #20209

    −97

    1. 1
    НачисляетсяВЦеломЗаМесяц = СпособРасчета = Перечисления.СпособыРасчетаОплатыТруда.ФиксированнойСуммой ИЛИ БазовыйПериодПрошлыйМесяц;

    Типовая конфигурация ЗКБУ, увидев такой код немного смутило или лыжи не едут или ...

    rus_LAN, 15 Июня 2016

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

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    public static void Test(__arglist)
    {
    
    }
    public static void Text2(ref string str)
    {
    	var reftype = __reftype(new TypedReference());
    	var refvalue =  __refvalue(new TypedReference(), string) = "string";
    	var makeref = __makeref(str);
    }

    Ты не поверишь, но это реально C#

    dm_fomenok, 15 Июня 2016

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