Блог #old-site

Мальта, март 2014. Вид со стены Мдины
Весна 2012. Германия — Франция — Италия. Швейцария
Тайланд, Индонезия, Сингапур (зима 2010). В Сингапурском зоопарке. Я и белый тигр :)
Москва-Берлин 2021. Я с Ольчуном в аэропорту на пути в Берлин
Ирландия, март 2015. Протест против взымания платы за воду
Исландия 2023.
Мальта, март 2014. Вид на Мдину
Март 2017. Берлин — Роттердам — Дюссельдорф. Вид на мост Эразма aka Erasmusbrug
Новый год 2008 (Норвегия, Швеция, Дания). Спальный район Осло
Берлин, Люббенау, Потсдам. Май 2018. Клумба-зонт
Перу и Боливия. Зима-весна 2011. Железная дорога
Берлин, Люббенау, Потсдам. Май 2018. Лодка в Люббенау
Зимний Берлин.
Лето 2008 (Куба). И еще раз я возле автописты
Тойфельсберг. %!s(<nil>)
Март 2017. Берлин — Роттердам — Дюссельдорф. Дюссельдорф
Прага, май 2017. Дорога со ступеньками
Новый Год 2009 (Амстердам). Знак
Первый Россиийский семинар по CMS Drupal. Друпликон и моя тень
Лето 2008 (Куба). "Пляж" у отеля
Новый Год 2009 (Амстердам). Амстердам, улица Дамрак, уличный артист
Ещё немного майского Берлина. %!s(<nil>)
Весна 2012. Германия — Франция — Италия. Страсбург. Наше посольство
Хорватия, Млини 2017. Млини, море
Лавандовые поля. %!s(<nil>)
Тенерифе.
Берлин, Люббенау, Потсдам. Май 2018. Ольчик в Потсдаме
Мальта, март 2014. Мдина
Весна 2012. Германия — Франция — Италия. Митинг в Берлине
Весна 2012. Германия — Франция — Италия. Я, Джульетта и мельница
Лавандовые поля. %!s(<nil>)

Шпаргалка по командам и хоткеям Unix

Стянуто отсюда: http://www.debian.org/doc/manuals/debian-reference/ch01.en.html

Хоткеи:

keydescription of key binding
Ctrl-Uстереть тест перед курсором (erase line before cursor)
Ctrl-Hстереть символ перед курсром (erase a character before cursor)
Ctrl-Dterminate input (exit shell if you are using shell)
Ctrl-Cterminate a running program
Ctrl-Ztemporarily stop program by moving it to the background job
Ctrl-Shalt output to screen
Ctrl-Qreactivate output to screen
Ctrl-Alt-Delreboot/halt the system, see inittab(5)
Left-Alt-key (optionally, Windows-key)meta-key for Emacs and the similar UI
Up-arrowstart command history search under bash
Ctrl-Rstart incremental command history search under bash
Tabcomplete input of the filename to the command line under bash
Ctrl-V Tabinput Tab without expansion to the command line under bash

Команды:

commanddescription
pwdвыводит текущую директорию (display name of current/working directory)
whoamiвыводит имя текущего юзера (display current user name)
idвыводит id текущего юзера (display current user identity (name, uid, gid, and associated groups))
file <foo>выводит тип файла, переданного в качестве аргумента (display a type of file for the file <foo>)
type -p <commandname>выводит расположение файла, вызывающегося при вводе команды (display a file location of command <commandname>)
type <commandname>выводит информацию о команде (display information on command <commandname>)
apropos <key-word>находит команды, связанные с переданным аргумеентом find commands related to <key-word>
whatis <commandname>display one line explanation on command <commandname>
man -a <commandname>display explanation on command <commandname> (Unix style)
info <commandname>display rather long explanation on command <commandname> (GNU style)
lslist contents of directory (non-dot files and directories)
ls -alist contents of directory (all files and directories)
ls -Alist contents of directory (almost all files and directories, i.e., skip .. and .)
ls -lalist all contents of directory with detail information
ls -lailist all contents of directory with inode number and detail information
ls -dlist all directories under the current directory
treedisplay file tree contents
lsof <foo>list open status of file <foo>
lsof -p <pid>list files opened by the process ID: <pid>
mkdir <foo>make a new directory <foo> in the current directory
rmdir <foo>remove a directory <foo> in the current directory
cd <foo>change directory to the directory <foo> in the current directory or in the directory listed in the variable $CDPATH
cd /change directory to the root directory
cdchange directory to the current user’s home directory
cd /<foo>change directory to the absolute path directory /<foo>
cd ..change directory to the parent directory
cd ~<foo>change directory to the home directory of the user <foo>
cd -change directory to the previous directory
</etc/motd pagerdisplay contents of /etc/motd using the default pager
touch <junkfile>create a empty file <junkfile>
cp <foo> <bar>copy a existing file <foo> to a new file <bar>
rm <junkfile>remove a file <junkfile>
mv <foo> <bar>rename an existing file <foo> to a new name <bar> (<bar> must not exist)
mv <foo> <bar>move an existing file <foo> to a new location <bar>/<foo> (the directory <bar> must exist)
mv <foo> <bar>/<baz>move an existing file <foo> to a new location with a new name <bar>/<baz> (the directory <bar> must exist but the directory <bar>/<baz> must not exist)
chmod 600 <foo>make an existing file <foo> to be non-readable and non-writable by the other people (non-executable for all)
chmod 644 <foo>make an existing file <foo> to be readable but non-writable by the other people (non-executable for all)
chmod 755 <foo>make an existing file <foo> to be readable but non-writable by the other people (executable for all)
find . -name <pattern>find matching filenames using shell <pattern> (slower)
locate -d . <pattern>find matching filenames using shell <pattern> (quicker using regularly generated database)
grep -e "<pattern>" *.htmlfind a “” in all files ending with .html in current directory and display them all
topdisplay process information using full screen, type q to quit
kill <1234>kill a process identified by the process ID: “<1234>”
gzip <foo>compress <foo> to create <foo>.gz using the Lempel-Ziv coding (LZ77)
gunzip <foo>.gzdecompress <foo>.gz to create <foo>
bzip2 <foo>compress <foo> to create <foo>.bz2 using the Burrows-Wheeler block sorting text compression algorithm, and Huffman coding (better compression than gzip)
bunzip2 <foo>.bz2decompress <foo>.bz2 to create <foo>
tar -xvf <foo>.tarextract files from <foo>.tar archive
tar -xvzf <foo>.tar.gzextract files from gzipped <foo>.tar.gz archive
tar -xvf -j <foo>.tar.bz2extract files from <foo>.tar.bz2 archive
tar -cvf <foo>.tar <bar>/archive contents of folder <bar>/ in <foo>.tar archive
tar -cvzf <foo>.tar.gz <bar>/archive contents of folder <bar>/ in compressed <foo>.tar.gz archive
tar -cvjf <foo>.tar.bz2 <bar>/archive contents of folder <bar>/ in <foo>.tar.bz2 archive
zcat README.gz > foocreate a file foo with the decompressed content of README.gz
zcat README.gz >> fooappend the decompressed content of README.gz to the end of the file foo (if it does not exist, create it first)

143989334-cover.jpg

Семинар по хапкидо в Днепропетровске

С 21 по 24 января был на семинаре по хапкидо в Днепропетровске, который проводил грандмастер Ким Нам Дже. Было здорово. Хотя это уже третий семинар по хапкидо, который я посетил, и кажется что с каждым разом физическая нагрузка становится все меньше.

О планах

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

Брайан Герберт «Батлерианский джихад»

Несколько статей о Друпале

В течение последнего года я написал три статьи о CMS Drupal, которые были опубликованы в бумажной и электронной версии журнала PC Magazine/RE. Сейчас я публикую “авторские” 1 версии этих статей. Каждая статья разбита на несколько разделов и ниже я привожу ссылки и описания каждого из них.

Первая статья “Разработка сайта на Drupal

  • Часть 1. Введение”. В этой части рассказывается о возможностях Друпала “из коробки”, а также об основных дополнительных модулях. Таксономия, ревизии, мультисайтинг — это совсем не страшно.
  • Часть 2. Архитектура Друпала”. Здесь сказаны общие слова о модульной системе Друпала, механизмах работы с формами, базой данных и кешем. Подробнее эти вопросы будут рассмотрены в следующих разделах и статьях.

После прочтения первых двух частей этой статьи новичок, задающийся вопросом “подойдет ли Друпал для моего нового суперстартапа”, должен на 100% определиться с ответом на этот вопрос. Вообще, в 95% случаев на этот вопрос можно ответить утвердительно, с оговоркой, что работать над проектом будет профессионал хорошо знакомый с Друпалом.

  • Часть 3. Модули Drupal”. CCK, Views, Imagecache, Panels, Ubercart — модули Друпала покрывающие 90% возникающих задач. В этой части статьи даны краткие описания каждого из перечисленных модулей.
  • Часть 4. Интранет-сайт на Друпале. Первый практический пример, в нем разрабатывается интранет-сайт для большой компании. Цель этого раздела — показать возможности, которыми обладает Друпал без доработки напильником. При разработке используются только существующие модули и не написано ни единой строчки программного кода. Аналогичное, только значительно более “кастомное” решение я успешно внедрил в одной из компаний со штатом в несколько сотен человек.
  • Часть 5. Социальная сеть на Друпале”. Точнее не социальная сеть, а коллективный блог с элементами социальной сети. Описание более новой версии примера описанного в этом раздедле можно найти на Швабрешвабр.
  • Часть 6. Оптимизация Друпал”. Этот раздел написал Александр Графов, он же axel. Друпал часто критикуют за низкую производительность. В этом разделе рассказано о приемах, позволяющих “разогнать” движок.

Вторая статья “Пример разработки модуля для Drupal

Третья статья “Темизация Друпал

  • Часть 1. Введение”. Во введении рассказано о шаблонных движках, которые могут быть использованы в Друпале, даны определения основных терминов, использованных в тексте (тема оформления, регион, блок), а также приведено несколько полезных ссылок.
  • Часть 2. Анатомия темы оформления”. Здесь дано подробное описание каждого из файлов-шаблонов, использующихся в темах оформления, а также рассказано о том, как определить отдельный шаблон для каждой страницы или группы страниц.
  • Часть 3. Forms API и темизация”. В этом разделе приводится пример разработки новой и изменения существующей формы с помощью Forms API Друпала, а также о изменении внешнего вида любого элемента формы в отдельности или формы целиком.
  • Часть 4. Темизация Views”. Небольшой раздел, рассказывающий о том, как изменить внещний вид данных, возвращаемых модулем Views.
Читать дальше ➠

Темизация Drupal. Часть 4. Темизация Views

Views — один из самых востребованных модулей для Drupal — позволяет создавать списки документов (представления, view), отфильтрованные по любому сложному алгоритму. На выходе модуль возвращает массив данных, который выводится в шаблоне, соответствующем выбранному администратором типу отображения (display) данных. Каждое представление может быть отображено в виде таблицы, маркированного списка, решетки (grid) и т. п. Чтобы переопределить используемый для отображения представления шаблон, нужно в свойствах представления в блоке Basic settings найти параметр Theme information и посмотреть в нем имена шаблонов, которые могут быть использованы модулем для отображения текущего представления. Затем нужно в подпапке theme модуля Views найти шаблон, соответствующий выбранному типу отображения (например, views-view-table.tpl.php для табличного варианта отображения или views-view-list.tpl.php для списка), скопировать его в папку с текущей темой оформления и присвоить ему одно из имен, перечисленных в Theme information. Теперь созданный шаблон можно настроить для своих нужд.

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

Темизация Drupal. Часть 3. Основы Drupal Forms API и темизация форм

Прежде чем говорить об изменении внешнего вида форм, ознакомимся с основами Drupal Forms API — программного интерфейса, используемого для генерации форм. Применение Forms API несколько сложнее создания HTML-форм вручную, так как требует изучения логики его работы, однако его использование обязательно, поскольку Forms API решает ряд важных задач:

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

Каждая форма в Drupal представляет собой функцию, возвращающую ассоциативный массив. Этот массив должен содержать информацию обо всех элементах формы, функциях проверки (валидаторы, validators) и обработки (сабмиттеры, submitters) введенных данных. Данная функция должна быть расположена в файле модуля, о разработке модуля говорилось в предыдущей статье.

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

Темизация Drupal. Часть 2. Анатомия темы оформления Drupal

Как и в случае с модулем, разработка которого рассматривалась в предыдущей статье, тема оформления должна иметь уникальное имя, состоящее из строчных латинских букв, цифр и знаков подчеркивания, и это имя должно начинаться с буквы. Тема оформления — это несколько файлов, которые располагаются в папке sites/all/themes/имя_темы относительно корня Drupal.

PHPTemplate при сборке страницы берет информацию из пяти основных файлов: имя_темы.info, page.tpl.php, node.tpl.php, block.tpl.php, template.php. Если же включен модуль comment, для вывода комментариев используется шаблон comment.tpl.php.

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

Темизация Drupal. Часть 1

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

Однако все эти упреки несправедливы. Здесь можно процитировать старый анекдот: «Вы просто не умеете его готовить». На самом деле к Drupal при должном умении можно «прикрутить» дизайн и верстку любой сложности. Можно до неузнаваемости «темизировать», т. е. изменять внешний вид любого HTML-кода, создаваемого Drupal, — все стандартные формы, блоки, документы и списки. Просто для этого нужно понимать, как Drupal генерирует выходные данные (информация об этом была размещена в моей предыдущей статье), и уметь переопределять этот вывод. Примеров таких детально темизированных сайтов много, в одной из врезок вы можете найти ссылки на некоторые из них.

В этой статье я расскажу о трех этапах темизации, охватывающих практически 100% задач, связанных с изменением внешнего вида сайта: разработка общего шаблона для всех страниц сайта и «кастомных» шаблонов для избранных страниц; разработка шаблонов для разных типов документов и списков; изменение внешнего вида форм (поиск, авторизация и любые другие стандартные и создаваемые внешними модулями формы). Но прежде чем переходить к решению задач, познакомимся с основными используемыми терминами и структурой любой «темы оформления».

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

Разработка модуля для Drupal. Часть3. Cron и темизация

Регулярные процедуры

Чтобы Drupal периодически выполнял определенные действия, в планировщике задач операционной системы необходимо настроить запуск файла cron.php, который находится в корне каждого Drupal-сайта. При выполнении этого файла будет вызываться хук hook_cron, и в нашем модуле мы напишем его реализацию.

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

Разработка модуля для Drupal. Часть2

currencies.info

В .info-файлах модулей содержится служебная информация, без которой модуль не будет виден в системе. Начинаться любой .info-файл должен со строки

; $Id$

В файлах с PHP-кодом после открывающего тега <?php необходимо добавить строку

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