Несмотря на существование большого количества распределенных файловых систем (Riak CS, MongoDB GridFS, Cassandra File System, и прочих) многие продолжают отдавать свое предпочтение сервису Amazon S3. Что не удивительно, учитывая его гибкость, разумную стоимость, отсутствие необходимости самому что-либо администрировать и наличие могучего SDK. В этой заметке будет показано, как работать с Amazon S3 при помощи этого SDK на языке программирования Scala.
Как нам с вами уже известно, Akka предоставляет множество богатых средств, существенно упрощающих разработку распределенных приложений. Сегодня мы познакомимся с одним таким средством, а именно — возможностью создавать акторы-одиночки, или синглтоны. Такие акторы присутствуют в кластере в единственном экземпляре. Также в случае падения узла, на котором крутится синглотн, этот синглтон будет перезапущен на другом узле кластера.
Постоянные читатели этого блога, скорее всего, уже пару-тройку раз в своей жизни настраивали OpenVPN. Но думается, что новичкам данная заметка будет интересна и полезна. Из нее вы узнаете, как за пять минут поднять собственный VPN сервер, а также зачем он, собственно, нужен. Ну хорошо, учитывая время на регистрацию в каком-нибудь Amazon’е, DigitalOcean, Vscale.io или FastVDS и оплату VDS, пожалуй, потребуется не пять минут, а «целых» пятнадцать.
В этом выпуске: легковесные веб-фреймворки (не akka-http) и скриптинг на Scala, как из Haskell вызывать код, написанный на Rust, действительно ли в Erlang не бывает stop the world, скандальная правда про MVCC и LSM-tree, а также передача доменов онлайн, крафтовое пиво и вкусняшки к нему с доставкой на дом. Предыдущие выпуски: январь 2015, декабрь 2014, ноябрь 2014, сентябрь и октябрь 2014.
В мире JVM уже давно предпринимаются попытки заместить Java чем-то более пристойным. Наиболее успешной такой попыткой, по всей видимости, на сегодняшний день является Scala. Тут вам и сообщество программистов, и куча фреймворков, и вакансии — все что угодно. Но и Scala далека от идеала. Среди наиболее существенных недостатков языка можно отметить его относительную сложность (что признает даже Одерски) и, что намного важнее, медленную скорость компиляции, а также требовательность к ресурсам во время этой компиляции. Поэтому такие языки под JVM, как Kotlin, Gosu и Ceylon все еще представляют собой интерес.
Велика колхозная доктрина — это квинтэссенция программистской мудрости. Десятилетиями доктрина передавалась членами тайного ордена колхозных программистов из уст в уста, из поколения в поколение. К великому сожалению, со временем учение стало додумываться и обрастать различными толкованиями. Мы видим появление новых те-еретиков, намеренно искажающих доктрину, чтобы поселить сомнения и ужас в наших сердцах. У ордена не осталось иного способа спасти истину, кроме как предать доктрину широкой огласке. Ниже представлена наиболее точное приближение к оригинальной доктрине, которое удалось по крупицам восстановить благодаря небольшой группе посвященных.
Суммарно мне потребовалось на это где-то 2.5 года, но в итоге рубеж в одну сотню книг был успешно преодолен! А значит пришло время предоставить вашему вниманию очередной отчет о последних десяти прочитанных мною книгах. Преимущественно это были книги, посвященные Java, Scala и Akka, но не только. Рецензии на ранее прочитанные мной книги вы найдете по следующим ссылкам: девятый десяток, восьмой десяток, седьмой десяток, шестой десяток.
Docker — это инструмент, предоставляющий удобный интерфейс для работы с контейнерами. Процессу, запущенному под Docker, кажется, что он работает в минимальном окружении, где помимо него есть только его дети. Хотя при этом процесс работает в той же операционной системе, что и остальные, нормальные, процессы, он просто их не видит, ровно как не видит файлов и всего остального за пределами своей «песочницы». Можно думать о Docker, как о прокачанном chroot или аналоге FreeBSD Jails.
В любой команде рано или поздно появляется человек, который совсем недавно прочитал книжку по Lisp или осилил Template Haskell и потому ему не терпится применить метапрограммирование на практике. Однако проблема заключается в том, что в большинстве случаев макросы или шаблоны создают больше проблем, чем решают. В этой заметке будет показано, почему так.
Редкое серьезное приложение в наши дни обходится без кэширования чего-либо. Какой-нибудь LRU кэш элементарно реализуется, например, при помощи хэш-таблиц и двусвязных списков. Но не факт, что ваше решение будет отличаться особой эффективностью, поэтому лучше воспользоваться готовой реализацией. Часто в качестве такой реализации рекомендуют Guava или LruMap из twitter-util. Но у этих решений есть свои минусы, в частности, стэк Twitter’а традиционно привязывает вас к Scala 2.10, а Guava просто страшна.