Après moi le déluge

0 коммент. | добавить комментарий
Шарясь по Киевскому серверу, открыл для себя Регину Спектор (Regina Spektor). Слушаю Après Moi. На мой взгляд - нечеловечески здорово :

Как JComboBox всех зарулил

2 коммент. | добавить комментарий
И снова Swing, и снова баг - на этот раз в JComboBox. Состоит в следующем:


JComboBox box = new JComboBox();
box.addItem("x");
box.addItem("x");
box.setSelectedIndex(1);
System.out.println(box.getSelectedIndex())


Этот код напечатает в консоль не 1, как ожидалось, а 0. Баг состоит в том, что метод getSelectedIndex() возвращает индекс первого попавшегося элемента, равного селектированному, причем сравнение выполняется методом equals().

В развернувшейся бурной дискуссии сотрудники Sun пытаются доказать, что данное поведение корректно, поскольку оба элемента x равны. Лично я не согласен: так мог бы вести себя метод getSelectedItem(), но от getSelectedIndex() я бы ожидал возврат выбранного индекса , а не какого-нибудь другого.

Багу #4133743 уже более 10-ти лет. Интересно состояние данного тикета: "11-Closed, Not a Defect, bug". :))

Рома

0 коммент. | добавить комментарий
В прошлые выходные мы с Женей побывали в городе Риме. Самолет наш вылетал в полседьмого утра, в связи с чем в субботу довелось проснуться в четыре. Метро и автобус «Airport-Express», однако, уже ходили, поэтому в аэропорту мы были вовремя. На борту аэробуса-320 компании Airberlin нам пытались продать горячий завтрак за 6 евро, но мы не поддались и гордо жевали бесплатные сендвичи: Женя – с turkey, а я – с cheese. Полет прошел гладко, и уже в девять мы были в аэропорту Fiumicino. Верите – ну никаких приключений в дороге!

От аэропорта к городу Риму идет специальный поезд «Leonardo Express», который за 40 минут довез нас до станции Termini – это Римский вокзал такой. Первым делом нам предстояло найти, где жить, поскольку Интернет в этот раз не сработал. Бронирование номеров в Интернете делается только посредством кредитки. Только один хостел согласился, чтобы мы перевели им деньги через банк, но, придя в Hamburger Sparkasse (сберкассу по-ихнему), мы обнаружили, что сберкасса в Гамбурге наличных денег не принимает – все только через кредитку. А у нас ее нет.

Лирическое отступление: человек без кредитной карточки в Европе – говно.

Однако, нам почти сразу повезло. Второй же посещенный нами отель согласился поселить нас в одной комнате с раздельными кроватями и совмещенным санузлом за 60 евро, что оказалось дешевле всех Интернетовых предложений. Так что, не заходя в комнату (мол, не готова), мы отправились прямиком на осмотр достопримечательностей.

Началось все с бань Диоклетиана. Диоклетиан в свое время отгрохал себе на славу огромные бани, в которых одновременно могло париться, чтобы не соврать, тысячи полторы человек (ну, или что-то вроде этого – если вру, то не сильно). Сейчас они представляют собой дворик, окруженный стенами тех самых бань. Во дворике разбит садик, есть фонтан, а также находятся древние саркофаги и надгробные камни. Эти экспонаты – часть музея, который размещается также на территории бань.



Погуляв по баням и пофотографировав, мы двинулись дальше. Надо сказать, что планирование нашей поездки я полностью доверил Жене – когда человек сильно увлечен, у него, обычно, получается лучше. Поэтому Женя имел длинный список мест, которые нам необходимо было посетить. Сверившись по карте, мы двинулись по заданному плану, но уже спустя несколько минут все пошло наперекор ему. Например, в одном из сохранившихся помещений тех же бань есть базилика (церковь по-нашему). Мы заглянули в нее просто так, ради интереса. И вы знаете, эта задрипанная римская базилика у вокзала была раза в два больше нашего Успенского собора! Итальянцы – очень набожный народ, поэтому базилик здесь много, и мне было с чем сравнивать. Базилика возле вокзала – таки-да задрипанная, и таки-да в два раза больше Успенского. Такие дела…

Например, базилика St. Maria Maggiore еще больше. А о соборе св.Петра я вообще пока молчу, но дойду и до него.

Следуя к следующему чек-поинту, мы, видимо, слегка сбились с курса, поскольку вышли к фонтану Треви, чего Женя не ожидал. Ну, раз уж так, то мы бросили в него монетки. Фонтан – очень большой, занимает всю площадь, и перед ним толпится много людей.



За фонтаном находится церковь S.Maria in Trivio, зданию которой без малого две тысячи лет. Очень, знаете, трепетные ощущения возникают, когда прикасаешься к столь древним и все еще прочным стенам, пережившим древний Рим, его падение, длинную череду различных эпох, правителей, зим, лет…

В городе Риме есть много обелисков. Во основном, они попадали туда после того, как древние римляне привозили их из Египта в результате какой-нибудь войны. На многих еще сохранились египетские письмена. Кроме того, на всех без исключения обелисках, включая и те, что с египетскими письменами, Святой церковью водружены кресты. А-ля «здесь был папа».



Возле Villa Borghese мы осуществили подъем на холм, чтобы полюбоваться видом на город Рим и Ватикан:



Еще надо сказать, что было очень жарко. Я купил поллитровую бутылочку воды в аэропорту, и выпил ее уже часам к 11. Пить хотелось все время, и запасы воды приходилось постоянно пополнять. Посетив Пантеон, пару площадей, и, подойдя к Пьяцца Венеция с Капитолием, мы поняли, что дальше – все. Пообедали мы во флорентийском ресторанчике, я съел равиолли, а Женя – салат и фруктовый салат. Вместе с двумя литровыми бутылками минералки, обед нам обошелся в 42 евро с мелочью, мда. Зато потом, отдохнувшие и подкрепившиеся, мы ринулись в самое, так сказать, античное мясо.

Для осмотра форумов, Палатинского холма и Коллизея можно купить 1 билет на нос за 11 евро, что мы и сделали. Осмотр Древнего Рима мы начали с форума Траяна. Императорских форумов там три, причем один плавно перетекает в другой – Траяна, Августа и Цезаря. Типичный форум включал в себя суд, храм, палату заседаний и т.д. Сейчас от них остались одни развалины – отдельные колонны, камни, и т.д. Палатинский холм – это, то место, откуда начинался древний Рим. На нем находятся дом Августа, сады, и множество развалин:



В древнем городе сохранились три триумфальных арки – Септемия, Константина, и, кажется, того же Августа. Что примечательно, Константин все надписи на них перебил под себя – с приходом христианства в Риме наступил упадок, и не было уже мастеров, могущих построить новые.

В двух шагах от арки Константина находится Коллизей. Очередь за билетами в него – похлеще оной в Эйфелеву башню. К счастью, билеты мы купили раньше, и поэтому гордо прошествовали внутрь. Из того, что не показывают на фотографиях – под сценой Коллизея находились помещения, в которых гладиаторы сидели перед боем, эдакие коридоры.



Потом, поев итальянской квадратно пиццы и еще немного пройдясь, я понял, что натер большие мозоли за более чем 12 часов почти непрерывной ходьбы. Поэтому мы вернулись в гостиницу, где я лег спать, а Женя пошел еще бродить.

Утром мы позавтракали в кафешке и поехали в Ватикан. Осмотрели площадь, собор (снаружи и внутри), пофоткали.



Это – я внутри собора св.Петра:



Потом мы вернулись в Рим, осмотрели пирамиду, которую древние римляне построили, подсмотрев идею у тех же египтян, да и прилетели обратно.

Рассказ мой, особенно под конец, получился ну уж очень конспективным - но такова действительность! Рим - это сказка, это дикая смесь древнего и современного, это - лавина мест, которые ну обязательно нужно посетить!

Пожить бы тут только с месяцок :)


Брюссель

2 коммент. | добавить комментарий
Итак, мы с Женей в пятницу поужинали, я выпил безалкогольного пива по случаю моего д.р., и в 20:24 сел в поезд Цюрих – Париж, откуда мне предстояло утром выйти в Брюсселе.

Признаться, покупая билеты, я выбрал купе и успокоился, наивно полагая, что купе – оно в и Германии купе. Ан нет: они бывают двух типов: со sleeper и с couchette, на что я не обратил внимания, а зря. Думаете, sleeper – это то, на чем можно спать? Ха! На самом деле, sleeper – это кресло, которое не раздвигается, и которых в этом купе шесть (!) – по три лицом друг к другу. Размер купе – чуть больше нашего. Захожу – батюшки-светы! В купе уже 5 человек, яблоку упасть негде, короче общий вагон отдыхает. К счастью, трое вышли в Бремене, и остались двое – супружеская пара весьма почтенных лет, причем бабка сразу улеглась на трех креслах напротив. Поняв, что сидя я все равно не усну, я молча уступил оставшиеся три кресла деду, а сам бросил на пол куртку, положил под голову рюкзак и сладко уснул. Да, тверда постелька, но зато чисто – Европа ж, блин!

Со мной вообще всегда случается что-то интересное. Вот, например, глубокой ночью – не то в Дортмунде, не то в Дюссельдорфе – раздался стук в дверь и зашел полицейский. Он объяснил, что в нашем вагоне едет парень из какой-то страны третьего мира, виза которого не позволяет ему ехать во Францию. Поэтому сейчас они едут в участок и будут там составлять police report, что займет около полутора часов. После этого парня привезут назад, и поезд сможет ехать дальше. Я, признаться, не понял – какой смысл возвращать его в поезд, если визы у него все равно нет, но такая забота о нелегале, бесспорно, умиляет. А я все равно тут же уснул и даже не заметил, как поезд тронулся.

В Брюссель поезд пришел точно по расписанию, несмотря на полуторачасовую остановку. Позавтракав в кафе на вокзале (которых там, кстати, довольно много) большим бутербродом, круассаном и кофе, и поняв, что карты Брюсселя достать там в полседьмого утра все равно не удастся, я вышел на улицу. Положившись на русский авось, я потопал по Stalingrad Laan – как оказалось, совершенно правильно.


Сама улица совершенно ничем не примечательна, кроме памятника Розе Люксембург и вот такой вот бабушки, которая не то голубей кормит, не то мелочь из кошелька достает:


Затем, через маленькую площадь с маленькой биржей и маленькой церковью св.Николая, сквозь пару узких улочек, я вышел на главную площадь Брюсселя – Grasmarkt (большая площадь). Надо сказать, что было только 8 утра, поэтому мне никто не мешал обозревать окрестности. На Грасмаркте есть дом пивоваров, дворец герцогов Бургундских, дворец Карла Лотарингского (который сейчас находится на реставрации) и Ратуша:



Что характерно, несмотря на то, что дворец Карла Лотарингского реставрируется, над лесами натянуто его изображение (фото до реставрации), чтобы не нарушать общий ансамбль. Вот как это сделано:


Говорят, каждые два года в августе здесь высаживают ковры из цветов размером во всю площадь. От площади я отправился бродить по центру, где уже начинали появляться отдельные люди, и из некоторых кафешек стали неторопливо выносить наружу столики полусонные официанты. Центр Брюсселя имеет форму пятиугольника и таким образом повторяет форму бывших древних крепостных стен. Дух, безусловно, здесь свой. Улочки узкие, как в Копенгагене, здания – помпезные, как в Париже, но чувства вызывают совершенно другие.



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

От Грасмаркт уходит улочка Этюв, которая ведет к писающему мальчику (Maneken Piss). По легенде, он когда-то спас Брюссель от пожара, за что и был увековечен. У него есть 740 костюмов, которые на него одевают в честь больших праздников, либо в честь приема гостей из других стран. Мне же, как это обычно бывает, повезло, и я застал его в чем мать родила.


Кроме манекен писс, на Этюв есть барельеф, на котором изображено лежащее туловище с рукой. По слухам, если загадать желание и погладить эту руку, то оно должно сбыться. Однако же, в связи с многочисленными стройками, проходящими в Брюсселе в настоящее время, данный барельеф оказался от меня скрыт.

Еще был я на Королевской площади, видел дворец, королевскую библиотеку и музеи. Рядом с дворцом находится Малый Саблон – улица и парк со скульптурами и растениями. Говорят, где-то там есть еще Большой Саблон, но я его не нашел. Вместо этого, а также в связи с начинающимся дождем, я поехал на метро в Атомиум, о котором сейчас и расскажу.

Атомиум в Брюсселе – это как Эйфелева башня в Париже. Его построили в 20 веке в честь проникновения внутрь атома. Данное сооружение представляет из себя модель атома высотой в 102 метра:


Между шарами ездят лифты. Как сказала сопровождающая нас девушка, они самые быстрые в Европе – скорость 5 м/с (это 18 км/ч). Внутри можно гулять, смотреть на Брюссель сверху, посещать выставочные залы (где я не был) и кушать в ресторане (где я был).

Отведав говяжьего мяса с грибами, картошкой и салатом, я переместился к другой достопримечательности, находящейся неподалеку – парку «Мини-Европа». Открытый недавно по случаю какой-то годовщины Евросоюза, он содержит миниатюрные копии знаменитых зданий всех его стран (Нотр-Дам, Биг-Бен – ну вы поняли). Возле каждой страны есть табличка с информацией и кнопочка, нажав на которую, можно прослушать гимн этой страны. По парку можно перемещаться по специальным дорожкам – вроде как от страны к стране. Например, вот та самая центральная площадь Брюсселя:


После осмотра парка почти что наступил вечер. Я погулял немного по Брюссельскому парку, находящемуся рядом, и вернулся в центр. Погуляв там и отужинав в итальянском ресторане, я отбыл на вокзал, откуда вскорости и уехал обратно в Гамбург.

Дорога обратно была еще ужасней, чем туда. В моем купе пустовало только одно из 6 кресел, так что спал я сидя и плохо. Вернувшись домой, я продрых до обеда, после чего, поев и переделав хозяйственные дела, я встретился с Женей и мы отправились смотреть финал чемпионата Европы, на котором, как вы знаете, Германия проиграла, но это уже другая история.

Поезжайте в Брюссель! Мне понравилось. Город очень красивый, очень европейский, очень спокойный и очень разнообразный.

Только вот эти поезда City Night Line - просто жесть!

Разрешить нельзя запретить

0 коммент. | добавить комментарий
На сайте http://neoutils.ru (и какого меня туда понесло?) наткнулся на замечательную программу NeoAutorun. Софтина позволяет контролировать список автоматически загружаемых программ, но это неважно - я ее не видел, и не хочу. Меня впечатлил чекбокс на скриншоте:



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

pnuts drives me crazy

0 коммент. | добавить комментарий
Пишу на pnuts. pnuts - это скриптовый язык, мы активно его используем.

Короче, объявляю класс. Когда я для какого-то из его полей объявляю cеттер, а впоследствии вызываю его, то чудный пи-натсовый интерпретатор вываливается со StackOverflowError:

java.lang.StackOverflowError
at java.lang.String.indexOf(Unknown Source)
at java.lang.ClassLoader.checkName(Unknown Source)
at java.lang.ClassLoader.findLoadedClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at pnuts.lang.Runtime.setBeanProperty(Runtime.java:3066)
at pnuts.lang.JavaBeansConfiguration.setBeanProperty(JavaBeansConfiguration.java:154)
at pnuts.lang.JavaBeansConfiguration.putField(JavaBeansConfiguration.java:136)
at pnuts.lang.Java2Configuration.putField(Java2Configuration.java:101)
at pnuts.lang.Runtime.putField(Runtime.java:547)
at _pnuts_$2.exec(Unknown Source)
at pnuts.lang.PnutsFunction.exec(PnutsFunction.java:294)
at pnuts.lang.PnutsFunction.call(PnutsFunction.java:232)
at SamePOI.setDistance(Unknown Source)
at sun.reflect.GeneratedMethodAccessor63.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at pnuts.lang.Runtime.setBeanProperty(Runtime.java:3066)
at pnuts.lang.JavaBeansConfiguration.setBeanProperty(JavaBeansConfiguration.java:154)
at pnuts.lang.JavaBeansConfiguration.putField(JavaBeansConfiguration.java:136)
at pnuts.lang.Java2Configuration.putField(Java2Configuration.java:101)
at pnuts.lang.Runtime.putField(Runtime.java:547)
at _pnuts_$2.exec(Unknown Source)
... и т.д.


А если присваивать полю значение непосредственно снаружи, то все работает!

Сеттер имеет вполне типичный вид:

void setDistance(int d) {
this.distance = d
}


В чем проблема - ума не приложу! И с геттером, кстати, та же фигня :(

UPD 18:12 А вот еще что раздражает: длинные заголовки методов класса можно разбивать только так:

void myMethod(int param1, String
param2, bool param3)


Т.е. перевод строки можно ставить ТОЛЬКО между типом и параметром. Так работать не будет:

void myMethod(int param1,
String param2, bool param3)


Я специально взял отсюда и расковырял грамматику языка, чтобы убедиться, что так оно и есть:

TypedParamList = "(" ( ")" | TypedParam ("," TypedParam )* ")" ) ;
TypedParam = Param | ClassName Param ;
Param = Eol IDENTIFIER Eol ;

Т.е., если указываем ClassName, то Eol может следовать только сразу после него, либо (что еще страннее), ПЕРЕД запятой. Но не после. Т.е. так тоже будет работать:

void myMethod(int param1
,String param2, bool param3)


Вот так и проходит рабочее время))

Гамбург - 01

0 коммент. | добавить комментарий
Уже неделю работаю я в Гамбурге на благо компании Харман/Бекер. Приятно все-таки приезжать в компанию в третий раз: за это время несколько человек сами подошли ко мне с подходом «а я тебя уже видел, ты откуда, и т.д.» Так что число моих шапочных знакомых все время растет.

Один из них – Мартин (это тот, который босиком ходит), не перестает удивлять меня своими странностями. В пятницу поймал меня за пуговицу в коридоре и начал рассказывать о том, какой он трудоголик, как трудно ему различать «рабочее» и «личное», и какой он молодец, что может говорить об этом открыто. На нем висит значок «I am not normal», что, безусловно, чистая правда. Третьего дня, например, слышал от него историю, как он обновил какую-то навигационную таблицу, записал ее в навигатор своего автомобиля и поехал к родственникам, и как оно все плохо работало, и длительность поездки предсказывало с ошибками, и не туда его заворачивало, и пр…
Другой из них – Stefan - кстати, скоро станет нашим главным контактом с немецкой стороной. Питер наконец-то созрел для того, чтобы выделить человека, для которого работа с нами будет основным занятием, а не «между прочим», как это происходит сейчас. Штефан, как сказал Питер, тысячу лет работал на проекте БМВ, и сейчас ему срочно нужно сменить род занятий, чтобы не загнуться от тоски. Жду хорошего. Поживем – увидим, как оно будет.
Здание нашей работы находится над одним из многочисленных каналов, и, если выйти во двор, то с него есть спуск на понтонный причал, где отдыхают уточки.



В четверг играли с Питером в Го. О многом поговорили. Кроме Питера, я сыграл партию в Го с одним новичком (разумеется, обыграв его). Интересен род его деятельности: он проверяет, насколько плотно закручены болты в самолете, перед его взлетом. В его распоряжении 5 болтов – за остальные отвечают другие. И так – от рейса к рейсу – 5 болтов. Впечатляет занятие!
В Го-клубе много разговоров было о чемпионате Европы по футболу, проходящем сейчас. В тот вечер играла Германия, и Питер все хотел, чтобы они проиграли, и это сумасшествие на улицах закончилось. Каждый день в 20:45 начинается очередной матч – и до этого времени важно успеть поужинать, т.к. все кафе и рестораны, где есть телевизор, заполняются толпами оголтелых болельщиков. Турки, кстати, коих здесь великое множество, ох сильные болельщики – от сигналов их машин я в пятницу вечером почти оглох, пока шел под мостом возле станции Berliner-Tor. А за Россию, которая вчера играла, соотечественники болели, в основном, по кабакам – почти из каждого доносились крики на родном языке, когда я возвращался домой из бассейна. В метро на электронных табло, где пишут, сколько времени осталось до прибытия следующего поезда, вечером выводят счет текущего матча. Короче говоря, народ болеет.

В эти дни в Гамбурге проходит еще одно мероприятие – т.н. Harley Davidson Days. Со всей Европы сюда съехались десятки тысяч волосатых байкеров на своих мотоциклах, чтобы как следует напиться и покрасоваться. Их парад был вчера в районе St.Pauli, но я не пошел – посмотрел фотографии с прошлогоднего события и, признаться, побоялся, что затопчут. В центре, однако, их тоже было много, народ их фотографировал, и т.д. Как по мне – мотоциклы как мотоциклы, хотя я тоже не удержался и сделал пару фотографий для истории.


Вместо байков я вчера сфокусировался на местах, где еще не был в прошлые разы – Altstadt (старый город) и Hafencity (гавань). В последней я был, но в этот раз я зашел с другой стороны (с какой? Не знаю, как объяснить – со стороны Altstadt :)) Центральная старая часть города непохожа на нашу. Гамбург – город портовый, и сооружения там, преимущественно, квадратные и утилитарные, построенные для портовых контор и первых офисов. Основная особенность – красный кирпич, из которого в том районе построено без исключения все.

А, вот еще новость: я купил билеты в Брюссель! В пятницу, день своего рождения, после работы я сяду на поезд и чухну в Бельгию. Посмотрю на здания Евросоюза, писающих мальчика и девочку (да, есть и такая), поем бельгийского шоколаду да вафель, и вечером поеду обратно. Поезда в этот раз без пересадок – надеюсь, что дорога не будет такой утомительной, как была, к примеру, из Копенгагена в прошлом году. Туда-обратно – 110 евро – это вместе со скидкой, которую мне сделали как молодому, не достигшему 25 лет. Женю все равно наверняка потянет в Рим (дался ему этот Рим, блин!) – ну а я себе в Бельгию ))

Кстати о Жене – он прилетает в понедельник, но Тобик (наш ПМ) отказался его встречать. Поэтому ехать в аэропорт придется Михаэлю, который вообще к организационным вопросам никаким боком не относится (отвечает только за один из наших продуктов), да и машины у него нет. Так что, поскольку он мне симпатичен, я поеду вместе с ним, чтобы его поддержать. Интересно другое – меня Тобик встретил, т.к. я его contact person. А Женю, который работает над другим продуктом, он уже встречать не хочет, т.к., мол, «не его человек», и нечего на него тратить деньги на бензин. Смотрю я на этих немцев, и нарадоваться не могу их бесконечной бережливости!

Вот, вкратце, такие дела. О чем еще сказать? Ну, не знаю, меня, как всегда, много жизнеполагающих вопросов волнует. Например, вот елочка:

Так вот: горшочек у этой елочки просто разбился, или это такая художественная задумка?..