Pull to refresh
33
0
Сергей Кузнецов @cr0t

Разработчик

Send message

Интервалометр для SONY NEX-5 за 20 минут и $0

Reading time3 min
Views53K
Это пост я посвящаю всем тем, кто паял Covox для БК.

То, что описано в данном уроке, не является открытием, и описано довольно много где, и даже запатентовано.

Сначала — видео конечного результата:


А теперь подробности:
Читать дальше →

Работа с Java в командной строке

Reading time11 min
Views659K
Сейчас уже никто не создает программы в консоли. Используя любимую IDE, разработчик чувствует себя неуютно за чужим компьютером, где её нет.
Решив разобраться в работе Ant и Maven, я поймал себя на том, что не смогу собрать приложение без них в консоли.
В данной статье я постарался уместить все этапы проектирования демонстрационного приложения, чтобы не искать справку по каждой команде на просторах Интернета.
Читать дальше →

Архитектура контроллеров: простые советы на каждый день

Reading time6 min
Views3.9K
То, что контроллеры должны быть «худыми» знают все, но по мере наращивания функционала поддерживать чистоту контроллеров становится все сложнее и сложнее. Мы хотим предложить несколько рекомендаций как содержать свои контроллеры максимально чистыми без ущерба для качества кода.
Читать дальше →

Развертывание приложений Play! framework в Google AppEngine

Reading time3 min
Views5.1K


Play! framework набирает популярность и на Хабре уже есть следующие топики:
Отличный Java MVC фреймворк — Play Framework
‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 1)
‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 2)
Мои 5 любимых фишечек в Play Framework

Одна из замечательных возможностей Play! — развертывание приложения в облачную инфраструктуру App Engine от Google.

На приложения, которые исполняются в GAE накладываются довольно жесткие (по сравнению с обычными Play! приложениями) ограничения, в основном, это связано с модулем сохранения данных (JPA / Hibernate). Для того, чтобы приложение без проблем заработало в GAE следует отказаться от JPASupport/Model хелперов и использовать только базовые возможности JPA.
Альтернативой также может стать использование модуля Siena.

В данном топике я пошагово опишу процесс развертывания приложения Play! в Google AppEngine.
Процесс установки и использования описан применительно к ОС Linux, но существенных различий при использования других ОС возникнуть не должно.
Читать дальше →

Как правильно считать чужие деньги

Reading time3 min
Views2.4K
Для рельс уже написан миллион и один туториал про то, что делать, если вдруг приходится писать приложение, которое работает с деньгами.

Обычно все сводится к советам не использовать Float, использовать Decimal, транзакции там всякие и прочее. И в большей части случаев этих советов вполне достаточно для того, чтобы разработчик чувствовал себя сухо и комфортно.

А сталкивались ли вы с ситуацией, когда, скажем, приложение должно обслуживать жителей более чем одной страны?

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

ALTER очень больших таблиц в MySQL

Reading time4 min
Views45K
Если в Вашем проекте есть таблицы размер которых исчисляется гигабайтами, а для того чтобы поменять структуру такой таблицы вам на несколько часов приходится останавливать все сервисы — эта статья будет для Вас.

Дано: таблица размером в несколько десятков гигабайт данных. Задача — изменить структуру таблицы.
Читать дальше →

Самое простое и захватывающее падение в мир микроконтроллеров или Meggy Jr RGB

Reading time3 min
Views29K
Итак, всем любителям ретро игр, пиксель арта, железа типа arduino и тех, у кого закрадывалась мысль написать свою простенькую игру, при этом не сильно вдаваясь в дебри даташитов!

Хочу представить вам 8-битный игровой хендхелд, на микроконтроллере Atmega-328, с большим, ярким экраном с пикселями, которые невозможно не заметить.
На борту есть: 32КБ памяти для вашего кода, 6 кнопок, простенький динамик, 8 дополнительных диодов и разъем для программирования и обмена данными.

image

Что можно сделать с такими малыми ресурсами?
Но ведь в любом деле основной ресурс — это ваше воображение и опыт!

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

Полностью автономная камера наблюдения

Reading time3 min
Views105K

В дороге


Я привык выключать все электроприборы, когда уезжаю на несколько дней. Однако, очень часто хочется узнать, всё ли в порядке дома: не сгорел ли, не рухнул ли, не ограбили ли. Увы, но мне не удалось найти на рынке полностью автономное устройство, способное наблюдать за помещением и отсылать фотографии хозяину. Пришлось сделать такой геджет своими руками.

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

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

[Перевод] VMware CloudFoundry: PaaS на Ruby

Reading time3 min
Views2.3K
image Platform as a Service (PaaS) — это не самая тривиальная вещь для создания, развертывания и поддержки: для начала, приходится проделать немалую работу для управления всеми сервисами изнутри, затем предстоит продумать и реализовать хороший интерфейс, и, в конце-концов, сервис нужно продать и умело его поддерживать. Не удивительно, что инвестиции для создания таких сервисов, могут позволить себе только несколько зажиточных игроков на IT-рынке.

Поэтому было вдвойне интересно наблюдать, как VMware разворачивают сервис CloudFoundry, да еще и с открытым кодом (честно, вот github аккаунт)! Полноценная PaaS, которую они так же предлагают использовать как хостинг, доступна так же каждому, для запуска в собственной компании или датацентре — теперь вы можете запустить «мини Heroku», или «облако EngineYard» на собственных серверах! Но в сторону маркетинг, гораздо интереснее взглянуть под капот этого проекта, ведь он полностью организован на Ruby.

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

Пора завязывать использовать пробелы вместо табуляции в коде

Reading time3 min
Views93K

Этот топик — ответ на топик "Пора завязывать использовать символы табуляции в коде".
Я хотел было ответить к комментариях, но в силу объема и желания независимости от исходного топика решил создать новый топик.

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

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

Принцип цикады и почему он важен для веб-дизайнеров

Reading time6 min
Views236K
Пару лет назад я прочитал интересные факты о жизненном цикле периодических цикад. Обычно мы не видим вокруг себя много этих насекомых, потому что бóльшую часть своей жизни они проводят под землёй и тихо сосут корни растений.

Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
Читать дальше →

Полиморфные ассоциации и Devise в Ruby on Rails

Reading time7 min
Views4.7K
Всем привет.
Когда-то давно я писал статью про полиморфные ассоциации в Ruby on Rails и, помнится, некоторые негодовали: зачем, мол, писать про Rails 2, если на подходе новая версия.

Недавно мне пришлось столкнуться с полиморфными ассоциациями в Rails 3, а точнее придумать, как организовать на сайте два типа пользователей: заказчик и исполнитель. В этой статье речь пойдет о полиморфных ассоциациях и гемах Devise (для аутентификации) и CanCan (для авторизации).
Читать дальше →

Способ разделения frontend/backend-частей в Yii

Reading time5 min
Views68K

О чем это я?


Хочу немного рассказать, как я разделяю фронтэнд/бекэнд-части сайта во всех своих проектах на Yii. Не претендую на авторство этого способа, просто хочу немного объяснить, что и как организуется и работает.

Собственно, почти всегда проект не может состоять только из фронтэнда (тоесть того, что видит посетитель). Очень часто требуется организовать административную часть, при этом иметь безболезненный доступ ко всем компонентам проекта (модели, расширения и т.п.).

Есть несколько способов добиться этого. Не буду вдаваться в подробности каждого из них, если вам интересно — можете поискать на форуме yiiframework.com.
Самым элегантным и удобным мне показался вариант с использованием своего “поведения” запуска приложения. Он позволяет очень удобно разграничить приложение в плане директорией, использовать разные конфиги для каждой части сайта и т.п.
Читать дальше →

Какие бывают типы OutOfMemoryError или из каких частей состоит память java процесса

Reading time3 min
Views209K
Если вы словили OutOfMemoryError, то это вовсе не значит, что ваше приложение создает много объектов, которые не могут почиститься сборщиком мусора и заполняют всю память, выделенную вами с помощью параметра -Xmx. Я, как минимум, могу придумать два других случая, когда вы можете увидеть эту ошибку. Дело в том, что память java процесса не ограничивается областью -Xmx, где ваше приложение программно создает объекты.

image

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

Apache Hadoop (Доклад Владимира Климонтовича на ADD-2010)

Reading time17 min
Views8.7K
Представляем вашему вниманию доклад Владимира Климонтовича, сделанный им на конференции Application Developer Days, в котором он поделился своим опытом обработки ОЧЕНЬ БОЛЬШИХ объемов данных, и использование для этого NOSQL-подходов, в частности Apache Hadoop.



Ниже представлены текстовая версия доклада + видео + аудио и слайды презентации. Спасибо belonesox за работу над подготовкой материалов доклада.

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

Команда dd и все, что с ней связано

Reading time4 min
Views648K

В UNIX системах есть одна очень древняя команда, которая называется dd. Она предназначена для того, чтобы что-то куда-то копировать побайтово. На первый взгляд — ничего выдающегося, но если рассмотреть все возможности этого универсального инструмента, то можно выполнять довольно сложные операции без привлечения дополнительного ПО, например: выполнять резервную копию MBR, создавать дампы данных с различных накопителей, зеркалировать носители информации, восстанавливать из резервной копии данные на носители и многое другое, а, при совмещении возможностей dd и поддержке криптографических алгоритмов ядра Linux, можно даже создавать зашифрованные файлы, содержащие в себе целую файловую систему.
Опять же, в заметке я опишу самые часто используемые примеры использования команды, которые очень облегчают работу в UNIX системах.
Читать дальше →

Оператор запятая

Reading time6 min
Views37K
Продолжаем тему операторов, на этот раз вас ждет рассказ об операторе запятая.

Начнем с забавного твита:

Если изображение не отображается, пожалуйста, напишите автору!

'c' в конце — это оператор запятая. Последняя в списке значимых операторов, мало документированная, но очень полезная. Она не так распространена, но она мне очень нравится. Она проста, элегантна, и с ней лучше быть в хороших отношениях.

Что она делает?


Оператор запятая выполняет оба операнда (слева направо) и возвращает значение второго оператора. (MDC)
var a = (7, 5);
a; //5

var x, y, z
x = (y=1, z=4);
x; //4
y; //1
z; //4
Читать дальше →

FPV

Reading time4 min
Views136K
Эта статья для тех, кто с детства мечтает летать как птица. Сразу оговорюсь, в реале Вы не полетите, но чувства будут очень близки. Итак, речь идет о FPV (first person view)-полетах. FPV — это новое движение в авиамоделизме, его суть заключается в управление моделью самолета через установленную на борту камеру. Картинку с борта самолета Вы получаете в реальном времени и видите через очки “виртуальной реальности”. Также, на очках установлен датчик поворота головы и камера на самолете поворачивается вслед за поворотами Вашей головы. У вас появляется неподдельное ощущение реального присутствия. А самолетом Вы управляете по радио каналу. Со стороны это выглядит примерно так:


А вот как выглядит изнутри:

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

Snappy (zippy), библиотека для сжатия данных от Bigtable

Reading time1 min
Views3.4K
Google выпустил библиотеку Snappy под лицензией Apache 2.0. Эта библиотека для компрессии/декомпрессии нацелена не на максимальную степень сжатия или совместимость с другими библиотеками, а на максимальную скорость работы. Например, по сравнению с самым быстрым режимом zlib, Snappy примерно на порядок быстрее для большинства входящих данных, но архивы получаются на 20–100% больше по размеру. На одном ядре Core i7 в 64-битном режиме Snappy скорость компрессии больше как минимум на 250 МБ/с, а декомпрессии — минимум на 500 МБ/с.

Snappy широко используется в Google, в разных системах от BigTable и MapReduce до внутренних RPC-систем (в некоторых презентациях она упоминалась под названием Zippy).

Дополнительную информацию см. в файле readme. Бенчмарки по сравнению с другими библиотеками (zlib, LZO, LZF, FastLZ и QuickLZ) поставляются в комплекте с исходниками.

Information

Rating
Does not participate
Location
Швеция
Registered
Activity