This Might Be Useful

Запускаем Google Gears на 64-bit Linux

January 30th, 2009 | автор: Filosoff | Firefox, Linux, Tweaking | 2 Comments »

Многие добавляют в своих сервисах поддержку Google Gears. В частности сейчас имеет место общий восторг по поводу добавления поддержки этой технологии в GMail, Google Reader и т.п. Кстати, Wordpress 2.7 тоже поддерживает работу с Google Gears.
И все было бы хорошо, но только вот Google не осилили создание версии для 64-bit Linux. В качестве решения они предлагают либо использовать nspluginwrapper (ненадежное, настабильное и глупое решение), либо применить неофициальный патч (хороший выход, только применять лень; кстати, непонятно почему Google не сделала 64-bit сборку с использованием этого патча).
Так вот, неизвестные добрые люди использовали упомянутый патч и выпустили исправленный плагин для Firefox. Забрать его можно тут или прямо на TMBU.info:

Для установки нужно открыть этот файл Firefox’ом (File -> Open File), в открывшемся окне нажать Install now и перезапустить браузер. Вам будет показано сообщение об ошибке (несоответствие архитектур), но плагин будет работать.

Примечание:

Google Gears — открытое программное обеспечение от Google (бета, лицензия BSD), позволяющее использование веб-приложений с помощью браузеров Mozilla Firefox,Google Chrome и Internet Explorer под GNU/Linux, Mac OS и Microsoft Windows в режиме оффлайн.

Специальный заставляет браузер работать с локальным кешем страниц (на основе SQLite), периодически синхронизируя кеш с онлайн источником.

Google gears представляет собой AJAX-API и работает только с веб-сайтами, специально поддерживающими этот сервис.

Источник: Wikipedia

Постовой: Недвижимость в Киеве и создание сайтов в одессе - это Вам не Японский форум.

Изменяем размеры картинки с сохранением прозрачности (PHP+GD)

January 30th, 2009 | автор: Filosoff | PHP | 1 Comment »

По умолчанию при изменении размеров полупрозраных (и прозрачных) картинок вместо прозрачного фона получается заливка цветом. Это негативно сказывается на внешнем виде изображения и нервах. Поэтому я расскажу, как сохранять прозрачность.
Итак, для этого нам понадобятся следующие функции:

  • imagecolorallocatealpha
    int imagecolorallocatealpha ( resource $image, int $red, int $green, int $blue, int $alpha)
  • imagealphablending
    bool imagealphablending ( resource $image, bool $blendmode)
  • imagesavealpha
    bool imagesavealpha ( resource $image, bool $saveflag)

Код в результате выглядит примерно так:

PHP:
  1. $imgInfo = getimagesize($img);
  2. $im = imagecreatefrompng($img);
  3. $newImg = imagecreatetruecolor($nWidth, $nHeight);
  4. imagealphablending($newImg, false);
  5. imagesavealpha($newImg,true);
  6. $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
  7. imagefilledrectangle($newImg, 0, 0, $nWidth, $nHeight, $transparent);
  8. imagecopyresampled($newImg, $im, 0, 0, 0, 0, $nWidth, $nHeight, $imgInfo[0], $imgInfo[1]);

Так что мою старую функцию можно доработать так, чтобы она сохраняла прозрачность картинок. Заодно и тип файла можно проверять не по расширению, а по тому, что вернет getimagesize (исходя из приведенного выше примера - это элемент $imgInfo[2]).

Постовой: Даже ребенок знает, что сделать сайт недостаточно, надо еще и найти качественный хостинг.

Вставка видео с YouTube в высоком качестве. Плюс список видов видео.

January 12th, 2009 | автор: Filosoff | HTML, Web | 2 Comments »

По умолчанию код для вставки видео, который предлагает YouTube, дает видео в низком (точнее, обычном) качестве.
Для того, чтобы вставить видео высокого качества нужно добавить в адрес записи "&ap=%2526fmt%3D18" (без кавычек). Обратите внимание, что в коде вставки адрес встречается дважды.

Например:

HTML:
  1. <object width="480" height="295">
  2.   <param name="movie" value="http://www.youtube.com/v/S1ZZreXEqSY&hl=en&fs=1&ap=%2526fmt%3D18"></param>
  3.   <param name="allowFullScreen" value="true"></param>
  4.   <param name="allowscriptaccess" value="always"></param>
  5.   <embed src="http://www.youtube.com/v/S1ZZreXEqSY&hl=en&fs=1&ap=%2526fmt%3D18" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed>
  6. </object>

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

Вообще, помимо варианта по умолчанию, доступны следующие виды качества видео (т.е. значения параметра fmt):

  • 6 - HQ flv (480 x 360, 30fps, 900KBps video Flash Sorenson, 44.1KHz 96 kbps Mono CBR audio MP3)
  • 18 - mp4 (480 x 360, 24fps, 512KBps video h.264, 44.1KHz 128 kbps Stereo audio AAC)
  • 22 - HD (1280 x 720, 30fps, 2000kbps video AVC, 232kbps audio AAC, 44.1khz stereo)

Эти параметры можно использовать и в ссылках на видео. Например: http://www.youtube.com/watch?v=S1ZZreXEqSY&fmt=18

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

Восстановление удаленных записей в mySQL из binlog

January 12th, 2009 | автор: Filosoff | Linux, SQL, Shell | No Comments »

Вчера я случайно удалил почти все записи из таблицы статистики просмотра видеозаписей Движущихся Картинок. Событие более чем печальное. До этого я предполагал, что восстановить удаленные записи практически невозможно. Оказалось, что можно. Если включены бинарные логи (для их включения в настройках mySQL надо указать параметр log-bin).
В результате некоторых раздумий получилась команда:
/usr/bin/mysqlbinlog --database=нужная_база_данных --start-datetime="2008-01-01 00:00:00" путь_ко_всем_binlog | tr "\t" " " | tr "\n" " " | tr ";""\n" | grep "INSERT INTO \`побитая_таблица\`" > p.sql

Параметр start-datetime содержит в себе дату, с которой вынимаем логи. Можно еще указать время остановки (в моем случае это было неактуально).
Далее нужно указать не просто путь к логам, а все файлы логов (например, /var/lib/mysql/lalala-bin.*).
Несколько tr'ов нужны потому, что запрос мой был многострочным, а надо было мне получать один запрос в одну строку.

В конечном счете в файле p.sql я получил нужные мне запросы. Единственное, что в конце строк не было точки с запятой. Это было исправное просто:
cat p.sql | sed "s/\"\)/\"\);/g" > p2.sq
Просто у меня каждый запрос оканчивался на ....")

Когда я попытался скормить запросы mySQL'у оказалось, что из-за того, что были удалены не все записи, начались проблемы с уникальностью некоторых полей. Чтобы не копаться в дампе руками, сделал так:
cat p2.sql | sed "s/INSERT INTO/INSERT IGNORE INTO/g" > p3.sql

И уже p3.sql успешно скормил mySQL'у.

Отсюда выводы: во первых, всегда делайте бекапы (как можно чаще), и во вторых всегда включайте логирование.

P.S. Конечно же из binlog'ов можно вытащить все, что делалось с базой. И Восстановить то состояние, которое нужно.

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

Заключаем в таги выделенный в textarea текст

December 23rd, 2008 | автор: Filosoff | JavaScript | 2 Comments »

В продолжение вчерашних манипуляций с текстом понадобилось вставлять в textarea таги. Причем не просто вставлять, а "брать" в таги выделенный текст. Соответствующая функция приведена ниже.

JAVASCRIPT:
  1. function insertTag(elem, tagstart, tagend) {
  2.   // Mozilla и другие вменяемые браузеры
  3.   if (elem.setSelectionRange) {
  4.     elem.value = elem.value.substring(0, elem.selectionStart) +
  5.                   tagstart +
  6.                   elem.value.substring(elem.selectionStart, elem.selectionEnd) +
  7.                   tagend +
  8.                   elem.value.substring(elem.selectionEnd, elem.value.length);
  9.   }
  10.   // MSIE
  11.   else {
  12.     var selectedText = document.selection.createRange().text;
  13.     if (selectedText != "") {
  14.       var newText = tagstart + selectedText + tagend;
  15.       document.selection.createRange().text = newText;
  16.     }
  17.   }
  18. } // insertTag

Постовой: Пройди iq тест узнай, на сколько ты умен! Если что - поможет лечение алкоголизма и частная наркологическая клиника одесса.
 Страница: 1 (всего: 26)  1  2  3  4  5 » ...  Последняя »