<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8476919213162927548</id><updated>2011-12-11T10:08:59.378+02:00</updated><category term='mantis'/><category term='linux'/><category term='firefox'/><category term='flash'/><category term='centos'/><category term='java'/><category term='tips'/><category term='linux mysql'/><category term='лытдыбр'/><category term='mac windows net'/><category term='junit'/><category term='openvpn'/><category term='fonts'/><category term='mp3'/><category term='eclipse'/><category term='lvm'/><category term='ubuntu'/><category term='yandex'/><category term='mute'/><category term='cp1251'/><category term='svn'/><category term='google'/><title type='text'>Мои заметки обо всем</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-1072081668667959728</id><published>2011-12-09T01:17:00.001+02:00</published><updated>2011-12-09T01:34:59.126+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>советы тем кто подрастает</title><content type='html'>Хотел называть “крик души”, но потом в конце написания поста, решил изменить название на “советы тем кто подрастает”.&lt;br&gt;
&lt;br&gt;
В общем есть у меня знакомый, который около двух месяцев назад, попросил поревьювить их код. Код не замысловатый, молодой проект, так что посмотреть все это дело не заняло много времени... Замечания в основном были по архитектуре, о том как код упростить, ну и как сторонник TDD, естественно был у меня главный вопрос - “а где тесты?”.&lt;br&gt; 
Естественно о TDD они слышали. В просторах сети читали, вроде бы даже смотрели видео, якобы даже пробовали использовать, но как это применить на конкретно ихнем примере - тут уже сложнее. У меня ушло около недели (это где-то 3-4 часа моего времени), за которое я внес изменение в их базовые классы и естественно написал базовые тесты, так сказать на примере показать, что есть TDD. В качестве напутствия приложил файлик с книгой “Мартин Р. - Чистый код. Создание, анализ и рефакторинг”.&lt;br&gt;
&lt;br&gt;
Результат - сегодня на почте я нашел письмо, с примерным содержанием “переделали, посмотри, мы растем, ждем ответ”, полез смотреть... начал писать ответ в письме, но вместо этого решил написать заметку в блог, что бы и другие не наступали на эти грабли.&lt;br&gt;
Повторяю, прошло около двух месяцев, за это время проект не сдвинулся со своего места... т.е. целая команда, полностью перестала развивать проект, они остановили всю разработку ради того что бы внедрить TDD и переписать код, причем код проекта, который еще не запущен - смысл? &lt;br&gt;
&lt;b&gt;Совет 1: Любые нововведения не должны останавливать процесс разработки продукта, Ваша задача делать продукт, а не код.&lt;/b&gt; Как бы нам не хотелось сделать все по уму, этого не получится, любой код должен эволюционировать, старые куски должны переписываться (это не сомненно). Код который Вы сейчас пишите, используя все Ваши знания, через некоторое время, для Вас покажется устаревшим, и возникнет желание переписать. Но тогда у нас будет не разработка и улучшение конкретного продукта, а улучшение кода. А кому кроме программиста этот код нужен? Хорошо написанный код может доставить эстетическое удовольствие только тому программисту, который его написал, т.к. для других он будет либо слишком тривиален, либо слишком сложным. Единственное что волнует заказчика/начальника/клиента - код работает согласно требованию.&lt;br&gt;
&lt;br&gt;
Едем дальше. Начал просматривать тесты, беглый осмотр и очередная ошибка, её сотню раз обсуждали, во всех статьях это описано, но почему-то многие эту ошибку допускают.&lt;br&gt;
например (пример утрированный):

&lt;pre class="brush:java"&gt;
package ua.lg.moon;
public class MyClass {
 public static int sum(int a, int b){
  return a+b;
 }
 public static int diff(int a, int b){
  return a-b;
 }
}
&lt;/pre&gt;

&lt;pre class="brush:java"&gt;
package ua.lg.moon;
import static org.junit.Assert.*;
import org.junit.Test;
public class MyClassTest {
 @Test
 public void testSum() {
  assertEquals(4, MyClass.sum(2, 2));
  assertEquals(6, MyClass.sum(4, 2));
 }
 @Test
 public void testDiff() {
  assertEquals(MyClass.sum(2, 2), MyClass.diff(6, 2));
  assertEquals(MyClass.sum(4, 2), MyClass.diff(10, 4));
 }
}
&lt;/pre&gt;

Вопрос на засыпку: что мы получим, когда у нас в методе sum будет ошибка?&lt;br&gt;
Ответ: Мы получим 2 не рабочих теста. Это не проблема, когда у нас один класс и два метода-теста, а возьмем реальную систему, где в сотнях, а иногда даже тысячах классов-тестов есть по более десятка методов. И кто-то допускает ошибку в коде, аналогичному методу sum, который используется для сравнения, или предполагается что он “уже проверен и работает”. Результат у нас куча провалившихся тестов.&lt;br&gt;
&lt;b&gt;Совет 2: Каждый тест должен проверять только свою часть.&lt;/b&gt; Он не должен зависеть от тех классов которые проверяются в других тестах и которые могут работать не верно. В коде который я ревьювил, я сделал специально ошибку, в классе который получает игрока (в поле игрока, его номер всегда возвращался 1), я получил 80% не рабочих тестов, и если бы я эту ошибку не допустил специально, то найти что ж в коде пошло не так - это уже проблема. Т.е. если мы проверяем в тесте “игровую доску”, и классу “доски”, что бы тест прошел нам нужно передать двух игроков - их лучше создать с нужными параметрами, а не использовать общее хранилище для получения - т.к. при проверке доски мы будем зависеть от работоспособности хранилища пользователей (не важно виртуальное оно или реально). А при поломке хранилища пользователей - у нас так же не проходит тест по “игровой доске” и все остальные тесты.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Совет 3: Называйте тесты так, что бы из названия сразу было видно - что этот метод проверяет.&lt;/b&gt; Когда падает тест test32 - “expected:&lt;...&gt; but was:&lt;...&gt;”, то в любом случае придется “заходить” в тест, хорошо если в нем есть комментарии, намного удобнее писать имя теста так - что бы было понятно что он проверяет. Хотя бы так: testPlayerBoardNotNull - уже большинству будет понятно, что этот тест проверял. А вообще есть много способов, некоторые пишут should, или expect и т.д. - тут уже дело каждого, как Вы будете именовать Ваши тесты, сам факт в том - что бы если тест упал - можно было как можно быстрее понять - что упало.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Совет 4: Прочесть книгу “Совершенный код. С. Макконел”.&lt;/b&gt; Не важно на каком языке Вы пишете, к любому языку можно отнести то что там написано. Вроде бы код работает, но с первого раза глядя на функцию, понять что он делает - практически не реально, благо хотя бы многие функции имеют описание и достаточно в IDE на функцию навести мышь - что бы узнать “что она делает”. Перечислять постулаты книги смысла нету, так что по коду это извечная проблема многих команд. Прочесть и понять.&lt;br&gt;
&lt;br&gt;
&lt;b&gt;Совет 5: Предполагайте, что ваш “движок” может поменяться.&lt;/b&gt; Практически все системы что я видел очень сильно связаны с конкретной базой данных, либо некой внешней библиотекой, пример будет про хранение. Обычно после того как людям рассказываешь базовые вещи по архитектуре, для чего все таки нужны абстрактные классы, интерфейсы, как применить это в TDD, то через время у них получается примерно следующее. Есть некий абстрактный класс, например Players у которого есть методы list, get, add, edit и т.д... а затем у них есть PlayersImplMemory и PlayersImplMySql&lt;br&gt;
Соответственно первый хранит все в хешмапе и используется для тестов, а второй уже в промо. Люди которые вроде бы знают что такое “дублирование кода”, сами же его допускают, в обоих классах у них в методе add идет валидация входных данных. Соответственно если я проверяю в тесте валидацию или получение для Memory модели, это не значит что это будет “справедливо” для MySql модели. Более логично - создать класс который будет иметь в себе валидацию, все что общее, например Players, а использовать уже абстрактный класс или интерфейс для хранения, например PlayerStorage. Storage - принимает “сырые данные” и надеется что они будут “правильными” и сохранять их уже в конкретной ситуации либо в памяти, либо в конкретной БД или в шарде, тут уже можно в любой момент поменять направление.&lt;br&gt;
&lt;br&gt;
Ну и на последок, самое главное: &lt;b&gt;ваша программа должна быть как конструктор&lt;/b&gt;. Каждый кубик - это класс/интерфейс, и если смотреть “сверху” - все должно сводится к “передал параметры”, “получил результат”... если Вы сначала подумаете о том, какие у Вас будут входные параметры, и какие результаты Вы хотите получить, то реализовать это уже вопрос времени. Любую даже самую казалось бы сложную и громоздкую задачу, можно описать нормально и реализовать. 
Как пример: мне нужно было в уже существующей системе переделать отчеты. В БД лежат данные, в варианте “до меня” был класс и метод, у которого порядка 5-10 параметров передавалось на вход, на выходе String. Нужно генерировать 3-4 типа отчетов и каждый из них должен быть либо в HTML либо в том же HTML но для печати... &lt;br&gt;
В том классе который существовал, там было порядка 4-5 методов приватных, в среднем класс был на 300-400 строк. Тот кто писал - постарался, повыносил все дубликаты формирования в методы и т.д... но меня не устроило - то что в одном месте были собраны как логика получения - так и логика формирования...&lt;br&gt;
После моей переделки у меня получился 1 абстрактный класс TableDataSource, который умел формировать данные из БД, собрать три листа, для thead, body и tfoot. И соответственно под каждый отчет был написан свой наследник, и что бы не запоминать их имена, я создал еще “фабрику”, где были методы getMonthReport, getYearReport и т.д. Соответственно так же у меня получился 1 абстрактный класс TableRender, который в качестве параметра принимал TableDataSource и возвращал String. И уже два наследника TableRenderHtml, TableRenderPrintHtml. После чего добавление нужного отчета сводилось к созданию нового TableDataSource.&lt;br&gt;
&lt;br&gt;
В общем как-то так...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-1072081668667959728?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/1072081668667959728/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=1072081668667959728' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/1072081668667959728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/1072081668667959728'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2011/12/blog-post.html' title='советы тем кто подрастает'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-5322591081009272541</id><published>2011-10-01T12:39:00.001+03:00</published><updated>2011-10-01T12:39:20.222+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='лытдыбр'/><title type='text'>Типа непутевые заметки...</title><content type='html'>Планировал вести заметки каждый день и выкладывать их регулярно, но как оказалось - не все получается так как хочется. Первую неделю моего отпуска мы были довольно таки далековато от тырнета и такой возможности не было. Купленная карточка укр-телекома там отказывалась работать напрочь, поэтому начал вести "заметки" в Evernote. С Evernote было удобно, до тех пока я не уперся в лимит 60Мб который там отведен, для бесплатного аккаунта. Поэтому последние дни своего отдыха я писал напрямую в G+, ну а сейчас решил все это соединить в один пост и дописать не хватающие дни )&lt;br /&gt;
&lt;br /&gt;
Изначально отпуск планировался из серии - приехать, снять хату, жарить кожу на солнце, жарить печень пивом, где-то недалеко от моря, но по некоторым причинам, вышло немного не так... &lt;br /&gt;
&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt; &lt;br /&gt;
&lt;b&gt;День 1&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Начался мой отпуск с поездки в &lt;a href="http://vitino.crimea.ua/active/cmfvitino.php"&gt;Центр морской рыбалки "Витино"&lt;/a&gt;. Там мы познакомились с хозяином данного центра Максимом и его семьей. Прибыли мы туда 20 числа, вся дорога из Луганска заняла практически сутки. Когда подъезжали к с.Витино, то заметили на горизонте антену, думал что это РЛС.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NKSnz8dIlMM/Toas5DWEpXI/AAAAAAAABzc/SShOva81h2Q/s1600/DSCF6205.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-NKSnz8dIlMM/Toas5DWEpXI/AAAAAAAABzc/SShOva81h2Q/s400/DSCF6205.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kb6G7Cae9H8/Toas5X-lHRI/AAAAAAAABzk/lPJq5tgGJGw/s1600/DSCF6217.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-kb6G7Cae9H8/Toas5X-lHRI/AAAAAAAABzk/lPJq5tgGJGw/s400/DSCF6217.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Как оказалось, это радиотелескоп, а по соседству находится &lt;a href="http://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9_%D1%86%D0%B5%D0%BD%D1%82%D1%80_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B8_%D0%B8%D1%81%D0%BF%D1%8B%D1%82%D0%B0%D0%BD%D0%B8%D0%B9_%D0%BA%D0%BE%D1%81%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D1%85_%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2"&gt;НЦУВКЗ&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-1l8Dtbkzrlk/ToatD6qtiKI/AAAAAAAABzs/qeL3bNXLU0I/s1600/DSCF6202.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-1l8Dtbkzrlk/ToatD6qtiKI/AAAAAAAABzs/qeL3bNXLU0I/s400/DSCF6202.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Комната, которую нам дали, была с тремя кроватями и санузлом, все чисто и аккуратно. Сам центр так же на все 100% был ухожен и чист. В центре "обитают" коты, причем все рыжые )&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-eIaDpq63ivc/ToatcflSaCI/AAAAAAAABz0/8A8olGMvIcQ/s1600/DSCF6218.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-eIaDpq63ivc/ToatcflSaCI/AAAAAAAABz0/8A8olGMvIcQ/s400/DSCF6218.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-KFylQxADM88/ToatcmkGyiI/AAAAAAAABz8/DoRZFmUPkNY/s1600/DSCF6204.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-KFylQxADM88/ToatcmkGyiI/AAAAAAAABz8/DoRZFmUPkNY/s400/DSCF6204.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-6Cz8GiNoG44/Toatc6i7HGI/AAAAAAAAB0E/UR8h9CHr_QM/s1600/DSCF6233.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-6Cz8GiNoG44/Toatc6i7HGI/AAAAAAAAB0E/UR8h9CHr_QM/s400/DSCF6233.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-BmV2X8hzrWM/Toatc8NWGxI/AAAAAAAAB0M/Gw5OacN4WTc/s1600/DSCF6236.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-BmV2X8hzrWM/Toatc8NWGxI/AAAAAAAAB0M/Gw5OacN4WTc/s400/DSCF6236.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ATppIwBhFRs/ToatdJdQAaI/AAAAAAAAB0U/MtKJudkPhl0/s1600/DSCF6240.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-ATppIwBhFRs/ToatdJdQAaI/AAAAAAAAB0U/MtKJudkPhl0/s400/DSCF6240.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Ey6fHQv8Q_4/ToatvltNlPI/AAAAAAAAB0c/tdTZNkdqH4U/s1600/DSCF6241.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-Ey6fHQv8Q_4/ToatvltNlPI/AAAAAAAAB0c/tdTZNkdqH4U/s400/DSCF6241.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Zuaa5PdLrKM/Toatvw5g7DI/AAAAAAAAB0k/KSyqYMLMIaE/s1600/DSCF6498.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-Zuaa5PdLrKM/Toatvw5g7DI/AAAAAAAAB0k/KSyqYMLMIaE/s400/DSCF6498.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-n3paAuQCu20/ToatwC0Qg0I/AAAAAAAAB0s/vPNMYjXCdpk/s1600/DSCF6499.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-n3paAuQCu20/ToatwC0Qg0I/AAAAAAAAB0s/vPNMYjXCdpk/s400/DSCF6499.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-jeyYQ6etPxA/ToatwGerUfI/AAAAAAAAB00/hmAAlFAze0E/s1600/DSCF6500.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-jeyYQ6etPxA/ToatwGerUfI/AAAAAAAAB00/hmAAlFAze0E/s400/DSCF6500.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-aHKUQ4FR1C0/ToatwcdB9DI/AAAAAAAAB08/WVTz1165diM/s1600/DSCF6517.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-aHKUQ4FR1C0/ToatwcdB9DI/AAAAAAAAB08/WVTz1165diM/s400/DSCF6517.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Как нас и предупреждали, цены в Крыму "забавные". До Евпатории таксисты начинали цену от 150 за человека и заканчивали 80. Маршрутки частные от 50 и ниже, но минимум - 35. В итоге в кассе были куплены билеты по 20 грн. Аналогично и с Евпатории в Витино, цена начиная от 25... вообщем купили в кассах по 7грн.&lt;br /&gt;
Сходили на море.... вода для купания конечно немного холодновата, но был народ который купался. С берега кстати видно республику Z, в хорошую погоду.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Z1gExZg1cUo/ToauI6S2KoI/AAAAAAAAB1E/9xee-Xdp3gA/s1600/DSCF6206.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-Z1gExZg1cUo/ToauI6S2KoI/AAAAAAAAB1E/9xee-Xdp3gA/s400/DSCF6206.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-j8af809j_Gw/ToauJDP3TzI/AAAAAAAAB1M/TN8y95s5dFI/s1600/DSCF6213.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-j8af809j_Gw/ToauJDP3TzI/AAAAAAAAB1M/TN8y95s5dFI/s400/DSCF6213.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Вечером, на мангале, мы приготовили "шашлык" из грудки цыпленка, и до полуночи под пиво общались с Максимом о рыбалке и море.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-wTNqscwePBI/ToauPRQ5uuI/AAAAAAAAB1U/wE4DN8e96BI/s1600/DSCF6228.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-wTNqscwePBI/ToauPRQ5uuI/AAAAAAAAB1U/wE4DN8e96BI/s400/DSCF6228.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;День 2&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
На следующий день мы дрыхли аж до 10 утра, попили чайку и поехали в Евпаторию. В Евпатории немного походили по городу, разведали где есть кафешки с тырнетом. Похавали... цены более ли менее, например яичница с языком стоит 23грн, окрошка 25(правда чет мне она не понравилась). Пифо от 11грн за 0.5.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kHnRaOnhpPw/ToaulwRNVsI/AAAAAAAAB1c/cQ0fK0JVz6Y/s1600/DSCF6249.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-kHnRaOnhpPw/ToaulwRNVsI/AAAAAAAAB1c/cQ0fK0JVz6Y/s400/DSCF6249.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-AjNCKzTYPQk/Toauly3yLxI/AAAAAAAAB1k/0LIXuezfXhg/s1600/DSCF6254.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-AjNCKzTYPQk/Toauly3yLxI/AAAAAAAAB1k/0LIXuezfXhg/s400/DSCF6254.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-YvhlP4EazYg/ToaumNOmHDI/AAAAAAAAB1s/pGApG_tI3lg/s1600/DSCF6261.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-YvhlP4EazYg/ToaumNOmHDI/AAAAAAAAB1s/pGApG_tI3lg/s400/DSCF6261.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-122n_iMMUKs/ToaumXdvjxI/AAAAAAAAB10/TDxlGvlQq5M/s1600/DSCF6269.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-122n_iMMUKs/ToaumXdvjxI/AAAAAAAAB10/TDxlGvlQq5M/s400/DSCF6269.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Перед отьездом купили оснастку для кефали и наживку "&lt;a href="http://www.ruangler.ru/index.php?option=com_content&amp;view=article&amp;id=78:2011-02-12-18-47-07&amp;catid=8:2010-12-11-04-14-18&amp;Itemid=8"&gt;лиманского червя&lt;/a&gt;". Сумарно оснастка обошлась 139грн (один только червь стоит 50грн). Кефаль ловят на очень тонкий крючек на котором прикреплен поплавок. Грузик "пуля" к которому крепится "противозакручиватель" и 2 поводка с крючками. На крючек одевается "лиманскй червь".&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ZeBUGYwj0ck/Toau3ZDCkkI/AAAAAAAAB18/ByRLnKLziA8/s1600/IMG_20110921_174607.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-ZeBUGYwj0ck/Toau3ZDCkkI/AAAAAAAAB18/ByRLnKLziA8/s400/IMG_20110921_174607.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Погода специфическая... солнце жарит от души, но ветер утром был холодный. Утром в Евпатории жена немного замерзла, а через 40 мин уже сходили сума от жары.&lt;br /&gt;
Вечером сходили на прикормку рыбы. Прикармливают с рогатки "секретной" смесью. Замороженными шариками стреляют метров на 70-100. Связали оснастку, попили пифо, договорились пойти на рыбалку утром в 6.45.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;День 3&lt;/b&gt;&lt;br /&gt;
Утро началось в 6.45. Сходили на рыбалку. Впоймали 3 кефали. Хоть и относительно маленькая(в среднем по 300 грамм) - но тянет "шо конь". На море был сильный ветер, поклевки практически не видно. Но все равно - рыбалка понравилась.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Q6TNOPwQei8/ToavKPvAPDI/AAAAAAAAB2E/DG6W8MGurho/s1600/DSCF6277.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-Q6TNOPwQei8/ToavKPvAPDI/AAAAAAAAB2E/DG6W8MGurho/s400/DSCF6277.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1GX6kRgJcTY/ToavKfoMKPI/AAAAAAAAB2M/uVOdLRJZDA4/s1600/DSCF6284.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-1GX6kRgJcTY/ToavKfoMKPI/AAAAAAAAB2M/uVOdLRJZDA4/s400/DSCF6284.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
После рыбалки сьездили в Евпаторию, нашли новую кафешку где вкуснее и дешевле, но вайфая нету 8(. Называется "Обжора", готовят правда очень долго.&lt;br /&gt;
Приблизительно в 16.оо вернулись в село. После дороги нас дико сморило и мы дрыхли до 17.оо. Естественно, когда проснулись - то снова пошли на рыбалку. В этот раз впоймали 2 барабули. Простояли до 19.оо пока не стемнело и пошли на базу. Барабуля оказалась на удивление вкусной рыбой. Утреннюю кефаль мы пожарили на сетке на костре и схавали на ужин. Собсно еще один день завершился.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-5QFcQgVB8jE/ToavWRXYPyI/AAAAAAAAB2U/6XCoZ1rCbS4/s1600/DSCF6292.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-5QFcQgVB8jE/ToavWRXYPyI/AAAAAAAAB2U/6XCoZ1rCbS4/s400/DSCF6292.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;День 4&lt;/b&gt;&lt;br /&gt;
Утро началось с рыбалки :-) &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZTyoY8wek-4/ToavcBGpZLI/AAAAAAAAB2c/9GNEaPENXDs/s1600/DSCF6301.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-ZTyoY8wek-4/ToavcBGpZLI/AAAAAAAAB2c/9GNEaPENXDs/s400/DSCF6301.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;Снова поймали 3 кефали (2 жена и 1 йа). Приблизительно после 9.оо клева небыло и вернулись на базу. В этот день решили не ехать в Евпаторию и остаться на базе. За время рыбалки посетила мысль попробовать фидерную кормушку забить привадой для кефали и попробовать половить на импровизированную оснастку.&lt;br /&gt;
Днем сходили за пивом и валялись под солнцем, разговаривали с Максимом и его другом Алексеем, который так же отдыхал на базе. Ближе к вечеру узнал "секрет" прикормки, сходили в магазин, намешал... буду пробовать.&lt;br /&gt;
&lt;br /&gt;
Вечером сходили на рыбалку, жена вытянула морского &lt;a href="http://ru.wikipedia.org/wiki/%D0%A7%D0%B5%D1%80%D0%BD%D0%BE%D0%BC%D0%BE%D1%80%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%BA%D0%BE%D1%80%D0%BF%D0%B5%D0%BD%D0%B0"&gt;ядовитого ерша (скорпену)&lt;/a&gt;. Больше никто ничего не впоймал. На фидер забитый привадой - поклевки были, но скорее всего мелочь т.к. засечь не получалось. Погода менялась и на всем берегу, в плане улова, была тишина.&lt;br /&gt;
Ночью наблюдали "огни под водой". Дайверы плавали под водой с мощными фонарями, а на берегу это смотрелось как световое пятно движется под водой. Довольно таки красивое зрелище. Был даже прикол, у жены была поклевка, в момент когда она подсекала, ближний к нам "фонарь" потух, посмеялись мол "дайвера подсекла", в итоге вытащила она скорпену.&lt;br /&gt;
Меня после дневного пифа дико клонило в сон и спать ушли по раньше.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;День 5&lt;/b&gt;&lt;br /&gt;
Утром улова у нас не было 8(. Простояли около 3х часов. Поклевки были вялые и подсечь не получалось.&lt;br /&gt;
Решили сьездить в Евпаторию и посмотреть город. Сходили в парк, правда он уже не работал, но можно было  просто побродить и пофоткаться. В парке понравилась детская дорожка для веломобиля со знаками дорожного движения, красивый водопад и шикарные деревья. &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-DpGNzDoKgmM/Toav5rx7ggI/AAAAAAAAB2k/ve6vByLl2bs/s1600/DSCF6349.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-DpGNzDoKgmM/Toav5rx7ggI/AAAAAAAAB2k/ve6vByLl2bs/s400/DSCF6349.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-zZgn4bxfeNI/Toav5xdYEyI/AAAAAAAAB2s/A_U3CMjQvZc/s1600/DSCF6350.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-zZgn4bxfeNI/Toav5xdYEyI/AAAAAAAAB2s/A_U3CMjQvZc/s400/DSCF6350.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1LHqjBCwERM/Toav5zRGOYI/AAAAAAAAB20/GyIPqK8b9v4/s1600/DSCF6353.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-1LHqjBCwERM/Toav5zRGOYI/AAAAAAAAB20/GyIPqK8b9v4/s400/DSCF6353.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Vxa9JWgYDNs/Toav6DtL-FI/AAAAAAAAB28/QDa3-5zFFco/s1600/DSCF6372.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-Vxa9JWgYDNs/Toav6DtL-FI/AAAAAAAAB28/QDa3-5zFFco/s400/DSCF6372.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-KhgFOVz6Fb8/Toav6UpttBI/AAAAAAAAB3E/BsR_UdaQGQ0/s1600/DSCF6376.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-KhgFOVz6Fb8/Toav6UpttBI/AAAAAAAAB3E/BsR_UdaQGQ0/s400/DSCF6376.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Хотели сходить в дельфинарий, но цена в 100 рябчиков - отпугнула. Прошлись по набережной, зашли в краеведческий музей. В музее попали на экскурсию - гид рассказывал интересно, но фотографировать в музее к сожалению нельзя. Экскурсия в музей нам понравилась. Проехались на трамвайчике через весь город в "обжору". Поели и "на базу".&lt;br /&gt;
Вечером на рыбалку решили не идти и выспаться, т.к. на утро планируем поплыть на лодке.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;День 6&lt;/b&gt;&lt;br /&gt;
В 6.30 мы выплыли на лодке. Ловили приблизительно в 2х км от берега. Вместо якоря мы привязывались к плите которую заранее закинули в это место, к плите привязана длинная веревка, на конце которой привязано несколько бутылок. Возле плиты постоянно прикармливают рыбу. Ищут данную плиту по GPS. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-kcCGcYlntbE/ToawXsZFDkI/AAAAAAAAB3M/Vz-RlfW9FlM/s1600/DSCF6420.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-kcCGcYlntbE/ToawXsZFDkI/AAAAAAAAB3M/Vz-RlfW9FlM/s400/DSCF6420.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xVAP_ZBbHGE/ToawXkaPRYI/AAAAAAAAB3U/rKC7zmwKG4I/s1600/DSCF6426.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-xVAP_ZBbHGE/ToawXkaPRYI/AAAAAAAAB3U/rKC7zmwKG4I/s400/DSCF6426.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Нам не сильно повезло с погодой и чем дольше мы ловили, тем сильнее усиливался ветер. Как только перестаешь смотреть на край удилища или на локатор, который на берегу, тут же начинает укачивать. Т.е. больше всего укачивало когда наживку одеваешь.&lt;br /&gt;
Когда волна начала перехлестывать борт, решили вернуться. По пути к берегу увидели дрейфующею надувную подушку. Подплыв ближе к ней, увидели что к ней что-то привязано телесного цвета, преломления воды и фантазия сделали свое дело, думали что там труп... оказалось что дайверская сумка с крабом, и обломанный крепеж. Подобрали, позднее Максим отдал местному дайверу, который знает кто и где в этом районе плавает и кому её отдать.&lt;br /&gt;
При всей беде с погодой мы смогли 2.5 часа половить. Жена как обычно тягала ядовитых рыб (морской ерш и &lt;a href="http://ru.wikipedia.org/wiki/Trachinus_draco"&gt;морской дракон&lt;/a&gt;), я продвигался по окуням и карасям. Алексей который с нами выходил в море на лодке целенаправленно ловил ставриду. &lt;br /&gt;
Ставриду ловят на поплавочную снасть и креветку, а все остальное "гирляндой" со дна (также на креветку). Ловля ведется со дна, глубина около 10 метров и у некоторых рыб после быстрого подьема вылазят кишки от перепада давления. Пойманной рыбе сделали фотосессию. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-cEsD7UPCV4A/ToawuG9DEII/AAAAAAAAB3c/GRizBj6JHBM/s1600/DSCF6459.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-cEsD7UPCV4A/ToawuG9DEII/AAAAAAAAB3c/GRizBj6JHBM/s400/DSCF6459.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-1GJmhWZsLR4/ToawuGZYJCI/AAAAAAAAB3k/QuYLkZ1t-6M/s1600/DSCF6462.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-1GJmhWZsLR4/ToawuGZYJCI/AAAAAAAAB3k/QuYLkZ1t-6M/s400/DSCF6462.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1twq85BFJHk/ToawuSfAOtI/AAAAAAAAB3s/iWYYGOsj5pA/s1600/DSCF6463.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-1twq85BFJHk/ToawuSfAOtI/AAAAAAAAB3s/iWYYGOsj5pA/s400/DSCF6463.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-jIL5r5QFGSg/ToawuxbPZVI/AAAAAAAAB30/idrLVkU4J1o/s1600/DSCF6471.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-jIL5r5QFGSg/ToawuxbPZVI/AAAAAAAAB30/idrLVkU4J1o/s400/DSCF6471.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-XyrFbaDWNTg/ToawvDOZiqI/AAAAAAAAB38/hPQ9Ak7h6U4/s1600/DSCF6477.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-XyrFbaDWNTg/ToawvDOZiqI/AAAAAAAAB38/hPQ9Ak7h6U4/s400/DSCF6477.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-M8UcuGac0mU/Toaw6SJaN5I/AAAAAAAAB4E/AWtjTy24vQw/s1600/DSCF6478.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-M8UcuGac0mU/Toaw6SJaN5I/AAAAAAAAB4E/AWtjTy24vQw/s400/DSCF6478.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-tRmKBs0r1C4/Toaw6nezQLI/AAAAAAAAB4M/y-p8LamLV-Y/s1600/DSCF6481.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-tRmKBs0r1C4/Toaw6nezQLI/AAAAAAAAB4M/y-p8LamLV-Y/s400/DSCF6481.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-8YJrnlBqXDY/Toaw6lIcFVI/AAAAAAAAB4U/tyIkkh2UUIs/s1600/DSCF6483.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-8YJrnlBqXDY/Toaw6lIcFVI/AAAAAAAAB4U/tyIkkh2UUIs/s400/DSCF6483.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Скорпена была жива спустя даже 5 часов после улова. Из части улова жена сварила уху. Уха из свежевпойманной рыбы, да еще и которую сам впоймал - это вещь. Оставшуюся часть улова хозяева предложили филировать и сделать котлеты. После того как филировал рыбу - валялся в лежаке. Котлеты получились просто абалденные, соус так же был на высоте. С сытым брюхом оставшуюся часть вечера - занимались упаковкой вещей, утром в Ялту - погулять там.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;День 7&lt;/b&gt;&lt;br /&gt;
Утром в 7.10 поехали из Витино в Евпаторию, немного прошлись по городу пока ждали свой автобус и в 10.оо мы отправились в Ялту. &lt;br /&gt;
По дороге к Ялте есть остановка в Алуште. Стоянка 5 минут, несколько человек почему то решили что 30 минут и пошли гулять. Когда автобус начал двигаться со стороны рынка прибежал один пассажир, но еще не хватало 2х барышень. Они якобы пошли по городу гулять.... вообщем урок на будущее от автобуса далеко не отходить :-) &lt;br /&gt;
В Ялте нашли себе квартиру однокомнатную на улице Кривошты, не дорого и неплохие условия. Сходили на набережную, немного погуляли. &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Il3nlPLX0_U/Toa473U4WBI/AAAAAAAAB4c/hgvZXTMqsek/s1600/DSCF6523-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-Il3nlPLX0_U/Toa473U4WBI/AAAAAAAAB4c/hgvZXTMqsek/s400/DSCF6523-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Rnvn7UgHT48/Toa47wJUuAI/AAAAAAAAB4k/zsIULD6oOBk/s1600/DSCF6539-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-Rnvn7UgHT48/Toa47wJUuAI/AAAAAAAAB4k/zsIULD6oOBk/s400/DSCF6539-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Долго искали где поесть, кафешки на набережной по 30 грн за пифо, а яичница около 60-80... нереально для нас вообщем. Нашли аля фастфуд, где отлично поели. &lt;br /&gt;
Хотели прокатится на фуникулере но цена 1 билета - 50 рябчиков... решили вместо этого прокатится на теплоходе. Цена такая же, но за верхнюю палубу надо доплатить еще 10 рябчиков... вообщем на всем подьем делают... проплыли до "ласточкиного гнезда" по дороге слушая экскурсию... &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-t8QfWzmmKuw/Toa5JaiHTqI/AAAAAAAAB4s/fyEsiwkteik/s1600/DSCF6561-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-t8QfWzmmKuw/Toa5JaiHTqI/AAAAAAAAB4s/fyEsiwkteik/s400/DSCF6561-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-8lfDBo3jR9A/Toa5JjeyzWI/AAAAAAAAB40/STigGFwMyfc/s1600/DSCF6571-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-8lfDBo3jR9A/Toa5JjeyzWI/AAAAAAAAB40/STigGFwMyfc/s400/DSCF6571-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-EPyiEkIZ4Rk/Toa5J04xFrI/AAAAAAAAB48/H_sz-RlEmBc/s1600/DSCF6577-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-EPyiEkIZ4Rk/Toa5J04xFrI/AAAAAAAAB48/H_sz-RlEmBc/s400/DSCF6577-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-p6OOgH5kSwM/Toa5KDisKDI/AAAAAAAAB5E/htmax8JKNKc/s1600/DSCF6585-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-p6OOgH5kSwM/Toa5KDisKDI/AAAAAAAAB5E/htmax8JKNKc/s400/DSCF6585-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oLuqebhFwR8/Toa5KKrsIOI/AAAAAAAAB5M/GahaMyvAhy8/s1600/DSCF6586-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-oLuqebhFwR8/Toa5KKrsIOI/AAAAAAAAB5M/GahaMyvAhy8/s400/DSCF6586-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;Домой приползли без сил, искупались и вырубились...&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;День 8&lt;/b&gt;&lt;br /&gt;
Решили съездить в Ялтинский Зоопарк, все хвалят, надо в живую сходить посмотреть. Пока искали откуда нам уехать и на каком автобусе, то нашли еще одну кафешку, где есть wifi, вкусно и относительно дешего, а самое главное - не далеко от квартиры. Подкрепившись дошли до автовокзала, с него на 26 автобусе - поехали в зоопарк. Остановка находится за 2км от самого зоопарка, нужно пройти по серпантину с шикарным видом.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Jtli70ZSwsw/Toa-4xCFowI/AAAAAAAAB5U/VMgACXeEAKI/s1600/DSCF6602-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-Jtli70ZSwsw/Toa-4xCFowI/AAAAAAAAB5U/VMgACXeEAKI/s400/DSCF6602-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-DPX_x4ATSVM/Toa-5B8RU7I/AAAAAAAAB5c/GFOwwF--gCg/s1600/DSCF6605-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-DPX_x4ATSVM/Toa-5B8RU7I/AAAAAAAAB5c/GFOwwF--gCg/s400/DSCF6605-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-sf1zPM6yAY0/Toa-5fgaYHI/AAAAAAAAB5k/tgrH6Ox7DOg/s1600/DSCF6611-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-sf1zPM6yAY0/Toa-5fgaYHI/AAAAAAAAB5k/tgrH6Ox7DOg/s400/DSCF6611-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
В самом зоопарке можно кормить животных, после касс можно купить пучок корма для животных. Зоопарк меньше чем мне рассказывали, но он того стоит, что бы туда съездить. О самом зоопарке можно долго писать, там живности много, некоторую живность можно даже погладить.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-UbgBq4FZk9s/Toa_PYSRLxI/AAAAAAAAB5s/gLZF7phU2ZI/s1600/DSCF6612-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-UbgBq4FZk9s/Toa_PYSRLxI/AAAAAAAAB5s/gLZF7phU2ZI/s400/DSCF6612-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XoT2Ug64Bgs/Toa_PlVWuZI/AAAAAAAAB50/-KDOXkQlszI/s1600/DSCF6622-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-XoT2Ug64Bgs/Toa_PlVWuZI/AAAAAAAAB50/-KDOXkQlszI/s400/DSCF6622-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-AfzeJtVFVek/Toa_Pkl_I0I/AAAAAAAAB58/aYlHEIqmu8E/s1600/DSCF6625-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="400" width="300" src="http://2.bp.blogspot.com/-AfzeJtVFVek/Toa_Pkl_I0I/AAAAAAAAB58/aYlHEIqmu8E/s400/DSCF6625-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-edXFY0BjBOY/Toa_P1rIeWI/AAAAAAAAB6E/JU_Zo-7imD4/s1600/DSCF6642-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-edXFY0BjBOY/Toa_P1rIeWI/AAAAAAAAB6E/JU_Zo-7imD4/s400/DSCF6642-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-td4ympXQu34/Toa_QNo4cqI/AAAAAAAAB6M/5Lm91H1q1SE/s1600/DSCF6647-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-td4ympXQu34/Toa_QNo4cqI/AAAAAAAAB6M/5Lm91H1q1SE/s400/DSCF6647-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-GtT7bXie-FQ/Toa_a6lBFUI/AAAAAAAAB6U/c8D2pCsXuXk/s1600/DSCF6670-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-GtT7bXie-FQ/Toa_a6lBFUI/AAAAAAAAB6U/c8D2pCsXuXk/s400/DSCF6670-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Q2p7RGjZuS0/Toa_bLoj2II/AAAAAAAAB6c/ejy3VMEDXVk/s1600/DSCF6677-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-Q2p7RGjZuS0/Toa_bLoj2II/AAAAAAAAB6c/ejy3VMEDXVk/s400/DSCF6677-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ksINwDQCE3s/Toa_bbCH4WI/AAAAAAAAB6k/_F9wyv_lSZI/s1600/DSCF6694-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-ksINwDQCE3s/Toa_bbCH4WI/AAAAAAAAB6k/_F9wyv_lSZI/s400/DSCF6694-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BQCi1XlWtFo/Toa_bpyMpwI/AAAAAAAAB6s/4-QJp59S8p4/s1600/DSCF6709-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-BQCi1XlWtFo/Toa_bpyMpwI/AAAAAAAAB6s/4-QJp59S8p4/s400/DSCF6709-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-m1KrVF2LStE/Toa_b0M87EI/AAAAAAAAB60/NZV6ZfFmO0A/s1600/DSCF6720-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-m1KrVF2LStE/Toa_b0M87EI/AAAAAAAAB60/NZV6ZfFmO0A/s400/DSCF6720-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tCoiNi5A23o/Toa_lEQ-G9I/AAAAAAAAB68/a_H3LwYVHjw/s1600/DSCF6734-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-tCoiNi5A23o/Toa_lEQ-G9I/AAAAAAAAB68/a_H3LwYVHjw/s400/DSCF6734-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-o1WVoccEvfQ/Toa_lV51hKI/AAAAAAAAB7E/QMmIj3z7YgA/s1600/DSCF6748-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-o1WVoccEvfQ/Toa_lV51hKI/AAAAAAAAB7E/QMmIj3z7YgA/s400/DSCF6748-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Xe4u12neRec/Toa_lQGgPyI/AAAAAAAAB7M/zy_66Igb6fY/s1600/DSCF6761-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-Xe4u12neRec/Toa_lQGgPyI/AAAAAAAAB7M/zy_66Igb6fY/s400/DSCF6761-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sh-zddxOC8k/Toa_lhsWIPI/AAAAAAAAB7U/C1nc6xZrZVA/s1600/DSCF6763-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-sh-zddxOC8k/Toa_lhsWIPI/AAAAAAAAB7U/C1nc6xZrZVA/s400/DSCF6763-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
В зоопарке аккумы на фотоаппарате сели, и дальше мы уже просто гуляли. Почти перед самым выходом на деревьях, над головами посетителей, бегали две мелких обезьянки, то ли сбежали с клетки, то ли специально выпустили. Поход в зоопарк стоил своих денег, есть на что посмотреть.&lt;br /&gt;
После зоопарка мы сходили в аквариум. В аквариуме, тех обитателей что помню, были: акула катран, мурены, скат хвостокол, кефаль и еще порядка 10-20 разных рыб. &lt;br /&gt;
&lt;br /&gt;
После зоопарка снова пошли на набережную, немного там походили. Так как до окончания отпуска остался всего один полный день, то напоследок решили съездить в Балаклаву, давно хотел там побывать. Записались на экскурсию с 9.оо до 17.оо по Балаклаве.&lt;br /&gt;
На квартиру и спать....&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;День 9&lt;/b&gt;&lt;br /&gt;
Подъем, автобус.... &lt;a href="http://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%BB%D0%B0%D0%BA%D0%BB%D0%B0%D0%B2%D0%B0"&gt;Балаклава&lt;/a&gt;.&lt;br /&gt;
О самой Балаклаве написано много, вкратце из того что нам рассказывали: база по ремонту подводных лодок + арсенал, также на территории Балаклавы был центр по подготовке подводников и дельфинов, пока не запретили эксперименты над дельфинами. До 1999 года, в город можно было попасть только по пропускам, и на карту его не наносили. На территории есть развалины крепости Чембала... &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-BDSwIcaypWo/TobJo2GAfTI/AAAAAAAAB7c/gS4-Lqa9CQc/s1600/DSCF6770-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-BDSwIcaypWo/TobJo2GAfTI/AAAAAAAAB7c/gS4-Lqa9CQc/s400/DSCF6770-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9dry1NqPWwM/TobJo9EeFFI/AAAAAAAAB7k/cYqSFgpIQDI/s1600/DSCF6773-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-9dry1NqPWwM/TobJo9EeFFI/AAAAAAAAB7k/cYqSFgpIQDI/s400/DSCF6773-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Приехали в саму Балаклаву около 10 часов, гид посоветовала сразу заказать еду, т.к. любое заведение на территории пристани готовит еду только свежую и ждать минимум 1 час, а т.к. у нас будет всего один час на еду, то это лучше сделать заранее. Мы с женой заказали "Уху Черноморскую". &lt;br /&gt;
Нас посадили на катера и дальше была часовая прогулка по бухте и выход в открытое море. &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sciYzWIgtQc/TobJyWZr2bI/AAAAAAAAB7s/zXuhXypCQ9E/s1600/DSCF6777-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-sciYzWIgtQc/TobJyWZr2bI/AAAAAAAAB7s/zXuhXypCQ9E/s400/DSCF6777-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-e_FVECIpeIs/TobJyqQu3eI/AAAAAAAAB70/sog3-3wuXhY/s1600/DSCF6779-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-e_FVECIpeIs/TobJyqQu3eI/AAAAAAAAB70/sog3-3wuXhY/s400/DSCF6779-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-DZTFHCZW0LE/TobJymKDqGI/AAAAAAAAB78/yLxp6HZ_PH4/s1600/DSCF6781-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-DZTFHCZW0LE/TobJymKDqGI/AAAAAAAAB78/yLxp6HZ_PH4/s400/DSCF6781-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-_L1l3d74dVE/TobJyzzrefI/AAAAAAAAB8E/sIgF_YkAY48/s1600/DSCF6785-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-_L1l3d74dVE/TobJyzzrefI/AAAAAAAAB8E/sIgF_YkAY48/s400/DSCF6785-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Отплыв некоторое расстояние от входа в бухту, кто хотел - мог покупаться. Естественно мы с женой полезли.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-QS_WQHGc8vo/TobJ5ptOSJI/AAAAAAAAB8M/fQ7FK0xECHM/s1600/DSCF6804-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="400" width="300" src="http://1.bp.blogspot.com/-QS_WQHGc8vo/TobJ5ptOSJI/AAAAAAAAB8M/fQ7FK0xECHM/s400/DSCF6804-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-HZilntzd1tg/TobJ5zX8QII/AAAAAAAAB8U/z8PyTQIblcM/s1600/DSCF6805-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="400" width="300" src="http://4.bp.blogspot.com/-HZilntzd1tg/TobJ5zX8QII/AAAAAAAAB8U/z8PyTQIblcM/s400/DSCF6805-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Вода чистейшая, если выпрямится в воде - видно даже свои ноги (~1.8м рост).&lt;br /&gt;
&lt;br /&gt;
После того как наплавались, и покатались на катере - полезли на крепость...&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-IE9xr90BJOc/TobKFVTPLKI/AAAAAAAAB8c/r3gGNdE67Yc/s1600/DSCF6855-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-IE9xr90BJOc/TobKFVTPLKI/AAAAAAAAB8c/r3gGNdE67Yc/s400/DSCF6855-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-an4SFunmFko/TobKFdxlDEI/AAAAAAAAB8k/2bGnCBOpKE0/s1600/DSCF6868-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-an4SFunmFko/TobKFdxlDEI/AAAAAAAAB8k/2bGnCBOpKE0/s400/DSCF6868-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Cq_dMx4fU7A/TobKFtftxQI/AAAAAAAAB8s/1mFnBrRUGWc/s1600/DSCF6869-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-Cq_dMx4fU7A/TobKFtftxQI/AAAAAAAAB8s/1mFnBrRUGWc/s400/DSCF6869-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Y87fNgLGxhs/TobKF8e2JuI/AAAAAAAAB80/6hQrqw302ho/s1600/DSCF6872-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-Y87fNgLGxhs/TobKF8e2JuI/AAAAAAAAB80/6hQrqw302ho/s400/DSCF6872-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
После крепости, когда шли в кафе - увидели лодку, не удержался, сфоткал название:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-wk7AO-TnLlc/TobKLSjQdgI/AAAAAAAAB88/-8e6Q80u8iQ/s1600/DSCF6891-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-wk7AO-TnLlc/TobKLSjQdgI/AAAAAAAAB88/-8e6Q80u8iQ/s400/DSCF6891-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
на 13.45 у нас музей Балаклавы, собственно тот самый завод по ремонту подлодок и арсенал. Фоткать внутри у меня не особо получалось и сама экскурсия была в течении одного часа, т.е. все очень быстро и времени было мыло все подробно рассмотреть. Впечатлил масштаб всего строительства.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-gDOcXgdflsQ/TobKYXeJkDI/AAAAAAAAB9E/kmFsHq5e4v0/s1600/DSCF6920-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-gDOcXgdflsQ/TobKYXeJkDI/AAAAAAAAB9E/kmFsHq5e4v0/s400/DSCF6920-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-x1PJM6GqA5s/TobKYqO5NbI/AAAAAAAAB9M/jjt6sxxGt2U/s1600/DSCF6921-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-x1PJM6GqA5s/TobKYqO5NbI/AAAAAAAAB9M/jjt6sxxGt2U/s400/DSCF6921-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-pg5mGm24epA/TobKY2uHDPI/AAAAAAAAB9U/DtwdZJbbsGg/s1600/DSCF6922-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-pg5mGm24epA/TobKY2uHDPI/AAAAAAAAB9U/DtwdZJbbsGg/s400/DSCF6922-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-n-R6jyXYMRE/TobKY2XXZWI/AAAAAAAAB9c/vn7oUBB9B14/s1600/DSCF6923-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-n-R6jyXYMRE/TobKY2XXZWI/AAAAAAAAB9c/vn7oUBB9B14/s400/DSCF6923-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-aU6pDoI-DxM/TobKZJIo2HI/AAAAAAAAB9k/-5U2JcUpvpY/s1600/DSCF6924-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://1.bp.blogspot.com/-aU6pDoI-DxM/TobKZJIo2HI/AAAAAAAAB9k/-5U2JcUpvpY/s400/DSCF6924-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-AjpgiUbCj2s/TobKlzs0kBI/AAAAAAAAB9s/pEN3Chi-yVo/s1600/DSCF6928-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-AjpgiUbCj2s/TobKlzs0kBI/AAAAAAAAB9s/pEN3Chi-yVo/s400/DSCF6928-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-pbln3Nx2NUI/TobKmIYK3uI/AAAAAAAAB90/H841CDdIfJk/s1600/DSCF6938-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="400" width="300" src="http://3.bp.blogspot.com/-pbln3Nx2NUI/TobKmIYK3uI/AAAAAAAAB90/H841CDdIfJk/s400/DSCF6938-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-3ZC6uexywr8/TobKmEIbqII/AAAAAAAAB98/HAkiGAEhzlU/s1600/DSCF6945-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-3ZC6uexywr8/TobKmEIbqII/AAAAAAAAB98/HAkiGAEhzlU/s400/DSCF6945-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-UH6frfgZ2Ro/TobKmY0BDbI/AAAAAAAAB-E/I6KDKQ62Yds/s1600/DSCF6952-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-UH6frfgZ2Ro/TobKmY0BDbI/AAAAAAAAB-E/I6KDKQ62Yds/s400/DSCF6952-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Sb--eqrFeyg/TobKmnB326I/AAAAAAAAB-M/rqs4xV901No/s1600/DSCF6971-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-Sb--eqrFeyg/TobKmnB326I/AAAAAAAAB-M/rqs4xV901No/s400/DSCF6971-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-XzHwgH5k7GY/TobKt8bwfjI/AAAAAAAAB-U/iu8V9fToinE/s1600/DSCF6973-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://4.bp.blogspot.com/-XzHwgH5k7GY/TobKt8bwfjI/AAAAAAAAB-U/iu8V9fToinE/s400/DSCF6973-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8a0Rawv1QoI/TobKuOQNPlI/AAAAAAAAB-c/C_sQ-C_eVy8/s1600/DSCF6978-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://2.bp.blogspot.com/-8a0Rawv1QoI/TobKuOQNPlI/AAAAAAAAB-c/C_sQ-C_eVy8/s400/DSCF6978-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-dZhyCkniRC4/TobKueFFFsI/AAAAAAAAB-k/9tl6JQBQnhI/s1600/DSCF6979-1.JPG" imageanchor="1" style=""&gt;&lt;img border="0" height="300" width="400" src="http://3.bp.blogspot.com/-dZhyCkniRC4/TobKueFFFsI/AAAAAAAAB-k/9tl6JQBQnhI/s400/DSCF6979-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
В музее мы побывали в сухдоке и в арсенале. Дальше пока музей еще не работает, обещают в ближайшем будущем открыть дальше.&lt;br /&gt;
&lt;br /&gt;
Собственно дальше автобус, Ялта, кафе, пифо, сбор вещей....&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;День 10&lt;/b&gt;&lt;br /&gt;
Подьем, доупаковка вещей. В Симферополь решили поехать пораньше, что бы еще погулять по Симферополю. Съездили в центр, купили малому подарок, нашли кафе "У мамы", где есть wifi и относительно не дорого, посидели и поехали на поезд...&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;P.S.&lt;/b&gt; лично мне, мой отдых понравился. Мало конечно, хотелось бы больше... Зато есть что вспомнить, так сказать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-5322591081009272541?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/5322591081009272541/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=5322591081009272541' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5322591081009272541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5322591081009272541'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2011/10/blog-post.html' title='Типа непутевые заметки...'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-NKSnz8dIlMM/Toas5DWEpXI/AAAAAAAABzc/SShOva81h2Q/s72-c/DSCF6205.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-2931927585438819384</id><published>2011-05-06T23:20:00.010+03:00</published><updated>2011-05-07T10:56:27.679+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lvm'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>LVM раздел из 2х флешек</title><content type='html'>Насмотревшись &lt;a href="http://company.yandex.ru/academic/kit"&gt;видео от Яндекса&lt;/a&gt; решил по извращаться с LVM. В принципе я до этого читал, даже когда-то приходилось добавлять новый диск в работающую систему, но особо как-то не вникал. В одной из лекций упоминался LVM, заинтересовало...  Вообщем ничего лучше не придумал как объединить 2 флешки в один "диск"...&lt;br&gt;&lt;br&gt;
&lt;b&gt;Собственно что имеется:&lt;/b&gt;&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;флешка на 1Гб&lt;/li&gt;
&lt;li&gt;флешка на 2Гб&lt;/li&gt;
&lt;li&gt;Система убунта&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;b&gt;Чего хочется:&lt;/b&gt;&lt;br&gt;
один раздел на 3Гб
&lt;a name='more'&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;
В убунте мне понадобилось поставить пакет:
&lt;pre class="brush: bash"&gt;
sudo aptitude install lvm2 &amp;&amp; partprobe
&lt;/pre&gt;

Ниже пример как сделать 1 флешку в виде LVM, затем к полученному разделу добавить вторую флешку. начнем с первой. у меня флешка подмаунтилась как /dev/sdb1, соответственно помечаем её как PV (Physical Volume):
&lt;pre class="brush: bash"&gt;
dip56245@dip56245-laptop:~$ sudo pvcreate /dev/sdb1 
  Physical volume "/dev/sdb1" successfully created
dip56245@dip56245-laptop:~$ sudo pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 a-   1,89g 1,89g
&lt;/pre&gt;

теперь получившийся раздел помечаем как VG(Volume Group) с нужным нам именем:
&lt;pre class="brush: bash"&gt;
dip56245@dip56245-laptop:~$ sudo vgcreate dipVg0 /dev/sdb1 
  Volume group "dipVg0" successfully created
dip56245@dip56245-laptop:~$ sudo vgs
  VG     #PV #LV #SN Attr   VSize VFree
  dipVg0   1   0   0 wz--n- 1,89g 1,89g
&lt;/pre&gt;
Имя нашей группы будет &lt;b&gt;dipVg0&lt;/b&gt;, желательно делать уникальным, особенно если планируете еще где-то использовать кроме как дома.&lt;br&gt;
&lt;br&gt;
теперь можно создать LV(Logical Volume), т.е. то что можно отформатировать и подмаунтить:
&lt;pre class="brush: bash"&gt;
dip56245@dip56245-laptop:~$ sudo lvcreate -n data -L 1890M dipVg0
  Rounding up size to full physical extent 1,85 GiB
  Logical volume "data" created
&lt;/pre&gt;
&lt;br&gt;
Дальше отформатируем как ext4 полученный раздел:
&lt;pre class="brush: bash"&gt;
dip56245@dip56245-laptop:~$ sudo mkfs.ext4 /dev/dipVg0/data 
mke2fs 1.41.14 (22-Dec-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
121200 inod'ов, 484352 блоков
24217 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=499122176
15 block groups
32768 blocks per group, 32768 fragments per group
8080 inod'ов в группе
Superblock backups stored on blocks: 
 32768, 98304, 163840, 229376, 294912

Сохранение таблицы inod'ов: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
&lt;/pre&gt;
&lt;br&gt;
теперь у нас есть раздел с которым уже можно работать, подмаунтить или через наутилус открыть, закинуть файлики в него и т.д.&lt;br&gt;
теперь добавляем вторую флешку:&lt;br&gt;
&lt;pre class="brush: bash"&gt;
dip56245@dip56245-laptop:~$ sudo pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created
&lt;/pre&gt;
&lt;br&gt;
добавляем его к нашему существующему разделу:
&lt;pre class="brush: bash"&gt;
dip56245@dip56245-laptop:~$ sudo vgextend dipVg0 /dev/sdc1 
  Volume group "dipVg0" successfully extended
dip56245@dip56245-laptop:~$ sudo pvs
  PV         VG     Fmt  Attr PSize   PFree  
  /dev/sdb1  dipVg0 lvm2 a-     1,89g  40,00m
  /dev/sdc1  dipVg0 lvm2 a-   960,00m 960,00m
&lt;/pre&gt;

увеличивем раздел и увеличиваем файловую систему:
&lt;pre class="brush: bash"&gt;
dip56245@dip56245-laptop:~$ sudo lvresize /dev/dipVg0/data -l100%VG
  Extending logical volume data to 2,82 GiB
  Logical volume data successfully resized
dip56245@dip56245-laptop:~$ sudo e2fsck -f /dev/dipVg0/data
....
dip56245@dip56245-laptop:~$ sudo resize2fs /dev/dipVg0/data 
&lt;/pre&gt;
&lt;br&gt;
собственно все... у нас теперь есть раздел который можно подмаунтить и дать права обычным пользователям туда писать.&lt;br&gt;
&lt;br&gt;
В конце перед тем как флешки извлекать нужно отключить наш раздел руками или через наутилус:
&lt;pre class="brush: bash"&gt;
dip56245@dip56245-laptop:~$ sudo lvscan
  ACTIVE            '/dev/dipVg0/data' [2,82 GiB] inherit
dip56245@dip56245-laptop:~$ sudo lvchange -an /dev/dipVg0/data 
dip56245@dip56245-laptop:~$ sudo lvscan
  inactive          '/dev/dipVg0/data' [2,82 GiB] inherit
dip56245@dip56245-laptop:~$ 
&lt;/pre&gt;

все, флешки можно извлекать, не боясь потери данных. После подключения 2х флешек нам снова доступен раздел.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-2931927585438819384?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/2931927585438819384/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=2931927585438819384' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/2931927585438819384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/2931927585438819384'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2011/05/lvm-2.html' title='LVM раздел из 2х флешек'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-5553668862563537421</id><published>2010-12-08T12:06:00.002+02:00</published><updated>2010-12-08T12:08:58.700+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Добавление шрифтов в ubuntu 10.10</title><content type='html'>мелкий tip's&lt;br&gt;
&lt;br&gt;
заходим в /usr/share/fonts/truetype (от рута), для тех кто отвык от консоли - запустить:&lt;br&gt;
&lt;pre class="brush: bash"&gt;
$ gksu nautilus /usr/share/fonts/truetype
&lt;/pre&gt;
и скопировать с вендовой машины tahoma.ttf + tahomabd.ttf (если  еще какие нить нужны - добавляем тоже)&lt;br&gt;
перестартовуем сеанс и усе..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-5553668862563537421?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/5553668862563537421/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=5553668862563537421' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5553668862563537421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5553668862563537421'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/12/ubuntu-1010.html' title='Добавление шрифтов в ubuntu 10.10'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-8859104866227222974</id><published>2010-11-28T19:03:00.000+02:00</published><updated>2010-11-28T19:03:30.786+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mp3'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>ubuntu, ogg2mp3</title><content type='html'>Столкнулся с задачей, есть альбом в .ogg, ессесно телефон его читать не хочет... mp3 онли... думаю ну не беда - переконвертирую, а вот тут с коробки не все так просто оказалось...&lt;br&gt;&lt;br&gt;

есть такая замечательная утилитка sox (SOund eXchange) которая делает как раз то что нам надо... Но вот не задача, если мы поставим пакеты из штатной репы то получим такое сообщение &lt;b&gt;"SoX was compiled without MP3 encoding support"&lt;/b&gt;&lt;br&gt;
гуглим, видим что народ изгаляется вплоть до сборки из сырцов (но чет так влом это делать)...
но среди прочего находим PPA mediahacks, собсно делаем-с:
&lt;pre class="brush: bash"&gt;
$&gt; sudo add-apt-repository ppa:dtl131/mediahacks
$&gt; sudo apt-get update
$&gt; sudo apt-get install sox libsox-fmt-all
&lt;/pre&gt;
После этих манипуляций у нас будет "работающий" sox с помощью которого можно перегнать:
&lt;pre class="brush: bash"&gt;
$&gt; sox 01.ogg 01.mp3
&lt;/pre&gt;
а что бы такое не делать для каждого файла, а обработать сразу весь каталог, перейдем в него и сделаем так:&lt;br&gt;
&lt;br&gt;
первым делом уберем все пробелы из имени файлов (заменим их на _):
&lt;pre class="brush: bash"&gt;
for x in * ; do mv "$x" `echo -n $x | tr " " "_"`; done
&lt;/pre&gt;
&lt;br&gt;
вторым шагом конвертнем:
&lt;pre class="brush: bash"&gt;
for x in *.ogg ; do sox $x `echo $x|awk -F . '{print $1 ".mp3"}'`; done
&lt;/pre&gt;
&lt;br&gt;
удачи)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-8859104866227222974?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/8859104866227222974/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=8859104866227222974' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/8859104866227222974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/8859104866227222974'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/11/ubuntu-ogg2mp3.html' title='ubuntu, ogg2mp3'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-3951686047034290029</id><published>2010-11-27T15:32:00.004+02:00</published><updated>2010-11-27T15:35:04.056+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='openvpn'/><title type='text'>openvpn на centos 5.5</title><content type='html'>что-то в штатных репах не нашел openvpn пакета, в гугле нашел вариант решения:

&lt;pre class="brush: shell"&gt;
$&gt;yum install yum-prio*
$&gt;wget http://download.fedora.redhat.com/pub/epel/5Server/i386/epel-release-5-4.noarch.rpm
$&gt;rpm -Uvh epel-release-5-4.noarch.rpm
$&gt;yum install openvpn
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-3951686047034290029?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/3951686047034290029/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=3951686047034290029' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/3951686047034290029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/3951686047034290029'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/11/openvpn-centos-55.html' title='openvpn на centos 5.5'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-5784544944388915312</id><published>2010-10-12T12:01:00.002+03:00</published><updated>2010-10-12T12:06:15.503+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Отладка Java приложений</title><content type='html'>Теоретически, каждый программер еще на этапе разработки должен следить куда у него уходит оперативка. В некоторых IDE, например NetBeans, даже есть штатный профайлер, через который можно следить за состоянием оперативки... Но как показывает практика - все это теория. В "песочнице" на локальной машине адекватную нагрузку не создашь, все глюки обычно вылазят когда проект уже заливается на серваки...&lt;br&gt;
В яве есть встроенная система отладки. Собсно рассказ будет коротко о ней.&lt;br&gt;
&lt;a name='more'&gt;&lt;/a&gt;
JConsole - средство для мониторинга.&lt;br&gt;

&lt;a href="http://lh3.ggpht.com/_u5UJYftbSgA/TLQh400r6nI/AAAAAAAABKc/RS_QJtYyGCI/001.jpg"&gt;&lt;img src="http://lh3.ggpht.com/_u5UJYftbSgA/TLQh400r6nI/AAAAAAAABKc/RS_QJtYyGCI/s288/001.jpg"&gt;&lt;/a&gt;
&lt;br&gt;

Кратко по вкладкам:
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Overview&lt;/b&gt; - общие графики (память, потоки, классы, проц)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Memory&lt;/b&gt; - память&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Threads&lt;/b&gt; - потоки&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Classes&lt;/b&gt; - загруженные классы в JVM&lt;/li&gt;
&lt;li&gt;&lt;b&gt;VM Summary&lt;/b&gt; - общая информация о JVM&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MBeans&lt;/b&gt; - расширения для JMX (есть базовые, можно писать свои)&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
После запуска JConsole - будет окошко, где можно выбрать процесс на локальной машине, или ввести адрес удаленной машины, где запущено приложение с JMX.&lt;br&gt;
&lt;a href="http://lh3.ggpht.com/_u5UJYftbSgA/TLQh47OrhQI/AAAAAAAABKg/Z-Ix_V46UfA/002.jpg"&gt;&lt;img src="http://lh3.ggpht.com/_u5UJYftbSgA/TLQh47OrhQI/AAAAAAAABKg/Z-Ix_V46UfA/s288/002.jpg"&gt;&lt;/a&gt;
&lt;br&gt;
Для того что бы подключиться к процессу на локальной машине - достаточно просто выбрать его в блоке "Local Processes". Собственно тут сложности не должно быть.&lt;br&gt;
То что больше нас интересует - это как подключится к удаленному процессу. Для начала зайдем на удаленную машину, найдем скрипт запуска той программы которая нас интересует. Я буду показывать на примере Tomcat.&lt;br&gt;
Для начала откроем catalina.sh и найдем блок где у нас запускается процесс:
&lt;pre class="brush: shell"&gt;
"$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" start \
&gt;&gt; "$CATALINA_BASE"/logs/catalina.out 2&gt;&amp;1 &amp;
&lt;/pre&gt;

нам нужно добавить:
&lt;pre class="brush: bash"&gt;
-Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false \
&lt;/pre&gt;
где:
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;-Dcom.sun.management.jmxremote.port=8004&lt;/b&gt; - порт который будет слушать JMX&lt;/li&gt;
&lt;li&gt;&lt;b&gt;-Dcom.sun.management.jmxremote.authenticate=false&lt;/b&gt; - без авторизации&lt;/li&gt;
&lt;li&gt;&lt;b&gt;-Dcom.sun.management.jmxremote.ssl=false&lt;/b&gt; - без SSL&lt;/li&gt;
&lt;/ul&gt;

в итоге получим что-то вроде такого:
&lt;pre class="brush: shell"&gt;
"$_RUNJAVA" "$LOGGING_CONFIG" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
-Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false \
org.apache.catalina.startup.Bootstrap "$@" start \
&gt;&gt; "$CATALINA_BASE"/logs/catalina.out 2&gt;&amp;1 &amp;
&lt;/pre&gt;

Теперь после перезапуска томката в списке процессов мы должны увидеть наш томкат вместе с новыми "добавлениями":
&lt;pre class="brush: shell"&gt;
dip56245@system2:~&gt; ps aux | grep -i java
dip56245 13228  0.0  1.5 423908 48536 ?        Sl   Oct08   0:17 /opt/jdk/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/tomcat/endorsed -classpath :/opt/tomcat/bin/bootstrap.jar -Dcatalina.base=/opt/tomcat -Dcatalina.home=/opt/tomcat -Djava.io.tmpdir=/opt/tomcat/temp -Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false org.apache.catalina.startup.Bootstrap start
&lt;/pre&gt;

Пробуем подключаться на своей машине на тот порт который мы указали, либо просто запустим jconsole и введя данные в окне, либо прям в командной строке написав:
&lt;pre class="brush: shell"&gt;
$jconsole [ip]:[port]
&lt;/pre&gt;

Если все сделано правильно - то мы увидем графики. Если нет - проверяем файрволл, проверяем логи на серваке. Из найденных боков - т.к. это все работает на RMI, то нужно что бы на удаленной машине правильно резолвился IP и имя на внешний IP адрес (по которому мы собрались подключаться).
&lt;br&gt;
Если у Вас все получилось - и в JConsole ползут графики, уже можно хоть немного проанализировать ситуацию. Но оставлять в таком виде (без авторизации) очень не хорошо. Поэтому добавляем авторизацию на нашу систему, на удаленной системе в в catalina.sh меняем:

&lt;pre class="brush: shell"&gt;
-Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false \
&lt;/pre&gt;
на
&lt;pre class="brush: shell"&gt;
-Dcom.sun.management.jmxremote.port=8004 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=true \
-Dcom.sun.management.jmxremote.password.file=/opt/tomcat/conf/jmxremote.password \
-Dcom.sun.management.jmxremote.access.file=/opt/tomcat/conf/jmxremote.access \
&lt;/pre&gt;
мы добавили 2 параметра, путь к файлу паролей (jmxremote.password):
&lt;pre class="brush: shell"&gt;
user1 passworduser1
user2 passworduser2
&lt;/pre&gt;
и файл прав доступа (jmxremote.access)
&lt;pre class="brush: shell"&gt;
user1 readwrite
user2 readonly
&lt;/pre&gt;
получается у нас будет пользователь &lt;b&gt;user1&lt;/b&gt; с паролем &lt;b&gt;passworduser1&lt;/b&gt; который имеет право производить какие-либо изменения и соответственно &lt;b&gt;user2&lt;/b&gt; у которого права только на просмотр.&lt;br&gt;

Перезапускаем томкат и пробуем подключиться в jconsole. Если все сделано правильно - то мы без пароля уже зайти на наш сервер не сможем. Можно продолжать дальше.&lt;br&gt;

Мы можем теперь просмотреть нагрузку, расход оперативки и т.д. Но, предположим что мы видим постоянный расход оперативки, т.е. в простонародйе "memory leak". Как быть?&lt;br&gt;
Есть несколько способов, один из них:
&lt;ul&gt;
&lt;li&gt;заходим в jconsole во вкладку &lt;b&gt;MBeans&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;слева выбираем &lt;b&gt;com.sun.management&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;в подпункте выбираем &lt;b&gt;HotSpotDiagnostic&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;в подпуктах HotSpotDiagnostic выбираем &lt;b&gt;Operations&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;в основной вкладке (справа) находим dumpHeap и вместо String пишем путь куда нам нужно сохранить дамп памяти (путь на удаленной машине)&lt;/li&gt;
&lt;li&gt;нажимаем кнопку &lt;b&gt;dumpHeap&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="http://lh5.ggpht.com/_u5UJYftbSgA/TLQh5Gh0zSI/AAAAAAAABKk/mLp_zmy8Eus/003.jpg"&gt;&lt;img src="http://lh5.ggpht.com/_u5UJYftbSgA/TLQh5Gh0zSI/AAAAAAAABKk/mLp_zmy8Eus/s288/003.jpg"&gt;&lt;/a&gt;
&lt;br&gt;

теперь на удаленной машине по указанному нами пути будет создан файл с дампом памяти. Его нужно просмотреть. Есть несколько способов, есть сторонние анализаторы и т.д., но самый простой - это на удаленной машине пишем:
&lt;pre class="brush: shell"&gt;
$jhat %path_to_dump%
&lt;/pre&gt;
в консоли появиться нечто вроде:
&lt;pre class="brush: shell"&gt;
dip56245@dip56245:~$ jhat /tmp/mydump 
Reading from /tmp/mydump...
Dump file created Tue Oct 12 11:49:48 EEST 2010
Snapshot read, resolving...
Resolving 169981 objects...
Chasing references, expect 33 dots.................................
Eliminating duplicate references.................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
&lt;/pre&gt;
по умолчанию (если ключами не менять) у нас создастся WebServer на 7000 порту, и теперь можно зайти обычным браузером и посмотреть отчет по нашей оперативке.&lt;br&gt;
Собственно все.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-5784544944388915312?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/5784544944388915312/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=5784544944388915312' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5784544944388915312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5784544944388915312'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/10/java.html' title='Отладка Java приложений'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_u5UJYftbSgA/TLQh400r6nI/AAAAAAAABKc/RS_QJtYyGCI/s72-c/001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-6847024412190174755</id><published>2010-09-06T13:45:00.001+03:00</published><updated>2010-09-06T13:51:25.492+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mantis'/><title type='text'>примитивный TimeTracking для Matis'а</title><content type='html'>После сообщения в твиттере "написал примитивный тайм-трекер для mantis'а", мне уже не первый человек пишет мне на мыло "поделись". &lt;br /&gt;
Собственно мне не жалко. &lt;a href="http://moon.lg.ua/TimeTracking.tgz"&gt;ссылка на скачивание&lt;/a&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Распространяется As Is&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
под катом немного описания + скрин что это такое и как это работает... &lt;a name='more'&gt;&lt;/a&gt;  У нас есть задачи, есть сотрудники которые эти самые задачи выполняют - нужно контролировать на какие задачи ушло больше времени, сколько на задачи в определенный день потрачено времени. Т.е. имеем сбор статистических данных.&lt;br /&gt;
"Жизненный цикл" задачи у нас:  &lt;ul&gt;&lt;li&gt;задача создана и назначена. Статус у задачи в итоге &lt;b&gt;"назначен"&lt;/b&gt; - это первый шаг&lt;/li&gt;
&lt;li&gt;задачу начал выполнять сотрудник (или мы сами), сотрудник через сайт или через плагин к eclipse устанавливает статус &lt;b&gt;"рассмотрен"&lt;/b&gt; - для нашего таймтрекера это будет "начало выполнения работы"&lt;/li&gt;
&lt;li&gt;задача выполнена или "приостановлена". Т.е. сотрудник устанавливает статус &lt;b&gt;"назначен"&lt;/B&gt; в случае если он "приостанавливает" выполнение и планирует позже продолжить, либо &lt;b&gt;"отработан"&lt;/b&gt;/&lt;b&gt;"закрыт"&lt;/b&gt; - тогда задача считается решенная.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;br /&gt;
Как обязательное условие до конца дня все задачи которые были "рассмотрены" должны быть закрыты, т.е. статус &lt;b&gt;"назначен"&lt;/B&gt;/&lt;b&gt;"отработан"&lt;/b&gt;/&lt;b&gt;"закрыт"&lt;/b&gt;.&lt;br /&gt;
Если открыты 2 задачи, т.е. выполняются одновременно в "общее время" попадет сумма 2х задач (т.е. за день может быть и 60 часов ;) )&lt;br /&gt;
В будущем планирую прикрутить DatePicker (jQuery) для выбора даты, ну и пожелания (если они будут).&lt;br /&gt;
Скрин пример: &lt;a href='http://picasaweb.google.com/dip56245/DropBox#5513748211745537250'&gt;&lt;img src='http://lh3.ggpht.com/_u5UJYftbSgA/TITEyRYJvOI/AAAAAAAABI4/isfxviJ63fc/s288/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-MantisBT%20-%20Google%20Chrome.png' border='0'&gt;&lt;/a&gt;&lt;br&gt;&lt;br /&gt;
&lt;br&gt;&lt;br /&gt;
P.S. на скрине одна из задач не закрыта была в этот день, время считается для открытых задач от момента открытия до текущего, поэтому "так много". ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-6847024412190174755?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/6847024412190174755/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=6847024412190174755' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/6847024412190174755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/6847024412190174755'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/09/timetracking-matis.html' title='примитивный TimeTracking для Matis&amp;#39;а'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_u5UJYftbSgA/TITEyRYJvOI/AAAAAAAABI4/isfxviJ63fc/s72-c/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-MantisBT%20-%20Google%20Chrome.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-303928612180383002</id><published>2010-08-22T21:45:00.004+03:00</published><updated>2010-08-22T22:06:42.823+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='лытдыбр'/><title type='text'>Очередная нае..ка от МТС</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/THFwo5TyNTI/AAAAAAAABGE/NfOhGZr3fXM/s1600/60859637_mtsmedved.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 238px; height: 313px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/THFwo5TyNTI/AAAAAAAABGE/NfOhGZr3fXM/s320/60859637_mtsmedved.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5508307667131708722" /&gt;&lt;/a&gt;
Сегодня столкнулся с таким приколом... В 13-14 пришла СМС с неизвестного мне номера, с текстом "Что завтра делаешь?"... я попытался перезвонить на этот номер - "нет связи с абонентом"... ну думаю кто-то из знакомых поменял карточку и отсылаю СМСку мол "Ты хто?", через 30 секунд ответ пришел с именем, с таким именем у меня в знакомых только 1 человек есть (кто знает мой номер).... я попытался еще раз набрать по этому номер - "нет связи"... отсылаю опять смс с текстом мол "дозвонится не могу", через 30 секунд снова СМС в ответ "Что так? Как сам?"... перезваниваю на номер того человека "якобы с которым я общался" но уже на тот номер который есть в книге... &lt;br&gt;
говорю мол:&lt;br&gt;
- от тебя СМС?&lt;br&gt;
- Какие?&lt;br&gt;
- СМСки от "левого" номера, дозвонится на него не могу, а СМС туды обратно идут...&lt;br&gt;
- Ааа... я уже не ведусь, уже приходило... развод...&lt;br&gt;
&lt;br&gt;
ладно... звоню еще одному товарищу, мол так и так:&lt;br&gt;
- Сталкивался?&lt;br&gt;
- Ага, почти всем сотрудникам на работе последнюю неделю приходили... Звонили оператору спрашивали, сказали что МТС таким не занимается и типа ниприделах.&lt;br&gt;
....&lt;br&gt;
&lt;br&gt;
Позвонил сам на 111, объяснил ситуацию, у меня взяли номер от кого пришла СМС, долго переключали... в итоге мне сказали что это номер абонента и за его действия они не отвечают (это сокращенная версия 2х минутной речи) и положили трубку ) от так от...&lt;br&gt;
&lt;br&gt;
так шо будьте вкурсе... еще рассказывали, но чет как-то с трудом верится, хотя если правда - не удивлюсь, вообщем если все таки дозвонится на этот номер то за каждую минуту снимают приличную сумму...&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-303928612180383002?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/303928612180383002/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=303928612180383002' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/303928612180383002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/303928612180383002'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/08/blog-post.html' title='Очередная нае..ка от МТС'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_u5UJYftbSgA/THFwo5TyNTI/AAAAAAAABGE/NfOhGZr3fXM/s72-c/60859637_mtsmedved.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-3023501761086999449</id><published>2010-08-06T14:30:00.002+03:00</published><updated>2010-08-06T14:33:31.773+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='лытдыбр'/><title type='text'>petrus-blogger</title><content type='html'>&amp;nbsp;&amp;nbsp;Незнаю кому как, но лично мне дико не удобно пользоваться веб-редактором который предлагает blogger.com. Сегодня на глаза попалась программа &lt;a href="http://code.google.com/p/petrus-blogger/"&gt;petrus-blogger&lt;/a&gt; - позволяет писать во встроенном редакторе и затем размещать на необходимом сервисе.
&amp;nbsp;&amp;nbsp;Умеет подключаться:&lt;ul&gt;&lt;li&gt;livejournal&lt;/li&gt;&lt;li&gt;blogger.com&lt;/li&gt;&lt;li&gt;wordpress.com&lt;/li&gt;&lt;li&gt;WordPress Generic&lt;/li&gt;&lt;li&gt;Flickr&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;&amp;nbsp;Программа написана на Java, стартует через JNLP, на моей рабочей машинке под бубунтой 10.04 работает очень даже шустро. Понравилось что есть возможность "брать" фотографии из пикасы.
&amp;nbsp;&amp;nbsp;Мож кому понравиццо.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-3023501761086999449?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/3023501761086999449/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=3023501761086999449' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/3023501761086999449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/3023501761086999449'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/08/petrus-blogger.html' title='petrus-blogger'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-3118986731233273883</id><published>2010-08-05T15:42:00.004+03:00</published><updated>2010-09-03T09:59:39.143+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='junit'/><title type='text'>Немного про JUnit</title><content type='html'>&amp;nbsp;&amp;nbsp;Использовать Unit тесты или нет, это уже решает каждый программист сам, где-то они удобны, где-то нет, поэтому это уже вопрос второй и не настолько важный, но ИМХО хотя бы знать что это такое и как это можно использовать - нужно каждому.&lt;br&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Что такое JUnit? Это один из способов тестирования программ на Java. Существуют также фреймворки для других языков, но в данном примере рассмотрим JUnit.&lt;br&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;На просторах паутины очень много примеров и при желании можно легко найти от простых до достаточно сложных комплексных проверок. В данной статье - будет рассмотрена только основа.&lt;br&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Итак предположим у нас есть задача написать математическую библиотеку с методами сложение, вычитания и какой нибудь хитрой функцией. Например такую:&lt;br /&gt;
&lt;pre class="brush: java"&gt;public class MathTest {
  public static int inc(int a, int b){
    return a+b;
  }
  public static int dec(int a, int b){
    return a-b;
  }
  public static int f1(int a, int b){
    if (a&gt;b){
      return a-b;
    } else {
      return a+b;
    }
  }
}
&lt;/pre&gt;естественно её нужно проверить, самый простой и быстрый способ - это добавить точку входа main и написать все необходимые проверки, например так:&lt;br /&gt;
&lt;pre class="brush: java"&gt;public static void main(String[] args) {
  System.out.println(MathTest.inc(2, 2));
  System.out.println(MathTest.dec(3, 2));
  System.out.println(MathTest.f1(12, 4));
  System.out.println(MathTest.f1(4, 12));
}
&lt;/pre&gt;результатом будет:&lt;br /&gt;
&lt;pre class="brush: powershell"&gt;4
1
8
16&lt;/pre&gt;с задачей "проверить" данный способ справляется на все 100%, но предположим что у нас таких методов десятки, или сотни... И "возможно" что при следующем внесении изменений будут затронуты те самые классы которые мы сейчас проверили. Тратить время и запускать каждый класс в отдельности никто не будет (программисты люди ленивые)...&lt;br&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Вариант номер два - вынести все подобные проверки в один класс, в котором по очереди будут вызываться методы из MathTest и подобных классов + проверять "что вернулось", если данные отличаются - то генерировать сообщение об ошибке. Например так:&lt;br /&gt;
&lt;pre class="brush: java"&gt;public static void main(String[] args) throws Exception {
  if (MathTest.inc(2, 2)!=4){ throw new Exception("MathTest.inc"); }
  if (MathTest.dec(3, 2)!=1){ throw new Exception("MathTest.dec"); }
  if (MathTest.f1(12, 4)!=8){ throw new Exception("MathTest.f1"); }
  if (MathTest.f1(4, 12)!=16){ throw new Exception("MathTest.f1"); }
  System.out.println("test ok...");
}
&lt;/pre&gt;&amp;nbsp;&amp;nbsp;Но в реальном проекте если есть хотя бы несколько десятков таких проектов - мы уже начнем выносить методы сравнения чисел, сравнения строк, разбивать на методы-блоки и т.д. и т.п. собственно даже в этом примере мы уже практически приблизились к написанию своего собственного JUnit'а (очередного велосипеда).&lt;br&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Собственно для этого нам и нужна библиотека JUnit, для того что бы упростить задачу тестирования. Нам нужно скачать с офф-сайта &lt;a  href="http://github.com/KentBeck/junit/downloads"&gt;http://www.junit.org/&lt;/a&gt; библиотеку и добавить в зависимости к нашему проекту.&lt;br&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Создадим новый класс наследник от &lt;b&gt;junit.framework.TestCase&lt;/b&gt; и добавим в него методы, каждый метод-проверка должен начинаться с &lt;b&gt;test&lt;/b&gt;.&lt;br /&gt;
&lt;pre class="brush: java"&gt;public class MathTestUnit extends TestCase {
  public MathTestUnit() {
    super("MathTest class");
  }
  public void testInc(){
    assertEquals(4, MathTest.inc(2, 2));
    assertEquals(8, MathTest.inc(4, 4));
  }
  public void testDec(){
    assertEquals(1, MathTest.dec(3, 2));
    assertEquals(2, MathTest.dec(4, 2));
  }
  public void testF1(){
    assertEquals(8, MathTest.f1(12, 4));
    assertEquals(16, MathTest.f1(4, 12));
  }
}
&lt;/pre&gt;в каждом методе мы выполняем по две проверки (&lt;i&gt;можно одну, можно десять - это кому сколько нравится или сколько по Вашему мнению будет достаточно&lt;/i&gt;). Метод который мы используем &lt;b&gt;assertEquals&lt;/b&gt; - это аналог той самой конструкции которую мы городили выше:&lt;br /&gt;
&lt;pre class="brush: java"&gt;if (MathTest.inc(2, 2)!=4){ throw new Exception("MathTest.inc"); }
&lt;/pre&gt;Собственно если используется Eclipse - достаточно в меню запуска класса выбрать "запустить как JUnit" и увидим окошко с результатами нашей проверки:&lt;br&gt;&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TFqqb9gYBSI/AAAAAAAABFY/3QEUXJQ3ZE8/s1600/001.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TFqqb9gYBSI/AAAAAAAABFY/3QEUXJQ3ZE8/s320/001.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5501897292130026786" /&gt;&lt;/a&gt;&lt;br&gt;&lt;br /&gt;
Через Eclipse так-же можно запустить весь пакет в котором находится несколько классов-тестов, например можно скопировать тот же самый тест и в нем специально допустить ошибку, в результате мы увидим:&lt;br&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/TFqqmeSprCI/AAAAAAAABFg/s7iiv_yEp9w/s1600/002.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/TFqqmeSprCI/AAAAAAAABFg/s7iiv_yEp9w/s320/002.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5501897472729525282" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br&gt;&lt;br /&gt;
При возникновении ошибки мы явно видим где и что произошло не так:&lt;br /&gt;
&lt;pre class="brush: powershell"&gt;junit.framework.AssertionFailedError: expected:&lt;16&gt; but was:&lt;17&gt;
....
&lt;/pre&gt;т.е. в нашем случае ожидалось 16, а метод вернул 17. Существуют методы assertEquals практически для всех основных типов + существуют такие как assertTrue/assertFalse, assertNull/assertNotNull и т.д. в документации все описано.&lt;br&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;Для тех кто любит консоль, можно написать приблизительно такую проверку:&lt;br /&gt;
&lt;pre class="brush: java"&gt;public class ConsoleTest extends TestCase{
  public ConsoleTest(String testName) {
    super(testName);
  }
  public void testInc(){
    assertEquals(4, MathTest.inc(2, 2));
  }
  public void testDec(){
    assertEquals(1, MathTest.dec(3, 2));
  }
  public void testF1(){
    assertEquals(8, MathTest.f1(12, 4));
  }
  public static void main(String[] args) {
    TestRunner runner = new TestRunner();
    TestSuite suite = new TestSuite();
    suite.addTest(new ConsoleTest("testInc"));
    suite.addTest(new ConsoleTest("testDec"));
    suite.addTest(new ConsoleTest("testF1"));
    runner.doRun(suite);
  }
}
&lt;/pre&gt;соответственно результатом выполнения будет нечто вроде:&lt;br /&gt;
&lt;pre class="brush: powershell"&gt;...
Time: 0,003

OK (3 tests)
&lt;/pre&gt;либо если произойдет ошибка:&lt;br /&gt;
&lt;pre class="brush: powershell"&gt;...F
Time: 0,005
There was 1 failure:
1) testF1(ua.lg.moon.test.ju.ConsoleTest)junit.framework.AssertionFailedError: expected:&lt;8&gt; but was:&lt;7&gt;
at ua.lg.moon.test.ju.ConsoleTest.testF1(ConsoleTest.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at ua.lg.moon.test.ju.ConsoleTest.main(ConsoleTest.java:27)

FAILURES!!!
Tests run: 3,  Failures: 1,  Errors: 0
&lt;/pre&gt;&amp;nbsp;&amp;nbsp;И небольшой совет, для того что бы не включать проверки в основной проект (что бы на промо сервера не тянуть JUnit библиотеку), можно создать второй проект, в зависимостях которого установить Ваш основной и все JUnit проверки осуществлять во втором проекте.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-3118986731233273883?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/3118986731233273883/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=3118986731233273883' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/3118986731233273883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/3118986731233273883'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/08/junit.html' title='Немного про JUnit'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_u5UJYftbSgA/TFqqb9gYBSI/AAAAAAAABFY/3QEUXJQ3ZE8/s72-c/001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-1337996118001695853</id><published>2010-07-27T11:46:00.002+03:00</published><updated>2010-07-27T11:47:48.749+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Проверка валидности email'а на Java</title><content type='html'>Из серии "не потерять".

Для проверки на яве валидность email'а можно использовать:
&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;static&lt;/span&gt; boolean isValidEmail(String email)&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  Pattern p &lt;span style='color:#808030; '&gt;=&lt;/span&gt; Pattern&lt;span style='color:#808030; '&gt;.&lt;/span&gt;compile&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;".+@.+&lt;/span&gt;&lt;span style='color:#0f69ff; '&gt;\\&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;.[a-z]+"&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  Matcher m &lt;span style='color:#808030; '&gt;=&lt;/span&gt; p&lt;span style='color:#808030; '&gt;.&lt;/span&gt;matcher&lt;span style='color:#808030; '&gt;(&lt;/span&gt;email&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;return&lt;/span&gt; m&lt;span style='color:#808030; '&gt;.&lt;/span&gt;matches&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-1337996118001695853?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/1337996118001695853/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=1337996118001695853' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/1337996118001695853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/1337996118001695853'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/07/email-java.html' title='Проверка валидности email&apos;а на Java'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-1201997127338896188</id><published>2010-07-23T10:10:00.003+03:00</published><updated>2010-07-23T10:22:39.966+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>[Ubuntu] Eclipse как бороться с "Subversion Native library not available"</title><content type='html'>Если после запуска Eclipse при установленном &lt;a href="http://subclipse.tigris.org/"&gt;SubEclipse&lt;/a&gt; выпадает окошко "subversion native library not available" - нужно прочитать страничку на их &lt;a href="http://subclipse.tigris.org/wiki/JavaHL"&gt;сайте&lt;/a&gt;

для тех кому лень читать (Ubuntu):
&lt;pre&gt;
$sudo apt-get install libsvn-java
&lt;/pre&gt;
Затем открываем каталог где у Вас установлен Eclipse находим файл &lt;b&gt;eclipse.ini&lt;/b&gt;
после &lt;b&gt;-vmargs&lt;/b&gt; добавляем строчку &lt;b&gt;-Djava.library.path=/usr/lib/jni&lt;/b&gt;

в моем случае получилось:
&lt;pre&gt;
-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_1.1.0.v20100503
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Djava.library.path=/usr/lib/jni
-Dosgi.requiredJavaVersion=1.5
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m
&lt;/pre&gt;

Вуаля...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-1201997127338896188?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/1201997127338896188/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=1201997127338896188' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/1201997127338896188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/1201997127338896188'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/07/ubuntu-eclipse-subversion-native.html' title='[Ubuntu] Eclipse как бороться с &quot;Subversion Native library not available&quot;'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-5298710680873087163</id><published>2010-07-23T09:24:00.005+03:00</published><updated>2010-08-10T11:37:35.525+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>[Ubuntu] FTP как локальная папка</title><content type='html'>Статья носит характер "что б потом не искать".

Задача, надо работать с удаленными FTP. 
Нам понадобится &lt;a href="http://curlftpfs.sourceforge.net/"&gt;curlftpfs&lt;/a&gt;
в убунте ставится:
&lt;pre class="brush: powershell"&gt;
$sudo apt-get install curlftpfs
&lt;/pre&gt;
синтаксис подключения какой-либо папки:
&lt;pre class="brush: powershell"&gt;
$mkdir rem_folder
$curlftpfs ftp://login:pass@hostname/ /path/to/rem_folder
&lt;/pre&gt;
так-же при подключении можно указать ключ -o allow_other, таким образом можно маунтить папки рутом и давать доступ на редактирование всем остальным пользователям.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-5298710680873087163?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/5298710680873087163/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=5298710680873087163' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5298710680873087163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5298710680873087163'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/07/ubuntu-ftp.html' title='[Ubuntu] FTP как локальная папка'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-2890991414773522752</id><published>2010-07-21T21:14:00.002+03:00</published><updated>2010-07-21T22:57:06.182+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>пару слов о наследниках и чтении из БД</title><content type='html'>Сегодня на работе проводил маленький ликбез по поводу граблей на которые сам уже наступил... возможно кому-то пригодится.

Итак предположим у нас есть класс C1:

&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;class&lt;/span&gt; C1&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; &lt;span style='color:#bb7977; font-weight:bold; '&gt;String&lt;/span&gt; field1 &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#0000e6; '&gt;"default1"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; &lt;span style='color:#bb7977; font-weight:bold; '&gt;String&lt;/span&gt; field2 &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#0000e6; '&gt;"default2"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; &lt;span style='color:#bb7977; font-weight:bold; '&gt;String&lt;/span&gt; field3 &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#0000e6; '&gt;"default3"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;/pre&gt;

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

&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; C1 getItemFromResultSet(ResultSet rs) &lt;span style='color:#800000; font-weight:bold; '&gt;throws&lt;/span&gt; Exception&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  C1 item &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;new&lt;/span&gt; C1&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;field1&lt;span style='color:#808030; '&gt;=&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;"from_db_1"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;field2&lt;span style='color:#808030; '&gt;=&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;"from_db_2"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;field3&lt;span style='color:#808030; '&gt;=&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;"from_db_3"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;return&lt;/span&gt; item&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;/pre&gt;
соответственно при использовании у нас получается что-то вроде такого:

&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; C1[] getAll() &lt;span style='color:#800000; font-weight:bold; '&gt;throws&lt;/span&gt; Exception&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  &lt;span style='color:#696969; '&gt;/* &lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;* "select * from table_name order by field1"&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;*/&lt;/span&gt;
  &lt;span style='color:#bb7977; font-weight:bold; '&gt;ResultSet&lt;/span&gt; rs &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;null&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt; &lt;span style='color:#696969; '&gt;//null что б обвязку не писать&lt;/span&gt;
  rs&lt;span style='color:#808030; '&gt;.&lt;/span&gt;last&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  C1&lt;span style='color:#808030; '&gt;[&lt;/span&gt;&lt;span style='color:#808030; '&gt;]&lt;/span&gt; items &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;new&lt;/span&gt; C1&lt;span style='color:#808030; '&gt;[&lt;/span&gt;rs&lt;span style='color:#808030; '&gt;.&lt;/span&gt;getRow&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#808030; '&gt;]&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  rs&lt;span style='color:#808030; '&gt;.&lt;/span&gt;beforeFirst&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;while&lt;/span&gt; &lt;span style='color:#808030; '&gt;(&lt;/span&gt;rs&lt;span style='color:#808030; '&gt;.&lt;/span&gt;next&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
    items&lt;span style='color:#808030; '&gt;[&lt;/span&gt;rs&lt;span style='color:#808030; '&gt;.&lt;/span&gt;getRow&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#808030; '&gt;-&lt;/span&gt;&lt;span style='color:#008c00; '&gt;1&lt;/span&gt;&lt;span style='color:#808030; '&gt;]&lt;/span&gt;&lt;span style='color:#808030; '&gt;=&lt;/span&gt;getItemFromResultSet&lt;span style='color:#808030; '&gt;(&lt;/span&gt;rs&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800080; '&gt;}&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;return&lt;/span&gt; items&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; C1 getByID(long id) &lt;span style='color:#800000; font-weight:bold; '&gt;throws&lt;/span&gt; Exception&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  &lt;span style='color:#696969; '&gt;/*&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;* "select * from table_name where id='"+id+"'"&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;*/&lt;/span&gt;
  &lt;span style='color:#bb7977; font-weight:bold; '&gt;ResultSet&lt;/span&gt; rs &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;null&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;if&lt;/span&gt; &lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;!&lt;/span&gt;rs&lt;span style='color:#808030; '&gt;.&lt;/span&gt;next&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
    &lt;span style='color:#800000; font-weight:bold; '&gt;throw&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;new&lt;/span&gt; &lt;span style='color:#bb7977; font-weight:bold; '&gt;Exception&lt;/span&gt;&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;"Запись не найдена"&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800080; '&gt;}&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;return&lt;/span&gt; getItemFromResultSet&lt;span style='color:#808030; '&gt;(&lt;/span&gt;rs&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;/pre&gt;

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

&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;class&lt;/span&gt; C2 &lt;span style='color:#800000; font-weight:bold; '&gt;extends&lt;/span&gt; C1&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; &lt;span style='color:#bb7977; font-weight:bold; '&gt;String&lt;/span&gt; name2 &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#0000e6; '&gt;"default 2"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;/pre&gt;

И теперь скажем нам нужен метод, который вернет по номеру C2 класс, но в нем всего-лишь навсего нужно добавит 1 доп. поле. Первое что приходит на ум написать:

&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; C2 getByIDEx(long id) &lt;span style='color:#800000; font-weight:bold; '&gt;throws&lt;/span&gt; Exception&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  &lt;span style='color:#696969; '&gt;/*&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;* "select *, &lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;* (select count(*) from table2) as cnt &lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;* from table_name where id='"+id+"'"&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;*/&lt;/span&gt;
  &lt;span style='color:#bb7977; font-weight:bold; '&gt;ResultSet&lt;/span&gt; rs &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;null&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#696969; '&gt;//if (!rs.next()){&lt;/span&gt;
&lt;span style='color:#696969; '&gt;//  throw new Exception("Запись не найдена");&lt;/span&gt;
&lt;span style='color:#696969; '&gt;//}&lt;/span&gt;
  C2 item &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#808030; '&gt;(&lt;/span&gt;C2&lt;span style='color:#808030; '&gt;)&lt;/span&gt;getItemFromResultSet&lt;span style='color:#808030; '&gt;(&lt;/span&gt;rs&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#696969; '&gt;//item.name2 = rs.getString("cnt");&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;name2 &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#0000e6; '&gt;"from_db_cnt"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;return&lt;/span&gt; item&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;/pre&gt;

Но на практике при попытке такое вызвать мы получим:

&lt;pre style='color:#000000;background:#ffffff;'&gt;Exception in thread "main" java.lang.ClassCastException: ua.lg.moon.Start$C1 cannot be cast to ua.lg.moon.Start$C2
    at ua.lg.moon.Start.getByIDEx(Start.java:54)
    at ua.lg.moon.Start.&amp;lt;init&gt;(Start.java:60)
    at ua.lg.moon.Start.main(Start.java:63)
&lt;/pre&gt;

Текст ошибки нам явно сообщает о том что у нас есть элемент класса C1, а мы его пытаемся преобразовать в класс C2. Что в принципе логично. Т.е. сама JVM не дает нам совершить ошибку. Какие варианты в такой ситуации? Первое - создать еще один метод, который будет полной копией getItemFromResultSet, но при этом будет возвращать C2 элемент, но при таком подходе, при появлении C3 у нас еще один метод появится, затем еще один и т.д. и т.п. Логичнее все-таки подумать... следующее решение:

&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; void copyFromResultSet(ResultSet rs, C1 item) &lt;span style='color:#800000; font-weight:bold; '&gt;throws&lt;/span&gt; Exception&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;field1&lt;span style='color:#808030; '&gt;=&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;"from_db_1"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;field2&lt;span style='color:#808030; '&gt;=&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;"from_db_2"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;field3&lt;span style='color:#808030; '&gt;=&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;"from_db_3"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;/pre&gt;

В данном случае, мы уже не привязаны к конкретному классу, т.к. мы его не создаем. Единственно что нам нужно, это что бы в качестве параметра item у нас был любой наследник C1 или соответственно сам элемент C1. Но на практике у нас уже есть множество мест, где используется предыдущий вариант. Может есть смысл как-то изменить старый вариант с возможностью использования наследников? В моем случае получился такой вариант:

&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; C1 getItemFromResultSet(ResultSet rs, C1 item) &lt;span style='color:#800000; font-weight:bold; '&gt;throws&lt;/span&gt; Exception&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;field1&lt;span style='color:#808030; '&gt;=&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;"from_db_1"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;field2&lt;span style='color:#808030; '&gt;=&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;"from_db_2"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;field3&lt;span style='color:#808030; '&gt;=&lt;/span&gt;&lt;span style='color:#0000e6; '&gt;"from_db_3"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;return&lt;/span&gt; item&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; C1 getItemFromResultSet(ResultSet rs) &lt;span style='color:#800000; font-weight:bold; '&gt;throws&lt;/span&gt; Exception&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;return&lt;/span&gt; getItemFromResultSet&lt;span style='color:#808030; '&gt;(&lt;/span&gt;rs&lt;span style='color:#808030; '&gt;,&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;new&lt;/span&gt; C1&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;/pre&gt;

в данном случае у нас в старом использовании все останется как и было, нам не нужно будет переписывать тонны кода, но для решения с классом C2 нам достаточно написать такой метод:

&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#800000; font-weight:bold; '&gt;public&lt;/span&gt; C2 getByIDEx(long id) &lt;span style='color:#800000; font-weight:bold; '&gt;throws&lt;/span&gt; Exception&lt;span style='color:#800080; '&gt;{&lt;/span&gt;
  &lt;span style='color:#696969; '&gt;/*&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;* "select *, &lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;* (select count(*) from table2) as cnt &lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;* from table_name where id='"+id+"'"&lt;/span&gt;
&lt;span style='color:#696969; '&gt;&amp;#xa0;&amp;#xa0;&amp;#xa0;*/&lt;/span&gt;
  &lt;span style='color:#bb7977; font-weight:bold; '&gt;ResultSet&lt;/span&gt; rs &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;null&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#696969; '&gt;//if (!rs.next()){&lt;/span&gt;
&lt;span style='color:#696969; '&gt;//  throw new Exception("Запись не найдена");&lt;/span&gt;
&lt;span style='color:#696969; '&gt;//}&lt;/span&gt;
  C2 item &lt;span style='color:#808030; '&gt;=&lt;/span&gt; getItemFromResultSet&lt;span style='color:#808030; '&gt;(&lt;/span&gt;rs&lt;span style='color:#808030; '&gt;,&lt;/span&gt; &lt;span style='color:#800000; font-weight:bold; '&gt;new&lt;/span&gt; C2&lt;span style='color:#808030; '&gt;(&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#808030; '&gt;)&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#696969; '&gt;//item.name2 = rs.getString("cnt");&lt;/span&gt;
  item&lt;span style='color:#808030; '&gt;.&lt;/span&gt;name2 &lt;span style='color:#808030; '&gt;=&lt;/span&gt; &lt;span style='color:#0000e6; '&gt;"from_db_cnt"&lt;/span&gt;&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
  &lt;span style='color:#800000; font-weight:bold; '&gt;return&lt;/span&gt; item&lt;span style='color:#800080; '&gt;;&lt;/span&gt;
&lt;span style='color:#800080; '&gt;}&lt;/span&gt;
&lt;/pre&gt;

теперь при появлении наследников C3 или любого другого, нам достаточно только писать методы аналогичные getByIDEx в которых для заполнения полей класса C1 мы используем один и тот-же метод, а затем "дополняем" его отличающимися данным. И как следствие при появлении нового поля в родительском классе C1 нам новое поле достаточно прописать только в методе getItemFromResultSet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-2890991414773522752?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/2890991414773522752/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=2890991414773522752' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/2890991414773522752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/2890991414773522752'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/07/blog-post_21.html' title='пару слов о наследниках и чтении из БД'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-2053825499667292278</id><published>2010-07-12T15:35:00.002+03:00</published><updated>2010-07-12T15:51:00.077+03:00</updated><title type='text'>ubuntu и кнопки управления окном</title><content type='html'>Заметка "шоб потом не искать"
по умолчанию в gnome убунты кнопки управления окном с левой стороны (лично мне не удобно).

для того что бы исправить:
&lt;span style="font-weight:bold;"&gt;$gconf-editor
открываем /apps/metacity/general/, находим ключ "button_layout" и меняем на "menu:minimize,maximize,close"&lt;/span&gt;

варианты консольные:
&lt;span style="font-weight:bold;"&gt;$gconftool --type string --set /apps/metacity/general/button_layout "menu:minimize,maximize,close"
&lt;/span&gt;
или вернуть обратно:
&lt;span style="font-weight:bold;"&gt;$gconftool --type string --set /apps/metacity/general/button_layout "close,maximize,minimize:"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-2053825499667292278?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/2053825499667292278/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=2053825499667292278' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/2053825499667292278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/2053825499667292278'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/07/ubuntu.html' title='ubuntu и кнопки управления окном'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-556299623491496260</id><published>2010-07-09T21:07:00.000+03:00</published><updated>2010-07-09T21:08:27.083+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Установка связки Subversion+Apache Ubuntu 9.10</title><content type='html'>Как говорится - по просьбам телезрителей статья в 2х словах как настроить SVN сервер на Ubuntu. Если интересно - вэлкам под кат...

&lt;a name='more'&gt;&lt;/a&gt;
&lt;h2&gt;Установка пакетов&lt;/h2&gt;
&lt;p&gt;Так как сейчас у большинства стоит бубунта её и возьмем за основу. Поставим для начала клиент для svn:&lt;br&gt;
&lt;pre style='color:#000000;background:#ffffff;'&gt;$sudo apt-get install subversion&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;Будем делать доступ к SVN через apache. Поставим еще пакет:&lt;br&gt;
&lt;pre style='color:#000000;background:#ffffff;'&gt;$sudo apt-get install libapache2-svn
$sudo &lt;span style='color:#3f3fbf; '&gt;/etc/init&lt;/span&gt;&lt;span style='color:#7f0055; font-weight:bold; '&gt;.&lt;/span&gt;&lt;span style='color:#3f3fbf; '&gt;d/apache2&lt;/span&gt; restart&lt;/pre&gt;
&lt;/p&gt;

&lt;h2&gt;Создание репозитория&lt;/h2&gt;
&lt;p&gt;У нас есть поддержка SVN в apache2. Настроим какой нибудь репозиторий.&lt;br&gt;
Попробуем создать каталог, который у нас будет являтся репозиторием.&lt;br&gt;
&lt;pre style='color:#000000;background:#ffffff;'&gt;$sudo mkdir -p &lt;span style='color:#3f3fbf; '&gt;/opt/svn/test1&lt;/span&gt;&lt;/pre&gt;
затем нужно сделать его репозиторием командой &amp;quot;svnadmin create&amp;quot;:&lt;br&gt;
&lt;pre style='color:#000000;background:#ffffff;'&gt;$sudo svnadmin create &lt;span style='color:#3f3fbf; '&gt;/opt/svn/test1&lt;/span&gt;&lt;span style='color:#3f3fbf; '&gt;/&lt;/span&gt;
&lt;/pre&gt;
теперь в каталоге /opt/svn/test1 находится наш репозиторий (чистый). По правильному этому каталогу и всему содержимому нужно присвоить владельца и группу от которых работает апач, но что б не морочить голову, сделаем проще:&lt;br&gt;
&lt;pre style='color:#000000;background:#ffffff;'&gt;$sudo chmod -R 777 &lt;span style='color:#3f3fbf; '&gt;/opt/svn/test1&lt;/span&gt;&lt;/pre&gt;
&lt;i&gt;(Для тех кто забыл: коммандой chmod -R 777 ... мы присваем каталогу и всем его файлам режим на чтение/запись/исполнение - для всех)&lt;/i&gt;
&lt;/p&gt;

&lt;h2&gt;Прописываем репозиторий в apache2&lt;/h2&gt;
&lt;p&gt;Далее... нам нужно прописать этот репозиторий к нашему хосту, если у вас есть настроенные виртуальные хосты, выбираете нужный вам и правите, все остальные правят /etc/apache2/sites-available/default, добавляем в самом конце:&lt;br&gt;
&lt;pre style='color:#000000;background:#ffffff;'&gt;....
&amp;lt;Location /svn/test1&gt;
  DAV svn
  AuthType Basic
  Require valid-user
  AuthUserFile /opt/svn/passwords

  AuthName         &lt;span style='color:#2a00ff; '&gt;"&lt;/span&gt;&lt;span style='color:#2a00ff; '&gt;svn::test1&lt;/span&gt;&lt;span style='color:#2a00ff; '&gt;"&lt;/span&gt;
  SVNPath         /opt/svn/test1/
  AuthzSVNAccessFile    /opt/svn/test1/conf/authz
&amp;lt;/Location&gt;
&amp;lt;/VirtualHost&gt;
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;
По порядку что мы сделали:&lt;br&gt;
В тэге Location мы указываем на какой адрес будет отвечать наш svn репозиторий, в данном примере http://127.0.0.1/svn/test1.&lt;br&gt;
&lt;b&gt;AuthUserFile&lt;/b&gt; путь к файлу паролей (мы его чуть ниже создадим)&lt;br&gt;
&lt;b&gt;AuthName&lt;/b&gt; что пользователю выводить когда запрашиваем пароль, тут можно писать например "mega secret project"&lt;br&gt;
&lt;b&gt;SVNPath&lt;/b&gt; где находится репозиторий&lt;br&gt;
&lt;b&gt;AuthzSVNAccessFile&lt;/b&gt; правила доступа к репозиторию&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;
Едем дальше... нам нужно создать файл паролей, можно конечно создавать для каждого репозитория отдельно, но как по мне это глупо. Лучше создать 1 файл для всех svn репозиториев (если у вас их предвидется много) и если кто-то из пользователей забыл пароль - изменить его в одном месте будет проще.
Для создания пароля заходим в каталог /opt/svn и с помощью htpasswd создаем нужный файл.
&lt;pre style='color:#000000;background:#ffffff;'&gt;$cd &lt;span style='color:#3f3fbf; '&gt;/opt/svn&lt;/span&gt;
$sudo htpasswd -cb passwords user1 qwerty
&lt;/pre&gt;
Естественно логин и пароль заменить на свои.&lt;br&gt;
Если нужно еще кого либо добавить, пишем:
&lt;pre style='color:#000000;background:#ffffff;'&gt;$sudo htpasswd -b passwords user2 asdf
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;
файл паролей есть, переходим к правилам доступа:
&lt;pre style='color:#000000;background:#ffffff;'&gt;$cd &lt;span style='color:#3f3fbf; '&gt;/opt/svn/test1/conf&lt;/span&gt;&lt;span style='color:#3f3fbf; '&gt;/&lt;/span&gt;
&lt;/pre&gt;
по умолчанию этот файл содержит уже пример конфигурации, но мы создадим такой:
&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#7f9fbf; font-weight:bold; '&gt;[/]&lt;/span&gt;
user1=rw
user2=r
&lt;/pre&gt;
собственно тут мы указали что user1 - может и писать и читать, а пользователь user2 - может только читать. С помощью этого файла можно "гибко" разграничивать людей на группы, давать доступ только к части репозитория.
&lt;/p&gt;

&lt;h2&gt;Небольшая ремарка&lt;/h2&gt;
&lt;p&gt;
Представим себе ситуацию, есть проект, есть владелец проекта &lt;b&gt;god&lt;/b&gt; и 2 подчиненных: &lt;b&gt;user1&lt;/b&gt; и &lt;b&gt;user2&lt;/b&gt;. Задачи user1 и user2 в поддержке и внесении изменений в проект, но отвечает за все эти изменения god. Нужно сделать так, что бы в /trunk мог писать только &lt;b&gt;god&lt;/b&gt;, а в ветки - сотрудники. Пишем файл доступа:
&lt;pre style='color:#000000;background:#ffffff;'&gt;&lt;span style='color:#7f9fbf; font-weight:bold; '&gt;[/]&lt;/span&gt;
god=rw
user1=r
user2=r
&lt;span style='color:#7f9fbf; font-weight:bold; '&gt;[/branches]&lt;/span&gt;
user1=rw
user2=rw
&lt;/pre&gt;
Теперь предположим &lt;b&gt;god&lt;/b&gt; дает задание:&lt;br&gt;
&lt;b&gt;user1&lt;/b&gt; - сделать задание1, а &lt;b&gt;user2&lt;/b&gt; должен сделать задание2. Каждый из них создает себе ветку в /branches. При создании ветки, они полностью по сути копируют текущее состояние /trunk, например:&lt;br&gt;
user1 -&gt; /branches/1user_001&lt;br&gt;
user2 -&gt; /branches/2user_001&lt;br&gt;
и ведут свою разработку, комитят скока угодно раз.&lt;br&gt;
1. они не мешают друг другу&lt;br&gt;
2. если зашли в тупик или как часто бывает "не знаю из-за чего не компилится" прибивается ветка и создается другая и вней ведется разработка задачи сначала - не трогая основной проект.&lt;br&gt;
&lt;br&gt;
как только допустим &lt;b&gt;user2&lt;/b&gt; закончил работу, он сообщает &lt;b&gt;god&lt;/b&gt;'у что работа сделана, &lt;b&gt;god&lt;/b&gt; через IDE или консольными командами может сделать merge в /trunk из ветки /branches/2user_001, причем перед тем как вносить изменения в /trunk - он может просмотреть "все изменения" которые внес user2. Затем если все впорядке - делает коммит /trunk ветки, если нет может откатить эти изменения.&lt;br&gt;
Допустим все хорошо, и в /trunk обновлены данные. Теперь user1'у говорят: "обновись из /trunk'а тут много изменений", он делает merge из /trunk в /branches/1user_001, после этого в его ветке будут изменения из /trunk и те которые он до этого написал. Когда он закончит работу - сценарий выше.&lt;br&gt;
Возможна ситуация когда 2 и более программиста будут работать в одной ветке - это тоже никак не противоречит системе. Т.е. вариантов использования ОЧЕНЬ много.
&lt;/p&gt;

&lt;h2&gt;Пробуем запускать.&lt;/h2&gt;
&lt;p&gt;
&lt;pre style='color:#000000;background:#ffffff;'&gt;$sudo &lt;span style='color:#3f3fbf; '&gt;/etc/init&lt;/span&gt;&lt;span style='color:#7f0055; font-weight:bold; '&gt;.&lt;/span&gt;&lt;span style='color:#3f3fbf; '&gt;d/apache2&lt;/span&gt; restart
&lt;/pre&gt;
для проверки, открываем браузер и вводим:&lt;br&gt;
&lt;a href="http://127.0.0.1/svn/test1"&gt;http://127.0.0.1/svn/test1&lt;/a&gt;
вводим логин и пароль который создавали и должны увидеть что-то вроде:&lt;br&gt;
&lt;pre style='color:#000000;background:#ffffff;'&gt;test1 - Revision 0: /
Powered by Subversion version 1.6.5 (r38866).
&lt;/pre&gt;
если нет, смотрим ошибки апача.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-556299623491496260?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/556299623491496260/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=556299623491496260' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/556299623491496260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/556299623491496260'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/07/subversionapache-ubuntu-910.html' title='Установка связки Subversion+Apache Ubuntu 9.10'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-5389367557064543519</id><published>2010-07-09T20:58:00.004+03:00</published><updated>2010-07-09T22:20:45.407+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Eclipse+SVN</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Вместо введения&lt;/span&gt;

Для меня до сих пор не понятно, как можно проработать несколько лет в сфере программирования и не использовать такие вещи как CVS, SVN, GIT...
CVS я не рассматриваю как морально устаревшую и жутко не удобную вещь, GIT – это децентрализованное хранилище, и мы его пока тоже не будем рассматривать. Остается SVN, он же Subversion.
Для чего вообще нужно хранилище? Ответ казалось бы банальный: хранить какие либо материалы, иметь информацию кто и когда изменил, а главное возможность узнать «что изменил».
В общем если Вам эта тема интересна — читайте далее (трафа ~3Mb)....
&lt;a name='more'&gt;&lt;/a&gt;

&lt;span style="font-weight:bold;"&gt;Шаг1 - установка Subclipse&lt;/span&gt;
Для работы с репозиторием прямо из Eclipse нам нужно установить &lt;a href="http://subclipse.tigris.org"&gt;Subclipse&lt;/a&gt;
О том как его установить в принципе написано на сайте, но зная природную лень многих, опишу тут.
Для установки нам необходимо зайти в "Help"/"Install new software", откроется диалог "Install".

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdyVRmhCTI/AAAAAAAAA6Y/ZTMuHFvVGEQ/s1600/000.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdyVRmhCTI/AAAAAAAAA6Y/ZTMuHFvVGEQ/s320/000.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491983980429379890" /&gt;&lt;/a&gt;
в диалоге нужно нажать "Add"
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdyV4uLtyI/AAAAAAAAA6g/mQwou6V6CYY/s1600/001.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 133px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdyV4uLtyI/AAAAAAAAA6g/mQwou6V6CYY/s320/001.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491983990930519842" /&gt;&lt;/a&gt;
заполнить поля:
&lt;b&gt;Name:&lt;/b&gt; Subclipse (или любое другое)
&lt;b&gt;Location:&lt;/b&gt; &lt;a href="http://subclipse.tigris.org/update_1.6.x"&gt;http://subclipse.tigris.org/update_1.6.x&lt;/a&gt;
после нажатия &amp;quot;ОК&amp;quot;, в области &amp;quot;Work with&amp;quot; выбрать вновь созданный репозиторий. Собственно устанавливаем Subclipse:
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdyWVIBwWI/AAAAAAAAA6o/DHu5Z-5wFRE/s1600/002.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdyWVIBwWI/AAAAAAAAA6o/DHu5Z-5wFRE/s320/002.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491983998555111778" /&gt;&lt;/a&gt;
После нажатия "Next" будет проверка зависимостей, в которой нужно нажать снова "Next"
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TDdyWvfpdII/AAAAAAAAA6w/2k1JFyQ8ovU/s1600/003.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TDdyWvfpdII/AAAAAAAAA6w/2k1JFyQ8ovU/s320/003.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984005633504386" /&gt;&lt;/a&gt;
И на последнем диалоге, согласится с лицензией и нажать "Finish"
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdyW46L6GI/AAAAAAAAA64/2ctgDBtK-0o/s1600/004.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 252px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdyW46L6GI/AAAAAAAAA64/2ctgDBtK-0o/s320/004.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984008160733282" /&gt;&lt;/a&gt;
собственно все... после установки Eclipse попросит перезагрузки. Перезагружаем Eclipse и Subclipse установлен. поздравляю.

&lt;span style="font-weight:bold;"&gt;Шаг2 - размещение проекта в репозитории&lt;/span&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/TDdy1tBDW_I/AAAAAAAAA7A/qagmfFgemQo/s1600/101.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/TDdy1tBDW_I/AAAAAAAAA7A/qagmfFgemQo/s320/101.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984537544252402" /&gt;&lt;/a&gt;
Допустим у нас есть рабочий проект который мы хотим поместить в SVN репозиторий. Я буду показывать на примере Java проекта, но можно так же хранить проект на любом языке какой вы используете. Для этого нажимаем правой 
кнопкой на проекте и выбираем "Team"/"Shre project"
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdy2Q8RXTI/AAAAAAAAA7I/naJArmoTmWc/s1600/102.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdy2Q8RXTI/AAAAAAAAA7I/naJArmoTmWc/s320/102.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984547187875122" /&gt;&lt;/a&gt;
выбираем тип хранилища, в нашем случае SVN, и жмем "Next"
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u5UJYftbSgA/TDdy2nUqB0I/AAAAAAAAA7Q/TuGMvBgVtuo/s1600/103.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 288px;" src="http://2.bp.blogspot.com/_u5UJYftbSgA/TDdy2nUqB0I/AAAAAAAAA7Q/TuGMvBgVtuo/s320/103.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984553195734850" /&gt;&lt;/a&gt;
Пишем адрес репозитория и нажимаем "Next"
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdy3247V6I/AAAAAAAAA7Y/IlNxAabCsvE/s1600/104.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 288px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdy3247V6I/AAAAAAAAA7Y/IlNxAabCsvE/s320/104.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984574554265506" /&gt;&lt;/a&gt;
Далее у нас диалог:
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdy4GEWCYI/AAAAAAAAA7g/0iD1vUgoEyo/s1600/105.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 288px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdy4GEWCYI/AAAAAAAAA7g/0iD1vUgoEyo/s320/105.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984578628684162" /&gt;&lt;/a&gt;
В этом диалоге нам нужно выбрать в какую папку сохранить проект.
По умолчанию все будет добавлено в корень репозитория &lt;b&gt;(нам так не нужно)&lt;/b&gt;, выбираем &lt;b&gt;"Use specified folder name"&lt;/b&gt; и вписываем 
&lt;b&gt;trunk&lt;/b&gt;. По хорошему у нас репозиторий должен быть устроен так:
&lt;b&gt;/trunk&lt;/b&gt; - рабочая версия (так сказать "стабильная ветка").
&lt;b&gt;/branches&lt;/b&gt; - ветки разработки.
&lt;b&gt;/tags&lt;/b&gt; - метки, для возврата к сохраненному состоянию.
жмем "Next"
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TDdzMwVAChI/AAAAAAAAA7o/MWO9UxK8Vxs/s1600/106.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 288px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TDdzMwVAChI/AAAAAAAAA7o/MWO9UxK8Vxs/s320/106.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984933570218514" /&gt;&lt;/a&gt;
Можем написать какой либо комментарий, если нужно и "Finish"


Если все прошло успешно, появится запрос о переключении к перспективе "Synchronizing". Это уже на любителя, мне допустим предлагаемая перспектива не удобна и я жму "No".
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdzNCg--6I/AAAAAAAAA7w/Litc3wAbOm8/s1600/107.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 166px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdzNCg--6I/AAAAAAAAA7w/Litc3wAbOm8/s320/107.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984938452319138" /&gt;&lt;/a&gt;
Теперь окно Eclipse будет примерно такого вида:
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/TDdzNTcUYXI/AAAAAAAAA74/AVkJb19GMKo/s1600/108.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/TDdzNTcUYXI/AAAAAAAAA74/AVkJb19GMKo/s320/108.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984942996152690" /&gt;&lt;/a&gt;
в нижней части окна Eclipse, у будет вкладка "Synchronize" и список файлов которые будут помещены в репозиторий, &lt;i&gt;нам нужно некоторые добавить в исключения, которые создает Eclipse - &lt;b&gt;они в репозитории просто не нужны&lt;/b&gt;&lt;/i&gt;.

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdzN-0DsGI/AAAAAAAAA8A/szFMIqMMAXE/s1600/109.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdzN-0DsGI/AAAAAAAAA8A/szFMIqMMAXE/s320/109.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984954638446690" /&gt;&lt;/a&gt;
для этого нажимаем правой кнопкой на файле или каталоге и выбираем "Add svn:ignore"
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u5UJYftbSgA/TDdzOUvP9MI/AAAAAAAAA8I/reXPxG6d868/s1600/110.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 288px; height: 259px;" src="http://2.bp.blogspot.com/_u5UJYftbSgA/TDdzOUvP9MI/AAAAAAAAA8I/reXPxG6d868/s320/110.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491984960523859138" /&gt;&lt;/a&gt;
в этом диалоге можно задать маски исключения, но это отдельная тема, поэтому просто жмем "OK"
Аналогично заносим в игнор и другие файлы (.classpath и .project)
После всех манипуляций у нас останется только то что действительно нужно ложить в SVN
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdzmbP5iPI/AAAAAAAAA8Y/xQcSIxpJ6cQ/s1600/112.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdzmbP5iPI/AAAAAAAAA8Y/xQcSIxpJ6cQ/s320/112.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491985374588274930" /&gt;&lt;/a&gt;
для размещения файлов репозиторий, снова нажмем правой кнопкой на проекте и выберем "Team"/"Commit". Либо на панели Synchronize нажать "Commit"
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TDdzmpbFtoI/AAAAAAAAA8g/0qsEIwlhr8M/s1600/113.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TDdzmpbFtoI/AAAAAAAAA8g/0qsEIwlhr8M/s320/113.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491985378393306754" /&gt;&lt;/a&gt;
в появившемся окне можно и по хорошему &lt;span style="font-weight:bold;"&gt;нужно&lt;/span&gt; написать комментарий.
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdzm3gfGtI/AAAAAAAAA8o/2KY4a5i0cCs/s1600/114.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 286px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TDdzm3gfGtI/AAAAAAAAA8o/2KY4a5i0cCs/s320/114.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491985382174038738" /&gt;&lt;/a&gt;
Ниже коментария представлен список файлов которые будут синхронизированы. Жмем "ОК"
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TDdznE7zjnI/AAAAAAAAA8w/Ce-1-VxhKEA/s1600/115.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TDdznE7zjnI/AAAAAAAAA8w/Ce-1-VxhKEA/s320/115.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5491985385778286194" /&gt;&lt;/a&gt;

После того как все файлы размещены - возле проекта появится значок о том что "проект связан с репозиторием", во вкладке "Synchronize" будет текст "No changes in...".

&lt;span style="font-weight:bold;"&gt;Собственно все - проект в репозитории. Мои поздравления.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-5389367557064543519?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/5389367557064543519/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=5389367557064543519' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5389367557064543519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5389367557064543519'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/07/eclipsesvn.html' title='Eclipse+SVN'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_u5UJYftbSgA/TDdyVRmhCTI/AAAAAAAAA6Y/ZTMuHFvVGEQ/s72-c/000.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-2912616510255850274</id><published>2010-07-09T20:51:00.001+03:00</published><updated>2010-07-23T09:59:35.455+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='yandex'/><title type='text'>Отучаем FireFox от yandex</title><content type='html'>что б больше не колупаться в тырнете, решил в своем блоге записать... 

Стартовая страница
заходим: &lt;b&gt;Инструменты/Настройки/Основные&lt;/b&gt;
&lt;b&gt;Домашняя страница:&lt;/b&gt; &lt;a href="http://www.google.com/firefox?client=firefox-a&amp;rls=org.mozilla:ru:official"&gt;http://www.google.com/firefox?client=firefox-a&amp;rls=org.mozilla:ru:official&lt;/a&gt;


Поиск из адресной строки
вводим адрес: &lt;a href="about:config"&gt;about:config&lt;/a&gt;
находим поле &lt;b&gt;keyword.URL&lt;/B&gt;
заменяем значение на: &lt;a href="http://www.google.com.ua/search?q="&gt;http://www.google.com.ua/search?q=&lt;/a&gt;

&lt;p&gt;&lt;a href="http://dip56245.livejournal.com/1003.html"&gt;раньше было тут&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-2912616510255850274?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/2912616510255850274/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=2912616510255850274' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/2912616510255850274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/2912616510255850274'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/07/firefox-yandex.html' title='Отучаем FireFox от yandex'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-6641722092666996286</id><published>2010-07-09T20:50:00.001+03:00</published><updated>2010-07-09T20:51:09.017+03:00</updated><title type='text'>решил перенести заметки из ЖЖ сюда</title><content type='html'>чет решил перенести все свои записи из ЖЖ на блогспот... дальше буду тут вести заметки...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-6641722092666996286?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/6641722092666996286/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=6641722092666996286' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/6641722092666996286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/6641722092666996286'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/07/blog-post.html' title='решил перенести заметки из ЖЖ сюда'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-5276683512395148317</id><published>2010-05-31T21:54:00.016+03:00</published><updated>2010-05-31T23:03:23.712+03:00</updated><title type='text'>Конференция по nginx(29.05.2010)</title><content type='html'>Вчера влом было писать, вот решил сегодня миниотчет о поездке написать... фотки все с телефона, так что качество так себе...

Ездил на выходных на конференцию по &lt;a href="http://www.smartme.com.ua/master-klass-igora-sysoeva-sozdatelya-nginx/"&gt;nginx&lt;/a&gt;

Дорога прошла нормально, за исключением того что оказывается в поезде курить в тамбуре уже нельзя... приходилось с Jason'ом бегать на 2х минутных остановках на улицу курить... Так же почему-то вендор "носящий пифо и воду" продал мне бутыль завернутый в пакет со словами "пить уже тоже нельзя" оО что ж тогда в поезде делать то?
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u5UJYftbSgA/TAQLuBuX2rI/AAAAAAAAA2k/keR9d0dn9hw/s1600/28052010256.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_u5UJYftbSgA/TAQLuBuX2rI/AAAAAAAAA2k/keR9d0dn9hw/s320/28052010256.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477515932154190514" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/TAQLuRYjqRI/AAAAAAAAA2s/MoR47NEVyys/s1600/28052010257.jpg"&gt;
&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/TAQLuRYjqRI/AAAAAAAAA2s/MoR47NEVyys/s320/28052010257.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477515936357656850" /&gt;&lt;/a&gt;


Прибыли по графику, поехали на Хрещатик поесть где нить... прошлись возле архитектурного памятиника, хз какого... )
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQMR1IHtAI/AAAAAAAAA28/oylp-VNVCy8/s1600/29052010262.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQMR1IHtAI/AAAAAAAAA28/oylp-VNVCy8/s320/29052010262.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477516547247813634" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TAQMRTvUhsI/AAAAAAAAA20/trWGeVgjxfM/s1600/29052010261.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TAQMRTvUhsI/AAAAAAAAA20/trWGeVgjxfM/s320/29052010261.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477516538285426370" /&gt;&lt;/a&gt;

В то место, куда нас вел Jason поесть - не попали (народу много было), пошли в "2 гуся". Днем на Хрещатике проходил толи выезд велосипедистов, толи парад какой-то, но некоторые "чопперы" смотрелись интересно.

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TAQMuKDh_QI/AAAAAAAAA3E/CKdPFpWzk-U/s1600/29052010265.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TAQMuKDh_QI/AAAAAAAAA3E/CKdPFpWzk-U/s320/29052010265.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477517033902046466" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQMucIJ3TI/AAAAAAAAA3M/Kc8MgjCrJG8/s1600/29052010266.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQMucIJ3TI/AAAAAAAAA3M/Kc8MgjCrJG8/s320/29052010266.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477517038753275186" /&gt;&lt;/a&gt;


Ближе к 11 были возле парка А.С. Пушкина. В парке бегали белки, подбегали под самые ноги... Одну пытался сфоткать:
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TAQNOLF1ktI/AAAAAAAAA3U/2lCoyaLqnsQ/s1600/29052010269.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TAQNOLF1ktI/AAAAAAAAA3U/2lCoyaLqnsQ/s320/29052010269.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477517583935967954" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/TAQNOYKzloI/AAAAAAAAA3c/gq5XhhGcHSM/s1600/29052010272.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/TAQNOYKzloI/AAAAAAAAA3c/gq5XhhGcHSM/s320/29052010272.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477517587446470274" /&gt;&lt;/a&gt;

Конференция проводилась с целью компенсировать нехватку документации (слова Игоря Сысоева). Некоторые вещи действительно для меня прояснились) Если раньше знал что есть, но не понял "как юзать" и не было времени нормально сесть и разобраться, сегодня уже применил на практике... 
Собственно ближе к 16 (время точно не помню) конференция закончилась и мы поехали снова на Хрещатик поесть, все в тоже место куда нас Jason настойчиво звал... обилие людей отбило все желание и мы немного походив вокруг поехали на вокзал. 
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQO754b2mI/AAAAAAAAA3k/sLVx0ZFQEkw/s1600/29052010289.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQO754b2mI/AAAAAAAAA3k/sLVx0ZFQEkw/s320/29052010289.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477519469101963874" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u5UJYftbSgA/TAQPSS66aHI/AAAAAAAAA3s/hUaEITJwHuE/s1600/29052010300.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_u5UJYftbSgA/TAQPSS66aHI/AAAAAAAAA3s/hUaEITJwHuE/s320/29052010300.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477519853780363378" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQQY7uDU6I/AAAAAAAAA38/M0JEy0twG-A/s1600/29052010299.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQQY7uDU6I/AAAAAAAAA38/M0JEy0twG-A/s320/29052010299.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477521067323118498" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/TAQPdW8P_gI/AAAAAAAAA30/B92wDbWyUd8/s1600/29052010302.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/TAQPdW8P_gI/AAAAAAAAA30/B92wDbWyUd8/s320/29052010302.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5477520043838275074" /&gt;&lt;/a&gt;

Затарились продуктами и пифом на обратную дорогу в ближайшем EKOмаркете и собственно все... на поезд и домой...

Немного фоток от Jason:
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQSGwTTbAI/AAAAAAAAA4E/E7zajRpzBw8/s1600/IMG_0855.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQSGwTTbAI/AAAAAAAAA4E/E7zajRpzBw8/s320/IMG_0855.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5477522954043747330" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u5UJYftbSgA/TAQSIOejkkI/AAAAAAAAA4c/8WJpAw8kiSY/s1600/IMG_0861.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_u5UJYftbSgA/TAQSIOejkkI/AAAAAAAAA4c/8WJpAw8kiSY/s320/IMG_0861.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5477522979323875906" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u5UJYftbSgA/TAQSH1gw63I/AAAAAAAAA4U/fCJiFjvxEls/s1600/IMG_0858.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_u5UJYftbSgA/TAQSH1gw63I/AAAAAAAAA4U/fCJiFjvxEls/s320/IMG_0858.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5477522972622252914" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQSHTQ1UlI/AAAAAAAAA4M/fVs4nW9KXhQ/s1600/IMG_0857.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQSHTQ1UlI/AAAAAAAAA4M/fVs4nW9KXhQ/s320/IMG_0857.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5477522963428627026" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/TAQSJLJ0f-I/AAAAAAAAA4k/fje24IU75JA/s1600/IMG_0866.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/TAQSJLJ0f-I/AAAAAAAAA4k/fje24IU75JA/s320/IMG_0866.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5477522995611467746" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/TAQS2V0DeOI/AAAAAAAAA4s/jIsGGGR8bjM/s1600/IMG_0868.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/TAQS2V0DeOI/AAAAAAAAA4s/jIsGGGR8bjM/s320/IMG_0868.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5477523771567077602" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/TAQTMV5Im7I/AAAAAAAAA44/7MP8l6gCK2w/s1600/IMG_0873.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/TAQTMV5Im7I/AAAAAAAAA44/7MP8l6gCK2w/s320/IMG_0873.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5477524149545507762" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u5UJYftbSgA/TAQTm0IoZBI/AAAAAAAAA5A/X5Ylo_k_2Ng/s1600/IMG_0875.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_u5UJYftbSgA/TAQTm0IoZBI/AAAAAAAAA5A/X5Ylo_k_2Ng/s320/IMG_0875.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5477524604340167698" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQT9yqLpZI/AAAAAAAAA5I/o_OLLenY85M/s1600/IMG_0890.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/TAQT9yqLpZI/AAAAAAAAA5I/o_OLLenY85M/s320/IMG_0890.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5477524999081010578" /&gt;&lt;/a&gt;

так же отчет от &lt;a href="http://psvmcc.livejournal.com/6929.html"&gt;psvmcc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-5276683512395148317?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/5276683512395148317/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=5276683512395148317' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5276683512395148317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5276683512395148317'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/05/nginx29052010.html' title='Конференция по nginx(29.05.2010)'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_u5UJYftbSgA/TAQLuBuX2rI/AAAAAAAAA2k/keR9d0dn9hw/s72-c/28052010256.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-6706250754992189980</id><published>2010-05-27T13:22:00.002+03:00</published><updated>2010-05-27T13:26:11.695+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>вывести конфиг в консоль без комментариев</title><content type='html'>&lt;p&gt;часто бывает необходимо выслать кому нибудь "рабочий" конфиг - но пересылать весь, 
в котором больше половины это комментарий - очень даже глупо...&lt;/p&gt;
поэтому можно выполнить такое:
&lt;pre&gt;
cat /etc/squid/squid.conf | egrep -v "(^#.*|^$)"
&lt;/pre&gt;

по порядку:
&lt;pre&gt;
egrep -v - убрать строки удовлетворяющие требованию
^#.*     - строки которые начинаются с #
|        - или
^$       - пустая строка
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-6706250754992189980?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/6706250754992189980/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=6706250754992189980' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/6706250754992189980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/6706250754992189980'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/05/blog-post.html' title='вывести конфиг в консоль без комментариев'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-8159800790455649468</id><published>2010-04-11T22:08:00.006+03:00</published><updated>2010-04-11T22:59:37.669+03:00</updated><title type='text'>аквариум</title><content type='html'>&lt;table width='100%'&gt;
&lt;tr&gt;&lt;td&gt;
Сбылась мечта идиота, давно хотел себе завести аквариум. Но как-то не складывалось у меня с этим... 2 недели назад все-таки пошел и купил себе маленький аквариум на 72 литра. Вчера купил в него замок и решился сфоткать это все... так как фотограф из меня никудышный, строга не судите...
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_u5UJYftbSgA/S8IfXStbtMI/AAAAAAAAAzM/0ce8CkSYXdI/s1600/DSCF5945.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_u5UJYftbSgA/S8IfXStbtMI/AAAAAAAAAzM/0ce8CkSYXdI/s320/DSCF5945.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5458960183346312386" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/S8IfHR3hHgI/AAAAAAAAAzE/7HqxAl7fHdU/s1600/DSCF5944.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/S8IfHR3hHgI/AAAAAAAAAzE/7HqxAl7fHdU/s320/DSCF5944.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5458959908242267650" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/S8IfHJH6ODI/AAAAAAAAAy8/OI5m11lpJYo/s1600/DSCF5942.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 209px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/S8IfHJH6ODI/AAAAAAAAAy8/OI5m11lpJYo/s320/DSCF5942.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5458959905895102514" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_u5UJYftbSgA/S8IfGy8mbuI/AAAAAAAAAy0/n6sQK6dxMQw/s1600/DSCF5940.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://2.bp.blogspot.com/_u5UJYftbSgA/S8IfGy8mbuI/AAAAAAAAAy0/n6sQK6dxMQw/s320/DSCF5940.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5458959899942088418" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/S8IfG5z_9eI/AAAAAAAAAys/ZeEKmGHB63M/s1600/DSCF5936.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 219px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/S8IfG5z_9eI/AAAAAAAAAys/ZeEKmGHB63M/s320/DSCF5936.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5458959901785060834" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/S8IfGceNDjI/AAAAAAAAAyk/BAJkdiurhcc/s1600/DSCF5935.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 218px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/S8IfGceNDjI/AAAAAAAAAyk/BAJkdiurhcc/s320/DSCF5935.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5458959893909016114" /&gt;&lt;/a&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;
на данный момент у меня там живут:
&lt;ul&gt;
&lt;li&gt;Расбора клиновидная&lt;/li&gt;
&lt;li&gt;Кардинал&lt;/li&gt;
&lt;li&gt;Данио рерио&lt;/li&gt;
&lt;li&gt;Сомик крапчатый&lt;/li&gt;
&lt;li&gt;и еще как-ой то сом, но не могу идентифицировать ;) &lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-8159800790455649468?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/8159800790455649468/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=8159800790455649468' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/8159800790455649468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/8159800790455649468'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/04/blog-post.html' title='аквариум'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_u5UJYftbSgA/S8IfXStbtMI/AAAAAAAAAzM/0ce8CkSYXdI/s72-c/DSCF5945.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-6893983458565419113</id><published>2010-04-07T11:41:00.002+03:00</published><updated>2010-09-03T09:57:12.700+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='centos'/><category scheme='http://www.blogger.com/atom/ns#' term='cp1251'/><title type='text'>centos, cp1251</title><content type='html'>так сказать, что бы не потерять.&lt;br&gt;&lt;br /&gt;
1. locale получим что-то типа: &lt;br /&gt;
&lt;pre class="brush: powershell"&gt;LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
&lt;/pre&gt;2. создаем чарсеты&lt;br /&gt;
&lt;pre class="brush: powershell"&gt;$cd /usr/share/i18n
$localedef -c -f CP1251 -i ru_RU /usr/lib/locale/ru_RU.cp1251
&lt;/pre&gt;3. для выбора кодировки:&lt;br /&gt;
&lt;pre class="brush: powershell"&gt;$export LANG=ru_RU.cp1251
&lt;/pre&gt;но правильнее в /etc/sysconfig/i18n&lt;br /&gt;
&lt;pre class="brush: powershell"&gt;LANG="ru_RU.cp1251"
SUPPORTED="ru_RU.cp1251:ru_RU:ru"
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-6893983458565419113?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/6893983458565419113/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=6893983458565419113' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/6893983458565419113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/6893983458565419113'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2010/04/centos-cp1251.html' title='centos, cp1251'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-717590288037301236</id><published>2009-03-31T15:08:00.001+03:00</published><updated>2010-09-03T09:58:54.541+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='mute'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>отключение звука у flash'а в FireFox'е</title><content type='html'>иногда есть флешки (баннеры или игры) в которых звук так кумарит, что сил нету)
для файрфокса это можно решить легко, создать в папке с FireFox'ом файл (можно пустой):
&lt;b&gt;msacm32.dll&lt;/b&gt;
&lt;br&gt;
перезапускаем файр-фокс и тишина) все флеши замолчат. Если опять звук нужен - удаляем или переименовываем файл.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-717590288037301236?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/717590288037301236/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=717590288037301236' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/717590288037301236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/717590288037301236'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2009/03/flash-firefox.html' title='отключение звука у flash&apos;а в FireFox&apos;е'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-1552977398119644030</id><published>2009-03-16T22:00:00.005+02:00</published><updated>2010-07-23T09:57:56.032+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mac windows net'/><title type='text'>как узнать mac по сети другой машины</title><content type='html'>позвонил друг, задал вопрос "Как узнать мак другой машины по сети?"... под вендой...
я как бы стопарнулся на этом вопросе... 
линуха нет у него, т.е. сделать "nmap &lt;адрес&gt;" не получится...

малеха погуглил и нашел:
&lt;pre&gt;
ping &lt;адрес&gt;
arp -a
&lt;/pre&gt;
малоли, мож комуто пригодится )
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_u5UJYftbSgA/Sb6xxk5tF4I/AAAAAAAAAD8/QsqcS0STb48/s1600-h/ping_arp.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 158px;" src="http://4.bp.blogspot.com/_u5UJYftbSgA/Sb6xxk5tF4I/AAAAAAAAAD8/QsqcS0STb48/s320/ping_arp.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5313880075621177218" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-1552977398119644030?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/1552977398119644030/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=1552977398119644030' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/1552977398119644030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/1552977398119644030'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2009/03/mac.html' title='как узнать mac по сети другой машины'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_u5UJYftbSgA/Sb6xxk5tF4I/AAAAAAAAAD8/QsqcS0STb48/s72-c/ping_arp.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-5379799050466503861</id><published>2009-01-03T22:05:00.005+02:00</published><updated>2009-01-03T22:08:33.455+02:00</updated><title type='text'>Каждому своё или как весь мир почти сошел с ума</title><content type='html'>от себя: оч понравилось, решил выложить у себя....

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_u5UJYftbSgA/SV_FM7t-4DI/AAAAAAAAADY/OyzQn_QfvOw/s1600-h/26002.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px; height: 124px;" src="http://3.bp.blogspot.com/_u5UJYftbSgA/SV_FM7t-4DI/AAAAAAAAADY/OyzQn_QfvOw/s320/26002.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5287161313535909938" /&gt;&lt;/a&gt;
Уважаемые друзья, любители PHP и MySQL! Да-да суровые админы, любители fishki.net, башорга и эмулятора Windows под Linux, я обращаюсь именно к вам. Ну и, пожалуй, ещё к вам. Ага, не озирайтесь так растерянно, это ведь вы недавно совершили набег на книжный и скупили всю полку компьютерной литературы? Вы-вы, камеры наблюдения всё зафиксировали. А теперь вы обдумываете, как правильно подписаться «вэбмастером» или «вебмастером».

Я хочу поговорить с вами о специализации и разделении. Давайте побеседуем мирно, отложив в сторону стокилограммовый мануал по Ubuntu и «PHP для чайников».

Итак, начнём с фантазии. Невинной.

Представьте себе, что вы суровый программист – влюбились. (Можете не краснеть, мы все тут люди взрослые). И надо вам как-то привлечь внимание этого нежного цветка и неземного создания. Как будем действовать? Попробуем по пунктам.

Пункт первый: попробуем сразить цветами. Итак, мы идем в палатку у метро, и там у нас происходит приблизительно следующий диалог:

- Дайте мне три розочки и украсьте вон теми веточками.

- Вот эти? А вы знаете, что эти редкие розы не очень долго простоят с папоротником? И вообще отвратительно сочетаются? А как наcчет того, что на них может поселиться Букашкус Алергикус? И ещё, молодой человек, у вас степень по флористике есть? То-то же - бегом учить! Но самое хорошее, если вы хотите букет подарить - вырастите розы сами! Не умеете? А вы почитайте вот книжечку про разведение роз в суровом климате средней полосы, и вот плюс ко всему … почвоведение – без этих знаний никак! Какие вам букеты…. Вы ж не знаете ни черта? Куда же вы молодой человек?!!! А книжки?!!...

Вы в ужасе выскакиваете из палатки. Ведь вы всего лишь хотели цветов?! Вы ни разу не флорист – но разве это отменяет желание получить симпатичный букет.

Ладно, не отчаиваемся! Обойдемся без цветов. Попробуем стихи.

На этот раз пойдем к другу-поэту. Друг не подведет.

- Стихи для девушки? – радуется друг. – Ну, это просто. Азбуку ты знаешь, это хорошо. По литературе заслуженный трояк был. Вот тебе курс за 11-й класс – освежи. Потом пособие для Новеллиста.. что тут еще у меня есть? – Друг поворачивается к своим огромным книжным полкам.

- А если как-нибудь попроще? Ну, там милые четверостишия переделать.. я видел в интернете. – Вы делаете осторожный шажок к двери – похоже, все сошли с ума. Вам ведь нужны стихи, а не весь этот ворох знаний.

- Что? - глаза вашего друга практически сравниваются по размеру с дугами очков – шаблонность! Не позволю! - и он тайком запихивает в ваш пакет учебник по русскому языку Розенталя.

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

- Сам, милый мой, сам, у меня вон там поэтическая энциклопедия, так уж и быть возьми.. с 8-го по 11-й том, ознакомься.
И не забудь про связку ямба и хорея! – кричит уже он вам в спину, когда вы понуро ползете нагруженные энциклопедией. – Сейчас все на ней пишут. Без неё – о стихах и не думай… Шаблонность – ещё раз себе под нос фыркает он и закрывает дверь.

Вы останавливаетесь. Вам грустно. Ни цветов, ни стихов…. А ведь могла быть любовь.

THE END
Итак, к чему все это было? Милые суровые вебмастера и программисты, утрите слезы и просто поймите. Вы хотите цветы и стихи? А поэты и флористы хотят сайты. Просто сайты, милые их душе и сердцу, быть может, не идеальные, и чуть-чуть похожие. И не нужно им учить web-программирование – ведь их букеты и так прекрасны, а стихи проникновенны. Просто каждому своё :)

И я не знаю, что там у вас возле подъезда, а лично у меня на дворе 21 век. Век, когда многое стало доступнее. 

&lt;a href="http://blog.ucoz.ru/blog/2008-11-11-27"&gt;оригинал туд&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-5379799050466503861?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/5379799050466503861/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=5379799050466503861' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5379799050466503861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/5379799050466503861'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2009/01/blog-post.html' title='Каждому своё или как весь мир почти сошел с ума'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_u5UJYftbSgA/SV_FM7t-4DI/AAAAAAAAADY/OyzQn_QfvOw/s72-c/26002.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-8612646232802808399</id><published>2008-11-27T12:27:00.007+02:00</published><updated>2008-11-27T12:45:23.436+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux mysql'/><title type='text'>отстреливаем Sleep подключения...</title><content type='html'>итак... иногда бывает ситуация (толи ошибка на сайте, толи малоли что).... вообщем много соединений со статусом Sleep пока идет поиск причины их нужно как-то удалять.
Перезагружать mysql - это не выход. 

&lt;span style="font-weight:bold;"&gt;Задача - удалять соединения которые находятся в статусе Sleep.&lt;/span&gt;

кому читать некогда весь пост вот рецепт - sh скрипт:
----
#!/bin/bash
LOGIN=you_login
PASS=you_pass

/usr/bin/mysqladmin -u ${LOGIN} -p${PASS} kill `/usr/bin/mysql -u ${LOGIN} -p${PASS} -Ns -e "show processlist" | grep "Sleep" | awk '{print $1}' | xargs | tr " " ","`
----
теперь по порядку, кому интересно...

Первым делом нужно получить этот самый список процессов которые у нас работают (в клиенте набираем):
&gt;show processlist;

получим список.... руками это делать не гламурно,  будем это делать в консоле:
----
&gt;/usr/bin/mysql -u ${LOGIN} -p${PASS} -Ns -e "show processlist"
----
-Ns убираем название столбцов и линии....
-e "и в скобках комманда которую нужно выполнить клиенту"

отфильтруем результат:
---
grep "Sleep"
---
впринципе можно фильтровать не только Sleep, а и по адресу, по базе ... фантазию включаем...

из всего этого вывода нам нужна только 1 колонка, там где номер процесса:
----
awk '{print $1}'
----

теперь у нас будет вывод в столбик, нам нужно в линию:
----
xargs
----

но еще нам нужно заменить пробел между номерами процессов на запятую:
----
tr " " ","
----


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

и делаем это все в качестве параметра mysqladmin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-8612646232802808399?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/8612646232802808399/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=8612646232802808399' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/8612646232802808399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/8612646232802808399'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2008/11/sleep.html' title='отстреливаем Sleep подключения...'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-354186586914660393</id><published>2008-10-08T11:06:00.000+03:00</published><updated>2008-10-08T11:20:17.574+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>дополнил свой скрипт по postfix'у</title><content type='html'>переделал скрипт который обрабатует письма, теперь выглядит таг:&lt;div&gt;&lt;pre&gt;#!/bin/sh
SENDMAIL="/usr/sbin/sendmail -i"
EGREP=/bin/egrep
EX_UNAVAILABLE=69
SIDELINE_DIR="/var/spool/filter"
SPAMLIMIT=5
trap "rm -f /var/tempfs/out.$$" 0 1 2 3 15
cat | /opt/spamassasin/bin/spamc &gt; /var/tempfs/out.$$
if $EGREP -q "^X-Spam-Level: \*{$SPAMLIMIT,}" &lt; /var/tempfs/out.$$  
then
    FROM=`cat /var/tempfs/out.$$ | $EGREP -i "From: " | head -n 1`
    echo `date +%Y-%m-%d_%R` $FROM &gt;&gt; /var/log/spamd_delete
  #mv /var/tempfs/out.$$ $SIDELINE_DIR/`date +%Y-%m-%d_%R`-$$
else
 $SENDMAIL "$@" &lt; /var/tempfs/out.$$
fi
exit $?  &lt;/pre&gt;
&lt;/div&gt;&lt;div&gt;мож кому пригодится&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-354186586914660393?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/354186586914660393/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=354186586914660393' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/354186586914660393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/354186586914660393'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2008/10/postfix_08.html' title='дополнил свой скрипт по postfix&apos;у'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-701773089357398769</id><published>2008-10-08T09:22:00.001+03:00</published><updated>2008-10-08T09:56:26.732+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>обработка почты Postfix</title><content type='html'>вчера появилась необходимость прикрутить на наших серверах spamd (наконецто начальство дало комманду)... потрачено почти 5 часов, т.к. репы для SuSE 10 не поддержуются ныне... разобрался что такое perl CPAN.&lt;div&gt;Но открыл для себя америку так сказать... итак. &lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;&lt;span&gt;Нужно как-то обрабатывать входящую почту. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;по логике вещей - нужно что бы postfix отдавал входящее сообщение куда то на обработку.&lt;/div&gt;&lt;div&gt;берем правим /etc/postfix/master.cf&lt;/div&gt;&lt;div&gt;добавляем правило фильтр:&lt;/div&gt;&lt;div&gt;&lt;pre&gt;spamchk   unix  -       n       n       -       10      pipe
flags=Rq user=spamd argv=/opt/spamassasin/bin/spamchk -f ${sender} -- ${recipient}&lt;div&gt;&lt;span class="Apple-style-span" style="  white-space: normal; "&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;тут мы &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;имеем&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;1. spamchk - имя фильтра обрабатывающего&lt;/div&gt;&lt;div&gt;2. flags - хз, но с Rq работает )&lt;/div&gt;&lt;div&gt;3. user - от чьего имени запускать&lt;/div&gt;&lt;div&gt;4. argv - путь к коммандной оболочке, и параметры откого кому... а в STDOUT postfix лупит тело сообщения.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;фильтр есть, теперь его нужно к чему-то применить... в том же файле:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre&gt;smtp      inet  n       -       n       -       50       smtpd
-o content_filter=spamchk:dummy
&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;строка smtp inet... у нас уже есть, она означает транспорт по умолчанию, а вот следующей строкой мы к нему добавляем "-o ..." - и говорим что все содержимое должно отдаваться на spamchk фильтр.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;теперь собсно сам файл:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre&gt;#!/bin/sh
SENDMAIL="/usr/sbin/sendmail -i"
trap "rm -f /var/tempfs/out.$$" 0 1 2 3 15
cat | /opt/spamassasin/bin/spamc &gt; /var/tempfs/out.$$
$SENDMAIL "$@" &lt; /var/tempfs/out.$$ exit $? &lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;файл делает по шагам следующее...&lt;/div&gt;&lt;div&gt;все содержимое которое ему было передано - передает на spamc (это клиент SpamAssasin) и весь "обработанный" вывод кидает во временный файл /var/tempfs/out.$$&lt;/div&gt;&lt;div&gt;затем следующим шагом все содержимое которое находится в /var/tempfs/out.$$ мы отдаем sendmail'у для локальной доставки... и код возврата возвращаем для postfix...&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;вот-с...&lt;/div&gt;&lt;div&gt;теперь у нас есть поле для фантазий... spamc у нас настроен так что бы заменять Subject (добавлять к письму если оно идентифицировано как спам - [***SPAM***])&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;соответственно перет отправкой сообщения внутреннему sendmail'у мы можем как угодно его обработать... мы можем начиная от "просто вести статистику" в БД/Файл еще как нить, можно добавить на наличие после spamc флага X-SPAM либо другого флага вообще письмо никуда не отсылать... &lt;/div&gt;&lt;div&gt;и т.д. и т.п. - полет для фантазии хороший получается )&lt;/div&gt;&lt;div&gt;седня буду эксперементировать... )&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-701773089357398769?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/701773089357398769/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=701773089357398769' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/701773089357398769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/701773089357398769'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2008/10/postfix.html' title='обработка почты Postfix'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-8245078222220872417</id><published>2008-10-08T09:19:00.000+03:00</published><updated>2008-10-08T09:20:58.922+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>почитал про Google Chrome</title><content type='html'>Сегодня ночью пересилил себя и почитал про гугл хром... какие в нем возможности - остался в восторге... для тех кто еще не читал/не смотрел - советую.&lt;div&gt;&lt;a href="http://www.google.com/chrome/intl/ru/features.html"&gt;http://www.google.com/chrome/intl/ru/features.html&lt;/a&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-8245078222220872417?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/8245078222220872417/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=8245078222220872417' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/8245078222220872417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/8245078222220872417'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2008/10/google-chrome.html' title='почитал про Google Chrome'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8476919213162927548.post-2321716216354441060</id><published>2008-10-08T02:28:00.000+03:00</published><updated>2008-10-08T02:29:25.259+03:00</updated><title type='text'>традиционное....</title><content type='html'>по традиции создаю сообщение.&lt;div&gt;Hello World. )&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8476919213162927548-2321716216354441060?l=dip56245.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dip56245.blogspot.com/feeds/2321716216354441060/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8476919213162927548&amp;postID=2321716216354441060' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/2321716216354441060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8476919213162927548/posts/default/2321716216354441060'/><link rel='alternate' type='text/html' href='http://dip56245.blogspot.com/2008/10/blog-post.html' title='традиционное....'/><author><name>Dima Petrov</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-koQ60ZKLmcA/AAAAAAAAAAI/AAAAAAAAAAA/W7qq6e5X4H0/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
