среда, 24 августа 2011 г.

Тикетс РЖД ру или "Сколько вы говорите стоит этот сайт?"



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

- Венедикт Ерофеев, "Москва-Петушки" 


Дорогие создатели сайта ticket.rzd.ru, вы меня простите, есть ощущение, что сайт делали люди страдающие когнитивной дисфункцией.

Задача: хочу купить билет.

1. Курский вокзал. Открываю в браузере сайт http://ticket.rzd.ru , вижу информационную страницу. (внимание - дальше будет нецензурно)


Отличная такая информационная страница. Все в ней понятно. Естесственно, я нажимаю на ссылку "Купить билет". И что я вижу? Я, блять, вижу эту же страницу!



2. Курский вокзал. Но я же уважаемый специалист и тоже не лыком шит. Я начинаю озираться и думать, куда бы мне еще нажать. В правом верхнем углу страницы я вижу кнопку "Вход" и в нее нажимаю. Теперь-то все получится!



Отличная кнопка "Вход" предлагает мне ввести имя и пароль. Я старый опытный волк, постоянно покупаю сцуко билеты на этом сайте и ввожу требуемое.


Чудесно. Веничка, ты где?

3. Ты Веничка опять на Курском вокзале!

Опять там же! Опять на главной странице! И если опять нажать на "купить билет" - ты никуда с этой страницы, сука, не денешься!

4. Курский вокзал. Но я же блин внимательный уважаемый специалист. Я внимательно изучу меню. И я найду два прекрасных пункта.


После того как ты, сцуко, зарегистрируешься, в меню "Купить билет", сцуко, появится пункт "Покупка билета"! И вот ээээтот-то пункт ведет в оформление билета! А если нажать не "Покупка билета", а "Купить билет", ты окажешься где? Правильно, на этом же ебучем Курском вокзале.

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


Как надо было сделать

Надо было сделать вот так:



Нажимаешь на "Купить билет" -- переходишь к оформлению билета.

все.







среда, 20 июля 2011 г.

Две божественные утилиты для создания скриншотов веб-страниц

web page to image render
command line tools

Crossplatform, webkit based CutyCapt

MS-specific, IE based IECapt

среда, 6 июля 2011 г.

Что читать начинающему .Net программисту

Подборка, составленная коллективным разумом RapidSoft

Много под катом

Workflow вреден

В продукте, реализовывающем общюю функциональность, нельзя требовать от пользователей следовать конкретному workflow (пусть даже очень красивый), который нельзя изменить.

Почему? Потому что не угадаете про workflow, workflow меняется со временем, у разных пользователей он разный.

Представьте, если бы скороварка требовала, чтобы вы сначала загрузили в него картошку, затем - морковь, затем-лук. А приправы разрешалось бы положить только спустя 15 минут после включения.

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

В этом ключе хорошим примером можно назвать Microsoft SharePoint - продукт предоставляет функционал работы со списками и возможность прикрутить к спискам некий рабочий процесс.

вторник, 5 июля 2011 г.

Если бы скайп купил Google...

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

Какие группы легко автоматически определить..

* География. Скайп может опрелить у контакта регион (до города)  и показать отдельно, например, всех из Зеленогада. Кроме того, у пользователей часто определен location
* Age-gender группы. это легко определять из профиля.
* по ключевым словам в чатах. если два человека, например, писали мне в чатах слово "дедлайн", я возможно хочу видеть их в одной группе :)

Частично автоматические группы в скайпе кстати есть - это Today, Yesterday и другие date-specific


Леонид Черняк "От мейнфреймов к облакам".


«Процессор – это транзистор современности». Новый уровень отличается тем, что здесь также собираются мэйнфреймы, но виртуальные, и не из отдельных транзисторов, как полвека назад, а из целых процессоров или целиком из компьютеров. На заре ИТ многочисленные компании и организации «лепили» собственные компьютеры из дискретных компонентов, монтируя их на самодельных печатных платах – каждая организация (а в СССР каждый НИИ) делала свою машину, и ни о какой стандартизации или унификации и речи не могло быть. И вот на пороге второго десятилетия XXI века ситуация повторяется – точно так же из серверов-лезвий, компьютеров, разнообразного сетевого оборудования собираются внешние и частные облака. Одновременно наблюдается та же самая технологическая разобщенность и отсутствие унификации: Microsoft, Google, IBM, Aptana, Heroku, Rackspace, Ning, Salesforce строят глобальные мэйнфреймы, а кто-то под собственные нужды создает частные облака, которые являются теми же мэйнфреймами, но меньшего масштаба. Остается предположить, что впереди изобретение интегральной схемы и микропроцессора.

среда, 29 июня 2011 г.

Angry Birds for Chrome

http://chrome.angrybirds.com/ пока бесплатный )

Парни сделали его на webGL и GWT

суровые )

пятница, 24 июня 2011 г.

Google Body

Опять будущее наступает
http://bodybrowser.googlelabs.com

Браузер человеческого тела со всеми потрохами. работает в Chrome

вторник, 21 июня 2011 г.

Visio - mouse pan

Пока опять не забыл, чтобы двигать холст мышкой (pan mode) - Ctrl+Shift+Right mouse click

четверг, 16 июня 2011 г.

среда, 11 мая 2011 г.

воскресенье, 3 апреля 2011 г.

Последние адреса IPv4

ух ты! оказывается, сегодня ровно 2 месяца с тех пор, как IANA распределило последний блок IP адресовс (в IPv4)

суббота, 26 марта 2011 г.

IE9

Поставил Internet Explorer 9. Вкратце - работает очень быстро, пользоваться удобно. Можно теперь не залпать на Хром

PS - зависания view source исправили, IE9 с RoboForm 7 не тормозит при просмотре исходников

воскресенье, 13 марта 2011 г.

Гипертрофированное стремление к совершенству


"... Леня,  бедняга,  сидит  и  день  за  днем  мучительно,  до
помутнения в  мозгах, взвешивает  на внутренних  весах  своих, как будет
точнее  сказать:  "она  тронула его руку"  или  "она притронулась  к его
руке"...  И в  отчаянии  он  звонит за  советом  Вале, и  жестокий  Валя
Демченко, не теряя ни секунды, отвечает  ему  знаменитым аверченковским:
"Она  схватила  ему  за руку  и  неоднократно  спросила,  где  ты  девал
деньги..."

— Стругацкие, "Хромая судьба" 


Последние пару месяцев веду проект по разработке с тремя очень талантливыми программистами. Иногда на архитектурных брифингах парни начинают яростно спорить о вещах, с моей точки зрения, яйца выеденного не стоящих. Например, можно ли в юнит тестах инициализировать тестовые данные при инициализации базы либо же в каждом из тестов нужно все заново удалять и пересоздавать. Или же - не стоит ли выбросить из стайл-чекера правило, запрещающее ПЕРЕМЕННЫЕ_ТИПА_ТАКИХ, чтобы можно было константы описывать по-старинке.

Стоят значит у доски четыре человека и до хрипоты спорят. Могут час-полтора так простоять, приводя друг другу всякие аргументы. Иногда меня тоже вовлекают и уже я с ужасом обнаруживаю себя, яростно чего-то доказывающего, ломающего копья. Как минимум раз в неделю такое. 16 человеко часов в месяц уходит, а за 16 человеко часов можно, в общем-то, дофига полезного сделать.

Обнаружил, что у меня в голове ползунок, стоящий между "Мега-красивый-идеальный-сверкающий-кодом" и "Кодом, прагматично реализующим требования" стоит процентах на 60
(и то, потому что мы пишем фреймворк, и API в нем - важен. В обычном же проекте, я придерживаюсь баланса где-то на 70-80 процентов, то есть ратую за код скорее прагматичный, чем красивый.

Почему? Потому что 2011 год на носу, все IDE умеют рефакторинг, за юнит-тестами мы
следим а времени на реализацию функционала, как всегда, не хватает. Поэтому тратить
4 часа в неделю на решение проблемы тысячелетия: как написать "притронулалсь" или "тронула", мне элементарно жалко. Потом переделать можно.

Постскриптум:

Есть при этом вещи, в которых я считаю дотошность при кодировании оправданной.
Навскидку,

- API сервисов (потому что язык API будет потом
сильно влиять на производительность прикладных программистов, он должен быть "в тему")

- Разделение кода на артефакты (потому что лишние зависимости порождают плохой код, а переделывать костяк системы дольше, чем нормально сделать сразу)

- Документирование нетривиальных и нечитаемых кусков кода (потому что таких кусков мало,
  и всегда есть множество причин, по которым код сделан нечитаемым, и причины эти
  нужно донести до людей, которым этот код в будущем придется менять)

среда, 2 февраля 2011 г.

youtube - snake

Если в момент, пока youtube подкачивает видео и крутит крутилку, нажать стрелку на клавиатуре, можно поиграть в "Змейку"