РЕЛИБ Новости | Форумы | Дневники | Работа
Дневники

- Василий Петрухин
( 143, 5/26/2008 10:34 AM)
- Anatoly Lubarsky
( 21, 3/31/2007 11:47 PM)
- rulez
( 12, 8/25/2005 2:08 PM)
- TheBits
( 4, 6/9/2006 2:05 AM)
- Алексей Скалозуб
( 4, 5/9/2006 7:40 PM)
- Андрей
( 3, 6/28/2005 3:39 PM)
- Михаил
( 2, 2/17/2005 3:41 PM)
- ibnteo
( 2, 5/30/2005 4:52 PM)
- guest00
( 1, 1/25/2005 8:14 PM)
- Integra
( 1, 6/9/2005 12:58 PM)
- Я
( 1, 6/10/2005 5:04 PM)
- mar
( 1, 6/16/2005 1:43 AM)


Статистика

Дневники: 181
Записи: 195
Статьи: 5
Комментарии: 89
Trackbacks: 661

Syndication

- OPML (list of bloggers)
- RSS (list of recent posts)
- RSS (Bloggers)


Создать свой дневник

Дневники

Новые записи

..::[Остаться в живых]::..

ОТКРЫЛАСЬ НОВАЯ РОЛЕВАЯ ПО СЕРИАЛУ LOST! МНОГО СВОБОДНЫХ РОЛЕЙ!

http://lost.onlinepage.ru/

 

 

posted @ 2/24/2008 3:41 PM by Кейт

ну вот, я чувствую, и началось)))

для начала поздороваюсь и познакомлюсь...всегда хотела завести дневник, но руки не доходили))

posted @ 1/24/2008 3:13 PM by Катёна

ZaGvozGka

ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka

posted @ 11/8/2007 10:15 PM by ZaGvozGka

13 правил от Yahoo! для создания быстрых сайтов

13 полезных советов от Yahoo! приведены в статье Thirteen Simple Rules for Speeding Up Your Web Site. К каждому совету даются пояснения.

posted @ 8/27/2007 4:33 PM by Василий Петрухин

Тест

ПРОВЕРКА!!!

posted @ 7/27/2007 11:45 AM by Элька

Объединение CSS и JavaScript в один файл

Интересный способ объединения JavaScript и CSS в один файл используя комментарии. Метод был проверен в IE6, IE7 и FF2.

posted @ 5/2/2007 1:43 PM by Василий Петрухин

Карты сайтов

Google, Microsoft и Yahoo объединили свои усилия для создания единого формата для файлов с картой сайта. Результаты их совместной работы доступны по лицензии Attribution-ShareAlike Creative Commons License на сайте sitemaps.org. Для указания роботу полного URL файла карты сайта предложено использовать директивку Sitemap: URL в файле robots.txt.

posted @ 4/13/2007 4:26 PM by Василий Петрухин

Несколько интересных советов из книги Рихтера CLR via С#

Недавно купил себе книгу Джеффри Рихтера CLR via C#. Программирование на платформе Microsoft.NET Framework 2.0 на языке C#. Начал читать с самого начала несмотря на то что там объясняются базовые принципы .NET Framework/CLR/C# с которыми я уже знаком. Решил таким образом освежить знания. По ходу чтения наткнулся на пару новых моментов, которыми и хочу поделиться.

  1. В C# можно делать структуры с перекрывающимеся полями. В С++ это известно как union.
    [StructLayout(LayoutKind.Explicit, Size=4)]
    public struct Int32Union
    {
    [FieldOffset(0)]public byte Byte1;
    [FieldOffset(1)]public byte Byte2;
    [FieldOffset(2)]public byte Byte3;
    [FieldOffset(3)]public byte Byte4;
    [FieldOffset(0)]public int intValue;
    }
  2. Если у вас есть сборка с internal классами и требуется предоставить другой своей сборке доступ к ним (а объединить эти сборку в одну нельзя по тем или иным причинам), то вас спасет атрибут InternalsVisibleTo

  3. Для проверки хватит ли программе памяти для выполнения, можно использовать класс MemoryFailPoint. Он проверит можно ли выделить необходимый объем памяти в мегабайтах без возбуждения исключения OutOfMemoryException. Вместо него используется InsufficientMemoryException.

Несколько замечаний о самой книге. Радует то что книга в красивом твердом переплете. Однако растроил уровень перевода и рецензирования. Как видно над книгой работал коллектив переводчиков и поэтому некоторые термины переводятся в начале и конце книги по разному. Например, термин working set в начале книги переводится как "рабочее множество", а в конце как "рабочий набор". Последний перевод я считаю более правильным и к тому же он уже устоялся.

posted @ 4/12/2007 11:20 AM by Василий Петрухин

Аналог Community Server от Microsoft

Microsoft готовит аналог Community Server под названием Microsoft.community для использования на своих сайтах. Будет интересно взглянуть на результат.

posted @ 4/2/2007 2:48 PM by Василий Петрухин

Событие Session_OnEnd перестает работать в ASP после установки SP2 для Windows 2003

В Service Pack 2 для Windows Server 2003 есть ошибка в движке для классического ASP приводящая к неработоспособности события Session_OnEnd. В данный момент Microsoft работает над исправлением этой ошибки.

Источник: Session_OnEnd not firing after applying Windows 2003 Service Pack 2

[Обновление от 17 апреля 2007] Microsoft выпустила патч.

posted @ 4/2/2007 11:02 AM by Василий Петрухин

RAD среда разработки для PHP

Компания CodeGear готовит к выпуску визуальную среду для PHP разработки под названием Delphi for PHP. Среда работающая только под Windows будет включать библиотеку классов VCL (Visual Component Library) for PHP с поддержкой идеологии drag'n'drop и редактором свойств как в Borland Delphi. Программист сможет создавать обработчики событий также как это делается при создании Windows приложений в Delphi, а также как в Visual Studio.NET при разработке windows и веб-приложений. Разработчики обещают поддержку AJAX на основе библиотеки xajax, а также слой для работы с базами данным (на основе PHPLens и ADOdb). Цена счастья 300 $.

(источник - Delphi - or not Delphi @ RegDeveloper)

[обновление от 2 апареля 2007] Delphi for PHP first impressions

posted @ 2/28/2007 4:13 PM by Василий Петрухин

Best Practice Analyzer для ASP.NET

Случайно нашел интересный проект на сайте CodePlex - Microsoft Best Practices Analyzer. Судя по интерфейсу это единый движок для различных best practices анализаторов. Данный проект идет только с плагином для анализа ASP.NET проектов на предмет соответствия рекомендуемым настройкам безопасности и производительности. Для анализа указывается путь к файлу machine.config, к корневому файлу web.config и к файлу web.config конкретного приложения. Непонятно только анализирует ли утилита вышерасположенные web.config, если приложение наследует часть настроек из родительского(-их) пприложения.

posted @ 2/8/2007 2:00 PM by Василий Петрухин

Бесплатный ISAPI фильтр перезаписи url для IIS 5.x/6

Теперь и для IIS есть бесплатный ISAPI фильтр перезаписи URL с поддержкой регулярных выражений и нескольких сайтов - Ionic's ISAPI Rewrite Filter. Архив с программой занимает всего 360 Кб. В комплекте идет краткая документация и исходные тексты на C. Установка фильтра производится вручную, но это не должно вызывать затруднений так как подробно описана в документации. На тестовом сервере фильтр заработал без проблем. В ближайшее время постараюсь попробую его на рабочем сервере с хорошей нагрузкой.

posted @ 1/18/2007 4:27 PM by Василий Петрухин

Присвоение свойству различных значений в зависимости от браузера в ASP.NET 2

Недавно узнал что в ASP.NET можно назначать разные значения свойствам для элементов управления и директив. Например, в директиве @ Page можно написать: <%@ Page MasterPageFile="~/Default.master" ie:MasterPageFile="~/Default_ie.master" %>. Такая запись указывает, что для MSIE будет использоваться отдельный MasterPage и другой для всех остальных. Префикс ie в данном случае называется device identifier и соответствует значению атрибута id из файлов *.browser. Они находятся в папке %systemroot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers\. При необходимости можно создать свой browser файл и выложить его в папку App_Browsers в корне приложения.

Подобный синтаксис может использоваться в директивах @ Control и @ Master, а также для свойств элементов управления. Смотрите примеры в блоге Скота Гатри (Scott Guthrie). Документация этой возможности есть в статье MSDN ASP.NET Device Filtering Overview.

posted @ 1/17/2007 3:59 PM by Василий Петрухин

В .NET появится поддержка чисел с большой разрядностью.

В библиотеке классов .NET Framework появится новый класс System.Numeric.BigInteger поддерживающий числа с большой разрядностью. В примере можно увидеть класс вычисляющий факториал числа 300.

posted @ 1/17/2007 2:21 PM by Василий Петрухин

3я часть советов по оптимизации JavaScript от разработчиков MSIE

Разработчики MSIE продолжают серию публикаций по оптимизации JavaScript. В заметке IE+JScript Performance Recommendations Part 3: JavaScript Code Inefficiencies дается всего два совета: Avoid Closures if Possible и Don’t use Property Accessor Functions. Первый совет сомнений не вызывает, но второй удивил. Я такой подход считал правильным, а оно вот как оказалось.

posted @ 1/17/2007 2:06 PM by Василий Петрухин

Вывод Windows иконок в приложении ASP.NET

Возможность вывода на своем сайте Windows иконок ассоцированных с конкретным расширением файла может оказаться весьма полезной и Майкл Володарский (Mike Volodarsky) написал HttpHandler для ASP.NET делающий именно это. В данный момент обработчик выложен в откомпилированном виде без исходников, но при наличии интереса Майк обещает выложить исходные тексты и описать детали реализации.

posted @ 1/12/2007 1:55 PM by Василий Петрухин

Советы по администрированию и программированию MS SQL Server

На сайте MSSQLTips собрано большое количество различных советов по MS SQL Server. Постоянно добавляются новые советы, которые можно получать по электронной почте. Полезный сайт.

posted @ 12/28/2006 11:23 AM by Василий Петрухин

Книга Рихтера CLR via С# на русском

Издательский дом Питер представил книгу Джеффри Рихтера CLR via C#. Программирование на платформе Microsoft .NET Framework 2.0 на языке C#. Предварительная цена составляет 585 рублей и может измениться после выхода книги из типографии.

posted @ 12/2/2006 2:34 PM by Василий Петрухин

Советы по созданию оптимальных запросов для MySQL

Хорошие советы в статье Top MySQL Performance Tips. Причем так как это wiki список будет постоянно обновляться. Также на сайте MySQL есть специальный раздел по совместному использованию PHP и MySQL.

posted @ 11/13/2006 12:45 PM by Василий Петрухин

Советы по написанию JavaScript кода от разработчиков Opera

На сайте сообщества разработчиков для браузера Opera опубликована статья Efficient JavaScript с кучей полезных советов. Советую обязательно изучить.

posted @ 11/7/2006 4:46 PM by Василий Петрухин

Нововведения в JavaScript в браузере FireFox

Сегодня Mozilla выпустила FireFox 2 и среди всего прочего браузер включает поддержку JavaScript 1.7 и технологии ECMAScript for XML (E4X). JavaScript 1.7 включает следующие изменения:

  1. Новые методы у объекта Array
    1. indexOf(), lastIndexOf()
    2. итеративные методы every(), filter(), forEach(), map(), some()
  2. Array and String generics
  3. Генераторы и итераторы
  4. Array comprehensions - использование генераторов для инициализации элементов массива
  5. Ключевое слово let для управления видимостью имен (переменных, констант и даже функций)
  6. Destructuring assignment - perl подобный синтаксис при присвоении

Подробно и с примерами эти новинки описаны в статьях New in JavaScript 1.6 и New in JavaScript 1.7.

posted @ 10/25/2006 10:56 AM by Василий Петрухин

Разница между .NET 1.1 и .NET 2.0 в кешировании регулярных выражений

В блоге разработчиков BCL опубликована хорошая заметка Regex Class Caching Changes between .NET Framework 1.1 and .NET Framework 2.0. Если кратко, то кеш теперь имеет фиксированный размер (его можно изменить с помощью свойства Regex.CacheSize) и в него заносятся только регулярные выражения созданные с помощью статических методов класса Regex.

posted @ 10/20/2006 8:13 PM by Василий Петрухин

10 самых распространенных способов атак Web 2.0 приложений

Советую прочитать статью Top 10 Web 2.0 Attack Vectors. Как обычно новые технологии одновременно открывают новые возможности для "плохих парней". Вот они:

  1. Cross-site scripting in AJAX
  2. XML/XML schema poisoning
  3. Malicious AJAX code execution
  4. RSS / Atom injection
  5. WSDL scanning and enumeration
  6. Client side validation in AJAX routines
  7. Web services routing issues (WS-Routing)
  8. Parameter manipulation with SOAP
  9. XPATH injection in SOAP message
  10. RIA thick client binary manipulation

posted @ 10/17/2006 12:39 PM by Василий Петрухин

В IIS7 появится поддержка FastCGI

В IIS7 будет реализована поддержка FastCGI. Одно из главных отличий, по сравнению с CGI, состоит в наличии пула процессов для обработки запросов. Поддержка FastCGI может оказаться особенно полезной для PHP программистов. IIS7 можно будет использовать не только для разработки PHP приложений, но и для их хостинга. Майк Володарский (Mike Volodarsky), работающий в Microsoft на должности IIS product unit manager, опубликовал в своем блоге заметку Making PHP rock on Windows/IIS. В ней он утверждает, что в режиме FastCGI пробное приложение обрабатывало более 1600 запросов в секунду, вместо 40 без FastCGI.

[добавлено 1 ноября 2006] По информации The Register поддержка FastCGI будет также обеспечена в IIS6 и в IIS5.1. Компании Microsoft и Zend будут совместно работать над улучшением поддержки PHP на  платформе Windows, а именно в Windows XP, Windows 2003, Windows Vista и Windows Longhorn Server. Это подтверждается в пресс-релизе на сайте Zend - Microsoft and Zend Technologies Announce Technical Collaboration to Improve Interoperability of PHP on the Windows Server Platform.

posted @ 10/6/2006 5:47 PM by Василий Петрухин

Поддержка переменных в локальной памяти потока в .NET Framework

Windows поддерживает понятие глобальных переменных действующих в рамках отдельного потока. Называется это Thread Local Storage (TLS) или локальная память потока. До сегодняшнего дня я не подозревал о наличии поддержки TLS в .NET Framework. Применив атрибут ThreadStatic к статической переменной мы автоматически получаем необходимый результат. В MSDN Magazine за сентябрь 2006 года опубликована статья .NET Matters: Scope<T> and More с хорошими примерами по теме. Рекомендую прочитать.

posted @ 9/24/2006 4:12 PM by Василий Петрухин

Использование Trace.Fail может привести к зависанию приложений ASP.NET 2.0 на стороне сервера

Если ваш код использует функцию Trace.Fail, то это может вызвать зависание рабочего процесса IIS, а значит, и приложения ASP.NET. Причина в появлении диалога на стороне сервера, на который некому реагировать. Чтобы избежать этого следует отказаться от использования Trace.Fail или добавить в web.config следующие настройки:

<configuration>
   <system.diagnostics>
      <assert assertuienabled="false" logfilename="c:\log.txt"/>
   </system.diagnostics>
</configuration>

(via Preventing Dialogs on the Server-Side in ASP.NET or Trace.Fail considered Harmful)

posted @ 9/21/2006 11:23 AM by Василий Петрухин

Ошибка в Opera 9.01 при отправке формы с помощью JavaScript

На днях столкнулся с ситуацией, когда браузер Opera 9.01 не отправлял форму при вызове метода submit() из JavaScript. Никаких сообщений об ошибке не выдавалось, но в консоли ошибок появлялось такое сообщение:

JavaScript - http://localhost/test2.aspx
Event thread: click
Error:
Unhandled exception: [Object DOMException]
code: 12
message: SYNTAX_ERR - Form didn't validate in submit()
Backtrace:
  Line 1 of  script
    document.forms[0].username.value = "123456789";
document.forms[0].submit();
  At unknown location
    [statement source code not available]

Из него было понятно только, то что ошибка происходит именно при отправке формы и что она как-то связана с DOM. Ошибка, ошибке рознь, но я хочу рассказать о ней так как ее исправление в моем случае потребовало изменения всего одного символа в html коде. Обычно так просто ошибки не поддаются.

Сама ошибка легко вопроизводится с помощью следующего кода:

<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>bug test</title>
</head>
<body>
<form method="get" action="test2.aspx">
<input type="text" name="username" size="7" maxlength="7" value="1">
<input type="button" value="submit me"
onclick="document.forms[0].username.value='123456789'; document.forms[0].submit()"> </form> </body></html>

Причина ошибки кроется в максимальной длине поля username. Она составляет 7 символов, а скрипт присваивает значение длиной 9 символов, что и приводит к вышеописанной ошибке. Причем если у полю username поставить value="123456789" и добавить обычный submit, то форма отправляется. Решение проблемы, очевидно, в замене maxlength="7" на maxlength="9".

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

posted @ 9/12/2006 8:31 PM by Василий Петрухин

Интересный пример неработающего кода

Скотт Аллен опубликовал интересный пример неработающего кода в заметке What's Wrong With This Code (#5). На данный момент в комментариях уже есть правильный ответ почему код не работает и как это исправить. Я, честно говоря, не смог догадаться. Пример мне очень понравился поэтому приведу его здесь. Он состоит из двух частей.

Часть 1. Два простых класса:

using System;
using System.Collections.Generic;

[Serializable]
class Bowlers
{
    List<string> _bowlerList = new List<string>();

    public void AddBowler(string name)
    {
        _bowlerList.Add(name);

        EventHandler<BowlerAddedEventArgs> handler = BowlerAdded;
        if (handler != null)
        {
            handler(this, new BowlerAddedEventArgs(name));
        }
    }

    public event EventHandler<BowlerAddedEventArgs> BowlerAdded;

    // ...
}


[Serializable]
class BowlerAddedEventArgs : EventArgs
{
    public BowlerAddedEventArgs(string name)
    {
        Name = name;
    }

    public string Name;
}

Часть 2. Программа использующая их:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
class Test
{
    public static void Main()
    {
        Bowlers bowlers = new Bowlers();
        string addedMessage = "Added bowler: {0}";
        bowlers.BowlerAdded +=
            delegate(object sender, BowlerAddedEventArgs e)
            {
                Console.WriteLine(addedMessage, e.Name);
            };

        bowlers.AddBowler("Bob");
        bowlers.AddBowler("Jan");
        bowlers.AddBowler("Ann");

        using (MemoryStream stream = new MemoryStream())
        {
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(stream, bowlers);
        }
    }
}

При выполнении программы выдается исключение. Почему? Ответ: Проблема в том, что анонимный делегат обращается к переменным вне своей области видимости. Компилятор C# генерирует для него класс без атрибута [Serializable], а так как событие является public, то происходит попытка выполнить его сериализацию. При этом так как класс в данном поле не является сериализуемым, то выдается исключение. Исправить это можно перенеся переменную addedMessage внутрь делегата или пометив событие BowlerAdded атрибутом [field: NonSerialized].

posted @ 9/12/2006 7:43 PM by Василий Петрухин

Как определить програмным путем в каком режиме (debud или release) откомпилирована сборка

Вопрос определения режима компиляции програмным путем интересовал меня уже давно и благодаря Скотту Хансельману (Scott Hanselman) ответ найден: How to Programmatically Detect if an Assembly is Compiled in Debug or Release mode. Спасибо Скотт!

Эту методику можно использовать как в обычном приложении так и в приложении ASP.NET. Замените вызов Assembly.LoadFrom на Assembly.GetExecutingAssembly или Assembly.GetCallingAssembly. Результат работы кода внутри приложения ASP.NET зависит не только от режима компиляции самой сборки, но и параметра debug из файла web.config.

[обновление от 22 января 2007г] В ASP.NET работу в режиме отладки можно определить с помощью HttpContext.Current.IsDebuggingEnabled. (источник)

posted @ 8/31/2006 2:05 PM by Василий Петрухин

Советы разработчиков MSIE по оптимизации производительности кода JavaScript

В заметке IE + JavaScript Performance Recommendations - Part 1 в блоге разработчиков MSIE перечислено несколько моментов, которые могут помочь ускорить работу кода на JavaScript:

  1. Явное объявление локальных переменных с помощью var
  2. Кеширование значений часто используемых выражений
  3. Кеширование указателей на функцию
  4. Не использовать ключевое слово with

Судя по названию статьи стоит ожидать продолжения.

posted @ 8/30/2006 1:42 PM by Василий Петрухин

Шаблон файла проекта для компиляции с помощью MSBuild

Вместе с .NET Framework 2.0 поставляется утилита MSBuild позволяющая компилировать проекты Visual Studio без ее установки, при условии наличия всех исходных файлов, конечно. Это может оказаться полезным для компиляции проекта ASP.NET прямо на рабочем веб-сервере или, при работе группы над большим проектом, ежедневных ночных компиляций. Кроме этого можно создавать свои собственные проекты. Формат несложный и полностью описан в MSDN, но там не хватает готового примера компиляции проекта с режимами debug и release. В результате я решил сделать такой пример самостоятельно и выкладываю его здесь для всеобщего обозрения. Вдруг кому-то еще пригодится.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
    <PropertyGroup>
        <SourcePath>source</SourcePath>
    </PropertyGroup>
    <Choose>
        <When Condition="'$(Configuration)'=='DEBUG'">
            <PropertyGroup>
                <DefineConstants>DEBUG</DefineConstants>
                <Optimize>false</Optimize>
                <CheckForOverflowUnderflow>true</CheckForOverflowUnderflow>
                <EmitDebugInformation>true</EmitDebugInformation>
            </PropertyGroup>
        </When>
        <Otherwise>
            <PropertyGroup>
                <DefineConstants></DefineConstants>
                <Optimize>true</Optimize>
                <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
                <EmitDebugInformation>false</EmitDebugInformation>
            </PropertyGroup>
        </Otherwise>
    </Choose>
    <Target Name="Resources">
    </Target>
    <Target Name="Build" DependsOnTargets="Resources">
        <Csc
             Sources="@(CSFile)"
             TargetType="library"
             OutputAssembly="$(MSBuildProjectName).dll"
             KeyFile="$(MSBuildProjectName).snk"
             CheckForOverflowUnderflow="$(CheckForOverflowUnderflow)"
             EmitDebugInformation="$(EmitDebugInformation)"
             DefineConstants="$(DefineConstants)"
             Optimize="$(Optimize)"
             NoLogo="true"
        />
    </Target>
    <ItemGroup>
        <CSFile Include="$(SourcePath)\AssemblyInfo.cs" />
        <!-- остальные исходные файлы проекта -->
        ...
    </ItemGroup>
</Project>

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

Для компиляции проекта в режиме release команда выглядит так:

msbuild myProject.proj

Для компиляции в режиме debug так:

msbuild myProject.proj /p:Configuration=Debug

Для компиляции проекта на VB.NET вместо задачи <Csc>надо будет использовать задачу <Vbc>, у которой вместо параметра CheckForOverflowUnderflow используется параметр RemoveIntegerChecks. Других отличий вроде нет.

posted @ 8/25/2006 7:33 PM by Василий Петрухин