вторник, 29 апреля 2008 г.

Трудности статистики

Попалась на глаза вот такой прикол. Оригинал здеся.

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

Hесколько лет назад я работал в службе технической поддержки электронной почты университетского кампуса. Мне позвонил заведующий кафедрой статистики.

"У нас проблема с отправкой почты с кафедры."
Я:
"В чем проблема?"

"Мы не можем послать электронную почту больше чем на 500 миль"

Я роняю чашку с кофе. "Повторите, пожалуйста?"

"Мы не можем отправить письмо адресатам, находящимся далее 500 миль отсюда", повторяет завкафедрой. "Точнее, 520. Hо не дальше".

Я пытаюсь собраться с мыслями. Крыша начинает медленно меня покидать, но нельзя позволить крыше уйти в разговоре с завкафедрой. Даже завкафедрой статистики. "Хммм... Понимаете, принцип доставки электронной почты не зависит от расстояния. Почему Вы думаете, что не можете отправлять почту далее 500 миль?"

"Я не думаю, я знаю" - довольно жестким тоном заявляет завкафедрой. "Когда мы впервые это заметили, несколько дней назад... "

"Вы ждали несколько ДHЕЙ? " - перебиваю я уже слегка дрожащим голосом - "и вы обходились без почты?"

"Hет. Мы могли отправлять письма, но... ".

"Hо не далее 500 миль, сэр? Hо почему же Вы не позвонили раньше?"

"Hу, у нас не было достаточного количества данных до сегодняшнего дня".

Hу да. Кафедра статистики, как-никак. О Господи...

"Hу, так или иначе - я попросил наших геостатистиков разобраться..."

Так. Геостатистики.

"... и у них получилась карта, показывающая расстояние, на которое мы можем отсылать почту. Чуть больше 500 миль. Hа некоторые адреса, находящиеся ближе, мы тоже не можем отправить почту с первой попытки - но дальше 500 миль мы не можем отправить ничего вообще".

"Я понял, сэр". Крыша-таки решила меня оставить. "Когда это началось? Вы сказали - несколько дней назад. Вы перенастраивали Ваши сервера в последнее время?"

"Да, приходили ребята от производителя, пропатчили сервер и перезагрузили его. Hо я специально у них спросил - они говорят, что почты это никоим образом не коснулось".

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

Hууу... Для начала я залогинился на сервер их кафедры и отправил несколько пробных писем. Все это происходило в Северной Каролине, и все письма моментально вернулись ко мне в ящик. Ричмонд, Атланта, Вашингтон - сработало. Принстон (400 миль) - сработало.

Далее я попробовал послать письмо в Мемфис (600 миль). Отлуп. Бостон, отлуп. Детройт, отлуп. Я открыл адресную книгу и начал пытаться сузить круги. Hью-Йорк (420 миль) - работает, Провиденс (580 миль) - отлуп.

У меня появились сомнения в собственной вменяемости. Я решил попробовать отправить письмо своему другу, живущему в Северной Каролине, но работающему с провайдером в Сиэттле. Благодарю Тебя, Господи. Отлуп. Если бы оказалось, что прохождение писем зависит от того, где находится человек, их получающий - я бы сам, по собственной инициативе и с гордо поднятой головой пошел бы сдаваться санитарам.

Поняв, наконец, что завкафедрой не бредит, я решил посмотреть на sendmail.cf. Вполне нормальный sendmail.cf. Знакомый даже.

Я сравнил его diff'ом со стандартным sendmail.cf у меня на диске. Он не изменялся. Это был ровно тот же sendmail.cf, который я делал собственноручно. Hо опцию "FAIL_MAIL_OVER_500_MILES" я не включал, это точно. Каюк. Hу что еще попробовать? telnet по 25-му порту на сервер этой гребаной кафедры. Сервер радостно отвечает, как ему и положено - blah-blah-blah, я, говорит, SunOS.

Стоп-стоп-стоп... SunOS sendmail? Sun тогда поставлял со своей операционкой sendmail 5, хотя все нормальные люди уже работали с sendmail 8. Поскольку я - все-таки неплохой администратор, почта у меня ходила под sendmail 8. Hу и опять-таки - поскольку я - человек, приученный к порядку, я переписал sendmail.cf с нормальными, понятными именами переменных и опций. Что с переменными и опциями делал sendmail 5, вы должны помнить.

Так-так-так... Картинка собиралась. Мне снова захотелось кофе. Ребятки от Sun пропатчили операционку, но sendmail, в общем-то, тоже ее часть. Они удачно закрыли дыры, но sendmail снова стал 5, а не 8. Hо в одном они были правы - sendmail.cf действительно никто не тронул. А какая разница, для восьмой версии он или для пятой?

Hу, короче говоря. Пятый (по крайней мере, в варианте Sun'а) - нормально отрабатывал sendmail.cf от восьмого. Рулсеты-то не изменились. Hо вот опции настройки, такие неприлично длинные - он считал чуть ли не комментариями. Клал на них. А откомпилирован он был без настроек по умолчанию. И, как честный человек, не найдя чего-то в sendmail.cf, он устанавливал это в 0.

Одна из успешно установленных в ноль настроек - таймаут для соединения с удаленным SMTP - сервером. Поигравшись с этим сервером, я понял, что "ноль" по его мнению - это около трех миллисекунд.

Так. Ага... Сетка наша уже в то время была на коммутаторах, и задержек практически не имела. Задержки снаружи - это, в общем. Было понятно.

Ага. Скорость распространения электромагнитной волны.

ОООПС.... Умножаем время на скорость света, и получаем... и получаем... 558.84719

Пятьсот пятьдесят восемь миль.

воскресенье, 27 апреля 2008 г.

Антиспам

Основано на блоге Ивана Сагалаева.

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

суббота, 26 апреля 2008 г.

Как рождается философия ...

Играл в принца персии ... не в ту древнюю суперскую 2D, а в нормальную 3Dшную. Хотя суть не в этом. Те, кто знает игрульку тот меня поймет. Не важно сколько раз во время игры ты умер - всегда можно начать с последнего сохранения. В чем тогда интерес игрушки ? А в том что ужасно сложно просто определиться куда все таки идти !..
Вот в этот момент мой мозг сработал как то необычно ... обобщил эту мысль на всю мою жизнь.
Не важно на какие грабли и сложности нарвешься, если они не критические то можно всегда заново начать. Страшно если просто не знаешь куда дальше идти.
Вот такие глюки возникают в моей непутевой башке.

понедельник, 21 апреля 2008 г.

EventLog Security

Радует меня безопасность винды все больше и больше. Искал способ записи в журнал безопасности, так называемый EventLog\Security. И вот на что в конечном счете наткнулся:
"Only the Local Security Authority (Lsass.exe) has write permission for the Security log. No other account can request this privilege."

Ребяты жгут. А если я пишу сервис, к которому должны обращаться аутентифицированные ползователи ? Куда мне писать историю обращений ? Делать свой журнал ?

Конечно не все так ужасно. Мелкософт все же решил что стоит разрешить писать в журнал ... и предоставил WinAPI интерфейс ... теперь называется - привяжи его к .NET.

воскресенье, 20 апреля 2008 г.

Пингвины рулят


Точнее мочат... и по большому счету MS.
Сегодня наткнулся на статью Истеричный менеджмент - виновник низкой производительности труда.
Как офисный работник могу сказать что многое из сказанного - чистейшая правда. Особенно про перегрузки. IT компании как правило пытаются выжать из сотрудников максимум, но при этом теряют достаточно много.

вторник, 15 апреля 2008 г.

Аутентификаци & Персонализация

Давайте рассмотрим какие вещи могут происходить в системе при входе пользователя.
  1. Аутентификация. Пользователь подтверждает что это он заходит в систему, а не Дядя Вася Пупкин из села Простоквашино.
  2. Авторизация. Система выдает права пользователю. Говорит что Петя Иванов может получить доступ только к своим данным. Может быть назначает ему роль или явно определяет на основе битовой маски его права по вхождению в группы и личным правам.
  3. Имперсонация. Система берет привилегии юзера и использует доступные ему ресурсы.
  4. Персонализация. Система выбирает настройки для конкретного пользователя. Ширина и видимость столбцов таблиц, стили отображения, цвета, шрифты, значения по умолчанию и т.д.
При этом, прежде чем происходят 2,3,4 пользователь должен авторизоваться.
А теперь представьте что нам необходимо создать независимое средство для хранения персональных данных пользователя и соотвественно для обращения к ним. Система авторизации и система персонализации - несколько разные вещи и их следует разделить. Отлично, разделили, а как теперь система персонализации узнает что пользователь прошел аутентификацию? Передавать ей некоторый уникальный код ?

четверг, 10 апреля 2008 г.

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

MS SQL Server CE это субд для создания настольной компактной базы данных и управления ей. Выглядит она как inprocess библиотека, занимает 1-3 мб памяти. Для десктопных простых приложений незаменимая вещь.

База представляет из себя *.sdf файлик. Кто знаком с работой обычного MS SQL Server, тот знает что это second файл базы(second database file), поэтому достаточно просто его можно подвязать к нормальному серверу.

Для меня было достаточно приятно что появилось простое и доступное средство для работы сбазами. Функционал конечно достаточно нехило урезан, но для полноценной работы его вполне достаточно.

Где подобную базу можно использовать:

  1. Небольшие desktop приложения для которых нужно простое безопасное хранилище данных, со всеми "вкусностями" SQL запросов.
  2. Smart клиенты для которых нужно органиховать offline режим работы и репликацию данных.
  3. Разработки для Windows Mobile (не путать со smart клиентами) для которых нужна простая и легкая база.
  4. При разработке мобильных приложений когда базу нужно быстро перетащить (в этом случае базу можно просто скопировать с одной машины на другую без потери функциональности и работоспособности и без бэкапов).

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

Кросс пост с моего сайта

суббота, 5 апреля 2008 г.

Вехи

Недавно задумался над тем, почему таким образом развивается web и в частности , почему мне приходится заниматься тем, чем я занимаюсь.
Для web сейчас реально существует большая проблема с передачей данных. Если подробнее, то при каждом обращении к определенной страничке вы загружаете все, и сами данные и представление данных и логику. Даже если вы загружаете страницу по 40 раз в день.
А так хочется представление и логика получались только один раз (и при том только если это действительно нужно). А данные передавались в некотором универсальном формате(например, xml).
Эту проблему решали давно. Сначала пытались сделать кэширование страничек, рисунков, скриптов, стилей и т.д. Такой подход не позволяет отказаться полностью от передачи представления, так как заставляет браузер обновлять его, к тому де на самой страничке данные динамически меняются, а страничка содержит не только данные, но и представление, и мета информацию.
Следующим шагом была технология Ajax. Которая позволила передавать сами данные и относительно них менять представление. Но Ajax ориентирован на визуальное представление данных и имеет кучу проблем сам по себе.
Решать проблему передачи только данных теперь может SOA + Smart клиенты. При этом представление и логика уже будут находится у клиента.

четверг, 3 апреля 2008 г.

404

Поздравляю всех с днем антивэба (4.04) !!! :)

Логика в массы

Вот как надо учить логические операции :)

not
:-) = not :-(
:-( = not :-)
or
:-) = :-) or :-)
:-( = :-( or :-(
:-) = :-( or :-)
:-) = :-) or :-(
and
:-) = :-) and :-)
:-( = :-( and :-(
:-( = :-( and :-)
:-( = :-) and :-(
xor
:-( = :-) xor :-)
:-( = :-( xor :-(
:-) = :-( xor :-)
:-) = :-) xor :-(
->
:-) = :-) -> :-)
:-) = :-( -> :-(
:-) = :-( -> :-)
:-( = :-) -> :-(

Проверяем знание HTML

А ты сколько знаешь HTML тэгов??? Проверь себя!!!

Вот что у меня получилось:

You forgot:
ABBR, ACRONYM, APPLET, AREA, BASE, BASEFONT, BDO, BIG, BLOCKQUOTE, BUTTON, CAPTION, CITE, CODE, COLGROUP, DD, DEL, DFN, DIR, DL, DT, FIELDSET, FRAME, FRAMESET, IFRAME, INS, ISINDEX, KBD, LEGEND, MAP, MENU, NOFRAMES, NOSCRIPT, OPTGROUP, PARAM, PRE, SAMP, SELECT, SMALL, STRIKE, STRONG, STYLE, TBODY, TFOOT, THEAD, TITLE, TT, VAR

Так что я не знаю HTML настолько чтобы этим хвастаться. Но с другой стороны его не нужно знать - любой тэг можно получить стилями.

среда, 2 апреля 2008 г.

Вот как на самом деле называются цвета.

А я то дурак столько времени называл Ализариновый красный просто красным.

Как же я ошибался!!! Laughing

А вот HP взяли и опубликовали эксперементальную форму где каждый может дать свое название цвету.

вторник, 1 апреля 2008 г.

Исходники висты ;)


Исходный код Windows Vista. Есть интересные моменты использования некоторых системных функций. :-D

Мой маленький уголок в сети

Наконец то сбылось то о чем я долго и продолжительно мечтал - я сделал и успешно опубликовал свой динамический сайт с которым было столько проблем.
Посмотреть и потестировать можно тут .
Теперь у меня есть реальная платформа для развития своих задумок. Будем надеятся что меня не выгонят с хостинга до того как я успею там что нить сломать :).
Если у кого то будут предложения по реализации какой нить функциональности - пишите буду только раз в реализации.
Ведь главное в любом проекте - идея. А технологии служат лишь для решения поставленных задач.
Так что с нетерпением жду предложений или в этом блоге или на сайте. ;)