You are viewing [info]anton_irinev's journal

anton_irinev [entries|archive|friends|userinfo]
anton_irinev

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

A chicken, an egg or a null [May. 12th, 2012|10:48 pm]
[Tags|]

Тут мужик придумывает крутейшие задачки на знание языка Java. Обязательно наличие хакерского стиля мышления и чувства юмора.
LinkLeave a comment

Valve handbook [Apr. 30th, 2012|10:37 pm]

Недавно Michael Abrash стал вести блог о своей работе в Valve. После этого в интернетах начали активно обсуждать горизонтальную структуру компании. А структура очень интересная - в Valve нет ни одного менеджера или тимлида, нет должностей, группы формируются по принципу "где хочешь - там и работаешь", ну и вообще, много всего необычного.

Почитал тут "Valve handbook for new employees" - это такая методичка, которая выдается новому сотруднику для того, чтобы он проникся культурой компании и сориентировалcя, что ему дальше делать. В этой книжке есть одна фраза, которая очень хорошо характеризует горизонтальную структуру компании. Там говорится, что одна из сложностей для Valve - "making predictions longer than a few months out". Что-то мне подсказывает, что такое состояние дел может себе позволить только компания, которая сидит на куче бабла и ни от кого не зависит. Для Valve по всем пунктам - ок. Компания стартовала на свои деньги и вроде как злобные инвесторы не должны стоять над душой, она не зависит от издателей и прибыль в пересчете на одного сотрудника больше, чем у Apple, Microsoft или Google. Поэтому с точки зрения работодателя я бы не особо впечатлялся примером Valve. С точки зрения работника такая свобода - это, конечно же, очень круто.

Еще мне понравилась идея формирования зарплаты, основанная на анонимном мнении коллег. Каждый сотрудник Valve раз в год выставляет четыре оценки всем, с кем он за это время работал. Оцениваются технический уровень, полезность с точки зрения запуска проектов, полезность коллегам вокруг и своему проекту. Еще бы они рассказали, как бороться со сговором между сотрудниками в небольших проектах.
Link2 comments|Leave a comment

The Origins of Fallout [Apr. 22nd, 2012|01:27 pm]
"Брайан Фарго обратился к толпе и рассказал всем, насколько хорошо идут дела в компании. При этом, однако, он специально упомянул о «10th Anniversary», которая продавалась огромными тиражами, обеспечив до 60% продаж компании в этом квартале. Билл и я стояли и гордились. Брайан продолжил, говоря, что проект «10th Anniversary» был бы невозможен без усилий и тяжелой работы двух человек. Мы с Брайаном ухмыльнулись в ожидании. Брайан продолжил, благодаря двух женщин из отдела маркетинга, которые помогали распространять проект."

Из статьи Скотта Кэмпбелла о его работе в Interplay и о том, как создавался первый fallout (перевод/оригинал)
LinkLeave a comment

Неожиданно [Apr. 10th, 2012|02:44 am]
Засилье бело-зеленых галочек в меню баре:

Тем временем dropbox сразу после запуска Яндекс.Диска прислал какое-то странное письмо о добавлении 500Мб за то, что я якобы заинвайтил самого себя в dropbox.
LinkLeave a comment

Visual Studio Achievements [Jan. 22nd, 2012|09:48 pm]
[Tags|]

Крутая идея, сомнительная реализация. Чуть ли не половина этих беджиков характеризует обладателя, как мелкого вредителя и почти все не характеризуют его, как прокаченного пользователя студии. Что-то они переборщили со смехохуечками, вместо того, чтобы развернуть тему с малоизвестными фичами, частым использованием шорткатов, рефакторигов и тому подобным.
LinkLeave a comment

imdb strikes back [Nov. 1st, 2011|01:55 am]
Забавная инструкция появляется при переходе по ссылке из жж на какую-нибудь страничку imdb.com:

Видимо, в жж ecть какая-то уязвимость (CSRF?), которая позволяет то ли накручивать рейтинги фильмов, то ли ещё какую-нибудь гадость. Поэтому imdb-шники проверяют реферер и, если юзер пришёл по ссылке из жж, отдают браузеру картинку с указанием кешировать её по самые помидоры. Странно, но если перейти в адресную строку и нажать enter, все современные браузеры достанут картинку из кеша (и заодно забудут про реферер). Тогда уже можно нажать F5 и на imdb.com отправится полноценный GET-запрос без жж-шного реферера. Это какая-то стандартная практика защиты от вредоносных скриптов или imdb-шники так умничают?
LinkLeave a comment

OmitStackTraceInFastThrow [Jul. 22nd, 2011|02:11 am]
[Tags|]

Есть в JVM такая позорная оптимизация, включенная в серверной версии по умолчанию, называется OmitStackTraceInFastThrow. Если виртуальная машина понимает, что приложение начинает кидать одни и те же исключения в одном и том же месте программы, то с какого-то момента может перестать генерировать полноценное исключение, заменяя его заранее созданным пустым объектом-синглтоном (получение стектрейса сравнительно дорогая операция).

Позорность тут в двух местах. Во-первых, когда открываешь лог и видишь надпись "у вас NullPointerException" без единого намёка в каком месте программы - это "немного" сбивает с толку. При этом нужно либо знать об этой оптимизиции, либо как-то по другому догадаться открыть вчерашний лог, где это исключение ещё было выброшено со стектрейсом. Ну и во-вторых, JVM как-то странно трактует понятие "fast throw". В моем случае было порядка тридцати исключений, каждое кидалось раз в 40 минут в вызываемой по таймеру таске (типичный пример "fast throw"). Оптимизация сработала на втором-третьем исключении. Интересно, сколько при этом было сэкономлено тактов процессора.

Отключается это чудо опцией -XX:-OmitStackTraceInFastThrow
LinkLeave a comment

Google APIs explorer [Jul. 17th, 2011|01:33 am]
[Tags|]

У гугла есть визуальная документация-песочница для их публичных API. Например, так выглядит получение исходного URL'а от их укорачивалки (вводим любой укороченый URL, жмём execute). По-моему, крутая идея.
LinkLeave a comment

Книжки [Jun. 13th, 2011|03:52 pm]
[Tags|]

Несколько интересных нетехнических книжек.

"Лабиринт. Мемуары гитлеровского разведчика" (Вальтер Шелленберг)

Очень интересные и хорошо написанные мемуары очень необычного человека. В начале второй мировой войны Шелленберг в возрасте 30 лет возглавил отдел контрразведки в гестапо под руководством Мюллера, позже он стал начальником управления внешней разведки, фактически работая напрямую с Гиммлером. Мемуары писал уже после войны, тяжело болея раком. Умер в Италии в 52-м году.

"Забавная Библия" (Лео Таксиль)

Автор - Лео Таксиль - тоже совсем непростой человек. В конце XIX века ему удалось 12 лет водить за нос папу римского и всю французскую католическую церковь, устраивая антимасонские конгрессы и издавая невероятно бредовые книги о связях масонов с сатаной. При этом официальная церковь вплоть до раскрытия мистификации самим автором буквально носила его на руках.

"Забавная библия" была написана за несколько лет до начала антимасонского розыгрыша. Книга - скурпулёзный разбор ветхого завета, цель которого состоит в высмеивании несостыковок, преувеличений и абсурдных ситуаций, описанных в священном писании. Разбор немного затянут и автор часто передёргивает, но, тем не менее, советую прочесть - довольно познавательно.

"Lost Moon" (Джим Ловелл и Джеффри Клугер)

История 13-ой миссии космической программы "Апполон", в ходе которой американцы должны были третий раз высадиться на Луну. Ловелл как раз был командиром экипажа корабля Апполон-13. Уже на подлёте к Луне на корабле произошёл взрыв, из-за которого астронавты потеряли главный двигатель и значительную часть запасов энергии и кислорода. В книге по рассказам очевидцев восстановлено, что происходило в это время в НАСА, на самом корабле и как астронавтов чудом удалось вернуть домой.
LinkLeave a comment

The Clean Coder [Jun. 7th, 2011|03:39 am]
[Tags|]



Две недели назад у Роберта Мартина вышла новая книга - "The Clean Coder". Судя по оглавлению она более философско-методологическая, нежели предыдущая (которая мне в своё время показалась вполне годной) - "Clean Code". Обязательно посмотрю в память о былых заслугах.
Link1 comment|Leave a comment

Courier New vs. Consolas [Jun. 2nd, 2011|01:05 am]
[Tags|, ]

Весь день не покидает вау-эффект. Всегда считал, что все эти споры вокруг шрифтов рождаются от переизбытка свободного времени и недостойны внимания. Но посидев один рабочий день со шрифтом Consolas:



абсолютно точно для себя установил, что уже непозволительно много времени пишу код с вырвиглазной инопланетной хернёй под названием Courier New 14pt:

Link9 comments|Leave a comment

Хозяйке на заметку - HttpURLConnection [Apr. 3rd, 2011|04:27 pm]
[Tags|]

Стандартный способ скачать что-то из сети в джаве - воспользоваться классом URLConnection:

InputStream download(URL url) throws IOException {
    URLConnection conn = url.openConnection();
    conn.connect();
    return conn.getInputStream();
}

При этом совершенно прозрачно для пользователя поддерживается HTTP keep-alive (он же - persistent connections - возможность переиспользования TCP-соединения с сервером вместо открытия нового соединения на каждый запрос). Всё, что нужно, чтобы воспользоваться этими благами протокола HTTP/1.1 - вычитывать ответ от сервера весь до последнего байта. В том числе и в случае, когда сервер возвращает ошибку. С учётом этого, чуть более корректное использование URLConnection выглядит как-то так:


InputStream download(URL url) throws IOException {
    URLConnection conn = url.openConnection();
    try {
        conn.connect();
        return conn.getInputStream();
    } catch (IOException e) {
        if (conn instanceof HttpURLConnection) {
            InputStream es = ((HttpURLConnection) conn).getErrorStream();
            if (es != null) {
                byte[] buf = new byte[4096];
                try {
                    while (es.read(buf) > 0);
                } catch (IOException e2) {
                    // ignore
                } finally {
                    es.close();
                }
            }
        }
        throw e;
    }
}

В один прекрасный момент Sun'овцы заметили, что никто как бы и не пишет правильный обработчик ошибок и решили хоть как-то сгладить эффект, прикрутив к jvm очередной хак. Этот хак назвали sun.net.http.errorstream.enableBuffering. По умолчанию, это системное свойство равно false, но при его включении jvm за вас будет буферизировать 4Кб ответа в случае отлупа от сервера с кодом >= 400. В 6-й джаве ребята решили не ограничиваться одним error stream'ом и научили jvm дочитывать за вас в фоновом потоке 512Кб, если основной stream был закрыт недалеко до конца передачи всего ответа от сервера. Так большой брат заботится о тебе.
Link7 comments|Leave a comment

The programming books - 5 [Nov. 23rd, 2010|03:26 am]
[Tags|]

Последняя порция прочитанной технической литературы (предыдущяя здесь):

Read more... )
Link2 comments|Leave a comment

Ноутбучноклавиатурное [Oct. 31st, 2010|04:19 pm]
Самый сложный параметр выбора ноутбука - это его клавиатура. Тут глупость производителей железа порой совсем ничем не ограничена (вспомнить хотя бы ibm/lenovo с их клавишей Fn). Но иногда встречаются очень неплохие решения. Например, идеальные с моей точки зрения навигационные клавиши должны выглядить примерно так:


Ещё можно посадить PgUp/PgDn в пустующие уголки:


Клавиши home/end постоянно нужны при работе в IDE. Когда они находятся в труднодоступном для слепой печати месте, что справедливо для большинства ноутбуков, написание кода превращается в ад. PgUp/PgDn нужны вообще везде, от браузера до текстового редактора. Расположение этих клавиш рядом с навигационными на порядок увеличивает частоту их использования и заметно облегчает жизнь - проверено на практике.
Link7 comments|Leave a comment

The programming books - 4 [Jul. 30th, 2010|02:25 am]
[Tags|]

Следующая порция недавно прочитанных книг (предыдущие - 1, 2 и 3):

Read more... )
Link6 comments|Leave a comment

navigation
[ viewing | most recent entries ]
[ go | earlier ]