понедельник, 31 декабря 2007 г.

Что я сделал в году 2007?

  • Helicon Manager (май-июнь): менеджер расширений для IIS от Helicon Tech, для Windows Vista, C++, VS2005;
  • Helicon Config Editor (июнь): редактор конфигураций для ISAPI_Rewrite3 (.htaccess файлы), проверяет корректность синтаксиса, C++, VS2005;
  • WebTest (июль): движок тест-кейсов для ISAPI_Rewrite, проверяет по шаблону заголовки и тело http-ответа на заданный http-запрос, Python, Komodo Edit;
  • Набор тестов для ISAPI_Rewrite3 (август-сентябрь): 100 кейс-тестов на базе webtest;
  • Набор тестов для LinkFreeze (сентябрь): 30 кейс-тестов на базе webtest;
  • Статистический отчёт для Helicon Jet (сентябрь);
  • www.popasrya.dp.ua (сентябрь, технология Parser, mysql);
  • Редизайн сайта www.helicontech.com (ноябрь), в онлайн пока не выложен;
  • Тестирование ISAPI_Rewrite3 для сертификации (ноябрь-декабрь) Works with Windows Vista и Certified for Windows Vista.

пятница, 28 декабря 2007 г.

Я радуюсь:
  • вышла новая версия замечательного языка для скриптования сайтов Parser, с помощью которого я сделал три простеньких сайта и получил при этом массу удовольствия от работы с языком;
  • блин, реально страшно, если вдруг google заблокирует мой аккаунт! Что делать, чтобы избежать неприятных последствий, пишет Ionut Alex Chitu в Google Operating System.

четверг, 27 декабря 2007 г.

вторник, 25 декабря 2007 г.

Я радуюсь:
Такие дела.

понедельник, 24 декабря 2007 г.

Technorati Profile

Размер директорий в Linux

Оригинал: Как узнать размер директорий в линукс на моём блоге.

Всегда было для меня проблемой узнать размер директории в Linux. Оказалось, это очень просто. Нужно было потратить 20 секунд на поиск в гугле. Это команда du.
du /home
покажет в килобайтах размер /home и всех её поддиретокрий
du -h /home
покажет это в килобайтах и мегабайтах
du -sh /home
покажет только общий размер диретории, без поддиректорий.
Всё просто и я радуюсь!

P.S. Fail2Ban работает -- банит нежеланных гостей.

пятница, 21 декабря 2007 г.

Защищаем сервер fail2ban

Мой серверок живёт и радуется. Заглянул я вчера в /var/log/auth.log. Там -- полный пиздец. Куча ботов ломится на ssh и пытается угадать пароли. Угадать конечно не получилось, но неприятный осадок остался. Фаервол на iptables конечно работает. Но для sshd я не стал ограничивать адреса, с которых можно заходить, т.к. заходить мне иногда нужно из трёх разных мест и у двух из них динамические адреса. А на днях как раз видел статью о blocksshd. Но использовать его не стал. В комментариях к статье есть упоминание о fail2ban, который есть в репозитариях ubuntu 6.06. Его то я посмотрел и поставил. Его конфиг /etc/fail2ban.conf хорошо откомментирован. Я его поправил немного на свой вкус, хотя этого можно было и не делать. Запустил и тут же проверил. Работает, сука! За ночь три адреса забанил.

четверг, 20 декабря 2007 г.

Я радуюсь:
Да. Популярность odnoklassniki.ru растёт не по дням, а по часам. Решил и я туда заглянуть. Нашёл много старых, почти потерянных знакомых. Приятно, спасибо сайту.
Но сайт, честно говоря, тупой.
  1. Полный бардак в названиях городов, школ, институтов. В МоёмКруге, например, всё замечательно организовано и упорядочено.
  2. Система сообщений мне совсем не понравилась.
  3. Медленный очень сайт.

среда, 19 декабря 2007 г.

Я радуюсь:

вторник, 18 декабря 2007 г.

Я радуюсь:

пятница, 14 декабря 2007 г.

ssh вместо ftp

Я только, что понял: зачем ставить и использовать на сервере ftp (т. е. имееть ещё одну потенциальную дыру в безопасности) если можно, имея уже рабочий ssh, использовать sftp протокол (псевдо-ftp внутри ssh-соединения), который поддерживает, например, FileZilla?

Сам себе хостер

Я радуюсь, потому что я стал сам себе хостером. Для этого я проделал такие шаги:
  • пошёл в банк и заказал себе дебетную карту Visa Classic;
  • получил её готовую через несколько дней и положил на неё 40 долларов;
  • с помощью Google Apps зарегистрировал себе домен, заплатив с помощью карты 10 долларов;
  • по наводке Ивана Салагаева сделал себе Unmanaged Virtual Private Server на tektonic.net за 15 долларов (в месяц);
  • на сервере была предустановлена моя родная Ubuntu 6.06, и после недолгих плясок я заимел apache с https, svn-репозитарий, ftp и прочие приятные и нужные мелочи;
  • а вчера перевёз на этот сервер один из моих проектов.
Ура. Дешево и сердито.

четверг, 13 декабря 2007 г.

SCDWriter

Для прожига дисков я всего один раз в жизни использовал проклятый Nero. Ну такой он навороченный, такой функциональный и красивый, что лучше быть и не может.
Уже больше года назад (уж не помню как) нашёл я замечательную программку Small CD Writer. Может она всё, что нужно от прожигателя дисков: стирать и записывать cd & dvd, делать и записывать iso-образы. Красота. Аудио-диски не может записывать только. Но по-моему это уже давно не актульно. Весит распакованная 400 килобайт.
Использую и радуюсь. Спасибо авторам!

понедельник, 10 декабря 2007 г.

Я радуюсь:

четверг, 6 декабря 2007 г.

Я радуюсь:
Ставили Windows Server 2008 (Longhorn) для тестовых целей. Помучали немного, потестировали. Выключаю я его его, что бы отформатировать навсегда. А он и спрашивает: С какой целью, мол, меня выключаешь? Прокомментируй, говорит! Гыыы :)

среда, 5 декабря 2007 г.

Я радуюсь:
Я огорчаюсь:
  • решил поставить Windows Live Writer (хвалили его), онсука говорит, что нужно срочным образом обновить винду заплатками, без них не могёт. Значит не судьба.

вторник, 4 декабря 2007 г.

VerseQ & Solo

Неделю назад я решил начать учится быстро и вслепую печатать на клавиатуре. Погуглил немного. Нашёл Соло и VerseQ.
Соло нашёл 8.х первым. Поставил и начал разбираться. Реально заёбывают эти долгие прелюдии перед каждым упражнением и тупые шуточки про компьютериков. Ну и эти разминки типа нажмите 50 раз клавишу а. Я занятой очень человек и заниматься всякой хуйнёй не хочу. Так бы наверно и мучался. 9-й может получше? Но я забил.
Скачал VerseQ. Вводного текста с правилами обучения и советам совсем немного. Понятно и по сути. Нет ограничения на количество ошибок в каждом упражнении. Выглядит приятней. Поле ввода и экранная клавиатура побольше будет. Звук только не знаю как выключить -- немного мешает.
В общем начал заниматься. Примерно по 10-20 минут утром и вечером. И результат на лицо. 90-100 символов в минуту если аккарутней и без ошибок. 110-120 символов если поспешить и получить 2-3-4 ошибки.
Продолжаю.
Я радуюсь:

пятница, 30 ноября 2007 г.

Keepass

Я радуюсь, что у меня есть замечательная программа для хранения паролей KeePass. Паролей у меня много: несколько почтовых ящиков, соцсети, репозитарии, форумы. Стараюсь пароли делать разные и подлинее. И какое-то время назад я понял, что упомнить все не могу. Записывать что ли? Нет, конечно. И нашёл эту замечательную программулинку. Живёт она на флешке, т. е. всегда со мной. Рядом с ней лежит и зашифрованная база данных моих паролей. Для доступа к ней один мастер-пароль. А таких баз данных может быть несколько.Работает это дело так: Открываю программу, ввожу мастер-пароль, выбираю нужный аккаунт, нажиматю Ctrl+C и пароль хранится в буфере обмена 20 секунд.
Программа не только совершенно бесплатна, но ещё и OpenSource, т. е. можете в исходниках проверить честность алгоритмов шифрования . Что очень радует - есть версия для Линукс.

четверг, 29 ноября 2007 г.

Я радуюсь:

понедельник, 26 ноября 2007 г.

О веб-разработке

Господа, товарищи, леди и джентельмены! Надо радоваться! Нам всем очень повезло! В наше нелёгкое время делать веб-приложения стало легко и приятно. Ещё 5 лет назад это было гораздо сложней. Итак, что нужно:
  • Идея. В этом вопросе вам никто не поможет, кроме вас самих. Смотрите, ищите, анализируйте. Сегодня Идеи витают в воздухе!
  • Подход. Или филосифия, если угодно. Да вот же она - Getting Real. Есть и русский перевод это замечательной книжки.
  • Платформа. Или инструментарий. Это, конечно Django. Быстрая и элегантная разработка без лишних заморочек.
Я радуюсь.

пятница, 23 ноября 2007 г.

О сервисе

Радоваться особо нечему. Решил я себе сделать дебетную карту Visa для платежей зарубеж. Посмотрел, что предлагают банки. Аваль, Приватбанк, АльфаБанк, Укрсиббанк, OTP Bank. У первых трёх неснижаемый минимум на карточке - 100 баксов. Многовато. Это положи их, а пользоваться этими деньгами никак не получится. Укрсиббанк -- отдельная история. Захожу на сайт посмотреть цены у них. На странице куча ссылок на xls-файлы с непонятными мне названиями. Удобно, правда? После нескольких попыток нашёл нужный. Скачал, открываю. Он просит обновить какие-то ссылки и запусктить какие-то макросы. Очхорошо. Цены вроде подошли. Пошёл в ближайшее отделение. А девочка, которая там занимается карточками и говорит мне: "я сейчас так занята, так занята! приходи завтра, а лучше -- послезавтра." А? Пошёл в соседнее. Там девочка мне говорит: "Заказать вы карточку можете, но у нас их с лета(!) нет, когда получте -- неизвестно. а про платежи зарубеж через интернет я ничего не знаю. Как будут списываться деньги со счёта?". Аааа!!! Это она у меня спрашивает, как будут списываться деньги? Это я у неё должен спрашивать! Вот это сервис!
Всё остальное можете считать рекламой. Пошёл в ОТР Bank. Показали, расказали, сделали договор, жду через несколько дней готовую карточку. За полчаса, без дурацких вопросов и глупых улыбочек.
Да. Банки наши нихуя за клиентов не борятся. Обидно. Я же за своих клиентов борюсь.

четверг, 22 ноября 2007 г.

Я радуюсь:
Я люблю django. По утрам немного им занимаюсь. Готовлю простое веб-приложение. Кто её задумал и делал, можно узнать на сайте. А вот для чего? Вот для чего: Ellington CMS. ЦМС на джанге. С кучей компонентов. Цены не говорят. Но погуглив можно сказать, что это где-то $10K-15K. Такие дела.

среда, 21 ноября 2007 г.

Я радуюсь:

вторник, 20 ноября 2007 г.

четверг, 15 ноября 2007 г.

Не нравятся мне фиды digg.com тем, что кликая на ссылку, попадаешь на digg, а не туда, куда эта ссылка по идее должна вести. Хотя рекламу же нужно кому-то показывать.
Чикуенок начал писать статьи о png. Ждём следующих.

среда, 14 ноября 2007 г.

Я радуюсь потому, что сегодня много картинок:

вторник, 13 ноября 2007 г.

Android

Народ! Налетай! Гугл раздаёт $10М за интересные разработки на новой платформе Android для мобильных устройств.
26479104.bcbfb4698648505a1fe7d649461de8b2.1194932338.571917412e61b22ecc5f419a757477f2

понедельник, 12 ноября 2007 г.

Я радуюсь:
Ну а про то, что
гугль -- гораздо большоее зло, чем Микрософт

написали уже все. Зло? Зло конечно. Конкуренция - добро. Монополия - зло. Большее чем Микрософт? Пока нет.

пятница, 9 ноября 2007 г.

Новости и firefox

Я радуюсь:
Вчера огнелис меня огорчил немного. Если в урле писать не-ascii символы, то по стандарту их нужно в утф-8 и эскейпить. именно так и делают ие и опера. А фаерфокс по умолчанию в утф-8 не переводит, а экранирует из родной кодировки (1251 для винды). русская википедия это понимает и если ей приходит такой херовый запрос от фаерфокса, то она посылает редирект на правильный утф-8 урл. Правда если зайти в about:config и исправить network.standard-url.encode-utf8 на true -- будет честно в утф-8.

четверг, 8 ноября 2007 г.

Прочитал "Приключения Тома Сойера". Получил массу удовольствия. Рекомендую всем. Юмор Марка Твена - очень хорош.

понедельник, 5 ноября 2007 г.

пятница, 2 ноября 2007 г.

дааа. город в котором нет.
Я радуюсь:

 Matches: (в OR и)
Do this: Skip Inbox, Delete it

четверг, 1 ноября 2007 г.

Запустил вчера эффекты рабочего стола на свежей убунте. Ааа! Круто. До этого никогда их не видел. Понравились разве эффекты на MacOSX. Но эти - просто фантастические. Даже на моей Geforce 5200 прилично работают. По ходу работы получается мультфильм.
В общем всем советую попробывать и посмотреть. Не знаю ещё насколько эти эффекты будут помогоать или мешать работать. Время покажет.

среда, 31 октября 2007 г.

Я радуюсь:
Вопрос работы с Ubuntu без подключения к интернету обсуждается давно. Например, у Strannick`а есть хорошие выкладки на эту тему. Но, оказалось, что есть очень простое решение -- это проект APTonCD. Эта штука делает CD- или DVD-репозитарий с выбранными пакетами. Прожигаете его, несёте к компу у которого нет инета, и -- радуетесь.
А для того, что бы сделать Ubuntu неотличимой от MacOSX -- есть замечатльный проект Mac4Lin. Попробуйте и порадуйтесь. Очень красиво получается.

вторник, 30 октября 2007 г.

Питон в примерах. 1

Простой скрипт, который в заданной папке ищет все файлы в которых есть строка1 и меняет ей на строку2.

import os, sys, string
'''
find findStr and replace by repStr in all *.html files of selected directory
usage:
python findandreplace.py /home/user/path findStr repString
'''

findStr = ''
repStr = ''
fileCounter = 0

def readFile(path):
fh = open(path, "r")
buf = fh.read()
fh.close()
return buf

def writeFile(path, str):
fh = open(path, "w")
fh.write(str)
fh.close()


def replaceStringInFile(findStr,repStr,filePath):
"replaces all findStr by repStr in file filePath"

global fileCounter

buf = readFile(filePath)
bunew = ''

if buf.find(findStr) != -1:
bufnew = buf.replace(findStr,repStr)

print filePath
fileCounter += 1

os.remove(filePath)
writeFile(filePath, str(bufnew))


def walk_func(dummy, dirs, files):
global findStr, repStr
for file in files:
if str(dirs).find('.svn') == -1 and os.path.isfile(dirs+'/'+file)\
and file.find('.htm') == -1:
replaceStringInFile(findStr,repStr,dirs+'/'+file)


def main():
global findStr, repStr, fileCounter

targetDir = sys.argv[1]
findStr = sys.argv[2]
#findStr = ''
repStr = sys.argv[3]
#repStr = ''

os.path.walk(targetDir, walk_func, 0)
print 'Total: ', fileCounter


if __name__ == "__main__":
main()

понедельник, 29 октября 2007 г.

Я радуюсь:
А StraNNik нервничает.
Я наконец-то понял для чего мне нужен mp3-плейер! Что бы слушать подкасты Умпутуна и Бобука по дороге на работу и домой. Слушать их на работе -- возможности нет: потеря целого часа времени! А подкасты очень интересные.

пятница, 26 октября 2007 г.

Google Notebook

Долго я искал себе удобную записную книжечку для текущих дел. Столько всякого хлама перепробывал, что и страшно вспомнить! А всё гениальное -- просто. И лежит рядом. И это -- Google Notebook! У меня теперь всегда открыто его окошко и по ходу и оставляю там записи. Неделю юзаю и радуюсь!
Я радуюсь:
и огорчаюсь:

четверг, 25 октября 2007 г.

Я радуюсь:
  • вышел The Gimp 2.4, которого я очень ждал, но не дождался и вот уже 4 месяца пользуюсь проклятым Фотошопом.
  • первый раз увидел занимательную штуку www.rukv.ru.
  • горяченькая болванка с Убунту - лежит в приводе. Перезагружаюсь...

среда, 24 октября 2007 г.

Я радуюсь:
  • Майкрософт разработала и продемонстрировала ядро MinWin, которое занимает на диске 25М и требует всего 40М ОЗУ. Ядро может быть использовано в следующей Windows 7. Цифры не очень впечатляющие, но то, что новое ядро (которое обещают выпустить года через три) возможно не будет требовать 100Гб на носителе и 2Гб памяти - уже приятно.
  • принимает поздравления с 9-летием всеми нами любимый linux.org.ru.
Пришёл я в понедельник рано утром на работу. Зарядил на боевом сервере качать новую Убунту. Качать с mirro.yandex.ru. Много хороших отзывов услышал про это зеркало. И уехал в командировку на день. Прихожу рано утром с болванкой и предвкушением посмотреть и порадоваться за новьё. Опа! А wget-log мне и говорит: 170М скачал,а потом - connection refused, попытки переконектиться не увенчались успехом. Бля. Зарядил дальше с флагом --continue и опять ушёл. Прихожу сегодня рано утром с болванкой и предвкушением посмотреть и порадоваться за новьё. А wget-log мне и говорит: 340М скачал,а потом - connection refused, попытки переконектиться не увенчались успехом. Сука! Я отправил в небытие эти 340М. Изарядил качаться заново. Но уже с releases.ubuntu.org.ua. И качать теперь с этого зеркала яндекса -- не буду. Хотя виноват в срывах соединений возможно и не Яндекс, но осадок остался.

пятница, 19 октября 2007 г.

Я радуюсь:
Такие дела. Все зеркала убунты лежат. Качать ничего не возможно.

вторник, 16 октября 2007 г.

Я радуюсь:
На прошлой неделе уговаривал Mantis - багтрекер на пхп. Уговорил примерно так: при коммитах в свн, если там есть фраза типа "fixed bug #13", то статус у бага изменяется на fixed, fixed_in_version будет равно последней версии проекта и этот багфикс попадёт в changelog. А при коммитах типа "build 3.0.29" для проекта будет автоматом создана новая версия 3.0.30. Работает. Очень помог мануал мантиса, этот пост и этот. Должен отметить, что хоть и внешний вид у мантиса хреновенький, и редиректы эти его (19 век просто) напрягают, но программный api имеет очень продуманный с кастом-функциями; дописал небольшой функционал - и при этом руками не сделал ни одного sql-запроса, всё через понятное api.

пятница, 12 октября 2007 г.

Я радуюсь:
  • послушал купленный вчера новый альбом от Radiohead -- In Raindows: замечательный альбом!
  • Reuters говорит, что Asus получил уже больше миллиона заказов на eee pc;
  • о замечательном языке MathML (которому я очень благодарен) пишут;
  • новому Samsung SyncMaster 225BW;
Огорчаюсь:
  • GeForce 5200 через свой DVI-выход не может отдать 1680 на 1050.

четверг, 11 октября 2007 г.

Радуюсь:
Голубая мечта водителей маршрутных микроавтобусов: выкинуть нахуй все сиденья -- стоячих больше набьётся.

среда, 10 октября 2007 г.

Радуюсь:

вторник, 9 октября 2007 г.

Спасибо Джинсу

Я радуюсь!
Вчера перешёл на замечательный тариф - Джинс Партнер Новый. Может такое: 3 минуты в сети каждый день бесплатно, потом - 15 коп. за минуту; не в сети - 60 коп. И самое приятное - нет платы за соединение! Такими должны быть тарифы на мобильную связь.

Ржунимагу

Артемий жжёт:

Высокотехнологические маркетинговые технологии в сочетании с инновационной креативной стратегией позволили нам вплотную подойти к реализации уникального для нашей страны формата — конкурса для дизайнеров. Главным отличием нашего конкурса является инновационная мотивационная составляющая, в корне меняющая представление о креативной индустрии.

четверг, 4 октября 2007 г.

Хабр сошёл с ума

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

О принятии решений

Как я принимаю решения, связанные с моими занятиями? Я отвечаю для себя на три вопроса:
  1. Это интересно для меня?
  2. Это денежно?
  3. Это перспективно?
И всё. В разных условиях и ситуациях эти вопросы стоят на разных местах и их значимость меняется. Например, если деньгами я обеспечен (на некоторое время), этот вопрос стоит на третем месте. Если в теперешних занятиях не видно никакого нормального продолжения - на первом месте стоит вопрос о перспективности.

вторник, 18 сентября 2007 г.

0918, утро

Я радуюсь:

понедельник, 17 сентября 2007 г.

0917, утро

Я радуюсь замечательным Webmaster Tools от Google.
Поздравляю Linux с Днём рождения!
Apple приходит в нашу жизнь: в студии проекта "Шанс", который идет на украинском канале 1+1 появился MacBook Pro. На столе у той девочки, что постоянно сидит в углу в подозрительно улыбается.

пятница, 14 сентября 2007 г.

0914, утро

Я радуюсь:

четверг, 13 сентября 2007 г.

Ещё одно утро

Я радуюсь:

вторник, 11 сентября 2007 г.

Православная ОС

Баян, наверно, но знакомый очень меня рассмешил:
Виндовс - православная операционная система, потому как в ней есть службы и иконки, а не демоны и зомби.
яржал.

Утро

Сегодня утром меня порадовало много хороших новостей:

понедельник, 10 сентября 2007 г.

Open Komodo Project

Я давно и успешно пользуюсь редактором Komodo Edit. И теперь безмерно радуюсь инициативе Open Komodo.

понедельник, 3 сентября 2007 г.

пятница, 31 августа 2007 г.

Как я ловлю спам

На моём сервере, на котором работает сайт и почта, стоит конечно и Spamassassin, который помечает весь спам. Работает этот спам-фильтр довольно хорошо. Неудобно только то, что пропущенный спам нужно отсылать обратно ему на ящик типа spam@host. Пользователи этого конечно же не делают, как я их не заставлял. Тогда я опубликавал адрес этого ящика на внешнем сайте. Через некоторое время спаммерские роботы его нашли. И десятки писем со спамом приходят ежедневно. Спам-фильтр по ним учится. Недостаток - лишний траффик, но у меня неограниченный.

четверг, 30 августа 2007 г.

Komodo Edit

Искал я себе редактор для HTML+Python. Нашёл несколько, выбрал ActiveState Komodo Edit. Подсвечивает кучу синтаксисов, исходники Питона постоянно интерпретирует и показывает ошибки, приличное автозавершение кода, файловый браузер хороший, сниппеты. Загружается долго, но работает в общем шустро. Бесплатный. Есть платный старший брат - Komodo IDE.
Пользуюсь уже больше месяца. И мне нравится.

среда, 29 августа 2007 г.

Скрябин и MacBook

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

понедельник, 20 августа 2007 г.

Отладка в Питоне

ScribeFire

Firefox силён своими расширениями. Одно из замечательных среди них - ScribeFire. Я давно искал нечто такое простое и удобное для поста в блог из браузера. DeepSender вроде начал пробовать, но он вдруг отказался постить выпадая с какой-то ошибкой. И вот пробую Скрайбфайр - всё работает, мне нравится.

пятница, 17 августа 2007 г.

Регулярные выражения для HTTP-запросов

Имеем стандартный HTTP-запрос вида:
GET /anypath HTTP/1.1
Host: localhost:80
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4
Connection: Keep-Alive

request body
Нужно выудить хост, порт, ури, заголовки и тело. Получаем такой код для питона:
RE_REQ_METHOD  = "^(.*)\s/.*\sHTTP/\d.\d$"
RE_REQ_HOST = "^Host:\s*([^:]+)(?::(\d+))?$"
RE_REQ_URI = "^(?:GET|POST)\s(.*)\sHTTP/\d.\d$"
RE_REQ_HEADERS = "^([^#].*):\s(.*)$"
RE_REQ_BODY = "^$^(.*)"
Предполагается, что все строки в запросе не заканчиваются пробелами.
req_method = re.search( RE_REQ_METHOD, request, re.I | re.M ).group(1)
req_uri = re.search( RE_REQ_URI, request, re.I | re.M ).group(1)

req_port = ""
req_host = ""
_redata = re.search( RE_REQ_HOST, request, re.I | re.M )
if _redata:
req_host = _redata.group(1)
req_port = _redata.group(2)


# get header list
req_headers = re.findall( RE_REQ_HEADERS, request, re.I | re.M )

#get body
req_body = ""
_redata = re.search ( RE_REQ_BODY, request, re.I | re.M | re.S)
if req_body_res:
req_body = _redata.group(1)

четверг, 16 августа 2007 г.

Об угле и слепой вере

В своё время я делал программное обеспечение для системы, которая определяет зольность угля в потоке. Система и сейчас успешно эксплуатируется на 7 шахтах и 2 тепловых станциях. Основная проблема, с которой мы сталкивались при внедрении и дальнейшем обслуживании, - сходимость наших показаний и показаний пробоотбора. Пробоотбор - это стандартизированный ГОСТом метод определения зольности угля. В чём его суть? Через определённый интервал времени (1, 2, 5 минут) с работающего конвейера с углём специальным ковшиком-веником отбирают уголь в бункерок. Скажем, проходит за сутки 2000 тонн угля по конвейеру. Из них отбирают 200 кг. Потом из этих 200 кг после перемешивания специальным образом делают пробу в несколько килограмм. Её отправляют в химлабораторию. Там из этой пробы берут 7 грамм (!) и сжигают в спецпечке. По тому, сколько пепла останется, определяют зольность (содержание золы) угля. Это упрощённое описание без нюансов. Здесь нужно заметить, что как бы не отбирали уголь и не перемешивали его, а зольность с заданной погрешностью определяется для этих семи грамм, но не как для 200 кг пробы и уж тем более не для 2000 т суточных.
В нашей системе метод определения зольности - радиоизотопный. На уголь непрерывно светит гамма-источник и по рассеянному от угля излучению определяется его зольность. Точность у такого метода такая же как и у стандартного пробоотбора - 2%. Но такой метод меряет зольность непрерывно - меряет все 2000 т угля в сутки.
Но. О великая сила ГОСТа! Если результаты системы и пробоотбора различаются, вначале всегда грешат на систему. И только потому, что сжигание семи грамм подтверждено ГОСТом, а непрерывный радиометрический контроль 2000 т - нет.

вторник, 7 августа 2007 г.

Flashblock

Не люблю я флэш. Совершенно попсово-тинейджерская технология для красочной рекламы. И помогает мне не любить его замечательное расширение для Огнелиса flashblock. Спасибо авторам для мегабайты сэкономленного траффика и психики.

HTTP Headers

Для просмотра HTTP-заголовков, которые отправляет и получает Firefox, советую замечательное расширение Live HTTP Headers. При отладке моих тестов rewrite`а - просто необходимая вещь.

понедельник, 6 августа 2007 г.

Немного об rewrite

Движок для тестирования Rewrite готов. Написан на Питоне. Теперь занимаются самими тестами. Первый большой набор - это примеры из RewriteGuide. Впечатление от них такое, будто писали их много лет назад, для какой-то очень ранней версии rewrite. Для изучения эти примеры вполне годятся. Но заставить их все работать на последнем rewrite без мелких правок не получится никак.
Ещё приколола такая тема из доки mod_rewrite.
Note that mod_rewrite tries to guess whether you have specified a file-system path or a URL-path by checking to see if the first segement of the path exists at the root of the file-system. For example, if you specify a Substitution string of /www/file.html, then this will be treated as a URL-path unless a directory named www exists at the root or your file-system, in which case it will be treated as a file-system path.

Т. е. mod_rewrite пытается угадать (!), что я имел ввиду в Substitution из RewriteRule. Не очень внятно для доки такого серьёзного и важного модуля.
Если немного обобщить, то можно сказать, что плохая документация (или её полное отсутствие) - беда многих (наверно даже большинства) opensource-проектов. Мол, нужно детальнее в чём-то разобраться - смотри исходники.

пятница, 3 августа 2007 г.

xekc о решении проблем

Сооветую очень всем, для кого жизнь - это процесс решения проблем.
Proactive anything от Xekc.
.
Правду говорит. Беда в том, что не у всех хватает духу и терпения чуть-чуть себя изменить.

четверг, 2 августа 2007 г.

localhost,localhost

Вчера вторую половину дня офигевал от такой штуки. Из Питона с помощью его httplib посылаю запрос локальному iis. Тестирую ISAPI_Rewrite. Ответ приходит ожидаемый - 302. Но!
Location: http://localhost,localhost/...
Я был в шоке. Начал даже было копаться в исходниках httplib.
А оказалось, что я в запросе два раза посылаю заголовок
Host: localhost
Host: localhost
А iis - порядочная сволочь. Дали ему два раза хост - он аккуратно через запятую их оба и вернул.

вторник, 31 июля 2007 г.

Hello, Новый рабочий год!

Второй день на работе после отпуска. Каким же он был?
Крым. Рыбачье, Алушта, Новый свет, тропа Голицина, грот Шаляпина, мыс Капчик, Судак, Генуэзская крепость, Ялта, Канатная дорога, Ай Петри, Большой Каньон Крыма, Ванна молодости. Вино на Ай Петри в кафе №19 - яд, не вздумайте даже дегустировать.
.
Радуюсь, что поимел возможность две недели не слышать и не думать о iPhone, google, vista, iis, rewrite и python.
Настоятельно всем рекомендую.

пятница, 13 июля 2007 г.

четверг, 12 июля 2007 г.

За день до отпуска

Завтра последний день работы. Если забью - то сегодня последний. Перед отпуском какая-то непрерывающаяся предпраздничная эйфория.
WebTester - работает. Пишу теперь кейс-тесты. Пока не очень быстро, но дело наживное.
Радуюсь фликру. Какая продуманная и замечательная система! фотосайт конечно сосёт. С его кучей графической и флэшевой рекламой, с медленной загрузкой и дурацкими лимитами на объемы и снимки - сосёт в квадрате.
Хочу конечно iPhone :)

пятница, 6 июля 2007 г.

WebTester

Задача описывается так: есть сайт со статическими и динамическими страницами, с установленными rewrite- или proxy-модулями. Корректность работы этих модулей после каждого билда и нужно проверять. Для этого пишутся кейс-тесты, которые содержат заголовки для http-запроса и непосредственно ответ (заголовки и тело), который сравнивается с ответом пришедшим на запрос. Если модули работают правильно - шаблонные и пришедшие ответы должны совпадать. Результаты раскрашиваем и сохраняем в html-файле. Всё.
На Питоне сделалось всё за два дня. Можно говорить даже, что бета готова. И довольно красиво получилось.
Ура Питону!

четверг, 5 июля 2007 г.

Мои благодарности и радости

Выражаю благодарность.
  1. Создателям WMVare за огромное количество сэкономленного времени при отладке и проверке работоспособности на 9(!) операционных системах!
  2. Создателям регулярных выражений за супер мощу при разборе текстов!
  3. Создателям протокола HTTP за то, что он text-based, а не двоичный.
А Python рулит. Радуюсь его красоте и силе. Радуюсь, что Гвидо опубликовал наброски к 3000. Теперь он станет ещё лучше. И Гвидо, и Питон.

вторник, 3 июля 2007 г.

Hello, Python!

С сегодня я занялся очень интересным для меня делом. Даже не столько делом, а сколько инструментом для одного дела. Этот инструмент - Python, a дело - набор кейс-тестов для нового ISAPI_Rewrite3.

понедельник, 2 июля 2007 г.

Конец июня

Прошлая неделя как во сне. Сначала три дня командировки в тепловую станцию, а потом три в родном городишке. Пролетело и - вжик - нет.
Сегодня столкнулись с такой простой задачей. Одно приложение вызывает другое и аргументом передаёт строку для модификации. После изменения этой строки (пользователем) она должна вернуться в первое приложение. Самое простое и понятное решение - второе приложение шлёт первому сообщение с указателем на эту строку. И - не работает. GetParent не возвращает верный хэндл родителя. А если ещё учесть в Висте передать сообщение другому приложению без бубна вряд ли выйдет, то решили, от этой фичи вообще отказаться. Пока. Был ещё вариант с буфером обмена, но это - неуважение к пользователю. Херить его содержимое буфера, конечно, не годится.

суббота, 23 июня 2007 г.

Ещё немного о IAppHostAdminManager

Собственно такой набор:

typedef CComPtr<IAppHostAdminManager> MetaElement;

MetaElement getSiteById(UINT);
MetaElement getAppByPath(IN MetaElement, IN wstring);
MetaElement getDefaultApp(IN MetaElement);
MetaElement getDefaultVirtualDirInApp(IN MetaElement);
MetaElement getVirtualDirInApp(IN MetaElement app, IN wstring path);

wstring getAppPath(IN MetaElement app);
wstring getPathInApp(wstring, wstring);
wstring getParentVirtualDirPath(IN MetaElement, IN wstring);
wstring getPathRemainder(IN wstring path, IN wstring subpath);

bool isSubPath(wstring, wstring);

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

пятница, 22 июня 2007 г.

Былое

Берёт меня иногда тоска по моей былой жизни. Читаю вот обзор инетштучек о вебдваноль-жизни и помню, что сам был в двух шагах от неё. Читаю обзоры новинок от Apple и о простоте и могуществе Ruby. Не хватило духу на эти два шага. А теперь? Не жалуюсь. Интересно. Денежно.

четверг, 21 июня 2007 г.

Code Review

Теперь уже можно сказать, что я закончил Helicon Manager, над которым трудился последний месяц. Он входит в состав инсталляции ISAPI_Rewrite3, о котором можно почитать на сайте компании Helicon http://www.helicontech.com/isapi_rewrite/, там можно и скачать лайт или триал версию этого продукта. Самое сложное, что было реализовано в Helicon Manager - это работа с метабазой IIS7. Документации нормальной нет, примеров хороших тоже не нашлось. До много пришлось доходить самому плюс, конечно, помощь коллег.
Теперь что? Теперь - код ревью этого самого ISAPI_Rewrite.

Самый длинный день в году

Господа! Сегодня же самый длинный день в году! Лето в самом разгаре. А вы всё ещё сидите в своих кондиционируемых офисах? Прожигаете такое замечательное время за своими двухядерными компами? Не говорите только, что в августе будет отпуск и вы на неделю вырвитесь на море. Это не лето. Лето нужно ловить каждым вздохом утреннего леса. Остановитесь. Берите лето руками. Дышите им, смотрите на него. Купайтесь утром в соседнем пруду. Бродите вечером до поздна пролесками, степями, парками или на худой конец тесными уютными улочками.
Лето вокруг нас.

среда, 20 июня 2007 г.

AppHostAdminManager using

Приведу небольшую выдержку из ещё сырого, но уже почти рабочего класса для работы с метабазой при помощи AppHostAdminManager.
 UINT searchSiteChlidren(IISNodeTree*);
UINT searchAppChildren(IISNodeTree*, MetaElement);
UINT searchVirtualDirPhisChildren(IISNodeTree*, MetaElement, wstring path = L"");
MetaElement getSiteById(UINT);
MetaElement getAppByPath(IN MetaElement, IN wstring, OUT wstring*);
MetaElement getDefaultApp(IN MetaElement);
MetaElement getDefaultVirtualDirInApp(IN MetaElement);
wstring getPathInApp(wstring, wstring);
wstring GetParentVirtualDir(IN MetaElement, IN wstring);

Ещё будет пару методов для полноты.
Замечательная возможность попрактиковаться в проектировании, и промыть немного мозги.

IIS 7.0 Metabase

Господа! Все, кто юзает метабазу iis! Радуйтесь тому, как просто и очевидно устроена метабеза в пятёрке и шестёрке! Это когда виртуальные подкаталоги суть подузлы родительского узла виртуального каталога. Кто панкует - должен понять о чём я говорю.
Смотрим на метабазу семёрки. И? Виртуальные каталоги - это просто список, никаких вложенных подузлов или подкаталогов. Плюс application path="...".
Спасибо ребятам из Майкрософта. Не оставят они программистов без работы.

пятница, 15 июня 2007 г.

Windows Network Troubles

У знакомых менеджеров перестал работать инет на машине. После вируса. Пинги идут куда хочешь и всё. Ни http, ни почтовые протоколы, ни tracert не работают. Помогла статья Windows XP SP1 Network Problem Solver и в частности такое:

netsh winsock reset

Деревья

Мою оригинальную иконку таки не приняли. Слишком концептуальной она оказалась что ли. Но я в отчаяние не упал, а сделал простую по пикселям из двух букв rw.
За вчера-позавчера сделал фичу, которой боялся много лет, наверно с первого курса института. Это tree control, который динамически (в рантайме) создаёт себе узлы и ветки. Оказалось довольно просто. Узлы для этого дерева ищутся в метабазе IIS и директориях wwwroot. Всё замечательно работает для XP и 2003, сегодня предстоит тоже, но для Vista (т.е. для iis 7).

среда, 13 июня 2007 г.

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

Какие же должны быть иконки? Как и в песне о логотипах и лэйбаках можно услышать: современными, технологичными, красивыми, отражать динамичность развития, устойчивость и коммуникабельность. Всё это, конечно, сопли менеджеров и слюни дизайнеров, которые набивают себе цену. На мой ни на что не претендеющий взгляд иконка должна:
  1. Быть уникальной, идентичной и не похожей ни на какую другую.
  2. Соответствовать некоторому выбранному стилю. Например, тому стилю, что выбран для линейки продуктов или всех продуктов некоторой компании вообще.
Похожа ли она на какие-то буквы, есть ли логическая связь с назначением продукта, соответствует ли цветам, которые могут ассоциироваться с продуктом - всё это не имеющие значения сопли.

Как известно даже последняя Visual Studio 2005 понимать иконки с пнг-сжатием для Vista отказывается. Мы нарыли программку ReplaceVistaIcon.exe, которая всё делает правильно. Правда есть первый сервис-пак для студии, возможно он эту проблему решит корректно. Но поставить мне его не удалось. То есть я ждал больше часа пока его инсталляция раздуплялась, но не стерпел и выключил её.

вторник, 12 июня 2007 г.

Icon for Rewrite

Сделал вчера несколько иконок для rewrite (тот самый rewrite, что для iis (не только для 5 и 6, но и бета для 7 в конце недели!)). А вечером долго не мог уснуть. Всё эти иконки крутились в голове. И уже почти заснув, я увидел среди них ту, что нам нужна. О ней - завтра. А сейчас еду в ненавистную командировку на день за три-девять земель.

понедельник, 11 июня 2007 г.

Vista icons

Все уже наверно видели иконки Windows Vista. Они теперь имеют размер 256 на 256 и сжимаются PNG. Вот на счёт PNG - молодцы, это уже давно пора. Есть даже уже проги, которые могут такие иконки правильно делать. Да вот беда - VS 6, .NET, 2005 не умеют компилировать ресурсы с такими иконками.
What's New with Windows Vista™ Icons?

пятница, 8 июня 2007 г.

Почти как mmc

Задача моя усложнилась. Теперь мне надо из метабазы iis вытаскивать не только список сайтов, но и список директорий и поддиректорий (в runtime). Красота вся в том, что часть этих директорий - виртуальные, а часть реальные в файловой системе. Плюс разные походы для работой с метебезой в iis 5 & 6 (XP, Server 2003) и в iis 7 (Vista, Longhorn).
Эх! Интересная будет будущая неделя!

Опять процесс идёт / Vista UAC

Среда и четверг немного взбодрили меня. Я опять много пишу, пробую, отлаживаю.
За эти два дня поборол следующую проблему. В всеми нами любимой Висте новая система управления аккаунтами и привелегиями пользователей UAC. Помогла мне немного понять её эта статья. Задача банальная была. Пользователь состоит в группе администраторов и моё приложение должно им запускаться с правами админа. По умолчанию в Висте оно запускается с минимальными (или какими-то нормальными) правами. Можно правда делать правый клик и выбирать Run As Administrator. Но это не хорошо, понятно думаю.
Я привожу далее решение, которое работает у меня. Может оно и не самое правильное. Но оно работает.
  1. Создаём в корне проетка файл с манифестом, пример которого есть в статье. Исправим там имя exe и его описание.
  2. В VS пишем путь к бинарникам из последнего Platform SDK (для Висты). Среди этих бинарников есть файл mt.exe, который и будет внедрять манифест в exe.
  3. В постбилд событиях для проекта пишем что-то типа

    mt.exe –manifest MyApp.exe.manifest -outputresource:$(TargetPath);1


Смотрим теперь в Висте (огромное спасибо VMware) и видим этот маленький щит на иконке файла приложения. Запускаем дабл-кликом и але-оп - окно с предложением предоставить права админа.
В этот же манифест добавляйте всё, что нужно. Например, я сперва забыл туда дописать, что приложению нужны comctrls минимум версии 6.0 (для отслеживания нажатия кнопок на PropertySheet). Долго искал в чём бок, пока не понял, что бок в манифесте.
Немного ссылок:

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

Пауза

Пятидневную паузу в своих путешествиях по джунглям COM, IIS и MMC я был вынужден сделать по банальной причине. Я - женился. Устал жутко.
Теперь буд-то просыпаюсь после длинного сна и начинаю вспоминать, чем я занимался последние полмесяца.

вторник, 29 мая 2007 г.

__noop и я

Для вывода отладочных сообщений у меня есть функция DebugMsgW со списком аргументов как в printf, которая внутри себя использует OutputDebugStringW. Ну и вызваю я её так:
::DebugMsgW(L"fafa\n");

И вот отладка прошла нормально, начинаю делать релиз. А без _DEBUG эта функция превращается так:
#define DebugMsgW __noop

Компилирую. И вижу тучу ошибок:
error C2039: '__noop' : is not a member of '`global namespace''

Начинаю ковыряться в опциях компилятора Compiler Intrinsics , какие-то #pragma intrinsics(..) подставлять. Нихуя.
Потом вдруг понимаю какой я идиот! Виной тому два двоеточия перед
DebugMsgW! Получается же ведь такое:
::__noop(...)

вот и ищет компилятор в глобальном пространстве имен этот __noop. А его там нет. Конечно.

Да я к чему это - внимательней надо читать сообщения об ошибках.

Моя первая программа для Windows Vista

Только что я удачно откомпилировал и запустил свою первую программу для Windows Vista. При чём это не какой-нибудь HelloWorld, а рабочая штука, которая общается с метабазой IIS7 и загружает snapin`ы.
Приятно почуствовать себя в псевдоавангарде.

понедельник, 28 мая 2007 г.

Оператор goto

Смотрю я на C++ примеры для работы с метабазой в Vista (IIS 7). Смотрю и радуюсь. Без оператора goto - ни шага.
Примеры рабочие и суть проясняют. Но по ним же будут учится дети!

Чуть о Vista

Научился 10 дней назад я работать с метабазой IIS. Требовалось мне от неё довольно мало. Всего лишь получить список сайтов с их id и именами. А сегодня я узнал, что всё это работать в Vista не будет! Нет в ней уже этого COM-объекта, который делал всю работу. Да и формат метабазы IIS изменился. Появился другой COM-объект. Вернее не другой, а куча других. Благо в доке SDK есть какие-никакие примерчики. Да и в инете можна кое-что найти.

Удивляет сам подход: всё похерить и сделать заново! обратная совместимость - для неудачников.
Microsoft никогда не оставить программистов (и своих и остальных) без работы - новая версия чего-нибудь - новые интерфейсы - новый гемморой.

пятница, 25 мая 2007 г.

PropertySheet побеждён

И так, задача:
VS2005, WTL 7.5, есть dll со snapin`ами для mmc, нужно их загрузить и сделать для них PropertySheet не как отдельное модальное окно, а в окне уже существующем (в моём случае диалоговом). Ну через COM-интерфейс получить доступ к этим snapin`ам понятно легко. Самым тяжёлым для меня оказалось сделать встроенный в диалоговое окно PropertySheet. После 8 часов ковыряний получилось. Но! Snapin начинал неправильно обрабатывать сообщения. И вешал всё приложение. Бок оказался в простом. Делать встроенный PropertySheet можна только в окне с внутренним фреймом! Типа CFrameWindowImpl. Тогда всё работает правильно.
Хотя, если догло и хорошо покурить, то наверно можно добиться и правильной обработки сообщений и для диалогового окна.
Ссылки:
1
2
и что-то ещё с www.codeproject.com

четверг, 24 мая 2007 г.

О хохлах и неграх

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

вторник, 22 мая 2007 г.

PropertySheet

IDataObject и IPropertySheetCallback - это просто. Реализацию делай как тебе удобно. Совсем другое дело этот PropertySheet. Курил я его догло. Полдня. Нужно, что бы он создавался не в отдельном своём окне, а на уже существуюшем контроле (по-моему можно любом). Не такая очевидная задача, как кажется на первый взгляд. Конечно если использовать WTL и не использвать MFC, так как в MFC эта задача решается очень просто. Нашёлся нужный пример на CodeProject. Который я выкачал ещё утром, но не понял всей его важности для себя. Технические подробности опишу в следующий раз. И это наверно будет уже послезавтра. А завтра - комммандировка ненавистная.

Бежать и спасибо Шкоде

Неправильно бегаете вы по утрам. Без гантелей, правда? Это неправильно. В каждую руку по гантеле и бежать, бежать, бежать. Стиснув зубы и задыхаясь.

Спасибо говорю Шкоде. Она сломалась. И теперь не сможем поехать в грёбанную комммандировку. А я займусь интерфейсами IDataObject и IPropertySheetCallback. Вечер, ночь и утро они не давали мне покоя. Я продумал много деталей. Но конечно не все.

Скажу, что намудрили, конечно, Microsoft, намудрили.

понедельник, 21 мая 2007 г.

IDataObject

Для того, что бы руками вызвать snapin, который зарегистрирован для MMC, нужно иметь два интерфейса: IDataObject и IPropertySheetCallback. Сегодня я курил первый. И понял, что его лучше не искать у какого-то COM-объекта, а просто нужно реализовать самому. Т.е. наследовать от него класс и имплементировать все нужные методы. Делов то!

воскресенье, 20 мая 2007 г.

Заяц, поломанное сиденье и snapin`ы

Несмотря на то, что мне ещё нужно долго и упорно курить COM и IIS, на выходных я плюнул на всё. Я поехал в родной провинциальный городишку. Сел рано утром на велосипед, взял фотокамеру и поехал лесами-степями. Масса положительных впечатлений! Сколько там всякой живности! Ужи-ящерки, утки-гуси, цапли-аисты, заяца чуть не задавил. Хорошо. Вброд переходил реку, правда потом оказалось, что перешёл на остров и вернулся обратно, сломал сиденье на велике и остальные 10 км домой ехал стоя на ногах.
Взамен я кажется уже полностью понял как работают snapin`ы для mmc. Завтра с утра и проверю.

пятница, 18 мая 2007 г.

IIS Metabase

Тем, кто начинает работать с метабазой IIS, очень рекомендую посмотреть этот код для примера:
http://www.google.com/codesearch?hl=en&q=+IMSAdminBase+EnumKeys+show:8nuIGF-G2DA:EWYTcYGK1Rk:RGWQZJDNrt4&sa=N&cd=5&ct=rc&cs_p=http://www.opensource.apple.com/darwinsource/tarballs/other/apache_mod_php-6.2.tar.gz&cs_f=apache_mod_php-6.2/php/ext/iisfunc/iisfunc.cpp#a0
Мне очень помог. Там всё нормально компилиреутся и работает. В предыдущем моём посте описан бок, который был у меня.
Смех в том, что код этот из mod_apache_php в исходниках Darwin (ядро MacOS X :))))
Возникает такой вопрос: можно ли найти пример кода для apache в исходниках Microsoft?
Смешно, правда?

error LNK2001

Начал я юзать метабазу IIS. Как-то так:

#include "iadmw.h"
#include "iiscnfg.h"

void f(){
HRESULT hRes = 0;
CoInitialize(NULL);
Res = CoCreateInstance(CLSID_MSAdminBase_W,
NULL,
CLSCTX_ALL,
IID_IMSAdminBase_W,
(void **) &pIMeta);
if (FAILED(hRes))
DebugMsgW(L"CoCreateInstance failed.\n");
}


И, компилируя, получаю:

MetaBaseSimple.obj : error LNK2001: unresolved external symbol _CLSID_MSAdminBase_W
MetaBaseSimple.obj : error LNK2001: unresolved external symbol _IID_IMSAdminBase_W

Роюсь в MSDN. И нахожу такое: http://support.microsoft.com/kb/130869
Оказывается, нужно первее всех включить файл initguid.h. Тогда всё работает.
Странное решение. Затычка какая-то.

четверг, 17 мая 2007 г.

Красота кода или быстрота кодинга

Сегодня столкнулся с такой проблемой. Быстро наляпал нужный мне класс, але-оооп - работает. Но как это всё выглдит? Жутко. Некрасиво, небезопасно, никаких проверок, потом и утечки вижу присутствуют. Ну и где-то полчаса потратил на вылизывание.

Поворот

Десять дней назад я жил другой жизнью. Я был в восторге от Питона и Джанги, у меня была идея своего вебдваноль-стартапа, я вёл другой блог, я нихера толком не делал и мечтал о том, как куплю MacBook Pro.

Вот такие бывают в жизни повороты,
Но это не значить, что никому нельзя верить.
Жизнь очень сложная штука,
А Мише нужно оторвать яйца!

среда, 16 мая 2007 г.

GUI в Visual Studio

Много лет я делал все интерфейсы пользователя для Винды при помощи библиотеки VCL сначала в Delphi (ещё в институте), а потом и в C++ Builder (уже на работе). Просто, понятно, весело, легко. И вот лицом к лицу WTL / ATL / WinAPI / COM / ISAPI. Тошнит.
Но теперь я понимаю почему в институте учат именно Delphi. Во-первых WTL, ATL, WinAPI - это не просто, это требует глубоких знаний. Во-вторых, VCL - простая и понятная штука не столько для студентов, сколько для преподов. А большая часть из них (из преподов, да и из студентов тоже :) - лентяи.

MFC, WTL

Продвинутые программисты, которые уже много лет пишут под Windows, не советуют мне использовать MFC (для создания GUI в частности). Советуют настойчиво WTL.

http://sourceforge.net/projects/wtl/

вторник, 15 мая 2007 г.

Ах, Linux! Ох, Windows!

Последние года два-три я прививал в себе любовь к Линуксу, и копил ненависть к Винде.
Последние полгода я работаю только под Линуксом. И мне это нравится, чёрт подери!
Но.
Судьба поворачивается так, что теперь я подключаюсь (надеюсь на долго) к большому проекту для Винды с Visual Studio, MSDN, Vista и дальше.
Тошнит, пока. Но работать нужно.
Брезгливость все же не самое лучшее качество для программиста.

Боевой сервер

Рад сообщить, товарищи, что сегодня пошёл 73-й день аптайма моего сервера.
Очень простой серверок: Sempron 2300 / 256M / IDE HDD Samsung 20G. Стоит Ubuntu 6.06 Server. А живёт на нём:
  • firewall на iptables + шлюз в инет для всех в сети
  • почта postfix + dovecot + spamassassin
  • веб-сервер (apache понятно) с нашим внешним и внутренним сайтом + mysql с базой данных для сайта.
  • named нэйм-сервер
  • и для удобства ftpd, sshd
Был бы аптайм наверно и больше, да свет в начале марта отключали на долго и ИБП (тоже очень простой) не выдержал.

А я к чему - дёшево и сердито.

понедельник, 14 мая 2007 г.

Advantech PCA-6134P

Задумали мы проверить один переходник из RS-232 в RS-485. Нашли старенькую SBC Advantech PCA-6134P. Второй порт её можно настроить на 485-й интерфейс джамперами. Начал я искать мануал. На сайте advantech.com.tw не нашёлся (или хорошо спрятали?).
Нашёл тут. Обрадовался. Смотрю - на моей CBS не хватает джамперов. Вот просто нет и всё. На схеме мануала есть, а на плате нет.
Вот такая засада.

Новая жизнь

Легко начинать новую жизнь.
Трудно жить этой новой жизнью каждый день.

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