Написать письмо   
 
logo
 
Snippy
Сборник
примеров кода
Алгоритм вычисления дней до дня рождения следующий:
  1. Сравниваем текущий номер дня в году с номером дня в году для дня рождения
  2. Если день рождения еще в этом году не наступил - то кол-во дней считаем как разницу между текущим номером дня в году и днем рождения
  3. Если день рождения уже прошел, то прибавляем к разнице еще кол-во дней в текущем году

Читать дальше...


if [ -f file_name ]; then echo "File exist" else echo "File not found" fi



Решил изучить джойны кроме обычных JOIN, LEFT JOIN и RIGHT JOIN.

MySQL еще предлагает два - NATURAL и STRAIGHT_JOIN (хотя второй представляет собой инструкцию оптимизатору, а не другую логику объединения таблиц).
Про них хорошо написано здесь.

Еще есть FULL OUTER JOIN, который MySQL'ом не поддерживается, кратко про него на википедии.

Ну а здесь можно посмотреть визуальное представление работы джойнов, кроме NATURAL.



Проблема актуальна для Windows-платформы.

Потребовалось возможность программно объединять несколько mp3-файлов в один - реализации на питоне, к сожалению не нашел.

Меня даже устроило бы выполнение данной задачи через стороннее консольное приложение, но на мое удивление подобных нормально работающих приложений под Windows не нашлось - возможно причина в том, что эти приложения изначально разработаны под *nix и под Windows не всегда работали корректно (исходные файлы могли оказаться битыми, у некоторых бились теги и неправильно определялась длина звучания, некоторые корректно обрабатывали mp3 с постоянным битрейтом и некорректно с переменным).

Мною были опробованы следующие приложения: mp3wrap, mp3DirectCut, mpgtx.

Решение пришло в виде библиотеки NAudio для .Net, которую можно легко использовать под Python, правда не под обычный, а под IronPython.

Код можно посмотреть здесь.



XDebug удобно использовать в режиме profiler_enable_trigger=On, то есть когда профилирование не ведется постоянно, а включается только в том случае, если в запросе передан параметр XDEBUG_PROFILE.

Обычно достаточно добавить этот параметр в адресную строку, а при отладке форм, приходится править уже код формы - добавляя параметр XDEBUG_PROFILE в action формы или в качестве элемента формы. Это неудобно и отнимает время, поэтому предлагаю вам воспользоваться простеньким букмарклетом, который добавит к всем формам на странице параметр XDEBUG_PROFILE.
Читать дальше...


Начал изучать фреймворк Django, и конечно изучение начал с поиска подходящей книги - в итоге был найден DjangoBook, затем перeвод DjangoBook на русский, затем из-за того что неудобно читать с монитора нашел тот же перевод скомпилированный в формат PDF из формата DocBook.

Не знаю по какой причине, данный PDF ну очень долго рендерится на электронной читалке (Sony PRS-600)- перелистывание страницы достигало 5 минут!
В формате ePub данную книгу я не нашел, но на сайте где я скачал PDF лежала хорошая инструкция по компилированию данной книги кроме PDF еще и в ePub, что я собственно и сделал. (Если захотите скомпилировать сами, учтите, что в инструкции не сказано что необходимо выгрузить из репозитория саму книгу и в самой книге необходимо будет поправить chap08.xml - он содержит ошибки XML-разметки)
Кроме этого я встроил в книгу шрифт понимающий кириллицу, без него на некоторых читалках (в частности на моей PRS-600) вместо русских символов отображаются знаки вопроса.

Если вы не пользуетесь линуксом или просто хотите сэкономить время - Скачать DjangoBook на русском в формате ePub.



Первым делом смотрим лог индексирования, если лог заканчивается фразой unsorted clattr portion, то эта заметка Вам поможет.

По-умолчанию индексатор Яндекс.Сервера пишет индексы во временную директорию, называется она newindex, а после окончания индексации переносит индекс из временной директории в директорию индекса конкретного сайта. Если прошлая индексация к примеру завершилась аварийно - файлы индекса во временной директории остались, именно это и имеет в виду ошибка unsorted clattr portion - удаляем все файлы из директории newindex и запускаем индексацию заново.



В силу ряда причин время на компьютере может сбиваться.
Чтобы установить точное время можно синхронизироваться с одним из NTP-серверов - вот список.

В Linux для этих целей можно использовать специальный пакет ntp.
Читать дальше...


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


Простой парсер для файлов в формате Bencode, который используется для кодирования .torrent файлов.
В примере буде показано как извлечь список файлов и их размер из .torrent файла.
Читать дальше...


Данный класс библиотек облегчит Вам жизнь, если Вам будет необходимо произвести некоторые действия на удаленном сайте, такие как:
  1. просмотр страниц
  2. извлечение данных со страниц
  3. заполнение и отправка форм

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

Помочь в этом Вам смогут библиотеки:
  1. Mechanize - практически эмулятор браузера (без поддержки JavaScript, к сожалению) - Статья на русском
  2. Beautiful Soup - XML/HTML парсер - Перевод документации
  3. ClientForm - библиотека заточена для работы с формами




Python не имеет стандартной библиотеки для работы с Rar-архивами, но имеется сторонняя библиотека для этих целей - RarFile
В простом примере, я покажу, как работать с данной библиотекой.
Мы откроем архив, найдем первую директорию в корне архива и извлечем ее.
Читать дальше...


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

Способ попроще, конечно же, основан на анализе строки User-Agent.
Ниже приведенный код как раз использует этот метод, плюс еще несколько других нюансов и способен с большой долей вероятности определить является ли браузер мобильным.
Читать дальше...


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

На хабре есть небольшая статья, в которой хорошо расписано как использовать в своей работе партицирование.



В примере мы импортируем файл с классом в основную программу по его имени, динамически инстанцируем класс, и у полученного объекта класса динамически вызовем метод
Читать дальше...


В примере показан способ получения и сохранения кукисов в файл с использование библиотеки cookielib
Читать дальше...


В JavaScript'е при присваивании переменной массива или объекта происходит создание ссылки на объект(массив).
Ниже приведены два примера, используя которые можно создать копию объекта массива.
Читать дальше...


Неудивительно, что Internet Explorer не поддерживает отображение потокового видео в формате MJPEG, в то время как остальные браузеры его давно поддерживают.
Но исправить этот недостаток можно, используя специальный ActiveX от компании Axis Communications amc.cab.
Читать дальше...


CodeIgniter предоставляет неплохие возможности по обработке ошибок, но мне они показались недостаточными по следующим причинам:

  • отсутствует возможность обработки исключений
  • отсутствует возможность уведомлять администратора сайта о возникающих ошибках через почту
  • довольно скудная информацию о возникающих ошибках (в фреймворке с которым я работал раньше текст ошибки дополняется дампом глобальных переменных, что очень сильно облегчает процесс отладки, хотелось бы подобную схему увидеть и в CodeIgniter)

Будем это исправлять =)


Читать дальше...


Первый способ основывается на регулярных выражениях и взят из библиотеки Prototype.
Второй способ основан на том, что при попытке получить объект из его текстового представления будет возникать ошибка, если формат представления некорректен.
Читать дальше...


Как узнать длину текста в FCKEditor ?
Используйте следующий небольшой код:
Читать дальше...


Естественно только для трансформации в PHP :)
Читать дальше...


C помощью данного скрипта можно быстро рассортировать фотографии по датам.
Дата создания фотографии берется из EXIF.
Директории фотоархива будут иметь следующий формат: photos/2009/20090628.
Читать дальше...


Две проверки осуществляется посредством регулярных выражений, еще одна посредством функции filter_var.
Читать дальше...



Многие мобильные телефоны позволяют снимать видео на встроенную камеру и сохранять его в формате 3gp.
Для работы с видео и звуком под Linux есть как минимум 2 классных инструмента, mencoder и ffmpeg.
Ниже представлены три способа конвертирования.
Читать дальше...


[ 1 ] [ 2 ] [ 3 ] [ 4 ] ... Следующая