Слова и Вещи
Оказывается, в метро теперь вместо угнетающего “Выхода нет” клеят “Выход рядом”.

Johnny Cash - Hurt (HQ - High Quality) (via metkere)

Sam Kashner on The Death of a President | vanityfair.com

Но госшкола лжет. Всегда лжет, потому что построена на страхе и насилии. Лжет, например, что этот мальчик в 7-ом классе. Точно так же она лжет миллионам родителей, что их дети в 8-ом, 10-ом или 11-ом классах. Но это то же, что врач, скрывающий наличие серьезной болезни и выписывающий справку о полном выздоровлении.

Павел Кашин, “Перед тем, чтобы расстаться”

Имел счастие читать государыне императрице, у камина, стоя на коленях перед ея императорским величеством; и по окончании онаго чтения удостоился получить из собственных ея императорского величества рук всемилостивейшую оплеушину.

Про джаву

Сейчас я вам расскажу как строят джаваисты.

Изначально закладывается такая архитектура, в которой много слоев и абстракций. В теории одна маленькая финтифлюшка может работать на отдельном кластере, который спрятан под горой в бронерованном бункере в Швейцарии, а другая загогулина может вертеться на чьем-то мобильном телефоне. Но что самое крутое, программисту который будет дергать за шнурок А на загогулине, который через 3 брокера и 5 проксей подключен к звонку Б на финтифлюшке, не надо ни о чем беспокоиться, потому что все прозрачно и абстрактно!

Желательно, чтобы все было в XML. Настройки всего, даже настройки того, как читаются другие настройки. Настройки желательно делать иерархическими, с переопределением всего и вся. Например, если у вас есть файл настроек с именем компьютера, то он должен гарузиться первым, потом надо обязательно проверить нет ли чего в реестре, а потом позвонить на специальный сервер конфигурации и ещё немножко настроек взять оттуда. Ни в коем случае при отладке нельзя давать понять откуда какой-то конкретный параметр приплыл!

Если какие-то настройки не в XML, то надо обязательно их туда загнать. Можно даже иногда в XML писать немножко кода, который потом будет компилироваться на ходу.

Нельзя никакие функции звать напрямую, обязательно нужны сервис брокеры. Когда в цепочке слишком много брокеров, можно для разнообразия поставить прокси.

Dependency Injection обязательно надо делать как можно запутанее, чтобы новички потом под собой мочили стулья от неожиданности, когда у них код, удаляющий базу, вдруг откуда-то чудесно вызвался.

Реализовывая свои фичи, желательно ломать поведение стандартных библиотечных, на замену которым это пишется. Например, вываливать эксцепшн на три экрана, когда пользователь нажал кнопку “назад” в браузере. А еще лучше перепутать сессии и дать этому пользователю данные другого собрата по несчастью.

Вот например взялся джаваист складывать два числа, скажем 2 + 2.

Надо несколько уровней абстракции. Один - на цифры. Вдруг сегодня арабские, а завтра римские надо будет или вообще клинопись?
Второй уровень - на тип операции. Это сегодня мы складываем, а вдруг завтра надо будет лексический парсинг Клингона делать, пусть будет, про запас.
Третий - на тип пространства. Это сейчас оно линейное, а завтра ну как надо будет мнимые числа складывать? Записываем.

Это все конечно должно через брокеры друг с другом разговаривать, быть потокобезопасным и масштабируемым, чтобы при желании эту операцию можно было запустить на распределенном кластере из маков, пи-си и приставок сони плейстешн.

Об ошибках тоже не надо забывать. Надо чтобы при ошибке приложение вылетало с малопонятным сообщением типа “ERR402A77: Could not parse node ‘XlmSignal’”, и чтобы ошибку было хрен отловить отладчиком, т.к. она возникла в сгенерированном автоматически коде (см выше XML).

Примерно вот так.

Источник