Rails + Webpack + Stimulus + Bootstrap 4

Category: dev

Сделал сборку Rails со StimluluJS, последней версией любимым мной frontend фреймворком bootstrap4 и чтобы все это собиралось Webpack’ом. Turbolinks в комплекте, подключается отдельно в packs/application.js. Стоит обратить внимание что рельсовые rails-ujs и turoblinks ставяться через yarn.

Что это такое ?

StimulusJS - это такой javascript фреймворк, мини Angular если хотите, позволяющий быстро встраивать себя в приложение. Основные постулаты StimulusJS описаны тут https://stimulusjs.org/handbook/origin

Bootstrap 4.2 - CSS framework главная особенность которого это набор базовых компоненто и grid который позволяет быстро делать адаптивную верстку, поддерживает flexbox.

Webpack - Сборщик frontend стека, без которого сегодня необходиться ни один вебпроект.

Как пользоваться ?

  • git clone
  • yarn
  • bundle
  • rails s
  • и в соседнем терминале ./bin/webpack-dev-server

Github https://github.com/noroot/rails-stimulus-bootstrap-starter-pack

Книга: Bullshit Jobs: A Theory

Category: books

Книга Bullshit Jobs: A Theory

“Provisional Definition 2: a bullshit job is a form of employment that is so completely pointless, unnecessary, or pernicious that even the employee cannot justify its existence”

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

Ссылка и видео интервью под катом.

Сеть с помощью mknod

Category: tips linux

Как скачать содержимое, если wget curl или любые другие стандартные инструменты недоступны.

mknod /dev/tcp/ c 30 36
exec 5<>/dev/tcp/falsetrue.io/80

echo -e "GET / HTTP/1.0\n" >&5
cat <&5

В результе получим “наружу” содержимое ответа.

Точно также можно делать и остальные запросы, вот пример запроса на ntp

cat </dev/tcp/time.nist.gov/13

58448 18-11-26 22:50:05 00 0 0 420.8 UTC(NIST) *

Подбробнее про /dev тут https://www.tldp.org/LDP/abs/html/devref1.html

CTF Квест

Category: security

На конференции highload 2018, компания wallarm делала и досих пор доступен для прохождения ctf квест. Ниже описание некоторых забавных моментов и сути этого контеста, под катом спойлеры. А в конце ссылки.

 .----------------.  .----------------.  .----------------. 
| .--------------. || .--------------. || .--------------. |
| |     ______   | || |  _________   | || |  _________   | |
| |   .' ___  |  | || | |  _   _  |  | || | |_   ___  |  | |
| |  / .'   \_|  | || | |_/ | | \_|  | || |   | |_  \_|  | |
| |  | |         | || |     | |      | || |   |  _|      | |
| |  \ `.___.'\  | || |    _| |_     | || |  _| |_       | |
| |   `._____.'  | || |   |_____|    | || | |_____|      | |
| |              | || |              | || |              | |
| '--------------' || '--------------' || '--------------' |
 '----------------'  '----------------'  '----------------' 

Книга: Unfuck yourself

Category: books
  • Название: Unfuck yourself
  • Автор: Gary John Bishop
  • Год: 2017

Неплохая книга и короткая книга которая повторяет почти все одно что было в The Subtle Art of Not Giving a F*ck (о которой напишу позже). Хороша она тем, что не повторяет одно и тоже, и за 3 часа рассказывает “изъезжеенную” тему так, что больше к этому возвращатся не хочется. Книга не про продуктиность, и не про обучение, - чистый “высер”, но в хорошем смысле слова.

Картинка обложки и ссылка под катом.

Что делать на если нехватает памяти для git

Category: tips linux

Однажды случилась такая история, на слабом инстансе Digital Ocean и большом количестве файлов запушенном в одном коммите, git’у нехватило свободной памяти при git pull, и автоматизированный деплой с помошью capistrano отвалился с ошибкой о том что нехватает памяти

fatal: Out of memory, malloc failed (tried to allocate 493791736 bytes)
fatal: index-pack failed
error: Could not fetch origin
git stderr: Nothing written

И простой способо обойти ограничение по памяти это уменьшить размеры буферов, добавив в рабочую директорию в конфиг .git/config следующие настройки:

[pack] 
        windowMemory = 1m 
        packSizeLimit = 1m 
        deltaCacheSize = 1m 
        deltaCacheLimit = 10 
        packSizeLimit = 1m 
        threads = 1 
[core] 
        packedGitWindowSize = 1m 
        packedGitLimit = 1m 
        deltaBaseCacheLimit = 1m 
        compression = 0 
        loosecompression = 0 
        bigFileThreshold = 10m 
[http] 
        sslVerify = false ;; !!!
[transfer] 
        unpackLimit = 10 

После этого все будет работать. Незаюывайте что это нужно прописывать в конфиг той машины на которой происходить запуск git pull, в случае capistrano это будет диреткория repo/.git

EOF

Что делать если в /etc/sudoers syntax error

Category: tips linux

Иногда бывает так:

>>> /etc/sudoers: syntax error near line 16 <<<
sudo: parse error in /etc/sudoers near line 16
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

Если ошибиться в синтаксисе /etc/sudoers то sudo небудет работать, и постоянно выдавать ошибку синтаксиса в конфиге. Что делать в таком случае ?

Первый вариант это использовать PolKit и утилиту pkexec которая позволяет запускать привилегированный процесс и при этом просит ввести пароль от текущего пользователя.

А что делать если это произошло на Amazon EC2 и пароль от пользователя неивзестен или pkexec неработает ?

  • Выключить машину
  • Отмонтировать диск
  • Создать другую EC2 машину и вырубить ее
  • Примонтировать диск от сломанной машины к новой
  • Включить новую машину и исправить файл
  • Выключить все, примонтировать диск обратно на нужную машину

А чтобы не ошибаться в синтаксисе /etc/sudoers, нужно его всегда редактировать через visudo который предупредит если ошибка и даст ее исправить.

EOF

Книга: Extreme Ownership: How U.S. Navy SEALs Lead and Win

Category: books
  • Название: Extreme Ownership: How U.S. Navy SEALs Lead and Win
  • Автор: Jocko Willink, Leif Babin
  • Год: 2015

Довольно необычная книга, написанная военными Navy SEALs (Jocko Willink, Leif Babin), - в книге рассказываются реальные военные истории спец операций, и эти рассказы накладываются на примеры из гражданской жизни в бизнес сфере, управлении людьми. Книга состоит их нескольких таких историй. Самое интересное что читают книгу сами авторы, это сделано специально чтобы недать сторонним чтецам нарушить атмосферу спец операций которую создают оригинальные авторы. Авторы пытаются на примерах обьяснить важность небольших решений любых людей учавствующих в проектах, а не только high command. Книгу стоит почитать, а лучше послушать в оригинале, эти охриплые голоса военных их спецподразделений возможно знакомые вам по фильмам и играм, представлены тут в оригинале от первого лица, и одни только военные истории заслуживают внмания. Рекомендую читать, а точнее лушать только оригинал.

“И что у тебя за имя такое дурацкое Соуп” (с) Call of Duty: MW2

Картинка обложки и ссылка под катом.

Roem на Wordpress

Category: dev php

Прошло уже примено года 3 с момента как мы переделали Roem.ru на wordpress. Как мы это сделали будет описано в этой небольшой заметке.

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

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