Как открыть проект VS2008 в VS2005

2008-10-27 09:00комментарии  .net  howto

Я пользуюсь старой доброй Visual Studio 2005 и .Net 2.0. Но иногда в мои руки попадают проекты сделанные в 2008-й и открывать их 2005-ая отказывается. Немного поэкспериментировав, нашёл простой рецепт:

  • делаем резервную копию файла_проекта.csproj;
  • открываем файл_проекта.csproj в вашем любимом текстовом редакторе (да, это обычный xml-файл);
  • если у вас не установлен .Net 3.5, удаляем все теги Reference, внутри которых есть тег <RequiredTargetFramework>3.5</RequiredTargetFramework>;
  • заменяем строку
    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    на
    <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
  • сохраняемся, открываем проект в VS2005 и радуемся!

Как получить версию текущей сборки в .Net?

2008-10-22 16:20комментарии  .net  howto

Очень просто:

using System.Reflection;

...

string version = Assembly.GetExecutingAssembly().GetName().Version.ToString();

PEP8 коротко и по-русски

2008-10-18 21:34комментарии  python

PEP8 - это стилевые правила для кода на языке Python.

  • используйте 4 пробела для отступа и не используйте табы, не смешивайте их
  • максимальная длина строки 79 символов; для разрыва строки используйте отступы или бэкслеш
  • функции верхнего уровня и определения классов отделяйте двумя пустыми строками
  • определения методов внутри класса отделяйте одной пустой строкой
  • дополнительные пустые строки используйте для логической группировки методов
  • кодировка файлов должна быть Latin-1, а в Питоне 3 и выше - utf-8
  • каждый импортируемый модуль с новой строки
  • порядок импортов: стандартные модули, third-party модули, локальные модули приложения
  • пустая строка между каждой группой импортов
  • избегайте лишних пробелов внутри скобок; перед запятыми, точкой с запятой и двоеточиями
  • избегайте лишних пробелов перед скобками с аргументами функций и скобками с индексами
  • избегайте больше чем одного пробела между операторами (= - + итд)
  • используйте одиночный пробел для выделения операторов
  • избегайте пробелов вокруг '=', который используется для параметров по-умолчанию и keyword аргументов
  • обновляйте комментарии вместе с кодом
  • пишите комментарии по-английски
  • избегайте имён из одиночных l, O, I
  • для модулей и пакетов используйте короткие всестрочные имена
  • для классов используйте СловаНачинаютсяЗаглавными имена
  • для функций используйте слова_с_подчёркиваниями (или смешанныйРегистр если так получилось исторически)
  • для методов используйте слова_с_подчёркиваниями имена
  • для внутренних методов и переменных _подчёркивание_перед_словом
  • для проверки на None используйте is или is not, не используйте операторы сравнения
  • используйте исключения основанные на классах -- наследованные от Exception
  • используйте методы класса string вместо строковых функций
  • используйте ''.startswith() и ''.endswith() вместо вырезки из строк для проверки префиксов и суффиксов
  • используйте isinstance() для проверки типа
  • не сравнивайте булевы переменные с True и False

HeliconJet is out!

2008-10-17 16:03комментарии  done  iis

HeliconJet — это модуль IIS, который поможет сэкономить траффик и повысить производительность сервера. Его основные features: HTTP compression, server-side caching и client-side caching. Сжимать и кешировать HeliconJet умеет статический и динамический контент. Приятное отличие — гибкость в настройке с помощью GUI или текстового конфига.

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

RewriteCond и %{SERVER_PORT}

2008-09-08 19:27комментарии  apache  iis

Нашёл в apache интересную и неочевидную особенность. Имеем конфиг:

ServerName company.com
Listen 8080
Listen 8081
...
RewriteCond %{SERVER_PORT} 8080
RewriteRule .* bar.html

Правило RewriteRule никогда не отработает! Условие в RewriteCond будет всегда ложно. %{SERVER_PORT}, как видно из логов mod_rewrite, всегда возвращает 80. Сначала я подумал, что нашёл в apache баг. Но посмотрев исходники, понял, что багрепортером апача мне не быть. Серверная переменная %{SERVER_PORT} содержит не номер порта, на который пришёл запрос (что в общем вполне логично и ожидаемо), а номер порта из ServerName! Немного исправит положение ServerName company.com:8080. Но как отличать запросы, которые пришли на порт 8081?

Выяснил ещё, что в режиме FastCGI сервер IIS 7 не понимает чанковые запросы, т.е.
Transfer-Encoding: chunked. А именно в режиме FastCGI рекоммендуют запускать php5.

Django 1.0 released!

2008-09-04 08:42комментарии  django  web

Последние три дня в инете какая-то истерия по поводу выхода браузера Google Chrome. Тысячи статей и отзывов написно, найдены уже баги и проблемы с безопасностью. Но на мой взгляд самая главная новость начала осени -- это релиз замечательного фреймворка Django. Три года разработки, 350 000 строк кода, 4000 коммитов, 2000 багфиксов! Всех поздравляю! Ура!

Coldplay: Viva la Vida

2008-08-05 21:14комментарии  music

Поклонником Coldplay являюсь уже давно. Их первые три альбома знаю почти наизусть. И вот наконец послушал их последний альбом -- Viva la Vida, который оказался для меня очередным замечательным музыкальным открытием.

Где-то подслушивается влияние U2, а на мой очень субъектвный слух слышится ещё и особое оптимистичное настроение последнего альбома Sigur Ros.

Советую всем послушать и порадоваться.

В какой последовательности апач обрабатывет свои конфигурационные секции.

2008-07-02 10:03комментарии  apache

Начнём без долгих прелюдий. Источник - Configuration Sections из документации апача и его исходники, т.к. в документации не отражены разные тонкости.

Прикаждом запросе конфигурационные секции апача применяются так: сначала сливаются (соединяются, merge) директивы из конфигурации сервера (httpd.conf) и директивы из конфигурации виртуального хоста (в соответствующеё секции <VirtualHost>), и объединённая конфигурация (merged configuration) исполняется. Затем соединяются директивы из конфигурационных секций типа Directory, Files, файлов .htaccess, и полученная объединённая конфигурация исполняется.

Допустим, что апач обрабатывает запрос http://servername/a/b/index.html, в результате которого будет выдан файл /www/servername/a/b/index.html. Вот итоговая последовательность применения конфигурационных секций:

Соединяются конфигурации

  • httpd.conf
  • <VirtualHost> </VirtualHost>

Выполняется соединённая конфигурация

Соединяются конфигурации

  • <Directory /www/servername/> ... </Directory>

  • <VirtualHost> <Directory /www/servername/> ... </Directory> </VirtualHost>

  • /www/servername/.htaccess

  • <Directory /www/servername/a/> ... </Directory>

  • <VirtualHost> <Directory /www/servername/a/> ... </Directory> </VirtualHost>

  • /www/servername/a/.htaccess

  • <Directory /www/servername/a/b/> ... </Directory>

  • <VirtualHost> <Directory /www/servername/a/b/> ... </Directory> </VirtualHost>

  • /www/servername/a/b/.htaccess

  • <Directory ~ | DirectoryMatch ^/www/servername/> ... </DirectoryMatch>

  • <VirtualHost> <Directory ~ | DirectoryMatch ^/www/servername/> ... </DirectoryMatch> </VirtualHost>

  • <Directory ~ | DirectoryMatch ^/www/servername/a/> ... </DirectoryMatch>

  • <VirtualHost> <Directory ~ | DirectoryMatch ^/www/servername/a/> ... </DirectoryMatch> </VirtualHost>

  • <Directory ~ | DirectoryMatch ^/www/servername/a/b/> ... </DirectoryMatch>

  • <VirtualHost> <Directory ~ | DirectoryMatch ^/www/servername/a/b/> ... </DirectoryMatch> </VirtualHost>

  • <Files | Files ~ index.html> ... </Files> в порядке как они записаны в конфиге

  • <VirtualHost> <Files | Files ~ index.html> ... </Files> </VirtualHost> в порядке как они записаны в конфиге

  • <Location | Location ~ > ... </Location> в порядке как они записаны в конфиге

  • <VirtualHost> <Location | Location ~ > ... </Location> </VirtualHost> в порядке как они записаны в конфиге

Выполняется соединённая конфигурация

Linus Torvalds, Just for fun

2008-06-22 20:34комментарии  books  linux

Прочитал сам о рекомендую всем. Книга Линуса Торвальдса "Just for fun". О том, как Торвальдс написал Линукс, и о том, что это для него значит.

← Prev 1 2 3 4 5 Next →