Архив категории ‘Программирование’

Экранирование амперсанта («&») в XML

Спецсимволы XML

#x9 [HT] Горизонтальная табуляция (horizontal tabulation)
#xA [LF] Перевод строки (line feed)
#xD [CR] Возврат каретки (carriage return)
#x20 [SP] Пробел (space)
#x21 ! Восклицательный знак (exclamation sign)
#x22 « Двойные кавычки (quotation mark)
#x26 & Амперсант (ampersand)
#x27 Апостроф или одинарные кавычки (apostrophe)
#x3C < «Знак «»меньше»» или левая угловая скобка (less-than sign)»
#x3F ? Вопросительный знак (question mark)
#xA0 [NBSP] Неразрываемый пробел (no-break space)

 

Специальную роль в разметке XML играет символ &.

Употребление разметочных символов в символьных данных затрудняет распознавание конструкций разметки и может создать проблему неоднозначности структуры.

В XML эта проблема решается заменой «&» -> «&amp;».

Через PHP это делается не сложной регуляркой:

$s = preg_replace('/&[^; ]{0,6}.?/e', "((substr('\\0',-1) == ';') ? '\\0' : '&'.substr('\\0',1))", $s);

UPD: Итоговый код получился таким:

		$tpl_output = preg_replace('/&[^; ]{0,6}.?/e', "((substr('\\0',-1) == ';') ? '\\0' : '&'.substr('\\0',1))", $tpl_output);
		$tpl_output = preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/","&" ,html_entity_decode($tpl_output, ENT_COMPAT, 'UTF-8'));

Delphi: Конвертация даты

время

Наверное, я только что изобрел страшный костыль, однако решение имеет право на жизнь и используется в одном из моих проектов.
Основная идея переконвертировать дату из одного вида в другой, и сделать это надо на Delphi.

Добавляем в uses модуль DateUtils.

Делать будем через FormatSettings:TFormatSettings; и StrToDateTime.

var
FormatSettings,FormatSettings1: TFormatSettings;
inputstr,outputstr:string;
 
begin
FormatSettings.ShortDateFormat := 'yyyy-mm-dd';
FormatSettings.DateSeparator := '-';
FormatSettings.LongTimeFormat := 'hh:nn:ss';
FormatSettings.TimeSeparator := ':';
 
FormatSettings1.ShortDateFormat := 'dd.MM.yyyy';
FormatSettings1.LongTimeFormat := 'hh:nn:ss';
FormatSettings1.TimeSeparator := ':';
FormatSettings1.DateSeparator := '.';
 
InputStr:='2013-03-13 21:10:00';
outputstr:=datetimetostr(StrToDateTime(inputstr, FormatSettings), FormatSettings1);
end;

В итоге получаем из «2013-03-13 21:10:00 -> 13.03.2013 21:10:00».

(далее…)

WordPress: локальная разработка

wordpress-training

Некоторые привычки бывают очень полезными. Я привык разделять локальную разработку и продакшен. Тестировать код и вносить изменения надо только на локальной копии, по факту успешной реализации выкатывать изменения через VCS (SVN или Git) на продакшен.

«Шуршун» в этом отношении не стал исключением. WP постоянно норовил перекинуть меня с «local» домена на основной, чем сильно мешал работать. Пришлось накатить довольно таки стандартный «костыль», который применяет различные параметры в зависимости от входящего доменного имени.

В коде я поменял имя основного домена для движка (WP_HOME и WP_SITEURL), но никто не мешает втиснуть в условия параметры подключения к базе (‘DB_NAME’,’DB_USER’ и т.д.) или другие полезности.

Дополнения файла wp-config.php:

if ($_SERVER['HTTP_HOST']=='local.shurshun.ru') {
    DEFINE ('WP_HOME', 'http://local.shurshun.ru'); 
    DEFINE ('WP_SITEURL', 'http://local.shurshun.ru'); 
}else{
    DEFINE ('WP_HOME', 'http://shurshun.ru'); 
    DEFINE ('WP_SITEURL', 'http://shurshun.ru'); 
}

Как видно из кода — ничего сложного.

Яндекс. Школа разработки интерфейсов.

Яндекс. Школа разработки интерфейсов

Очередной курс лекций от компании «Яндекс», на этот раз посвященный веб-разработке.
Школа разработки интерфейсов (ШРИ) организована компанией Яндекс в 2012 году для студентов старших курсов и  выпускников вузов, желающих развиваться в области фронтенд-разработки веб-сервисов.

Обучение в Школе разработки интерфейсов включает в себя две части. Курс лекций, посвященных различным аспектам промышленной фронтенд-разработки, и более практическую часть, связанную непосредственно с разработкой.

На занятиях сотрудники Яндекса рассказывают об инструментах разработчика, о том, как лучше и эффективнее вести работу в команде, о приёмах, которые позволяют сэкономить время, немного о дизайне. Практику ведут ведущие фронтенд-разработчики Яндекса, разрабатывающие интерфейсы для Поиска, Почты, Карт и других сервисов Яндекса.

Курс можно скачать в виде одного торрента: Школа разработки интерфейсов, или просмотреть непосредственно с первоисточника: Яндекс: ШРИ

(далее…)