1. PHP / Говнокод #27104

    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
    https://habr.com/ru/company/vk/blog/527420/
    
    ВКонтакте снова выкладывает KPHP 
    
    ....
    
    Сгенерировать С++ из PHP — этого мало. Собственно говоря, это самое простое.
    
    Во-первых, в PHP мы используем кучу функций стандартной библиотеки: header(),
     mb_strlen(), curl_init(), array_merge(). Их тысячи — и все должны быть
    реализованы внутри KPHP с учётом типизации и работать так же, как в PHP.
    Реализация всего PHP stdlib (а также KPHP-дополнений), всех PHP-типов с
    операциями и допущениями — это называется runtime, вон там квадратик сверху.
    
    Во-вторых, PHP-сайт — это веб-сервер. Следовательно, и в KPHP должна быть вся
    серверная часть, чтобы можно было в том же nginx подменить PHP-шный upstream
    на KPHP-шный — и всё продолжало работать так же. KPHP поднимает свой веб-сервер,
    оркестрирует процессы, заполняет суперглобалы и переинициализирует состояние,
    как и PHP… Это тоже хардкорная часть — называется server, квадратик снизу.
    
    И только имея результирующий код C++, написанные runtime и server, всё это можно
    объединить и отдать на откуп плюсовым компиляторам. Мы используем g++ — там в
    диаграмме есть квадратик g++. Но не совсем так: у vk.com настолько огромная
    кодовая база, что этот компилятор не справляется, и поэтому мы применяем патченный
    distcc для параллельной компиляции на множестве агентов. В итоге всё линкуется в
    один огромный бинарник (это весь vk.com), он раскидывается на кучу бэкендов и
    синхронно перезапускается. Каждая копия запускает мастер-процесс, который порождает
    группу однопоточных воркеров. Вот они на самом деле и исполняют исходный PHP-код.
    
    Многие технические проблемы остаются за кадром — их не опишешь в статье на Хабре.
    Чего стоит один только сбор трейсов при ошибках: ведь в С++ не получить
    человекочитаемый стек, а хочется разработчику вообще его на PHP-код намаппить.
    Гигантское количество внутренних нюансов, множество подпорок и легаси — но в итоге
    продукт хорошо работает и развивается.

    PHP и C++... два говна нашли друг друга

    j123123, 11 Ноября 2020

    Комментарии (45)
  2. Си / Говнокод #27103

    +1

    1. 1
    #define LEAP_YEAR_OR_NOT(year)( ( year % 4 ) ? ( 0 ) : ( 1 ) )

    Тот кто это писал, видимо рассуждал примерно так:

    - В 2100 году это конечно забагует, но это будет уже не моя проблема.

    j123123, 11 Ноября 2020

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

    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
    package java.util;
    
    public final class Optional<T> {
        public<U> Optional<U> map(Function<? super T, ? extends U> mapper) {
            Objects.requireNonNull(mapper);
            if (!isPresent())
                return empty();
            else {
                return Optional.ofNullable(mapper.apply(value));
            }
        }
    }

    Они не только не знают, что else после if не нужен и лишь привносит лишний нестинг, они даже единый стиль расставления фигурных скобок выдержать не могут

    Fike, 11 Ноября 2020

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

    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
    <?php declare(strict_types=1);
    /**
     * This file is part of Swoft.
     *
     * @link     https://swoft.org
     * @document https://swoft.org/docs
     * @contact  [email protected]
     * @license  https://github.com/swoft-cloud/swoft/blob/master/LICENSE
     */
    
    namespace Database;
    
    use Swoft;
    use Swoft\SwoftComponent;
    
    /**
     * Class AutoLoader
     *
     * @since 2.0
     */
    class AutoLoader extends SwoftComponent
    {
        /**
         * Class constructor.
         */
        public function __construct()
        {
            parent::__construct();
    
            Swoft::setAlias('@database', dirname(__DIR__) . '/database');
        }
    
        /**
         * @return array
         */
        public function getPrefixDirs(): array
        {
            return [
                __NAMESPACE__ => __DIR__,
            ];
        }
    
        /**
         * @return array
         */
        public function metadata(): array
        {
            return [];
        }
    }

    https://github.com/swoft-cloud/swoft/blob/master/database/AutoLoader.php

    MAPTbIwKA, 10 Ноября 2020

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

    −3

    1. 1
    Обращение.

    Антонио, перепиши этот сайт на современный стек технологий. Очень рекомендую:
    - Vue или React
    - NodeJS или Go
    - MongoDB
    - побольше AJAX-а
    Очень неютно находиться на технически устаревшем сайте - какой-то колхозный PHP, голый HTML, JS и jQuery... Твоим сайтом хочется гордиться, а не блеваться от него.
    Новые фичи добавлять необязательно.

    rotoeb, 10 Ноября 2020

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

    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
    $snippet = preg_split('/'. $qs .'/i', $replace);
            $c = 1;
            foreach( $snippet as $snip ) {
              $length  = strlen( $snip ) * .3;
              $xlength = strlen( explode( $qs, $snip )[0] ); 
              if( $c % 2 !== 0 ) {
                $highlight_1 = substr( $snip, $xlength * .3, $xlength );
              }
              else {
                $highlight_2 = substr( $snip, 0, $length );
              }
              $c++;
            }
            $output .= '<dfn class="revolver__search-snippet">... '. preg_replace("#[^а-яА-ЯA-Za-z:;._,? -]+#u", '', $highlight_1) . '<mark>'. $qs .'</mark>'. preg_replace("#[^а-яА-ЯA-Za-z:.;_,? -]+#u", '', $highlight_2) .' ...</dfn></li>';

    Pick — самая маленькая поисковая система на PHP и MySQL
    Здесь пришлось повозиться. Простой подход совсем не подразумевал, что PHP начнет обрабатывать UTF-8 корректно, но я смог добиться работы с русским и английским языками.

    https://habr.com/post/526652

    gost, 08 Ноября 2020

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

    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
    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
    97. 97
    98. 98
    99. 99
    #Это калькулятор
    t=input("Введите колличество чисел (2 или 3): ")
    if t == '3':
    	one=float(input("Введите первое число: "))
    	two=float(input("Введите второе число: "))
    	three=float(input("Введите третье число: "))
    	n=input("Введите первый знак: ")
    	if n != '+' and n != '-' and n != '*' and n != '/' :
    		print("Вы написали что-то неправильно")
    	else:
    		m=input("Введите второй знак: ")
    		if m != '+' and m != '-' and m != '*' and m != '/' :
    			print("Вы написали что-то неправильно")
    		else:
    			if n == '+':
    				if m == '+':
    					rez=one+two+three
    					print(rez)
    				elif m == '-':
    					rez=one+two-three
    					print(rez)
    				elif m == '*':
    					rez=one+two*three
    					print(rez)
    				elif m == '/':
    					rez=one+two/three
    					print(rez)
    				else:
    					print("Вы написали что-то неправильно")
    			elif n == '-':
    				if m == '+':
    					rez=one-two+three
    					print(rez)
    				elif m == '-':
    					rez=one-two-three
    					print(rez)
    				elif m == '*':
    					rez=one-two*three
    					print(rez)
    				elif m == '/':
    					rez=one-two/three
    					print(rez)
    				else:
    					print("Вы написали что-то неправильно")
    			elif n == '*':
    				if m == '+':
    					rez=one*two+three
    					print(rez)
    				elif m == '-':
    					rez=one*two-three
    					print(rez)
    				elif m == '*':
    					rez=one*two*three
    					print(rez)
    				elif m == '/':
    					rez=one*two/three
    					print(rez)
    				else:
    					print("Вы написали что-то неправильно")
    			elif n == '/':
    				if m == '+':
    					rez=one/two+three
    					print(rez)
    				elif m == '-':
    					rez=one/two-three
    					print(rez)
    				elif m == '*':
    					rez=one/two*three
    					print(rez)
    				elif m == '/':
    					rez=one/two/three
    					print(rez)
    				else:
    					print("Вы написали что-то неправильно")
    			else:
    				print("Вы написали что-то неправильно")
    elif t == '2':
    	z=input("Введите знак: ")
    	if z != '+' and z != '-' and z != '*' and z != '/' :
    		print("Вы написали что-то неправильно")
    	else:
    		one=float(input("Введите первое число: "))
    		two=float(input("Введите второе число: "))
    		if z == '+':
    			rez=one+two
    			print(rez)
    		elif z == '-':
    			rez=one-two
    			print(rez)
    		elif z == '*':
    			rez=one*two
    			print(rez)
    		elif z == '/':
    			rez=one/two
    			print(rez)
    		else:
    			print("Вы написали что-то неправильно")
    else :
    	print("Вы написали что-то неправильно")

    Как можно сократить говнокод? Просто интересно... Спасибо)

    ilyaclover000, 08 Ноября 2020

    Комментарии (49)
  8. JavaScript / Говнокод #27092

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    function in_array(what, where) {
        for(var i=0; i<where.length; i++)
            if(what == where[i])
                return true;
        return false;
    }

    Когда PHP'шному быдлокодеру не хватило функций в Javascript

    SagePtr, 07 Ноября 2020

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

    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
    <?php
    /* 
    Purpose : To add database functions.
    Created : Nikitasa
    Date : 16-11-2016
    */
    include 'configs/dbconfig.php';
    class mysql{
    	var $link;
    	// connect database function 
    	public function connect_database(){		
    		$this->link = mysqli_connect(Host,Username,Password,Database);
    		if(!$this->link){
    			die('Unable to connect');
    		}
    		// return $this->link;
       }
    	// query execution
    	public function execute_query($query){		  
    		$result = mysqli_query( $this->link, $query);  
    		// mysqli_more_results($this->link);   
    		return $result;
    	}
      	
    	
    	// next query execution
    	public function next_query(){		      
    		mysqli_next_result($this->link);		
    	}
    	
    	// result display	    
    	public function display_result($result){ 
    		$obj = mysqli_fetch_assoc($result);
    		return $obj;
    	} 
    	
    	// clear the results	    
    	public function clear_result($result){ 
    		mysqli_free_result($result);
       } 
    
    	// real escape string 
    	public function real_escape_str($str){
    		return mysqli_real_escape_string($this->link, $str);
    	}	
    	// number of rows	
    	public function num_rows($result){ 
    		$num = mysqli_num_rows($result);
    	   return $num;
    	}            
    	// close connection
    	public function close_connection(){
    		//mysqli_close($res);	
    		mysqli_close($this->link);	
    	}
    } 
    $mysql = new mysql();
    ?>

    real_escape_string, 07 Ноября 2020

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

    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
    65. 65
    public class Checker
        {
            public bool CheckInn(long inn)
            {
                var values = inn.ToArray();
    
                switch (values.Length)
                {
                    case 10:
                        #region Юр. лица
                        var coefficientsN10 = new byte[] { 2, 4, 10, 3, 5, 9, 4, 6, 8 };
    
                        int sumN10 = GetSumNx(values, coefficientsN10);
    
                        var checkNumberN10 = (sumN10 % 11) % 10;
    
                        return values[^1] == checkNumberN10;
                    #endregion
    
                    case 12:
                        #region Физ. лица
                        var coefficientsN11 = new byte[] { 7, 2, 4, 10, 3, 5, 9, 4, 6, 8 };
                        var coefficientsN12 = new byte[] { 3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8 };
    
                        var sumN11 = GetSumNx(values, coefficientsN11);
    
                        var checkNumberN11 = (sumN11 % 11) % 10;
    
                        var sumN12 = GetSumNx(values, coefficientsN12);
    
                        var checkNumberN12 = (sumN12 % 11) % 10;
    
                        return values[^2] == checkNumberN11 && values[^1] == checkNumberN12;
                    #endregion
    
                    default:
                        return false;
                }
            }
            private int GetSumNx(byte[] values, byte[] coefficientsNx)
            {
                var sumNx = 0;
    
                for (int i = 0; i < coefficientsNx.Length; i++)
                    sumNx += coefficientsNx[i] * values[i];
    
                return sumNx;
            }
        }
    
    
     public static class Extensions
        {
            public static byte[] ToArray(this long number)
            {
                var values = new Stack<byte>(12);
    
                while (number != 0)
                {
                    values.Push((byte)(number % 10));
                    number /= 10;
                }
                return values.ToArray();
            }
        }

    Проверка ИНН, ну и говно

    techlead_seneor_228, 07 Ноября 2020

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