![]() |
|
Spaces home Gaidar MagdanurovPhotosProfileFriendsMore ![]() | ![]() |
Gaidar Magdanurov |
||||||||
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 Вот так можно решить задачу без использования курсоров. К сожалению, мало кто использует эту возможность - очень часто вижу, что при необходимости обновления коллекции, которая связана по уникальному ключу, используют курсоры, хотя без них можно прекрасно обойтись. Советы по оптимизации как всегда будут приняты с благодарностью!
|
||||||||
|
|