вторник, 31 июля 2012 г.

Настройка связки Redmine + ISPManager на CentOS 6.3

Когда я решил написать статью по установке Redmine на CentOS, как я уже и говорил, я даже представить себе не мог, сколько мне придется потратить на это времени. Единственное, на что была надежда, так это на то, что труд этот не пропадет за зря и пригодится возможно не только мне. Однако, опубликовав статью из 3 частей у себя на блоге, я не думал, что данная тема обретет такую популярность! Дабы не останавливаться на достигнутом, тему по установке решил продолжить Руслан Евчев, который предоставил свою версию на ваш суд. По сравнению с моей версией, в данной статье пойдет речь об установке все того же Redmine 2.* (на текущий момент версия 2.0.3) под CentOS 6.3 64 бит, но в данном случае с использованием ISPManager.
Она является более простой по сравнению с той, что описывал я. Поэтому, думаю что данный мануал будет для вас более интересным, в особенности тем, кто экономит собственное время.
Статья предоставлена в формате "as is", то есть без моего вмешательства в содержание статьи, за исключением отображения стилей.

вторник, 24 июля 2012 г.

CentOS 6.2: Установка OpenAM под управлением Jetty с использованием OpenDJ

Пока я игрался с тестовым сервером, устанавливал разного рода программы такие как Redmine, Jira и прочие, прошло достаточно много времени. Изначально на него была поставлена система SSO (Single Sign On) на основе OpenAM от компании ForgeRock для проверки взаимодействия с другими программами. Но пришла пора создать "боевой" сервер с этой системой. И тут я понял, что абсолютно не помню, каким образом я все устанавливал, в какой последовательности и вообще какие настройки производил. Решил, если что-то забылось один раз, то высока вероятность того, что это забудется и в последующем. А это крайне не желательно, учитывая популярность данной технологии. Для тех, кто ещё не знает, что такое технология Single Sign On, можно объяснить следующим образом. К примеру, есть несколько сервисов, находящихся в рамках единой компании. Для входа на каждую из них, пользователю требуется ввести логин и пароль. Имея технологию SSO, пользователю будет достаточно авторизоваться на одном из сервисов, чтобы получить доступ ко всем остальным. Более подробную информацию вы можете найти на страницах википедии. В этой статье речь пойдет только об установке сервера SSO на основе OpenAM под управлением web-сервера Jetty с использованием LDAP сервера OpenDJ от той же компании ForgeRock. Вся эта установка будет производиться под CentOS 6.2.

среда, 11 июля 2012 г.

Определение кодировки текста в PHP и Python

В очередном проекте, понадобилось мне определить кодировку текста, который возвращался в виде XML. Для определения кодировки я уже достаточно давно использовал очень простую функцию, которую сам и написал. Но по воли случая, её не оказалось под рукой. И какой бы функция простой не была, хоть и знал общий принцип её работы, писать её заново мне совершенно не хотелось. Да, обленился я в край, тут уж ничего не поделаешь. И так как ждать мне не хотелось ещё больше, чем переписывать, я, понятное дело, побежал спрашивать Google, чем он мне может помочь...
Чего я только не нашел в его предложениях! Кто-то мистическим образом пытается определить кодировку через preg_match, ограничиваясь кодировкой UTF-8. Кто-то в разных кодировках "парсит" тома "Война и мир" на двубуквенные совпадения, получая на выходе достаточно массивные файлы, при чем для каждой кодировки - собственный. Кто-то даже добрался до исходников mbstring, так как в какой-то кодировке он возвращал не верный результат! Меня хватил шок от увиденного! Я понял одно, что из найденных вариантов, подобную "залипуху" в свой код я пихать не собираюсь, поэтому решение отложил на следующий день. К тому же, мне по проекту это требовалось для отладочной информации: мог спокойно потерпеть и смотреть на возвращающиеся "зюки" и вопросики. Однако, мысли о том, что нужно поделиться с народом как простым способом определить кодировку без подключения сторонних библиотек, меня подтолкнули на написание данной статьи.

четверг, 28 июня 2012 г.

Установка Redmine на CentOS 6.2 (Часть 3)


Продолжение статьи об установке Redmine на сервер под управлением CentOS 6.2. Первую часть вы можете прочитать здесь, вторую часть - здесь.
В этой части мы всё таки доберемся до установки самого Redmine, http-сервера Apache и модуля Passenger, а так же сделаем нужные настройки для полноценной работы всей связки установленных пакетов.
Поехали...

Установка Redmine на CentOS 6.2 (Часть 2)

Продолжение статьи об установке Redmine на сервер под управлением CentOS 6.2. Предыдущую часть вы можете прочитать здесь.
В этой части мы установим сервер базы данных MySQL, пакеты для работы с графикой ImageMagick и RMagick, а так же установим поддержку TrueType шрифтов. Стрижка только началась.
Поехали...

Установка Redmine на CentOS 6.2 (Часть 1)

Неожиданно для самого себя подкралась мне задачка: на тестовом сервере установить Redmine для экспериментов. Первая мысль которая у меня всплыла в голове "Да плёвое дело! Не первый раз ставлю разного рода программы, и с этим справимся!!!" Не ожидал я того, что меня ждёт целый квест, на выполнение которого уйдёт ни много ни мало - 2 дня!!! (тут должен быть смайл бьющийся головой об стену, но решил сильно не драматизировать ситуацию).
Первым делом конечно же нырнул на сайт производителя, покурить маны, как там и что ставится. С первого взгляда, все понятно и просто. Однако, первое что меня смутило, что работает он под управлением Ruby. Так как мне ни разу не приходилось им пользоваться, решил всё таки "погуглить" на момент подводных камней при установке, чтобы быть во всеоружии. Google тут же щедро поделился ссылкой на блог, где кто то уже пытался установить Redmine на CentOS. Ну так вообще замечательно!!! Как говорится: то что доктор прописал. Да вот не задачка: блог написан коряво, да ещё английский вперемешку с японским языком. С английским я более менее могу справиться, но вот с японским!!! Собственно, не мудрствуя лукаво, решил оставить себе "узелок на память" и записать последовательность своих действий, не подозревая какая эпопея меня поджидает.

четверг, 1 марта 2012 г.

Использование памяти в JAVA (Часть 2)

Как я писал в предыдущей статье "Использование памяти в JAVA (Часть 1)", для более эффективного получения данных тестирования, я решил создать отдельный класс.  Лучшим примером для меня показалось создать класс, содержащий в себе различные типы данных, нежели если это будет класс с однотипными элементами. В качестве членов класса я использовал типы данных, которые чаще всего применяются для написания программ. Некоторые типы преднамеренно не стал включать (например, тип short), потому что практически ими никогда не пользуюсь. Всем членам класса я установил модификатор private, их "геттерам" и "сеттерам" - public.

среда, 29 февраля 2012 г.

Использование памяти в JAVA (Часть 1)

Разрабатывая очередную программу для Android, столкнулся с моментом, когда нужно было создать сложную структуру. Проблем с созданием структуры вообще никаких не возникло: средств для этого в JAVA больше чем предостаточно. Но вот какой тип данных или объект применить для определенного элемента? Vector или ArrayList? А может просто массив? Интеровских "холиваров" по этому поводу "пруд пруди", но опираться на них - бессмыслено. "Каждый кулик своё болото хвалит" либо потому что ему так нравится использовать тот или иной тип данных или объект, либо потому что его так научили. Лично меня научили, что нельзя бездумно тратить память компьютера, она увы не бесконечна... И даже сейчас во времена гигабайтных размеров оперативки. А в то время, когда "дереья ещё были большими", слово "мегабайт" применялась только в специализированных журналах и то исключительно для суперкомпьютеров. Обыденному пользователю такая роскошь была просто напросто недоступна. Поэтому и приходилось "экономить на спичках", что выросло в привычку взвешивать каждое объявление переменной. Однако, признаюсь честно, если бы я писал приложение для персоналки, я бы даже не заморачивался по этому вопросу, сделал бы как удобно. Но, приложение пишется для девайсов под управлением Android, и малое наличие оперативной памяти на многих моделях, сказывается пагубно. Для некоторых "прожорливых" приложений если с натягом и хватает загрузить какое то приложение в память телефона, то для его установки памяти уже не остается. Поэтому я стараюсь избегать таких моментов, тщательно анализируя то, что я создаю. Однако, одно дело взвешивать подобные действия "в слепую", другое дело опираться на реальные факты. Именно поэтому я решил разобраться более детально с этим вопросом.

понедельник, 13 февраля 2012 г.

Пристегнулись простынями... От Винта!!!

Я всех приветствую на своём блоге!..
М-да... Никогда бы не подумал, что когда то наступит тот момент, когда я начну писать свой блог. Всегда был противником этих блогов. Чем то они мне напоминают мемуары, которые пишутся под старость лет. Но увы и ах. Новые технологии принуждают к этому: потребовалось использование Google AdSense, а его использование подразумевает показ рекламы на своём сайте/блоге, которого у меня нет (точнее, не было).
Конечно же, можно было обойтись созданием пустой болванки страницы, напихать туда рекламы и успокоиться. Но это как то не по спортивному, если уж что либо создавать, то по нашему, по взрослому! Как учили...
Что вы сможете найти на страницах блога? Пока точно не знаю, информации достаточно много, чем я могу поделиться, а если и не поделиться, то для себя оставить "узелок на память". Возможно, постепенно я выложу всю информацию, возможно, на этом приветственном сообщении я остановлюсь и больше вообще сюда заходить никогда не буду. Всё возможно, но время - фактор, оно покажет. Тематика я думаю уже для многих стала понятна из названия блога: компьютерная и околокомпьтерная, но чаще конечно же связанная с программированием.
Ну а дальше посмотрим, что из этого всего выйдет.
Поехали!