вторник, 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 г.
Как рождается философия ...
Вот в этот момент мой мозг сработал как то необычно ... обобщил эту мысль на всю мою жизнь.
Не важно на какие грабли и сложности нарвешься, если они не критические то можно всегда заново начать. Страшно если просто не знаешь куда дальше идти.
Вот такие глюки возникают в моей непутевой башке.
понедельник, 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 г.
Как офисный работник могу сказать что многое из сказанного - чистейшая правда. Особенно про перегрузки. IT компании как правило пытаются выжать из сотрудников максимум, но при этом теряют достаточно много.
среда, 16 апреля 2008 г.
вторник, 15 апреля 2008 г.
Аутентификаци & Персонализация
- Аутентификация. Пользователь подтверждает что это он заходит в систему, а не Дядя Вася Пупкин из села Простоквашино.
- Авторизация. Система выдает права пользователю. Говорит что Петя Иванов может получить доступ только к своим данным. Может быть назначает ему роль или явно определяет на основе битовой маски его права по вхождению в группы и личным правам.
- Имперсонация. Система берет привилегии юзера и использует доступные ему ресурсы.
- Персонализация. Система выбирает настройки для конкретного пользователя. Ширина и видимость столбцов таблиц, стили отображения, цвета, шрифты, значения по умолчанию и т.д.
А теперь представьте что нам необходимо создать независимое средство для хранения персональных данных пользователя и соотвественно для обращения к ним. Система авторизации и система персонализации - несколько разные вещи и их следует разделить. Отлично, разделили, а как теперь система персонализации узнает что пользователь прошел аутентификацию? Передавать ей некоторый уникальный код ?
четверг, 10 апреля 2008 г.
После того как я наткнулся на sqLite, на котором собственно сейчас работает и этот блог тоже, мне пришлось столкнуться с мелкосовтовской разработкой подобного типа.
MS SQL Server CE это субд для создания настольной компактной базы данных и управления ей. Выглядит она как inprocess библиотека, занимает 1-3 мб памяти. Для десктопных простых приложений незаменимая вещь.
База представляет из себя *.sdf файлик. Кто знаком с работой обычного MS SQL Server, тот знает что это second файл базы(second database file), поэтому достаточно просто его можно подвязать к нормальному серверу.
Для меня было достаточно приятно что появилось простое и доступное средство для работы сбазами. Функционал конечно достаточно нехило урезан, но для полноценной работы его вполне достаточно.
Где подобную базу можно использовать:
- Небольшие desktop приложения для которых нужно простое безопасное хранилище данных, со всеми "вкусностями" SQL запросов.
- Smart клиенты для которых нужно органиховать offline режим работы и репликацию данных.
- Разработки для Windows Mobile (не путать со smart клиентами) для которых нужна простая и легкая база.
- При разработке мобильных приложений когда базу нужно быстро перетащить (в этом случае базу можно просто скопировать с одной машины на другую без потери функциональности и работоспособности и без бэкапов).
Посмотрим что будет при реальном использовании, но думаю что неприятных неожиданностей не будет.
Кросс пост с моего сайта
суббота, 5 апреля 2008 г.
Вехи
Для web сейчас реально существует большая проблема с передачей данных. Если подробнее, то при каждом обращении к определенной страничке вы загружаете все, и сами данные и представление данных и логику. Даже если вы загружаете страницу по 40 раз в день.
А так хочется представление и логика получались только один раз (и при том только если это действительно нужно). А данные передавались в некотором универсальном формате(например, xml).
Эту проблему решали давно. Сначала пытались сделать кэширование страничек, рисунков, скриптов, стилей и т.д. Такой подход не позволяет отказаться полностью от передачи представления, так как заставляет браузер обновлять его, к тому де на самой страничке данные динамически меняются, а страничка содержит не только данные, но и представление, и мета информацию.
Следующим шагом была технология Ajax. Которая позволила передавать сами данные и относительно них менять представление. Но Ajax ориентирован на визуальное представление данных и имеет кучу проблем сам по себе.
Решать проблему передачи только данных теперь может SOA + Smart клиенты. При этом представление и логика уже будут находится у клиента.
четверг, 3 апреля 2008 г.
Логика в массы
not
:-) = not :-(
:-( = not :-)
or
:-) = :-) or :-)
:-( = :-( or :-(
:-) = :-( or :-)
:-) = :-) or :-(
and
:-) = :-) and :-)
:-( = :-( and :-(
:-( = :-( and :-)
:-( = :-) and :-(
xor
:-( = :-) xor :-)
:-( = :-( xor :-(
:-) = :-( xor :-)
:-) = :-) xor :-(
->
:-) = :-) -> :-)
:-) = :-( -> :-(
:-) = :-( -> :-)
:-( = :-) -> :-(
Проверяем знание HTML
Вот что у меня получилось:
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 г.
Вот как на самом деле называются цвета.
А я то дурак столько времени называл Ализариновый красный просто красным.
Как же я ошибался!!!
А вот HP взяли и опубликовали эксперементальную форму где каждый может дать свое название цвету.
вторник, 1 апреля 2008 г.
Мой маленький уголок в сети
Посмотреть и потестировать можно тут .
Теперь у меня есть реальная платформа для развития своих задумок. Будем надеятся что меня не выгонят с хостинга до того как я успею там что нить сломать :).
Если у кого то будут предложения по реализации какой нить функциональности - пишите буду только раз в реализации.
Ведь главное в любом проекте - идея. А технологии служат лишь для решения поставленных задач.
Так что с нетерпением жду предложений или в этом блоге или на сайте. ;)