Alex Belozerov Blog

IT, бизнес, саморазвитие

UFO the Two Sides

Привет, любители самых лучших в мире игр!

Я сегодня очень доволен, т.к. обнаружил, что какие-то люди делают ремейк моей самой любимой компьютерной игры, да не просто переписывают старое доброе под новую операционную систему (чему я уже был бы несказанно рад), а делают то, о чем я и мечтать не мог!

Речь об игре X-COM Ufo Defense/UFO Enemy Unknown, а новый проект называется UFO The Two Sides: http://ufotts.ninex.info

NHibernate и Fluent NHibernate

Сейчас работаю на проекте, где активно юзается NHibernate и библиотека Fluent NHibernate для реализации data access layer. До этого никогда с Hibernate не работал, незначительное количество времени применял ADO.NET, и начиная с 2008 все проекты шли на LINQ-to-SQL и немного Entity Framework. Было очень интересно пощупать альтернативу вездесущим ORM от Microsoft, узнать ее плюсы, минусы, наиболее подходящие области применения.

Ковыряем наушники Sennheiser

Всем привет!

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

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

За счет чего же достигается улучшение качества звучания?
В обзоре принимают участие:
Sennheiser HD555 (3000 рублей)
Sennheiser HD595 (6000 рублей)
Sennheiser HD650 (12000 рублей)

Переключение аудиоустройства в MacOS X

Работая с маковской ОС, иногда находишь совершенно гениальные фишки, о которых ты мог только мечтать в Windows.

В MacOS X можно очень удобно и быстро переключить входное и выходное аудиоустройство: для этого нужно кликнуть по иконке со спикером на панели задач с зажатой клавишей Option. Вуаля:


В винде начиная с Vista приходится лезть в панель управления, во вкладку “Звук” и далее…
Update: можно проще: кликаете правой кнопкой на значке в трее, выбираете из меню “Устройства воспроизведения”, и открывается окошко “Звук” со списком устройств. Но в MacOS всё равно лучше :-)

Автоматическое сохранение паролей в Firefox

Все вы наверняка не раз видели как Firefox предлагает сохранить имя и пароль. Мне стало интересно, каким образом он находит на странице нужные элементы, когда происходит сохранение и как он потом определяет, куда вставить сохраненные значения на вновь открытой странице.


Всё оказалось очень просто:
Когда происходит submit формы, запускается процесс, который ищет на форме непустой input с type=password, отсюда и берется пароль. Очень интересно обстоят дела с username: тупо начинается просмотр дерева элементов в обратном порядке от найденного input’а с паролем, и берется первый попавшийся input с type=text.

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

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

Если кто заинтересовался, исходники можно посмотреть в \Program Files\Mozilla Firefox\components\nsLoginManager.js. Метод называется _getFormFields.

UpdatePanel: что происходит за кулисами?

Данный пост является переводом статьи The UpdatePanel opened: what happens behind the scenes? с сайта dotnetslackers.com.

UpdatePanel - одна из самых главных и интересных фич ASP.NET AJAX. Она волшебным способом позволяет добавить на сайт прелести AJAX, при этом не требуя практически никаких дополнительных усилий от вас как от разработчика. Вы почувствуете лишь толику неудобства, перетащив UpdatePanel на вашу веб форму, и позволив ей делать всю работу. Как же она работает?

Введение

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

Фигурные скобки внутри String.Format()

Метод String.Format() позволяет вставлять значения переменных внутрь строки в места, помеченные с помощью фигурных скобок и индекса, например:

string.Format("My name is {0}", name);

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

string.Format("{name}={0}", name); // Exception

Существует простое решение, как вставить в строку фигурную скобку: нужно написать ее 2 раза:

string name = "Alex";
string formattedStr = string.Format("={0}", name); // no exception

В итоге в примере formattedStr будет равно “{name}=Alex”

Купил iPhone

Купил Apple iPhone 3G на замену неожиданно скончавшемуся SonyEricsson T630.
Первые впечатления - от телефона в полном восторге :-) но это именно что телефон, не стоит ждать от него возможностей полноценного коммуникатора…

ASP.NET: Redirect с параметром без QueryString

Столкнулся с ситуацией, когда необходимо сделать Redirect на другую страницу, передав при этом параметр, но так, чтобы не видел пользователь. То есть простая передача через QueryString - Response.Redirect(“~/NewPage.aspx?id=5”) - не подходит.

Я придумал решение, используя QueryString и Session

Привет

Всем привет!
Меня зовут Алексей, я программист-фрилансер из г. Омска.
В этот блог я буду писать свои мысли и наблюдения относительно жизни омских ИТшников, сообщать об интересных событиях, да просто писать о том что меня волнует и что мне интересно. Будет и программирование. В первую очередь блог адресован людям, варящимся в ИТ-кухне, моим друзьям, но постараюсь чтобы он был интересен и понятен более широкой аудитории ;-)