Home

Способы красивого завязывания шнурков

Jul. 4th, 2008 | 08:20 am

Для разнообразия - совершенно не ITшная заметка. Случайно увидел эти картинки и решил поделиться.
Развлечение для владельцев ботинок :).

Способо завязывания шнурков #1 Способо завязывания шнурков #2 Способо завязывания шнурков #3 Способо завязывания шнурков #4 Способо завязывания шнурков #5 Способо завязывания шнурков #7 Способо завязывания шнурков #6

Остальные способы можно найти тут (несколько десятков вариантов, однако).

Originally published at This Might Be Useful. Please leave any comments there.

Link | | Add to Memories | Tell a Friend

Простое создание DVD-рипов в Linux

Jul. 3rd, 2008 | 08:04 am

В качестве продолжения описания темы конвертирования видео привожу простой способ создания DVD-рипов в Linux.

Данная комманда берет первый раздел с DVD и конвертирует его в flv:

mencoder dvd://1 -ofps 25 -o a.flv -of lavf -oac mp3lame -lameopts abr:br=256 -srate 44100 -ovc lavc -lavcopts vcodec=flv:keyint=50:vbitrate=900:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf pp=lb,scale=512:384,harddup

Если нужно выдернуть определенную главу, можно добавить параметр -chapter.
В случае, если содержимое DVD скопировано на жесткий диск, нужно указать путь к файлам: -dvd-device /path/to/the_folder/

mencoder dvd://1 -chapter 1 -dvd-device /path/to/the_folder/ -ofps 25 -o a.flv -of lavf -oac mp3lame -lameopts abr:br=256 -srate 44100 -ovc lavc -lavcopts vcodec=flv:keyint=50:vbitrate=900:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf pp=lb,scale=512:384,harddup

На предмет того, что какой параметр значит и какие они бывают, советую почитать man по mencoder.

Выходной формат, понятное дело, может быть не только flv :).

Originally published at This Might Be Useful. Please leave any comments there.

Link | | Add to Memories | Tell a Friend

Уменьшаем нагрузку на сервер - кэширование данных для ускорения генерации страницы

Jul. 2nd, 2008 | 09:21 am

Представьте себе проект, в котором достаточно сложная структура базы данных. Да и собственно данных много. И для генерации страницы постоянно необходимо примерно одним и тем же образом вытягивать и обрабатывать массу информации. В моем случае это дело занимало до 25 секунд на весьма неслабой машине. Для оптимизации процесса было принято решение кэшировать данные. Само собой, это снимает только часть проблем. Но ведь кэш можно еще и генерировать автоматически, верно? :).
В общем, ниже я приведу небольшой класс, сделанный за несколько минут. Кэширует массив, в котором хранится основной dataset. По умолчанию считается, что данного REQUEST_URI dataset постоянен. Но есть параметры для изменения такого поведения.

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

Полноценная функция для получения IP-адреса клиента

May. 9th, 2008 | 11:14 am

Небольшая, но очень полезная функция для получения IP-адреса клиента. Основной плюс - в отличии от большинства решений учитывает не только REMOTE_ADDR.
Собственно публикую чтобы не потерять. А то регулярно ищу это дело по старому коду :).

PHP:
  1. function GetIP() {
  2.   if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
  3.      $ip = getenv("HTTP_CLIENT_IP");
  4.   else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
  5.      $ip = getenv("HTTP_X_FORWARDED_FOR");
  6.   else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
  7.      $ip = getenv("REMOTE_ADDR");
  8.   else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
  9.      $ip = $_SERVER['REMOTE_ADDR'];
  10.   else
  11.      $ip = "unknown";
  12.   return $ip;
  13. } // GetIP

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

Реализация аналога LIMIT из MySQL в MS SQL

May. 8th, 2008 | 11:51 am

В MS SQL отсутствует LIMIT в SELECT'е. Это поразительно и глупо, но это так. И после MySQL это невероятно раздражает. Поэтому было найдено решение проблемы. Сравнительно медленное, но зато работающее не только в новых версиях MS SQL (где есть row_number(), облегчающий жизнь). Итак, для того, чтобы сделать то же, что в MySQL делает следующий запрос:

SQL:
  1. SELECT *
  2. FROM `some_table`
  3. LIMIT 10, 20

в MS SQL надо написать:

SQL:
  1. SELECT top 20 * FROM [some_table]
  2. WHERE [primary_key_field] NOT IN
  3.   (
  4.     SELECT top 10 [primary_key_field]
  5.     FROM [some_table]
  6.     ORDER BY [primary_key_field]
  7.   )
  8. ORDER BY [primary_key_field]

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

How to wait less on Depositfiles

May. 6th, 2008 | 11:48 am

Уже давно обратил на это внимание, не любят на Depositfiles русских :) Если выбран русский язык на сайте, то при скачивании очередного файла ждать приходится 99 секунд:

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

Календарь латвийских именин

Apr. 28th, 2008 | 11:05 am

База именин для латвийских имен. Формат довольно простой и грубый, но использовать можно. Поле `date` это дата в формате [m]mdd, `name` - это имя в латышском написании, а `simplename` - упрощенная версия имени, в которой длинные буквы продублированны, а смягченные заменены на их твердые аналоги. Дамп c MySQL 5.0 сервера.

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

Linux: загрузка в single-user mode. Чиним систему или восстанавливаем забытый пароль root.

Apr. 25th, 2008 | 09:04 am

Иногда бывает, что Вы забыли пароль root’а. Или, например, перестала работать комманда sudo (например, из-за отсутствия правильного описания локалхоста /etc/hosts). Ну или еще что-нибудь нехорошее случилось. И привычный multi-user mode сломался.
Одним словом, понадобилось стать root’ом, а нормальными средствами это не получается. В этом случае пригодится single-user mode.

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Link | | Add to Memories | Tell a Friend

PHP, GD и прозрачность GIF

Apr. 21st, 2008 | 10:05 am

При изменении размера GIF изображений в PHP с помощью библиотеки GD, цвет прозрачности заменяется на черный. Это не баг, это жизнь, но исправить это можно :) Для этого надо определить индекс цвета прозрачности у исходного изображения, и вставить его в палитру нового, уменьшенного, изображения. Код который это делает приведен ниже, сразу после него можно выполнять знакомый ImageCopyResampled($dst_image, $src_image, …)

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

Откройте для себя возможности директории /proc

Mar. 4th, 2008 | 09:13 am

Директория /proc - это странный “зверь”. В действительности он не существует, хотя его можно использовать. Его файлы нулевой длины не являются ни двоичными, ни текстовыми, и все же их можно исследовать и выводить на экран. Эта своеобразная директория содержит все детали вашей Linux-системы, включая ядро, процессы, и параметры конфигурации. Изучая директорию /proc, вы узнаете как работают команды Linux, и даже сможете решить некоторые административные задачи.

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Link | | Add to Memories | Tell a Friend

Создание PDF-файлов с помощью PHP и FPDF

Feb. 22nd, 2008 | 09:39 am

Большинство web-сервисов экспортируют данные в разных форматах для дальнейшего использования. Данная статья о том, как экспортировать данные в pdf-формате.
Хотя многие знают как это делать, я опишу кратко для тех кто не знает.

PHP позволяет нам генерировать файлы в формате pdf налету. FPDF - это бесплатный код на языке php, позволяющий создавать документы в формате pdf и производить с ними различные манипуляции.

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

Skype. Отключаем режим Supernode.

Jan. 8th, 2008 | 10:36 am

Supernode - In peer-to-peer networking, a supernode works as one of that network’s relayers and proxy servers, handling data flow and connections for other users. This usually requires a fairly fast Internet connection with a lot of bandwidth and a modest amount of CPU time, as a lot of data will invariably pass through the supernode and needs to be processed.

Some peer-to-peer designs allow for the user to choose whether they ever want to be treated as supernodes; others do not. Skype by default is configured as a supernode, an issue that has caused controversy.

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

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

Удобный bookmarklet для верстальщиков

Jan. 7th, 2008 | 03:03 pm

Благодаря коллеге-верстальщику набрел на очень полезный bookmarklet Design, позволяющий рисовать поверх страницы сетку для проверки правильности размещения элементов, измерять расстояния между элементами (а также просто выводить линейку по краям страницы) и т.п. Работает это дело в MSIE7, Firefox 2+, Safari 2.0.4+ и Opera 9.2+.

Originally published at This Might Be Useful. Please leave any comments there.

Tags: ,

Link | | Add to Memories | Tell a Friend

Отдаем pdf-файл браузеру. Да так, чтобы MSIE его тоже принимал.

Jan. 7th, 2008 | 02:54 pm

Официальный пример от php.net как отдать PDF-файл браузеру выглядит так как показано ниже.

PHP:
  1. <?php
  2. // We'll be outputting a PDF
  3. header('Content-type: application/pdf');
  4.  
  5. // It will be called downloaded.pdf
  6. header('Content-Disposition: attachment; filename="downloaded.pdf"');
  7.  
  8. // The PDF source is in original.pdf
  9. readfile('original.pdf');
  10. ?>

И он работает! Но не в Internet Explorer (6 и 7). IE пишет свою обычный blah-blah Internet Explorer was unable to open this site. The requested site is either unavailable or cannot be found. Please try again later. В Microsoft kb есть заметка о похожей проблеме при использовании SSL. Но оказалось что проблема не только при передаче через SSL, но и в обычной жизни тоже. Microsoft предлагает извращенные решения типа сервис паков и копания в реестре, но можно сделать проще. Добавить к вышеперечисленным заголовкам парочку, управляющую кешем. Не знаю точно что это делает, но заработало :)

PHP:
  1. header('Cache-Control: maxage=3600');
  2. header('Pragma: public');

Заметку прислал mougly aka d1pr3d

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

Советы и подсказки по bash

Dec. 14th, 2007 | 07:34 am

Для непосвященных, bash - командная оболочка по умолчанию во многих Linux-дистрибутивах, включая Fedora, Ubuntu, Redhat и др. Используя операционную систему Linux-семейства, вы, вероятно, используете и bash. По этой причине ниже я собрал несколько часто возникающих проблем с bash и простые способы их решения.

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Link | | Add to Memories | Tell a Friend

Оптимизация работы с SSH с помощью bash-completion

Dec. 10th, 2007 | 09:05 am

Bash-completion это очень интересная особенность последних версий оболочки bash. Она позволяет создавать свои, настраиваемые схемы автодополнения команд.

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

Заходим по SSH без паролей (используя пару ключей)

Nov. 23rd, 2007 | 08:56 am

На работе приходится работать с несколькими серверами используя ssh. Некоторые неудобства доставляет то, что часто надо подключаться и вводить пароль. В принципе, можно держать открытыми несколько терминалов и проблема отпадет. Но для каких-то автоматических заданий так не особо удобно. Поэтому было найден более удобный способ :).

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Link | | Add to Memories | Tell a Friend

MySQL функция для конвертирования bigint IP адресов в удобоваримые varchar

Nov. 23rd, 2007 | 08:47 am

Многие хранят IP адреса в формате bigint, например IP2Location. А если проект использует разные технологии для frontend и admin (Java и PHP как в моем случае) интерфейсов то нет необходимости реализовывать функцию в обоих языках, ее можно написать на SQL.

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Tags:

Link | | Add to Memories | Tell a Friend

Избавляемся от самопроизвольно появляющейся Error Console в Firefox

Nov. 13th, 2007 | 09:54 am

Некоторое время назад было замечено, что при открытии pop-up окошка с помощью JavaScript в Firefox помимо самого окошка выскакивает Error Console. Причем вне зависимости от того, есть ошибки или нет. Это не могло не раздражать.
Оказалось, что проблема возникает в случае, если ссылка на открытие окошка выглядит так: <a href="javascript: OpenSomeWindow();">. Соответственно, решение выглядит так: <a href="javascript:void(0)" onclick="OpenSomeWindow();">.

Originally published at This Might Be Useful. Please leave any comments there.

Link | | Add to Memories | Tell a Friend

Отключаем нежелательные HTML-элементы с помощью CSS

Nov. 12th, 2007 | 08:23 am

Часто, когда мы сдаем проект клиенту, мы теряем контроль над HTML-кодом. Иногда клиент использует CMS (Системы Управления Контентом), которые дают ему полный контроль над теми или иными частями HTML-кода. Иногда клиент просто использует наши темплейты для вывода своего кода в документ.

В большинстве случаев довольно тяжело проинформировать клиента о том, как использовать темплейты или CMS, которые вы ему предоставляете, а иногда просто неприемлемо толкать пламенные речи о семантической верстке и веб-стандартах. Клиент может/будет использовать “старую, добрую разметку”, ту, которую он знает, просто потому что она работает и выглядит так как он привык. Скорее всего в ней будут присутствовать нежелательные (deprecated) тэги и атрибуты, такие как bgcolor, align и “вечный” font. Эта статья о том, как блокировать нежелательные HTML-тэги с помощью CSS, тем самым аккуратно направляя клиента в правильном направлении.

Read the rest of this entry »

Originally published at This Might Be Useful. Please leave any comments there.

Link | | Add to Memories | Tell a Friend