Архив категории coding

Настройка redmine и svn на Debian 5.0

Пост скорее для себя, чтобы сохранить ссылки на ресурсы, по которым можно все востановить и настроить заново. Писать пост о том, как все это чудо настраивается нет ни сил, ни желания. Да и вознимают сомнения, что это возможно. Но вкрадце опишу откуда брал, с чем столкнулся.

Основной и самый работающий вариант описан в pdf документе: Redmine Installation on Debian
Единственное, что не заработало – автоматом ставится passenger-2.2.10, а в описании используется passenger-2.2.1, поэтому вместо gem install passenger нужно писать gem install passenger -v=2.2.1

Далее было еще несколько различных багов, а также с добавление функционала SVN помогли следующие доки:
http://www.redmine.org/wiki/1/Repositories_access_control_with_apache_mod_dav_svn_and_mod_perl (тут как привязать к redmine)
http://www.debuntu.org/2006/05/20/54-how-to-subversion-svn-with-apache2-and-dav (описание как поднять svn)
http://www.redmine.org/boards/2/topics/6387 (столкнулся с похожей проблемой при привязке)
http://www.redmine.org/wiki/redmine/HowTo_to_handle_SVN_repositories_creation_and_access_control_with_Redmine (тут описано как автоматически создавать репозитории при создании проекта)

В общем все, от себя добавлю, что после полноценной привязки чтобы репозиторий был недоступен без авторизации необходимо снять галку «общедоступно» в настройках проекта, а чтобы получить доступ к репозиторию под своей учеткой redmine необходимо добавить себя к проекту даже если вы администратор.

Создание подблога в Wordpress

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

Требования:

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

Решение:

  1. Создаем рубрику, в моем случае рубрика личное с urlname private
  2. Узнаем ID новой категории, его можно подсматреть напрямую в БД или в админке при редактировании категории ссылка будет содержать данное число
  3. Редактируем файл functions.php темы, которую вы используете. Добавляем следующие строчки:

    function filter_subblog_entries($query)
    {
    if (!$query->is_admin &&
    (!isset($query->query_vars->category_name) || $query->query_vars->category_name != 'private')
    ) //exclude private from main and not admin
    {
    $query->set('cat','-44');
    }

    return $query;
    }
    add_filter('pre_get_posts','filter_subblog_entries');

    Вместо 44 подставляем число, полученное из третьего пункта, вместо private подставляем urlname нашей категории

Готово. Теперь главная страница и RSS лента не содержит сообщений из личного подблога, а в категории личного подблога и RSS содержатся только нужные нам посты.

P.S.
Если вы используете widgets и там есть ссылки на RSS, то необходимо при просмотре подблога показывать другой вариант widget’a (с другой ссылкой на RSS) для этого идеально подходит плагин Widget Logic, который показывает виджеты в зависимости от логического условия.

Генерация рыбы для баннеров

При разработке и тестировании веб проектов удобно забивать сайт рыбой – бессмысленным текстом, который показывает как будет отображаться информация.
Чаще всего тексты генерируются на http://vesna.yandex.ru или http://www.lipsum.com/.

На место баннеров генерируются заглушки с указанием размера. Для того, чтобы не терять время на их создание и облегчить труд вебразработчикам создали проект http://dummyimage.com. Он геренирует картинку по размеру, переданную последним параметром.
Например, по адресу http://dummyimage.com/468×60 мы получаем вот такую картинку:

а по адресу http://dummyimage.com/30×30, вот такую:

Просмотр сайта в различных браузерах

Все верстальщики держат семейство браузеров, для того, чтобы проверить, что сайт смотрится везде одинаково.
Запускать отдельно каждый и просматривать неудобно и отнимает много времени.
Быстрое решение — проект от Adobe Adobe browser lab.
Вы просто выбираете список браузеров, вставляете ссылку и через некоторое время сравниваете результат в виде скриншотов.

Замечательная возможность — наложение картинок друг на друга, для того, чтобы более точно понять где верстка едет.

adobe

Adobe browser lab

Интеграция сайта с Invision Power Board

Разрабатывая новую версию сайта http://beproplayer.ru столкнулись с необходимостью привязать пользователей сайта к пользователям форума.
Необходима полная интеграция (добавление, удаление, редактирование и т.д.). С учетом того, что на сайте у пользователя есть очень много дополнительных свойств (анкета, принадлежность группе, биллинг, купленные пакеты и многое другое), решили закрыть все, что связано с пользователем на форуме (прячем регистрацию, удаление и т.д.) и реализовать все через сайт.
Проект разрабатывается на фреймворке Codeigniter.
Изучив готовые решения и опыт сообществ остановился на проекте IPWI — Api для работы с Invision Power Board. Реализовано все достаточно удобно и красиво, и особо приятно наличие хорошей документации, доступной по адресу http://docs.ipbwi.com/.
Разработчикам, использующим Codeigniter, известно, что классы нужно использовать через библиотеки.

Для этого, внедрим в движок Codeigniter класс IPWI.

  1. Скачиваем последнюю версию IPWI
  2. Копируем папку ipwi в папку system\application\libraries
  3. Редактируем файл config.inc.php, там необходимо прописать адрес до форума, до нашего класса и адрес сайта
  4. Переименовываем файл ipbwi.inc.php в ipbwi.php
  5. В переименованном файле ipbwi.php комментируем строчку $ipbwi = new ipbwi();
  6. Готово.

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

$this->load->library('ipbwi/ipbwi'); //подключаем библиотеку
$this->ipbwi->member->create($login, $password, $email); //регистрируем пользователя

Все интерфейсы достаточно подробно описаны в документации.

logo_728x90

Редактирование меню в Wordpress

Изучение карты активности моего сайта на http://webvisor.ru показало, что основное внимание приходится на меню. Задача блога – подписать по RSS как можно больше пользователей, однако видно, что на иконку RSS внимания почти никто не обращает.

webvisor

Поэтому я решил перенести RSS ссылку в меню. Проблема в том, что меню в WordPress редактировать нельзя, оно автоматически генерируется на основе созданных страниц.
Чтобы эту проблему решить я воспользовался тремя очень полезными плагинами:

  1. Exclude Pages – позволяет выкидывать из меню страницы, которые вы не хотите там отображать.
  2. Page Links To – добавляет поле при создании страницы. Туда вы прописываете ссылку на которую пользователь перейдет при просмотр. Это дает возможность добавлять внешние страницы (форум, RSS и д.р.) в меню WordPress.
  3. All in One SEO Pack – основной функционал плагина связан с SEO, однако часть функций помогает нам также редактировать меню. При создании страницы помимо заголовка мы можем выбрать название, которое отображается в меню. Более того не производится фильтрация тегов, что дает возможность писать не только текст, но и вставлять иконки.

Установка этих трех плагинов в итоге позволила добавить RSS ссылку с иконкой в меню.
Результаты эксперимента по увеличению RSS подписчиков опишу через некоторое время.

Отключение Intellisense в Visual Studio

Intellisense в Visual Studio работает очень медленно. Этой программе есть отличная замена – Visual Assist X, разработанная компанией Whole Tomato. Она работает гораздо быстрее и при этом имеет более удобный интерфейс и больший функционал.
Однако после установки Intellisense продолжает работать и тормозить систему. Штатных средств отключения Intellisense нет. Для того, чтобы отключить нештатным образом нужно найти файл feacp.dll (в зависимости от того, куда установлена Visual Studio, например «C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\») и переименовать или удалить файл.

Visual_Studio_icon_by_Obinoobie

Век живи, век учись

Сегодня, используя функцию empty() в PHP,

if(!empty($CI->input->post(‘password’)))

наткнулся на ошибку

Can’t use method return value in write context

Оказалось, что функция empty не может обращаться напрямую к значению, которая возвращает фунция. Это можно сделать исключительно через промежуточную переменную.
Т.е. правильно писать вот так:

$input_password = $CI->input->post(‘password’);
if(!empty($input_password))

PHP ChangeLog RSS

Удивительно, но у проекта PHP отсутствует RSS канал для ChangeLog.
Это досадное недоразумение исправили ребята из http://feed43.com и сделали нужным нам канальчик: http://feed43.com/6260850430023038.xml

php

wireframes

Wireframes — макеты пользовательского интерфейса и веб страниц, а также взаимосвязей между ними.
Как выглядят такие макеты можно посмотреть в конце статьи.
Последнее время я начал активно читать в этом направлении и выбирать удобный для себя инструмент.

Основные требования следующие:

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

Из того, что удалось найти:

  1. Axure RP Pro
  2. FlairBuilder

Делитесь опытом, пользуетесь ли вы wireframes, какие инструменты используете и насколько детально вы их описываете?
rvnikita_wireframe