| A chicken, an egg or a null |
[May. 12th, 2012|10:48 pm] |
Тут мужик придумывает крутейшие задачки на знание языка Java. Обязательно наличие хакерского стиля мышления и чувства юмора. |
|
|
| 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 раз в год выставляет четыре оценки всем, с кем он за это время работал. Оцениваются технический уровень, полезность с точки зрения запуска проектов, полезность коллегам вокруг и своему проекту. Еще бы они рассказали, как бороться со сговором между сотрудниками в небольших проектах. |
|
|
| The Origins of Fallout |
[Apr. 22nd, 2012|01:27 pm] |
"Брайан Фарго обратился к толпе и рассказал всем, насколько хорошо идут дела в компании. При этом, однако, он специально упомянул о «10th Anniversary», которая продавалась огромными тиражами, обеспечив до 60% продаж компании в этом квартале. Билл и я стояли и гордились. Брайан продолжил, говоря, что проект «10th Anniversary» был бы невозможен без усилий и тяжелой работы двух человек. Мы с Брайаном ухмыльнулись в ожидании. Брайан продолжил, благодаря двух женщин из отдела маркетинга, которые помогали распространять проект."
Из статьи Скотта Кэмпбелла о его работе в Interplay и о том, как создавался первый fallout (перевод/оригинал) |
|
|
| Неожиданно |
[Apr. 10th, 2012|02:44 am] |
Засилье бело-зеленых галочек в меню баре:
 Тем временем dropbox сразу после запуска Яндекс.Диска прислал какое-то странное письмо о добавлении 500Мб за то, что я якобы заинвайтил самого себя в dropbox. |
|
|
| Visual Studio Achievements |
[Jan. 22nd, 2012|09:48 pm] |
Крутая идея, сомнительная реализация. Чуть ли не половина этих беджиков характеризует обладателя, как мелкого вредителя и почти все не характеризуют его, как прокаченного пользователя студии. Что-то они переборщили со смехохуечками, вместо того, чтобы развернуть тему с малоизвестными фичами, частым использованием шорткатов, рефакторигов и тому подобным. |
|
|
| imdb strikes back |
[Nov. 1st, 2011|01:55 am] |
Забавная инструкция появляется при переходе по ссылке из жж на какую-нибудь страничку imdb.com:
 Видимо, в жж ecть какая-то уязвимость (CSRF?), которая позволяет то ли накручивать рейтинги фильмов, то ли ещё какую-нибудь гадость. Поэтому imdb-шники проверяют реферер и, если юзер пришёл по ссылке из жж, отдают браузеру картинку с указанием кешировать её по самые помидоры. Странно, но если перейти в адресную строку и нажать enter, все современные браузеры достанут картинку из кеша (и заодно забудут про реферер). Тогда уже можно нажать F5 и на imdb.com отправится полноценный GET-запрос без жж-шного реферера. Это какая-то стандартная практика защиты от вредоносных скриптов или imdb-шники так умничают? |
|
|
| OmitStackTraceInFastThrow |
[Jul. 22nd, 2011|02:11 am] |
Есть в JVM такая позорная оптимизация, включенная в серверной версии по умолчанию, называется OmitStackTraceInFastThrow. Если виртуальная машина понимает, что приложение начинает кидать одни и те же исключения в одном и том же месте программы, то с какого-то момента может перестать генерировать полноценное исключение, заменяя его заранее созданным пустым объектом-синглтоном (получение стектрейса сравнительно дорогая операция).
Позорность тут в двух местах. Во-первых, когда открываешь лог и видишь надпись "у вас NullPointerException" без единого намёка в каком месте программы - это "немного" сбивает с толку. При этом нужно либо знать об этой оптимизиции, либо как-то по другому догадаться открыть вчерашний лог, где это исключение ещё было выброшено со стектрейсом. Ну и во-вторых, JVM как-то странно трактует понятие "fast throw". В моем случае было порядка тридцати исключений, каждое кидалось раз в 40 минут в вызываемой по таймеру таске (типичный пример "fast throw"). Оптимизация сработала на втором-третьем исключении. Интересно, сколько при этом было сэкономлено тактов процессора.
Отключается это чудо опцией -XX:-OmitStackTraceInFastThrow |
|
|
| Google APIs explorer |
[Jul. 17th, 2011|01:33 am] |
У гугла есть визуальная документация-песочница для их публичных API. Например, так выглядит получение исходного URL'а от их укорачивалки (вводим любой укороченый URL, жмём execute). По-моему, крутая идея. |
|
|
| Книжки |
[Jun. 13th, 2011|03:52 pm] |
Несколько интересных нетехнических книжек.
"Лабиринт. Мемуары гитлеровского разведчика" (Вальтер Шелленберг)
Очень интересные и хорошо написанные мемуары очень необычного человека. В начале второй мировой войны Шелленберг в возрасте 30 лет возглавил отдел контрразведки в гестапо под руководством Мюллера, позже он стал начальником управления внешней разведки, фактически работая напрямую с Гиммлером. Мемуары писал уже после войны, тяжело болея раком. Умер в Италии в 52-м году.
"Забавная Библия" (Лео Таксиль)
Автор - Лео Таксиль - тоже совсем непростой человек. В конце XIX века ему удалось 12 лет водить за нос папу римского и всю французскую католическую церковь, устраивая антимасонские конгрессы и издавая невероятно бредовые книги о связях масонов с сатаной. При этом официальная церковь вплоть до раскрытия мистификации самим автором буквально носила его на руках.
"Забавная библия" была написана за несколько лет до начала антимасонского розыгрыша. Книга - скурпулёзный разбор ветхого завета, цель которого состоит в высмеивании несостыковок, преувеличений и абсурдных ситуаций, описанных в священном писании. Разбор немного затянут и автор часто передёргивает, но, тем не менее, советую прочесть - довольно познавательно.
"Lost Moon" (Джим Ловелл и Джеффри Клугер)
История 13-ой миссии космической программы "Апполон", в ходе которой американцы должны были третий раз высадиться на Луну. Ловелл как раз был командиром экипажа корабля Апполон-13. Уже на подлёте к Луне на корабле произошёл взрыв, из-за которого астронавты потеряли главный двигатель и значительную часть запасов энергии и кислорода. В книге по рассказам очевидцев восстановлено, что происходило в это время в НАСА, на самом корабле и как астронавтов чудом удалось вернуть домой. |
|
|
| The Clean Coder |
[Jun. 7th, 2011|03:39 am] |

Две недели назад у Роберта Мартина вышла новая книга - "The Clean Coder". Судя по оглавлению она более философско-методологическая, нежели предыдущая (которая мне в своё время показалась вполне годной) - "Clean Code". Обязательно посмотрю в память о былых заслугах. |
|
|
| Courier New vs. Consolas |
[Jun. 2nd, 2011|01:05 am] |
Весь день не покидает вау-эффект. Всегда считал, что все эти споры вокруг шрифтов рождаются от переизбытка свободного времени и недостойны внимания. Но посидев один рабочий день со шрифтом Consolas:

абсолютно точно для себя установил, что уже непозволительно много времени пишу код с вырвиглазной инопланетной хернёй под названием Courier New 14pt:
 |
|
|
| Хозяйке на заметку - HttpURLConnection |
[Apr. 3rd, 2011|04:27 pm] |
Стандартный способ скачать что-то из сети в джаве - воспользоваться классом 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 был закрыт недалеко до конца передачи всего ответа от сервера. Так большой брат заботится о тебе. |
|
|
| Ноутбучноклавиатурное |
[Oct. 31st, 2010|04:19 pm] |
Самый сложный параметр выбора ноутбука - это его клавиатура. Тут глупость производителей железа порой совсем ничем не ограничена (вспомнить хотя бы ibm/lenovo с их клавишей Fn). Но иногда встречаются очень неплохие решения. Например, идеальные с моей точки зрения навигационные клавиши должны выглядить примерно так:
 Ещё можно посадить PgUp/PgDn в пустующие уголки:
 Клавиши home/end постоянно нужны при работе в IDE. Когда они находятся в труднодоступном для слепой печати месте, что справедливо для большинства ноутбуков, написание кода превращается в ад. PgUp/PgDn нужны вообще везде, от браузера до текстового редактора. Расположение этих клавиш рядом с навигационными на порядок увеличивает частоту их использования и заметно облегчает жизнь - проверено на практике. |
|
|