Pull to refresh
0
0
DeltaFlight @DeltaFlight

User

Send message

Zetes: Java с мультиплатформенным GUI, но без Oracle JVM

Reading time26 min
Views32K
image

Аннотация


В статье описывается фреймворк, позволяющий создавать графические кроссплатформенные приложения, написанные на языке Java, но при этом абсолютно не зависящие ни от Oracle JRE, ни от OpenJDK. Основная идеология фреймворка — по возможности снять с разработчика заботы об обеспечении «родного» look and feel для приложения под каждой операционной системой.

Фактически, на выходе вы получите исполняемый файл, опирающийся только на системные API, на котором нигде не будет клейма «написано на Java».

Все компоненты фреймворка имеют либеральные лицензии (BSD либо Apache), что позволяет использовать их в любых (в том числе, коммерческих) разработках.

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

Готовая, собранная версия приложений, демонстрирующих работу фреймворка под всеми платформами, находится здесь.

Всех интересующихся подробностями милости прошу под кат.
Что же это за штука диковинная?
Total votes 86: ↑85 and ↓1+84
Comments64

Макросы и квазицитаты в Scala 2.11.0

Reading time8 min
Views13K
Не так давно состоялся релиз Scala 2.11.0. Одним из примечательных нововведений этой версии являются квазицитаты — удобный механизм для описания синтаксических деревьев Scala с помощью разбираемых во время компиляции строк; очевидно, что в первую очередь этот механизм предназначен для использования совместно с макросами.

Удивительно, но на хабре пока тему макросов в Scala рассматривают не слишком-то активно; последний пост
с серьёзным рассмотрением макросов был аж целый год назад.

В данном посте будет подробно рассмотрено написание простого макроса, предназначенного для генерации кода десериализации JSON в иерархию классов.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments8

Noisli: онлайн-генератор фоновых шумов, помогающих сконцентрироваться

Reading time1 min
Views182K


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

Сайт Noisli содержит коллекцию фоновых шумов на любой вкус и возможность смешивать их в произвольной пропорции. Здесь есть и звуки природы — шум дождя, плеск воды, пение птиц, шуршание листьев, и звуки техногенного характера — стук колёс поезда, звук работающего вентилятора, и звуки многолюдного кафе. Есть и искусственные белый, розовый и коричневый шум. Коллекция звуков постоянно пополняется.
Читать дальше →
Total votes 108: ↑103 and ↓5+98
Comments64

Во втором чтении принят законопроект, ужесточающий требования к переводу электронных денег

Reading time2 min
Views9K
В прошлую пятницу (18 апреля) Государственная Дума Российской Федерации во втором чтении приняла входящий в антитеррористический пакет законопроект №428896-6 «О внесении изменений в отдельные законодательные акты РФ», ужесточающий использование электронных платёжных систем.

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

Угроза миновала: отказ от драконовских ограничений для владельцев анонимных кошельков, которые хотели ввести. Лимиты остаются прежними: остаток на кошельке анонима в любой момент времени не должен превышать 15 тыс. рублей, а общая сумма переводимых средств в месяц ограничивается 40 тыс. рублей.
Всё так же нет необходимости в идентификации при переводе денег юрлицам, ИП и госорганам, если сумма платежа составляет не более 15 тыс. рублей. Ограничение не действует, если получатель является религиозной или благотворительной организацией.
Процедура упрощённой идентификации. Пользователь может либо предоставить идентифицирующие его личность документы или их копии, либо направить сведения о себе в электронном виде, либо использовать электронную подпись для авторизации в единой системе идентификации. Упрощённая идентификация будет доступна с 1 ноября 2014 года.
Упрощённо идентифицированные могут иметь не более 60 тыс. рублей на своём кошельке и переводить не более 200 тыс. рублей в месяц. Для сравнения: размер электронных кошельков идентифицированных обычным образом составляет 100 тыс. рублей.
Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments75

Введение в Акторы на основе Java/GPars, Часть I

Reading time15 min
Views13K
Кратко рассматривается API библиотеки GPars и решение многопоточной задачи средней сложности, результаты которой могут быть полезны в «народном хозяйстве».

Данная статья написана в ходе исследования различных библиотек акторов, доступных Java-программисту, в процессе подготовки к чтению курса «Multicore programming in Java».

Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

Это первая статья из цикла статей цель которых сравнить API, быстродействие и реализацию акторов Akka с реализациями в других библиотеках на некоторой модельной задаче. Данная статья предлагает такую задачу и решение на GPars.

GPars — библиотека написанная для Clojure с широкой поддержкой различных подходов к параллельным вычислениям.
Плюсы GPars
  • Исходный код написан на Java (в отличии от Akka, написанной на Scala). Всегда интересно посмотреть «что под капотом» на «родном» языке программирования
  • GPars представляет собой целый «зоопарк» подходов (Actor, Agent, STM, CSP, Dataflow)
  • GPars использует классы из runtime-библиотеки Clojure, написанной на Java. Интересно покопаться

Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments9

Обменник MtGox прекратил работу

Reading time1 min
Views34K
Сегодня утром сайт MtGox окончательно ушёл в офлайн.

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

«Но оказалось, что ущерб уже нанесён. На данный момент пропало 744 408 BTC из-за связанного с уязвимостью мошенничества, — сообщается во внутреннем документе MtGox с разбором кризисной ситуации, который попал в открытый доступ. — Резервное хранилище было опустошено в результате утечки в активном кошельке».
Читать дальше →
Total votes 63: ↑53 and ↓10+43
Comments122

Авторизация клиентов в nginx посредством SSL сертификатов

Reading time4 min
Views135K

Введение:


Потребовалось мне тут как-то написать небольшой API, в котором необходимо было помимо обычных запросов принимать запросы с «высокой степенью секретности».
Не я первый с этим столкнулся и мир давно уже использует для таких вещей SSL.

Поскольку на моём сервере используется nginx, то был установлен модуль SSL
Гугл не выдал ни одного работоспособного howto, но информация в сети есть по частям.

Итак, пошаговое руководство по настройке nginx на авторизацию клиентов через SSL-сертификаты.
Читать дальше →
Total votes 41: ↑34 and ↓7+27
Comments32

Заржавели мозги — перейди через мост. The Bridge by Ty Tailor

Reading time3 min
Views49K
На Хабре полно математиков и физиков, которым будет интересно узнать об одной любопытной компьютерной игре «The Bridge». Она не вот чтобы прям свежая, я не ее автор и в тематику хабра она с трудом попадает, но я думаю что для этой инди-игры здесь найдутся почитатели. Уже минут 30 как я завершил прохождение зеркальной части игры — до сих пор под впечатлением, и хотел бы чтобы еще кто-то кроме меня остался доволен собой, математикой, Ньютоном и Эшером.

image

Читать дальше →
Total votes 54: ↑46 and ↓8+38
Comments25

Scala. Всем выйти из сумрака!

Reading time6 min
Views33K
А сейчас нужно обязательно дунуть, потому что если не дунуть, то ничего не получится.
—Цитаты великих

И здравствуйте!

Сегодня мы поговорим о неявном в языке Scala. Кто еще не догадался — речь пойдет об implicit преобразованиях, параметрах, классах и иже с ними.Все новички, особенно любители питона с зеновским Explicit is better than Implicit, обычно впадают в кататонический ступор при виде подкапотной магии, творящейся в Scala. Весь компилятор и принципы в целом охватить за одну статью удастся вряд ли, но ведь дорогу осилит идущий?
Вот мы и пойдем
Total votes 43: ↑36 and ↓7+29
Comments23

Архитектура убеждения, 7 механизмов манипуляции пользователями

Reading time6 min
Views46K
image

Когнитивное восприятия себя и окружающих людей мешает нам дать объективную оценку происходящему. Мир вокруг нас воспринимается через призму собственных убеждений и потакания своим инстинктам.
Задумаетесь, как вы принимаете решения? На чем они основаны: на логике, эмоциях или психологических установках?

Например, Маша, считает, что вечно опаздывающий на работу Вова — страшно неорганизованный человек, который не умеет управлять своим временем.
При этом Вова опаздывает на работу, потому что вынужден с утра умыть, накормить, одеть маленькую дочку и отвести ее в садик. Сама Маша приходит почти вовремя только на работу, во всех иных случаях она всегда опаздывает. Маша винит в своих опозданиях пробки на дорогах, не сработавший будильник, родственников, которые ее отвлекали.
95% бизнесменов терпят крах в первые 1-2,5 года, считая, что знают своего потребителя и могут заставить его купить свой товар. Мысль: «Я знаю, как думает мой покупатель», — главная ошибка начинающего бизнесмена.
На самом деле сам покупатель не знает, как он думает.
Именно поэтому большие компании содержат несколько маркетологов для реализации своей продукции.

Интернет-маркетологи, познавшие особенности когнитивного восприятия, выработали несколько механизмов, способных «включить» скрытые механизмы поведения.

Курица, услышавшая зов птенца, будет заботиться о любом объекте, издающем подобные звуки. Человеческий мозг устроен гораздо сложнее, нежели куриный. Тем не менее, с помощью определенных установок можно побудить человека на совершение определенных действий.
Вы готовы стать архитектором убеждения?
Читать дальше →
Total votes 55: ↑42 and ↓13+29
Comments30

Небольшое введение в Scalatest

Reading time6 min
Views13K
Scalatest — это фреймворк для тестирования приложений, поддерживающий разные стили написания тестов и легко интегрирующийся с другими инструментами для JVM, включая IDE и maven.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments0

Как перейти от Java к Scala в вашем проекте

Reading time7 min
Views32K
Всем привет.
Периодически от Java-разработчиков, которые узнали о существовании Scala, звучат вопросы «Как начать использовать Scala в существующем Java-проекте? Сложно ли перейти от одного к другому? Много ли времени это займет? Как убедить начальство?» В нашем проекте именно такой переход и происходил, на сегодняшний день практически весь проект уже на Scala, поэтому решил поделиться рецептами и впечатлениями.

С чего все началось, оно же «А зачем оно мне вообще надо?»:
  1. хотелось изучить что-то новое и полезное в производстве;
  2. надоело писать много букв на Java, но и радикально переписывать все, скажем на Python, совсем не хотелось;

С учетом таких желаний выбор пал на обзор альтернативных JVM-based языков.
После обзора остановились на Scala. Понравились компактный синтаксис, strong typing, возможность писать в ОО-стиле и заявленное хорошее взаимодейтствие с Java-кодом в обе стороны. Тот факт, что Scala уже активно используют такие крупные компании, как Twitter, LinkedIn, Foursquare и так далее, внушил определенную уверенность в будущем языка.
У нас уже имелся проект на Maven с юнит-тестами на JUnit, поэтому важно было легко включить Scala без существенных затрат на адаптацию инфраструктуры.
Итак, по порядку.
Почитать по порядку
Total votes 46: ↑40 and ↓6+34
Comments56

Облака — ещё дешевле

Reading time5 min
Views115K
Наверняка вы слышали о сервисах Amazon EC2, Rackspace и им подобным. Может быть даже пользовались. Лично мне бывает нужен иногда личный VPN-сервер. Для этих целей я уже давно держал микро-инстанс на Амазоне, предоставляемый им в течении первого года бесплатно. Плюс использовал для архивов Amazon Glacier, который с его ценой «1 цент за гигабайт в месяц» можно считать тоже почти бесплатным. Но вот год закончился и за EC2 стало нужно платить. Архивы мои тоже разрослись прилично и затраты на Glacier аналогично перестали радовать.

Случайно пробежавший мимо обзор сервиса DigitalOcean по-началу оставил меня равнодушным. Ну, облачный сервис, ну виртуалки. Ну да, чуть-чуть дешевле (но не так чтобы уж очень), чего-то аналогичного Glacier вроде бы нет да и вообще оно того не стоит.

Я сильно ошибался. Ниже будет рассказано как на базе DigitalOcean сделать себе VPN-сервер в пару десятков раз дешевле такого же на Амазоне и сервис хранения архивов, в бесконечность раз дешевле Glacier.
Читать дальше →
Total votes 120: ↑102 and ↓18+84
Comments87

Шаберная пластина как инструмент оверклокера

Reading time6 min
Views129K
Этот жестокий мир теплового хаоса

Мы живем в компьютерном мире, а современная электроника в части кремниевых «мозгов» достаточно тёплая вещь — процессоры нагреваются нещадно, как основные, так и специализированные, GPU например. В каждом электрическом изделии присутствуют радиаторы пассивные и если совсем много тепла нужно рассеять — то и вентиляторы.
Как известно, электротехника это наука о контактах. Так же можно сказать, что и теплотехника — тоже наука о контакте, о тепловом контакте и передаче тепла от теплого к холодному посредством конвекции и/или излучения. Но не будем в это углубляться, поговорим о конкретном решении, направленном на уменьшение перегрева оборудования и сопутствующего шума от активных систем воздушного охлаждения в паре металл-металл.
узнать, что такое шаберная пластина и чем она хороша
Total votes 82: ↑75 and ↓7+68
Comments36

История плохого старта — вариант «Все сам»

Reading time5 min
Views57K
Заглавная картинка Некоторое время назад промелькнула на Хабре вот эта статья о запуске игры. В ней автор делится своим опытом создания первой игры и публикации ее через издателя. На тот момент моя игра уже была выпущена и находилась в GooglePlay около месяца. Правда, я выбрал самостоятельный вариант публикации без какой-либо помощи издателей. А поскольку опыта в этой области у меня не было совсем никакого, то я сделал целый ряд ошибок, которые, по-моему, снизили и так небольшие результаты. Вот об этих ошибках, а также о детальной статистике на текущий момент, я и хотел бы рассказать…
Поучиться на чужих ошибках
Total votes 71: ↑62 and ↓9+53
Comments30

Разработка одной игры — полезный опыт, немного денег и куча ошибок, Ч1

Reading time8 min
Views51K
Сегодня довольно много программистов думают о том, чтобы создать мобильное приложения, заработать свой первый миллион, сыскать славу успешного разработчика и продолжать работать над своими интересными и многообещающими проектами. Многие не только думают, но и принимают попытки, успешные и не очень. Так вот я не исключение и об одной такой попытке, приобретенном опыте и небольшом финансовом профите я и хочу рассказать.
Читать дальше →
Total votes 72: ↑64 and ↓8+56
Comments16

Ищем на java, оптимизация во время исполнения

Reading time4 min
Views15K
С большим удовольствием ознакомился со статьями: Возможности оптимизации в языках C и C++ и Скорости разработки и исполнения не достижимые на С. В них детально разобрана оптимизация во время компиляции. Основным условием такой оптимизации является доступность значений большинства переменных на этапе компиляции. В реальном мире, к сожалению, такое встречается не всегда.

Давайте попробуем сделать нечто похожее, но уже в процессе исполнения программы. Для этого используем java, исполняющая система которой оптимизирует код на этапе исполнения. Плюс к этому позволяет создавать код на лету.

Продолжение
Total votes 28: ↑27 and ↓1+26
Comments21

Развиваем ритм, слух и просто отличный инструмент для репетиций

Reading time2 min
Views17K
Пару лет назад я начал пользоваться различными сервисами для развития своих способностей — LinguaLeo, Codecademy, Coursera. Это просто отличные инструменты. Удивительно, но тогда я не нашел подобного сервиса, который помог бы моему хобби — музыка (гитара). Идея создать отличный сервис для гитаристов, включающий в себя образовательную платформу, созрела в декабре 2011 года. История проекта Totallicks банальна.

Читать дальше →
Total votes 73: ↑68 and ↓5+63
Comments79

Виртуальное прототипирование в Linux на примерах

Reading time3 min
Views48K
image

Так уж сложилось, что Linux для меня домашняя система более 5 лет. Я владею различными САПР системами под Windows и прекрасно вижу ту пропасть которая существует в этой области. Но вне зависимости от выбранной OC, не существует такого инструмента «сделать красиво» — нажал заветную кнопку и идея воплотилась в годную 3D модель/чертёж. Проектирование весьма длительный всесторонний процесс, от этапов тз до испытания образцов.И тут все средства хороши, от простого карандаша и бумаги, коробки пластилина до навороченной САПР с просчетом веса и прочими плюшками. Процесс в Windows выглядит аналогично и так-же приходится постоянно использовать «связки» различного софта для одного прототипа, но стоимость этого софта для хобби мягко говоря неподъемна.

В данном же случае речь пойдет о хобби, пусть и приносящем доход, но все же хобби. Я расскажу о софте, необходимом для создания реальных прототипов, которым пользуюсь под Debian testing с DE xfce. Мой выбор возможно не идеален, но для творчества вполне годится.
Итак, имеется некая идея в вакууме, необходимо найти инструмент для 3D визуализации с возможностью быстрого прототипирования средствами ЧПУ.
Читать дальше →
Total votes 80: ↑77 and ↓3+74
Comments31

Простая поддержка окружений в Spring 3.1+

Reading time2 min
Views17K
Многие знают что для подстановки значений в конфигурационные файлы Spring можно использовать context:property-placeholder.

<context:property-placeholder location="classpath*:/prop/*.properties"/> <!-- здесь будут искаться property файлы -->

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongo"/>
    <constructor-arg name="databaseName" value="${mongo.db}"/> <!-- здесь будет подставлено значение из найденных property -->
</bean>

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

Когда передо мной встала задача, в зависимости от окружения (dev, prod, load-test), изменить логику развертывания — я искренне попытался использовать старый проверенный способ через property.
И я сделал следующее:
Total votes 14: ↑14 and ↓0+14
Comments6

Information

Rating
Does not participate
Registered
Activity