- 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.
понедельник, 31 декабря 2007 г.
Что я сделал в году 2007?
пятница, 28 декабря 2007 г.
Я радуюсь:
- вышла новая версия замечательного языка для скриптования сайтов Parser, с помощью которого я сделал три простеньких сайта и получил при этом массу удовольствия от работы с языком;
- блин, реально страшно, если вдруг google заблокирует мой аккаунт! Что делать, чтобы избежать неприятных последствий, пишет Ionut Alex Chitu в Google Operating System.
четверг, 27 декабря 2007 г.
вторник, 25 декабря 2007 г.
Я радуюсь:
- 5 лет уже многие пользуются замечательным плеером mpg123, а только сегодня вышла его версия 1.0.0!
- пейзажи глаз от Rankin;
- на одной дискете с очень стабильным и вполне функциональном (для серверных нужд) дистрибутивом Linux Freesco осталось свободно 59 кб!
понедельник, 24 декабря 2007 г.
Размер директорий в Linux
Оригинал: Как узнать размер директорий в линукс на моём блоге.
Всегда было для меня проблемой узнать размер директории в Linux. Оказалось, это очень просто. Нужно было потратить 20 секунд на поиск в гугле. Это команда du.
покажет в килобайтах размер /home и всех её поддиретокрий
покажет это в килобайтах и мегабайтах
покажет только общий размер диретории, без поддиректорий.
Всё просто и я радуюсь!
P.S. Fail2Ban работает -- банит нежеланных гостей.
Всегда было для меня проблемой узнать размер директории в 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 г.
Я радуюсь:
Но сайт, честно говоря, тупой.
- гугл запустил ботов-переводчиков;
- ой хороша идея на счёт проклятого эксплорера номер 6;
Но сайт, честно говоря, тупой.
- Полный бардак в названиях городов, школ, институтов. В МоёмКруге, например, всё замечательно организовано и упорядочено.
- Система сообщений мне совсем не понравилась.
- Медленный очень сайт.
среда, 19 декабря 2007 г.
Я радуюсь:
- на сайте ibm появилась очередная хорошая статья о Питоне;
- хорошее сетевое издание о музыке, почему раньше я не видел его?
вторник, 18 декабря 2007 г.
Я радуюсь:
- Хоть язык Perl я и не люблю, но уважаю, а потому поздравляем его с 20-летием!
- Хорошая статья о многопоточности в Питоне.
пятница, 14 декабря 2007 г.
ssh вместо ftp
Сам себе хостер
Я радуюсь, потому что я стал сам себе хостером. Для этого я проделал такие шаги:
- пошёл в банк и заказал себе дебетную карту 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 килобайт.
Использую и радуюсь. Спасибо авторам!
Уже больше года назад (уж не помню как) нашёл я замечательную программку Small CD Writer. Может она всё, что нужно от прожигателя дисков: стирать и записывать cd & dvd, делать и записывать iso-образы. Красота. Аудио-диски не может записывать только. Но по-моему это уже давно не актульно. Весит распакованная 400 килобайт.
Использую и радуюсь. Спасибо авторам!
понедельник, 10 декабря 2007 г.
Я радуюсь:
- хоть и с большим опозданием, но заявлю и я -- Ruby On Rail 2.0 вышел!
- моя учёба слепой печати идёт - уже 120 символов в минуту если без ошибок и 150 если поторопиться. Dimox вот рекомендует программку Milton.
- а не жжец, но читать без слёз не могу.
четверг, 6 декабря 2007 г.
среда, 5 декабря 2007 г.
Я радуюсь:
- вышла JavaScript Library Ext JS 2.0;
- flickr объявил о возможности править фотки с помощью сервиса Picnik.
- решил поставить Windows Live Writer (хвалили его), онсука говорит, что нужно срочным образом обновить винду заплатками, без них не могёт. Значит не судьба.
вторник, 4 декабря 2007 г.
VerseQ & Solo
Неделю назад я решил начать учится быстро и вслепую печатать на клавиатуре. Погуглил немного. Нашёл Соло и VerseQ.
Соло нашёл 8.х первым. Поставил и начал разбираться. Реально заёбывают эти долгие прелюдии перед каждым упражнением и тупые шуточки про компьютериков. Ну и эти разминки типа нажмите 50 раз клавишу а. Я занятой очень человек и заниматься всякой хуйнёй не хочу. Так бы наверно и мучался. 9-й может получше? Но я забил.
Скачал VerseQ. Вводного текста с правилами обучения и советам совсем немного. Понятно и по сути. Нет ограничения на количество ошибок в каждом упражнении. Выглядит приятней. Поле ввода и экранная клавиатура побольше будет. Звук только не знаю как выключить -- немного мешает.
В общем начал заниматься. Примерно по 10-20 минут утром и вечером. И результат на лицо. 90-100 символов в минуту если аккарутней и без ошибок. 110-120 символов если поспешить и получить 2-3-4 ошибки.
Продолжаю.
Соло нашёл 8.х первым. Поставил и начал разбираться. Реально заёбывают эти долгие прелюдии перед каждым упражнением и тупые шуточки про компьютериков. Ну и эти разминки типа нажмите 50 раз клавишу а. Я занятой очень человек и заниматься всякой хуйнёй не хочу. Так бы наверно и мучался. 9-й может получше? Но я забил.
Скачал VerseQ. Вводного текста с правилами обучения и советам совсем немного. Понятно и по сути. Нет ограничения на количество ошибок в каждом упражнении. Выглядит приятней. Поле ввода и экранная клавиатура побольше будет. Звук только не знаю как выключить -- немного мешает.
В общем начал заниматься. Примерно по 10-20 минут утром и вечером. И результат на лицо. 90-100 символов в минуту если аккарутней и без ошибок. 110-120 символов если поспешить и получить 2-3-4 ошибки.
Продолжаю.
Я радуюсь:
- вышел новый Damn Small Linux с кучей исправлений и улучшений;
- вышел XFCE 4.4.2;
- Firebird живёт и побеждает;
пятница, 30 ноября 2007 г.
Keepass
Я радуюсь, что у меня есть замечательная программа для хранения паролей KeePass. Паролей у меня много: несколько почтовых ящиков, соцсети, репозитарии, форумы. Стараюсь пароли делать разные и подлинее. И какое-то время назад я понял, что упомнить все не могу. Записывать что ли? Нет, конечно. И нашёл эту замечательную программулинку. Живёт она на флешке, т. е. всегда со мной. Рядом с ней лежит и зашифрованная база данных моих паролей. Для доступа к ней один мастер-пароль. А таких баз данных может быть несколько.
Работает это дело так: Открываю программу, ввожу мастер-пароль, выбираю нужный аккаунт, нажиматю Ctrl+C и пароль хранится в буфере обмена 20 секунд.
Программа не только совершенно бесплатна, но ещё и OpenSource, т. е. можете в исходниках проверить честность алгоритмов шифрования . Что очень радует - есть версия для Линукс.
Работает это дело так: Открываю программу, ввожу мастер-пароль, выбираю нужный аккаунт, нажиматю Ctrl+C и пароль хранится в буфере обмена 20 секунд.Программа не только совершенно бесплатна, но ещё и OpenSource, т. е. можете в исходниках проверить честность алгоритмов шифрования . Что очень радует - есть версия для Линукс.
четверг, 29 ноября 2007 г.
Я радуюсь:
- Gdrive от google таки будет;
- поисковая система, в которой результаты поиска проплачены -- какой идиот будет ей пользоваться?
- "Vista не вписывается в современную маркетинговую политику производителей ноутбуков";
- может и в проклятой винде будет красиво и удобно работать?
понедельник, 26 ноября 2007 г.
О веб-разработке
Господа, товарищи, леди и джентельмены! Надо радоваться! Нам всем очень повезло! В наше нелёгкое время делать веб-приложения стало легко и приятно. Ещё 5 лет назад это было гораздо сложней. Итак, что нужно:
- Идея. В этом вопросе вам никто не поможет, кроме вас самих. Смотрите, ищите, анализируйте. Сегодня Идеи витают в воздухе!
- Подход. Или филосифия, если угодно. Да вот же она - Getting Real. Есть и русский перевод это замечательной книжки.
- Платформа. Или инструментарий. Это, конечно Django. Быстрая и элегантная разработка без лишних заморочек.
пятница, 23 ноября 2007 г.
О сервисе
Радоваться особо нечему. Решил я себе сделать дебетную карту Visa для платежей зарубеж. Посмотрел, что предлагают банки. Аваль, Приватбанк, АльфаБанк, Укрсиббанк, OTP Bank. У первых трёх неснижаемый минимум на карточке - 100 баксов. Многовато. Это положи их, а пользоваться этими деньгами никак не получится. Укрсиббанк -- отдельная история. Захожу на сайт посмотреть цены у них. На странице куча ссылок на xls-файлы с непонятными мне названиями. Удобно, правда? После нескольких попыток нашёл нужный. Скачал, открываю. Он просит обновить какие-то ссылки и запусктить какие-то макросы. Очхорошо. Цены вроде подошли. Пошёл в ближайшее отделение. А девочка, которая там занимается карточками и говорит мне: "я сейчас так занята, так занята! приходи завтра, а лучше -- послезавтра." А? Пошёл в соседнее. Там девочка мне говорит: "Заказать вы карточку можете, но у нас их с лета(!) нет, когда получте -- неизвестно. а про платежи зарубеж через интернет я ничего не знаю. Как будут списываться деньги со счёта?". Аааа!!! Это она у меня спрашивает, как будут списываться деньги? Это я у неё должен спрашивать! Вот это сервис!
Всё остальное можете считать рекламой. Пошёл в ОТР Bank. Показали, расказали, сделали договор, жду через несколько дней готовую карточку. За полчаса, без дурацких вопросов и глупых улыбочек.
Да. Банки наши нихуя за клиентов не борятся. Обидно. Я же за своих клиентов борюсь.
Всё остальное можете считать рекламой. Пошёл в ОТР Bank. Показали, расказали, сделали договор, жду через несколько дней готовую карточку. За полчаса, без дурацких вопросов и глупых улыбочек.
Да. Банки наши нихуя за клиентов не борятся. Обидно. Я же за своих клиентов борюсь.
четверг, 22 ноября 2007 г.
Я радуюсь:
- Ростелеком будет внедрять OpenOffice.org;
- собирают подписи против MS OOXML, я подписался;
среда, 21 ноября 2007 г.
Я радуюсь:
- лебедев опять в центре скандала, страсти кипят, я лично не вижу ничего плохо в таком сайте: хочешь -- смотри, хочешь -- нет, каждый выбирает сам;
- красивым будет / новый kde;
вторник, 20 ноября 2007 г.
Чуть новостей и сочуствия
Я радуюсь:
Поддерживаю и сочуствую:
Поддерживаю и сочуствую:
- компания Centrohost - редкостное уебанство, а Устинов Юрий - пидорас.
пятница, 16 ноября 2007 г.
Я радуюсь:
- нанотехнологиям российского масштаба;
- в Киеве требуются ruby ninja;
- mootools сделает Plugin to uninstall Internet Explorer from any machine within network range;
четверг, 15 ноября 2007 г.
Не нравятся мне фиды digg.com тем, что кликая на ссылку, попадаешь на digg, а не туда, куда эта ссылка по идее должна вести. Хотя рекламу же нужно кому-то показывать.
Чикуенок начал писать статьи о png. Ждём следующих.
Чикуенок начал писать статьи о png. Ждём следующих.
среда, 14 ноября 2007 г.
Я радуюсь потому, что сегодня много картинок:
- все поклонники Nokia могут посмотреть на прошлое компании;
- веб 2.0 своими руками :)
- фанаты скинулись и купили клуб;
- пример clean html-кода;
- теперь для всемилюбимой картинки про гугл и микрософт есть всоя страница;
- огромное спасибо башу цитату дня (на мой взгляд);
вторник, 13 ноября 2007 г.
Android
Народ! Налетай! Гугл раздаёт $10М за интересные разработки на новой платформе Android для мобильных устройств.
понедельник, 12 ноября 2007 г.
Я радуюсь:
написали уже все. Зло? Зло конечно. Конкуренция - добро. Монополия - зло. Большее чем Микрософт? Пока нет.
- google представляет виджет для перевода страниц твоего сайта на другой язык;
гугль -- гораздо большоее зло, чем Микрософт
написали уже все. Зло? Зло конечно. Конкуренция - добро. Монополия - зло. Большее чем Микрософт? Пока нет.
пятница, 9 ноября 2007 г.
Новости и firefox
Я радуюсь:
- вышел очередной nginx;
- потому, что использую FastStone Image Viewer;
- 5 замечательных фотографов;
четверг, 8 ноября 2007 г.
понедельник, 5 ноября 2007 г.
пятница, 2 ноября 2007 г.
Я радуюсь:
- не совсем конкурент eeepc, но всё же;
- словам evolving jerk о cheatsheet;
- всеми любимый сайт уже час как отдыхает с 503-им статусом;
- 37signals предлагают так фильтровать русский спам:
Matches: (в OR и)
Do this: Skip Inbox, Delete it
четверг, 1 ноября 2007 г.
Запустил вчера эффекты рабочего стола на свежей убунте. Ааа! Круто. До этого никогда их не видел. Понравились разве эффекты на MacOSX. Но эти - просто фантастические. Даже на моей Geforce 5200 прилично работают. По ходу работы получается мультфильм.
В общем всем советую попробывать и посмотреть. Не знаю ещё насколько эти эффекты будут помогоать или мешать работать. Время покажет.
В общем всем советую попробывать и посмотреть. Не знаю ещё насколько эти эффекты будут помогоать или мешать работать. Время покажет.
среда, 31 октября 2007 г.
Я радуюсь:
А для того, что бы сделать Ubuntu неотличимой от MacOSX -- есть замечатльный проект Mac4Lin. Попробуйте и порадуйтесь. Очень красиво получается.
- если европейские провайдеры начнут массово переходить на IPv6, останется только думать о том, как избежать конца света.
- о чистоте.
А для того, что бы сделать 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 г.
Я радуюсь:
Я наконец-то понял для чего мне нужен mp3-плейер! Что бы слушать подкасты Умпутуна и Бобука по дороге на работу и домой. Слушать их на работе -- возможности нет: потеря целого часа времени! А подкасты очень интересные.
- Far продолжает развиваться и становится OpenSource!
- индусы жжут;
- IBM пишет о лёгких веб-серверах;
Я наконец-то понял для чего мне нужен 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.
пятница, 19 октября 2007 г.
Я радуюсь:
- Ubuntu 7.10 вышел!
- а у Windows Vista кончается память при копировании большого числа файлов!
среда, 17 октября 2007 г.
Я радуюсь:
- стартовали продажи eee pc;
- у Лебедева куча новых вакансий;
- замечатльеная статья о новой MacOS Leopard;
- mtv ad prints;
вторник, 16 октября 2007 г.
Я радуюсь:
- Олег Дерипаска купит миллион eee pc для российских школьников;
пятница, 12 октября 2007 г.
Я радуюсь:
- послушал купленный вчера новый альбом от Radiohead -- In Raindows: замечательный альбом!
- Reuters говорит, что Asus получил уже больше миллиона заказов на eee pc;
- о замечательном языке MathML (которому я очень благодарен) пишут;
- новому Samsung SyncMaster 225BW;
- GeForce 5200 через свой DVI-выход не может отдать 1680 на 1050.
четверг, 11 октября 2007 г.
Радуюсь:
- скриншоты очень старых программ;
- Слава Radiohead! Покупай их новый альбом за свою цену!
- оказалось, что программисты занимаются программизмом :).
среда, 10 октября 2007 г.
Радуюсь:
- что есть замечатльеный сервис для скачивания видео 0download.ru;
- Fluxbox 1.0 вышел;
- хорошей статье о Веб 3.0;
- что можно сходить на shipit.ubuntu.com и заказать Ubuntu 7.10.
вторник, 9 октября 2007 г.
Спасибо Джинсу
Я радуюсь!
Вчера перешёл на замечательный тариф - Джинс Партнер Новый. Может такое: 3 минуты в сети каждый день бесплатно, потом - 15 коп. за минуту; не в сети - 60 коп. И самое приятное - нет платы за соединение! Такими должны быть тарифы на мобильную связь.
Вчера перешёл на замечательный тариф - Джинс Партнер Новый. Может такое: 3 минуты в сети каждый день бесплатно, потом - 15 коп. за минуту; не в сети - 60 коп. И самое приятное - нет платы за соединение! Такими должны быть тарифы на мобильную связь.
Ржунимагу
Артемий жжёт:
Высокотехнологические маркетинговые технологии в сочетании с инновационной креативной стратегией позволили нам вплотную подойти к реализации уникального для нашей страны формата — конкурса для дизайнеров. Главным отличием нашего конкурса является инновационная мотивационная составляющая, в корне меняющая представление о креативной индустрии.
Высокотехнологические маркетинговые технологии в сочетании с инновационной креативной стратегией позволили нам вплотную подойти к реализации уникального для нашей страны формата — конкурса для дизайнеров. Главным отличием нашего конкурса является инновационная мотивационная составляющая, в корне меняющая представление о креативной индустрии.
понедельник, 8 октября 2007 г.
Начало новой недели
Радуюсь:
- снимки поляроидом от Гранта Гамильтона;
- работа для джанговцев на http://djangogigs.com/ и русская группа по Джанго;
- Линус будет правмителем вселенной;
четверг, 4 октября 2007 г.
Хабр сошёл с ума
Сегодня хабр сошёл с ума. Его фид вернул мне больше сотни постов из блогов, на которые я совсем не подписан. Плюс много старых постов. Наверно, что-то апдэйтили ночью?
О принятии решений
Как я принимаю решения, связанные с моими занятиями? Я отвечаю для себя на три вопроса:
- Это интересно для меня?
- Это денежно?
- Это перспективно?
среда, 19 сентября 2007 г.
вторник, 18 сентября 2007 г.
0918, утро
Я радуюсь:
- вышла замечательная jQuery UI (смотрите демо).
- вышел OpenOffice.org 2.3.
- вышел Gnome 2.20.
- Лебедев зажигает.
- Asus Eee PC дорожает.
понедельник, 17 сентября 2007 г.
0917, утро
Я радуюсь замечательным Webmaster Tools от Google.
Поздравляю Linux с Днём рождения!
Apple приходит в нашу жизнь: в студии проекта "Шанс", который идет на украинском канале 1+1 появился MacBook Pro. На столе у той девочки, что постоянно сидит в углу в подозрительно улыбается.
Поздравляю Linux с Днём рождения!
Apple приходит в нашу жизнь: в студии проекта "Шанс", который идет на украинском канале 1+1 появился MacBook Pro. На столе у той девочки, что постоянно сидит в углу в подозрительно улыбается.
пятница, 14 сентября 2007 г.
0914, утро
Я радуюсь:
- потому что присоединился к акции "Голосуй за деда".
- потому что Gdrive наверно будет.
четверг, 13 сентября 2007 г.
Ещё одно утро
Я радуюсь:
- сегодня День Программиста, себя и всех поздравляю!
- а 15 августа - День свободного ПО.
- Иван Салагаев написал замечательную статью о HTTP, Ajax и jQuery.
- Asus eeePC: жж-коммьюнити и немного фоток.
вторник, 11 сентября 2007 г.
Православная ОС
Баян, наверно, но знакомый очень меня рассмешил:
Виндовс - православная операционная система, потому как в ней есть службы и иконки, а не демоны и зомби.
яржал.
Виндовс - православная операционная система, потому как в ней есть службы и иконки, а не демоны и зомби.
яржал.
Утро
Сегодня утром меня порадовало много хороших новостей:
- IBM dives into OpenOffice.org development;
- новый java look-n-feel WhiteVision;
- Anjuta DevStudio 2.2.1 (stable) -- released!;
- радуюсь цене и спецификации ASUS Eee PC;
- радуюсь избранному из devianART.com #7.
понедельник, 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 г.
Отладка в Питоне
Алекс Лебедев пишет: Эффективное программирование: текстовое представление переменных в python. Советую почитать и использовать.
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 т - нет.
В нашей системе метод определения зольности - радиоизотопный. На уголь непрерывно светит гамма-источник и по рассеянному от угля излучению определяется его зольность. Точность у такого метода такая же как и у стандартного пробоотбора - 2%. Но такой метод меряет зольность непрерывно - меряет все 2000 т угля в сутки.
Но. О великая сила ГОСТа! Если результаты системы и пробоотбора различаются, вначале всегда грешат на систему. И только потому, что сжигание семи грамм подтверждено ГОСТом, а непрерывный радиометрический контроль 2000 т - нет.
вторник, 7 августа 2007 г.
Flashblock
Не люблю я флэш. Совершенно попсово-тинейджерская технология для красочной рекламы. И помогает мне не любить его замечательное расширение для Огнелиса flashblock. Спасибо авторам для мегабайты сэкономленного траффика и психики.
HTTP Headers
Для просмотра HTTP-заголовков, которые отправляет и получает Firefox, советую замечательное расширение Live HTTP Headers. При отладке моих тестов rewrite`а - просто необходимая вещь.
понедельник, 6 августа 2007 г.
Немного об rewrite
Движок для тестирования Rewrite готов. Написан на Питоне. Теперь занимаются самими тестами. Первый большой набор - это примеры из RewriteGuide. Впечатление от них такое, будто писали их много лет назад, для какой-то очень ранней версии rewrite. Для изучения эти примеры вполне годятся. Но заставить их все работать на последнем rewrite без мелких правок не получится никак.
Ещё приколола такая тема из доки mod_rewrite.
Т. е. mod_rewrite пытается угадать (!), что я имел ввиду в Substitution из RewriteRule. Не очень внятно для доки такого серьёзного и важного модуля.
Если немного обобщить, то можно сказать, что плохая документация (или её полное отсутствие) - беда многих (наверно даже большинства) opensource-проектов. Мол, нужно детальнее в чём-то разобраться - смотри исходники.
Ещё приколола такая тема из доки mod_rewrite.
Note thatmod_rewritetries 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 namedwwwexists 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 о решении проблем
четверг, 2 августа 2007 г.
localhost,localhost
Вчера вторую половину дня офигевал от такой штуки. Из Питона с помощью его httplib посылаю запрос локальному iis. Тестирую ISAPI_Rewrite. Ответ приходит ожидаемый - 302. Но!
А оказалось, что я в запросе два раза посылаю заголовок
Location: http://localhost,localhost/...Я был в шоке. Начал даже было копаться в исходниках httplib.
А оказалось, что я в запросе два раза посылаю заголовок
Host: localhostА iis - порядочная сволочь. Дали ему два раза хост - он аккуратно через запятую их оба и вернул.
Host: localhost
вторник, 31 июля 2007 г.
Hello, Новый рабочий год!
Второй день на работе после отпуска. Каким же он был?
Крым. Рыбачье, Алушта, Новый свет, тропа Голицина, грот Шаляпина, мыс Капчик, Судак, Генуэзская крепость, Ялта, Канатная дорога, Ай Петри, Большой Каньон Крыма, Ванна молодости. Вино на Ай Петри в кафе №19 - яд, не вздумайте даже дегустировать.
.
Радуюсь, что поимел возможность две недели не слышать и не думать о iPhone, google, vista, iis, rewrite и python.
Настоятельно всем рекомендую.
Крым. Рыбачье, Алушта, Новый свет, тропа Голицина, грот Шаляпина, мыс Капчик, Судак, Генуэзская крепость, Ялта, Канатная дорога, Ай Петри, Большой Каньон Крыма, Ванна молодости. Вино на Ай Петри в кафе №19 - яд, не вздумайте даже дегустировать.
.
Радуюсь, что поимел возможность две недели не слышать и не думать о iPhone, google, vista, iis, rewrite и python.
Настоятельно всем рекомендую.
пятница, 13 июля 2007 г.
четверг, 12 июля 2007 г.
За день до отпуска
Завтра последний день работы. Если забью - то сегодня последний. Перед отпуском какая-то непрерывающаяся предпраздничная эйфория.
WebTester - работает. Пишу теперь кейс-тесты. Пока не очень быстро, но дело наживное.
Радуюсь фликру. Какая продуманная и замечательная система! фотосайт конечно сосёт. С его кучей графической и флэшевой рекламой, с медленной загрузкой и дурацкими лимитами на объемы и снимки - сосёт в квадрате.
Хочу конечно iPhone :)
WebTester - работает. Пишу теперь кейс-тесты. Пока не очень быстро, но дело наживное.
Радуюсь фликру. Какая продуманная и замечательная система! фотосайт конечно сосёт. С его кучей графической и флэшевой рекламой, с медленной загрузкой и дурацкими лимитами на объемы и снимки - сосёт в квадрате.
Хочу конечно iPhone :)
пятница, 6 июля 2007 г.
WebTester
Задача описывается так: есть сайт со статическими и динамическими страницами, с установленными rewrite- или proxy-модулями. Корректность работы этих модулей после каждого билда и нужно проверять. Для этого пишутся кейс-тесты, которые содержат заголовки для http-запроса и непосредственно ответ (заголовки и тело), который сравнивается с ответом пришедшим на запрос. Если модули работают правильно - шаблонные и пришедшие ответы должны совпадать. Результаты раскрашиваем и сохраняем в html-файле. Всё.
На Питоне сделалось всё за два дня. Можно говорить даже, что бета готова. И довольно красиво получилось.
Ура Питону!
На Питоне сделалось всё за два дня. Можно говорить даже, что бета готова. И довольно красиво получилось.
Ура Питону!
четверг, 5 июля 2007 г.
Мои благодарности и радости
Выражаю благодарность.
- Создателям WMVare за огромное количество сэкономленного времени при отладке и проверке работоспособности на 9(!) операционных системах!
- Создателям регулярных выражений за супер мощу при разборе текстов!
- Создателям протокола HTTP за то, что он text-based, а не двоичный.
вторник, 3 июля 2007 г.
Hello, Python!
С сегодня я занялся очень интересным для меня делом. Даже не столько делом, а сколько инструментом для одного дела. Этот инструмент - Python, a дело - набор кейс-тестов для нового ISAPI_Rewrite3.
понедельник, 2 июля 2007 г.
Конец июня
Прошлая неделя как во сне. Сначала три дня командировки в тепловую станцию, а потом три в родном городишке. Пролетело и - вжик - нет.
Сегодня столкнулись с такой простой задачей. Одно приложение вызывает другое и аргументом передаёт строку для модификации. После изменения этой строки (пользователем) она должна вернуться в первое приложение. Самое простое и понятное решение - второе приложение шлёт первому сообщение с указателем на эту строку. И - не работает. GetParent не возвращает верный хэндл родителя. А если ещё учесть в Висте передать сообщение другому приложению без бубна вряд ли выйдет, то решили, от этой фичи вообще отказаться. Пока. Был ещё вариант с буфером обмена, но это - неуважение к пользователю. Херить его содержимое буфера, конечно, не годится.
суббота, 23 июня 2007 г.
Ещё немного о IAppHostAdminManager
Собственно такой набор:
обеспечивает мне нужную функциональность для работы с метабазой седьмого IIS.
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.
Теперь что? Теперь - код ревью этого самого 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="...".
Спасибо ребятам из Майкрософта. Не оставят они программистов без работы.
Смотрим на метабазу семёрки. И? Виртуальные каталоги - это просто список, никаких вложенных подузлов или подкаталогов. Плюс 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).
За вчера-позавчера сделал фичу, которой боялся много лет, наверно с первого курса института. Это tree control, который динамически (в рантайме) создаёт себе узлы и ветки. Оказалось довольно просто. Узлы для этого дерева ищутся в метабазе IIS и директориях wwwroot. Всё замечательно работает для XP и 2003, сегодня предстоит тоже, но для Vista (т.е. для iis 7).
среда, 13 июня 2007 г.
Какие должны быть иконки
Какие же должны быть иконки? Как и в песне о логотипах и лэйбаках можно услышать: современными, технологичными, красивыми, отражать динамичность развития, устойчивость и коммуникабельность. Всё это, конечно, сопли менеджеров и слюни дизайнеров, которые набивают себе цену. На мой ни на что не претендеющий взгляд иконка должна:
Как известно даже последняя Visual Studio 2005 понимать иконки с пнг-сжатием для Vista отказывается. Мы нарыли программку ReplaceVistaIcon.exe, которая всё делает правильно. Правда есть первый сервис-пак для студии, возможно он эту проблему решит корректно. Но поставить мне его не удалось. То есть я ждал больше часа пока его инсталляция раздуплялась, но не стерпел и выключил её.
- Быть уникальной, идентичной и не похожей ни на какую другую.
- Соответствовать некоторому выбранному стилю. Например, тому стилю, что выбран для линейки продуктов или всех продуктов некоторой компании вообще.
Как известно даже последняя 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?
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. Но это не хорошо, понятно думаю.
Я привожу далее решение, которое работает у меня. Может оно и не самое правильное. Но оно работает.
Смотрим теперь в Висте (огромное спасибо VMware) и видим этот маленький щит на иконке файла приложения. Запускаем дабл-кликом и але-оп - окно с предложением предоставить права админа.
В этот же манифест добавляйте всё, что нужно. Например, я сперва забыл туда дописать, что приложению нужны comctrls минимум версии 6.0 (для отслеживания нажатия кнопок на PropertySheet). Долго искал в чём бок, пока не понял, что бок в манифесте.
Немного ссылок:
За эти два дня поборол следующую проблему. В всеми нами любимой Висте новая система управления аккаунтами и привелегиями пользователей UAC. Помогла мне немного понять её эта статья. Задача банальная была. Пользователь состоит в группе администраторов и моё приложение должно им запускаться с правами админа. По умолчанию в Висте оно запускается с минимальными (или какими-то нормальными) правами. Можно правда делать правый клик и выбирать Run As Administrator. Но это не хорошо, понятно думаю.
Я привожу далее решение, которое работает у меня. Может оно и не самое правильное. Но оно работает.
- Создаём в корне проетка файл с манифестом, пример которого есть в статье. Исправим там имя exe и его описание.
- В VS пишем путь к бинарникам из последнего Platform SDK (для Висты). Среди этих бинарников есть файл mt.exe, который и будет внедрять манифест в exe.
- В постбилд событиях для проекта пишем что-то типа
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. Ну и вызваю я её так:
И вот отладка прошла нормально, начинаю делать релиз. А без _DEBUG эта функция превращается так:
Компилирую. И вижу тучу ошибок:
Начинаю ковыряться в опциях компилятора Compiler Intrinsics , какие-то #pragma intrinsics(..) подставлять. Нихуя.
Потом вдруг понимаю какой я идиот! Виной тому два двоеточия перед DebugMsgW! Получается же ведь такое:
вот и ищет компилятор в глобальном пространстве имен этот __noop. А его там нет. Конечно.
Да я к чему это - внимательней надо читать сообщения об ошибках.
::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 никогда не оставить программистов (и своих и остальных) без работы - новая версия чего-нибудь - новые интерфейсы - новый гемморой.
Удивляет сам подход: всё похерить и сделать заново! обратная совместимость - для неудачников.
Microsoft никогда не оставить программистов (и своих и остальных) без работы - новая версия чего-нибудь - новые интерфейсы - новый гемморой.
пятница, 25 мая 2007 г.
PropertySheet побеждён
И так, задача:
VS2005, WTL 7.5, есть dll со snapin`ами для mmc, нужно их загрузить и сделать для них PropertySheet не как отдельное модальное окно, а в окне уже существующем (в моём случае диалоговом). Ну через COM-интерфейс получить доступ к этим snapin`ам понятно легко. Самым тяжёлым для меня оказалось сделать встроенный в диалоговое окно PropertySheet. После 8 часов ковыряний получилось. Но! Snapin начинал неправильно обрабатывать сообщения. И вешал всё приложение. Бок оказался в простом. Делать встроенный PropertySheet можна только в окне с внутренним фреймом! Типа CFrameWindowImpl. Тогда всё работает правильно.
Хотя, если догло и хорошо покурить, то наверно можно добиться и правильной обработки сообщений и для диалогового окна.
Ссылки:
1
2
и что-то ещё с www.codeproject.com
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, намудрили.
Спасибо говорю Шкоде. Она сломалась. И теперь не сможем поехать в грёбанную комммандировку. А я займусь интерфейсами IDataObject и IPropertySheetCallback. Вечер, ночь и утро они не давали мне покоя. Я продумал много деталей. Но конечно не все.
Скажу, что намудрили, конечно, Microsoft, намудрили.
понедельник, 21 мая 2007 г.
IDataObject
Для того, что бы руками вызвать snapin, который зарегистрирован для MMC, нужно иметь два интерфейса: IDataObject и IPropertySheetCallback. Сегодня я курил первый. И понял, что его лучше не искать у какого-то COM-объекта, а просто нужно реализовать самому. Т.е. наследовать от него класс и имплементировать все нужные методы. Делов то!
воскресенье, 20 мая 2007 г.
Заяц, поломанное сиденье и snapin`ы
Несмотря на то, что мне ещё нужно долго и упорно курить COM и IIS, на выходных я плюнул на всё. Я поехал в родной провинциальный городишку. Сел рано утром на велосипед, взял фотокамеру и поехал лесами-степями. Масса положительных впечатлений! Сколько там всякой живности! Ужи-ящерки, утки-гуси, цапли-аисты, заяца чуть не задавил. Хорошо. Вброд переходил реку, правда потом оказалось, что перешёл на остров и вернулся обратно, сломал сиденье на велике и остальные 10 км домой ехал стоя на ногах.
Взамен я кажется уже полностью понял как работают snapin`ы для mmc. Завтра с утра и проверю.
Взамен я кажется уже полностью понял как работают 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?
Смешно, правда?
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. Как-то так:
И, компилируя, получаю:
Роюсь в MSDN. И нахожу такое: http://support.microsoft.com/kb/130869
Оказывается, нужно первее всех включить файл initguid.h. Тогда всё работает.
Странное решение. Затычка какая-то.
#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 - простая и понятная штука не столько для студентов, сколько для преподов. А большая часть из них (из преподов, да и из студентов тоже :) - лентяи.
Но теперь я понимаю почему в институте учат именно Delphi. Во-первых WTL, ATL, WinAPI - это не просто, это требует глубоких знаний. Во-вторых, VCL - простая и понятная штука не столько для студентов, сколько для преподов. А большая часть из них (из преподов, да и из студентов тоже :) - лентяи.
MFC, WTL
Продвинутые программисты, которые уже много лет пишут под Windows, не советуют мне использовать MFC (для создания GUI в частности). Советуют настойчиво WTL.
http://sourceforge.net/projects/wtl/
http://sourceforge.net/projects/wtl/
вторник, 15 мая 2007 г.
Ах, Linux! Ох, Windows!
Последние года два-три я прививал в себе любовь к Линуксу, и копил ненависть к Винде.
Последние полгода я работаю только под Линуксом. И мне это нравится, чёрт подери!
Но.
Судьба поворачивается так, что теперь я подключаюсь (надеюсь на долго) к большому проекту для Винды с Visual Studio, MSDN, Vista и дальше.
Тошнит, пока. Но работать нужно.
Последние полгода я работаю только под Линуксом. И мне это нравится, чёрт подери!
Но.
Судьба поворачивается так, что теперь я подключаюсь (надеюсь на долго) к большому проекту для Винды с Visual Studio, MSDN, Vista и дальше.
Тошнит, пока. Но работать нужно.
Брезгливость все же не самое лучшее качество для программиста.
Боевой сервер
Рад сообщить, товарищи, что сегодня пошёл 73-й день аптайма моего сервера.
Очень простой серверок: Sempron 2300 / 256M / IDE HDD Samsung 20G. Стоит Ubuntu 6.06 Server. А живёт на нём:
А я к чему - дёшево и сердито.
Очень простой серверок: 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 не хватает джамперов. Вот просто нет и всё. На схеме мануала есть, а на плате нет.
Вот такая засада.
Нашёл тут. Обрадовался. Смотрю - на моей CBS не хватает джамперов. Вот просто нет и всё. На схеме мануала есть, а на плате нет.
Вот такая засада.
Новая жизнь
Легко начинать новую жизнь.
Трудно жить этой новой жизнью каждый день.
Попробуем начать ещё раз.
Правда в этот раз я не даю никаких обещний ни себе, ни кому, что эта новая жизнь продолжится.
Трудно жить этой новой жизнью каждый день.
Попробуем начать ещё раз.
Правда в этот раз я не даю никаких обещний ни себе, ни кому, что эта новая жизнь продолжится.
Подписаться на:
Сообщения (Atom)