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

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. А Женю, который работает над другим продуктом, он уже встречать не хочет, т.к., мол, «не его человек», и нечего на него тратить деньги на бензин. Смотрю я на этих немцев, и нарадоваться не могу их бесконечной бережливости!

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

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

Еще один баг от Swing

0 коммент. | добавить комментарий
Только что еще один Свинговый баг побороли. На одной из ~10 машин, где работает наша программа, запуск диалога выбора файлов JFileChooser занимает примерно полминуты (ну о-о-очень долго, если честно). Кроме того, переход в любую папку также отбирает несколько секунд. Windows XP SP2 стоит, последние обновления, все дела... А на других машинах - все хорошо.

После непродолжительного копания, наткнулся на описание Java-Sun bug #5050516. Оказывается, на некоторых системах такое поведение вызывается поддержкой Windows Compressed Folders. После того, как отключили ее командой

regsvr32 /u %windir%\system32\zipfldr.dll,

все заработало быстро и правильно.

Багу больше 4х лет. В jdk 1.6 он еще живет. Вроде, исправили в седьмом, но я не проверял))

О стандартах на коды стран (оч.кратко)

0 коммент. | добавить комментарий
По работе столкнулся с проблемой кодов стран (сокращенных названий вроде RU, UA и т.д). Какая же это непростая проблема оказывается!

Существуют 2 стандарта ISO на это дело - 2-х буквенный и 3-х буквенный. Кроме этого, наш заказчик, разумеется, иногда использует свой. В исходниках, само собой, переменные, хранящие код страны, комментариев по поводу используемого стандарта не содержат - догадайся, мол, сам, что там внутри...

А, во! Еще у стандартов этих есть разные толкования - особенно у ISO-3. Сидим сейчас и гадаем, какой код у Румынии - ROL, ROM или ROU :)

Гамбург, та-дамс!!!

0 коммент. | добавить комментарий
Снова наслаждаюсь давно забытым ощущением: два перелета позади, вещи разобраны, и вот уютный номер гостиницы Schaper безраздельно мой - правда, на этот раз не на Klosterallee, а на Oberstrasse, но так даже лучше... Номер явно больше, кладовая имеет вид отдельной комнаты (а не отдельного шкафа), кухня-ванная, шоколадка на подушке от заботливой хаусмайстерши, безлимитный интернет, ну и так - по мелочи.

На картиночке ниже - облака между Одессой и Будапештом. Ближе к Будапешту))



По традиции, рассказываю о том, что меня больше всего удивило в полете. Из Будапешта в Гамбург я летел рядом с необъятным немецким дядькой - о нем и речь. В какой-то момент я краем глаза заметил, что он ковыряется большим пальцем во рту. Все бы ничего - но когда он его вытащил, то оказалось, что палец этот имеет длинный желтый ноготь длиной около сантиметра... брррр.... А еще потом он достал vomit pack, и стал в него харкать. Пакетик этот он поставил на свободное место между им и мной, и периодически изливал в него лишнюю жидкость из своего носоглоточного пространства. А сам, между прочим, в костюме и галстуке - прям-таки интеллигент. Такая вот прелесть :))

Погода холодная, но ясная. Градусов 15.

Анекдот

0 коммент. | добавить комментарий
Идет экзамен по физике. Профессор вызывает первого студента и задает вопрос:
- Что быстрее: скорость света или скорость звука?
Студент:
- Скорость света.
- А почему? Обоснуйте свой ответ.
- Ну, я когда радио включаю сначала лампочка загорается, а потом звук появляется.
- Два. Придете на пересдачу.
Заходит следующий.
Ему задается тот же вопрос:
- Что быстрее: скорость света или скорость звука?
Студент:
- Скорость звука.
- А почему? Обоснуйте свой ответ.
- Ну, я когда телевизор включаю, сначала звук появляется, а потом изображение.
- Два. Придете на пересдачу.
Заходит следующий.
После таких ответов профессор решил упростить свой вопрос:
- Вот представьте: стоите вы на берегу реки, а на другом стреляет пушка. Что будет раньше? Вы услышите звук выстрела или увидите вспышку?
- Конечно, увижу вспышку.
Профессор (обрадовавшись) спрашивает:
- А почему? Обоснуйте свой ответ.
- А у меня ведь глаза находятся ближе к пушке, чем уши.