Как мы с вами ранее уже выясняли, под JVM можно писать вполне себе сносные десктопные приложения. Тут, надо признать, возникают и некоторые тонкости, например, если вам захочется отобразить иконку в трее. К счастью, тонкости проявляются только под Linux. В конце концов, кто же в наше время пользуется на десктопе Linux, пфф… Впрочем, пользователи самой популярной десктопной ОС столкнутся с другой проблемой, а именно необходимостью устанавливать какую-то там ЖэВэЭм. А она непонятно где обитает, весит дофига, а после установки потом еще в трее зависает, обновлений каких-то хочет, мутная штука! Однако пользователей можно заставить страдать чуть меньше обычного, и далее будет показано, как.
Несмотря на то, что Scala является языком со строгой статической типизацией, что устраняет множество ошибок в коде еще на этапе компиляции, это не отменяет необходимости писать тесты. Ведь нормально проверить логику работы вашего приложения могут только тесты. Среди великого множества тестовых фреймворков для Scala довольно большой популярностью пользуется ScalaTest. С ним мы сегодня и познакомимся.
Я тут недавно решил послушать 86-ой выпуск подкаста «Разбор Полетов». Помимо прочего, в выпуске обсуждался пост Фаулера MonolithFirst, в результате чего разгорелась довольно длительная дискуссия на тему «монолиты против микросервисов». Большая проблема с микросервисами заключается в том, что многие вещи, которые с их помощью пытаются решить, либо успешно решаются и без микросервисов, либо к микросервисам и монолитам отношения вообще не имеют. Если вам интересны мои размышления по этой теме, добро пожаловать под кат.
В этом выпуске: осиливаем Emacs и кишки JVM, пишем веб на C/C++, учимся пользоваться зеркалкой, а также предельно важный опрос, который определит всю дальнейшую судьбу рубрики! Предыдущие выпуски: май 2015, апрель 2015, март 2015, февраль 2015.
Мой первый подход к IntelliJ IDEA состоялся в середине мая 2014 года. Месяц или полтора я к ней принюхивался, выяснял, есть ли там все нужные мне хоткеи, потому что, работая с Vim, я привык все делать клавиатурой, ну и такого рода вещи. Убедившись, что все в порядке, я стал использовать IDEA в качестве основного редактора кода. Поначалу писал в ней на Erlang и немного на Haskell, а спустя пару месяцев — на Scala. Ну и на Java с Kotlin пописывал немного. Так незаметно пролетел целый год. И сегодня я хотел бы рассказать про все, что удалось выяснить об IntelliJ IDEA за это время — плюсы, минусы, вот это все.
Одна из первых вещей, которой программисты учатся при погружении в мир Java — установка артефактов из Maven Central. Nexus является очень популярным менеджером репозиториев (repository manager) от компании Sonatype. Он позволяет поднимать такой маленький Maven Central внутри вашей компании. В этой заметке будет рассмотрена установка и настройка Nexus, а также хождение в него из SBT. Но сначала мы, конечно же, разберемся, зачем вообще это может быть кому-то нужно.
Краткий обзор языка программирования Nim
22 июня 2015
Вам доводилось когда-нибудь мечтать о языке, похожем на Scala, только без привязки к JVM и чтобы в нем было поменьше объектов? Или, возможно, как Python, только с типами и по скорости сравнимом с Си? Или, быть может, чтобы Rust имел человеческий синтаксис, поддерживал исключения и был в состоянии без помощи программиста понять, какие переменные класть в стек, а какие в кучу? Если что-то из названного верно, думаю, вам понравится Nim.
Cassandra — теория и поднятие своего кластера в AWS
17 июня 2015
Созданная в 2008-м году ребятами из Facebook, на сегодняшний день Cassandra (название иногда сокращают до «C*») является одним из наиболее популярных NoSQL решений. Проект полностью написан на Java и успешно используется в IBM, Apple, Netflix, Twitter, Яндексе, CERN, SoundCloud, Rackspace, а также множестве других компаний. Сегодня мы поднимем наш собственный маленький Cassandra-кластер в облаке Амазона, но сначала, как обычно, немного теории.
Настройка фаервола с помощью iptables за пять минут
15 июня 2015
Я несколько раз сталкивался с тем, что даже неглупые в общем-то люди делают совершенно непростительные ошибки. Например, открывают всему интернету порт, на котором крутится база данных. Часто так бывает у начинающих DevOps, которые всю жизнь писали код, а теперь в их обязанности входит еще и настройка серверов. В сети есть хорошие туториалы по базовой настройке фаервола в Linux и других *nix, но часто это простыни на множество экранов. Так что, надеюсь, этот более лаконичный туториал кому-нибудь пригодится.
Программная транзакционная память в Scala
10 июня 2015
Вот чем мне нравится язык Scala, это тем, что, в отличие от ряда других языков, он не ограничивает выбор программиста. Если нужны мьютексы, используем мьютексы. Хотим атомарные переменные — пожалуйста. Нужны акторы — да вот же они. Агенты, параллельные коллекции — все к вашим услугам, хоть на volatile’ах многопоточность стройте. Ну и, конечно же, в Scala есть STM, которая, как и многие другие удачные решения, были перенесены в язык из мира Haskell.