React — first impressions from the noob

React.js

React is the one of most famous JavaScript-frameworks. A lot of developers uses it in everyday development. Since its release, I saw a lot of different posts and articles about it. Different people leave theirs reviews and impressions. So, I tried to learn this framework and give to it some respect or discontent. In this article, I’ll look at React as a noob because I really the noob and doesn’t know this framework. You can say “Yet another article about React”, but it’s not. Let’s go!

Read More

localForage – храним данные offline без головной боли. Удобная абстракция над IndexedDB

Большинство современных веб-приложений каким-либо образом хранят отдельные данные у клиента, пользуясь такими средствами как localStorage, WebSQL или IndexedDB. Так, например, для небольших HTML5-игр весьма удобно хранить результаты игрока локально - не нужно писать взаимодействие с базами данных, а сохранив все локально, игрок легко может продолжить прогресс с места своего сохранения.
Однако несмотря на удобство, возникает проблема - хранилища реализуют схожий функционал, однако методы,предлагаемые API, весьма различаются. Это создает проблемы конечному разработчику, который вынужден держать в голове список всех функций,их аргументов и т.д. Помимо этого каждое хранилище имеет свои достоинства и недостатки, что также сказывается на разработке. По этой причине Mozilla представила свою библиотеку localForage, позволяющую забыть о таких мелочах и сосредоточиться на реализации функционала. Рассмотрим ее возможности подробнее.

Read More

Валидация данных в Go при помощи govalidator

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

Read More

Minecraft Forge: кастомные тексты в GUI контейнеров

При разработке очередной версии SmartCursor”а мне потребовалось добавить новую возможность - отображение мода, из которого загружен очередной блок или предмет, в GUI контейнеров, будь то инвентарь игрока, сундуки или даже рюкзаки из мода Backpacks.

Read More

Material Design вместе с Angular.js

С выходом в свет новой версии Android 5.0, названной Lollipop, компания Google представила новое видение дизайна пользовательского интерфейса - Google Material Design. Вслед за появлением спецификации разработчики привнесли немного “материальности” в свои фреймворки, такие как Angular.js, React.js, даже всем известный Twitter Bootstrap сделали “материальным”.

В связи с этим хотелось бы рассмотреть, как же такие известные фреймворки внедряют поддержку Material Design. Рассмотрим это на примере Angular.js.

Read More

Moment.js: работа с датами в JavaScript

Очень часто необходимо работать с информацией типа времени и дат, обрабатывая их таким образом, как этого требует программа. Существует огромное множество решений, каждое из которых умеет выполнять какие-то информации с датами - одни лучше, другие хуже. Среди этого разнообразия существует библиотека Moment.js, которая умеет больше, чем не умеет.

Read More

Grunt: автоматизация работы с JS проектами

Порой очень лениво и сложно выполнять одни и те же задачи раз за разом. Согласитесь, пару раз проверить проект линтом, сделать сборку и минифицировать ее можно руками, но если делать это постоянно… Не самый лучший вариант. Для таких задач существуют специальные инструменты, автоматизирующие долгий и нудный процесс. Знакомтесь - Grunt!

Read More

GCJ: Java без JVM

Да, именно так: Java без JVM. В данной статье рассмотрим работу с Java (компиляция/запуск), не используя такие средства, как JVM/JDK и подобное. Ах да, и никаких on-line инструментов, все только локально :) А воспользуемся мы таким инструментом, как GCJ:

GNU Compiler for Java (GCJ или gcj) — это свободный компилятор языка Java, являющийся частью GNU Compiler Collection. GCJ может компилировать исходный код Java в байткод виртуальной машины Java, либо непосредственно в машинный код многих процессорных архитектур. Он также может компилировать файлы классов, содержащие байткод, или целые JAR, содержащие такие файлы, в машинный код.

Read More

Hello, Octopress!

Данный пост не имеет особой значимости - я всего-то переменил движок. На этот раз мой выбор пал на Octopress - он показался мне более функциональным и мощным инструментом по сравнению с Jekyll, который я использовал ранее (Хотя бы потому что он является надстройкой над Jekyll).
Использование Октопреса сводится к применению нескольких команд:

Sample code
1
2
3
$ rake new_post[title]
$ rake generate
$ rake deploy

По сравнению с Jekyll, имеет улучшенную поддержку плагинов, тем, многие средства, которые в Jekyll отключены, здесь используются по умолчанию (например пагинация или “убирание” постов “под кат”).

Read More

Backbone.js: маршрутизаторы

В данной маленькой заметке рассмотрю примеры использования маршрутизаторов Backbone.
Часто в веб-приложении необходимо разделить логику, привязав определенные модели и представления или отдельное состояние приложения к определенным адресам. Для всего этого используется объект Backbone.Router

Read More

JNI: объединяем C и Java

Что такое JNI?

Java Native Interface (JNI) — стандартный механизм для запуска кода, который написан на языках С/С++ или Ассемблера, и скомпонован в виде динамических библиотек, позволяет не использовать статическое связывание. Это даёт возможность вызова функции С/С++ из программы на Java, и наоборот.

Если говорить кратко, JNI - механизм, связывающий Java и C/C++ в одно целое.

Read More

JS: Sails.js + Backbone.js = Hello, TODO

Сегодня я решил - пора взяться за веб со стороны Node.js. А именно я решил присмотреться, каково вообще вести разработку на серверном JavaScript. В качестве серверного фреймворка я взял Sails.js - он мне приглянулся хорошей документацией и наличием некоторого количества примеров. В связке с ним я взял Backbone.js для клиентской части - после первого знакомства стоит поработать с ним поглубже. А общей целью поставил написать небольшой ToDo менеджер. Поехали!

Read More

JS: Backbone.js, say Hello

Пусть для JavaScript’a существует достаточное число фреймворков, создавать динамические веб-приложения все же достаточно сложно. А когда дело доходит до работы с DOM, событиями и прочими прелестями HTML, JS и CSS, то код становится нереально большим и сложным в поддержке. Backbone призван решить эту проблему. Как написано на сайте русской документации Backbone:

Backbone.js придает структуру веб-приложениям с помощью моделей с биндингами по ключу и пользовательскими событиями, коллекций с богатым набором методов с перечислимыми сущностями, представлений с декларативной обработкой событий; и соединяет это все с вашим существующим REST-овым JSON API.

Что ж, было бы неплохо попробовать его в действии.

Read More

JS & API: StackExchange API на пальцах

Иногда возникают ситуации, когда необходимо написать скрипт или приложение, взаимодействующее с каким-либо сервисом. Многие крупные сайты предлагают разработчикам свое API, которое они могут использовать в своих проектах. Однако у каждого сервиса свои функции и способы работы с API. Потому нередко сложно начать использовать сторонние API в своих проектах.

На примере небольшого приложения, авторизирующего пользователя и получающего его последние уведомления с данными профиля, мы рассмотрим, как пользоваться Stack Exchange API.

Read More

Clojure: первое знакомство

Уж не знаю, по какой причине мне вдруг захотелось познакомиться с Clojure. До этого я практически не работал с функциональными языками (несколько маленких программ на Scala не учитываются). Однако рано или поздно приходится переступить через это. Почему я не выбрал Haskell или Erlang? Потому что Clojure крепко дружит с JVM, а это значит, что код на Java доступен в Clojure и наоборот. С другой стороны, почему не Scala? Scala не является абсолютно-функциональным языком, а это значит, что имея в руках функциональный и объектно-ориентированый язык программирования, рано или поздно в силу сложившихся привычек перейдешь на чистое ООП, используя его даже там, где язык предлагает более изящное решение на “функциональщине”.

Read More

Scala: первые шаги в акторах

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

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

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

Read More