MCP

воскресенье, 18 апреля 2010 г.

Итоги недели

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

Итак, началась она с того, что в понедельник Microsoft устроила мероприятие посвящённое запуску Visual Studio 2010. Про организацию мероприятия можно писать долго, и в этом будет мало хорошего. Слишком много косяков было, начиная от регистрации, заканчивая отсутствием воды и большим количеством глюков и косяков в самих демонстрациях. Но всё же, мероприятие было весьма полезное. Из него я узнал, что:

  • В новой Visual Studio сделано много улучшений для разработчиков на C++, обещают что сильно всё переделали, добавили новых API для взаимодействия с новыми фичами
  • новый TFS теперь настроен для нормальной работы в небольших проектах с небольшим количеством разработчиков, более шустр и удобен. Можете попробовать.
  • Очень хорошие инструменты для тестеров Intellitrace и прочие. Позволяют детально расписать ситуацию с приложением, записать все действия приведшие к ошибки, и даже при желании видео
  • Сама студия теперь написана на WPF, и позволяет вести более удобную работу с проектом (быстрый зум, работа с несколькими мониторами). Также стал лучше рефакторинг, но до Resharper'а по-прежнему очень далеко.
В среду мы встретились уже юзергруппой и обсудили рефакторинг, как писать под Windows Phone и что делать с XNA Game Studio. Всё весьма просто и интересно. Если есть желание попробовать, то советую это сделать, нет ничего сложного, а симпатичного результата можно добиться весьма быстро.

В четверг Навжот Павера (если я правильно перевёл его имя), в рамках Opera University Tours рассказывал про круть и мощь Оперы.  В принципе, особо нового он ничего не рассказал, зато всё было весьма интересно. Опера развивается, любит стандарты и всё такое. Что интересно, ровно на следующий день в Опере таки-пофиксили проблему с Silverlight, когда от приложений на нём опера с грохотом падала. Не знаю, связано или нет, но приятно.  Также, как я понял, Опера очень не хочет поддерживать кодек h.264 для тега video, склоняется к Therora или же к гугловому VP8, если тот откроет данный кодек. Также планирует развивать Opera Unite дальше, вплоть до вынесения всего этого в отдельный сервис.

Ну и в пятницу был Microsoft Day для студентов, где рассказывали о новых технологиях Microsoft. Там меня не было, но думаю что тоже было весьма интересно

И вся эта толпа событий в течение одной недели. 

четверг, 8 апреля 2010 г.

Про McHost

Сейчас раскручивается весьма мутная история между Оверсаном и Макхостом (я уже запасся попкорном). Не буду вдаваться в подробности спора двух хозяйствующих субъектов, мне интересно другое.

Макхост всегда был мутным хостингом, даже не зная то, что они кинули Синтерру (или не кинули, опять мутно всё), работать с хостингом у которого на главной странице написано хуй, а в рекламе говорится: "конкурент соси" это как-то на мой взгляд весьма неправильно. Единственное разумное объяснение, зачем там хостится — это низкие цены. Неужели для бизнеса лишние несколько долларов играют такую большую роль? Или я что-то не понимаю.

Сам-то я давно говорил, что с русскими хостерами дела иметь не стоит. И пожар в hosting.ua, история с McHost лишнее тому подтверждение. Есть конечно и другие факторы, что colocation всё-таки удобнее в России делать, и с трафиком для России тоже получше, но, блин, по-моему и без этого можно замечательно прожить, купив хостинг в нормальной стране: где-нибудь в Европе или Америке.

воскресенье, 4 апреля 2010 г.

4.04

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


Сегодня web-разработчики купаются в фонтанах, раскидывают везде теги, пристают к прохожим с вопросами: "Ты под какой браузер верстаешь?", "Пользуешься ли IE6?" и "Что юзаешь, jQuery или табличную вёрстку, ииик?".


К сожалению при попытках выяснить более детальную информацию, я натыкался на полное непонимание со стороны поисковиков, возможно информация об этом дне скрыта и находится под грифом <div style="display: none;"/>, но зато я нашёл, что сегодня ещё день католического святого Исильдора Севильского, который по мнению цекрви сделал первую версию Википедии  (или по мнению википедии он сделал первую версию энциклопедии, в общем, тёмно всё). Тем не менее, с 1998-ого года, Исильдор считается покровителем Интернета. Так что поставьте его иконку на важным роутером, назовите в честь него свой DNS-сервер, и в общем, узнайте, не любил ли он звук бубнов и шаманских плясок. Мало ли что.  

В общем, ещё раз всех причастных и деепричастных веб-разработчиков:
С профессиональным празднегом!

четверг, 25 марта 2010 г.

Спамеры атакуют

Я достаточно часто получаю спам от всяких вконтактиков, моих миров и прочих одноклассников, о том что %some_strange_person% добавил меня в друзья и мне надо зарегистрироваться на сайте и послать его подальше с такими запросами. Но тут появился спамер, который ещё и обиделся на это: типа я сказал как его зовут, а это типа неправильно (а рассылать такой спам по его мнению это правильно?). Так что специально для него публикую его письмо в своём блоге, пусть обижается дальше.

Ваш друг Sasha Shereverov добавил Вас в друзья на сайте http://vkontakte.ru

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

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

Чтобы войти на сайт, введите на странице http://vkontakte.ru/login.php
Email, на который Вы получили это приглашение, и пароль: t1IPChTaU
Вы можете изменить пароль в Ваших настройках.

Внимание: Ваша регистрация не будет активирована, если Вы проигнорируете 
это приглашение.

Желаем удачи!

Так что, желаю удачи спамеру  Sasha Shereverov в его нелёгком деле захламления почтовых ящиков дурными сообщениями.

среда, 24 марта 2010 г.

Перевод времени с точки зрения ИТ-шника

Уже давно идут споры о пользе/вреде летнего времени, хорошо это или плохо, и всё такое. На основных доводах я заострять внимания не буду (хотя и на мой взгляд, смысла особого в наличие перехода нет, а вред уж точно есть). Я хочу немного рассказать о том, какие косяки от этого лезут у программистов, ибо с каждым годом, это всё более актуальнее.

Начнём с простого, время бывает UTC и локальное (если не вдаваться в подробности с атомным временем, и всякими календарями). У UTC есть замечательное свойство: оно течёт постоянно и у всех одно и тоже. Т.е. что у программиста в Америке, что у сурового челябинского админа — цифры одни и те же. Соответственно, по возможности хранить время нужно именно в UTC и использовать при внутренних расчётах именно его, конвертируя его для пользователя при выводе на экран. Но на практике, это оказывается не очень удобным, из-за того, что на всех слоях время необходимо конвертировать, в одну или другую сторону, что может привести к страшной путаницы в самом коде и лишним преобразованиям. При этом для локальных программ, вроде бы это всё не страшно, поэтому UTC можно и не использовать, а в результате получаются разные забавные ситуации:
Как-то работали мы с американским заказчиком, во время очередного билда мы закидывали свежую базу с начальными данными. И всё было хорошо, кроме того что всё падало.  Проблема оказалась в том, что сгенерированные данные были в "будущем", и в результате они не находились по фильтру с getdate(). Естественно через 9 часов всё начинало замечательно работать.


Вот небольшой пример того, что может быть, если работать с локальным временем в разных часовых поясах.

Теперь, собственно о переходе на летнее время. Предположим, что у нас есть система мониторинга, которая смотрит живучесть системы раз в минуту, и если она не откликается поднимает тревогу, рестартит приложение, носится с воплями и кричит о том, что всё пропало.
28 марта в 2 часа ночи мгновенно становится 3 часа ночи и по факту система уже не отвечала целый час (!!!) Как результат получим epic fail приложения.

Другой пример: у нас пишутся логи с данными. В последствии мы хотим по ним построить отчёт. Логи длинные, идут годами. Как результат: пишем в UTC, можем получить сдвиг на час в отчёте UTC + Offset который в течение года разный. Пишем в локальном времени: получаем дырку в летнем времени и двойные данные в зимнем (что ещё хуже, если требовать уникальность). В любом случае, ничего хорошего.

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

А теперь представьте, что делать с системами управления ЖД и авиа-транспортом, когда резко поезда с самолётами начинают опаздывать, а вылета в 2:30 в эту ночь не будет. Представьте, сколько может стоить подобная ошибка со временем в программе?

Так что моё мнение, сугубо со стороны программиста: переход на летнее время может повлечь непредсказуемое поведение программы с такими же последствиями. И что самое интересное, а вот фиг это оттестируешь заранее, просто и не вспомнишь об этом. 

суббота, 27 февраля 2010 г.

Donationware

Есть такая модель распространения софта, как donationware. Другими словами, просто делаешь пожертвование автору хорошей бесплатной программы за его работу. Вроде всё неплохо, и даже замечательно, но на мой взгляд при этой модели, сам процесс оплаты не должен быть сложным, ибо она не обязательна, и сложность в процессе может просто привести к тому, что подарочную копеечку пользователь оставит у себя.

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

У второго приложения было чуть лучше, за исключением небольшой детали, платить нужно было через Plimus, и для оплаты нужно указать чуть ли не марку зубной пасты, который я чищу зубы, оно мне надо? Почему просто нельзя взять и тупо через PayPal передать произвольную сумму?

В качестве обратного примера можно привести World of Goo, у них была распродажа, и можно было купить платную игру, которая стоит $20 хоть за один цент, что разработчикам с учётом комиссии не приносило ничего. Но ведь они решили не жадничать и просто дали эту возможность. Как результат, все оказались довольны.

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

вторник, 9 февраля 2010 г.

Установка Microsoft Security Essentials на Windows Server

Microsoft выпустила весьма неплохой бесплатный продукт Security Essentials, особо его расписывать не буду, просто скажу, что на сервера он не ставится Для серверов нужно покупать ForeFront Security, весьма мощный и навороченный продукт, который как-то даже неуместно сравнивать с Security Essentials. Т.е. для серверов или полная защита или от чужих производителей.

Но, как говорится, если очень хочется, то можно.  Собственно не я это придумал, я это увидел в блоге у Michal Strehovsky, у него всё замечательно расписано тут и тут, и мне собственно добавить уже особо нечего, но я всё же немножко распишу по-русски, для тех у кого плохо с английским или лень выяснять детали, но хочется просто получить детали на будущее):
  1. Инсталлятор распаковывает себя в отдельную папку вида X:\f1d41766d22514f68a08, надо будет найти эти файлы (поиском или через какой-нить ProcessExplorer) пока инсталлятор радостно сообщает о несовместимой версии, и скопировать для опытов (а то файлы удалятся).
  2. Необходимо поставить WinDbg (тут прямая ссылка на x64 бита, это весит 15Mb)
  3. Завести setup.exe в дебаггере и активно подменять тип Windows на несерверный. Как пишет  Michal Strehovsky, это на x64 можно сделать так:

    bp ntdll!RtlGetNtProductType "as /x ReturnValue rcx; gu; ed ReturnValue 1; g"

    или повесить такой Breakpoint bp ntdll!RtlGetNtProductType+0x1A (на x64 как я понял 0x21) и при каждом попадании в отладчик менять значение регистра eax с 3 на 1 (если там другое значение, значит точка останова установлена неверно).
  4. После того как всё начнёт ставится, breakpoint'ы можно убирать и наслаждаться работой свежеустановленного Security Essentials 

Да, и в принципе таким образом можно попытаться установить другие программы, использующие дурацкие проверки на версию системы (напимер, Nokia PC Suite), правда если установщик в MSI, то проще взять ORCA и там поправить LaunchCondition.