Мысли вслух
boom
[info]daekrist
Надо бы поставить с нуля Lion и расписать инструкцию по поднятию окружения для разработки на ruby (on rails) в Mac OS X.
Github, Sublime Text 2, Pow, Xcode, brew, RVM через JewelryBox, CodeRunner, mongoDB, memcache, исправление кривого ab - это вот всё.
Да и вообще - пора заканчивать страдать хернёй и что-нибудь дописать до состояния релиза.
У меня ещё Objective C с Cocoa неёбан.

“It’s only a curse if you don’t like it”
boom
[info]daekrist

– Просто посмотри вокруг.
– А если это всё – иллюзия и обман? Очередная насмешка судьбы, которых уже столько было?
– Безусловно, это допустимый вариант. В теории, – Хранитель улыбнулся уголками безупречных голубых глаз и сделал ещё одну затяжку вечной сигареты, – Для кого-нибудь другого.

Он замолчал на некоторое время, протягивая искру пламени сквозь табак и продолжая едва заметно улыбаться.
Я так и не научился его ненавидеть, он оказался прав. Хранитель незримо сопровождал меня через годы моего персонального вялотекущего ада, подпитывая странное иррациональное чувство под названием “вера”. Он сам был метафорой веры – несуществующий и отчётливо осязаемый всеми чувствами одновременно. Временами это сводило меня с ума, временами только это не давало мне впасть в отчаяние.

– Я проживу три тысячи лет? – повторил я свой давний вопрос, не надеясь услышать ответ.
– А сколько ты уже живёшь, по-твоему? – внезапно произнес он – И кто такой по-твоему я?

Он почти смеялся. Меня захлестнули эмоции, но я продолжал слушать.

– Ты всегда обожал такие игры. Сведение линий фантазий и реальности, взлёты, падения, разочарования, победы. Твоё непостоянство, хаос и рационализм, эмоции и логика, игры в судьбу и её отрицание. Ты спрашиваешь меня, проживешь ли ты три тысячи лет, словно это имеет какое-то значение. Тебе просто нравится эта цифра. Драматический спецэффект театральной постановки.

Я на пару секунд закрыл глаза и с усилием оторвал взгляд от серого бетона под ногами.

– Значит, делать всё то же, что обычно? Плыть по реке, которая несёт меня в неизвестность? Просто веря в то, что сценарий достаточно красив, и в барабане револьвера в решающий момент опять не окажется патрона, что жизнь не может не дать шанса? Без каких-либо на то оснований?

Хранитель не выдержал и рассмеялся молодым весёлым смехом.

– Нет, ты неисправим! Мне давно надо было привыкнуть, но ты каждый раз удивляешь этим великолепным сочетанием панического страха перед масштабами своей жизни с изощрённым упорством в её создании. “Не дать шанса”? Да твоя жизнь просто переполнена этими шансами. Там, где другие бьются о стены трубы, стремительно несущей их через всю жизнь от рождения к смерти, ты плывешь по водному аттракциону в духе Диснейленда на просторах Амазонки, ненавидишь течение реки и боишься, что сценарист был в недостаточно хорошем настроении для приличного сюжета!

Он наклонился и тщательно затушил сигарету. Я смотрел на него, в очередной раз обдумывая слова. Хранитель не был подвержен времени и обстоятельствам, будучи проекцией другой реальности, воплощением четвёртой стены.

Намёк с той стороны самому себе.

– Расскажи мне, как это будет.

Хранитель прищурил глаза и посмотрел вдаль поверх крыш.

– Это будет скоро.

Метки:

(без темы)
boom
[info]daekrist
"There are powers inside of you, which, if you could discover and use,
would make of you everything you ever dreamed or imagined you could become."
- Orison Swett Marden

Про национализм
boom
[info]daekrist

Пообщавшись в очередной раз с людьми, которые мигрировали из Казахстана в 90-х, я в очередной раз подумал о том, что настоящими националистами могут в полной мере быть только люди, подобные им (нам). Когда на улицах твоего города работают чернорабочие азиаты или когда кавказцы вертят крупными деньгами - это всё ещё недостаточный повод. А вот когда вчерашние чучмеки-папуасы выдворяют тебя из якобы их страны, забирают твое рабочее место и жилье за бесценок только потому, что они - хозяева-чучмеки (не построившие ничего в своей так называемой стране), а ты - бесправный чужак урус - вот тут уже появляется мотив, желание и возможность быть националистом. И это не проходит до конца жизни.


(без темы)
boom
[info]daekrist
Почему Россия - не Греция (можете, кстати, подставить название любой другой страны)?
Потому что внешний долг РФ равен её объему ЗВР.
"Не умеешь летать - нефиг выпендриваться".

(без темы)
boom
[info]daekrist
Ну чего, всем спасибо, все свободны.

Проблема интернета в России заключается в том, что основная масса его активных, пишущих пользователей живет в Москве. При том, что население Москвы составляет менее 10% населения России.
Именно этот факт создает какую-то пиздецово искаженную реальность в мозгах пользователей интернета.

(без темы)
boom
[info]daekrist
Поразжигаю тут, пока вы там.


(без темы)
boom
[info]daekrist
Выразил гражданскую позицию - делегировал свое право голоса на выборах остальным гражданам РФ, кто пойдет и проголосует.
Ну, если урну для голосования домой принесут, проголосую за кого-нибудь. Наверное.

(без темы)
boom
[info]daekrist
Вот так живешь в своих виртуальных интернетах, играешь в виртуальные игры, знакомишься с какими-то людьми, кому-то из них симпатизируешь, общаешься на отвлеченные темы, в том или ином виде сохраняешь эти связи в течение длительного времени.
Проходит десяток лет, страна взрывообразно политизируется, и ты как-то внезапно приходишь к выводу, что почти все эти люди в общем и целом разделяют твои взгляды на ситуацию, и это, в общем-то, одна и та же сторона политических баррикад.
И это непопулярная, немодная в современных интернетах точка зрения.
Вот и думай - то ли ты выбирал всех этих людей по способности критически мыслить, то ли вы изначально были на одной волне, а всё остальное - следствие.

(без темы)
boom
[info]daekrist
В английском варианте статьи википедии про "ЮКОС" отсутствует один маленький, но очень важный абзац:

"В начале 2000-х годов «ЮКОС» активно выступал против проводившейся в то время в России реформы налогообложения нефтяной отрасли, заключавшейся в отмене плохо администрируемых налогов (платы за пользование недрами, налога на воспроизводство минерально-сырьевой базы и акцизов на сырую нефть), а также во введении налога на добычу полезных ископаемых и в фиксации экспортных пошлины на нефть как постоянно действующего налогового института."

Мелочь, которая "многое объясняет".

А так, конечно, Путин он ни при чём, это просто цена на нефть в мире выросла ведь!

(без темы)
boom
[info]daekrist
Для меня уже длительное время остаётся непонятной модель, когда человек мигрирует в другую страну вроде как на ПМЖ, гражданство получает, детей учит в местных школах, все дела, но при этом усиленно продолжает цепляться за свою национальную идентичность - все эти вот этнические общины, общение в основном с такими же мигрантами на родном языке и прочее блабла.
Если бы я решил всерьёз сменить гражданство и страну проживания, я бы потратил тонну усилий на максимально быструю и насколько это возможно глубокую ассимиляцию - изучал бы культуру, литературу, язык, географию и прочие местные штуки.
И не лез бы читать никакие новости про Россию, кроме того, что дают местные СМИ. Потому что, ну, реально, какой смысл всё это затевать в противном случае?
Особое непонимание вызывают люди, которые в подобной ситуации ещё и пытаются лезть в политическую жизнь страны, откуда они свалили. Ну, всякие ебанутые журналисты и сотрудники разведок - они понятно, зачем лезут, работа такая. Но эти-то зачем?

(без темы)
boom
[info]daekrist
Дочитал "Криптономикон". Половину книги, если не больше, пролистывал - раздражала манера автора переключаться между относительно динамичной линией Второй мировой и вялотекущим развитием событий в девяностых.
Шифры, программы на Perl и прочий TCP/IP это, конечно, здорово, но самое главное, что получилось в сухом остатке для меня лично - я проникся точкой зрения американцев и британцев на Вторую мировую в течение самой войны. Пока где-то далеко какие-то легендарно неубиваемые дикие русские ебашились в своей тундре на Восточном фронте, для них война шла преимущественно в Атлантике и Юго-Восточной Азии. Подводные лодки немцев, конвои, транспорты, авиация, антисанитария тропиков, ебанутые до полного озверения японцы, это вот всё.
Надо будет чуть позже перечитать, не пропуская то, что пролистывал в первую итерацию.

(без темы)
boom
[info]daekrist
Побуду оппозиционером, схожу против модного тренда.

«Демографическую катастрофу» в России выдумали американские журналисты ("The Kremlin Stooge", Канада).

(без темы)
boom
[info]daekrist
Жил себе, никого не трогал, хотел к Новому Году айфон, а тут бац - взрыв мозга, отвал башки, увидел Canada Goose Chateau Parka (по стоимости как айфон) и ЗАХОТЕЛ.
Ну и как теперь жить?

(без темы)
boom
[info]daekrist
С неделю назад отключил мышку от макбука, работаю на тачпаде. Надо сказать, что с мультитач жестами это оказалось вполне удобно. На винде бы уже давно повесился.

Ну чего, вроде все проблемы разрулил
boom
[info]daekrist


Как-то так.

Goliath: HAML vs ERB
boom
[info]daekrist
Наглядное объяснение, почему HAML сосёт, а ERB рулит:

ERB:
Server Software:        Goliath
Server Hostname:        localhost
Server Port:            9000

Document Path:          /erb_me
Document Length:        462 bytes

Concurrency Level:      100
Time taken for tests:   0.197 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      55600 bytes
HTML transferred:       46200 bytes
Requests per second:    508.40 [#/sec] (mean)
Time per request:       196.694 [ms] (mean)
Time per request:       1.967 [ms] (mean, across all concurrent requests)
Transfer rate:          276.05 [Kbytes/sec] received


HAML:
Server Software:        Goliath
Server Hostname:        localhost
Server Port:            9000

Document Path:          /joke
Document Length:        1925 bytes

Concurrency Level:      100
Time taken for tests:   1.084 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      202000 bytes
HTML transferred:       192500 bytes
Requests per second:    92.24 [#/sec] (mean)
Time per request:       1084.187 [ms] (mean)
Time per request:       10.842 [ms] (mean, across all concurrent requests)
Transfer rate:          181.95 [Kbytes/sec] received


Разница в 5 с копейками раз. Такие дела, мальчики и девочки.
Метки: ,

Goliath
boom
[info]daekrist
Я не понял, где обещанные 3000 запросов в секунду?
Сраный хеллоуворлд 4 мс отрабатывает. И потом эти люди спрашивают у меня, за что я не люблю Rack приложения.

Concurrency Level:      1
Time taken for tests:   0.373 seconds
Complete requests:      100
Failed requests:        0
Write errors:           0
Total transferred:      18700 bytes
HTML transferred:       1300 bytes
Requests per second:    267.94 [#/sec] (mean)
Time per request:       3.732 [ms] (mean)
Time per request:       3.732 [ms] (mean, across all concurrent requests)
Transfer rate:          48.93 [Kbytes/sec] received


UPD: А, ну впрочем, если включить production mode и отключить сборщик мусора, прыгает до 1300. Ладно, годный Голиаф, будем использовать.
Метки: ,

(без темы)
boom
[info]daekrist
Новый Macbook Pro 17" на Sandy Bridge можно купить за 66к рублей в Штатах.
*закусывает губу, внимательно смотрит куда-то в сторону Дениса Мальцева*

Linode + Ubuntu 11.04
boom
[info]daekrist
Установка RoR стека с RVM и прочими радостями на Линоде, как выяснилось, слегка отличается от того, что я написал в инструкции. Видимо, всё дело в том, что изначально дали только рут-юзера, и я поставил ряд вещей прямо из него, до создания локального.

Вопрос дня: СПИД
boom
[info]daekrist

Как вы думаете, при вашей жизни изобретут лекарство от СПИДа?

Читать ответы (882)


Я думаю, мне пофиг.
Метки:

"Быдло в камментах"
boom
[info]daekrist
https://plus.google.com/u/0/112540563278450370016/posts/MJrJ1Dxd47S

(без темы)
boom
[info]daekrist
Отлично, я дома, у меня опять есть пара месяцев времени на всякое.
Пора пакарять.

Ну прекрасно
boom
[info]daekrist
Вес 76 кг.
Надо что-то срочно делать с ебаной инфекцией, которую, похоже, до сих пор не могу вывести после Тайланда.
Такими темпами через полгода я буду выглядеть, как жертва Освенцима.

Gentoo/Nginx
boom
[info]daekrist
Не осилил поставить nginx+passenger стандартным методом через .ebuild, в основном потому, что из ебилда его (passenger) несколько месяцев назад вынесли.
Пришлось ставить руками из исходников в режиме номер два.
Попутно допилил напильником модули tcp_proxy (не компилировался в стандарте C99 из-за проблемы с union) и gridfs (падал на ворнингах, пришлось менять флаги).
Интересно, есть хоть один дистрибутив этих, прости господи, юниксов, где всё это можно ставить нормальным пакетом, а не хер знает как из исходников с допиливанием конфигов и ещё бог знает чего?
Метки: , ,

Ubuntu vs Gentoo
boom
[info]daekrist
Похоже, что на Linode буду ставить Gentoo.
Emerge позволяет установить последний nginx прямо с флагом passenger и еще кучей других, которые мне нужны. Убунта, типа, сосёт.

Внезапно Devise
boom
[info]daekrist
Оказалось, что Devise использовать на порядок проще, чем я предполагал.
Ну, то есть вообще нихуя писать не надо. Никаких заморочек с регистрацией, куками, сессиями и ещё черти чем.
Правда, мне уже страшно смотреть на то, с какой скоростью рендерится страница в development mode.
"They lied, Rails 3.1 is actually slower". Ясное дело, если ничего руками не писать - оно всегда так.
Метки: ,

Scaffolding в Ruby on Rails 3.1
boom
[info]daekrist
Сегодня с нуля генерировал скелет нового сайта в Rails 3.1 и заметил пару-тройку забавных вещей.
В методах контроллеров по умолчанию стоят обработчики html и json запросов, т.е. никаких .js и .xml, которые были стандартными в 3.0:
    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @users }
    end

Для каждой сущности scaffold генерирует собственный scss шаблон вот такого вида:
// Place all the styles related to the Users controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

body.users {
  // Place scoped styles here
}


... и пустой .coffee файл в каталоге javascripts.

Полагаю, что модель работы с js в этих рельсах кардинально изменится, и вместо шаблонной генерации js.erb views всех начнут приучать к более традиционной схеме - получение блока данных в json обертке из контроллера (минимизация нагрузки на сервер) и визуализация через DOM уже в клиентском браузере.

В заключение хотелось бы спросить: Сколько можно пиздить газ? Где доки и книжки, бля?!
Метки: ,

When you look deep into the abyss, the abyss also looks into you.
boom
[info]daekrist
Я временами такой умный, что аж самому приятнопротивно.

Уровни кэша
boom
[info]daekrist
Попытался тут посчитать количество имеющихся и потенциальных уровней кэширования в блоге. Вышло как-то уж сильно много.

На самом нижнем уровне кэшируются множественные вызовы слоупокских хелперов link_to, превращающие время генерации страницы со множеством ссылок в унылый ледяной ад. Я генерю однотипную ссылку ровно один раз и помещаю результат в глобально доступную строку. При последующих выводах я просто заменяю в html теге идентификаторы.

Вторым пунктом программы идет преобразование результатов вызовов Mongoid в массив в памяти. Этим исключаются множественные обращения к базе (до сих пор неясно откуда взявшиеся при одном запросе).

Далее у нас идет потенциальная возможность кэшировать результаты запросов в виде JSON в кэше Memcached. Этого пока нет, но вполне реально реализовать.

Дальше начинается фрагментарное кэширование всего и вся средствами Rails. В качестве хранилища опять же Memcached.

Дальше (:]) начинается кэширование отрендеренных в приложении страниц, опять кладём в memcached прямо из приложения. В качестве ключа устаналиваем часть URL за вычетом имени сервера и домена, но включая параметры запросов. Индекс кэша разновидностей главной страницы храним в отдельном объекте memcached, это делает задачу принудительной выборочной или сплошной инвалидации главной страницы (включая поиск и листалку) тривиальной.

Далее мы переходим на предпоследний уровень и настраиваем nginx по следующей схеме: фронтэнд nginx -> проверка наличия страницы в кэше memcached (ключ = url, к rails не лезем) -> проверка наличия страницы или файла в файловом кэше nginx -> виртуальный сервер, где крутится passenger -> фрагментарный кэш -> движок блога.

Вся эта конструкция работает на удивление устойчиво, кэширует всё, что надо, не кэширует всё, чего не надо. При инвалидации кэша верхнего уровня регенерирует новуюю страницу за счет фрагментарного кэширования очень быстро, при инвалидированном фрагментарном кэше включается последняя линия обороны - оптимизированный движок, самая быстрая реализация гема memcached в руби мире, расширения на C (типографика) и те самые закэшированные хелперы.

Дайте мне пару месяцев, чтобы разобраться с node.js и десяток серверов для тренировки. Вы, натурально, охуеете, пацаны.
Метки: , ,