pause  

Posted

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

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

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

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

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

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

Posted in ,

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

metanews


Add to Google