bash.im ithappens.me zadolba.li

Программизмы

12926

Всё как у людей

Как я люблю опенсорс-библиотеки!

Вот взять какую-нибудь закрытую библиотеку/SDK типа DirectX. Тебе даётся собранный продукт, где в папке include — заголовочные файлы, в lib — файлы библиотек, рядышком шикарная документация. Подключил — работай.

Но возьмём тот же V8 (такая штукенция из движка Хрома, которая работает с JavaScript). Там всё как у людей, ведь люди любят заниматься сексом. Где-то в интернетах документация, есть даже статья, как это всё собрать. Но добрые разработчики позаботились и дали возможность программисту поахаться. Сначала нужно установить SVN, чтобы всё склонировать с Гуглокода (в то время как Гитхаб предоставляет возможность скачать ZIP). Собрать всё это дело можно, только установив сторонние инструменты типа Питона. К Питону нужно прицепить GYP, в third_party докачать ICU (без которого не будет сгенерирован солюшн), сгенерировать SLN-файл и получить 62 ошибки от компилятора, потому что заботливые разработчики недосмотрели и куда-то дели несколько файлов с исходниками, которые компилятор не может найти. Зачем-то они положили ещё кучу тестов, которые собираются лишние 10–15 минут.

Зачем делать удобный SDK, если можно дать всё как есть, и пускай разработчик разбирается, ведь у него куча свободного времени!

12867

Байты, вас здесь не лежало

Всё абсолютно правильно написал автор истории «К спасению через сохранение»: нажатие хоткея для сохранения у программиста, как бэкапы для админа — на полном автомате происходить должны.

Но вот очень давно, когда интернет не был ещё быстрым, а диски — большими, произошёл у меня забавный случай. Писал я какую-то разовую утилю, регулярно нажимая Ctrl+S, а параллельно на этот же раздел диска скачивалось что-то сильно объёмное уже не первые сутки. И вот в определённый момент в ответ на хоткей Билдер выдал мне абсолютно левую ошибку. Ну ладно, перезапустим…

Насколько я был удивлён увидеть после перезапуска абсолютно чистый файл исходника — не передать словами.

Ответ на эту загадку нашёлся быстро. Место на диске заканчивалось. При сохранении файл на долю секунды стал нулевой длины; за это время последние байты на разделе заняло скачиваемое, и Билдер, в котором не было предусмотрено защиты от таких идиотов, как я, выдал эксепшн.

Итог: несколько часов потерянного времени и опыт не хранить даже разовые проекты на разделах с остальным мусором.

12866

Не стреляйте в копипастера

Недавно работал в сравнительно небольшом IT-отделе небольшой организации. Кругом одни IT-специалисты, которые высокомерно смеются над пользователем: вот, мол, неуч, не умеет скриншоты присылать!

И вот в очередной раз решил один из программистов посмеяться над незадачливым пользователем, что тот переписал месседж-бокс в текст письма вручную. Не придав этому значения, я продолжил работать. Но когда над этим бедным «неучем» смеялось уже человек шесть, я всё же поинтересовался, что там такого прислал пользователь. Каково же было моё удивление, когда я увидел в тексте письма что-то в стиле:

[Window Title]

SomeTest

[Content]

Не удаётся найти «SomeTest». Проверьте, правильно ли указано имя, и повторите попытку.

[ОК]

Высокомерия у них поубавилось, потому что этот «неуч», оказывается, умел пользоваться Ctrl+C и Ctrl+V, в отличие от программистов, что разрабатывали это самое ПО.

12826

Прозрачные перспективы

Какая досада: не выучил он урок по информатике, а отвечать надо. В спешке с утра готовит шпору. А вот и «допрос». Мальчик, а мальчик, что такое CLS? Ловкий, незаметный для учительницы взгляд в шпору, а там — clear screen. Он и перевёл: «прозрачный экран».

Учительница не оценила дальновидности ученика. А теперь мы знаем: он оказался прав. Индикаторы на лобовом стекле, ПО для дополненной реальности… А Explay Crystal даже успел изрядно устареть.

12815

Пусть код поёт

Я увольняюсь. Мне надо отработать две недели. Я тимлид. За эти две недели я должен научить нового сотрудника тому, что сам изучал десять лет (22 года программирую, из них десять в вебе).

— Объясни мне всю логику приложения, а ещё лучше — напиши комментарии к каждой строчке кода, — просит сотрудник.

— У меня код документирован во всех критических местах.

— Я по образованию музыкант, мне надо всё по полочкам, ещё и диезы расставить.

— ♯♯♯♯♯♯ — на тебе диезы, ♭♭♭♭♭♭ — на тебе бемоли, но учись разбираться в чужом (говно)коде. Я за десять лет ни у кого не спрашивал, зачем он завёл переменные $nah и var poh = 'ololo'.

В итоге сотрудник обижается, но пытается разобраться в моём коде, иногда названивая в скайп. Я получаю расчёт, устраиваюсь на другую работу. Happy end!

12801

Система контроля нервов

Вот это номер! Вроде бы ресурс для айтишников, на который айтишники и пишут. Программисты в том числе. Но одни теряют результаты работы за день, а другие рекомендуют не сохраняться, а не то несколько действий не отменить. Удивлён. Очень сильно удивлён.

Есть такая штука — система контроля версий. Например, git. Делаете осмысленное, логически завершённое изменение — делаете коммит. Оставляете ещё осмысленный комментарий к коммиту. Отключили электричество, UPS не спас (мало ли, тоже не панацея) — не катастрофа. Включаемся — работа жива. Ну, может, последняя строка ушла в небытие. Всё же не убитый день работы.

Потоп, пожар, ураган, прямое попадание артиллерийского снаряда — и компьютера больше нет. Вы можете быть уверены, что с вами такого не случится? Всякое бывает. Берём другой компьютер, логинимся на Гитхабе — и вот оно, счастье: результаты работы в сохранности, можно продолжать, можно выполнить работу в срок.

Допустил ошибку, и теперь отовсюду выпиливать переменную? Тоже бывает. Кто не ошибается? Можно просто-напросто откатиться к определённому коммиту, в котором ошибки ещё не было. А можно и лучше поступить: экспериментальную фичу, в которой пока до конца не уверен, реализовывать в отдельной ветке, не трогая основную. Сделал, отладил, всё хорошо — объединяй ветки. Сделал, ужаснулся, понял, что получилось плохо — убей ветку, и дело с концом.

Кстати, большинство сред разработки, не только современных — с давних пор такое помню, — поддерживают работу с популярными системами контроля версий. Поддерживают прозрачно: достаточно кнопочку нажать, и всё будет сделано, при этом понятно, что произойдёт.

И вопрос, сохраняться или не сохраняться, вообще неактуален. Хорошего кода, коллеги!

12788

Муж, кот и домашний питон

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

— Родная, а зачем ты даже после целых чисел ставишь точки? — спрашиваю я, поглядывая на процесс.

— Ну зачем же нам лишнее приведение типов? — смотрит она на меня большими удивлёнными глазами.

Подкалываю:

— Тогда уж и рекурсию раскрой.

Посмеялись. А вообще, заботливая она у меня. Не только за мной и котом ухаживает, но даже процессор старается лишний раз не нагружать.

12781

Индусский слог

Будучи школьницей, зело заинтересовалась литературой. В писательском смысле: рассказики там, сказочки, стишочки… Ну, многие баловались, я думаю. Из девчонок — так, наверно, почти все. Человек я педантичный, если что-то интересно, выясняю о предмете всё до конца. И тут тоже решила полностью изучить вопрос: лазала по сайтам соответствующим, читала учебники по русскому, как приключенческие романы — пачками и от корки до корки, обменивалась опытом с единомышленниками. Не знаю насчёт таланта — не мне судить, но технику написания литературного произведения любого жанра и тематики отточила по максимуму, насколько смогла.

А потом пришла пора выбирать будущую профессию. Но, как известно, «филолог — не профессия» (прошу прощения у всех филологов), да и писать по 8–10 часов в сутки я не могу (пробовала подрабатывать копирайтером, чуть не рехнулась). Долго объяснять почему, но пошла на программиста. И знаете, что я скажу? Оказалось, писать код — то же самое, что писать рассказ. Только языки разные — и всё. Схожий тип мышления. Схожий алгоритм создания «продукта». Тут и там важна точность, а то поймут тебя неправильно — и пиши пропало. На адептов «индусского кода» выливается столько же ругани, как и на тех, кто не различает «-тся» и «-ться», «одеть» и «надеть», но хочет называться писателем. И, конечно, столько же нервов тратится, если вдруг почему-нибудь вырубился комп, а ты не сохранился (упаси нас всех Ктулху от такого горя!).

Так что я уже восемь лет как программист с писательским хобби. Вот, нашла на днях интересную схемку в книжке по лингвистике. Завтра в проге применю, пожалуй…

12776

С новым квантом

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

Бухгалтерам, как и другим нормальным людям, такая точность нужна в очень редких случаях. В их учёте квант времени — это день; время внутри одного числа используется, только если с одним и тем же объектом произошло несколько последовательных операций, для отражения их очерёдности. «Жёлтый глюк» это понимает, кстати, и по умолчанию принимает начало периода за DD.MM.YYYY 00:00:00, а конец — за DD.MM.YYYY 23:59:59. Он вообще прямо из коробки понимает много чего — поэтому и задушил в своё время конкурентов, практически монополизировав российский рынок ERP-систем.

Программист, помни: успешный продукт не только реализует необходимую пользователю функциональность, но и делает это в удобной для него форме с учётом принятых в профессии умолчаний. Если разные пользователи совершают одну и ту же ошибку раз за разом — это косяк интерфейса.