I’ve got a broken heart and a dirty soul.
And you know what?
I don’t care at all.
When I often hear someone needs a help,
I just want to see how he goes to hell.
I deny respect, who are you to rate
My ideal trust in myself and fate?
I can fuck your wife, I can kill your cat.
It’s fortune for you that we never met.
Chorus
Meanwhile let me say again.
I’m fucking, drinking, smoking man.
I’m mature, yes, but I’m not too old.
I can say that I love this life a lot.
I can drink whole day, that’s how I exist
I’m dick in ass as your clearly see.
But you’re not a gay. And it’s sounds so sad.
I remember how I fucked your dad.
It was lovely night, he was riding bike.
After night he clicked in Facebook like.
Don’t be angry, bud, everything’s okay.
There is nothing wrong to be a gay.
Наверняка наступит такой момент. И я чувствую, что он уже близко. Наверное потому, что я сильно заебан работой, предстоящей сессией, общей усталостью. Я прихожу домой и пытаюсь сделать что-либо для инста, но нет – меня надо обзывать, строить недовольные рожи и считать меня тунеядцем и наркоманом. Я не помню, когда последний раз я целовался с женой в засос. Я занимался с ней любовью больше 60 дней назад. А так у нас лишь секс в гондонах, без чувств и поцелуев, и раз в неделю. Я пытаюсь ее поцеловать – а она не хочет. Все направлено лишь на удовлетворение необходимой физической потребности. Для меня порно опять приоритетнее реального общения с женой, ибо это быстро и просто, никто тебя не обзывает мудаком и не предъявляет тебе претензии, что ты ничего не делаешь.
Я коплю деньги на квартиру. И я 100% уверен, что квартиру я куплю себе и сыну, а не ей. И там я разверну свою фантазию на полную катушку, ведь в квартире с тещей (к тому же не моей) я ограничен в ответах…
Не осталось ничего святого, кроме сына. Хотя святость в душе атеиста весьма сомнительное понятие, но думаю, что вы поняли. Почему-то у меня нет чувства и желания возвращаться домой с работы, какое появилось одного моего товарища, ибо ненавидящая меня жена перевешивает еще ничего не понимающего сына. И я боюсь, что он вырастет таким же, как она. Это уже начинает проглядываться, когда у него возникают внезапные истерики и его тяжело успокоить.
И плана Б нет. Есть только возможность послать всех нахуй, почти что как я когда-то рекомендовал старой карге засунуть лабораторные работы в жопу. Ведь я могу это сделать, и никаких материальных или иных последствий я не понесу, ибо имущества, нажитого в нашем непродолжительном браке у нас нет. И не будет.
Вообще весело. Я всегда думал, что анекдоты про ебанутых жен это такие шутки, и они не про меня. А на самом деле вот оно как, Михалыч. Все пропало, шеф.
Я не знаю, почему этот пост будет отнесен к категории “Сисадминство”, но категории “программирование” у меня тут нет. Мне просто лень открыть страницу и создать ее, распространяя хаос на этот блог. Давайте держать все организованным, хоть и не там, где надо.
Итак. Я реализую один очень интересный™ проект, и там встала проблема – скрипт загрузчика капчи надо грузить асинхронно через XMLHttpRequest, а в этом скрипте говнокод. А именно – document.write, чтобы размещали его просто в странице. Этот скрипт также вызывает уже саму капчу где, что бы вы думали? Тоже document.write!
Ну я конечно попробовал, но вот хуй там. Если раньше document.write из асинхронного запроса просто ломал DOM, то теперь нам вежливо намекают, что ты мудак:
Failed to execute ‘write’ on ‘Document’: It isn’t possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened
Такие вот дела.
Что же делать? Ну первая мысль была о том, чтобы попробовать загрузить src скрипта асинхронно, поменять код и затем выполнить eval. Но нет, так нельзя, все бьется о Same-Origin-Policy.
Что же делать? А давайте вспомним величайшие возможности javascript по изменению всего и вся и переназначем функцию document.write.
Просто берем и пишем в какой-либо div-плейсхолдер. Потом из этого дива берем src (ведь тупо вставкой кода в html асинхронно-загруженный html-код скрипта не выполнится, вы же помните это), создаем новый dom-объект script, и спокойно вставляем его в шапку или куда еще.
Важно знать, что вставлять могут не только скрипты, но еще и обычный html, по-этому важно делать проверки, я лично прегмачнул.
Итого, алгоритм следующий:
Переопределить функцию document.write, чтобы она писала в какой-то скрытый div.
Запросить target-страницу с <script src=blabla> с document.write.
Вставить полученный <script src=blabla> в скрытый div.
Создать пустой DOM-элемент script, установить ему src из div->script->src
Добавить его в шапку или на страницу, он исполнится, вызывая переопреледенную document.write.
Проверить, что там пришло в измененную функцию, и в зависимости от данных делать с ними что-либо.
You can’t continue this show,
Because your watchers are bored.
You can keep on to smile
But they know it’s a lie.
And everybody here thinks
That you lost all your mind.
But of course you think that’s alright.
Please stop dancing, it’s end.
Try to look like a man.
To be honest, they watched enough.
But you are asking to sit.
To continue this shit.
I already prepared a gun.
When fire licks up your skin
And bullets crash all your bones,
You are starting to win
A prize that was unknown.
To reveal it all, you are hero at end.
You were so stupid man, that we can not forget.
And while memory flows
Through brand new, younger heads,
They remembering you
And removing their hats.
But not after you, and in honor of me.
Because I was right as you see.
Вуаля! Этот уютный бложик обзавелся https://. Теперь его страницы можно смотреть, не опасаясь рекламы в московском метро и слежки спецслужб. Вместе с тем виданный cloudflare адрес находится в блэк-литсе роспидорнадзора, так что попасть на него вам стало еще сложнее.
Пиво помогает в системном администрировании. Это общеизвестный факт. Тем не менее, не пья (пив?) пиво в течение целой недели нельзя заниматься системным администированием. Это тоже факт.
Факт выливается в то, что я лоханулся 3 раза:
1) Не сделал бэкап пре-продакшен системы.
2) Имея дело в последнее время в основном с SSD, где если указано 128гб=128гб, внезапно обнаружил на сервере HDD и совершенно забыл, что там МБ=1000БАЙТ, что вопиюще несправидливо и является самым главным разводом в мире. В итоге, рассчитав неправильно размер VM, она при расширении с Thin в Thick заняла все место на ESXi хосте и отказалась запускаться.
Убив развертывание (что само по себе является весьма рискованной операцией) я мигрировал VM на dev-сервер (слава б-гу она мигрировалась без проблем), сделал архивную копию на уровне приложений, создал новую VMку на продакшене, все сконфирурировал и восстановил бэкап.
3) Неправильно выбрал сервер. VMWare VSAN не поддерживается хардварно, так что хуй объединишь физические датасторы в что-либо виртуальное, в итоге пришлось пилить эпичный iSCSI костыль.
Итак, встречайте, iSCSI костыль!
Эпичнейшее решение, позволит вам не покупать VSAN, его лицензии, пожертвовав часть FT. Суть в том, что я создал мини-VM, к которым подмонтированы в режиме RAW 2ые жесткие диски. VM работают в роли iSCSI прокси, позволяя организовать VMWare Heartbeat Datastore, доступное на всех серверах. ХЗ, как такой костыль будет работать в продакшене, но скоро же тесты! WRYY!
Так вот, в итоге – Heartbeat Policy соблюдены, VMки и их Secondary мигрированы на соответсвтующие Datastore, все вроде ок. Fault Tolerance тест проходит успешно. Все работает! Эпичный костыль, занявший 3 дня и угробивший как минимум 2 литра пива.