"веселая" ситуация случилась пару месяцев назад.
В дебаге не воспроизводится
В релизе воспроизводится
Логируешь и в релизе не воспроизводится. Оказалось что движок подвисал чутка и время на логирование ему давало время что бы раздуплиться.
Вот это печальная ситуация.
В дебаге не воспроизводится
В релизе воспроизводится
Логируешь и в релизе не воспроизводится. Оказалось что движок подвисал чутка и время на логирование ему давало время что бы раздуплиться.
Вот это печальная ситуация.
"Швабры держат потолок"
Зато любая IDE заменяется блокнотом.
Ты еще и двоичным кодом драйвер напиши, в блокноте.
В консоли!
сначала напиши консоль, потом драйвер.
Блокнот можешь в клеточку использовать
Блокнот можешь в клеточку использовать
Сначала напаяй процессор
смотря чей драйвер. есть куча не сильно сложных сенсоров, например, для опроса которых нужен точный контроль времени выполнения, но протоколы не сильно сложны.
да как вы заебали с эти своим блокнотом Начали кодить в век когда никто уже без IDE не кодить и всем рассказывают, что можно. В спину себя тоже укусить можно, только придется сначала сломать спину или шею. Ну идите пишите в своем блокноте, какой нибудь нормальный современный проект. Причем не в notepad++ а именно в блокноте, голом без подсветки синтаксиса и прочих благ современных средств разработки. Позапускайтесь без проверки синтакиса, подебагайте без точек останова, потрекайте память встроенными инструментами ОС, поменеджирите зависимости и поподключайте библиотеки. И вот тогда уже расказывайте всем как можно IDE блокнотом заменить.
А ты на чём пишешь?
ебать.. у меня стажу больше 25 лет в этом дерьме.
перечислять, с чем я сталкивался и на чем писал смысла нет ( от assembler до brainfuck ).
я, блять, в своё время видел, практически лучи си у врат тангейзера.. становление и крах всяких новомодных свистоперделок.
Не надо мне рассказывать про "сложность" проектов. То, что сейчас пилится - не сложнее CAD систем, распознавания речи, текста и т.д. написанных 20 лет назад. Ну, блять, не сложнее. Всё то же самое. Меняются только персонажи в виде интерфейсов и растёт вычислительная мощность. И именно её рост расхолаживает и отупляет.
Я сейчас говорю не о 146% всего, а о 99% типового прикладного ПО, написанного на новомодных фреймворках и птичьих интерпретаторах типа пайтона и иже с ними.
есть одно правило технологичности - ты должен уметь в полевых условиях (при остутствии оборудования и инструментов) починить девайс\авто\ПО.
Если тебе для починки\диагностики твоего же оборудования\ПО нужно роботизированное спец оборудование с ЧПУ, то ты нахуевертил говнище.
перечислять, с чем я сталкивался и на чем писал смысла нет ( от assembler до brainfuck ).
я, блять, в своё время видел, практически лучи си у врат тангейзера.. становление и крах всяких новомодных свистоперделок.
Не надо мне рассказывать про "сложность" проектов. То, что сейчас пилится - не сложнее CAD систем, распознавания речи, текста и т.д. написанных 20 лет назад. Ну, блять, не сложнее. Всё то же самое. Меняются только персонажи в виде интерфейсов и растёт вычислительная мощность. И именно её рост расхолаживает и отупляет.
Я сейчас говорю не о 146% всего, а о 99% типового прикладного ПО, написанного на новомодных фреймворках и птичьих интерпретаторах типа пайтона и иже с ними.
есть одно правило технологичности - ты должен уметь в полевых условиях (при остутствии оборудования и инструментов) починить девайс\авто\ПО.
Если тебе для починки\диагностики твоего же оборудования\ПО нужно роботизированное спец оборудование с ЧПУ, то ты нахуевертил говнище.
Перефразирую - на каком языке ты писал код крайний раз, и как давно это было?
Дык речь то не про починку с диагностикой речь о разработке с нуля) Или ты инженеру тоже предложишь из куска стали напильником двигло выпилить целиком?) Вот подрихтовать напильником готовое это можно, это никто не спорит, особенно на этапе прототипирования
Во-первых: зачем делать сложно, когда можно с тем же результатом делать просто? Только идиот выберет второе. И не надо про качество: криворукий уебан сделает говно в любом случае, гуру сделает конфетку в любом случае.
Во-вторых: твоё "правило технологичности" абсолютно устарело. В наше время оно работает с точностью наоборот: для любой современной задачи требуется ресурсы с половины мира, если ты можешь её решить без ничего - говно твоя задача, никому не нужное.
Во-вторых: твоё "правило технологичности" абсолютно устарело. В наше время оно работает с точностью наоборот: для любой современной задачи требуется ресурсы с половины мира, если ты можешь её решить без ничего - говно твоя задача, никому не нужное.
ну раз уж ты весь такой из себя "олд", давай рассказывай на чем пишешь?
часто ли пъезой от зажигалки байтики в памяти подправляешь?
сколько транзисторов нужно чтобы 8 битный алу паяльником собрать?
часто ли пъезой от зажигалки байтики в памяти подправляешь?
сколько транзисторов нужно чтобы 8 битный алу паяльником собрать?
17 сентября 1991: Linux версии 0.01 (10 239 строк кода).
...
7 января 2019: первый релиз-кандидат Linux 5.0 (более 26 млн строк кода).
Да, ленивые шо пиздец. Всего-то в пару тысяч раз больше кода стало, чем у олдов.
...
7 января 2019: первый релиз-кандидат Linux 5.0 (более 26 млн строк кода).
Да, ленивые шо пиздец. Всего-то в пару тысяч раз больше кода стало, чем у олдов.
Не ты ли автор?
*Ирония*
К сожалению, Вы не прошли интервью, потому что не смогли написать в блокноте простейший вывод элементов массива в стандартный поток вывода. Спасибо за ваше время.
*Ирония*
К сожалению, Вы не прошли интервью, потому что не смогли написать в блокноте простейший вывод элементов массива в стандартный поток вывода. Спасибо за ваше время.
*Ирония*
ИмхО лучше использовать удобную IDE. Но! Отсутствие IDE не должно сильно помешать. Да и конкретной IDE сильно прирастать тоже не стоит.
Прирастать к одной не стоит это да. Но вот по поводу полного отсутствия уже нет, если на проекте нет IDE и все делается в блокноте это пиздец, и преступление против не только работников, но и здравого смысла. Да не обязательно делать через IDE вообще все, но она инструмент который позволяет не думать о множестве вещей, и если ее нет, то ценное время, которое можно потратить на нормальный, полноценный, и удобный кодинг придется тратить на ебку со всякими нюансами программирования о которых мы уже не вспоминаем благодаря IDE. Если проводить аналогию со стройкой то писать в код в блокноте все равно, что гвозди кирпичом забивать, можно, но молоток то сука удобнее, им и махать проще, а потому можно за то же время забить молотком больше гвоздей и меньше при этом устать. Так шо не, блокнот это для всяких низкоуровневых задач, конфиг подкрутить, теги на страничке быстренько переименовать ну и всякое такое по мелочи, но никак не в качестве замены IDE, их не потому придумали потому что в блокноте было заебись и он для всего был удобен и незаменим.
Лень было подробно уточнять... В моей голове временное отсутсвие не должно помешать особо. Не надо в крайности ) А так да, лучше использовать IDE. Да и отсутствие IDE не значит что остаётся только базовый блокнот, который ничего не умеет. Есть всякие продвинутые текстовые редакторы. Но в целом ты прав. И я бы сравнил лучше не забивание гвоздя кирпичом и молотком. А закручивание саморезов шуруповёртом или отвёрткой :) Накину только ещё, что отсутсвие ГУЯ не должно особо помешать профи для маленькой задачи. Уточнения. Отсутствие на временной основе. Да, не во всех сферах применимо. Дальше опять лень уточнять, просто не сводите в крайности )
Не должно сильно помешать? Ну это если калькулятор пишется, то да. А так это не то, что помешает. Просто убьёт проект, подняв его сложность на недосягаемый уровень
ну я был на проекте связанный с акциями, бондами и остальной мишурой финансовой. Один из крупнейших в мире. Сидели в неовиме. Да, не иде, но и не просто редактор. КОгда к виму приноровился, работалось даже очень удобно. Хотя многих вещей особенно гуйных не хватало, это да.
Ага, "но да, по рассказам тимлида, настроить неовим то был тот еще квест"©
Твоя цитата) там просто из вима иде сделали, я так понимаю. А то что у неё гуй терминальный это уже детали.
Твоя цитата) там просто из вима иде сделали, я так понимаю. А то что у неё гуй терминальный это уже детали.
Я ничего не отрицаю, но были и больные лбди которые на чутка переделаном виме сидели. Вот то изврат)
Я так и написал, что лучше использовать удобную IDE ) Но! Были большие телеком проекты, где большинство писали в продвинутых текстовых редакторах, вместо IDE. Правда это было очень давно. Проекты не умерли от этого, были вполне успешные, продукты сложные. Энв был стандартизирован из за театра безопасности. Те IDE которыми можно было пользоваться... проще было ими не пользоваться ) Любые запросы изменения в энве нужно было продавливать через огромную бюрократическую машину. И часто просто спускались на тормозах. Позже много где работал, к счастью такого маразма больше не встречал.
да ты без ide скоро и такие комменты не напишешь.
Главное, чтобы не жетбрейнз
Да потому как хуй ты поймёшь где что и как, а printf() твой бро, тебе пбать мозги не будет
А ещё лучше put(), чтоб лишние библиотеки не тянуть куда не надо.
Бывают баги, которые отладкой не ловятся, тогда трассировка вполне приемлемый метод. Профессионал от любителя отличается тем, что владеет всеми инструментами и не боится применить.
Только где эти профессионалы? Хожу с проекта на проект и везде, блять, синьёры принтами дебажат. Дебаггер? Не, не слышал. Удаленный реверсивный дебаг через SSH туннель к ноде на AWS - это вообще колдунство за гранью понимания.
git gui, менеджер сервисов, менеджер БД(локальной и удаленной через тот же SSH) - никто не знает, все "через консоль" чего-то ковыряют. И вот эти люди могут сказать, что "нафиг IDE, редактора достаточно" и я охотно верю, что ИМ будет достаточно.
git gui, менеджер сервисов, менеджер БД(локальной и удаленной через тот же SSH) - никто не знает, все "через консоль" чего-то ковыряют. И вот эти люди могут сказать, что "нафиг IDE, редактора достаточно" и я охотно верю, что ИМ будет достаточно.
большинство задач не инженерные, а промышленно-коммерческие. В них, как правило, типовые процессы связанные с интеграционным взаимодействием. ты не сильно отладишь код, работающий, например, с бд лнками через брекпоинты. они приведут к отваливанию этих линков или рассогласованности их работы.
большинство багов проявляется в реальных условиях, а не на стенде, а в реальных условиях никто тебе не даст систему дебажить.
для mcu тоже не всегда подходит. для некоторых вообще нет отладочных плат, другие надо мониторить в реальных условиях.
логирование придумали не просто так, а для отслеживания и локализацииточк отвала.
Вот и выглядит, что для быстрой проверки гипотезы дешевле, проще и безопаснее запустить из консоли, чем запускать внешеюю среду отладки.
конечно, если ты дизассемблируешь код, то без какого нибудь softice не обойтись
большинство багов проявляется в реальных условиях, а не на стенде, а в реальных условиях никто тебе не даст систему дебажить.
для mcu тоже не всегда подходит. для некоторых вообще нет отладочных плат, другие надо мониторить в реальных условиях.
логирование придумали не просто так, а для отслеживания и локализацииточк отвала.
Вот и выглядит, что для быстрой проверки гипотезы дешевле, проще и безопаснее запустить из консоли, чем запускать внешеюю среду отладки.
конечно, если ты дизассемблируешь код, то без какого нибудь softice не обойтись
Кстати, тут подумал, а ведь современный тренд на observability и повсеместный мониторинг/трейсинг всего что можно и нелья - это же и есть printf на стероидах.
Для отладки в условиях близким к реальным существует удаленный дебаггинг и стейдж сервер. Тотальное логгирование тоже не всегда возможно. Например когда у тебя ходят чувствительные данные, вроде номеров кредиток, личной информации, платежной информации...
И не надо логи с printf() путать, пожалуйста.
И не надо логи с printf() путать, пожалуйста.
Ты конечно прости, но в случае обычной, каждодневной работы, я сделаю git checkout -b/git add ./git commit -m '' в консольке быстрее, чем у меня tortoise откроется. Или ты прям каждый день мердж конфликты на сотни конфликтов решаешь?
При чем тут черепаха? У тебя в IDE все под рукой: и редактор и менеджер БД и т.д. Не нужно ничего дополнительно запускать. Но раз ты в это не врубился, то ты как раз тот чел, который научился что-то в редакторе делать и узнал о куче гуевых левых инструментов, а IDE для тебя кажется просто тяжелым редактором.
На самом деле ситуация абсолютно равноценная. Телефон под рукой, им просто и быстро щёлкнуть. Точно так же printf() или console.log() — это простой и быстрый метод глянуть чё-та по-быстрому, а не заводить полноценную отладку.
P.s. Ни слова о тестах.
P.s. Ни слова о тестах.
все это барахло не умеет нормально в видео, а смартфон умеет
Не совсем. В обоих случаях тебе нужно добраться до исполняемой строчки. В IDE ты просто тыкнешь и получишь брейкпоинт, а тут нужно printf писть
Если printf(), то это какой-нибудь C, а значит еще и программу перекомпилировать придется. Где здесь быстрота?
Зависит от контекста использования.
Технически это лог, т.е. можно натыкать 100500 этих printf, и посмотреть до какого момента и в каком состоянии доходит. И если тебе нужно совершить например сотню итераций, а падает на рандомном этапе, то только так по сути и "дебажить". Причем дэбаг это ещё и остановка кода, что порой приводит к всяким нежелательным таймаутам.
Ну или ещё более веселое -- падает в релизной сборке, которую особо не подэбажишь.
"веселая" ситуация случилась пару месяцев назад.
В дебаге не воспроизводится
В релизе воспроизводится
Логируешь и в релизе не воспроизводится. Оказалось что движок подвисал чутка и время на логирование ему давало время что бы раздуплиться.
Вот это печальная ситуация.
В дебаге не воспроизводится
В релизе воспроизводится
Логируешь и в релизе не воспроизводится. Оказалось что движок подвисал чутка и время на логирование ему давало время что бы раздуплиться.
Вот это печальная ситуация.
"Швабры держат потолок"
каждый раз это впомниаю когда к проекту инсталлятора возвращаюсь
Там плюсовый проект но на 80%+ был написан на Си
Потом он перешел другому деву и тот перепедалил на С++ (насколько смог)
Потом он перешел в мое владение, и каждое измненение это как ходить по минному полю.
Костыли поверх костылей поверх костылей
Там плюсовый проект но на 80%+ был написан на Си
Потом он перешел другому деву и тот перепедалил на С++ (насколько смог)
Потом он перешел в мое владение, и каждое измненение это как ходить по минному полю.
Костыли поверх костылей поверх костылей
мне довелось работать над одним б-гопротивном продуктом (php laravel), где олды не постеснялись засунуть папку vendor под гит, и без зазрений совести, накостыляли половину бизнес-логики именно там. В вендорах типа все внешние зависимости/пакеты/репозитории, и вышло на то, что обновить их до свежайшей версии, было тупо технически невозможно =)
а наши фронтендеры, в той же конторе, использовали console.log с полутора килобайтами статичного текста, чтоб городить задержки ~70ms в замыканиях функций каких-то кривых плагинов =)
Такого не видал, но у нас сейчас другие приколы
Новый проект разделен на 3 части (база - хромиум)
Кор где вся общая работа - 1я тима
Десктоп - мы
Веб - 3я тима (пишут и веб и морду для десктопа одномоментно)
Мы используем кор и веб
Все это 3 разных репо и разработка не пересекается почти.
Веб чет обновляет, мы подтягвиаем к себе изменения, сыпется проект ибо попереименовывали елементы или вообще всю морду перепедалили, а мы местами завязаны на это. Либо с какого-то хера меняют ту структуру данных (на жс) которую мы возвращаем из хромиума, ибо им так захотелось и ноют что отвалилось.
Ладно, это пол беды. Беда появляется когда тима с кора обновляет вспкдж с либами до более новых.
Мы тянем изменения, проект не собирается. ВТФ? Оказывается одна либа которая не обновляется часто, юзает другую либу более старой версии, которую кор типа обновила до более новой. И таких может быть с десяток.
Синкать эти 3 проекта то еще веселье. А когда они интерфейс меняют без предупреждений, мы охуеваем по полной.
Новый проект разделен на 3 части (база - хромиум)
Кор где вся общая работа - 1я тима
Десктоп - мы
Веб - 3я тима (пишут и веб и морду для десктопа одномоментно)
Мы используем кор и веб
Все это 3 разных репо и разработка не пересекается почти.
Веб чет обновляет, мы подтягвиаем к себе изменения, сыпется проект ибо попереименовывали елементы или вообще всю морду перепедалили, а мы местами завязаны на это. Либо с какого-то хера меняют ту структуру данных (на жс) которую мы возвращаем из хромиума, ибо им так захотелось и ноют что отвалилось.
Ладно, это пол беды. Беда появляется когда тима с кора обновляет вспкдж с либами до более новых.
Мы тянем изменения, проект не собирается. ВТФ? Оказывается одна либа которая не обновляется часто, юзает другую либу более старой версии, которую кор типа обновила до более новой. И таких может быть с десяток.
Синкать эти 3 проекта то еще веселье. А когда они интерфейс меняют без предупреждений, мы охуеваем по полной.
Одной тиме надо задружиться с другой и бить третью.
ну, у вас или какой-то мисскомуникейт мимо всех ПМов, либо реально здоровая контора, что за всем не уследить. Особенно сочувствую и понимаю беду с заброшенными репозиториями, от которых зависят другие компоненты - это ёбаный змеиный узел (
а ещё я говна принёс похвастаюсь:
Ну это какая-то херня. Все три проекта должны быть отдельными либами с фиксированными внешними интерфейсами, которые менять можно только на общем собрании. Внутри пусть чё хошь меняют, а интерфейсы не трогают.
Хз как вы так можете работать...
Хз как вы так можете работать...
лучи поддержки и понимания тебе. Сам в такой же ситуации
Haha, classic. Был проект на самописной RTOS с кооперативной многозадачностью, где уже уперлись в производительность проца. Но это потом стало понятно. В процессе отладки накыкали принтф, и всё магическим образом заработало. Потому что printf по завершении работы отдавал управление шедулеру, который запускал следующую задачу. Без printf всё исполнение зацикливалось на текущей.
Иногда это единственный способ отладки встроенного ПО, кроме осциллографа.
Эх, если бы. Иногда IDE нет, поскольку отлаживаешь удалённый скрипт. (или Дженкинс-джобу) Иногда инструмент есть, но не работает. Иногда инструмент, возможно, работает, но документации нет, так что непонятно как запустить. А ещё было, что вся убунта падала из-за того, что отладчик съедал всю оперативу -- а printf исправно работал.
В реалтайме отладка в IDE сасать
Пока эти встроенные хотя бы экспозицию выставишь, не то что там штатив - мгновение уйдёт, а иные моменты бывают один раз в жизни.
А ещё он может фотографировать расписание электричек/автобусов. Тогда это блокнот.
Давай, используй свои встроенные инструменты отладки на мультипоточном распределенном окружении прода!
Особенно если стейт приложения непрерывно меняется под воздействием внешних данных, которые нихуя не перестают приходить пока ты в отладке.
И проявляется баг при непонятном стечении обстоятельств раз в несколько дней на реальных данных.
И проявляется баг при непонятном стечении обстоятельств раз в несколько дней на реальных данных.
меня одного раздражает ватермарка
А меня раздражает отсутствие вопросительного знака.
Хотя, если это утверждение, то соглашусь: пока не прочитал твой пост даже не заметил её.
Хотя, если это утверждение, то соглашусь: пока не прочитал твой пост даже не заметил её.
нет ето бил вопрос. вот он кстати "?"
Чтобы написать коммент, необходимо залогиниться
Отличный комментарий!