![]() |
|
Spaces home Gaidar MagdanurovPhotosProfileFriends | ![]() |
|
|
July 16 Широкой публике открыт "Форум обсуждения терминологии Майкрософт"К вопросам локализации можно относиться по-разному: она может быть не нужна профессионалу, привыкшему к английской терминологии, но полезна обычному пользователю программных продуктов. Но, согласитесь, приятно, когда есть выбор пользоваться продуктом на родном языке. May 19 PowerShell на Windows Server 2008 Server CoreДима Сотников опубликовал подробную инструкцию по установке .NET 2.0/Power Shell на Server Core. Разумеется, этот способ установки не поддерживается Microsoft и в службе тех. поддержке вам о нем не расскажут. Но этот способ работает - у меня все получилось без проблем на виртуальной машинке с Server Core. Ура! May 12 Очередная встреча MDNAНаконец-то после очень долгого перерыва состоиться очередная встреча группы пользователей MDNA - 15 мая в офисе Microsoft. Приглашаем всех желающих! Эта встреча будет необычной - у нас в гостях представитель Яндекс Анатолий Орлов, который расскажет об архитектуре поиска Яндекс и ни слова не скажет о технологиях Microsoft и .NET. Неожиданно? :) Кроме того, вас ожидают доклады двух замечательных докладчиков - Тимофея Казакова и Евгения Агафонова. Информация о встрече и регистарция здесь - http://mdna.ineta.ru/Events/EventSimpleInfo.aspx?Id=121f3bfe-df0c-4531-9d88-2e111a3e1ab5 Регистрируйтесь и приходите! May 04 PHP на Windows. Установка и настройка PHP для использования с модулем FastCGI.Я начинаю писать серию сообщений об установке и использовании PHP на Windows с модулем FastCGI. В этом сообщении я опишу процесс установки PHP. Согласитесь, логично установить PHP если есть желание его использовать. Шаг 1. Скачать PHP На сайте PHP.net нужно скачать последную версию PHP для Windows. Для использования с FastCGI рекомендуется устанавливать версию PHP без контроля безопасности потоков, поскольку сам модуль FastCGI гарантирует, что выполнение происходит в одном потоке и поддержка контроля безопасности потоков в самом PHP привносит лишние проверки и блокировки, приводящие к значительному падению производительности. Поэтому выбираем Non-thread-safe Win32 binaries (версия 5.2.6 актуальна на момент написания этого сообщения). Стоит отметить, что веряим Non-thread-safe была разработана специально для работы с FastCGI на IIS (первый релиз был в версии 5.2.1) и использовать в других средах не рекомендуется. Кстати, начиная с версии 5.2.2 Zend серьезно работает над оптимизацией производительности PHP под Windows, что не может не радовать. Если сравнить версии 5.2.1 и 5.2.2, то разницу в скорости обработки запросов можно легко увидеть с помощью простого нагрузочного теста. Шаг 2. Установка PHP Установка осуществляется совсем просто: поскольку мы скачали архив с исполнимыми файлами, достаточно развернуть этот архив (это .zip, поэтому с ним справится встроенные в оболочку Explorer архиватор). Например, установим PHP в директорию C:\Web\PHP. В качестве базовой конфигурации воспользуемся рекомендованными установками: cделаем копию файла php.ini-recommended в php.ini в этой же директории и откроем его для редактирования, после чего пройдем файл сверху расскоментируя следующие строки, дабы обеспечить безопасность и совместимость с большинством PHP приложений:
Шаг 3. Проверка работоспособности PHP Пока мы не сконфигурировали IIS, проверить работоспособность интерпретатора можно просто, например, выполнив команду c:\web\php\php.exe -info > c:\test.txt В файле test.txt будет выведена информация о параметрах, используемых PHP. May 01 Удаление дубликатов и обновление таблиц с использованием JOINЯ давно хотел придумать "живой" пример для удаления дубликатов и обновления таблиц с использованием JOIN, и он пришел ко мне сам собой. Только что пришлось написать небольшой скрипт T-SQL, на примере которого и продемонстрирую несколько советов. Задачка: есть некоторая табличка Table1, содержащая записи колонки ID1 int, ID2 int, Date datetime. В этой таблице существуют повторяющиеся пары ID1 и ID2, а дубликатов по этим парам быть не должно. Необходимо сделать несколько действий: 1) Посчитать количество дубликатов 2) Оставить только записи с самой поздней датой 3) Посчитать записи сгрупированные по ID2 и обновить поле в таблице Table2. Сама по себе логика проста - в одной таблице собираются голоса от разных пользователей, привязанные к некоторым сущностям в Table2, в самой Table2 важны два поля ID2 int и Total int, первое - идентификатор сущности, второе число строк сгруппированых по ID2 в Table1. Для начала посчитаем сколько у нас дубликатов: SELECT ID1, ID2, count(*) FROM Table1 GROUP BY ID1, ID2 HAVING count(*) > 1 Потом сделаем выборку во временную таблицу уникальных существующих ID1 и ID2, после чего привяжем к ним последнюю дату голосования и обновим основную таблицу: DECLARE @UniqueTable TABLE(id1 int, id2 int, date datetime) INSERT INTO @UniqueTable TRUNCATE TABLE table1 INSERT INTO table1 (id1, id2, date) Теперь, когда у нас есть нужный набор данных, обновим поля таблицы Table2, используя выражения UPDATE и JOIN: DECLARE @TempTable TABLE(id2 int, total int) INSERT INTO @TempTable (id2, total) SELECT id2, Count(*) AS total FROM table1 GROUP BY id2 UPDATE table2 SET table2.total = [@TempTable].total Вот так можно решить задачу без использования курсоров. К сожалению, мало кто использует эту возможность - очень часто вижу, что при необходимости обновления коллекции, которая связана по уникальному ключу, используют курсоры, хотя без них можно прекрасно обойтись. Советы по оптимизации как всегда будут приняты с благодарностью! April 25 Игры с производительностью if...else и switch в JavaScriptРешил немножко поиграть с JavaScript и тем, насколько методики по улучшению производительности работают в нем. Пробовать очевидные вещи вроде вычисляния выражений в условии цикла, приводящим к постоянным вычислениям одного и того же значения, или уменьшения повторений одинаковых выражений не интересно, поэтому я решил попробовать поиграть со switch вместо комбинаций if...else в разных браузерах (IE 7 и FireFox 2). Для получения результатов тестов используем простой код (Test.html): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Начнем с такого фрагмента, где используется последовательность if...else: var test = 5; for (i=0; i < 100000; i++) И сравним его с вот таким со switch: var test = 5; for(i = 0; i < 100000; i++) switch (test) { } И со switch с переставленными случайно значениями: var test = 5; for(i = 0; i < 100000; i++)
Как видно из результатов, IE показывает стабильную производительность и не реагирует на оптимизации (и их кривизну :)). В то же время FireFox очень чувствителен к использованию switch вместо if. Теперь вот надо будет раскопать почему так происходит. Кто-нибудь может быть уже интересовался? ;) Выборка случайных записейДостаточно распространенная задача с выборкой заданного количества случайных записей во всех СУБД делается примерно одинаково, но синтаксис немного отличается. Вот, собрал для заметки способы получения 10 случайных записей в самых популярных БД. SQL Server SELECT TOP 10 Title, Text FROM BlogPosts ORDER BY NEWID() Oracle SELECT Title, Text FROM (SELECT Title, Text FROM BlogPosts ORDER BY dbms_random.value) WHERE rownum <= 10 MySQL SELECT Title, Text FROM BlogPosts ORDER BY RAND() LIMIT 10 DB2 SELECT Title, Text, RAND() as IDX FROM BlogPosts ORDER BY IDX FETCH FIRST 10 ROWS ONLY April 21 Итнересный баг в Team SystemПри попытке создать новый Team Project в Team Foundation Server, развернутом на удаленной машине, начала выскакивать ошибка TF30170: The plugin Microsoft.ProjectCreationWizard.WorkItemTracking failed during task WITs from group WorkItemTracking. Очень долго пытался найти ее корни и в результате размышлений вспомнилось следующее - раньше я использовал другой TFS сервер и во временной директории были закешированы Work Items проектов с того сервера. В результате проблему удалось пофиксить удалив папку со временным кешем: C:\Documents and Settings\ИмяПользователя\Local Settings\Application Data\Microsoft\Team Foundation\2.0\Cache. Веб-трансляция для архитекторовКоллеги попросили рассказать о веб-трансляции для архитекторов, которая может быть интересна разработчикам. Новые возможности интеграции: BizTalk Adapter Pack. Докладчик: Станислав Кондратьев, Microsoft - один из уникальныз специалистов по BizTalk в нашей стране. April 17 Конференция ReMIX
К нам едет ревизор! То есть Стив Балмер, который хочет рассказать российским разработчикам о стратегии и планах Microsoft в Web и, в основном, в области interoperability и взаимодействию с другими платформами. Даешь PHP на Windows, даешь Python и Ruby на .NET, лучший Linux - это Windows с PowerShell :). Все это мы расскажем и покажем в рамках конференции ReMIX, которая пройдет в Москве 23 мая. Мы с моим коллегой Петей Диденко даже сняли небольшой ролик о том, что же будет на этой мега-конференции. Кстати, это мой первый опыт съемки видео, первый раз я включил камеру и даже штатив для нее был куплен специально по этому случаю, поэтому, наверняка, даже он поставлен неправильно :)
Кстати, как вам креативная идея с вставкой перелистываемых страниц, снятая в немного другом освещении? ;) April 16 Работа в Microsoft в МосквеКоллеги, если хотите работать бок о бок со мной (это я от скромности :)), то есть неплохой шанс - у нас есть две вполне интересные вакансии: 1) Program Manager for Visual Studio Localization - человек, который будет полностью управлять всем циклом локализации Visual Studio Если вам интересно и чувствуете в себе силы этим заниматься, то пишите мне gaidar . magdanurov @ microsoft . com. Лучше всего сразу резюме прилагать. April 11 Dynamic Data PreviewОчень рекомендую почитать блог Скотта на тему Dynamic Data. Сегодня была выпущена очередная Preview версия. Для тех, кто еще не знает о Dynamic Data - это набор компонентов позволяющих по схеме LINQ to SQL или LINQ to Entities автоматически строить интерфейс для управления данными. Проект уже встал на релизные рельсы и вполне пригоден для того, чтобы его посмотреть и подумать о применении в своих разработках. April 10 Windows Management Instrumentation - веб-трансляция для разработчиков сегодня в 17.00 МСКВ связи с тем, что запланированный на сегодня докладчик заболел, тема сегодняшней трансляции будет Технология Windows Management Instrumentation и прочитает доклад сотрудник Microsoft Марат Бакиров. March 22 Исходный код ASP.NET MVC Framework доступен на CodePlexНа CodePlex создан раздел, где размещают исходный код разработок, который войдут в следующие версии ASP.NET. Так, например, сейчас там доступен Preview 2 для MVC Framework. Всем, кому интересно создание приложений в рамках паттерна MVC - рекомендую посмотреть. Если же вы не знакомы с MVC, то рамках запуска продуктов 2008 года и семинаров "Дни Разработчика" мы об MVC рассказываем. March 11 Хотите работать с самими передовыми технологиями?Если вас не пугают слова Silverlight, C#3.5, Ajax, Web 2.0, ASP.Net, REST, не страшитесь работать за границей нашей необъятной в одной из самых переводых компаний в области разработки программного обеспечения (aka Microsoft), то хочу сообщить интересную информацию. Европейскому центру разработки Microsoft Ireland требуются талантливые программисты, тестировщики, руководители команды разработчиков. Описание команды и подробности о проектах, которыми занимается команда GPD-E, на сайте www.joinmicrosofteurope.com. Конечно, берут не всех :), требования тоже есть: свободное владение англйским языком, опыт работы от трех лет с C++ и С# (ну или Java на худой конец) или очень хороший опыт С/С++, опыт дизайна и разработки сложных систем. Веб-трансляция для разработчиков: BizTalk Server: Обработка больших сообщенийКоллеги-разработчики, приглашаю всех вас на веб-трансляцию, посвященную BizTalk. В самой трансляции можно будет узнать об основных сценариях передачи и обработки сообщений большого объема. При том, что BizTalk действительно может решить множество задач по интеграции, где сейчас применяются решения, написанные на коленке, либо лнагромождения различных технологий и инструментов, ни разу не предназначенных для поставленных задач, очень рекомендую поучаствовать. Предвосхищая вопросы о том когда будут записи всех предыдущих веб-трансляций, отвечаю - я работаю над этим. Признаться честно, я не думал, что это может так сильно растянуться. По последним данным до четверга страница должна появится. Записи будут выложены на следующей неделе. Спасибо за терпение. March 07 Список блогов разработчиков Visual Studio Team SystemВ преддверии выступления, посвященного Visual Studio Team System 2008, на запуске продуктов Visual Studio, SQL Server и Windows Server версий 2008, а также в связи со все большим интересом к теме инструментов коммандной разработки, публикую список блогов разработчиков из команды Visual Studio Team System. Их этих блогов можно почерпнуть огромное количество знаний.
|