Filter by tag: Science
  • Windows workspace with WSL and Docker by Ast

    Introduction

    As a web developer, I frequently use a lot of command line tools to make my life easier. I prefer to be able to assemble a computer from whatever hardware I want, so I don't like Macs and stuff like this. Linux desktops are good enough our days, but I love to play video games from time to time, and it wouldn't be effortless to keep two different operating systems for work and entertainment. My best compromise was to use Windows.

    But Windows command line sucks. It sucks a lot. And I don't talk about the `cmd` shell — it's ridiculous to talk seriously about it in 2018. A little bit more modern command line attempt of Microsoft, the `PowerShell`, has a lot of power, but it lacks the elegance and composability of Unix tools. It's a whole new world where you need to learn funny wtf commands like `Remove-Item dir -recurse` to make the simplest things happen. And, of course, nobody outside the geostationary orbit of Microsoft supports this. To be productive with a command line in Windows you need to do some research, and your road won't be dull.

    Read more
  • How To Update Cloudfront Certs With Letsencrypt by Ast

    Letsencrypt is an excellent service for obtaining totally free security encryption certificates. Fortunately, it also has a marvelous client named Certbot. Let's install it.

    Read more
  • Бесплатный сертификат от Letsencrypt by Ast

    Зачем это?

    У защищенного соединения есть множество преимуществ перед старым добрым http: защита от перехвата траффика, защита от подмены содержимого, лучшее ранжирование в поисковых системах и т.д. Мне вот, например, нравится зеленый значок в адресной строке. Раньше за всё это удовольствие нужно было платить, поэтому сертификаты можно было увидеть только на крупных проектах, либо платежных системах (где риск компрометации данных велик и без сертификата вас просто не поймут). Проект letsencrypt.org призван изменить это положение вещей раз и навсегда.

    Read more
  • Latest docker for Ubuntu LTS by Ast

    For Ubuntu 14.04 LTS

    Latest docker version (automatic update)

    apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
    echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" >> /etc/apt/sources.list.d/docker.list
    apt-get update
    apt-get purge lxc-docker*
    apt-get install docker-engine
    

    And result will be like this:

    docker -v
    Docker version 1.9.0, build 76d6bc9
    

    Latest docker-compose version

    curl -L https://github.com/docker/compose/releases/download/1.5.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    
  • Как показать себя и свои наработки by Ast

    grok

    За что мы боремся?

    В жизни разработчика регулярно возникает необходимость показать результаты работы кому-либо еще — коллеге, заказчику, тестировщику. Всё довольно просто, если вы сидите в одной комнате или, хотя бы, здании: можно пригласить его к своему столу (скорее всего придется пообещать кофе или печеньки) и показать лично на собственном мониторе. Всё сложнее, если вы находитесь в разных районах, городах или даже странах. А иногда вам может пригодиться доступный из интернета API, развернутый локально — например, если вы разрабатываете или тестируете мобильные приложения.

    Read more
  • Zsh: больше чем bash by Ast

    Нет ничего удобнее хорошей командной оболочки и zsh, наверное, одна из лучших. На большинстве серверов и рабочих машин по-умолчанию стоит bash и многие даже не задумываются, что командная оболочка может или должна делать что-то еще, кроме запуска команд. Например, она должна помогать пользователю выбрать: какую команду запустить.

    Установка

    Установить «базовый комплект» проще простого. Например, в Ubuntu:

    apt-get install zsh
    usermod USER -s /usr/bin/zsh
    

    Установить дополнительные плюшки тоже не сложно:

    curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
    

    Результат

    Например, вот так выглядит zsh у меня:

    zsh

  • Собственный VPN за пять минут by Ast

    Существует несколько способов сжечь книгу. И мир полон людей, бегущих с зажженными спичками.
    «Звук бегущих ног», Рей Бредбери

    Лирическое вступление

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

    К сожалению, кроме людей созидающих знания, есть люди запрещающие знания. Запрещать знания — попросту глупо: знание есть знание, у него нет никакой моральной подоплеки, но оно, определенно, может быть кому-то не выгодно. И потому жгли людей, потом книги, теперь же они открыли для себя интернет. Но с интернетом такой фокус уже не пройдет. Потому что нам на помощь спешит VPN — виртуальные тоннели, с помощью которых мы будем выходить в интернет, например, из Амстердама, на самом же деле потягивая чаек из натурального русского самовара.

    Read more
  • Docker: оркестрация by Ast

    orchestration

    Что такое оркестрация?

    Оркестрация — это координация взаимодействия нескольких контейнеров. В принципе, ничто не мешает создать контейнер, в котором запущены сразу все необходимые процессы, но этот подход лишен гибкости при масштабировании, изменении архитектуры, а также создает проблемы с безопасностью, т.к. в этом случае процессы никак не изолированы и могут без ограничений влиять друг на друга. Оркестрация же позволяет строить информационные системы из небольших кирпичиков-контейнеров, каждый из которых ответственен только за одну задачу, а общение осуществляется через сетевые порты и общие директории. При необходимости контейнеры в таком «оркестре» можно заменять на другие: например, чтобы проверить работу приложения на другой версии базы данных.

    Read more
  • Docker: создание и запуск контейнера by Ast

    Docker

    Containerization is the new virtualization
    The Docker Book
     

    Что такое Docker?

    В отличии от классических систем виртуализации, которые эмулируют работу компьютерного железа и ядра операционной системы поверх него, Docker использует виртуализацию на уровне ядра: все виртуализируемые им процессы делят ядро операционной системы хоста, что позволяет значительно сократить как требуемые ресурсы, так и время, необходимое на запуск/обслуживание таких систем. В идеале, каждый процесс изолируется в собственном контейнере (linux container, lxc), который содержит набор необходимых ему библиотек, что позволяет забыть о dependecy hell, а также легко переносить стек проекта между серверами. В статье ниже я проиллюстрирую, как можно использовать Docker для настройки среды разработчика, повторяющей среду продакшена: предположим, что там используется Ubuntu LTS, PHP 5.4, Nginx.

    Read more
  • «No space left on device» и inodes by Ast

    Честно говоря, я тоже не знаю. Это был всего лишь термин, который мы начали использовать. Из-за немного необычной структуры файловой системы, при которой информация о доступе к файлам хранится в виде плоского (двумерного) массива на диске, отдельно от всей информации об иерархии каталогов, лучшее, что я могу предположить (для «и») - это «индекс». Таким образом, и-номер являлся индексом в этом массиве, и-нод - выбираемым элементом массива. (Приставка «и-» использовалась в первой версии руководства; со временем дефис перестали употреблять).
    Деннис Ритчи

    Я был очень удивлен, когда получил ошибку следующего содержания при попытке открытия сессии:

    PHP Warning:  Unknown: open(/tmp/sess_e34ad6u6f51gum3htmqkd7ldn6, O_RDWR) failed: No space left on device (28)
    

    Ведь при этом df -h показывал такую картину, что свободного пространства много:

    df -h
    
    
    Filesystem          1K-blocks     Used Available Use% Mounted on
    /dev/sda2            19091584  3784332  14314332  21% /
    udev                  8192628        8   8192620   1% /dev
    tmpfs                 3280992      284   3280708   1% /run
    none                     5120        4      5116   1% /run/lock
    none                  8202472       92   8202380   1% /run/shm
    /dev/mapper/vg0-var  47926152 24100456  21368096  54% /var
    

    Оказалось, кончились файловые дескрипторы (inode), но в сообщении об ошибке этого не указывается. Проверить количество файловых дескрипторов в системе можно такой командой:

    df -i
    

    Имеет смысл отслеживать эту метрику, как и занятое на диске пространство.