Куча говна / Говнокод #27842 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
<style type="text/css" media="all">
	html.cms a[href^="https://www.who.int"][href$="/en"] {background-color:#ffcc00;}
	html.cms a[href^="https://www.who.int"][href$="/en/"] {background-color:#ffcc00;}
    html.cms a[href^="http://www.who.int"][href$="/en"] {background-color:#ffcc00;}
	html.cms a[href^="http://www.who.int"][href$="/en/"] {background-color:#ffcc00;}
	html.cms a[href^="/"][href$="/en"] {background-color:#ffcc00;}
	html.cms a[href^="/"][href$="/en/"] {background-color:#ffcc00;}
	html.cms a[href="/"] {background-color:inherit !important;}
	html.cms a[href="/en"] {background-color:inherit !important;}
	html.cms a[href="/en/"] {background-color:inherit !important;}
	html.cms a[href$="http://www.who.int/en"] {background-color:inherit !important;}
	html.cms a[href$="http://www.who.int/en/"] {background-color:inherit !important;}
	html.cms a[href$="https://www.who.int/en"] {background-color:inherit !important;}
	html.cms a[href$="https://www.who.int/en/"] {background-color:inherit !important;}
    html.cms a[href^="https://www.who.int"][href$="/ar"] {background-color:#ffcc00;}
	html.cms a[href^="https://www.who.int"][href$="/ar/"] {background-color:#ffcc00;}
	html.cms a[href^="http://www.who.int"][href$="/ar"] {background-color:#ffcc00;}
	html.cms a[href^="http://www.who.int"][href$="/ar/"] {background-color:#ffcc00;}
	html.cms a[href^="/"][href$="/ar"] {background-color:#ffcc00;}
	html.cms a[href^="/"][href$="/ar/"] {background-color:#ffcc00;}
	html.cms a[href="/ar"] {background-color:inherit !important;}
	html.cms a[href="/ar/"] {background-color:inherit !important;}
	html.cms a[href$="http://www.who.int/ar"] {background-color:inherit !important;}
	html.cms a[href$="http://www.who.int/ar/"] {background-color:inherit !important;}
	html.cms a[href^="https://www.who.int"][href$="/zh"] {background-color:#ffcc00;}
	html.cms a[href^="https://www.who.int"][href$="/zh/"] {background-color:#ffcc00;}
	html.cms a[href^="http://www.who.int"][href$="/zh"] {background-color:#ffcc00;}
	html.cms a[href^="http://www.who.int"][href$="/zh/"] {background-color:#ffcc00;}
	html.cms a[href^="/"][href$="/zh"] {background-color:#ffcc00;}
	html.cms a[href^="/"][href$="/zh/"] {background-color:#ffcc00;}
	html.cms a[href="/zh"] {background-color:inherit !important;}
	html.cms a[href="/zh/"] {background-color:inherit !important;}
	html.cms a[href$="http://www.who.int/zh"] {background-color:inherit !important;}
	html.cms a[href$="http://www.who.int/zh/"] {background-color:inherit !important;}
	html.cms a[href$="https://www.who.int/zh"] {background-color:inherit !important;}
	html.cms a[href$="https://www.who.int/zh/"] {background-color:inherit !important;}
	html.cms a[href^="https://www.who.int"][href$="/fr"] {background-color:#ffcc00;}
	html.cms a[href^="https://www.who.int"][href$="/fr/"] {background-color:#ffcc00;}
    html.cms a[href^="http://www.who.int"][href$="/fr"] {background-color:#ffcc00;}
	html.cms a[href^="http://www.who.int"][href$="/fr/"] {background-color:#ffcc00;}
	html.cms a[href^="/"][href$="/fr"] {background-color:#ffcc00;}
	html.cms a[href^="/"][href$="/fr/"] {background-color:#ffcc00;}
	html.cms a[href="/fr"] {background-color:inherit !important;}
	html.cms a[href="/fr"] {background-color:inherit !important;}
	html.cms a[href="/fr/"] {background-color:inherit !important;}
	html.cms a[href$="http://www.who.int/fr"] {background-color:inherit !important;}
	html.cms a[href$="http://www.who.int/fr/"] {background-color:inherit !important;}
	html.cms a[href$="https://www.who.int/fr"] {background-color:inherit !important;}
	html.cms a[href$="https://www.who.int/fr/"] {background-color:inherit !important;}
	html.cms a[href^="https://www.who.int"][href$="/ru"] {background-color:#ffcc00;}
	html.cms a[href^="https://www.who.int"][href$="/ru/"] {background-color:#ffcc00;}
</style>

Сайт ВОЗ. Многое можно ожидать от frontend, но такое...

Запостил: rotoeb rotoeb, (Updated )

Комментарии (138) RSS

  • надеюсь это писано руками
    Ответить
  • Я понимаю, когда ^, $ и !important используют в user.css, чтобы патчить чужие сайты. Но на своём...
    Ответить
    • Дай чмокну в носик. Всегда раздражал этот "!important".
      Ответить
      • Кто придумал его так писать?
        Непонятно, значит «обрати внимание важно» или «не важно».
        Ответить
        • Причём других флагов с восклицательным знаком нету?
          Ответить
          • Бери выше, почему нет флага important с двумя восклицательными знаками?
            Ответить
              • А могли ведь и правда сделалать что-то в духе important: 100 чтобы приоритеты разруливать.
                Ответить
                  • А туда можно поставить +Infinity и победить в этой специальной олимпиаде?
                    Ответить
                      • У уэб-макак бесконечность это 10000.

                        А так-то там весело:

                        Note: There is no official range of valid <integer> values. Opera 12.1 supports values up to 2^15 - 1, IE up to 2^20 - 1, and other browsers even higher. During the CSS3 Values cycle there was a lot of discussion about setting a minimum range to support: the latest decision, in April 2012 during the LC phase, was [-2^27 - 1; 2^27 - 1], but other values like 2^24 - 1 and 2^30 - 1 were also proposed. However, the latest spec doesn't specify a range anymore.

                        Я считаю, что надо еще одну конференцию созвать.
                        Ответить
              • > !!!!!!!!important
                Вот вы смеётесь, а мне такое реально пришлось писать.

                В «Gitlab CI» шаги для сборки проекта (пайплайны) описываются декларативно в yaml-файлах. Чтобы не копипастить одно и то же общее говно в 100500 проектов, имеется возможно сделать #include другого файла (в том числе из других репозиториев): какие-то общие шаги (авторизация, подготовка окружений, сборка контейнера и прочее говно) выносятся в общую либу, которую можно просто подключить и течь.

                Только вот есть одна беда: один и тот же файл подключить два раза нельзя — выдаётся ошибка о повторном инклуде. И всё было бы хорошо, если бы дубликаты не детектировались даже через несколько уровней индирекции: файлы B и C инклудят A, файл D инклудит B и C, «Гитлаб» посылает нахуй (да, diamond).

                В ишшуе, открытом года два назад без каких-либо результатов (для «Гитлаба» это норма — там большинство ишшью таких), есть поистине великолепное решение: если к названию заинклуженного файла добавить слэш, то «Гитлаб» чудесным образом начинает считать, что это другой файл! Через такой великолепный воркэраунд проблема выше легко фиксится: файл B инклудит «/A.yaml», файл C инклудит «//A.yaml» — и теперь файл D может заинклудить B и C без каких-либо проблем!
                В итоге в моём небольшом сборнике CI-говна имеется файл с великолепным «include "///////foo.yaml"».
                Ответить
                • Когда ты пишешь достаточно большую систему на декларативном языке, ты должен быть готов к копипасте или к генерации с помощью сторонних наблонизаторов
                  Ответить
                  • Это правда.

                    Кстати, «Gitlab CI» — достаточно развитая декларативная система, поэтому там искаропки есть возможность прямо во время работы пайплайна сгенерировать башицей новое описание пайплайна и запустить его!
                    Ответить
        • нужен чМаФФки-стайл

          important - можно болт забить
          ...
          iMPorTAnt - так и быть, применим в 45% случаев
          ...
          IMPORTANT - тут уже не отвертишься
          Ответить
              • > important_when_customer_opens_site
                Кстати, здесь как-то скидывали исходники хромого, где был захардкоженный список сайтов, которые нужно отображать немного "иначе"...
                Ответить
                • А ещё мне понравилось, что разработчики «Хромооперы» к своему поделию прикладывают файл «browser.js», в котором к списку исключений, зашитому в код «Хромиума», добавляется свой список, который можно обновлять без переконпеляции.
                  Ответить
      • ^= означает найти образец в начале строки.
        $= означает найти образец в конце строки.
        Ответить
        • Интересно, какой у этого говна пирфоманс, раз стиль зависит от контента?
          Ответить
          • Я видел хуже.

            В IE в CSS можно было использовать функцию expression, аргументом которой писать выражение в духе js, которое пересчитывалось при каждом изменении любого свойства любого объекта.

            Добавив в CSS пару-тройку expression, можно было устроить жуткие тормоза, когда даже после перемещения мышки всё висло.
            Ответить
  • почему мне показывают рекламу

    Marshall Шляпа вязаная для хорьков, розовая. 50 ₽
    Ку­пить за 50 ₽. 50 р.
    Ответить
  • Не уверена что у ВОЗ есть свои веб-разработчики (или там есть высоко компетентный техлид по вебу). Но !important-ы меня тоже раздражают (как и костылинг стилей через pattern matching - не юзер-плагин же пишем), убираю их везде где вижу. Нужно применить правило к любому чилду контейнера - пиши отдельную обертку для чилдов (в случае компонентов) или задай специальный BEM класс чилду.
    Ответить
    • >BEM

      А неужели в мире shadow DOM, и всяких React и Angular2 до сих пор актуален BEM?
      Как там борщик?>
      Ответить
      • Если надо задать позицию в поле/сетке конкретному чилду(ам), это делается на уровне поля/сетки, чтобы можно было чилда просто вставить и все. И не гадать че он так криво вставился. Это делается в т.ч. с помощью BEM классовых селекторов. Нужны селекторы для интеграционных тестов тестировщику - тоже по BEM-у именуешь.

        Алсо с помощью BEM селекторов на прошлой работе кастомизировались компоненты и их отдельные части. В интерпрайзе бы назвали это кощунством и сказали делать на темах.

        Алсо BEM не только про селекторы. Правило "компонент не должен управлять собственной позицией в сетке" - тоже часть BEMа. И т.д.
        Ответить
        • Ну ты учти, что в Яндексе развит NIH, и там любят напилить всё свое, даже при наличии общедоступных попенсурс аналогов

          Так что может быть кто-то там и BEMит
          Ответить
          • В любой достаточно большой компании есть какая-то самописная хуйня на которую смотришь и думаешь как она не сдохла 15 лет назад. А не сдыхает из-за какого-то техлида-самодура который эти же 15 лет там сидит
            Ответить
            • бывает еще так, что все согласны, что это говно и ненужно, но ни у кого нет достаточного количества яиц чтобы потратить месяц времени на выпил говна (и вероятно что-то сломать в трех соседних проектах еще при том)
              Ответить
                • Милочка, вы жалуетесь или хвастаетесь? (c)
                  Ответить
                • > There’s a video somewhere in one of our talks of an Uber engineer typing a single line statement in Xcode and then waiting 45 seconds for the letter to appear in the editor slowly, one-by-one.

                  Apple обошли Жидбрейнс на поприще построения тормознутых IDE?

                  > our compiled code size was growing a rate of 1.3 mb a week.
                  Это пиздец.
                  Ответить
                  • При том, что XCodeвый парсер тупее Intellijеевского

                    Думаю, XCode не виноват: просто 1.3 mb a week возможно требовало 1.3 m lines of code per file

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

                    Хотя я не прав: если программисты реально высирали 1.3 метра кода со скоростью одна буква в 45 секунд, но они очень крутые!
                    Ответить
                    • Коммерческий успех? А они уже вышли в плюс, я забыл?
                      Ответить
                      • Чистая прибыль ▲ 1,8 млрд $ (2018)
                        хз правда плюс ли это
                        Ответить
                        • «Убытки американской компании Uber во II квартале 2019 г. достигли $5,2 млрд, следует из ее отчетности. Это рекордные квартальные убытки для Uber, пишет The Wall Street Journal.»

                          С телефона неудобно гуглить, надо завтра смотреть
                          Ответить
                    • > программисты реально высирали 1.3 метра кода со скоростью одна буква в 45 секунд, но они очень крутые!

                      Мечта дефекейта
                      Ответить
                  • Было дело, но уже давно более-менее нормально, хотя в каждом новом икскоде то там то там откуда-то деградация

                    Настоящий пиздец вот:

                    > We had 92 and counting.

                    У приложения из примерно семи экранов 92 зависимости.
                    Ответить
                    • нахуя вообще переписывать?

                      у свифта с обжси же интероп есть какой-то, почему нельзя новый код писать на свифте, а старый не трогать?

                      мы так на коко с жабы перелазим. Если бы мы всё с ноля переписали, то охуели бы
                      Ответить
                      • > But the general feeling of the architecture team was that most of Swift’s problems centered around the flakiness of the Objective-C interop back then so if we wrote a pure Swift app we could avoid the major issues

                        Не смогла

                        Видимо, изначальное качество было настолько ошеломляющим, что всё равно пришлось бы переписывать с нуля похуй на чём
                        Ответить
                    • > У приложения из примерно семи экранов 92 зависимости.
                      Если зависимости уровня left-pad, сотню набрать легко.
                      Ответить
                  • > At the time we were planning to include the new app in the old app bundle and slowly roll it out at runtime as a safety net.

                    Yo dawg, мы встроили тебе приложение в приложение. Ой, а чо эта оно сто метров весит??
                    Ответить
                      • Это к вопросу о применимости подобных практик на мобайле в принципе
                        Ответить
                        • Да юзеры уже привыкли, что любая хрень на пару экранов весит сотню метров...
                          Ответить
                          • В аппсторе есть (были?) ограничения на размер приложения, доступного для загрузки по мобильному интернету
                            Ответить
                              • Раньше да.

                                Но я посмотрел, с 2019-го года уже нет лимита. Последнее ограничение было 200мб
                                Ответить
                              • Игры иногда весят очень мало, НО включают в себя возможность докачать всякий ебучий контент либо отдельно, либо в процессе установки, минуя ограничение. Как PUBG mobile, моя любимая игра.
                                Ответить
                                  • Ну, кампутир в класс пронести сложновато, потому вот так
                                    Ответить
                                  • Кстати, есть специальные ноутбуки-эмуляторы андроида, чтобы играть в мобильные шутеры как король.
                                    Ответить
                                    • > ноутбуки-эмуляторы андроида
                                      Планшет с более чем одним USB выходом и встроенной клавиатурой?
                                      Ответить
                    • > safety net

                      Эээ... ну это ж не андроид с тысячами реально разных конфигов... Тут разве не достаточно потестировать на пяти-шести гейфонах разных поколений?
                      Ответить
                      • На ипадах еще нужно в идеале, лейаут может поехать на больших экранах в теории
                        Ответить
                        • Ну ок. Ещё штук пять.

                          Теперь сравни с открытым множеством андроидов. Пока ты пилишь код, дядюшка Ляо выпустил ещё одну модель с 4к экраном, гигом памяти и телеприёмником.
                          Ответить
                  • > We also replaced *all* of our Swift structs with classes

                    Мы взяли Свифт и начали выбрасывать фишки языка, ведь именно для этого мы начали переписывать всё с objc
                    Ответить
                  • > architecture centered around our new realtime stream based networking protocol (that’s the part I wrote).

                    Учитесь, дети, как правильно говорить «я гонял JSON по вебсокетам»
                    Ответить
                  • Ну главное конечно, что

                    > A bunch of people got promoted

                    и эти питухи даже не стесняются толкать эту дичь в свитере
                    Ответить
                    • Собственно главная цель переписывания. Как и половина проектов на кладбище гугла...
                      Ответить
                      • Да уж

                        «Если бы мы вовремя не обосрались, то нас бы уволили за отсутствием работы»
                        Ответить
                      • Я знал питуха, который какое-то тормозящее вебджаваговно перевел с одного шаблонизатора на другой. Год переводил. Почему-то лучше не стало. Оказалось, что он не делал бенчмарков и ничего не профайлил, но где-то слышал, что один шаблонизатор быстрее другого. Вроде его уволили в конце, но год просрать он успел

                        Вообще у нас тоже иногда делают бессмысленные телодвижения, но это стараются пресекать в первые несколько месяцев.
                        Ответить
                          • ну да примерно
                            freemaker переводил на velocity или наоборот, не помню
                            не суть важно
                            Ответить
                            • А тормозило оно поди от миллиона запросов к базе на каждый чих? Бигдата на ровном месте.
                              Ответить
                              • Скорее всего да. Обычно вебговно тормозит от N+1 в базе.

                                Код конечно тоже может тормозить, но хорошо прогретая и проджитенная джава чтобы тормозила так, что веб (а не десктоп) приложению стало реально плохо, это нужно наверное задачу комивояжора решать, не знаю
                                Ответить
                          • Партнёры на контору играли, а он не знал и гол забил
                            Ответить
                          • ну он обещал сделать приложение продакшен реди, и не сделал. В конторе как-то ему доверились, и не следили, и он говорил "вот уже сейчас доделаю скоро", а через год не сделал
                            Ответить
                  • Да ладно, чуваки просто добавляли по 2 зависимости в неделю. Даже как-то скромно получается. Или оптимизатор хорошо выкидывал ненужный код.
                    Ответить
                          • блядь
                            https://github.com/vition/phpider
                            ну и пидор и есть
                            $url=isset($param["url"])?$param["url"]:'';
                                    $type=isset($param["type"])?$param["type"]:'get';
                                    $data=isset($param["data"])?$param["data"]:'';
                                    $cookie=isset($param["cookie"])?$param["cookie"]:$this->cookie;
                                    $header=isset($param["header"])?$param["header"]:'';
                                    $timeOut=isset($param["timeOut"])?$param["timeOut"]:60;
                                    $verify=isset($param["verify"])?$param["verify"]:false;
                                    $sslCert=isset($param["sslCert"])?$param["sslCert"]:'';
                                    $sslKey=isset($param["sslKey"])?$param["sslKey"]:'';
                                    $encoding=isset($param["encoding"])?$param["encoding"]:'UTF-8';
                                    $referer=isset($param["referer"])?$param["referer"]:$url;
                            Ответить
                            • Шаблон «иф иссет» очень часто встречается в «PHP». Настолько часто, что хочется написать функцию:
                              <?php
                              
                              function titsorgtfo($petouchoque, $grebechoque, $borodouchka) {
                                  return array_key_exists($grebechoque, $petouchoque) ? $petouchoque[$grebechoque] : $borodouchka;
                              }
                              
                              $url = titsorgtfo($param, 'url', '');
                              $type = titsorgtfo($param, 'type', 'get');
                              Ответить
                              • В языках для более умных людей (котлин, JS, Perl, вроде жаже C#) для этого есть оператор

                                В языках для менее умных -- нет
                                Ответить
                                • $param['cookie'] or 'default'

                                  В пыхе не работает?

                                  З.Ы. Хотя это не совсем эквивалент.
                                  Ответить
                                  • не знаю, но раз макаки копипастят говно то верно нет

                                    > это не совсем эквивалент.
                                    чому?
                                    Ответить
                                    • Ноль или пустую строку задать не даст, уйдёт на дефолт. Неспроста же там иссет.
                                      Ответить
                                      • хорошо без строгой стат типизаци, да?
                                        Ответить
                                  • Код упадёт, если у $param нет ключа 'cookie'. А проверка isset($param['cookie']) позволяет коду не упасть.

                                    isset — это не вызов функции, а синтаксический сахар.
                                    Ответить
                                      • > А если собачку добавить?

                                        Не упадет но будет восстание машин...
                                        Ответить
                                    • >упадет
                                      > А проверка isset($param['cookie']) позволяет коду не упасть.

                                      пых сделан имбецилами и для имбецилов
                                      факт!
                                      Ответить
                                      • А как в ЯП для умных убедиться в наличии ключа в ассоциативном массиве, чтобы при его отсутствии ничего не сломалось?
                                        Ответить
                                        • Проверить что он там contains например?

                                          Просто в этих языках можно сказать например
                                          val user = users.getOrDefault("petuh, User("krestuh"))

                                          а в пыхе так нельзя не дублируя "petuh"?
                                          Ответить
                                          • Можно, если объявить users как класс, реализующий интерфейс ArrayAccess, и реализовать метод getOrDefault.

                                            Готового getOrDefault в стандартной библиотеке пышечки я не нашёл.
                                            Ответить
                                  • угу, в руби тоже примерно так же (ток там fetch)
                                    в JS "II"
                                    в коко элвис
                                    Ответить
                  • Вообще, отличная метафора всей вайти-индустрии, если подумать.
                    Ответить
                • > The android folks at the time were big RxJava fans, and there was an equivalent RxSwift library that took advantage of the functional programming paradigms in Swift. Seemed straightforward

                  Реквестирую аккаунт peaktuBHblu_neTyx
                  Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8