pause

18.07.2009 (12:19 дп) – Filed under: trash

Пауза. Или пост заполняющий пустоту таймлайна.
Почему пауза ? Потому что доделываю большой проект и занят своими проектами.
За прошедшее время удаленной работы скопилось много экпириенса по software и wetware.
В частности в мире фриланса. Анонсирую прогноз своей деятельности или продолжаю анонс.

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

Наконец собралась небольшая команда, в которой хочется свернуть горы. (Да, приглашаю квалифицированых людей работать вместе). Команда – это прекрасно. Ключ к созданию команды – одноранговость и взаимопомошь.

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

P.S. Спасибо за внимание, рад любым положительным контактам.

Unicode and UTF-8. Рвем волосы на голове.

08.07.2009 (10:24 дп) – Filed under: codding,software

Unicode. Как много в этом слове. Сейчас использовать юникод в вэб приложениях – это уже не просто хороший тон, а стандарт.

Но с юникодом бывает много проблем, т.к. для начала наиболее расспространенные операционные системы используют «снаружи» однобайтовые кодировки и на этапе создания основных языков програмирования поддержка UTF не была заложена. Юникод был предложен как универсальная кодирвка в 1991 году, и в 1993 уже использовалась версия 1.1. Сейчас при слове «юникод» у большенства всплывает в голове аббревиатура UTF-8. Но честно говоря UTF-8 – это не юникод. Чуть более внимательно вчитавшись в определения можно подчеркнуть, что «Юникод» – это стандарт кодирования символов. А UTF-8 – кодировка, реализующая представление Юникода. Основная черта UTF-8 заключаеться в том, что первые 128 символов совпадает с ASCII, что дает обратную совместимость с ПО «не умеющим» юникод.

Всеже «Настоящим» юникодом считается UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE. Собственно первая версия кодирования юникода была 16-битной, с фиксированной шириной символа. Windows начиная с 2000 внутри себя использует UTF-16LE. В мире *nix принято использовать UTF-8.

И наконец о том, как все это касается нас. Редактирование файлов в нужной кодировке, темпаче если она отличается от системной становится не найтивной. Впрочем всегда решается удачным редактором, или толковым IDE. Для простых целей – это EditPro (win) и JOE (*nix). Тексты – это только пол беды. Оснавная беда – это языки програмирования. Про С/С++ говорить не имеет смысла, т.к. язык достаточно низкого уровня и собственно является основой для всего остального. А все остальное – это как минимум JAVA, Perl, PHP, Python, etc..

О некоторых тонкостях стоит рассказать. От простого к сложному.
JAVA – найтивно поддерживает юникод. JDK 1.5 полностью реализовывает стандарт Unicode 4.0.
PHP – впринципе при работе с UTF-8 не возникает никаких проблем. Пока речь не доходит до регулярных выражений и мультабайтных строчек. Есть несколько библиотек, которые решают возникающие проблемы, не считая iconv конечно. Собственно для поддержки всего рациона кодировок в PHP есть mbstring.
Perl - изначально работает на своей собственной кодировке, т.е. имеет внутренние представление текста. Впринципе при работе с однобайтными кодировками это не заметно, т.к. кодировка определяется автоматически. В остальных случаях её следует указывать для источника данных и для вывода. Тут неплохо об этом написано. Вообщем ясная документация дает все ответы:
http://perldoc.perl.org/functions/open.html
http://perldoc.perl.org/Encode.html.

Пример работы с разными кодировками в Perl:
open(SQLFILE, «<:encoding(UTF-16LE)", $SQL_files{$item})
$current_sql_query =~ s/\x{FEFF}//g; ## срезаем спецсимволы.
$current_sql_query_utf8 = encode(«UTF-8″,$current_sql_query);

Об остальных языках я пожалуй говорить не буду.
На закуску, настоящий юникод: http://www.unicode.org/~scherer/emoji4unicode/snapshot/full.html

Да, есть ещё одна забавная штука – юникод в виндовой консоле.
Ставим PowerShell, в нем помимо иных возможностей можно менять кодировку на лету:
$OutputEncoding = [System.Text.Encoding]::UTF8

Другие материалы:
http://docs.activestate.com/activeperl/5.10/lib/Encode/Unicode.html
http://www.utf8-chartable.de/
http://www.php.net/manual/en/regexp.reference.php
http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
http://www.mapbender.org/Encoding_UTF8/ISO8859-1#utf8_decode
http://webcollab.sourceforge.net/unicode.html