Saturday, 29 September 2012

How to concatenate multiple lines in console (bash, cmd)

If for some reasons you need to have concatenated lines try one of the recipes below.

Monday, 25 June 2012

Merge and sort many logfiles having multiline entries

logmerge is the small and powerful script to merge two or more log files so that multiline entries appear in the correct chronological order without breaks of entries. Optional arguments control an adding of descriptive fields at the beginning of each line in the resulting combined logfile. Reading of .gz/.bz2 files is available.

Tuesday, 15 May 2012

Regular Expression Analyzer

Neat online tool. Regular expressions are described in the human-friendly style.

Regular Expression Analyzer

Sunday, 25 March 2012

Universal way to identify your external IP and more

There are many such kind of resources in Internet but this is the best. It allows the numerous structured data and it has nice name. Meet http://ifconfig.me/.
Command line interface
Using curl
curl ifconfig.me
or wget
wget -qO - ifconfig.me/ip
JScript
JS
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('GET', 'http://ifconfig.me/ip', false);
xmlhttp.send();
 
var ip = xmlhttp.responseText;
JS+XML
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('GET', 'http://ifconfig.me/all.xml', false);
xmlhttp.send();
 
var ip = xmlhttp.responseXml.getElementsByTagName('ip_addr')[0].text;
Having JSON library you can read and parse JSON data:
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('GET', 'http://ifconfig.me/all.json', false);
xmlhttp.send();
 
var data = JSON.parse(xmlhttp.responseText);
var ip = data.ip_addr;
VBScript
Dim xmlhttp, ip
 
Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
xmlhttp.open "GET", "http://ifconfig.me/ip", False
xmlhttp.send
 
ip = xmlhttp.responseText

Thursday, 5 January 2012

Artist/Album Info in Foobar2000

foobar2000 is perfect mediaplayer for Windows platforms. It is kind of those applications whose functionality is extendable simply adding plugins. One of these finest plugins is Run services that allows to run external applications and scrpts from within foobar2000.

I use Run services to view/edit information about albums or artists stored in plain text files. Let's consider how it is possible.

Monday, 10 October 2011

Версии Internet Explorer

Нечасто, но иногда на странице требуется программно определить какой же браузер и какой версии используется. Для этого существует несколько способов определения.

Tuesday, 12 July 2011

parseDate

Функция преобразует дату, заданную строкой, в количество миллисекунд относительно базового времени, и возвращает его. Строка должна содержать дату и время в определенном формате. Функция аналогична стандартному методу Date.parse. Отличие заключается в том, что корректно обрабатывает строки, содержащие миллисекунды.

Sunday, 1 May 2011

Обмен данными и объектами между скриптами

Однажды на Сером форуме шло обсуждение как можно осуществить обмен данными между скриптами. Идея основана на создании нового экземпляра, наследуемого от интерфейса IWebBrowser2 (ссылка: IWebBrowser2 Interface). Объект хранит в себе данные даже после завершения всех скриптов, практически как буфер обмена, и может служить как средство обмена данными и объектами между скриптами.

Friday, 18 March 2011

Функция вывода разницы во времени

Часто на форумах встречается вопрос о реализации вывода разницы во времени в формате "количество дней, часов, минут и секунд".

Sunday, 26 December 2010

JavaScript html entities

Несколько дней назад мой коллега попросил меня помочь реализовать код вставки специальных символов, выраженных их сущностями [1]:

var original = 'string with guillemets (standard quotation marks in Russia) « and »';

// do something to convert the original string to applicable characters
var entities = ...;

// insert the resulting string to the DOM
var textNode = document.createTextNode(entities);

Найденное решение [2] видимо очень известно во всем интернете. Однако это решение нам показалось не оптимально - довольно громоздкий код, который циклически перебирает и заменяет программно заданный набор сущностей. И этот код не использует внутренние возможности самого браузера - ведь браузер делает это автоматически. Но решение было найдено [3]. Этот код полностью нас удовлетворял - он очень мал, использует встроенные возможности и не содержит жестко заданного набора конвертируемых сущностей. Параллельно мы нашли решение для обратной задачи - перевод символов в их сущности [4].

В дальнейшем мы адаптировали оба решения в единый класс Entity. Мы обратили внимание на тот факт, что при переводе "двойных" и 'одинарных' кавычек они не преобразуются в свои сущности. Это не столь критично, но мы посчитали, что этот "недостаток" должен быть исправлен и добавили немного "ручной" работы.

Полное решение с комментариями можно найти по этой ссылке. Здесь можно посмотреть как это работает:


  1. Мнемоники в HTML (Википедия, англ.)
  2. html_entity_decode
  3. javascript equivalent of html_entity_decode
  4. PHP-функция: htmlentities

Friday, 6 August 2010

О веб-технологических котлетах

Давайте сразу разложим все котлеты по своим тарелкам - рыбные, мясные, прочие.

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

MySQL, PHP - серверные приложения, они готовят котлеты, ТОЛЬКО серверные котлеты (для приготовления этих котлет используются и другие приложения, но эти - самые распространенные). HTML, CSS, JavaScript - клиентские технологии и готовят только клиентские, такие рыбные котлеты. Здесь я немного слукавил. HTML это зразы, такие особые котлеты, которые готовятся на серверной стороне, но для клиентской стороны.

Если проводить другую, более правильную аналогию, то...

База данных это библиотека, хранилище информации, PHP, Perl, ASP - архивариус, он подготавливает новые данные к хранению и извлекает старые для показа. Веб-сервер - библиотекарь на абонементе, который просит архивариуса принять запрос, выполнить и вернуть отчет о выполненной работе. "Отчетом" может быть сообщение о том, что новые данные помещены в библиотеку, список данных, извлеченных из библиотеки или сообщение об отсутствии запрашиваемой информации. Браузер - клиент, которому данные понадобились или который доставил новые данные (альтруист, который готов поделиться своей информацией). Информацию клиент получает в стандартизированной форме - книга, определенного формата, состоящая из сшитых тетрадей, обернутых в обложку, либо это набор свитков, либо пачка каменных скрижалей -стандарт HTML работает во всех браузерах, но у каждого есть свои маленькие особенности.

Однажды было решено, что каждый клиент библиотеки должен получать нужную ему информацию в определенном стандартизированном формате. Поэтому, чтобы все данные выглядели одинаково - красивый iPod, с красивыми обоями, любимыми рюшечками и с обязательным гламурным тачскрином - придумали способ, чтобы все это разнообразие облагородить и анимировать - CSS, JavaScript. CSS призван сделать из книги, свитка и скрижалей единообразный iPod, JavaScript придуман и облагорожен для того чтобы каждый iPad и iPaq и даже самый первый, простейший коммуникатор чувствовали себя iPod'ом.

Был придуман набор правил для каждой книги и скрижали, но не учли всех книг всех нестандартных форматов и всех скрижалей выше двух локтей в высоту и тяжелее пуда. А еще позволили каждой типографии и каждому резчику по камню иметь свое представление того, как должен выглядеть этот iPod на самом деле. Отсюда и пошли разногласия в представлении каждой стрижали и каждого свитка как Слово Божие должно представляться и анимироваться. Но не все так плохо, появились кудесники (дизайнеры с верстальщиками, и программистами), которые нашли способы, чтобы заставить каждую скрижаль и свиток показывать (CSS-hacks) и анимировать (JavaScript-frameworks) единообразно. Да так, что большинство и не задумывается о ма-а-аленьких различиях. В основном... Но если приглядется... то как не чисть рыбу а кости-то все равно в котлету попадут.

Tuesday, 27 April 2010

Monday, 29 March 2010

Windows Scripting Command Interpreter

Консольный интерпретатор JS/VBS-скриптов в автоматическом и интерактивном режимах.

Wednesday, 17 March 2010

Y-combinators

Tuesday, 16 February 2010

Hello, World!

with (love) {
    .from("Siberia")
    .say("Happy Birthday!");
}

Friday, 12 February 2010

CMD/BAT A few useful routines

Analogues of pwd, basename and dirname.

Thursday, 28 January 2010

CMD/BAT: Repeat a string multiple times

If you want to get a string repeated multiple times -- you can use this routine. I have realised this as an attempt to implement this optimal algorithm using CMD/BAT only. It accepts three arguments: the name of a variable to store the resulting string, the multiplier (number of time the input string should be repeated), and the input string.

Monday, 14 December 2009

MsgBox / InputBox in JScript

Unfortunately JScript does not have several useful features available in VBScript. The most famous things are MsgBox and InputBox. The following code makes them available in JScript too.

Wednesday, 11 November 2009

IEEE754 converter

Tuesday, 3 November 2009

Cross-platform date/time definition

Earlier here (in Russian) i have investigated ways how to obtain date and time parts using the CMD.EXE features. After that here (in Russian too) i have simplified this way until two lines of a code. But both ways are platform-dependent - the order of date parts depends on the locale settings.

Recently i found the excelent link (in Russian too) with the description how to obtain the subject platform-independently.

I slightly modified the established method and present it now.