Меняем жёсткий диск под линукс с поддержкой UEFI

Поставил себе SSD вместо оригинального HDD. Предварительно разметил SSD, чтобы винде и линуксу было куда
монтировать разделы. Винда обнаружила приготовленный раздел без вопросов. Линукс оказался более подозрительным.

Читать полностью

Ты думаешь, что у тебя есть время

Твоя (и моя тоже, кстати) первая ошибка — ты думаешь, что у тебя всегда есть выбор. Конечно, есть. До тех пор, пока ты его не сделаешь. После этого можно сколько угодно доказывать, что твоё свободное волеизъявление не было продиктовано, и уже не важно чем: насущной необходимостью, болью под ложечкой (оу, ты хотел услышать «вилочкой», нет проблем) или сиюминутной блажью твоей левой пятки. Ты сам себе не поверишь, а я пальцем не пошевелю, чтобы тебе возразить.

Вторая, не важно чья, ок, ошибка: ты думаешь, что время у тебя ещё есть. Нет, у тебя нет времени, совсем нет. Даже не потому, что ты никогда не угадаешь, когда тебя позовут домой из песочницы. Беда в том, что даже в песочнице ты тратишь время только на то, что даёт тебе возможность забыть, зачем тебе песочница, песок в ней и какого чёрта ты «вышел на улицу».

А ещё мы любим искать глубинный смысл.
— Смотри! — говоришь ты, — у меня в совочке глубинный смысл!
— Дерьмо, — отвечаю я, и продолжаю искать свой смысл.
— Какое ещё дерьмо?
— Голубиное.
Слёзы, крик, философский диспут, переходящий в банальный мордобой.
Думаю, те же голуби, нагадившие в песочницу, знают о смысле больше нашего.

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

Как установить «Command Line Tools» в MacOS

Неоднократно сталкивался с проблемой: npm-пакет png-img не ставится и требует компиляторов. Жить, буквально, без них не может.

В дебиан-производных для этого есть sudo apt install build-essential, им обычно и пользуюсь. Но не все сидят на дебиане и, более того, не у всех на машине Linux. У кого-то стоит MacOS и вот для них была придумана инструкция. Инструкция длинная, подробная, на странице полно рекламы, т.ч. я её несколько сокращу:

  1. Запускаем терминал
  2. В терминале запускаем команду xcode-select --install, появляется диалоговое окно с тремя кнопками
  3. Жмём кнопку Install, две другие: Get Xcode и Not Now игнорируем
  4. Ждём, пока скачается сотня-другая мегабайт
  5. Снова пытаемся установить png-img или что там было нужно

Пока не началось

Вначале было слово, которое было «вначале», которому не было места, которому не было времени, возможности, цвета и настроения, которое было до своего возникновения, которое словом-то, строго говоря, и быть не могло.
Но было.

Ведь в том-то и ужас, и Фобос, и Деймос, когда сидишь перед чистым листом и он ждёт: вот, сейчас ты облажаешься, вот, сейчас сядешь в лужу, разочаруешься в себе, впадёшь в уныние, чёрное, как ночь, серое, как грязный снег, или нет, будешь вечно дрожать, не решаясь сказать «не то», не решаясь произнести слово, которое было.

Пропасть между словами, сказанными «не так» и словами, не сказанными никак, никем и никогда в том, что первые могут послужить опыту говорящего, могут сделать так, чтобы следующее начало было бы уже менее не тем, чтобы следующее за ним было бы уже вовсе не так плохо, и чтобы затем наступило начало, в котором и было бы то самое слово.
Которого, вспоминаем, быть не могло, но мы о нём откуда-то знаем.

Что только ни придёт в голову, пока думаешь что бы такое сказать, когда голова пуста, когда «печален за окном пейзаж, как песня должника», пока никто за тобой не пришёл, но уже внимательно к тебе присматривается. Пока не началось.

Хорошо, давай писать! О чем? О чем-нибудь, что меня волнует. Об иерархиях? О них лучше меня говорил Борхес, кажется? Наверное, нет. Разве что в самом крайнем случае. О сексе и всём, что с ним связано? Об этом не попишешь, сидя в кафе. Нет, ну серьезно. Советами же замучают.

.. хз, что будет дальше, я пока не придумал.

Внезапно, ES6

Допустил ошибку в коде. Бывает. Самое интересное, что в ES5 эта ошибка тут же была бы распознана парсером, исправлена, всё замечательно. Но ES6 говорит: «Окей! Я знаю, чего ты хочешь!» И — не угадывает.

var traversorKeys = {
FunctionDeclaration: {
leave: {
function (node) {
// ...
}
}
}
};

Вряд ли такой код выполнился бы в ES5. В ES6 появилась такая возможность, как объявление метода через короткую запись:

var obj = {
foo() {
console.log('Hello, shortcuts!');
}
};

Соответственно, в первом примере появился аккуратный ключ FunctionDeclaration.leave.function. И никакой lint мне про это ничего не сказал. Возможно, я просто не умею его готовить.

Снова переезд, даже два

Случилось много разного. 1 июня 2018 потерял ноут вместе с настроенным octopress.
В итоге решил не мудрствовать, а просто взять старые посты и использовать Hexo.js,
раз уж большую часть разработки веду сейчас в ноде.

Заодно решил выкладывать блог на http://blog.nhee.ru.

Как сделать Css Transition только что добавленному элементу

Понадобилось сделать плавный переход от одной картинки к другой, средствами JavaScript, как он есть. То есть, ни тебе jQuery.animate(), ни ещё чего-нибудь.

Сразу подумалось: «Есть же css-transition, круто!» Быстренько накидал стиль:

.image img {
opacity: 0;
transition: opacity .5s;
}

.image img.fade-in {
opacity: 1;
}

потом, в скрипте

var $div = document.querySelector('.image');
var $image = document.createElement('img');
$image.src = 'https://placekitten.com/400/300';

$div.appendChild($image);
$image.classList.add('fade-in');

Казалось бы, мы добавили img на страницу, потом добавили класс fade-in, прозрачность должна плавно измениться, правда?

Нет, к сожалению, не правда.

Чтобы прозрачность всё-таки начала изменяться, необходимо (и, вроде бы, достаточно) сделать так:

$div.appendChild($image);
setTimeout(function() {
$image.classList.add('fade-in');
}, 0);

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

Тестовая страничка на codepen.

Зависимости внутри пакета в python

Что за прелесть эти ваши сказочки..

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

Но вот как только тебе захочется сделать так, чтобы классы были разложены по файлам,
и начнёшь подтягивать зависимости из файла в файл при помощи import, можно садиться
в угол, брать попкорн и расплываться в чеширской, практически сардонической улыбке.

Небольшая пауза, пока я вычищаю из поста все ругательства, которые накопились за
пять дней “знакомства” с языком.

Тем не менее, способ справиться с “кошмарным ужасом” зависимостей есть.

Читать полностью

Алиасы для localhost

Давно хотелось делать для работы в проектах на своем компе
алиасы вида project1.local. Казалось бы, уж чего проще,
поставил nginx, отредактировал пару файлов и - вперед!

Совершенно согласен, особенно после того, как всё заработало
и больше не надо выискивать правильный рецепт.
Чтобы больше не искать, что именно надо делать и где, оставлю
рецепт здесь.

Перво-наперво, редактируем /etc/hosts:


project1.local 127.0.0.1

Во-вторых, предположим, наш проект запущен на порту 9999
и мы бы не хотели набивать порт. Пишем в /etc/nginx/conf.d/project1.conf:


server {
listen 80;

server_name project1.local;

location / {
proxy_pass http://127.0.0.1:9999/;
proxy_set_header Host $host;
}
}

Для каждого последующего проекта заменяем project1 и 9999
на имя проекта и номер порта и движемся дальше.