• Уведомления о завершении консольных команд

      Undistract-Me — простая, но чрезвычайно полезная в хозяйстве утилита, которая делает одну вещь — выводит уведомление, когда длинная команда (по умолчанию 10 секунд, но можно настроить) завершила свое исполнение.



      Также показывает название этой команды и время, которое она заняла. Должно работать со всеми окружениями рабочего стола.
      Особенно хороша, когда вы, например, решили чего-нибудь скомпилировать, и не хотите все время пялиться в черный экран или проверять каждую минуту работает ли оно еще. Теперь во время пересборки ядра вы сможете наслаждаться своими любимыми видео с кошечками!
      Читать дальше →
    • Релиз Scala 2.10

        Сегодня, наконец-то, вышла финальная версия Scala 2.10.0, о чем на сообщают на официальном сайте.

        Новые возможности:


        Value классы


        Теперь пользовательские классы могут наследоваться от AnyVal (раньше было возможно только от AnyRef). Это дает возможность добиться большей производительности за счет отсутствия накладных расходов по сравнению с оборачиваемым классом.
        class Wrapper(val underlying: Int) extends AnyVal
        

        У класса должен быть единственный, публичный val параметр, тип которого будет типом вашего класса во время исполнения.
        Есть некоторые ограничения, частично из-за текущей реализации JVM.
        docs.scala-lang.org/overviews/core/value-classes.html

        Неявные классы


        Ключевое слово implicit теперь можно применять не только к методам, но и к классам. Добавлены для того, чтобы упростить расширение существующих классов и уменьшить нагрузку на implicit методы. Так же, очевидно, могут иметь только один параметр (можно больше, если остальные неявные). В классе можно определять только методы, исключение — параметр конструктора.
        Синтаксис:
        implicit class RichInt(n: Int) extends Ordered[Int] {
          def min(m: Int): Int = if (n <= m) n else m
        }
        

        docs.scala-lang.org/sips/pending/implicit-classes.html

        Читать дальше →