2009-07-10

Как сделать картинку без картинки

Обнаружил забавное, оказывается можно на стороне клиента показывать картинку не загружая с сервера бинарник из файла:

<img src="data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGP
C/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IA
AAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1J
REFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jq
ch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0
vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />
ul.checklist > li.complete { margin-left: 20px; background:
  url
('data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAA
ABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/5
8ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/A
FGGFyjOXZtQAAAAAElFTkSuQmCC'
) top left no-repeat; }

отсюда

 

Коментариев: 1

 
  2009-07-02

Скругленные углы в FF и Safari

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

Здесь описаны примеры как в мозиле и фаерфоксе добиться скруглённых уголков. Все предельно просто:

W3C has offered some new options for borders in CSS3, of which one is border-radius. Both Mozila/Firefox and Safari 3 have implemented this function, which allows you to create round corners on box-items. This is an example:

пользователи Mozilla/Firefox и Safari 3 увидят прямоугольный бокс со скругленными углами.

 Код который это делает выглядит следующим образом:

 <div style=" background-color: #ccc;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border: 1px solid #000;
padding: 10px;" >

Жаль IE пока такое себе не позволяет.

 

Коментариев: 1

 
  2009-06-28

Синтез Речи под Линукс

На платформе Windows есть замечательная штука называемая Speech API которую я использую чтобы начитывать книжки в mp3 и потом слушать с мобильника. Здравый смысл подсказывает что под Линукс должна быть  своя система для синтеза голоса, и такая система действительно есть - это festival.

Под Ubuntu festival ставится при помощи стандартной системы установки пакетов. Однако русского языка в дистрибутиве Убунты я не нашел. Однако поискав в Интернете нашел что некие ребята разработали русский голос для festival.

Скачал дебиановский пакет, убунтовый почему то не скачался. Попробовал...

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

В общем до практического использования festival оказался мне не пригоден.

Попробовал установить Speech API и Говорилку  (ее я использую под Windows) под Wine и... о чудо. Программа запустилась. И говорит! Сейчас поставил синтезировать очередную вещь Юрия Никитина... Пока работает без сбоев, посмотрим доделает ли до конца... Под Виндовс она что греха таить глючит, поэтому приходится файл скармливать по кусочкам, будет смешно если под Wine она окажется стабильней...

P. S. Доделал, субъективно прграмма работала подольше чем под виндой, по какой-то причине в настройках Говорилки оказалась заблокированной настройка выбора размера части поэтому книжка оказалась порезена на куски по 16 мегов, не критично, хотя обычно я выбираю побольше. Качество синтеза я на слух отличить не смог, хотя при работе на динамики Wine режет частоты очень сильно. В случае c mp3 это не критично... Еще под вайном не работает буфер обмена - думаю из-за utf8, но думаю можно покапаться в настройках.

 

Оставить комментарий

 
  2009-06-17

Настройка Domain Keys для cpanel

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

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

Одним из путей решения данной проблемы является идентификация пользователя по имени домена которому принадлежит адрес электронной почты. При этом в DNS запись домена добавляется некая информация позволяющая идентифицировать почтовое сообщение. В настоящее время получили широкое распространение две технологии работающие по такому принципу Yahoo Domain Keys (DK) и Sender Policy Framework (SPF). Принцип действия DK основывается на алгоритме RSA  — на сервере отсылающем почту хранится пара ключей открытый и закрытый. При этом открытый ключ публикуется в TXT DNS записи, а закрытый используется для подписывания email сообщения. При этом при приеме сообщения клиентское приложение или MTA способны проверить правильность электронной подписи и сделать вывод о подлинности отправителя.
Если вы являетесь владельцем выделенного или виртуального выделенного сервера с установленной WHM/CPanel то то для того чтобы  добавить DK к вашей исходящей почте достаточно выполнить одну простую команду в консоле.

/usr/local/cpanel/bin/domain_keys_installer [username]

Где [username] - имя пользователя - владельца домена.


При этом cpanel выполнит за вас все необходимые процедуры - создаст пару RSA ключей и настроит MTA для работы с DK.
Чтобы убедиться в том что система настроена правильно можно послать самому себе тестовое сообщение. При этом в заголовках полученного письма будет добавлен примерно такой заголовок

DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=yoursite.com;
    h=Received:To:Subject:From:Content-Type:Content-Transfer-Encoding:Message-Id:Date; b=txGKMRa7OGMPvnwb97AR...



При этом может оказаться что при посылке сообщения через PHP заголовка в письме может не оказаться.

Дело все в том, что для корректной работы в письме оба обратных адреса должны принадлежать одному и тому же домену. Как правило это не так. PHP по умолчанию ставит обратный адрес прописанный в сисетме. Для того чтобы задать другой адрес можно воспользоваться пятым аргументом команды mail.

mail($email, $subject, $content, $headers,'-f bounce@yoursite.com');


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

Например если для отправки вы захотите использовать не свой SMTP сeрвер а SMTP своего интернет провайдера то ваши письма будут уходить не подписанными и некоторые получатели могут посчитать это попыткой их фальсификации. Этот метод также мало поможет если вы попадете в черные списки — DK в этом случае лишь дополнительно подтвердит, что вы  — это вы. Поэтому при принятии решения об использовании DK нужно принимать во внимание кто будет является потенциальным получателем вашей корреспонденции.

 

Оставить комментарий

 
  2009-06-10

Знак параграфа аськи код

Странная фраза находится в top10 поисковых запросов google analytics - "знак параграфа аськи код". Что за аська такая? И тут до меня дошло! ASCII код! Дык понятно теперь, вот здесь я собираю полезные HTML коды. И знак параграфа там тоже есть...

 

Коментариев: 1

 
  2009-06-08

Автозаполнение в формах

При заполнении многочисленных форм на различных страничках иногда приходится по много раз вводить одни и те же значения - емайл адреса, пароли. Для облегчения заполнения форм разработчики браузеров придумали автозаполнение. Автозаполение позволяет значительно облегчить и ускорить набор часто повторяющихся значений.

Однако бывают случаи когда автозаполнение не нужно и даже вредно, например при заполнении формы с номерами кредитных карт, или же ести вы хотите сделать свою версию подсказок при наборе текста в форме - в этом случае стандартное автозаполнение должно быть отключено.

Отключить автозаполение можно добавив атрибут autocomplete="off" причем поставить его можно как к тегу FORM так и к тегу INPUT.

Все замечательно, однако атрибут autocomplete нестандартный и если вы любите создавать валидный код то такой вариант вам не подойдет.

Нельзя ли отключить автозаполнение посредством JavaScript? Замечено, что простым присваиванием значения autocomplete="off" к объекту DOM автозаполнение не убирается поэтому многие разработчики продолжают пользоваться введением атрибута в разметку — лучше поломать валидность чем секьюрность.

Однако на днях нашел элегантнейшее решение позволяющее оставить код валидным и отключить автозаполнение:

[domelement].setAttribute('autocomplete','off');

Свойства элементам DOM можно присваивать не только напрямую но и посредством метода setAttribute и это более рекомендумемый способ. Указанный метод работает в FF и IE в других пока не тестировал.

 

Коментариев: 4

 
  2009-06-05

Как получить список координат из Google Maps

Здесь можно найти исходники и примеры на эту тему.

 

Оставить комментарий

 
  2009-06-01

Выравнивание таблицы по центру

Время от времени на HTML страничках наблюдаю такую конструкцию:

<center>
<table>
...
</table>
</center>

Так делать неправильно - тег center устаревший и не рекомендуется с употреблению:

The CENTER element is exactly equivalent to specifying the DIV element with the align attribute set to "center". The CENTER element is deprecated [p.38] .

Как тогда выравнять табличку по центру? Да очень просто:

<table style="margin:0 auto">
...
</table>

Указанный код работает во всех основных браузерах.

 

Оставить комментарий

 
  2009-05-20

Переадресация сервера с www на сервер без www

Задача, есть сайт, допустим www.maxistar.ru, хотим чтобы при заходе на www.maxistar.ru пользователь перебрасывался на maxistar.ru автоматически, ну или же наоборот, кому как нравится.

Как любую техническую задачу эту задачу можно решить несколькими способами. Один из вариантов написать функцию на PHP, однако сегодня нашел рецепт с использованием mod_rewrite:

RewriteEngine on

RewriteCond %{http_host} ^www.maixstar.ru [nc]
RewriteRule ^(.*)$ http://maxistar.ru/$1 [r=301,nc]

 

Коментариев: 1

 
  2009-05-06

HTML - спецсимволы

Так на всякий случай, может пригодиться:

Название Символ Числовой код Мнемонический код
Прямая кавычка  “ &#34 &quot
Амперсанд  & &#38 &amp
знак «меньше»  < &#60 &lt
Знак «больше»  > &#62 &gt
Торговая марка &#153  &trade
Неразрывный пробел   &#160 &nbsp
Цент  ў &#162  &cent
Фунт  Ј &#163  &pound
Знак валюты  ¤ &#164  &curren
Йена  Ґ &#165  &yen
Вертикальная строка  ¦ &#166  &brvbar
Знак параграфа  § &#167  &sect
Знак копирайта  © &#169  &copy
Знак отрицания  ¬ &#172  &not
Знак "зарегестрировано" ® &#174 &reg
Знак градуса  ° &#176 &deg
Знак "минус"  −   &minus
Длинное тире &#150;
Знак "плюс минус"  ± &#177  &plusmn
Знак "микро"  µ &#181 &mikro
Знак абзаца  ¶ &#182 &para
Точка-маркер  · &#183  &middot
Степень 1 (номер)  № &#185 &sup1
Левая типографская кавычка  « &#171 &laquo
Правая типографская кавычка  » &#187 &raquo
Знак умножения / кавычки/  * &#215 &times
Знак деления  / &#247 &divide

 

 

Оставить комментарий