Новые записи
для начала поздороваюсь и познакомлюсь...всегда хотела завести дневник, но руки не доходили))
posted @
1/24/2008 3:13 PM
by
Катёна
ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka...ZaGvozGka
posted @
11/8/2007 10:15 PM
by
ZaGvozGka
ПРОВЕРКА!!!
posted @
7/27/2007 11:45 AM
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 C#. Программирование на платформе Microsoft.NET Framework 2.0 на языке C#. Начал читать с самого начала несмотря на то что там объясняются базовые принципы .NET Framework/CLR/C# с которыми я уже знаком. Решил таким образом освежить знания. По ходу чтения наткнулся на пару новых моментов, которыми и хочу поделиться.
- В 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; }
-
Если у вас есть сборка с internal классами и требуется предоставить другой своей сборке доступ к ним (а объединить эти сборку в одну нельзя по тем или иным причинам), то вас спасет атрибут InternalsVisibleTo
- Для проверки хватит ли программе памяти для выполнения, можно использовать класс MemoryFailPoint. Он проверит можно ли выделить необходимый объем памяти в мегабайтах без возбуждения исключения OutOfMemoryException. Вместо него используется InsufficientMemoryException.
Несколько замечаний о самой книге. Радует то что книга в красивом твердом переплете. Однако растроил уровень перевода и рецензирования. Как видно над книгой работал коллектив переводчиков и поэтому некоторые термины переводятся в начале и конце книги по разному. Например, термин working set в начале книги переводится как "рабочее множество", а в конце как "рабочий набор". Последний перевод я считаю более правильным и к тому же он уже устоялся.
posted @
4/12/2007 11:20 AM
by
Василий Петрухин
Microsoft готовит аналог Community Server под названием Microsoft.community для использования на своих сайтах. Будет интересно взглянуть на результат.
posted @
4/2/2007 2:48 PM
by
Василий Петрухин
Компания 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
Василий Петрухин
Случайно нашел интересный проект на сайте 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
Василий Петрухин
Теперь и для IIS есть бесплатный ISAPI фильтр перезаписи URL с поддержкой регулярных выражений и нескольких сайтов - Ionic's ISAPI Rewrite Filter. Архив с программой занимает всего 360 Кб. В комплекте идет краткая документация и исходные тексты на C. Установка фильтра производится вручную, но это не должно вызывать затруднений так как подробно описана в документации. На тестовом сервере фильтр заработал без проблем. В ближайшее время постараюсь попробую его на рабочем сервере с хорошей нагрузкой.
posted @
1/18/2007 4:27 PM
by
Василий Петрухин
Недавно узнал что в 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 Framework появится новый класс System.Numeric.BigInteger поддерживающий числа с большой разрядностью. В примере можно увидеть класс вычисляющий факториал числа 300.
posted @
1/17/2007 2:21 PM
by
Василий Петрухин
Возможность вывода на своем сайте Windows иконок ассоцированных с конкретным расширением файла может оказаться весьма полезной и Майкл Володарский (Mike Volodarsky) написал HttpHandler для ASP.NET делающий именно это. В данный момент обработчик выложен в откомпилированном виде без исходников, но при наличии интереса Майк обещает выложить исходные тексты и описать детали реализации.
posted @
1/12/2007 1:55 PM
by
Василий Петрухин
На сайте MSSQLTips собрано большое количество различных советов по MS SQL Server. Постоянно добавляются новые советы, которые можно получать по электронной почте. Полезный сайт.
posted @
12/28/2006 11:23 AM
by
Василий Петрухин
Сегодня Mozilla выпустила FireFox 2 и среди всего прочего браузер включает поддержку JavaScript 1.7 и технологии ECMAScript for XML (E4X). JavaScript 1.7 включает следующие изменения:
- Новые методы у объекта Array
- indexOf(), lastIndexOf()
- итеративные методы every(), filter(), forEach(), map(), some()
- Array and String generics
- Генераторы и итераторы
- Array comprehensions - использование генераторов для инициализации элементов массива
- Ключевое слово let для управления видимостью имен (переменных, констант и даже функций)
- Destructuring assignment - perl подобный синтаксис при присвоении
Подробно и с примерами эти новинки описаны в статьях New in JavaScript 1.6 и New in JavaScript 1.7.
posted @
10/25/2006 10:56 AM
by
Василий Петрухин
Советую прочитать статью Top 10 Web 2.0 Attack Vectors. Как обычно новые технологии одновременно открывают новые возможности для "плохих парней". Вот они:
- Cross-site scripting in AJAX
- XML/XML schema poisoning
- Malicious AJAX code execution
- RSS / Atom injection
- WSDL scanning and enumeration
- Client side validation in AJAX routines
- Web services routing issues (WS-Routing)
- Parameter manipulation with SOAP
- XPATH injection in SOAP message
- RIA thick client binary manipulation
posted @
10/17/2006 12:39 PM
by
Василий Петрухин
В 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
Василий Петрухин
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, то это может вызвать зависание рабочего процесса 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 не отправлял форму при вызове метода 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
Василий Петрухин
Вопрос определения режима компиляции програмным путем интересовал меня уже давно и благодаря Скотту Хансельману (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
Василий Петрухин
В заметке IE + JavaScript Performance Recommendations - Part 1 в блоге разработчиков MSIE перечислено несколько моментов, которые могут помочь ускорить работу кода на JavaScript:
- Явное объявление локальных переменных с помощью var
- Кеширование значений часто используемых выражений
- Кеширование указателей на функцию
- Не использовать ключевое слово with
Судя по названию статьи стоит ожидать продолжения.
posted @
8/30/2006 1:42 PM
by
Василий Петрухин
Вместе с .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
Василий Петрухин
|