пятница, 13 ноября 2009 г.

Языковые изыски

На прошлой неделе писали 1-ю контрольную. Адонис раздал листки с заданиями и дал нам 30 минут на их решение. Благо, задания были простыми:
- Написать 5 предложений о себе (меня зовут, мне нравится, я живу и т.д.)
- Преобразрвать время из номерного формата в текстовый
- Расставить артикли
- Просклонять глаголы
- Дополнить диалог пропущенными фразами
Тест я написал неплохо, только буквы постоянно путал (не те "и" в словах расставлял). Так что, пока что прогресс налицо.

Вчера Адонис рассказал про очередную тонкость греческого языка. В Греции есть 2 вида кафе: καφενειο и καφετερια.
Так вот, чтобы вы знали, καφενειο - это традиционно мужское кафе, где любят собираться старики поговорить о том-о сём, сыграть партию в карты и почитать газету. Женщины туда не суются.
А вот καφετερια - более демократичное место, куда ходят все вне зависимости от пола и возраста.

пятница, 6 ноября 2009 г.

Axis2 без AAR-файла

Аксис2 - очень неплохая библиотека для создания вебсервисов. Но вот что меня всегда напрягало - так это пакетирование сервисов в AAR-файлы. С одной стороны - правильно, каждый сервис - самодостаточен, и "спрятан" соответственно в собственный пакет. С другой стороны, иногда это лишнее, оверкилл какой-то.
Видимо, так думаю не только я.
Здесь описано, как можно оформить сервис без AAR-файла.

Update.
Попробовал, работает замечательно, всем рекомендую.

четверг, 29 октября 2009 г.

Morpho from Benchmade

Балисонг хотелось всегда.
Во-первых, это нож очень необычной, нестандартной конструкции. А это привлекает.
Во-вторых, акробатические трюки с балисонгом выглядят просто завораживающе.
Но бабочка принадлежит к разряду "полу- нелегальных". По нашим эстонским законам, "ножи с выдвигающимся под действием пружины или силы тяжести и жестко фиксирующимся лезвием, длина которого составляет более 8,5 см или которое заточено с двух сторон" относятся к оружию, запрещённому в гражданском обороте. А посему в продаже у нас практически не встречается.
Интернет раздвигает горизонты, посему окунулся в изучение предложений. Выяснилось, что бабочку можно купить на Dealextreme, всего за 6-7 УЕ с доставкой. Однако, трезво взвесив рациональность такой "покупки", отмёл этот вариант. Зачем мне нож, который представляет опасность только для своего владельца.
Следующими в списке стояли недорогие Бали от Bear&Son ценой в 20-30 у.е. Отзывы о них достаточно противоречивы. Многие хвалят продукцию компании. Однако противники в один голос заявляют, что "хорошим" этот нож может назвать только тот, кто никогда не держал в руках Бенчмэйд.
Бенчмэйд - это верхняя категория бали, ножи ценой в 200-300 вечнозелёных, отменное качество и безупречная надёжность. Начитавшись хвалебных отзывов о бали от БМ, принял решение достать любой ценой. Сначала хотел прикупить 42, полноразмерную бабочку - легенду. Однако нарушать закон об оружии в мои планы не входило, поэтому 42-й со своим 11-сантиметровым лезвием так и остался мечтой. Пришлось идти на компромисс. И я купил БМ32 Морфо.

Краткая энциклопедическая ссылка.
Морфы (лат. Morpho) — род дневных бабочек из сем. Nymphalidae. Передняя пара лапок сильно редуцирована. К роду принадлежит более 70 видов бабочек, которые по окраске крыльев раделяют на несколько подгрупп. Окраска крыльев большинства видов синяя, голубая, с металлическим блеском. Встречаются виды с крыльями перламутрового и жемчужно-белого цвета; с черно-голубым или красно-коричневым узором.

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

ТТХ.
Длина лезвия: 3.25" (8.2 см)
Толщина лезвия: 0.100" (2,54 мм)
Материал лезвия: D2 Tool Steel
Твёрдость: 59-61HRC
Масса: 2.70oz. (примерно 85 гр)
Рукоять: титановые лайнеры + G10

Попробуем субъективно расшифровать. Начнём с лезвия. Клинок маленький, ОЧЕНЬ короткий для балисонга. Но зато ни коим образом не идёт в разрез с нашим законодательством. Про сталь D2 сказать ничего не могу, ибо ранее её не пользовал. Опытные камрады её ругают за неустойчивость к коррозии. Спуски довольно высокие, посему клинок отменно режет. Тест на помидорах нож сдал на "отлично", помидоры разваливались от одного его прокосновения. Клинок имеет небольшое фальшлезвие, что придаёт ему некоторую хищность. Хотя какая может быть хищность при таких размерах?.
Рукоять сборная, основа её - титановые лайнеры, анодированные до ярко синего цвета. Сверху титан покрыт дырчатым G10, который частично, но не полностью, прячет красоту синих "крылышек" бабочки. Рукоять собрана на винтах - торксах, между лайнерами и клинком поблёскивают бронзовые шайбочки.
На рукоять приделана подружиненная защёлка "предохранитель" (liner-spring latch), с помощью которой нож можно зафиксировать как в открытом, так и в закрытом состоянии. Причем если нож сложен, то для "снятия с предохранителя" достаточно сжать рукоять посильнее в ладони - и защёлка под действием пружины автоматически откроется. Однако в разложенном состоянии разблокировать нож таким образом не получится, бали практически превращается в фиксед.
Имеется и титановая клипса, анодированная в соответствующий цвет. Клипса у меня оставила двоякое чувство. С одной стороны, очень удобная вещь для носки Морфо в кармане. Хотя, честно говоря, клипса настолько мягкая, что потерять свой нож благодаря ей - пара пустяков. С другой стороны, она явно мешает вдумчивому флиппингу. Клипса съёмная.

Субъективные впечатления.
Нож ОЧЕНЬ лёгкий. Во многом благодаря подборке материалов (титан + G10). Нож миниатюрен и сядет далеко не в каждую руку. Уверен, что 32-й проигрывает в удобстве флиппинга 42-му именно из-за своего веса и размера. Однако! Флиппить им всё же можно, и весьмма успешно. Доказательства лежат на Ютубе. Сам уже несколько дней верчу Морфо в руках, и кажется, что получается всё лучше.
С другой стороны, Морфо - очень симпатичный нож, который придётся по вкусу женщинам. В данном случае малый вес и миниатюрность превращаютя в плюсы. Да и сам нож в женских глазах смотрится как изящный и стильный аксесуар. Моя супруга была от ножа просто в восторге.

В заключение:
+ Очень свежий дизайн
+ Высокое качество материалов и сборки
+ Лёгкий и миниатюрный
+ Не противоречит эстонскому законодательству

- Лёгкий и миниатюрный
- Слишком мягкая клипса

Кажется, что нож получится очень удачным. Вскоре Бенчмэйд выпустит новую модель балисонга за номером 51,увеличенную версию Морфо. А значит большинство покупателей со мной согласны.

Groovy and XML

К языку Groovy присматриваюсь давно. Очень удобный язык для программиста, который всю жизнь писал на Java. И синтаксис такой же, и работает под старой-доброй виртуальной машиной, и осваивать его через это легко. А тут - очередное задание. Надо приготовить XML определённой структуры. Должен признаться, что создание XML в Java - дело достаточно простое, да вот только скучное и рутинное. А нельзя ли для этого использовать Groovy? Конечно можно! Код получается довольно красивым и изящным.
Смотрим:

package test
import groovy.xml.StreamingMarkupBuilder

/**
* Created by IntelliJ IDEA.
* User: andrei nikulin
* Date: 29.10.2009
*/
class XmlCreator
{
void create()
{
String dtdDeclaration = '''<!DOCTYPE InboundRequest [>!ELEMENT InboundRequest (APIHeader, BusinessObject)>
<!ENTITY % APIHeader SYSTEM "http://apifw//xml/APIHeader.Inbound.Request.V060000.dtd">%APIHeader;
<!ENTITY % BusinessObject SYSTEM "http://apifw//xml/WorkOrder.Read.Request.V060000.dtd">%BusinessObject;]>
'''
StreamingMarkupBuilder xml = new StreamingMarkupBuilder( )
xml.encoding = "UTF-8"

String s = xml.bind
{
mkp.xmlDeclaration()
mkp.yieldUnescaped( dtdDeclaration)

InboundRequest
{
APIHeader(ReplyTypeOK:"A", ReplyTypeError:"N")
{
apiAPIVersion("V060000")
apiBusinessObject("WorkOrder")
apiBusObjectMethod("Read")
apiBusObjectVersion("V060000")
apiUserID("")
apiExtSystemID("")
apiExtRequestID("")
apiRoutingInfo("")
}
BusinessObject
{
WoHeader
{
ExtSystemId()
ExternalKey()
WorkOrderNbr("00211997")
SubMethod()
WoTaskHeader
{
WorkOrderTask("01")
}
}
}
}
}

System.out.print s
}


public static void main(String [] args)
{new XmlCreator().create() }
}


Проблема Groovy - из рук вон плохая документация. ДжаваДок, который идёт вместе с дистрибутивом - практически бесполезен. Такое чувство, что создатели Groovy даже комментариев не пишут. А так - вполне себе жизнеспособный язык.
Статья о том, как работать в Groovy с XML-ом.

среда, 28 октября 2009 г.

Луна


Вчера просмотрел х/ф Луна.
Источников энергии на Земле не осталось, посему энергия добывается на Луне. Некая компания построила полностью автоматизированную лунную станцию по добыче Гелия3. На станции работает всего 1 человек. Работа - не напряжная: загружай контейнеры с собранным Гелием3 да отсылай на Землю. Но совсем не полезная, ибо физическое здоровье по непонятным причинам утекает очень быстро, да и психика от одиночества расшатывается. Потому контракт заключается всего на з года. После чего прилетает новый работник, а новый отправляется домой. Но вдруг, за 2 недели до окончания контракта, работник Сэм начинает что-то подозревать. Ему мерещатся всякие тётки, его луноход неожиданно ломается, а спасает его... новый сменщик, как две капли воды похожий на самого Сэма. Сэмам (ибо сменщика зовут тоже Сэм) предстоит разобраться, что за фигня ваабще здесь происходит. И будте уверены, они разберутся.

Отличный фильм, отличный актёр Сэм Рокуэлл (он там один и играет), захватывающий сюжет. До этого Сэм был замечен только в комедийных ролях. С ними он справлялся неплохо. В Луне же он проявил себя просто отлично, попадание в яблочко. Давно я не переживал за главного героя так сильно. А главное - никаких спецэффетков и компьютерной графики. Думаю, что это очень хорошо, ибо не отвлекает от основного сюжета. Весьма приличная музыка. И на всё про всё - 5 млн. УЕ в качестве бюджета.
Ведь могут, когда захотят!

Joda Time

Давно слышал про этот проект, да только руки никак не доходили попробовать. А тут - статья на IBM DeveloperWorks. Доходчивая и интересная. Например:

Now suppose I want to print out the date of the last day of the week of the month after the one that is 45 days from Y2K. Frankly, I don't even want to try tackling this using Calendar. It's just too painful to use the JDK to do even a simple date calculation like this one. It was at such a moment a few years ago when I first realized the power of Joda-Time. Using Joda, the code for the calculation looks like Listing 3:



DateTime dateTime = new DateTime(2000, 1, 1, 0, 0, 0, 0);
System.out.println(dateTime.plusDays(45).plusMonths(1).dayOfWeek()
.withMaximumValue().toString("E MM/dd/yyyy HH:mm:ss.SSS");


В общем, стоит попробовать.

четверг, 22 октября 2009 г.

среда, 21 октября 2009 г.

Мифология

Из Теогонии Гесиода:

Взвеселилась душой исполинская Гея.
В место укромное сына запрятав, дала ему в руки
Серп острозубый и всяким коварствам его обучила.
Ночь за собою ведя, появился Уран, и возлег он
Около Геи, пылая любовным желаньем, и всюду
Распространился кругом. Неожиданно левую руку
Сын протянул из засады, а правой, схвативши огромный
Серп острозубый, отсек у родителя милого быстро
Член детородный и бросил назад его сильным размахом.

Суровые ребята были эти древние греки, да и фантазией не обижены

Женщин губительный род от нее на земле происходит.
Нам на великое горе, они меж мужчин обитают,
В бедности горькой не спутницы,- спутницы только в богатстве.
...
Если же в браке кому и счастливый достанется жребий,
Если жена попадется ему сообразно желаньям,
Все же немедленно зло начинает с добром состязаться
Без передышки. А если жену из породы зловредной
Он от судьбы получил, то в груди его душу и сердце
Тяжкая скорбь наполняет. И нет от беды избавленья!


А опытный Гесиод знал толк в женщинах

Будничное

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

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

Забрал из ремонта часы Секунда. Ремонтировались они у одного немолодого мужичка, что сидит в бане на Рауа. За всё взял 80 ЕЕКов. Теперь надо проследить за точностью и на сколько часам хватает завода. А ещё надобно прикупить классический ремешок и - в путь.
Если косяков за ремонтом обнаружено не будет - рискну отнести и Полёт.

четверг, 15 октября 2009 г.

Hello Google Maps!

Сегодня решил расширить границы познания путём знакомства с ГуглМапс. Оказалось, что ГуглМапс достаточно прост в использовании, по крайней мере, первый результат я получил буквыльно за 20 минут.
З.Ы. На карте - место подожения Таллиннского университета, где я изучаю греческий.






А вот и код:

function initialize() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map_canvas"));
//map.setMapType(G_HYBRID_MAP);

var geocoder = new GClientGeocoder();
var addr = "Narva Maantee 29, Tallinn, Estonia";
geocoder.getLatLng( addr,
function(point) {
if (!point) {
alert("\"" + address + "\" not found");
} else {
map.setCenter(point, 16);
var marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(addr);
}
}
);
}
}