Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
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_when_customer_opens_site
Кстати, здесь как-то скидывали исходники хромого, где был захардкоженный список сайтов, которые нужно отображать немного "иначе"...
А ещё мне понравилось, что разработчики «Хромооперы» к своему поделию прикладывают файл «browser.js», в котором к списку исключений, зашитому в код «Хромиума», добавляется свой список, который можно обновлять без переконпеляции.
В IE в CSS можно было использовать функцию expression, аргументом которой писать выражение в духе js, которое пересчитывалось при каждом изменении любого свойства любого объекта.
Добавив в CSS пару-тройку expression, можно было устроить жуткие тормоза, когда даже после перемещения мышки всё висло.
Не уверена что у ВОЗ есть свои веб-разработчики (или там есть высоко компетентный техлид по вебу). Но !important-ы меня тоже раздражают (как и костылинг стилей через pattern matching - не юзер-плагин же пишем), убираю их везде где вижу. Нужно применить правило к любому чилду контейнера - пиши отдельную обертку для чилдов (в случае компонентов) или задай специальный BEM класс чилду.
Если надо задать позицию в поле/сетке конкретному чилду(ам), это делается на уровне поля/сетки, чтобы можно было чилда просто вставить и все. И не гадать че он так криво вставился. Это делается в т.ч. с помощью BEM классовых селекторов. Нужны селекторы для интеграционных тестов тестировщику - тоже по BEM-у именуешь.
Алсо с помощью BEM селекторов на прошлой работе кастомизировались компоненты и их отдельные части. В интерпрайзе бы назвали это кощунством и сказали делать на темах.
Алсо BEM не только про селекторы. Правило "компонент не должен управлять собственной позицией в сетке" - тоже часть BEMа. И т.д.
В любой достаточно большой компании есть какая-то самописная хуйня на которую смотришь и думаешь как она не сдохла 15 лет назад. А не сдыхает из-за какого-то техлида-самодура который эти же 15 лет там сидит
бывает еще так, что все согласны, что это говно и ненужно, но ни у кого нет достаточного количества яиц чтобы потратить месяц времени на выпил говна (и вероятно что-то сломать в трех соседних проектах еще при том)
> 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 секунд, но они очень крутые!
«Убытки американской компании Uber во II квартале 2019 г. достигли $5,2 млрд, следует из ее отчетности. Это рекордные квартальные убытки для Uber, пишет The Wall Street Journal.»
> 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
Не смогла
Видимо, изначальное качество было настолько ошеломляющим, что всё равно пришлось бы переписывать с нуля похуй на чём
Игры иногда весят очень мало, НО включают в себя возможность докачать всякий ебучий контент либо отдельно, либо в процессе установки, минуя ограничение. Как PUBG mobile, моя любимая игра.
Я знал питуха, который какое-то тормозящее вебджаваговно перевел с одного шаблонизатора на другой. Год переводил. Почему-то лучше не стало. Оказалось, что он не делал бенчмарков и ничего не профайлил, но где-то слышал, что один шаблонизатор быстрее другого. Вроде его уволили в конце, но год просрать он успел
Вообще у нас тоже иногда делают бессмысленные телодвижения, но это стараются пресекать в первые несколько месяцев.
Скорее всего да. Обычно вебговно тормозит от N+1 в базе.
Код конечно тоже может тормозить, но хорошо прогретая и проджитенная джава чтобы тормозила так, что веб (а не десктоп) приложению стало реально плохо, это нужно наверное задачу комивояжора решать, не знаю
ну он обещал сделать приложение продакшен реди, и не сделал. В конторе как-то ему доверились, и не следили, и он говорил "вот уже сейчас доделаю скоро", а через год не сделал
> 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
Непонятно, значит «обрати внимание важно» или «не важно».
https://developer.mozilla.org/en-US/docs/Web/CSS/z-index
А так-то там весело:
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.
Я считаю, что надо еще одну конференцию созвать.
Вот вы смеётесь, а мне такое реально пришлось писать.
В «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» — достаточно развитая декларативная система, поэтому там искаропки есть возможность прямо во время работы пайплайна сгенерировать башицей новое описание пайплайна и запустить его!
http://govnokod.ru/27560
Reject modernity
Embrace tradition
important - можно болт забить
...
iMPorTAnt - так и быть, применим в 45% случаев
...
IMPORTANT - тут уже не отвертишься
important_when_customer_opens_site
Кстати, здесь как-то скидывали исходники хромого, где был захардкоженный список сайтов, которые нужно отображать немного "иначе"...
?important
https://en.cppreference.com/w/cpp/language/lookup
$= означает найти образец в конце строки.
В IE в CSS можно было использовать функцию expression, аргументом которой писать выражение в духе js, которое пересчитывалось при каждом изменении любого свойства любого объекта.
Добавив в CSS пару-тройку expression, можно было устроить жуткие тормоза, когда даже после перемещения мышки всё висло.
Marshall Шляпа вязаная для хорьков, розовая. 50 ₽
Купить за 50 ₽. 50 р.
Впрочем, хорьки и правда злые и кусучие. Из куньих хорошо приручаются ласки и выдры
Но в целом да, они почти все безбашенные
В Японии у чувака живут домашние выдры
https://www.youtube.com/watch?v=XJuAPGK3iOU
Да эти двое вообще ёбнутые на голову, на стаю хищников могут кинуться запросто...
в госдупе сидит
А неужели в мире shadow DOM, и всяких React и Angular2 до сих пор актуален BEM?
Как там борщик?>
Алсо с помощью BEM селекторов на прошлой работе кастомизировались компоненты и их отдельные части. В интерпрайзе бы назвали это кощунством и сказали делать на темах.
Алсо BEM не только про селекторы. Правило "компонент не должен управлять собственной позицией в сетке" - тоже часть BEMа. И т.д.
Так что может быть кто-то там и BEMит
Убер год переписывал iOS приложение с objective C на свифт обосравшись раз 10 по пути https://twitter.com/StanTwinB/status/1336890442768547845?s=20
Apple обошли Жидбрейнс на поприще построения тормознутых IDE?
> our compiled code size was growing a rate of 1.3 mb a week.
Это пиздец.
Думаю, XCode не виноват: просто 1.3 mb a week возможно требовало 1.3 m lines of code per file
Чем больше я узнаю про убер, тем больше понимаю, что качество инструментов, процесс, и квалификация не имеют никакого отношения к коммерческому успеху, и пожалуй стоит снять шляпы перед менеджерами и маркетологами убера
Хотя я не прав: если программисты реально высирали 1.3 метра кода со скоростью одна буква в 45 секунд, но они очень крутые!
хз правда плюс ли это
С телефона неудобно гуглить, надо завтра смотреть
Мечта дефекейта
Настоящий пиздец вот:
> We had 92 and counting.
У приложения из примерно семи экранов 92 зависимости.
у свифта с обжси же интероп есть какой-то, почему нельзя новый код писать на свифте, а старый не трогать?
мы так на коко с жабы перелазим. Если бы мы всё с ноля переписали, то охуели бы
Не смогла
Видимо, изначальное качество было настолько ошеломляющим, что всё равно пришлось бы переписывать с нуля похуй на чём
Если зависимости уровня left-pad, сотню набрать легко.
Yo dawg, мы встроили тебе приложение в приложение. Ой, а чо эта оно сто метров весит??
Но я посмотрел, с 2019-го года уже нет лимита. Последнее ограничение было 200мб
Планшет с более чем одним USB выходом и встроенной клавиатурой?
Эээ... ну это ж не андроид с тысячами реально разных конфигов... Тут разве не достаточно потестировать на пяти-шести гейфонах разных поколений?
Теперь сравни с открытым множеством андроидов. Пока ты пилишь код, дядюшка Ляо выпустил ещё одну модель с 4к экраном, гигом памяти и телеприёмником.
Мы взяли Свифт и начали выбрасывать фишки языка, ведь именно для этого мы начали переписывать всё с objc
Учитесь, дети, как правильно говорить «я гонял JSON по вебсокетам»
> A bunch of people got promoted
и эти питухи даже не стесняются толкать эту дичь в свитере
«Если бы мы вовремя не обосрались, то нас бы уволили за отсутствием работы»
Вообще у нас тоже иногда делают бессмысленные телодвижения, но это стараются пресекать в первые несколько месяцев.
freemaker переводил на velocity или наоборот, не помню
не суть важно
Код конечно тоже может тормозить, но хорошо прогретая и проджитенная джава чтобы тормозила так, что веб (а не десктоп) приложению стало реально плохо, это нужно наверное задачу комивояжора решать, не знаю
(mildly NSFW)
Прочитал как NSHipster
https://github.com/vition/phpider
ну и пидор и есть
В языках для менее умных -- нет
В пыхе не работает?
З.Ы. Хотя это не совсем эквивалент.
> это не совсем эквивалент.
чому?
isset — это не вызов функции, а синтаксический сахар.
А если собачку добавить?
Не упадет но будет восстание машин...
> А проверка isset($param['cookie']) позволяет коду не упасть.
пых сделан имбецилами и для имбецилов
факт!
Просто в этих языках можно сказать например
а в пыхе так нельзя не дублируя "petuh"?
Готового getOrDefault в стандартной библиотеке пышечки я не нашёл.
в JS "II"
в коко элвис
Реквестирую аккаунт peaktuBHblu_neTyx