Pull to refresh
37
8
Алексей Ворона @voronaam

User

Send message
Записался на ежемесячное пожертвование $10 в фонд OpenBSD. Немного, но автоматическое (через PayPal). По моему опыту небольшое, но постоянное пожертвование очень помогает проектам. По крайней мере чуть реже приходится устраивать глобальные компании по сбору денег.

Здесь пишу в надежде что и другие хабравчане сделают так же. Не обязательно быть миллиардерам чтобы помогать Open Source'у финансово.
У них другое продеставление об интересных вещах. Вот, к примеру, фонд Билла и Мелинды Гейтс занимается глобальным искоренением туберкулёза на земле. Знаете сколько людей до сих пор умирает каждый год от этой давно уже излечимой болезни? Просто потому что не хватает лекарств или их не успевают довезти до больных. А теперь поместите на одну чашу весов жизни миллионов людей, а на другую очередные очки виртуальной реальности для «золотого миллиарда». Куда вы потратите своё богатство?
Большое спасибо за идею с Kotlin. Давно ждал повода разобраться с ним. Да, я знаю что такой DSL не совсем в стиле Scala, тем интереснее было попытаться его реализовать.

Спасибо за ссылку на вашу статью, отличное описание. Жаль, что я её пропустил.
Scala и Groovy имеют одно маленькое, но принципиальное для написания DSL отличие. Если у вас в DSL есть конструкция типа

configuation {
  http {
    host "example.com"
  }
}


То в Gradle внутри скобок this будет ссылкой на только что созданный объект, а в Scala this останется тем же, что и снаружи скобок. При написании DSL в Scala приходится самому следить за стеком. Это вполне возможно, но неудобно. Я недавно с этим боролся как раз: писал DSL для декларативного описания PDF через itext. Обратите внимание на метод call. Буду рад если кто-нибудь укажет на мою ошибку и более прозрачный способ написания подобных DSL.
Конкретно для eclipse, сработает. Но есть билд таски, для которых и так не помогает. Последний, с которым столкнулся — submit таск из курса по акторам на Coursera.

Но вообще я рад что кому-то sbt нравится. Пусть будет больше разных билд систем, будет откуда фичи портировать. Я пытался написать всего-лишь о том, что не обязательно использовать sbt для сборки Scala-проектов. Если не нравится, можно испольвать другой инструмент. А если нравится, то никто не против, конечно.

P.S. Ещё SBT очень заточен на Scala и Java. Собрать Groovy проект уже на порядок сложнее. А связка Java + Scala + Groovy довольно хорошо работает вместе…
Согласен с недостатками sbt, но не согласен что это стандарт. В реальном продакшене я видел большинство проектов собираемых maven и небольшое количество на Gradle. Свои проекты перевёл на Gradle недавно. На sbt собираются только какие-то Scala библиотеки, вроде Squeryl.

Моя претензия к sbt в том, что он плохо поддаётся влючению в другие скрипты. Например, вот так не работает:
$ ./sbt eclipse with-sources=true
только вот так:
$ ./sbt
> eclipse with-sources=true

Что значительно менее удобно.

И документация плохая. Ничего подобного maven, и даже более молодому Gradle уступает.

Я люблю Scala и использую её в каждом JVM проекте, если есть возможность. Язык совершенно независим от SBT. Чтобы писать на Scala не обязательно целиком переходить на стек Typesafe.
Есть ещё очень много возможностей языка, которые в Java не скоро появятся. Новые строковые литералы, pattern match, параметры по умолчанию и именованные параметры, макросы, implicit'ы… Долго перечислять. Да один scala.reflect.ClassTag чего стоит!
Я недавно решал эту проблему и даже написал заметку об этом. Если вкратце, то билд скрипт вытаскивает из JAR'а со скала рантаймом нужные нам вещи (и только их) и упаковывает прямо в JAR итогого приложения. Правда не всё так просто.
Спасибо за ответ. То есть дальше вот этого не пошло? Лежит в sun.misc, без -XX:-RestrictContended использовать нельзя… Какое-то ощущение незавершённости осталось.
Стоит упомянуть ещё и Terminator. Эмулятор терминала со встроенной функциональностью мультиплексера.

К тому же он тоже умеет так:

В dvtm имеется одна интересная функция, которой больше нет ни в одном из известных нам терминальных мультиплексоров: нажатие клавиш в текущем окне могут автоматически воспроизводиться во всех остальных открытых окнах.


В Terminator даже хитрее — можно объединить окна в группу, и нажатые клавишы будут транслироваться во все окна группы. Прим это окна не обязаны быть видимы — они могут быть на разных табах эмулятора терминала, или даже в разных его окнах.

Для меня плюс в том, что мультиплексер встроен. Мне не надо думать заранее запускать что-то в tmux или нет. Хотя tmux тоже полезен бывает.
Кстати как там дела обстоят с @Contended? Может быть присутствующие в треде TheShade знает?
Мне кажется это не такое уж редкое качество. А вот подсказки как правильно читать исходники были очень полезны. Я вот, например, тоже в сишном интерпретаторе копался. Оказывается, зря…
1) Было бы сказано точнее, посчитал бы точнее. Из моего опыта, если пишут «миллионы», то их там не больше двух.
2) Transactions per Second
3) Много у кого. У HFT и вообще в трейдинговых системах, у MMORPG, у учёных (тот же БАК)
4) Ключевое у вас «пользовательских». В реальности одно «пользовательское событие» порождает множество транзакций в разных системах.

Но самое главное в моём комментарии было про отсутствие ограничения на задержку (latency). Если допустимая задержка измеряется десятками секунд, то такую систему очень легко проектировать. И скучно.
На счёт идей которые не сработали. Есть даже настольная игра, в которой игрок может попробовать определить «выстрелит» какая-то идея или нет. Игрок выступает в роли бизнесмена с деньгами, к которому приходит несколько изобретателей с идеями. А денег ограниченного количество и инвестировать надо с умом. Вот там много идей которые казались отличными поначалу…
В который раз убедился, что Google не делает ничего особенного. Миллион событий в минуту это всего 16K TPS. Как-то это совсем неприлично мало для распределённой системы в 21-м веке. А уж учитывая что в приведённом примере — операция join поисковых запросов с кликами на рекламу — нет ограничения на задержку (latency), становится совсем скучно.
Как бы я ни любил Maemo, но Jolla — это не моё. Слишком много маркетингого BS, слишком мало технической информации. Вот например, что это за спецификации «GSM/3G/4G LTE** (Works on 6 continents)»? Это телефон для хипстеров или всё таки для хакеров и early adopter'ов? Какой конкретно чип стоит? LTE 1700 поддерживается? Нет ответа…

Так что мои надежды и деньги остаются с Neo900
Ещё одна словоформа определение которой отсутствует в ПДД. Что ясности не добавляет. Но знаете в чём юмор? Даже если это пешеходная дорожка, то пешеходов на ней всё равно быть не может. Потому что пешеход — это «лицо, находящееся вне транспортного средства на дороге и не производящее на ней работу». Согласно определению в ПДД. А дороги-то рядом нет! Таким образом мы пришли к противоречию: полоса асфальта в парке не может быть пешеходной дорожкой, так как не допускает нахождение пешеходов на ней. Что и требовалось доказать.

Ещё раз повторю, что не хочу быть адвокатом дьявола. ПДД в России негодные и не надо применять их к пешеходам и велосипедистам. Надо иметь свою голову на плечах. Всем. И хорошо бы написать нормальные правила уже…
Не хочу быть адвокатом дьявола, но Вы неправы. В ПДД отсутствует определение понятия «Велодорожка». Вот такие замечательные ПДД, есть требование к велосипедистам ездить по велодорожкам, а самого понятия велодорожки нет (хотя есть знак её обозначения).

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

Как вы можете заметить, пятиметровая полоса асфальта в парке не является тротуаром (рядом нет дороги). Не является она так же и велосипедной дорожкой (такого понятия в ПДД вообще нет).

Единственный разумный вывод из такого положения дел: ПДД не применимы к пятиметровой полосе асфальта в парке. А значет отсутствует и запрет движения велосипедистов и преимущество движения пешеходов.
Однажды я был на занятии по общению. Одно из заданий было зайти в комнату так, чтобы находящиеся в ней почувствовали в зашедшем уверенного в себе человека. И что это честь для всех что он вообще нашёл время зайти. (на собеседованиях пригодилось бы). Говорить ничего нельзя, просто зайти в комнату. Так вот, один из участников зайдя в комнату достал телефон. Типа он такой занятой, до нас ему дела нет. Все сразу почувствовали что-то не то, а инструктор остановил действие и сказал «Dude! The phone? It is so low-class. You could've not done anything worse» (Достав телефон ты сразу себя опустил ниже некуда).

С тех пор моё отношение изменилось. А может и не изменилось, просто осознание пришло. В 90-е сотовый был признаком крутости, в 00-е рабочим инструментом, в 10-е стал скрываемым аттрибутом (когда используется не для голосового общения). Ну как носки при деловом костюме: все их носят, но как вас воспримут если вы на деловой встрече начнёте любоваться узором на своих носках?
Очевидно, вы создали для себя свой собственный слой абстракции :)

Выше была упомянута Scala. Удивительно насколько код на Scala более компактный. Вот, например, стандартный листенер нажатия кнопки вообще без полезной нагрузки на Java:

        button.addClickListener(new Button.ClickListener() {
            private static final long serialVersionUID = 1L;

            @Override
            public void buttonClick(ClickEvent event) {
                // ...
            }
        });


А вот листенер аж сразу нескольких событий на Scala:

  dashboard.addListener(newListener {
      case event: LoginEvent => // ...
      case event: LogoutEvent => // ...
  })


То же самое и с дизайном UI. Дизайнить UI на ScalaSwing намного приятнее чем на Java Swing. К Vaadin, конечно, пришлось написать немного функций-хелперов, но они именно хелперы, а не отдельный слой абстракции.

Information

Rating
632-nd
Location
Burnaby, British Columbia, Канада
Date of birth
Registered
Activity