October 30, 2007

В воздухе носится предчуствие глобального Большого Бума

October 29, 2007

Леха получил в школе Baritone horn (как называется по русски не знаю).



Естественно я его услышал еще внизу возле дома, выйдя из машины. Теперь нам и соседям предстоит веселая жизнь.

October 24, 2007

Б. Лубянка 12 и 168 ледорубов

Бисексуальность как она есть

Главный раввин России (КЕРООР) награжден крестом в храме Христа Спасителя
Главный раввин России Шаевич Адольф Соломонович (КЕРООР) 23 августа 2007 г. был награжден крестом "Священная Держава", сообщает "Еврейский журнал".

Насколько я знаю дело обстоит так: или ты верующий иудей (особенно раввин), или кресты в храме Христа принимаешь. Совмещать это никак нельзя. Крестик или трусы.
Очередная холивар на тему C++ мертв, а я еше нет. В принципе можно не читать - большинство там бредят
Посмотрел "American Beauty". Пожалуй лучший фильм, который видел в последние пару лет

October 22, 2007


Так вот ты какой, северный пушной зверек
песец

October 21, 2007

ЖЖ Тараса Шевченко. Настоящий его дневник, со сдвигом на 150 лет.

http://tarasshevchenko.livejournal.com/
Райкконен - чемпион! Здорово-то как! Прямо не верится, что такие вещи случаются
Жаль только что Феррари не обошла М-М и в командном зачете по сумме очков, хоть и получила чемпионство

October 15, 2007

Розовая кофточка 2
Как журналистка с "Первого канала" брала интервью у Александра Житинского
В Москве снег, а нас +25, солнечно и первый дождь еще не прошел
и хмель слетел и холодом подуло :(

October 14, 2007

Как разнообразить жизнь команды программистов?
Там все прекрасно, но особенно понравился #6
Программируйте на не очень крутом холме. И скатитесь вниз, держа ноутбуки в объятиях и пингуясь.

via pargentum@lj

October 12, 2007

Тут wolf_gray@lj  написал про израильские школы и забастовку в них и предложил либертарианскую программу образования. К сожалению в его журнале нельзя комментировать не друзьям, поэтому отпишусь здесь.

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

October 10, 2007

На rsdn знатнейшей флейм на тему "Собеседование в Яndex". В нем принимают участие в том числе и девелоперы Яндекса и вроде как даже какие-то руководители. Это просто праздник какой-то, эти люди на полном серьезе утверждают что они конкуренты Гугла и еще много разного смешного. Сама история тоже весьма показательна.

October 8, 2007

Таймкод / Timecode
Оказывается со времен моего изучения в школе рідной українськой мови сучасна українська абетка містить букву Ґ(ґ).
Я вражений! :)

К этому пример
Вот такой код пришлось написать 5 минут назад:


        for(Pair<String,String>    pair:    transformers)
        {
                FileReader    reader;
            try
            {
                reader    =    new    FileReader(pair.getSecond());
            }
            catch(java.io.FileNotFoundException    err)
            {
                continue;
            }
           
                StreamSource    source    =    new    StreamSource(reader);
                Transformer    transformer;
               
            try
            {
                transformer    =    t_factory.newTransformer(source);
            }
            catch    (javax.xml.transform.TransformerConfigurationException    err)
            {
                continue;
            }
               
            factory_.setMM4ToMM7Transformer(pair.getFirst(),transformer);
        };


Как это должно было бы выглядеть с моей точки зрения:


        for(Pair<String,String>    pair:    transformers)
        {
                FileReader    reader    =    new    FileReader(pair.getSecond());
             if   (!reader.isOpen())
                continue;

                StreamSource    source    =    new    StreamSource(reader);
                Transformer    transformer    =    t_factory.newTransformer(source);

             if   (transformer    ==    null)
                continue;
              
            factory_.setMM4ToMM7Transformer(pair.getFirst(),transformer);
        };


Теперь внимание вопрос - какой вариант читабельнее и проще в написании? :)

UPD
Я сделал ошибку, разместив не весь код, а выжимку. Вот полный вариант:


        for(Pair<String,String>    pair:    transformers)
        {
                FileReader    reader;
            try
            {
                reader    =    new    FileReader(pair.getSecond());
            }
            catch(java.io.FileNotFoundException    err)
            {
                logger_.warn(err);
                continue;
            }
           
                StreamSource    source    =    new    StreamSource(reader);
                Transformer    transformer;
               
            try
            {
                transformer    =    t_factory.newTransformer(source);
            }
            catch    (javax.xml.transform.TransformerConfigurationException    err)
            {
                logger_.warn(err);
                continue;
            }
            finally
            {
                try
                {
                    reader.close();
                }
                catch    (java.io.IOException    err)
                {
                    logger_.warn(err);
                }
                reader    =    null;
            }
               
            factory_.setMM4ToMM7Transformer(pair.getFirst(),transformer);
        }

Вариант с общим try-catch блоком мне кажется недостаточно кошерным, потому как:
- закрытие обьектов в finally становится зависимым и требует проверки открытия
- при чтении кода нужно делать дополнительный анализ "а какая операция выбрасывает это exception и что если таких операций несколько?"
- последующее возможное редактирование, ИМХО, хуже
(Например если добавить открытие еще одного файлового потока. то все сразу становится совсем плохо)

        for(Pair<String,String>    pair:    transformers)
        {
                    FileReader    reader    =    null;

            try
            {
                reader    =    new    FileReader(pair.getSecond());
   
                    StreamSource    source    =    new    StreamSource(reader);
                    Transformer    transformer    =    t_factory.newTransformer(source);;
               
                factory_.setMM4ToMM7Transformer(pair.getFirst(),transformer);
            }
            catch(java.io.FileNotFoundException    err)
            {
                logger_.warn(err);
                continue;
            }
            catch    (javax.xml.transform.TransformerConfigurationException    err)
            {
                logger_.warn(err);
                continue;
            }
            finally
            {
                if    (reader    !=    null)
                {
                    try
                    {
                        reader.close();
                    }
                    catch    (java.io.IOException    err)
                    {
                        logger_.warn(err);
                    }
                    reader    =    null;
                };
            }
        }

Соответсвенно нужно добавить одну строку в код без исключений:
reader.close();

October 6, 2007

Merde!
Гугловский Browser Sync начал писать в свой лог-файл всякую чушь типа
"INFO: Deprecated method document.getSelection() called.  Please use window.getSelection() instead." и
"[CLB_SyncManager] Received update: {CLB_SyncItem componentID=@google.com/browserstate/history-syncer;1, typeID=undefined, itemID=http://www.fictionbook.ru/read_tmp_page?key=3261f0e6829747afacaa391eb12e6aec, isRemove=false}". За 2 суток исчерпал весь диск, записав 1.5 Гб. Сколько мог бы еще записать - бог весть.
Вылечилось закрытием двух табов fictionbook.ru.
Пейсатели чертовы...

UPD
Исчерпание диска явилось причиной падения Flashget-a со сбросом очереди текущих закачек (коих было штук 300), истории и настроек.
Также сбросились полностью все эккаунты в "Password manager" Огнелисы
Отсутствие нормального инженерного подхода при разработке ПО меня всегда очень огорчает :)

October 2, 2007

Обрaботка ошибок с помощью exceptions, return values, установкой некоей переменной должна разумно сочетаться. Когда-то я видел, как завзятый C-шник попрекал использование exceptions в C++ что мол теперь каждый вызов придется оборачивать в try-catch. Конечно так никто не пишет. В C++.
Зато в Java это нормальный подход, весь стандартный API и виденный мною нестандартный именно так и делает. Это сильно напрягает.
skokie

October 1, 2007

Две новых гугловских "фишки"

Google Notebook. Для тех, кто пользуется ЖЖ как записной книжкой - очень рекомендую. И с поиском там все нормально, и куски web-страниц вставляются не голым текстом, а с оформлением.

Возможность "запарковать" свой почтовый домен на гугле, открыть до 100 эккаунтов на нем, на каждый из них имеете по 2 Гб (как на стандартном gmail), разделяемые по желанию Google Docs и Calendar, внутренний чат. Я попробовал - внушает! И главное, бесплатно (есть платный вариант с гораздо большими возможностями)

Разбираясь с J2EE все чаще задаюсь вопросом  - а если в нем жизнь за пределами связки http + relational db? Сделать тупой TCP server с минимальной обработкой и передачей куда-то дальше получается ничуть не проще чем писать его с нуля. И на хрена мне тогда нужны все эти Application Server-ы? И чем занимаются спецы SUN, Apache и IBM уже лет 10?