Category Archives: Сисадминство

RoR за 3600 секунд

Что вот делать, когда жизнь тебя дичайше бьет по щеке, ты возвращаешь взгляд, смотришь как-то презрительно, зло, и, вместе с тем, с одобрением.

Я, возможно, давно и бессознательно ждал такого эффективного пинка под зад, и вот оно – время пришло. Всего лишь за пару часов мне удалось изучить все необходимо в Ruby on Rails, написать новую систему автоматизации производства, получить неиллюзорный профит от прекрасного чувства того, что вот оно – мои мозги наконец-то используются на 100%. А то, в последнее время, вместо того, чтобы думать – я в основном действую. Это уже привело к психозу лучшего друга и сказалось на картине мира.

Сейчас же, попутно просрав некоторое количество денег из-за злости и спешки, я тормознул и взялся за него – за ум. И, знаете, смотрю я сейчас на работающую систему и чувствую – вот оно, будущее.

Уже не дети. Еще остались навыки.

Странно. Резкое взросление почему-то приходит не тогда, когда ты женился, родил сына, развелся, или там вдруг за что-то стал торчать бывшей жене 1.9М. Оно пришло сейчас, ибо я столкнулся действительно с тем, что раньше меня вообще никак не волновало. И это целиком взрослая проблема. Жаль, что это именно проблема, если бы у меня было счастье, которое могут чувствовать только, и только исключительно взрослые, то…. а ну его, я чувствовал и такое, но почему-то тогда не почувствовал себя взрослым. В общем вот что, вышел я, внезапно, из детства, и впал я, внезапно, в условную старость.

Помимо этого, проверил свои навыки по взлому, и сделал себе 0day уязвимость в Invision Power Board, которую я оставлю при себе… допишу позже


Спустя практически 18 часов: Продолжая упиваться собственной охуенностью и хакерством, я поехал на выставку фоток тов.Отца тов.Славика, затем употребить очередную порцию креветок, а потом туда даже подъехала Танечка, и все.. мне опять не о чем писать в блог, ибо все настолько хорошо, что у меня просто нет слов.

Хотя есть один ньюанс, ради которого и затевался сей пост. Но who cares, если можно решать такие проблемы вместе, и даже получать от этого какое-то странное удовольствие, которое я, правда, еще не испытывал?

прощай, .tel

Так как с .tel хостингом творится какая-то херота, надо все переносить вручную, платить снова, восстанавливать пароли, кому оно надо? Встречайте, chto.su/vcard – вот моя свежайшая визитка, бесплатно и без СМС. (и она, кстати, заменила абсолютно никому ненужную страницу “кто?”)

Пост с длинным названием или сколько стоит опыт

Полное название такое: Как проебать чужие ~$500, понять, что ты – некомпетентное хуйло, унизиться, болит голова, злость, ночь, все также как и есть, блядь, ярость.

Короче во франции у нас хостятся сервера, милый такой ДЦ из ESX-хостов, но есть один ньюанс – руки не доходили настроить FT или HA, за что и поплатились. Вылетел у французов свитч, а они парни такие не особо расторопные, ну и попинали хуи в течение 5 дней, и поставили его только сегодня. Все опять работает, но встал один вопрос – что с этим делать?

В середине дня, еще до того, как все это говно остановило вентилятор, я психанул и попросил французов нахуй отрубить все, взял 2 сервака на OVH и еще туда немного NASа, но не взлетело. Потратив 3 часа… нет, 5 часов на настройку всего и вся я понял, что не взлетает – слишком медленно. Надо таки iSCSI, да еще и SSDшный желательно. Но такого у OVH нет, зато есть IaaS, но от $780/мес и там все такое хилое, что текущая цена аренды у лягушатников кажется просто даром богов.

Затем пришлось французов попросить отменить отрубление всего в конце месяца, кроме одного сервака, который и так должен был пойти в расход. Взял я значит для HA самый дешевый сервачек, однако нет, к нему iSCSI не подключишь, ибо тупо нет Private Network. Блядь. 60 euro setup fee в трубу, 9 евро до конца месяца также туда же.

Пишу тикет в саппорт, мол ребят, отаке хуита, взял сервак по ошибке, давайте мы махнемся, вы мне опять отмените отмену того сервака, который я отменял уже несколько раз, а вот этот сегодняшний можете вообще забрать, а в замен вы мне iSCSI подгоните?

Хуй там.

Разрешили лишь не оплачивать свежевзятый сервак без Private Network на следующий месяц, и отключат его по окончанию текущего.

Итак, сколько же стоит опыт?

Вот именно столько стоят дебильные ошибки и дебильные действия предпринятые в состоянии аффекта, усталым и злым.

Вывод – easy, bro.

 

Все опять по плану

Чего-то я практически не получил фидбэка от моего окружения по поводу сочинения про волосы в жопе, видимо все подумали что я окончательно ебанулся, и я вдруг стал никому неинтересен, кроме санитаров. Ну да ладно, acceptable.

BTW, начало недели встретило меня скрученной вручную витухой, убитыми двумя часами и, внезапно, хорошей в целом погодой. А до начала недели я отлично пообщался с Ваваном, который осовоил Youtube. Вот так вот, в неполные 2 года уже ориентируется по трубе, в то время как папа научился делать это только лет в 14-15. Прогресс налицо.

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

Продолжил заниматься многострадальным дипломом. Вырвался из закрытой сети предприятия через HTTP(S) внутри SOCKS5 по TCP/IP через DNS. Вот такие дела. Даже получил скорость в 15 мегабит по “несуществующему” каналу. Achievement Unlocked!

Скоро же предзащита. Покажу свои ужасные слайды с кривыми стрелками, которые выравняю к сдаче.

GreedyTorrent Universal

Тыжпрограммист! Просел у меня рейтинг на одном из трекеров. Просел жестко, да так, что меня начали анально ограничивать. Не люблю, когда так делают в отношении меня любимого. Раньше я использовал GreedyTorrent чтобы поднять себе рейтинг и держать его в разумных пределах. Но, он под Венду, и обновлялся последний раз аж в 2011. А сегодня, напомню, 2016.

Искал я, искал по гуглу такой же софт под OS X, но не нашел. Он либо платный, либо анально-платформенный. (это когда для того, чтобы запустить, поставьте себе, сука, mono или java). А вот just works out-of-the-box – нет такого.

Что ж. Раз такого софта нет, надо написать самому. Встречайте:

GreedyTorrent Universal

Да, прога со схожим функционалом, написаная для себя, в вечном духе Open-Source, кросс-платформенная и, в целом, няша. Вторая программа в жизни, которую я написал лично для себя, а не для кого-то другого.

Используется также – в любом торрент-клиенте надо настроить HTTP прокси на указанный в программе – и все, рейтинг больше страдать не будет. Приветствую Pull/Feature реквесты на GitHub.

Async document.write – костыль, или меняем код on-the-fly

Я не знаю, почему этот пост будет отнесен к категории “Сисадминство”, но категории “программирование” у меня тут нет. Мне просто лень открыть страницу и создать ее, распространяя хаос на этот блог. Давайте держать все организованным, хоть и не там, где надо.

Итак. Я реализую один очень интересный™ проект, и там встала проблема – скрипт загрузчика капчи надо грузить асинхронно через 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.

Наверное на этом моменте я ***нулся.

document.write = function (text) {
    if (text.match(/_puzzle/)) {

        document.querySelector('#_scriptloader').innerHTML = (text);
        var script = document.createElement("script");

        script.type = "text/javascript";
        script.src = (document.querySelector("#_scriptloader script").src);
        document.querySelector('#_captcha').appendChild(script);
    } else {
        document.querySelector('#_captcha').innerHTML = (text)
    }
}

Просто берем и пишем в какой-либо div-плейсхолдер. Потом из этого дива берем src (ведь тупо вставкой кода в html асинхронно-загруженный html-код скрипта не выполнится, вы же помните это), создаем новый dom-объект script, и спокойно вставляем его в шапку или куда еще.

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

Итого, алгоритм следующий:

  1. Переопределить функцию document.write, чтобы она писала в какой-то скрытый div.
  2. Запросить target-страницу с <script src=blabla> с document.write.
  3. Вставить полученный <script src=blabla> в скрытый div.
  4. Создать пустой DOM-элемент script, установить ему src из div->script->src
  5. Добавить его в шапку или на страницу, он исполнится, вызывая переопреледенную document.write.
  6. Проверить, что там пришло в измененную функцию, и в зависимости от данных делать с ними что-либо.
  7. Начать сначала.

В п***у программирование, пойду выпью пива.

Блог с защитой и в бане

Вуаля! Этот уютный бложик обзавелся https://. Теперь его страницы можно смотреть, не опасаясь рекламы в московском метро и слежки спецслужб. Вместе с тем виданный cloudflare адрес находится в блэк-литсе роспидорнадзора, так что попасть на него вам стало еще сложнее.

Наслаждайтесь!