Home

Старое журавлиное гнездо

ветки уже сыплются, перелетел в другое

Ставим рубиновый типограф на Рельсы

Originally published at Блог разработчика веба. You can comment here or there.

В продолжение вчерашней темы, добавил простой способ типографить избранные поля в модели ActiveRecord.

Достаточно написать в нужной модели примерно следующее:

class Article < ActiveRecord::Base
  typograf :title, :use_p => false, :use_br => false
  typograf :content, :teaser
end

И тогда каждый раз перед сохранением (конкретнее, перед проверкой правильности полей) будет проходить типографирование этих полей, посредством Типографа студии Артемия Лебедева.

Поддерживается несколько возможных синтаксисов объявления моделей для типографирования:

  • для одного конкретного поля:
    typograf :content
  • можно указать параметры для типографирования этого поля:
    typograf :content, :entity_type => AlsTypograf::NO_ENTITIES
  • для нескольких полей сразу (тоже с возможностью объявить параметрами типографирования, общие для всех объявленных полей):
    typograf :skills, :achievements, :additional, :use_br => false, :use_p => true
  • для нескольких полей сразу (но с объявлением параметров для каждого конкретного поля):
    typograf :foo => {:entity_type => AlsTypograf::HTML_ENTITIES},
             :bar => {:use_p => true, :use_br => false},
             :baz => {:max_nobr => 5},
             :some_other_field_name => {}

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


Типограф студии Артемия Лебедева с отблеском Рубина

Originally published at Блог разработчика веба. You can comment here or there.

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

Пользоваться очень просто.

  1. Установите:
    sudo gem install als_typograf --source=http://gemcutter.org/
  2. В коде приложения используйте метод process модуля AlsTypograf следующим образом:
    require 'als_typograf'
    AlsTypograf.process('- Это что, "Типограф"?') # "<p>— Это что, «Типограф»?</p>"

Обёртка поддерживает несколько опций, предоставляемых веб-сервисом Студии, их можно подставлять как к конкретному запросу:

AlsTypograf.process('- Это что, "Типограф"?', :use_p => false, :use_br => true)

так и выставлять глобально, для всех запросов на типографирование:

AlsTypograf.encoding = 'CP1251' # По-умолчанию используется кодировка UTF-8
AlsTypograf.html_entities! # Заставляет использовать сущности HTML, такие как: &nbsp;, &mdash; &hellip;

Документация для рубинового типографа хранится (и автоматически обновляется при любых изменениях) на сервисе rdoc.info, который весьма рекомендую всем разработчикам.


Как увеличить свои доходы? (Это не спам, ага)

Собираюсь принять участие в семинаре «Жестокий фриланс». Он проходит в форме вебинара, начинается 5-го октября. А вы принимали участие в подобных семинарах, или в вебинарах вообще?

Метапрограммирование в Ruby

Originally published at Блог разработчика веба. You can comment here or there.

Что такое метапрограммирование?

Metaprogramming is the writing of computer programs that write or manipulate other programs (or themselves) as their data, or that do part of the work at compile time that would otherwise be done at runtime. In many cases, this allows programmers to get more done in the same amount of time as they would take to write all the code manually, or it gives programs greater flexibility to efficiently handle new situations without recompilation. (via Wikipedia)

Это руководство перечисляет все стандартные методы Ruby, используемые для метапрограммирования, а так же приводит примеры их обычного употребления. В конце мы получим пример использования метапрограммирования для динамического создания классов, соответствующих таблицам в БД, включающих методы, соответствующие полям таблицы, на манер ActiveRecord.

»


Интеграция WYSiWYG-редактора TinyMCE в рельсовые приложения

Originally published at Блог разработчика веба. You can comment here or there.

Вчера закончил работу (ну, её было не очень много) по переделыванию плагина TinyMCE для рельсов в полноценный gemТеперь редактировать текстовые данные в рельсовых приложениях ещё проще.

Достаточно вставить в environment.rb:

config.gem 'tiny_mce', :source => 'http://gemcutter.org/'

В нужный контроллер:

uses_tiny_mce :only => [:new, :create, :edit, :update]

В обёртку:

= include_tiny_mce_if_needed

А в представлении указать у нужного поля текста класс mceEditor:

- form_for @page do |f|
  = f.text_area :content, :class => 'mceEditor'

После этого остановите свой проект, наберите в командной строке rake gems:install, запустите проект снова — файлы для TinyMCE автоматически установятся в нужное место. Если вы обновите гем (например, в связи с обновлением кода TinyMCE его авторами) — удалите public/javascript/tiny_mce, перезапустите приложение и новые файлы лягут в нужное место.

Всё, теперь пользователи вашего сайта смогут вытворять всякие ужасы с текстом, а так же рвать вашу вёрстку и делать прочие непотребности. Наслаждайтесь!

Ссылки проекта:


Удаление программ с помощью setup.py

Originally published at Блог разработчика веба. You can comment here or there.

Некоторые программы написанные на Питоне (например, Lekhonee) поставляются с файликом setup.py, с помощью которого довольно просто устанавливаются

python setup.py build
sudo python setup.py install

А вот удалить такую программу достаточно сложно, ибо команды sudo python setup.py uninstall нету. Ну, не предусмотрели его любители красивого кода на питоне. Красивое, ведь, лучше, чем некрасивое, ага? А код на Питоне, видимо, настолько красивый, что удалять его со своего компьютера — грех смертный.

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

sudo python setup.py install --record files.txt
cat files.txt | sudo xargs rm -rf

На самом деле, неприятно удивляет это питоновское стандартное средство установки программ. Но, оказывается, бывает и такое.

А если подумать перед установкой…

…то можно использовать уже упоминавшийся в блоге checkinstall:

sudo checkinstall python setup.py install

Тогда деинсталлировать это приложение можно будет как обычно, с помощью apt:

sudo apt-get purge lekhonee

Сколько стоит Ubuntu?

Originally published at Блог разработчика веба. You can comment here or there.

Да, я знаю что Ubuntu распространяется бесплатно. Сегодня меня заинтересовало другое. Сколько стоила бы аналогичная система, построенная из платных аналогов.

Посмотрим, что мы получаем в комплекте с Ubuntu:

  • операционную систему на базе ядра GNU/Linux;
  • приятную, расширяемую и настраиваемую графическую оболочку;
  • набор Офисных приложений:
    • редактор текстов (который в платных аналогах любят называть текстовым процессором);
    • приложение электронных таблиц;
    • редактор презентаций;
    • мощное приложение для ведения переписки, календаря и заметок + ещё одно, исключительно для заметок но более удобное;
  • два графических редактора: растровый и векторный;
  • кучу игрушек и прочих приятных мелочей.

Внушительный список, не правда ли? Сколько вы готовы заплатить за такой набор? А теперь посчитаем, что нам предлагают производители коммерческого ПО:

Категория ПО Ubuntu Windows Mac OS X
Итого: 0 1687,45 $ 1506 $
Ядро системы GNU/Linux 0 Windows Vista Home Premium 239.95 $1 Mac OS X 1.5.6 129 $
Офисный пакет OpenOffice, Evolution или KOffice, Kontact 0, 0 Office Home and Student 2007 149,95 $2 iWork 09 79 $
Растровый графический редактор GIMP или Krita (из KOffice) 0, 0 Adobe Photoshop CS4 699 $ Adobe Photoshop CS4 699 $
Векторный графический редактор Draw (из OpenOffice), Inkscape или Karbon (из KOffice) 0, 0 Adobe Illustrator CS4 599 $ Adobe Illustrator CS4 599 $

Берём среднее арифметическое от стоимости комплектов под Windows и Mac OS X и получаем 1596,725 $. Можно сколько угодно говорить о неточном соответствии возможностей тех или иных программ, представленных в сравнении, однако потребности большинства пользователей «ВКонтакте» и «Одноклассников» Ubuntu легко покрывает. У меня нету лишних полутора тысяч долларов, которые я отдал бы за ту толику функциональности, которая не предоставлена бесплатными аналогами. А вы?

Примечания:

  1. На русском сайте корпорации Microsoft найти цену на какие-либо продукты нереально! ↑1 ↑2

rotuka @ Ubuntu Russian Translators

Originally published at Блог разработчика веба. You can comment here or there.

Сегодня пришло письмо, что меня утвердили в группе переводчиков Ubuntu на русский. Приятно.

И я даже отличился в свежевыходящем Зайцелопе. В апплете-индикаторе новых сообщений я указан, как один из переводчиков.


Совместное использование Cucumber и Factory_Girl или роковая ошибка create_time_zone_conversion_attr

Originally published at Блог разработчика веба. You can comment here or there.

Недавно открыл для себя Cucumber — утилиту для описания поведения вашего приложения. Весьма хорошая штука, доложу вам. Но о ней конкретно я расскажу как-нибудь потом.

Ещё я использую вместо стендовых данных (известных также как fixtures) замечательный гем от ThoughtBot под названием Factory Girl — он позволяет делать «заготовки» моделей и ваще очень крут (о нём — как вы, может быть, уже догадались — тоже в другой раз).

Но вот соединить их при тестировании одного проекта оказалось не так-то просто! При тестировании функционала каждый сценарий, начиная со второго использования метода Factory.create вылетал с ошибкой. Как показал бэктрэйс — ошибка случалась в функции ActiveRecord::Base.create_time_zone_conversion_attribute? Гугл рассказал мне, что разработчики рельсов решают эту проблему уже очень долго, и хотя патч, решающий её, давно найден — всё никак не вольют его в основной код. И на то есть веские причины, а именно — утечка мозгов памяти в production-режиме.

Тем не менее, при тестировании функционала эта утечка памяти не так критична, потому как тестовый сервер Cucumber’а запускается и останавливается регулярно — при каждом прогоне, а сервер приложения висит довольно долго и может отъесть довольно большой кусок памяти и подавиться им. Ну, надоели вступительные слова, вот…

…решение проблемы:

Необходимо поместить в директорию lib файл activerecord_reset_sublass_fix.rb, а так же добавить его вызов в файл config/environments/test.rb следующим образом:


Ubuntu + Compiz — удобно и красиво!

Originally published at Блог разработчика веба. You can comment here or there.

Очень давно не писал в блог. Сегодня взглянул в очередной раз на черновики и решил, что буду их выкладывать потихоньку. Ну и что, что недописано (и вообще, пора менять слова «компиз фьюжн» на просто «компиз»). Будет рассказ по-частям :-)

Расскажу о композитном менеджере окон Compiz Fusion. Его историю можете прочитать на сайте проекта, а меня интересует конкретно его применение.

»


Сборка приложений из исходного кода в Ubuntu

Originally published at Блог разработчика веба. You can comment here or there.

Вообще, в производных от Debian системах, в число которых входит и Ubuntu, не принято собирать приложения из исходных кодов. Этого, зачастую, можно избежать, потому как в репозиториях полно различных приложений, на все случаи жизни. По некоторым сведениям, их больше, чем во всех остальных распространённых дистрибутивах линукса.

Два простых пути для установки приложений из меню, мышкой:

  • ПриложенияУстановка/удаление…
  • СистемаАдмининстрированиеПрограмма управления пакетами Synaptic

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

Однако, бывают случаи, когда необходимое вам приложение отсутствует в репозитории, например потому, что оно ещё не стабильно, либо распространяется только в исходных кодах, либо его написал ваш сосед-программист, ну или по какой-то другой причине. Тогда придётся собирать его из исходников. Если вы обратитесь к любому руководству по сборке приложений, вы увидите три строки, известных (почти) любому пользователю линукса со стажем более полугода. А именно:

./configure
make
sudo make install

Кратко о каждой из этих команд

./configure

Эта команда подготавливает исходные коды к компиляции под конкретную платформу, а именно в вашей операционной системе. Она проверяет налицие необходимых программ (компиляторов, сборщиков и т. п.), библиотек, а так же заголовочных файлов (something.h). Достаточно часто случается, что в вашей системе недостаёт какого-нибудь необходимого приложения, либо файла заголовков, необходимого для компиляции программы. В таком случае, эта команда выведет сообщение об ошибке. Если у вас достаточный опыт, то вы, конечно же, легко определите, что заголовочный файл some_extra_thing.h находится в пакете extra_things_for_cool_nerds-dev, однако не всегда просто определить, что именно хочет от вас программа, чего ей не хватает.

Тогда нам на помощь придёт утилита под названием auto-apt. Она хранит информацию о заголовочных файлах, которые имеются в репозиториях и поможет вам найти, в каком пакете хранится тот или иной заголовочный файл.

Если ./configure вывела вам сообщение о недостаче заголовочного файла Xlib.h, воспользуйтесь командой

auto-apt search Xlib.h

Она ответит вам следующим:

usr/include/X11/Xlib.h	libdevel/libx11-dev

Это обозначает, что нужный вам файл содержится в пакете libx11-dev, относящемся к категории libdevel (пакеты для разработки) и после установки пакета (sudo apt-get install libx11-dev) будет лежать по адресу usr/include/X11/Xlib.h

Есть ещё более простой путь вызова ./configure, который сам предложит вам установить все необходимые пакеты

auto-apt run ./configure

Вам нужно будет только следить за процессом установки и изредка нажимать Y для установки необходимых пакетов.

make

Это вторая и, пожалуй, главная команда из этой триады. Она выполняет компиляцию и сборку всех необходимых компонентов системы. Если ошибка появляется во время выполнения этой команды, скорее всего ошибка в коде, который вы пытаетесь собрать. В таком случае, остаётся только обратиться к разработчику программы. Но обычно, после успешного выполнения ./configure, здесь ошибок не бывает.

make install

Этой командой вы устанавливаете приложение. Если вы хотите установить её для всех пользователей, общесистемно, вам необходимы права пользователя root. В Ubuntu это решается вызовом этой команды после sudo, то есть

sudo make install

НО! При установке этим путём, вы можете нарушить целостность системы, поскольку эта команда не сохранит данные о том, какие файлы и куда были установлены. Таким образом, удаление этой программы сможет принести вам много мороки. Чтобы облегчить возможноые страдания, была написана утилита под названием checkinstall. Она проверяет, что и как хочет сделать команда make install, а потом собирает по полученным сведениям deb-пакет и устанавливает его в систему (то есть, для удачного выполнения этой команды ей так же нужны права суперпользователя). Благодаря этому, вы сможете потом легко удалить ненужное вам более приложение, используя например Synaptic, упоминавшийся в начале статьи.

Установка программ в пользовательский каталог

Бывает, что некоторые программы не нужны общесистемно, тогда нужно на этапе конфигурирования указать, что программа будет устанавливаться в пользовательский (или иной) каталог. Для этого, обычно, первая команда видоизменяется следующим образом:

./configure --prefix=/home/$USER

Тогда команду make install нужно вызывать без префикса sudo.

Выводы

Для упрощения установки программы из исходных кодов, в Ubuntu вы можете воспользоваться немного изменённым набором команд:

auto-apt run ./configure
make
sudo checkinstall

для установки общесистемной, либо:

auto-apt run ./configure --prefix=/home/$USER
make
make install

для установки в пользовательский каталог.


Разработка сайтов в Ubuntu или LAMP = Ubuntu + Apache + MySQL + PHP

Originally published at Блог разработчика веба. You can comment here or there.

Ubuntu – это линукс для людей. Поэтому, установка набора для веб-разработчика в нём производится одной командой:

sudo tasksel install lamp-server

После её выполнения, на вашем компьютере обоснуются Apache, MySQL и PHP. А мы сразу же займёмся созданием первого сайта.

Все сайты, над которыми тружусь, я храню в папках вида ~/Sites/www.example.com.dev/. Это удобно, потому как не приходится настраивать права доступа к файлам и придумывать структуру папок в /var/www/, а так же каждому из них можно выделить человекочитаемое имя, оканчивающееся на .dev (которое соответствует названию папки), и при разработке и тестировании набирать в адресной строке браузера www.rotuka.com.dev и попадать на локальную версию вашего сайта.

Создание и настройка текстового сайта

Допустим, мы приступаем к разработке сайта rotuka.com, тогда создадим для него личную папку

mkdir -p ~/Sites/rotuka.com.dev/public

Теперь, нам нужно рассказать нашему локальному апачу об этом сайте. Создаём файлик для этого сайта:

sudo gedit /etc/apache2/sites-available/rotuka.com.dev

и вписываем в него следующие строки:

<VirtualHost *:80>
    ServerName rotuka.com.dev
    ServerAlias www.rotuka.com.dev
    DocumentRoot /home/$USER/Sites/rotuka.com.dev/public
</VirtualHost>

где $USER нужно заменить на ваше имя пользователя.

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

sudo a2ensite rotuka.com.dev

При выполнении, эта команда скажет вам, что апачу необходимо перезагрузить данные конфигурации, что мы и сделаем:

sudo /etc/init.d/apache2 reload

Теперь, настроим удобное обращение к сайту. Для этого пропишем, что хост rotuka.com.dev обслуживается на нашем компьютере, локально. Открываем файл /etc/hosts

sudo gedit /etc/hosts

находим там строку, начинающуюся на 127.0.0.1 (обычно, это первая строка) и вписываем в её конец, через пробел от предыдущих данных, rotuka.com.dev. Сохраняем файл, закрываем редактор.

Теперь кидаем какой-нибудь файлик index.html в папочку нашего сайта (/home/$USER/Sites/www.rotuka.com.dev/public) или выполняем команду

echo -e "<html>\n  <head>\n    <meta http-equiv="Content-type" content="text/html;
charset=utf-8" />\n    <title>Тестовый сайт</title>\n  </head>\n  <body>\n
<h1>Тестовый сайт</h1>\n    <p>Привет, веб-разработчик</p>\n  </body>\n</html>\n"
> /home/$USER/Sites/rotuka.com.dev/index.html

Всё, теперь уже можно вписать в адресную строку браузера http://rotuka.com.dev/ и увидеть, что сайт вас приветствует (-:

Ссылки по-теме:


Wacom Bamboo One + Ubuntu. Установка и решение проблем

Originally published at Блог разработчика веба. You can comment here or there.

Вчера мне в руки попал планшетик Wacom Bamboo One. Забавная вещица. Если её установить (-;

Страница руководства, посвящённая Wacom посылает нас на довольно подробное руководство по установке и настройке последних драйверов для линейки Bamboo, которое приведёт вас к вполне рабочему тандему Бамбук+Убунту, однако если вы используете терминал, либо постраничный поиск в файрфоксе, либо вы просто любите системный звук ошибки – вы получите много проблем. Ибо теперь каждый вызов системного сигнала будет приводить к перезагрузке иксов.

Решения этой проблемы гугл не знает. Яндекс, кстати, тоже. И лишь кустарные методы позволят использовать. Чтобы лишить себя проблем (хотя бы временно), выполните следующие действия:

  1. Откройте настройку звука (Система -> Параметры -> Звук) и на вкладе “Системный сигнал” снимите галочку с параметра “Включить системный сигнал” и поставьте галочку “Визуальный системный сигнал“, чтобы вместо звука сигнал был произведён путём мигания какой-либо области экрана.
  2. Запустите терминал (Приложения -> Стандартные -> Терминал), выберите в меню Правка -> Текущий профиль… и снимите галочку с параметра “Подавать гудок
  3. Запустите Firefox (Приложения -> Интернет -> Firefox Web Browser) и введите в адресной строке about:config. Затем найдите параметр accessibility.typeaheadfind.enablesound и поставьте ему значение false.

Установка Ruby on Rails в Ubuntu (для разработки)

Originally published at Блог разработчика веба. You can comment here or there.

Я постараюсь поддерживать эту статью в актуальном состоянии. На данный момент, все действия, описанные в статье, актуальны для следующих версий ПО:

  • Ubuntu Karmic Koala (9.10)
  • Ruby 1.8.7 (2009-06-12 patchlevel 174)
  • Rubygems 1.3.5
  • Ruby on Rails 2.3.4

Установка Ruby

В репозиториях Убунту лежит актуальная версия интерпретатора Ruby, поэтому для установки Ruby хватит одной стандартной команды:

sudo apt-get install ruby-full build-essential libruby-extras libsqlite3-ruby

Установка Rubygems

  1. RubyGems в репозитории Ubuntu Karmic пока актуальные, поэтому можно смело ставить из репозитория командой:
    sudo apt-get install rubygems
  2. Однако, если вы предпочитаете ручную установку RubyGems, воспользуйтесь следующими командами:
    wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz
    tar xzvf rubygems-1.3.5.tgz
    cd rubygems-1.3.5
    sudo ruby setup.rb
    sudo ln -s /usr/bin/gem1.8 /usr/bin/gem

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

    sudo gedit /etc/bash_completion.d/gem1.8

    И вставить в начало этого файла, сразу после комментариев, следующий код:

    have()
    {
      unset -v have
      PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin type $1 &>/dev/null &&
      have="yes"
    }

    А в самый конец вставить:

    [ -n "${have:-}" ] && complete -F _gem18 $filenames gem

    Теперь вы в консоли сможете набирать gem i и консоль будет сама дополнять команду до gem install,

    Если же у вас уже была установлена более старая версия Rubygems, вы можете обновить её до текущей:

    sudo gem update --system

    Иногда, после обновления этой командой, gem может начать выдавать ошибку:

    /usr/bin/gem:23: uninitialized constant Gem::GemRunner (NameError)

    Для её устранения, необходимо отредактировать исполняемый файл (sudo gedit /usr/bin/gem) и перед строкой require "rubygems" вставить строку require "rubygems/gem_runner"

Установка Rails

Теперь, когда нас установлены актуальные версии интерпретатора и менеджера гемов, мы можем присутпить к установке самих Rails.

sudo gem install rails

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

cd ~
mkdir Sites
cd Sites
rails my_first_site
cd my_first_site
./script/server

Эти команды создадут в вашей домашней директории поддиректории Sites, а в ней, в директории my_first_site rails-приложение, после чего запустит стандартный сервер WEBrick, поставляемый вместе с интерпретатором Ruby. Если установка прошла без ошибок, то вы сможете увидеть приветствие рельсов, пройдя по ссылке http://127.0.0.1:3000/.

Установка дополнительных гемов

В дальнейшем, при работе с рельсами, вам может понадобиться множество различных гемов. Описывать установку всех я не буду. Опишу лишь то, с чем у меня когда-либо случались проблемы. Начнём, пожалуй, с гема rmagick, предназначенного для обработки изображений.

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

sudo apt-get install librmagick-ruby

Если же вы захотите установить самую последнюю версию этого гема, вам нужно будет скачать исходные коды для библиотек ImageMagick (а они потянут за собой много-много других библиотек). Скорее всего, для вас это излишне. Но команды напишу:

sudo apt-get install libmagick9-dev
sudo gem install rmagick

Ещё лично я советую поставить вам несколько плагинов, которые облегчат вам жизнь при работе с Rails вдальнейшем. Установка одной командой:

sudo gem install mongrel BlueCloth RedCloth sqlite3-ruby ZenTest

И о каждом геме поподробнее:

  • mongrel — более быстрый, чем WEBrick сервер, написанный специально для работы с Rails. Если н установлен, то по команде ./script/server рельсы станут запускать именно его.
  • BlueCloth и RedCloth — библиотеки, используемые рельсовыми хелперами markdown и textilize соответственно для разметки текста.
  • sqlite3-ruby — библиотека для работы с базами sqlite3 (которые создаются по-умолчанию при создании рельсового приложения).
  • ZenTest — набор утилит для автоматического тестирования приложения. По команде autotest запускается тестирующий демон, который будет проверять все изменённые файлы, пробегая связанные с ними тесты. Об этой утилите я напишу позже

Настройка GTalk в Kopete (KDE4)

Originally published at Блог разработчика веба. You can comment here or there.

Сегодня поставил на своём лаптопе Kubuntu KDE4 и столкнулся с проблемой при настройке GTalk в Kopete. При соединении выдавалась ошибка «SSL support could not be initialized for account user@example.com. This is most likely because the QCA TLS plugin os not installed on your system».

Первым делом я, естественно, попытался решить эту проблему путём установки этого самого QCA TLS, довольно логично, не правда ли? Тем более, что и пакетик в репозиториях нашёлся одноименный.

sudo apt-get install qca-tls

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

sudo apt-get install libqca2-plugin-ossl

После этого перезапускаю Kopete и… вуаля, всё заработало.

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

  1. При создании аккаунта выбрать протокол Jabber
  2. В качестве Jabber ID ввести ваше имя пользователя, вместе с доменным именем, то есть username@gmail.com или username@example.com если вы используете Google Apps на домене вашей организации и т. п.
  3. В параметрах соединения (Вкладка Connection) поставить все три галочки: Use protocol encryption (SSL); Allow plain-text password authentication; Override default server information
  4. Выставить в качестве имени сервера talk.google.com, порт 5223.

Этих настроек должно быть вполне достаточно для комфортной работы. Не забудьте установить поддержку QCA TLS, если выскочит ошибка. Одной командой это делается так:

sudo apt-get install qca-tls libqca2-plugin-ossl


Неделя на Рельсах (выпуск от 10 сентября 2008 г.)

Originally published at Блог разработчика веба. You can comment here or there.

Перевод. Оригинальная статья: This Week in Rails (September 10, 2008), за авторством Gregg Pollack

Добро пожаловать в пятый выпуск «Недели на рельсах», еженедельный отчёт о событиях в околорельсовом сообществе. Antonio Cangiano (автор идеи) был весьма занят, поэтому на этой неделе я решил его подменить.

Вы, скорее всего, уже слышали о выходе Rails 2.0.4 и Rails 2.1.1. Оба релиза — в основном исправляют ошибки, за подробностями отправляйтесь в списки изменений.

»


Gnome Do

Originally published at Блог разработчика веба. You can comment here or there.

Первой статьёй решил описать небольшую утилитку, которой пользуюсь ежедневно и, даже, ежеминутно. Имя ей — Gnome Do.

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

»


Привет, рунет!

Originally published at Блог разработчика веба. You can comment here or there.

В очередной раз пытаюсь занять умы рунета. И, как всегда, с благой целью. Ныне собрался я нести знания о системе операционной, Ubuntu называемой. Не обещаю длинных записей, с полной документацией приложений и т. п. Постараюсь писать кратко, но ёмко.

Может быть, со временем, не только об Убунте. Да всё может быть со временем. Увидим (-:

Tags:

Другие люди

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

А вообще, я хотел написать про других людей. Про тех, кто не думает о себе, как об индивидууме. О тех, кто принимает правила не свои, и не своего мира, а правила, придуманные для них, за них, и скорее даже, против них. Этих людей не занимают даже они сами. Их занимает камеди-клаб, Наша Раша, Зенит, а так же бомж Вася из соседнего подъезда.

Кстати, о бомже Васе. Вот он-то, по-моему, и есть один из самых счастливых из этих, других людей. Он уже не думает ни о чём глобальном. И живёт ровно настолько хорошо, насколько ему это нужно. Он настолько отвык от большинства удобст, что они ему просто перестали быть нужны. И поэтому он счастлив, имея ровно то, что ему нужно.

И вернёмся к другим людям. Они мне не нравятся. Большинство. Но с их присутствием надо мириться. Потому что, как бы то ни было, они меня кормят и одевают. А есть я люблю. Ну и выглядеть хорошо тоже.

Я тоже для них Другой, пожалуй. И я большинству из них безразличен. Различен только тем другим людям, в фуражках и форме, которые сейчас вышли на охоту. Вожак рявкнул, стая подвывая убежала. Волки. Волки. Волки вышли на охоту. Но они не знают, на какую охоту они вышли. Это, ведь, не они охотятся. Это совсем даже наоборот. На них охотятся. И они сами это позволяют делать. На них охотится их начальство. А обиженными остаются ни в чём не повинные ребята.

Ребята, которых лишили. Лишённые свободы ребята, которые не хотят, или не могут. Учиться, болеть, или как-то ещё освободиться от ужасного гнёта своей отчизны. Родина паразитирует на жителях. Паразитирует даже тогда, когда это, в принципе, и не необходимо. Обходится же она уже много лет без войн? Ну, не считая войн чужих, в которых она идёт за компанию. А компания у неё та ещё. Я б не завидовал.

А впрочем, имеет ли всё это значение? По-моему, никакого. Потому что завтра снова встанет солнце. И снова пойдут люди. И часы пойдут с такой же скорстью.
Скорость людей равномерна. Люди -- не индивидуальности. Не то, они дорожили бы временем. Ведь стрелки часов тоже куда-то спешат. Как и люди. И ни тем, ни другим, друг за другом не угнаться.

И уже даже не важно, что я хотел написать о других людях. Я уже написал. И тоже о людях. Но о других.  

Причина депрессии

Когда любишь одного человека это приятно. Когда он отвечает тебе взаимностью — это приятно вдвойне. И лишь когда ты любишь того, кто отдал своё сердце другому… это причиняет боль.


Если любишь человека, сделай так чтобы он был счастлив, пусть даже если он будет счастлив не с тобой…