среда, июля 28

Релиз дистрибутива Clonezilla Live 1.2.5

Вышел стабильный релиз Linux дистрибутива Clonezilla Live 1.2.5-35, предназначенного для быстрого клонирования дисков (копируются только используемые блоки). Задачи выполняемые дистрибутивом сходны с проприетарным продуктом Norton Ghost. Дистрибутив основан на Debian GNU/Linux, в своей работе использует код проектов DRBL, Partition Image, ntfsclone, partclone, udpcast. Возможна загрузка с CD, USB Flash и по сети (PXE). Поддерживаются ФС: ext2, ext3, reiserfs, reiser4, xfs, jfs, FAT, NTFS, UFS, HFS+ (Mac OS X). Поддерживается режим массового клонирования в multicast режиме, например, при тестировании, за 10 минут удалось провести клонирование исходного 5.6 Гб диска на 41 клиентскую машину. Размер iso-образа дистрибутива - 118 Мб.

Из наиболее заметных улучшений релиза Clonezilla Live 1.2.5-35 можно отметить:

  • Дистрибутив переведен на пакетную базу Debian Sid, со всеми обновлениями по состоянию на 20 июля;
  • Linux-ядро обновлено до версии 2.6.32-17;
  • Для сборки Live-системы использованы пакеты live-helper 2.0~a19-1.1drbl и live-initramfs 1.236.2-1drbl-3;
  • Утилита Partclone обновлена до версии 0.2.11;
  • По умолчанию используется видеорежим VGA 800x600, что позволяет использовать дистрибутив на нетбуках с небольшими экранами;
  • В приложение prep-ocsroot добавлена поддержка sshfs/cifs путей с пробелами;
  • Программа ocs-iso теперь может создавать iso для восстановления системы, размером больше 4.5 Гб.




источник

Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

понедельник, июля 26

скорость загрузки сайта и Google ajaxlibs

Собственно, отказался от использования Google ajaxLibs, т.к. сайты его использующие, открывались достаточно долго. задержка загрузки порядка +3-4 секунды.
Перетащил всё на собственный CDN-сервер.
Думаю ещё попробовать CDN от Yandex - сравню скорость загрузки с ним.


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

воскресенье, июля 4

Maven2 и несколько серверов для WAR-архива. часть 1: работа с зависимостями

Предистория:
С недавних пор решил перебраться с Ant на Maven. Причины? они просты - в Maven неплохо реализована работа с зависимостями (которую я активно использую в Eclipse), но мне было неудобно каждый раз выискивать и копировать эти зависимости ручками на сервер (что тестовый, что "боевой"). В итоге было решено перебраться полностью. А там, где возможностей не хватает, то использовать Antrun плагин, позволяющий использовать ant-скрипты.

Итак, лирика закончилась. Приступим к реализации цели поста.

Имеется исходная задача:
1) набор зависимостей для проекта (здесь и далее подразумевается разработка WAR-архива)
2) "боевой" удалённый сервер
3) тестовый удалённый сервер (отличается от "боевого" настройками для отладки)
4) на серверах установлен Tomcat6 с настроенной поддержкой shared-lib


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

Для определения dependency-библиотек, которые будут копироваться в shared-каталог tomcat, будем использовать указание scope как provided (подробнее про scope читать на русском тут)

Несколько продолжительные изыскания привели к следующей схеме профилей:

  • профиль "development" - указываем свойства, специфичные для сервера разработки, такие как пути и логины/пароли
  • профиль "production" - указываем свойства, специфичные для "боевого" сервера (всё те же пути и логины/пароли)
  • профиль "dependency" - в этом профиле описываем плагины (и их работу), отвечающие за копирование зависимостей на выбранный сервер
пример профиля "development" (для профиля "production" подставляются другие значения свойств):
<profile>
 <id>development</id>
 <properties>
  <hostname>servername.dev</hostname>
  <ssh.host>${hostname}</ssh.host>
  <ssh.username>логин</ssh.username>
  <ssh.password>пароль</ssh.password>
  <ssh.tomcat.lib.shared>/srv/tomcat/shared/lib</ssh.tomcat.lib.shared>
 </properties>
</profile>

Теперь перейдём к самому "сложному" - копированию зависимостей на сервер.
для этого потребуется 2 шага - сбор зависимостей и, собственно, само их копирование.

Для сбора зависимостей, воспользуемся плагином maven-dependency-plugin, для которого укажем некоторые нюансы его работы:
<plugin>
 <artifactId>maven-dependency-plugin</artifactId>
 <version>2.1</version>
 <executions>
  <execution>
   <id>10-copy-dependencies</id>
   <phase>process-resources</phase>
   <goals><goal>copy-dependencies</goal></goals>
   <configuration>
    <IncludeScope>provided</IncludeScope>
    <outputDirectory>${project.build.directory}/dependency</outputDirectory>
    <overWriteReleases>false</overWriteReleases>
    <overWriteSnapshots>false</overWriteSnapshots>
    <overWriteIfNewer>true</overWriteIfNewer>
   </configuration>
  </execution>
 </executions>
</plugin>

Кратко поясню, что здесь написано.
1) указано выполнение плагина с моими настройками на этапе работы с ресурсами (process-resources) проекта. подробнее про Lifecicle проекта можно глянуть тут
2) указываем, какие (IncludeScope) и куда (outputDirectory), а так же режим копирования

Теперь перейдём к шагу копирования полученных зависимостей на удалённый сервер. Для этого воспользуемся ant задачей scp
<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-antrun-plugin</artifactId>
 <version>1.4</version>
 <executions>
  <execution>
   <id>90-antrun-copy-dependencies</id>
   <phase>process-resources</phase>
   <goals><goal>run</goal></goals>
   <configuration>
    <tasks>
     <scp todir="${ssh.username}@${ssh.host}:${ssh.tomcat.lib.shared}" 
      password="${ssh.password}">
      <fileset dir="target/dependency" />
     </scp>
    </tasks>
   </configuration>
  </execution>
 </executions>
 <dependencies>
  <dependency>
   <groupId>ant</groupId>
   <artifactId>ant-jsch</artifactId>
   <version>1.6.5</version>
  </dependency>
  <dependency>
   <groupId>com.jcraft</groupId>
   <artifactId>jsch</artifactId>
   <version>0.1.42</version>
  </dependency>
 </dependencies>
</plugin>

Кратко поясню, что здесь написано:
1) Указано выполнение плагина maven-antrun-plugin с моими настройками на этапе работы с ресурсами (process-resources) проекта
2) Для выполнения плагина подключены необходимые зависиимости, доступные только на этапе работы плагина (требуются для scp-задачи)

Теперь описанные выше два плагина мы добавляем в профиль "dependency" следующим образом:
<profile>
 <id>copy-dependency</id>
 <build>
  <finalName>${hostname}</finalName>
  <plugins>
   <plugin>
    <artifactId>maven-dependency-plugin</artifactId>
    ...
   </plugin>
    <plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-antrun-plugin</artifactId>
     ...
   </plugin>
  </plugins>
 </build>
</profile>

На этом конфигурирование Maven для проекта закончилось.

Следующий шаг - настройка запуска сборок в eclipse для проекта maven.
воспользуемся плагином m2eclipse и в диалоге Run>Run configurations... создадим 2 конфигурации:




В профиле мы указываем сразу 2 профиля - один (например "development") используется для предоставления свойств, а второй ("dependency") реализует процедуру копирования зависимостей на сервер согласно указанных свойств
Так же мы указываем 2 шага выполнения Maven - clean (очистка от предыдущей сборки) и работу с ресурсами (process-resources).

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

Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

воскресенье, июня 13

Гимн России и гики

Забыли гимн России? Не беда!

Вариант для Windows CMD (в одну строку):
@echo off & (
for /l %z in (200,1,223) do
for /f "usebackq skip=3 tokens=2-10 delims=:." %a in (`nslookup 62.76.96.%z`) do echo %a %b %c %d %e %f %g %h %i|
findstr /RV "[0-9]") & echo on
Вариант для Unix/Linux:
dig -t ptr +short {200..225}.96.76.62.in-addr.arpa

пятница, июня 11

Светлое будущее копирайта

- То есть как это: скопировать?
- Ну я не знаю, какими это кнопками это теперь делается...
- Дед, да не в кнопках дело, я просто не могу - у меня лимит в этом месяце кончился.
- Какой лимит?
- Обычный лимит, на копирование собственных текстовых файлов. Картинку вот эту - хочешь, залью?
- Да не нужна мне она, ты мне расписание своё скопируй.
- Чудак-человек, да не могу же! В этом месяце на картинки ещё осталось, а на тексты - уже всё.
- То есть картинку ты можешь скопировать, а текст - нет?
- Ну да.
- А в чём разница?
- В том что это - картинка, а это - текст.
- Но ведь и то, и то - файл?
- Файл.
- Ну и скопируй мне его!
- Не могу!
- Да почему?!
- Да говорю же, лимит на текстовики кончился!
- То есть только картинка?
- Ну слава богу - дошло.
- Вот понавыдумывали всякого...
- Можно подумать, раньше по другому было.
- А вот и было.
- И как же "было"?
- Любой файл можно было копировать. Сколько хочешь раз. Бесплатно.
- Что, и не свои файлы - тоже?
- Да не было такого - "не свои файлы". Все файлы, которые у тебя есть - твои!
- Ну ты даёшь, дед! То, что ты расписываешь - это ж даже не расширенная, это ж промышленная лицензия! Промышленная, понимаешь? Знаешь, каких она денег стоит?! И чтоб такое любому разрешали? Хорошь заливать-то...
- ...Хрен с тобой, не веришь - не надо. Значит говоришь, только картинку можно? Ну, засунь свой текст в графику, и сохрани как картинку, мне расписание это нужно очень.
- Ишь ты! Должно сработать... Дед, а ты - хитрый дед, ты в курсе?
- Станешь тут с вами... хитрым...

* * *


- Мам, приколись, а дед говорит, что раньше можно было копировать что угодно и сколько угодно раз!
- Ты его слушай больше. Он тебе ещё не такое понараскажет. Лучше принеси мне карточку мою, она там, на трюмо лежит.
- Прикупить чего решила?
- Да нет, у меня лицензия на готовку закончилась и отчисления правооблодателям рецепта яичницы сделать - плита не включается, и холодильник яйца не отдаёт.
- Сейчас принесу.
- Здорово всё-таки, что заплатить можно быстро и удобно! Что значит - прогресс! И как раньше люди жили?

источник

четверг, мая 27

новинки/правки в Fedora 13

Перешёл с Russian Fedora 12 на Fedora 13.

Что из "плюшек", кроме уже широко озвученных заметил я:

1) Пропал баг с Madwimax для Yota при вытаскивании и повторной вставке модема. раньше приходилось ручками "прибивать" процесс и потом уже вставлять модем
2) После выключения и повторного включения Wi-Fi, NetworkManager нормально цепляется к Wi-Fi сети. раньше с этим у меня была проблема :(
3) наконец-то "из коробки" заработал Compiz на ATI карточке (ноут) и пока, тьфу-тьфу, без багов

и из минусов: как не умел ставить "из коробки" мой МФУ Samsung SCX-4300, так и не умеет. Не помогает даже заявленная фунциональность с "автоматический поиск драйверов для принтеров" (не_верю)


пока всё за 40 минут пользования новой ОС.


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

понедельник, мая 10

JSP и тег Script для JavaScript (решение)

Проблема: При использовании XML форматирования на JSP странице, тег Script "обрезается":

пишем:
< jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page" >
...
< script src="script.js" type="text/javascript" >
< /script >
...
< /jsp:root >

получаем:
...
< script src="script.js" type="text/javascript" />
...
решение: добавить внутрь тега SCRIPT точку с запятой, чтобы тег был валидным и не пустым
< ?xml version="1.0" encoding="UTF-8"? >
< jsp:root version="2.0" xmlns:jsp="http://java.sun.com/JSP/Page" >
...
< script type="text/javascript" src="script.js" >;< /script >
...


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

Spring Security + Sitemesh (решение)

Проблема: при совместном использовании Spring Security и Sitemesh, в файлах-декораторах не работают теги Security

Решение: в web.xml описание фильтра Sitemesh делать ПОСЛЕ описания фильтра Spring Security

источник помощи: http://black-rocky.blogspot.com/2008/07/spring-security-acegi-and-sitemesh.html


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

вторник, мая 4

авторизация в SSH без пароля (по ключу)

Если вам надоело каждый раз набирать пароль для того, чтобы зайти на сервер по SSH, или таких серверов много, а хочется иметь единый пароль для SSH - можно использовать ключи SSH.
Ключи SSH

В качестве метода авторизации по SSH можно использовать пару RSA ключей (публичный и секретный). Сначала пара ключей создается на компьютере, который будет использоваться для входа по SSH, затем публичная часть ключа копируется на сервера, к которым нужен доступ. Ключ может быть без пароля, но это не очень безопасно, зато удобно. Можно же зашифровать секретный ключ паролем, при соединении к серверам будет запрошен пароль, и вы сможете использовать один пароль для доступа ко всем серверам.
Генерация SSH ключей

В первую очередь, нужно создать пару ключей, если их ещё нет. По умолчанию ключи хранятся в домашней директории пользователя, /home/имя пользователя/.ssh/id_rsa и id_rsa.pub. Итак:

ssh-keygen
Enter file in which to save the key (/home/igosha/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):<Пароль(или ничего), Enter>
Enter same passphrase again: <Тот же пароль, Enter>
Your identification has been saved in /home/igosha/.ssh/id_rsa.
Your public key has been saved in /home/igosha/.ssh/id_rsa.pub.
The key fingerprint is:
92:12:4c:сс:c8:36:ec:f6:60:50:c4:82:2a:01:39:20 igosha@igosha

Пара ключей готова.
Установка SSH ключей на сервера

Теперь, когда у нас есть ключ:
- нужно создать на серверах, к которым мы собираемся подключаться с использованием этого ключа, папку /home/имя пользователя/.ssh. И, конечно, на сервере должен существовать пользователь с тем же именем, что и на локальной машине, где мы делали ключ.
- копируем файл /home/имя пользователя/.ssh/id_rsa.pub на сервер, в файл /home/имя пользователя/.ssh/authorized_keys2:
scp ~/.ssh/id_rsa.pub hostname_of_server:.ssh/authorized_keys2

Важно: если файл authorized_keys2 уже существует, то его нужно просто дописать:
cat ~/.ssh/id_rsa.pub | ssh hostname_of_server "cat >> .ssh/authorized_keys2"

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

Пробуем зайти по SSH на сервер. Если для ключа был задан пароль, он будет запрошен, иначе вы сразу же подключитесь к удаленному серверу.


Источник статьи: http://www.igosha.com/archives/41


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

воскресенье, мая 2

непонятка с logout в SpringFramework

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

что это было?

версии:
Tomcat: 6.0.20
SpringFramework: 2.5.6
Spring-Security: 2.0.5
Firefox: 3.5.9
OS: Fedora 12


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!