Обновить
65
0
Александр Лурье@aml

Погромист

Отправить сообщение
Теоретически, build-скрипт может что-то поменять в сорцах, и эти изменения будут попадать в репозиторий при последующих коммитах. Практически, может такого никогда и не встретится. Я не стал рисковать в этом плане.
Вы упомянули про терминологические проблемы (мастер-слейв vs. P2P vs. архивариус). А есть ещё целый класс проблем, когда разработчик придумывает сложные решения для простых задач, просто потому что не может отличить реальную проблему от выдуманной им самим. Например, программист борется с тормозами программы, управляющей станком, оптимизируя тяжёлые вычисления распознавания изображений с камеры (запускает несколько потоков, в каждом потоке обрабатывает часть изображения, потом синхронизирует их, собирая результаты), при том, что можно запустить распознавание одновременно с перемещением механических деталей станка, и внезапно окажется, что существующей производительности распознавания достаточно. Это не дыра в том понимании, как вы узнали про SMM. Это вообще неумение подумать чуть шире, понять суть проблемы, которую надо решить.

Бывает, что программист вообще не видит простых решений для простых задач, и что-то делает, просто потому что «слышал, что другие используют клиент-серверную модель» и не понимает, какие есть альтернативы, какие у них плюсы и минусы, какие трейдоффы и прочее, прочее. Это происходит из-за узости мышления программиста, из-за его непонимания места разрабатываемого решения в целой системе, влияния на другие компоненты и т.д. И это не только в работе архитектора встречается. Такие решения любой программист на любом уровне принимает постоянно — как открывать файл, как его читать, как организовать структуру данных и т.д. И он или понимает всю полноту последствий каждого из решений, или нет.

Дыры есть у всех, это понятно. Проблема в том, на сколько порядков они отличаются в размерах. Вы узнали про любопытную фишку процессора, и у вас это знание легло на нужную полочку в «картине мира». Потому что у вас эта картина мира есть, и вы её пополняете по ходу развития. Дыры же в представлении о мире у большинства программистов настолько огромные, что даже мостик от исполнения JavaScript в браузере до аппаратуры компьютера они построить не в состоянии. Я уж не говорю про понимание работы стораджа или сети.
Как минимум, потому что там встречаются бинарные модули.
npm shrinkwrap уже посоветовали, и это хорошо. Однако не защищает от ситуации, когда мейнтейнер случайно или по злому умыслу публикует новую версию под тем же номером. И у вас что-то ломается.

Мы решили эту проблему так — вместе с проектом идёт небольшой кеширующий веб-сервер, который подменяет собой официальный NPM-репозитарий, и кэширует все версии всех пакетов, которые загружаются во время npm install. Кэш потом чекинится в репозиторий нашего проекта, и мы имеем железобетонную гарантию, что ни один байт зависимых пакетов не поменяется.

Если хотим сделать апгрейд, частично или полностью сносим кэш и делаем npm install заново. Кэш наполняется актуальными версиями пакетов.
Золотые слова. А если сделать шаг ещё выше, то окажется, что главная проблема — каша в голове. Человек просто или инженер, или нет. Или он понимает, как устроен мир, или нет. Или он настоящий инженер, или ремесленник от программирования.
Я своей поставил Дебиан фиг знает сколько лет назад. Тоже всё работало долго и счастливо, пока не понадобилось ей открывать docx-документы, которые по почте присылают. Пришлось обновлять дистрибутив до следующей мажорной версии. Как правильно заметил автор, редко когда такие операции проходят абсолютно безболезненно.
Ну что за нытьё, в самом деле? С точки здравого смысла, закон в той форме, в которой он существует — полный бред. Но в жизни всё зависит от того, как его будут применять. В подавляющем большинстве его будут применять, так, как он и задумывался, — чтобы удалять пиратский контент.

Полезная побочная функция в виде отстрела неугодных экстремистских сайтов — это приятный бонус. У нас (да и не только у нас) законы таковы, что не нарушить вообще ничего невозможно. Появление такого закона — просто более удобный способ сводить счёты. Ну будет кому-то проще решать свои политические вопросы.

На большинстве даже айтишников это никак не скажется. Яндекс, Гугл будут работать, вконтактик почистит свои музыкальные архивы, может трекеры укатают в асфальт. А про остальные сайты вообще никто и не вспомнит. Пока дорогу кому-нибудь не перейдут, разумеется.
Вот то же самое хотел написать. 10 лет назад все пользовались аськой, ломать её было полезно. Но прошла куча времени, её почти забыли уже, а хакеры до сих пор с ней развлекаются.
И это говорит человек, у которого over 32000 комментариев только на хабре :)
Для разработчиков
У меня нет таких, слава богу.
Что? Куда они выкладывают? Где искать?
Между прочим, МТС Москва весьма оперативно (3-6 мес) ставит новые базовые станции, если на территории города мертвая зона обнаруживается. Я 2 раза обращался в «отдел развития сети» — и оба раза проблема решалась. В МТС Калуга меня лесом послали при тех же обстоятельствах.
Реальная задача из реальной практики. Сделать небольшой модуль ERP для конкретного производства. Есть заявки, есть схемы сборки, есть список участков производства, на которых можно выполнять операции, есть список рабочих, которые обучены определённым операциям. Надо сделать админку для ввода заявок, списка рабочих и т.д. и на выходе получить распечатки с расписанием, какой рабочий куда должен пойти, чего и сколько напилить.

Один программист сто лет кодит для Web, админку сделал за неделю. Он умеет сгенерировать PDF для распечатки. Одна беда — полгода мучил генератор расписаний. И всё время какие-то баги находились — то какой-то участок не догружал, то не поровну распределял работу по рабочим, то просто неэффективное решение было. Вручную можно было всегда посидеть и лучше придумать. И всё никак и никак. Потому что у него теоретической базы не было. И его алгоритм был просто кучей эвристик.

А потом случайно взяли олимпиадника. Что такое индексы в базе данных — не знает, на перле никогда в жизни не программировал, как web работает — знает только как пользователь. Да, у него месяц ушёл, чтобы «get up to speed». Только алгоритм заработал уже через неделю. «Всего-то» надо было записать условия задачи в виде системы линейных неравенств и решить «обычную» задачу нахождения максимума. И программа стала искать очень крутые решения. Предусмотрел все граничные условия, ни разу с тех пор к этому алгоритму не возвращались.

Понятно, что хорошие кодеры всегда нужны. Которые в совершенстве знают язык, платформу, технологию. И могут писать много и хорошо. Беда в том, что если требования меняются, то такой «программист на C++» наотрез отказывается изучать node.js или переходить с Windows на Linux. Люди сами себя прибивают гвоздями к одной нише и в ней кормятся. Каждому своё, наверное.
Смотря какая работа. Как и на стройке. Бывают дизайнеры и архитекторы, а бывают работяги на экскаваторе. Если хотите всю жизнь писать сайты на php, то нет проблем. Тогда изучайте php и будьте счастливы.
По поводу приспособленности к реальной работе. Языки и технологии — это всё вторично. Умение формализовать задачу, придумать оптимальный алгоритм её решения — вот это настоящее дао программирования. Олимпиады качают именно этот скилл.
Сказал, что точно не знаю. Но скорее всего, просто разделитель целой и дробной частей. Почему именно четыре — хз.
У меня экскурсовод в калифорнийском музее компьютерной истории, когда узнал, что я русский, спрашивал, зачем на счетах есть линия с четырьмя костяшками.
Спасибо за статью. А как смотрели сотрудники метрополитена, которые вам карту разблокировали, что вы три раза к ним ходили?

Информация

В рейтинге
Не участвует
Откуда
Zürich, Zürich, Швейцария
Дата рождения
Зарегистрирован
Активность