суббота, 25 октября 2008 г.

Вылет

Ну вот и все, все документы оформлены, билеты получены, завтра вылетаю в Канаду. Пересадка в Амстердаме, оттуда прямой рейс до Ванкувера. Это будет первый Новый Год, который я встречу за границей :)

суббота, 18 октября 2008 г.

вторник, 14 октября 2008 г.

Большое американское шоу

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

http://www.americanshow.ru/

понедельник, 13 октября 2008 г.

В Днепропетровске "воин света" гонялся за милиционерами на тракторе

В Днепропетровске тракторист называл себя "воином света" и угрожал милиционерам. Как позже выяснило следствие, перед этим он выкурил три сигареты с наркотическим веществом. 

Инцидент произошел во вторник, 8 октября в 4:00. Охранник автосалона в Днепропетровске обратился в милицию, сообщив, что на стоянку автомобилей заехал тракторист и стал бегать между машинами, размахивая ножом и выкрикивая  нечто, похожее на заклинания.

На автостоянку был направлен ближайший экипаж ГАИ. Заметив их автомобиль, хулиган поспешил скрыться на своем тракторе марки JCB. Началось преследование. Однако через некоторое время тракторист развернул свою машину на 180 градусов и опустил ковш, после чего скрываться от преследования вынуждены были инспекторы ГАИ.

С переменным успехом обеих сторон погоня продолжалась около 10 минут. Тракторист периодически выкрикивал из окна, что милиционеры - воины тьмы и демоны. Те, в свою очередь, вызвали на подмогу сотрудников Красногвардейского РОВД. Те прибыли на место происшествия на автомобиле УАЗ. Однако к тому времени трактор, врезавшись в ворота комбайнового завода, заглох.

Хулиган с ножом пытался оказывать сопротивление сотрудникам правоохранительных органов, однако его без труда удалось арестовать и доставить в Красногвардейский РО милиции.

На допросе мужчина назвался именем персонажа Золотого теленка - Адамом Казимировичем Козлевичем.

Арестованный заверил милиционеров, что он не употреблял алкоголь. Вместо этого он курил "дурь, примерно три папиросы". Он упомянул, что покупает наркотик у "Ваньки из Перепещино".

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

Мужчина рассказал, что ранее четыре года провел в тюрьме. "А то, кто не сидел, то типа и не мужик!", - также отметил он.

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

http://korrespondent.net/strange/613765

воскресенье, 12 октября 2008 г.

Кокпит Су-35 БМ



В настоящее время этот самолет является переходным звеном перед поступлением в войска истребителя 5го поколения Т-50. В его конструкции используются многие элементы, которые будут присущи Т-50, такие, как оснащение кабины, например.


Блог генерала-танкиста

Да, оказывается, и они тоже их ведут :) Для интересующихся военной темой - очень много интересностей "из первых рук", рекомендую.

http://vim152.livejournal.com

суббота, 11 октября 2008 г.

Сайт правительства Украины для детей

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

Боевая машина поддержки танков(Об. 199 "Рамка")

пятница, 10 октября 2008 г.

Финансовый кризис для чайников (в картинках)

Доходчиво и с юмором объясняется, как это все было организовано. Рекомендую :)) (при открытии первой страницы сверху есть ссылка "Следующая", для просмотра нажимать там)
http://superinvestor.ru/sub/

четверг, 9 октября 2008 г.

Америка! Тебе есть чего бояться

Весьма занимательная статья. Поклонникам американской демократии - к прочтению обязательно. Не думал, что у них все НАСТОЛЬКО далеко зашло. 

http://www.warandpeace.ru/ru/exclusive/view/28244/

"Возвращение Ганса/Hansu no Kikan"

Редко встретишь мангу, где хорошо отрисована классическая военная техника, и вот сегодня наткнулся на сие произведение. Манга была нарисована Хаяо Миядзаки в 1994 году для журнала стендового моделизма по мотивам мемуаров немецких военных. Действо происходит в конце войны, когда немецкая армия вовсю сдается в плен, а на территории Германии хозяйничают русские и американцы. Главные герои (немцы и русские) изображены как свиньи, потому что автор очень любит свиней и всюду их старается нарисовать(Миядзаки и себя рисует как свинью), а вот американцев он не любит, поэтому они такие, какие есть(тупые обезьяны). В общем, мне понравилось, кто в теме - рекомендую :)



Возврат нескольких значений из метода

Иногда требуется написать метод, в результате выполнения которого возвращается больше, чем одно значение. Как правило для этого пишется аггрегирующий класс(если значения связаны логически), иногда возвращается коллекция со значениями. Если таких методов немного, то с таким подходом еще можно мириться, но в случае, если подобных методов появляется большое количество, код становится труден для понимания и дальнейшей поддержки. В таком случае лучше использовать подход, описанный Брюсом Эккелем в его 4м издании философии Java. Заключается он в использовании generic'ов.

Для каждого кортежа значений создается специальный типизированный класс:

public class TwoTuple {
    public final A first;
    public final B second;

    public TwoTuple(A first, B second) {
        this.first = first;
        this.second = second;
    }
}

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

...
TwoTuple rslt = new TwoTuple(1L, "example");
return rslt;

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

среда, 8 октября 2008 г.

Жизнь, как она есть

Анекдот

Идут стрельбы. Дали автоматы, патроны, показали куда стрелять.
Админ отстрелялся, подводят итоги. Мишень админа чистая.
Командир: - ??????!!!!!..
Админ, проверяя автомат: - С моей стороны пули вылетели. Проблемы у вас.. 

вторник, 7 октября 2008 г.

Tarja в Киеве!

Сегодня внезапно! узнал замечательную новость - оказывается, 3.XI в Киеве будет вот такой вот концерт. На фоне отмененного концерта Nightwish в Москве, на который я бы хотел поехать, но все равно возможности не было, это просто замечательно. Сразу же были забронированы 2 билета в 1й зоне(цена удовольствия 350 UAHей за штуку). Несмотря на практически только начавшуюся рекламную кампанию, более 90% мест были уже разобраны. Знающие камрады предупредили, что для того, чтобы пробиться в эту самую первую зону к сцене, нужно прийти где-то за час, протолкаться на свои места и не вылазить, а не то потом это сделать будет весьма проблематично. Будем учитывать это при планировании и надеяться, что меня не отправят в командировку до означенной даты :)

JMX+Spring+Hibernate

Хибернейт поддерживает сбор самой разнообразной информации и метрик, которые могут быть весьма полезны при отладке и разработке. При использовании широко распространенной связки Spring+Hibernate можно очень легко получить доступ к этим данным следующим образом:

1) в конфигурации SessionFactory указываем: 
<property name="hibernate.generate_statistics">true</property>
это включает собственно сбор статистики.

2) регистрируем следующие бины в Spring:
<bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter">
        <property name="autodetect" value="false" />
        <property name="assembler">
            <bean id="jmxAssembler"                class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler">
                <property name="attributeSource">
                    <bean               class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource" />
                </property>
            </bean>
        </property>
        <property name="beans">
            <map>
                <entry key="org.hibernate:name=statistics">
                    <bean class="org.hibernate.jmx.StatisticsService">
                        <property name="statisticsEnabled" value="true" />
                        <property name="sessionFactory">
                            <ref bean="sessionFactory"/>
                        </property>
                    </bean>
                </entry>
            </map>
        </property>
    </bean>
Этот бин предоставляется нам Spring'ом и делает всю работу по экспорту статистики посредством JMX и сам выполняет все необходимые действия, нам нужно только передать ему нашу SessionFactory(выделено жирным).

3) В Томкате добавляем следующие параметры JVM:
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
Здесь важен порт - туда мы будем коннектиться JConsole'ю, которая и отобразит всю статистику.

4) Запустив Томкат и убедившись, что ошибок и эксепшенов нет, идем в JAVA_HOME/bin и запускаем отттуда jconsole.exe. Когда поднимется форма, идем на вкладку Remote (удаленные соединения с JMX-сервером) и указываем host(Томката) и port(8004 в нашем случае). После успешного соединения можно смотреть самую разнообразную статистику по JVM вообще и Hibernate в частности.

JDBC Logging Driver

В процессе девелопмента часто бывает необходимо посмотреть, какие запросы выполняются, причем обычное логирование помогает мало - вместо реальных параметров, используемых в SQL, стоят малоинформативные знаки вопроса. Чтобы это обойти и все-таки увидеть те запросы, которые реально исполняются, можно использовать сабж. Скачать его можно по адресу  www.rkbloom.net/logdriver

Конфигурировать его достаточно просто, на примере это выглядит так: 

hibernate.connection.driver_class=net.rkbloom.logdriver.LogDriver
#hibernate.connection.driver_class=oracle.jdbc.OracleDriver
hibernate.connection.url=jdbc:log:oracle.jdbc.OracleDriver:oracle:thin:@192.168.32.29:1521:UTF8
#hibernate.connection.url=jdbc:oracle:thin:@192.168.32.29:1521:UTF8

жирным выделено подклюение логирующего драйвера, нежирным - типовое подключение к JDBC.

Также необходимо сконфигурировать log4j примерно следующим образом:
## Hibernate logging
log4j.appender.HibernateAppender=org.apache.log4j.FileAppender
log4j.appender.HibernateAppender.file=D:/temp/hibernate.log
log4j.appender.HibernateAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.HibernateAppender.layout.ConversionPattern=[%d] %-5p - %m%n
log4j.additivity.org.hibernate=true
log4j.additivity.net.rkbloom.logdriver=true

# Turn this up to DEBUG to get detailed logging info
log4j.logger.org.hibernate.SQL=info,HibernateAppender
log4j.logger.org.hibernate=info,HibernateAppender
log4j.logger.net.rkbloom.logdriver.LogPreparedStatement=DEBUG,HibernateAppender
log4j.logger.net.rkbloom.logdriver.LogStatement=DEBUG,HibernateAppender
log4j.logger.net.rkbloom.logdriver.LogCallableStatement=DEBUG,HibernateAppender
log4j.logger.net.rkbloom.logdriver.LogConnection=DEBUG,HibernateAppender

Переезжаем с "записок" ВКонтакта

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