WLW – Windows Live Writer или как публиковать программный код на Blogger'е.

HighLight2

Пробуем вставить код, используя SyntaxHighlighter for Windows Live Writer Plugin:

/******************************************
Auto-readmore link script, version 2.0 (for blogspot)

(C)2008 by Anhvo

visit http://en.vietwebguide.com to get more cool hacks
********************************************/
function removeHtmlTag(strx,chop){
if(strx.indexOf("<")!=-1)
{
var s = strx.split("<");
for(var i=0;i<s.length;i++){
if(s[i].indexOf(">")!=-1){
s[i] = s[i].substring(s[i].indexOf(">")+1,s[i].length);
}
}
strx = s.join("");
}
chop = (chop < strx.length-1) ? chop : strx.length-2;
while(strx.charAt(chop-1)!=' ' && strx.indexOf(' ',chop)!=-1) chop++;
strx = strx.substring(0,chop-1);
return strx+'...';
}

function createSummaryAndThumb(pID){
var div = document.getElementById(pID);
var imgtag = "";
var img = div.getElementsByTagName("img");
var summ = summary_noimg;
if(img.length>=1) {
imgtag = '<span style="float:left; padding:0px 10px 5px 0px;"><img src="'+img[0].src+'" width="'+img_thumb_width+'px"/></span>';
summ = summary_img;
}

var summary = imgtag + '<div>' + removeHtmlTag(div.innerHTML,summ) + '</div>';
div.innerHTML = summary;
}

В режиме просмотра Windows Live Writer вижу то, что и должен был увидеть: блок раскрашенного кода на javascript.
Читать полностью >>>

Syntax Highlighter Widget для Blogger'а

HighLight2

Здесь я попробовал применить знания, полученные на Syntax Highlighter в Blogger'е. Вариант так сказать для ленивых: Щелкнуть по ссылке –> Добавить на страницу виджет –> Установить виджет –> Использовать.

Наука по использованию возможностей виджета - очень простая. Любой текст, помещенный в теги:

<pre class="тип_хайлайтера" name="code">
... Какой-то код, соответствующий типу хайлайтера ...
</pre>
или
<textarea name="code" class="тип_хайлайтера" cols="60" rows="10">
... Какой-то код, соответствующий типу хайлайтера ...
</textarea>

раскрасится виджетом без всяких там занудных правок шаблона блога, как в ранее рассмотренных вариантах подветки. Вот так то... Все гениальное - просто!


Подробности использования здесь, типы хайлайтеров здесь.


Пример использования для class="delphi":

FUNCTION  Utf8ToAnsi (Source : STRING; UnknownChar : CHAR = 'ї') : ANSISTRING;
(* Converts the given UTF-8 String to Windows ANSI (Win-1252).
If a character can not be converted, the "UnknownChar" is inserted. *)
VAR
SourceLen : INTEGER; // Length of Source string
I, K : INTEGER;
A : BYTE; // Current ANSI character value
U : WORD;
{$IFDEF UNICODE} // #2009-09-17 DremLIN
Ch : WIDECHAR; // Dest char
{$ELSE}
Ch : CHAR; // Dest char
{$ENDIF}
Len : INTEGER; // Current real length of "Result" string
BEGIN
SourceLen := Length (Source);
SetLength (Result, SourceLen); // Enough room to live
Len := 0;
I := 1;
WHILE I <= SourceLen DO BEGIN
A := ORD (Source [I]);
IF A < $80 THEN BEGIN // Range $0000..$007F
INC (Len);
{$IFDEF UNICODE} // #2009-09-17 DremLIN
Result [Len] := AnsiChar(Source[I]);
{$ELSE}
Result [Len] := Source [I];
{$ENDIF}
INC (I);
END
ELSE BEGIN // Determine U, Inc I
IF (A AND $E0 = $C0) AND (I < SourceLen) THEN BEGIN // Range $0080..$07FF
U := (WORD (A AND $1F) SHL 6) OR (ORD (Source [I+1]) AND $3F);
INC (I, 2);
END
ELSE IF (A AND $F0 = $E0) AND (I < SourceLen-1) THEN BEGIN // Range $0800..$FFFF
U := (WORD (A AND $0F) SHL 12) OR
(WORD (ORD (Source [I+1]) AND $3F) SHL 6) OR
( ORD (Source [I+2]) AND $3F);
INC (I, 3);
END
ELSE BEGIN // Unknown/unsupported
INC (I);
FOR K := 7 DOWNTO 0 DO
IF A AND (1 SHL K) = 0 THEN BEGIN
INC (I, (A SHR (K+1))-1);
BREAK;
END;
U := WIN1252_UNICODE [ORD (UnknownChar)];
END;
Ch := UnknownChar; // Retrieve ANSI char
FOR A := $00 TO $FF DO
IF WIN1252_UNICODE [A] = U THEN BEGIN
Ch := CHR (A);
BREAK;
END;
INC (Len);
{$IFDEF UNICODE} // #2009-09-17 DremLIN
Result [Len] := AnsiChar(Ch);
{$ELSE}
Result [Len] := Ch;
{$ENDIF}
END;
END;
SetLength (Result, Len);
END;

Смотрю на красивую подсветку кода Delphi. Радуюсь.


- DejaVu???

- Ку!!!...
Читать полностью >>>

Подсветка кода или Syntax Highlighter на Blogger’е

HighLight

Прикручивание публикации кода с подсветкой синтаксиса к Blogger’у.

Задумалось мне, на досуге, реализовать подсветку кода в моем блоге. Погуглил. Нашел несколько вариантов реализации задуманного. Вот обзорчик по теме:

Решил пока остановиться на этом: Highlight.js. Причины выбора:

  • Динамический;
  • Не загромождает шаблон страницы;
  • Поддержка Delphi/Object Pascal (а также много других, распознование - автоматом);
  • Легко прикручивается к Blogger.

Как я его прикручивал? Рассказываю.

Во первых выяснилось, что для размещения скрипта подсветки, да и вообще любых пользовательских скриптов, нужен отдельный файловый хостинг, потому что blogger пользовательские файлы не хранит. Обидно, досадно, ну да ладно. Зарегался значит, я на fileave.com, а там предоставляют на халяву всего 50М, но мне для скриптиков блоггера – достаточно.

Скачиваю Highlight.js (нужно обязательно расставить галки напротив нужных вариантов) заливаю на fileave.com. Теперь действую по инструкции: Подсветка синтаксиса в блоге на Blogger.com. Хотя описание несколько устарело, основную идею переделки шаблона оттуда я извлек.

Особое внимание надо уделить чтению файла readme.rus.txt из дистрибутива Highlight.js, по поводу использованию файла highlight.pack.js. И все получиться…

Затем я, путем проб и ошибок, добавил скроллинг в элемент отображения кода. Для этого пришлось немного поправить используемый мною, для раскраски кода, стиль “Magula”:

/* highlight.js styles */

pre {
margin: .5em; padding: .5em;
border-style: solid;
border-width: thin;
border-color: darkgrey;
background-color: #f4f4f4;
}

pre code,
.ruby .subst,
.lisp .title {
display: block;
height: 420px;
overflow: scroll;
word-wrap: normal; /* Для Internet Explorer 5.5+ */
line-height: 1.2em;
color: black;
}

... Здесь пропущены прочие описания стилей ... :)

/* End of highlight.js styles */

Смотрю на красивую подсветку кода Delphi. Радуюсь. Ку!...

FUNCTION  Utf8ToAnsi (Source : STRING; UnknownChar : CHAR = 'ї') : ANSISTRING;
(* Converts the given UTF-8 String to Windows ANSI (Win-1252).
If a character can not be converted, the "UnknownChar" is inserted. *)
VAR
SourceLen : INTEGER; // Length of Source string
I, K : INTEGER;
A : BYTE; // Current ANSI character value
U : WORD;
{$IFDEF UNICODE} // #2009-09-17 DremLIN
Ch : WIDECHAR; // Dest char
{$ELSE}
Ch : CHAR; // Dest char
{$ENDIF}
Len : INTEGER; // Current real length of "Result" string
BEGIN
SourceLen := Length (Source);
SetLength (Result, SourceLen); // Enough room to live
Len := 0;
I := 1;
WHILE I <= SourceLen DO BEGIN
A := ORD (Source [I]);
IF A < $80 THEN BEGIN // Range $0000..$007F
INC (Len);
{$IFDEF UNICODE} // #2009-09-17 DremLIN
Result [Len] := AnsiChar(Source[I]);
{$ELSE}
Result [Len] := Source [I];
{$ENDIF}
INC (I);
END
ELSE BEGIN // Determine U, Inc I
IF (A AND $E0 = $C0) AND (I < SourceLen) THEN BEGIN // Range $0080..$07FF
U := (WORD (A AND $1F) SHL 6) OR (ORD (Source [I+1]) AND $3F);
INC (I, 2);
END
ELSE IF (A AND $F0 = $E0) AND (I < SourceLen-1) THEN BEGIN // Range $0800..$FFFF
U := (WORD (A AND $0F) SHL 12) OR
(WORD (ORD (Source [I+1]) AND $3F) SHL 6) OR
( ORD (Source [I+2]) AND $3F);
INC (I, 3);
END
ELSE BEGIN // Unknown/unsupported
INC (I);
FOR K := 7 DOWNTO 0 DO
IF A AND (1 SHL K) = 0 THEN BEGIN
INC (I, (A SHR (K+1))-1);
BREAK;
END;
U := WIN1252_UNICODE [ORD (UnknownChar)];
END;
Ch := UnknownChar; // Retrieve ANSI char
FOR A := $00 TO $FF DO
IF WIN1252_UNICODE [A] = U THEN BEGIN
Ch := CHR (A);
BREAK;
END;
INC (Len);
{$IFDEF UNICODE} // #2009-09-17 DremLIN
Result [Len] := AnsiChar(Ch);
{$ELSE}
Result [Len] := Ch;
{$ENDIF}
END;
END;
SetLength (Result, Len);
END;


Для полного счастья не хватает нумерации строк. Ну что ж… А так ли она нужна? Возможно прав автор проекта Highlight.js Сагалаев Иван ГригорьевичБаловство все это… Буду морщить ум с этой стороны… А пока – Пока! Чао – какао… :)

Читать полностью >>>

Delphi dbXmlRpc (VCL). Часть 2. Delphi XML Parser.

Как я уже писал ранее, выбранный мной для разработки проЭкта “Ку!”, базовый компонент Delphi XML-RPC, использует для парсинга XML компонент XML Parser от Stefan Heymann.

xml-icon1

Мне удалось связаться со Штефаном Хейманном и предоставить ему результаты моей адаптации его библиотеки для работы со средами Delphi 2006, 2009 и 2010. Штефан, сославшись на нехватку времени, сообщил, что в данный момент не может продолжить разработку своего проекта. Он любезно предоставил эту почетную миссию моей скромной персоне, согласовав со мной некоторые детали реализации проекта и предоставив мне последнюю версию, неопубликованных нигде ранее, исходников ядра своей библиотеки.

В результате нашей с ним переписки,  возник небольшой проЭктик: Delphi XML Parser, который я буду активно использовать в “Ку!”. Он конечно требует дальнейшей доработки, в части полной поддержки UNICODE, но пока для моего проЭкта “Ку!” – в самый раз!

Цель данной разработки - модификация проекта, начатого когда-то Штефаном Хейманном. Подробней узнать о базовом проекте можно на сайте автора: Stefan Heymann's .Free Site.

Модификация и номера версий проекта согласованы с автором базового проекта, со Штефаном.

  • На сегодня текущая версия Delphi XML Parser – 1.1.1;
  • Поддерживаются среды разработки: Delphi и C++Builder (версии 4, 5, 6, 7, 2005, 2006, 2009, 2010);
  • Библиотека собирается с предупреждениями, но приложенные “демы” – работают. Проверено “электроникой”.

Delphi XML Parser

Ку!!! До встречи…

Читать полностью >>>

Delphi dbXmlRpc (VCL). Часть 1. Постановка задачи. Выбор базовых компонентов.

Для реализации “Хотелки №1” необходимо создать прототип библиотеки компонентов для построения среды передачи данных посредством протокола XML-RPC.

Свой проЭкт, на текущем этапе, я буду разрабатывать для платформы Windows. Возможно когда-нибудь я смогу реализовать кроссплатформенность, но это пока из разряда “мечталок”.

Итак, в качестве среды разработки выбираю Delphi 2010, демо-версия которой доступна на сайте производителя.

Составные части проектируемой библиотеки:

  1. Компонент “DdbXmlRpcClient”. (Для построения клиентских приложений).
  2. Компонент “DdbXmlRpcServer”. (Для построения сервера приложений).
  3. Источник данных. (Для обеспечения подключений к “Хранилищу данных”, дальше по тексту - ХД).

В рамках этой задачи необходимо:

  • На стороне клиентского компонента обеспечить формирование и передачу запроса серверному компоненту на получение некоторых данных из ХД;
  • На стороне серверного компонента обеспечить парсинг клиентского запроса, затем сформировать и отправить запрос к ХД;
  • На стороне серверного компонента принять данные из ХД. Сформировать и отправить ответ клиентскому компоненту;
  • На стороне клиентского компонента обеспечить обработку ответа, полученного от серверного компонента, затем отобразить полученные данные на экране пользователя системы.

Реализация “хотелки №1”. Начало.

Для начала я дал Имя нашей новой библиотеке, для последующего использования. Отныне она будет называться Delphi dbXmlRpc (VCL), что на человеческом языке означает – “Delphi Database XmlRpc (Visual Component Library)”. Прошу любить и жаловать...

В качестве базовой библиотеки для реализации задуманного буду использовать компонент Delphi XML-RPC for Windows and Kylix for GNU/Linux (разработчики: Clifford E. Baeseman и Team-DXmlRpc):

  • Последняя версия доступная на сайте - 2.0.0 в CVS - 2.1.0;
  • Дата последнего обновления: 2004-04-20;
  • Поддерживается работа в средах Delphi 6, 7;
  • Для работы необходимы компоненты INDY 9 и XMLParcer от Stefan Heymann (входит в комплект);
  • Компонент уже достаточно давно не обновлялся авторами, но необходимый базовый функционал в нем заложен.
  • Для использования в проЭкте – годен (потребуется относительно небольшая доработка).

Я установил Delphi 2010, а с ним идет INDY 10. Для начала придется "довести до нужной кондиции" используемые сторонние компоненты Delphi XML-RPC, и XMLParcer, а именно:

  • Адаптировать для Delphi 2010 (желательно обеспечить совместимость с предыдущими версиями IDE и RAD Studio);
  • Адаптировать для использования с INDY 10 (желательно сохранить совместимость с предыдущей версией INDY 9).

Я использовал последние доступные версии библиотек 2.1.0 и 1.0.17 соответственно. После некоторых "танцев с бубном" удалось адаптировать код используемых библиотек для работы с UNICODE и собрать все это хозяйство в Delphi 2010. Поддержку предыдущих версий среды буду реализовывать позже...

Сборка получилась на “скорую руку”, по-быстрому, короче – “рыба”, но мне, для испытания  возможностей выбранных базовых компонентов – достаточно.

Кому интересно посмотреть что у меня получилось смотрим: http://www.opensvn.ru/project_info.php?id_project=dbxmlrpc

dXmlRcp

Читатель: "А где же передача данных?"
Писатель: "Вот отшлифую текущие наработки - тогда продолжим..."

За сим прощаюсь.

Читать полностью >>>

"Ку!": Хотелки...

Итак перехожу от мечталок к хотелкам.
vinni2

Здесь необходимо сказать о том, что основной интерес для меня представляют "Ку" в стилях:

  • РТС (RTS): ДуняВторая(Dune2), ВарСтарКрафт(WarCraft, StarCraft), Аллоды и т.п.
  • РПГ (RPG): Фаллауты 1 и 2 (Fallout1, Fallout2), ВизардриОсьмой(Wizardry8), Морровинды(Morrowind), Князи 1, 2, и 2.5, Златогорья 1 и 2 и т.п.

Экшены на быстроту реакции пальцев - не люблю, но "погамал" изрядно. Симуляторы и прочие - тоже пожалуй не моё...

Ку!.. Поехали!

  1. Хочу, чтобы "Ку!" состояла из "Сервера", "Клиента", и "Хранилищ Данных";
  2. Хочу, чтобы в "Ку!" были режимы интерфейса "Изометрия", "3D", "Текстовый МУД";
  3. Хочу, чтобы в "Ку!" были режимы геймплея "Одиночное прохождение" и "Мультиплеер";
  4. Хочу, чтобы "Ку!" могла работать во всех основных системах: "Окны", "Пингвины", "Яблоки", "Бздишки" и "Солярки".

Продолжение следует...

Читать полностью >>>

Интродукция, или о чем мне хочется Вам рассказать…

Всем привет! Я называю себя DremLIN. Я - мечтатель.
Sky1
Мечт у меня - тьма. От их множества пухнет и болит моя голова. Мой мозг готов вот-вот взорваться... Близится Большой Бадабум... И покинут мЕчты мой мозг... И растворятся они во мраке вселенной... И никто и никогда не узнает что же хранил мой бедный мозг в глубинах своих извилин...

СТОП! Дайте мне бумагу и карандаш. Буду марать...

- Получит ли кто удовольствие от прочтения моих записок? - Не уверен.
- Будет ли от них кому-то какая-нибудь практическая польза? - Возможно.
- Будет ли Большой Бадабум? - Когда-нибудь, но не здесь и не сейчас.
(Поговаривают про 21.12.12... То есть всего-то через 3 года... Мда...).

Итак я начинаю "Ку!".

Для начала приведу небольшую справку:
Материал из Википедии — свободной энциклопедии

Чатлано-пацакский язык (чатланский язык) — вымышленный язык из кинофильма «Кин-дза-дза!». Чатлано-пацакский — родной язык коренных жителей планет Плюк и Хануд, называющих себя чатланами и пацаками.
Особенность языка заключается в том, что практически все понятия (за редким исключением) выражаются одним словом — «ку». Столь маленький словарь языка обусловлен тем, что жители Плюка и Хануда обладают телепатией.
Возможно, также, что смысл может зависеть от интонации слова «ку», которая не различаема иноговорящими.

Когда-то, Я как и многие другие до меня (во время меня и наверняка после меня) запоем играл в компутерные игрухи, или как сейчас говорят "гамился". Пройдено великое множество квестов, виртуальных дорог, перемещений, перевоплощений. Но всегда мне чего-то не хватало. Меня постоянно преследовала мысль, что "вот этот квест я бы составил иначе... а вот здесь я бы... а вот тут...". Иногда хотелось бы надавать приказов своим персонажам и пойти поспать (на учебу, на работу (нужное подчеркнуть)), а игра продолжалась бы без моего непосредственного участия. Утром я бы посмотрел результаты действий своих персонажей, оценил обстановку, накликал новых команд и все - можно заниматься обычными делами... или взять управление в свои руки и "гамиться", "гамиться", "гамиться".

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

А теперь все продвинутое человечество "гамиться" в разноразные MMORPG'и друг с другом и друг против друга... Реальные ведь люди, а не боты какие-то там...

И вот тогда я замечтал создать "Супер-Мега-Ультра" игруху которая могла бы покрыть все мои хотелки по идеальной (с моей скромной точки зрения) игре. И даже запыхтел с натугой в этом направлении... С энтузиазмом освоил Делфи, как самый быстрый вариант входа в программерство. И сразу начал писать код... Думаю, что даже не надо никому говорить, что в результате получилась полная фигня... Скажу лишь, что жизнь сложилась так, что геймдевелопером я так и не стал...

А вот мечта о такой игрухе - так и живет все эти годы в моём мозге, периодически наваливаясь и мешая спать. И тогда моё воображение рисует мне картины геймплея, где
я "строю" своих юнитов за "хреновую работу и за неуплату взносов" (с) Лаэртский.

А ещё иногда мне приходят сны, в которых мне снится готовая реализация блоков программы, где всё просто и понятно. Предельно ясными становятся алгоритмы действий и все то, что для этого необходимо сделать, и как запрограммировать код... Но на утро я почти ничего не могу вспомнить. Только ощущение ясности и простоты реализации... Как же тогда товарищ Менделеев нарисовал свою таблицу? Тоже по ощущениям? Или ему во сне еще и яблоко упало на голову, как товарищу Ньютону? Не понятно...

Ну что ж... Буду попробовать вспомнить все... И флаг мне в руки... И барабан...
Читать полностью >>>