Category: литература

Category was added automatically. Read all entries about "литература".

Гена

Скрипали и Четвертый протокол

Прочитал "Четвертый протокол" Форсайта.
Книжка очень хорошая, хотя, конечно, клюквы много, просто Вести из Зазеркалья какие-то, но как раз именно поэтому ситуация со Скрипалями (а заодно и Боингом KAL-007) становится совершенно ясной и понятной.
А заодно и с Британией вообще.
Если кто такой же тормоз, как и я - рекомендую.
Гена

Суета сует - все суета

https://www.facebook.com/joshua.raynolds/posts/1468436286535292
Письменность майя - это, пожалуй, круто.
Только вот сохранившиеся кодексы - какие-то мутные примитивные астролого-астрономические таблицы; ну вот расшифровал их и что? Зачем? На что он жизнь-то положил? Чтобы все и правда убедились, что индейцы изобрели неудобную письменность и использовали ее крайне идиотским способом?
Вообще эти майя и ацтеки при более-менее внимательном разглядывании вызывают какое-то отторжение.
Строго говоря, все древние цивилизации, кроме греко-римской и отчасти древнееврейской скучны и примитивны; но вот американские еще и неприятны своим людоедством.

Я вот как представлю себе, что вся печатная продукция в богохранимом Отечестве нашем представлена в виде многочисленных репринтов "Гадаем вместе на картах Таро и печени врага" - так сразу думаю, а надо ли ее вообще читать?

Ну и об испанцах - не так уж и зря они все посжигали, получается...

Collapse )
Гена

Какой-то неправильный декаданс

http://hydrobiont.livejournal.com/119262.html
Вот раньше был декаданс как декаданс - как начали декадировать, так сразу Серебряный Век, "Я обещаю вам сады, Где поселитесь вы навеки, Где свежесть утренней звезды, Где спят нешепчущие реки", а нынче - Выходили из избы здоровенные жлобы, Порубили все дубы на гробы какое-то рубе, мыскль, ооп, орм... Ладно б еще кложуре или ерьланг какая, еще можно понять - от умственного безделья умственное рукоделье, так нет.

PS Вот называли басиц ядом для начинающих программистов. Ну вот извели его, ну и?

PPS "Ты уйди, уйди, тоска, душу мне не рань. Если это присказка - значит сказка дрянь".
Гена

Картезианский продукт или маленькие хитрости

Так в одной переводной книжке обозвали декартово произведение. Мне понравилось - прямолинейно так, незамысловато.
Вообще оно - или он - обычно служат маркером звездеца: если в запросе получается оно (он) - то что-то идет не так. Но есть некоторый случай, когда он - или оно - наоборот, помогает правому делу.
Итак, пусть у нас имеется таблица как минимум о двух колонках - скажем, дата/время начала и дата/время окончания явления - и достаточно немаленького размера. Ну, чтобы не влезала в кеш. Требуется - посчитать, сколько явлений являлось в определенную минуту (будем грубы и прямолинейны, и всякие варианты типа "а что делать, если у нас в минуту началось и завершилось сразу несколько событий?" отметем. Как неорганизованные). Вариант решения - пусть начало события будет началом события, увеличивающим счетчик на единицу, а окончание - соответственно, окончанием, уменьшающим на все ту же единицу. Обрежем дату до минуты, просуммируем события:
with ev as(
 select start_date as dt, 1 as evcnt from data
 union all 
 select end_date as dt, -1 as evcnt from data
)
select date_trunc(dt,'date'), sum(evcnt)
  from ev
 group by date_trunc(dt,'date')

Работает? Работает. Офигенно? Офиганно. Смотрим план: table scan data два раза. Ну что же, никуда не денешься. Или денешься?
Конечно, денешься - давайте декартово произведем:
with  t as(
 select 1 as ev
 union all
 select -1 as ev
),
ev as(
 select t.ev, case when t.ev=-1 then d.end_date else d.start_date end as dt
   from data d left outer join t on 1=1
)
select date_trunc(dt,'date'), sum(evcnt)
  from ev
 group by date_trunc(dt,'date')


Как нетрудно видеть, второй случай дает практически в два раза меньше ввода-вывода, чем первый: data читается только один раз, а t мала и прекрасно прокеширована (даже если это реальная таблица). Чтобы гвоздями прибить порядок соединения (если соединять t c data, то получится, по сути, первый вариант), в постгресе приходится применять ненужный outer join.
На самом деле в том случае, если таблица целиком прокеширована, первый вариант быстрее - нет вычисления case и обрабоки соединения. Чем меньшая часть таблицы влезает в кеш - тем больше производительность второго запроса.
Вот такая вот загогулина.
Гена

Java-3

Беблеотеки и окружение.

Впечатление от библиотек
Основная проблема жабы - что она проектировалась идеологически подкованными людьми и изготовлялась людьми по найму. Т.е. проектировали ее согласно руководящей линии, а делали для дяди и побыстрее. В результате какой-нибудь грегорианкалендар гибок до бесформенности, зато keystore.jks и cacerts.jks а)одни на все приложение б)прибиваются гвоздями при старте. Сервлеты и регексы, например, делали люди, которые про них, видимо, старательно прочитали, но а)сами их не использовали и б)сами использовать написанное не собирались. Про такие эакидоны можно рассказывать долго - например, когда отдается xsd для wsdl, отдается не тот, который надо, а тот, который первым попался; пути к .xsd в .jar прошиваюстя целиком, и есть специальный параметр, указывающий, что от пути отрезать, чтобы получить путь в .jar'е к правильному .xsd. А так как у нас 21 век и уникод, то русские имена файлов лучше не надо; нетбинс же старательно пытается уложить все проекты в "Мои документы". Очень изящно получается, особенно если учесть чрезвычайную расплывчатость и невнятность жабьих сообщений об ошибках.

Окружение
Крайне спартанское - делалось исключительно для дяди. Без иде что-то делать невозможно, сами же иде жуткие: тормозные, глючные и с множественными фичами. Вместо make - ant, который замышлялся как нечто лучшее, но, увы, совсем не получилось. Собственно, я свой нетбинс воспринимал исключительно как грандиозный редактор бинарных файлов конфигурации для анта.
Собственно, жабий интерпретатор перетолмачивает в байткод, надо сказать, весьма шустро, и вообще непонятно, зачем нужно было воевать с .jar'ами - какой-нибудь петоний подход выглядит много более разумным. Но...

Аппсервера
Во-первых, все редкие хорошие качества проявляются только в ЕЕ; стало быть, не-ЕЕ жаба бессмысленна - и всякие томкаты вызывают скорее недоумение - зачем это все?
С аппсерверами я имел дело только с глассфишем - и показался мне он удивительными говном. Что стоит хотя бы его привычка убивать собственный конфиг при некоторых условиях; причем править это, как я понимаю, никто особо не собирается.
С ЕЕ тоже не все так гладко, как пишут в книжках - из ЕЕ аннотаций полезны разве что @Stateless, на остальные лучше сразу забить и пользоваться либо InitialContext, либо деплойментдескриптором.


Выводы - если от жабы отодрать все наслоения и написать нормальную библиотеку и нормальное окружение, можно получить что-то вменяемое и работоспособное. Оно, правда, будет довольно серым и неинтересным, но тем не менее. Непонятно, правда, кому и зачем это может потребоваться.
Гена

(no subject)

Попалась книжка "Java: the Good Parts". Ну, название, конечно, радует. Не все так плохо, не надо отчаиваться, все же есть и хорошее! Посмотрел, что же там хорошего.

1. Type System (!)
2. Exceptions
3. Garbage Collection
4. JVM
5. Javadoc
6. Collections (!)
7. RMI (!)
8. Concurrency
9. The Developer Ecology (всякие IDE)

Что-то у меня не сложилось впечатления, что вышеперечисленное в жабе сделано как-то замечательно. Кое-что на стандартном уровне (типа исключений и concurrency), что-то более хреново, типа коллекций и системы типов, что-то вообще вызывает вопросы (жаба без IDE - это очень неудобно, беда только в том, что сами по себе IDE неудобны. Ну да, а кто сказал, что будет легко?), но в общем и целом как-то неубедительно.

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

И если это - Good Parts, то какие тогда Bad Parts?
Гена

(no subject)

http://community.livejournal.com/ru_java/913026.html

Во-первых, непонятно, что не нравится человеку - для жабы 512М это, мягко говоря, не объем. Это так, размяться, плечи расправить, по сторонам оглянуться.
Во-вторых, в доисторической книжке по mod_perl ясно и доходчиво показывали, как хранить сессии в куках с хешом - но это ж жаба, они таких книжек не читают. В жабе оно, конечно, не так просто реализуется (а что там вообще просто реализуется?), но тем не менее.