Tags: программирование

Torbasow

О тягостях работы программер-надсмотрщика

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

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

И как это выглядит с точки зрения начальника? А с его точки зрения это выглядит, как будто я едва ли не вовсе прекратил работать! Очень неприятно. Особенно в сезон проклятой сенной лихорадки, когда меня качает, а мысль и правда обрывается на лету[, а на тебя всё равно смотрят и ждут осмысленного ответа]. Ужас.

Torbasow

0 — натуральное число или нет

Для понимания контекста: в Javascript и PHP массивы индексируются с нуля, в PostrgeSQL — с единицы, в CSS-селекторе nth-child первый узел имеет индекс 1, но n в выражении при этом отсчитывается начиная с 0

Мой негодующий вопль в офисе последний день перед отпуском: «ООН должна уже принять обязательное решение, является ли ноль натуральным числом или нет! Всё равно какое, но определённое и однозначное!»

На самом деле, я не надеюсь на ООН. Но у мировой социалистической революции есть задача, да…

Torbasow

Кто к нам идёт вместо апсар от программирования

За последние полгода к нам пытались наняться программистами три чудака.

Первый оказался в программировании ни бум-бум и без заметной к нему склонности, я об этом писал, через месяц мы с ним расстались с взаимным облегчением. Потом приходила собеседоваться девушка, судя по вконтакту, вполне себе волоокая. Но ажиотаж в нашей лаборатории вспыхнул зря: она претендовала на совершенно несуразную для юниора в провинции зарплату 40 тыс. руб.— без опыта работы, на вопросы шефа по декларированной специализации «разработчик БД» ответить не смогла. Я уж не знаю, на что она рассчитывает, но предложение фирмы её не устроило. Наконец, под самый Новый год опять нанялся парень. Мы с шефом осуждающе качали головами, глядя как он всё время бегает курить (у нас коллектив-то некурящий) — и не зря: проработал полтора дня и ушёл на больничный. После Нового года появился только на третий или четвёртый рабочий день, чтобы уволиться.

В общем, странные, странные люди…

Torbasow

Сколько стоит диплом программиста

Ответ нетрудно предугадать, приняв во внимание, что я — не торговец дипломами, а программист.

Ноль, ничего не стоит.

Вчера уволили после месячного испытательного срока парня, в отличие от меня,— дипломированного программиста. Нашему с шефом убеждению, что можно брать программиста любого уровня, учить и работать, нанесён жестокий и циничный удар. Потому что мы не могли себе представить, что можно несколько лет изучать C++, защитить диплом в области Web-разработки, утверждать своё владение ООП, Javascript, PHP и SQL — и при этом не иметь вообще никакого представления о самых базовых вещах программирования. Он, например, не понимал идеи параметров функции и даже саму функцию путал с инклюдами, какое уж там объектно-ориентированное… Действовал он путём копипасты кусков кода из Интернета и таким путём кое-как выполнил-таки «разогревочное», рассчитанное на час (ну, для совсем нуба пусть на день-два) задание за месяц. И совсем добил меня, вновь перепутав Javascript и Java,— после того, как я его раз десять поправлял, и шеф по этому поводу рявкал делал резкие замечания и разъяснял. Остаётся надеяться, что это был такой тонкий троллинг, в небезосновательном расчёте на то, что многих Web-разработчиков такая ошибка нешуточно вымыкает.

В общем, ректорат «Сражающейся академии» нужно под суд отдавать за то, как они на платном отделении дипломы раздают.

Нет, я по-прежнему считаю, что выучить программированию нужно даже обезьяну, но это же нужно время и внимание.

Между тем, моя отчаянная попытка нанять специалистку специалиста с моего родного факультета потерпела крах. Все они к выпуску или не программируют, или давно работают, или не клюют на предлагаемые у нас начальные условия. Пошукать, что ли, третий-четвёртый курс в расчёте на полставки? Это совсем мало выйдет, но, может, кто поверит в перспективы.

Torbasow

Латинический шовинизм в модуле freelinking для Drupal

Моему возмущению нет предела.

Заканчиваю (в основном, на работе в перерыве) подключение запланированных модулей к Маоизм.ру. Последние несколько дней провозился с организацией Wiki; думал, потом подключу плагины к WYSIWYG-редактору, и можно будет переходить к заполнению таксономии и тонкой настройке. Ан нет, упёрся в тупик на финальной стадии: фрилинкинг не работает и всё тут. Речь об упрощённой организации ссылок: ну, типа, когда вы в Википедии набираете что-то вроде [[Российская маоистская партия]], движок автоматически подставляет ссылку на соответствующую статью. А тут ни черта не подставляет. Вот что бы стал делать простой смертный? Погуглил бы. Погуглил. Не нашёл ничего.

Сегодня занялся этим дома, где у меня открыт доступ к PHP-коду движка. Несколько диагностических сообщений — и вот она, истина. Ларчик просто открывался: /(?<!\\)\[\[([A-Za-z0-9]{1}.+\:?.+)]]/Uu в модуле freelinking. Чувствуете подвох? Да, квантификатор ? относится тут только к двоеточию, а не к названию плагина вместе с двоеточием, как должно быть в соответствии с описанием модуля. То есть вот это будет работать — [[Path:Российская маоистская партия]]. И у западных пользователей работает без названия плагина, как полагается,— пока то, что они пишут в скобках, начинается с буквы из английской латиницы (или цифры). Регулярка принимает это выражение, как будто оно начинается с корректного указания плагина, дальнейший код не видит в совпадающем фрагменте двоеточия, заключает, что плагин не указан, подставляет умолчательный и всё тип-топ. …Пока какой-нибудь перфекционист, мой брат по духу, не вздумает написать, например, [[Škoda Holding]]. Тогда его ждёт сюрприз — фрилинкинг не сработает, ссылка не подставится.

Оказывается, эта проблема обсуждалась с участием кириллицепишущего и шведа. В результате родился патч, в коем регулярка заменяется на /(?<!\\)\[\[([A-Za-z0-9]{1}.+\:?.+|.+)]]/Uu. Сделайте меня развидеть это! Она работает, но, вероятно, пропускает и множество некорректных вариантов. Не разумею, как можно сразу не углядеть, что это полностью эквивалентно более простому /(?<!\\)\[\[(.+)]]/Uu, то есть чему угодно в паре квадратных скобок вообще? Я так понимаю, у патчеров в мозгах витала нездоровая мысль, что пайп (|) в регулярке эквивалентен возможному пайпу в синтаксисе фрилинкинга.

Придётся зарегистрироваться, чтобы рассказать им, как они неправы. Мне видится, что правильно было бы так: /(?<!\\)\[\[(([A-Za-z0-9]{1}.+\:)?.+)]]/Uu. Испытано, работает.

Torbasow

Мой год минувший и год будущий

Коротко говоря, тут я обобщу некоторые аспекты своей жизни в 2011 г. и замыслы на будущее: партийная работа, профессия, общение с людьми и поездки, новая техника и гаджеты, книжки, фильмы и игры. В первую очередь для себя, но и прочим глянуть не возбраняется (а сопартийцам, да и вообще более-менее единомышленникам, первую, политическую часть — рекомендуется).

Collapse )
Torbasow

Вы видите вон то облако, почти что вроде верблюда? По-моему, оно похоже на ласточку.

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

Torbasow

«Махосёдзё-отряд „Алиса“», «Бэттл-прогрэммер Сирасэ», «Д. Н. Ангел»

АлисаФантасмагория «Махосёдзё-отряд „Алиса“» (надеюсь, всем уже известно, что махосёдзё — это девочки-волшебницы?) хоть и про юную бунтарку и про защиту зверушек, а мне претит в высшей степени.

Соционика могла бы объяснить, почему мне так антипатична главная героиня с её не проходящей ухмылкой, дурацкими шуточками и бесцеремонностью. Не интуитивно-логическому интроверту такое вынести без скрежета зубовного. Как описывает Стратиевская, «Неприятностям нет места в жизни Гюго. Он никому не позволяет себя ни огорчать, ни разочаровывать, поскольку считает, что окружающий мир обязан соответствовать его ожиданиям… И эта как раз та позиция, которую всеми средствами пытается оспорить и опровергнуть Бальзак…: получается, кто-то другой должен расплачиваться за демонстративный позитивизм, наивный идеализм и нарочитый оптимизм Гюго…?». Я, правда, предпочитаю считать, что мои претензии к Алисе хотя бы отчасти универсально морально обоснованны. Всё-таки принятие решений за других даже без вникания в ситуацию и отказ принимать на себя всю ответственность за них, до последнего прикрываемый воинствующим шапкозакидательством,— это выходит за пределы просто особенностей характера.

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

Сирасэ и юная пассия«Бэттл-прогрэммер Сирасэ» меня разочаровал. Впрочем, сразу можно было догадаться, что суперхакер имеет весьма малое отношение к реальным галерным программистам. Ну что общего у меня может быть с персонажем, сразу заявляющим: «Я не работаю за деньги». Нужды он не испытывает, целей в жизни не имеет, да ещё и кавайные лоли на него вешаются (к слову, в третий — и это не последний! — раз наблюдать один и тот же шаблон, как их застукивают, становится уже совсем не смешно и не интересно) — совершенно чуждый образ. Разве что унынием близок. Но с чего ему унывать? Смутные намёки есть, но вообще это остаётся за кадром.

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

Нет, в целом нельзя сказать, что сериал мерзкий. Он даже не слишком длинный. Просто никаких надежд на него возлагать не стоило.

Я уже упоминал, что посмотрел пилотный эпизод «Д. Н. Ангела». Так вот: не впечатлён, искать продолжение не буду. Это было не так давно, а я уже практически не помню персонажей и завязку. Оупенинг память не освежил — ну, значит, там ничего заслуживающего внимания и не было или, по крайней мере, мне не показалось. Если сравнивать с вышеупомянутыми сериалами, я бы поставил «Д.Н.А.» посередине — пониже «Сирасэ», повыше «Алисы», с однобалльными отрывами.

Torbasow

«Одни мужчины!»

На работе с месяц назад был курьёзно-печальный эпизод. Сидим, работаем; открывается дверь, заглядывает незнакомая тётушка — видимо, из другой фирмы того же инкубатора — и восклицает: «Ах! Одни мужчины… Прекрасно!»

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

Собственно, вот. Порядком угнетён. Впрочем, не думаю, что гетеросексуальным женщинам и гомосексуальным мужчинам там реально было чем восхищаться, особенно учитывая, что я сижу в самом углу и вряд ли хорошо виден от входа. С другой стороны, девушки тоже разные бывают; так что есть основания попытаться предполагать, что это может быть благо, что их нет. …Да нет; среднестатистически они хотя бы следят за собой больше, нежели парни, во всяком случае, у нас в провинции, и пахнут чаще кремами, чем табачным перегаром.

Torbasow

Теперь я быдлокодер…

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

Collapse )

А происходит такое плачевное положение дел из-за состояния рынка: клиенты не способны оценить качество продукта, не задумываются о его будущем функционировании, поддержке и развитии, заставляя разработчиков соревноваться, кто сделает нечто похожее на его ожидание дешевле и быстрее. Ну, а дешевле и быстрее, конечно, и получается чёрт знает что, накапливающее баги и ужасающее своего создателя.

P. S. На самом деле, всё ещё хуже, чем мне показалось. Если написать в объявлении своего класса даже не $_primary_key="имя", а $_primary_key=array("имя"), неугомонный фреймворк не оставит сие свойство нетронутым. В некоторый момент (в методе _setupPrimaryKey()) он из каких-то своих побуждений перенумерует этот массив с единицы. То есть до этого момента к имени первичного ключа нужно обращаться как $this->_primary_key[0], а после — $this->_primary_key[1]. Ну не ужас ли? У него семь пятниц на неделе, у этого фрейворка! Кстати, создать модель для таблицы, не имеющей уникального ключа, эта вражина не даёт в принципе. Даже если апдейтить таблицу не предполагается и ключ на практике никогда не потребуется.