* * *

Генерация SVG с помощью XSLT

Этот пример показывает, как XSLT может пригодиться для генерации изображений в формате SVG, например, графиков.

Оставить комментарий
* * *

NHibernate: Хранение даты в UTC

У нас возникла вполне естественная потребность: работать с датой во временной зоне сервера, а в базу сохранять в UTC. Таким образом, при переносе продукта в другую временную зону, база оставалась бы актуальна.

Я потратил много времени, чтобы решить данную задачу средствами NHibernate, но найти готового решения мне не удалось.

Потому я решил создать свой тип данных на базе появившегося в NHibernate 3 типа UtcDateTimeType.

Оставить комментарий
* * *

XML/XSLT: Борьба с форматированием

При работе с XML/XSLT существует неприятный момент: форматирование XML-документа влияет на его структуру. В этой статье мы рассмотрим несколько примеров "граблей" и путей их обхода.

Оставить комментарий
* * *

Шифрование данных в Fluent NHibernate

Если некоторые поля объекта должны храниться в базе в зашифрованом виде, хорошим решением будет создать шифрующий тип данных NHibernate.

Я нашёл неплохой пример такого типа данных, и сделал рабочий пример его использования.

Мой код так же содержит пример Fluent NHibernate мэппинга и пример использования класса TripleDESCryptoServiceProvider.

Оставить комментарий
* * *

Пример использования Castle.ActiveRecord в ASP.NET MVC 3

Есть довольно интересный проект Castle, который включает в себя много полезных .NET библиотек. Одной из таких библиотек является Castle.ActiveRecord — реализация ActiveRecord поверх NHibernate. Основное достоинство данной библиотеки, это простота использования и настройки.

Однако один простой пример всегда красноречивее тысячи слов.

Оставить комментарий
* * *

HttpException: Request timed out при установке пакетов в Umbraco

Установка нескольких пакетов в Umbraco может занять много времени, особенно при медленном соединении с интернет. Это приводит к ошибке System.Web.HttpException: Request timed out. Здесь на помощь приходит параметр executionTimeout в web.config:

<system.web>
    <httpRuntime requestValidationMode="2.0" executionTimeout="3600" />

Таймаут указан в секундах.

Оставить комментарий
* * *

Пустая textarea в XSLT

Есть в использовании XSLT такая неприятная тема, как вывод тега textarea в режиме:

<xsl:output method="xml" indent="no"/>

Проблема в том, что XSLT:

<textarea>
    <xsl:value-of select="Value" />
</textarea>

В случае пустого Value, выведет один закрытый тэг:

<textarea />

А не два тега, как положено.

Вставлять пробел или комментарий, как часто делают в случае тега script, для textarea недопустимо.

Я, в таких случаях, просто создаю пустой text-элемент:

<textarea>
    <xsl:value-of select="Value" />
    <xsl:text><![CDATA[]]></xsl:text>
</textarea>
Оставить комментарий
* * *

Как использовать C# в XSLT

Встраивать C# в XSLT не очень полезно с точки зрения разделения логики и представления, но жизнь диктует свои условия и иногда требуется сложная логика в XSLT.

Рассмотрим простой пример:

Оставить комментарий
* * *

jsTree: не работает контекстное меню с jquery

jsTree - красивая вещь. Но изучать её сложее чем TreeView, ибо она довольно большая и, как обычно, плохо документирована. Мало красноречивых сэмплов.

Например, я часа 4 пытался понять, почему не отображается Context Menu: выяснилось, что это бага jsTree: в RC2 он не работает с Jquery 1.3.4.

Решение стандартное: используй транк, Люк.

Оставить комментарий
* * *

Incorrect signature on api-video.facebook.com

Решение: включить "Canvas session Parameter".

Facebook Canvas session Parameter checkbox
Оставить комментарий
* * *

MSSQL Server 2008: Как поменять схему таблиц и хранимых процедур

Следующий запрос сгенерирует запрос для смены схемы.

declare @OldOwner varchar(100) declare @NewOwner varchar(100)
set @OldOwner = 'woof' set @NewOwner = 'dbo'

SELECT 'ALTER SCHEMA ' + @NewOwner + ' TRANSFER [' + s.Name + '].[' + p.Name + ']' FROM sys.Procedures p INNER JOIN
sys.Schemas s on p.schema_id = s.schema_id WHERE s.Name = @OldOwner
union
select 'EXEC sp_changeobjectowner ''[' + table_schema + '].[' + table_name + ']'', ''' + @NewOwner + ''''
 from information_schema.tables where Table_schema = @OldOwner
Оставить комментарий
* * *

mysqli_bind_result и longtext

mysqli_bind_result упорно не вычитывает данные из longtext поля. Пришлось вместо mysqli->prepare использовать mysqli->query. Конечно странно в 21 веке писать код вроде:
$id = self::getConnection()->real_escape_string($id);
$result = self::getConnection()->query(
    "SELECT data FROM dbcache WHERE cache_key = '$id'");
$r = $result->fetch_row();
$data = $r[0];
$result->close();
Но, похоже другого способа заселектить longtext нет.
Оставить комментарий
* * *

Migrate to Redmine 1.0: column 'path' can't have a default value

Вот и наступил момент, когда редмайн стал 1.0. До этого момента я использоватал Remine 9.3 скачанный с BitNami.

Скачал исходники Redmine 1.0 с RubyForge выполнил:

rake db:migrate RAILS_ENV=production
Но получил:
Mysql::Error: BLOB/TEXT column 'path' can't have a default value: ALTER
TABLE `c hanges` CHANGE `path` `path` text DEFAULT '' NOT NULL

Я сильно расстроился. Но потом прочитал тред на Redmine.org. И всё стало понятно:

  1. Ставим BitNami Redmine 1.0 (Или скачиваем новую версию с redmine.org)
  2. Смотрим, чтобы в database.yml на вашу базу стояло: encoding: utf8
  3. Ищем файл с кодом:
    class ChangeChangesPathLengthLimit < ActiveRecord::Migration
      def self.up
    

    У меня это файл: 20100705164950_change_changes_path_length_limit.rb. Правим его так, чтобы этот файл стал содержать:

    class ChangeChangesPathLengthLimit < ActiveRecord::Migration
      def self.up
        change_column :changes, :path, :text, :default => nil, :null => true
        change_column :changes, :path, :text, :null => false
        change_column :changes, :from_path, :text
      end
      def self.down
        change_column :changes, :path, :string, :default => "", :null => false
        change_column :changes, :from_path, :string
      end
    end
  4. Теперь нужно запустить:
    rake db:migrate RAILS_ENV=production
    и можно насладиться новой версией Redmine.
Оставить комментарий
* * *

MSSQL: An attempt to attach an auto-named database for file

Файл базы должен иметь расширение .mdf, a не .db

Кто бы мог подумать?

Оставить комментарий
* * *