Евгений Степанищев

Я — эксперт в области разработки веб-приложений и безопасности в интернете. Каждый месяц мой блог посещают около 90 тысяч человек. Работаю техническим директором в «Системах документооборота», занимаюсь электронным правительством.

Teamicide — командтоз?

Они вбивают клинья между членами коллектива, часто из-за зависти, что ДеМарко (DeMarco) и Листер (Lister) называют непереводимым термином teamicide (team - команда, а teamicide - созвучно suicide - самоубийство): непреднамеренный развал ранее сплочённых команд
Из перевода статьи Джоеля Спольски «О вреде премирования».

Такой уж и непереводимый? Я его предлагаю перевести как «командтоз». Достаточно очевидно или надо расшифровать?

P.S. Кстати, хорошая, на мой взгляд, статья про премирование (у Спольски всё-таки художественный рассказ, а не анализ) есть на Management.Com.Ua.

P.P.S. Смирнов убивает лулзы!
6 комментариев
8 апреля 2009 13:03

О5 25: JavaScript — не Java!

Ллео, +1, зачетно обосрал JS )))
Ненавижу javascript, а еще заточку на кроссбраузерность, где код JS вырастает раза в 3 из-за разных браузеров. Говно это. Кастрат Java. Долой JS!
Пишет у Каганова в блоге какой-то чудик об одном из самых гармоничных языков современности.

В 21-м веке есть люди, который до сих пор считают, что JavaScript «кастрат Java». Если кто до сих пор не знает — JavaScript и Java не родственники, название языка — маркетинговый ход, хотя первоначальное название языка («Mocha») было не лучше.

Ну и про «заточку на кроссбраузерность». Так уже давно никто не делает (если не считать каких-то узкоспециальных вещей), большинство использует фреймворки, где всё уже сделано за нас (я, например, неистово люблю jQuery), да и проблем совместимости остаётся всё меньше.
7 комментариев
8 апреля 2009 00:20

Libmapi: размер поля

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

Вывод, кажется, такой: в документации от Microsoft поле ReminderSet имеет тип boolean и размер 8 бит, вот по данным кажется, что оно всё-таки должно иметь размер 32 бита. В таком случае, всё пока встаёт на место. Сейчас поправлю и буду ещё тесты гонять.

P.S. Пока тесты не падают. Значит размер поля ReminderSet в структуре ExceptionInfo действительно 32 бита (это структура внутри PidLidAppointmentRecur).
10 комментариев
7 апреля 2009 18:32

Век живи, век учись, от нехватки памяти умрёшь

Наступил недавно на отличные питонячьи грабли. Хорошие такие, массивные, со специальными шипами на рукоятке.

Есть модуль, внутри него происходит fork — внутри потомка изолируется libmapi, у которой нещадно течёт память. Модуль используется внутри программы, которая перехватывает все exceptions (!). Знаю, что это неправильно, но она это делает в режиме отладки, для отладки и используется.

Загвоздка в том, что процесс-потомок выходил при помощи sys.exit. Если вы уже знаете в чём проблема, можете начинать хохотать. Я не знал и убил тестовую машину — кончилась память. Ваня Сагалаев тоже не знал.

sys.exit пораждает иключение и выходит с его помощью. Если где-то это исключение блокируется, то потомок, натурально, не может умереть. Решение простое — выходить надо по os._exit.
4 комментария
6 апреля 2009 19:25

Windows 7: repair screen

Ну, раз так, давайте я что-нибудь про Windows 7 расскажу, тем более повод есть: сегодня мой ноут вдруг резко вырубился, с ним такое бывает, а после включения «Винда» сказала, что загрузиться не может. После чего, немного почесала винтом и показала repair screen, там пару десятков минут что-то делала и запустилась. Один из экранов я сфоткал.

Repair screen (44.72КБ)

Кардинальное различие в том, что когда раньше Windows из NT-ветки (т. е. NT, 200x, XP, Vista) у меня падала, она, либо выводила диагностику («нет такого-то файла, ничего не поделаешь») и останавливалась, либо требовала установочного или восстановочного диска.

Видимо, сейчас (по крайней мере, если физически всё исправно и загрузочный сектор винта цел) ничего такого не надо. Ура.

P.S. Чтобы не гадали из-за чего вырубается у меня комп, я скажу сразу, так как причину знаю. Я случайно сломал USB-разъём (пластмастка выпала), но иногда, по привычке, туда что-то включаю, устройство работает, но иногда коротит питанием на корпус, у компа срабатывает защита.

Мне интересно, что бы мне потребовалось сделать, если бы у меня сломался (единственный) USB-порт на Mac Air? Тут я просто забил — у меня ещё четыре исправных есть, а там?

Ксения Возняк

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

Яблочники — это вообще гламурные кисо в мире ИТ…
Говорит нам товарищ Yeah с «Хабабры» и я с ним совершенно согласен. Вот что меня смущало во всём этом поклонении яблочной продукции — её фанаты всё время рассказывают какая пусечка их любимый гаджет и чему он научился с прошлого апдейта.

Я, вот, до сих пор не знаю всех новых клавиатурных комбинаций в Windows 7 (хотя работаю на ней не первый месяц), да и весь объём нововведений не представляю. Но будьте уверены, как только у «Эппл» выйдет новое кошачье (тут я какбэ намекаю на названия Mac OS X, для тех кто не в курсе), они заучат все новые комбинации, в деталях разберут все новые возможности и расскажут всем про все няшные плюшечки.

А так, по отдельности, они нормальные ребята, ага.

Ну, и чтобы два раза не вставать…

iTunes — гавно, гавно, гавно, пользоваться iTunes — стыдно! Стыдно! Пользоваться iTunes — стыдно! (надеюсь, сработает).
64 комментария
4 апреля 2009 17:14

«//» в ссылках

Как известно, в вебе, в подавляющем большинстве случаев, для адресации ресурсов применяются HTTP или HTTPS протоколы. Как вы понимаете, я не Капитан Очевидность, так что за этим последует какая-то интрига.

Бывает так, что одна и так же страница должна быть видна по обоим протоколам (например, у нас в интранетах такое бывает часто). В зависимости от того как пользователь зайдёт.

То, что я скажу дальше NDA не является, например, об этом рассказывал Олег Оболенский на РИТ-2007: все сервисы состоят из кусочков, кусочки грузятся с какого-то сервера. На практике это означает, что часть CSS и картинок, которые используются в нашем интранет-хозяйстве лежат на другом сервере и их ковыряют совсем другие люди.

В итоге, когда человек заходит на страницу, ему грузится ещё и CSS с другого сайта, внутри которых могут быть абсолютные (с протоколом) пути, которые подгружают картинки. Если человек зашёл по HTTPS, то и всё остальное должно отдаться по HTTPS (иначе, например, Internet Explorer заругается), если он зашёл по HTTP, то всё должно отдаваться по HTTP (HTTPS нагружает сервер и вообще отдаётся по шифрованному протоколу всё заметно медленее).

Как это реализовать? Как менять протокол, в зависимости от протокола страницы, если CSS, который грузится статичен и менять пути внутри него не получится? Делать два отдельных CSS?

Есть способ проще.

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

Способ заключается в том, чтобы не указывать протокол. Выглядит такой URL вот так: «//example.net/picture.jpg» и описан в RFC 1738 как «Common Internet Scheme Syntax»:

While the syntax for the rest of the URL may vary depending on the particular scheme selected, URL schemes that involve the direct use of an IP-based protocol to a specified host on the Internet use a common syntax for the scheme-specific data:

//<user>:<password>@<host>:<port>/<url-path>
Смысл в том, что в таком указания без протокола должен использоваться текущий тип протокола. Таким образом, хорошее решение — просто всегда указывать полный URL в таком виде.
18 комментариев
4 апреля 2009 02:33

Про технологии и чудеса



Отличный ролик про отношение к технологиям. На английском, но с русскими сабтитрами. Смотреть обязательно!
18 комментариев
3 апреля 2009 12:47

Псевдофакты: сердце слева

Где сердце? (10.92КБ)

Тёма недавно как-то возмущался по поводу «лжефактов» — совершенно нелепых стереотипов, которых многие придерживаются. Не беда, что в качестве примера он привёл два таких же нелепых стереотипа, живущих в его голове (кстати, куда более удачную статью на этот счёт написал Лёня Каганов).

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

Люди воспринимают слова врачей слишком буквально: как будто сердце находится сразу за левой сиськой. Я узнал, что это не так ещё в начальных классах, когда увидел собственный рентген сердца. Хочу открыть сейчас эту истину тем читателям, которое этого не знают (а так же прогуляли то занятие анатомии или никогда не задумывались почему на уроках по оказанию первой помощи руки, при массаже сердца, кладут на середину груди).

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

Теперь вы знаете куда надо класть руку, когда «колит сердце».

P.S. Сподвигла меня на написание этого поста картинка на сайте студии Лебедева в разделе «Понос».

P.P.S. Уже после написания я подумал, что не все смогут найти сердце, если никогда не видели его рентгена. Сердце — белый мешочек, начинающийся с перекрестия, и «лежащий» на белом большом внизу фото.

Наверное, так же стоит упомянуть о том, что примерно у одного из десяти тысяч сердце располагается ближе к правой стороне (а печень у них слева). Это называется «транспозиция внутренних органов», декстрокардию писать не буду, если интересно, можно посмотреть в «Википедии».
10 комментариев
3 апреля 2009 10:59

eGo Helium

eGo Helium (12.01КБ)

Где-то под Новый год купил через «Амазон» жене жёсткий диск от iomega — eGo Helium. Внутри — какой-то «Самсунг», но корпус красивый и стильный, размер небольшой, внешнего питания не требует и скорость — честный USB 2.0.

Мы довольны. Хотя скрепка на фото с сайта производителя в несколько раз больше обычной канцелярской.
6 комментариев
2 апреля 2009 18:36

Тёма — виртуал Воробья?

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

Позднее: Костя в комментариях сказал, что Воробей и Лебедев первого апреля поменялись журналами на день.
7 комментариев
2 апреля 2009 01:18

CSS sprites, data URI

CSS sprites, data URI+mhtml, склейка CSS с JavaScript. Что ещё придумают веб-мастера, чтобы добиться от браузера простой вещи: грузить ресурсы единым куском? Производителям браузера давно пора обратить на это внимание, а не заниматься всякой ерундой, типа раскрашивания бордюров (камень в огород WebKit).

Например, в FireFox есть прекрасно подходящий для этого протокол «jar» (а в Internet Explorer немного похожие на него «mhtml» и «res»). Этот протокол стал известен массам в основном благодаря уязвимости, которая работала через него.

URL выглядит как «jar:http://sample.org/file.jar/folder/file.png», где «http://sample.org/file.jar» — путь до JAR-файла, «folder/file.png» — путь внутри JAR. JAR — это просто ZIP-архив. Внутри него, как в любом ZIP-архиве, могут быть папки и файлы. Хорошо было бы засунуть ресурсы в такой архив и подключать их по пути внутри архива.

К сожалению, FireFox сейчас сделать так не позволит, а жаль (так они залатали уязвимость).
Комментировать
1 апреля 2009 15:30

С первым апреля!

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

Я не люблю этот «праздник». Даже серьёзные издания, на которые я подписан из-за их сжатости и информативности, которые весь год экономят моё время, первого апреля «позволяют себе пошутить». И я, дочитав заинтересовшую меня статью до конца, понимаю, что потерял время и ещё и свою память придётся чистить, чтобы прочитанное перешло из фактов в мусор. Не говоря уже о том, что куча этого «креатива» потом породит гору слухов и ещё долго будет находиться в поисковых запросах (надо «Яндексу» сделать в поисковой выдаче кроме кнопки «это спам», кнопку «первоапрельский материал»), а на дату мало кто смотрит.
13 комментариев
1 апреля 2009 10:24

Избыточность интернета и поиск в интранете

Все, вероятно, знают, что интернет очень избыточен — одни и те же документы, мысли, советы и так далее могут располагаться, в зависимости от популярности, на огромном количестве ресурсов. Одно и то же повторяется сотни, тысячи и сотни тысяч раз.

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

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

Но есть и вторая причина. До неё я додумался, когда стал анализировать почему поиск в нашем интранете меня не устраивает. Ожидаемо (правда?) что для поиска по документам, рассылками и прочему во внутренней сети у нас используется поисковик «Яндекса». Но я обратил внимание, что качество поиска куда ниже ожидаемого мной. В чём же дело?

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

В интранете всё не так, тут элементарно меньше народу и выше упорядоченность. Меньше избыточности, меньше объём, поэтому запрос приходится формировать очень точно, ключевые слова приходится перебирать чаще. Очевидно, что и качество поиска от этого страдает. Т. е. для интранета, где своя специфика, нужен собственный поисковик.
11 комментариев
31 марта 2009 20:03

Joke exchange

Шутка про повторяющиеся встречи (9.84КБ)
7 комментариев
31 марта 2009 12:40