Pull to refresh
0
0
Send message

Riak — веб-ориентированная система хранения данных

Reading time9 min
Views32K


Немного статей на хабре посвящены новому движению в IT индустрии — NoSQL. Я решил изменить это и написал статью-перевод-обзор об одном из докладов с конференции NoSQL прошедшей 5 октября в Нью-Йорке. В этой статье будет говорится о системе Riak, с которой мне довелось иметь счастье работать последнее время.

Что такое Riak? Многие модные слова популярные сейчас, можно отнести к Riak. Riak — это документно-ориентированная база данных. Riak — это децентрализованное key-value хранилище данных, с поддержкой стандартных операций — get, put и delete. Riak — это распределенное, масштабируемое, отказоустойчивое решение для хранения информации. А так же Riak — это система с открытым исходным кодом и поддержкой обращений с помощью HTTP, JSON и REST. Ну и конечно RIAK — это NoSQL.

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

Ремонтируем монитор содой!

Reading time2 min
Views151K
В последнее время, как мне кажется, пластиковые рудники на грани истощения. Чем больше и тяжелее монитор, тем меньше и тоньше подставка. Так 23'' монитор Samsung постигла участь одуванчика. Случайно наткнулся, в одной из местных news групп, на способ восстановления пластика при помощи пищевой соды. Под катом ремонт стойки монитора.
Далее...

Самые простые техники адаптивной верстки

Reading time2 min
Views465K
Сайтов с адаптивной разметкой с каждым месяцем становится все больше, заказчики кроме кроссбраузерности все чаще требуют адаптивность, но многие разработчики не спешат обучаться новым техникам. Но адаптивный дизайн — это просто! В этой статье представлено 5 примеров адаптивной разметки различных элементов веб-страниц.


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

Вникаем в метаклассы Ruby

Reading time6 min
Views54K

Примечание переводчика: данный пост является логическим развитием, а точнее «предысторией» поста Вникаем в include и extend и был подсказан в комментариях к нему пользователем murr, за что ему большое спасибо.

Классы и объекты в Ruby связаны между собой достаточно затейливо и не сразу можно понять что к чему. Из-за особого назначения классов очень легко потерять из вида тот факт, что классы — это тоже объекты Ruby. От «обычных» объектов их отличает два вещи: они служат образцом для создания новых объектов и они являются частью иерархии классов. Все верно, классы могут иметь экземпляры себя (объекты), суперклассы (родителей) и подклассы (детей).

Если классы — это объекты, то у них должен быть свой собственный класс. Классом всех классов (как объектов) в Ruby является класс Class:

# один из способов создать новый класс
Dog = Class.new
    
# общепринятый способ создания класса
class Dog
    # какая-то реализация собачьего поведения
end

Dog.class
=> Class

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

Перевод — BoxedIce делится опытом перехода с MySQL на MongoDB

Reading time6 min
Views7.5K
Ссылка на эту статью уже мелькала на Хабре и я столкнулся с интересом к ней. Многие испытали проблемы с освоением оригинала на английском и я решил перевести ее.

Заметки об использовании MongoDB в продакшене


Год назад в июле я писал о том, что мы перешли с MySQL на MongoDB.
Мы запустили MongoDB в продакшене для сервиса мониторинга Server Density. С тех пор прошло 8 месяцев и мы столкнулись с некоторыми вещами.
Читать дальше →

ActionMailer_X509: подписываем и шифруем письма прямо в Ruby On Rails

Reading time3 min
Views1.3K
В одном из последних проектов понадобилось подписывать и шифровать с помощью сертификатов X.509 письма, отправляемые приложением на Ruby on Rails 3. Беглый поиск привёл к плагину actionmailer_x509, а вот дальше начались проблемы.

Выяснилось, что он не обновлялся с 2008 года, скорее всего не работает с Rails 3 (в частности, смущал комментарий автора: «It has been tested with Rails 2.0.1») и умеет только подписывать, но не шифровать письма. Поиск альтернативных решений ничего не дал, и пришлось знакомиться с плагином поближе.

Как я знакомился с плагином и писал новый gem

Поработаем с MongoDb

Reading time4 min
Views108K


В текущее время появляется всё больше high-load проектов оперирующие колоссальным объемом данных. И уже нельзя обойтись классической реляционной моделью хранения этой информации. Всё более популярными становятся NoSQL базы данных (NoSQL — обозначает Not only SQL). Одной из таких баз данных является MongoDB, которая уже заслужила внимание к себе таких компаний как Disney, craiglist, foursquare. К тому же тут неоднократно писали о ней:
NoSQL, используя MongoDB, NoRM и ASP.NET MVC
Шардинг MongoDB на пальцах
Репликация MongoDB на пальцах

Это еще одна статья о работе с MongoDb в среде .net.

Что потребуется:
1. Скачайте (http://www.mongodb.org/downloads), распакуйте и запустите mongod (это сервер)
2. Драйвер (https://github.com/mongodb/mongo-csharp-driver/downloads)
3. Поехали

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

«Выглядит похоже». Как работает перцептивный хэш

Reading time6 min
Views126K
За последние несколько месяцев несколько человек спросили меня, как работает TinEye и как в принципе работает поиск похожих картинок.

По правде говоря, я не знаю, как работает поисковик TinEye. Он не раскрывает деталей используемого алгоритма(-ов). Но глядя на поисковую выдачу, я могу сделать вывод о работе какой-то формы перцептивного хэш-алгоритма.
Читать дальше →

DRuby aka DRb — основа распределенных систем на Ruby. Принцип работы и обход подводных камней

Reading time9 min
Views5.3K
Недавно вышла книга The dRuby book — distributed and parallel computing with Ruby (перевод японской книги, написанной автором самой библиотеки). В этой статье я попытаюсь дать обзор глав книги, касающихся библиотеки DRb. Если вам захочется ознакомиться с темой более подробно, книгу можно купить или скачать. Сразу скажу, что я не буду говорить в этом посте ни о синхронизации потоков, ни о библиотеке Rinda.

Предположим, что вы пишите систему, которая работает с более чем одним процессом. Например, у вас есть веб-сервер, который в фоновом режиме запускает задачи, работающие долгое время. Или вам просто нужно обеспечить пересылку данных из одного процесса в другой и координировать их. Для таких ситуаций и нужна библиотека DRb. Она написана целиком на Ruby и включена в стандартную библиотеку, поэтому начать работать с ней можно моментально. Для её подключения достаточно написать require 'drb'

Достоинства библиотеки DRb большей частью проистекают из динамичности самого языка Ruby.
Во-первых, при затрате минимальных усилий на подготовительном этапе, дальше вы работаете с объектами не задумываясь, где они расположены: в одном процессе или в другом. Библиотека полностью маскирует от вас все технические детали.
Во-вторых, вы не обязаны жестко прописывать интерфейс. Любой руби-объект может выставить свой интерфейс наружу — таким образом вы можете как воспользоваться функциональностью одного из стандартных классов типа Hash или Queue, а можете сделать свой класс с любым интерфейсом. Кроме того вам ничто не мешает менять интерфейс прямо в процессе исполнения, и даже использовать method_missing для обработки любых запросов. И уж разумеется, обновление интерфейса сервера вообще никак не влияет на клиента, если тот не вызывает методы, которые изменили сигнатуру или поведение. Таким образом сервер и клиент максимально независимы.
И наконец, клиент даже не обязан знать классы объектов, которые ему возвращает сервер, он может их использовать и без этого. Таким образом сервер волен скрыть столько много деталей, сколько ему угодно.
Но, конечно, есть и подводные камни, и их предостаточно. К счастью, dRuby несложен в понимании, ну а понимание его устройства позволяет большей части проблем просто не допускать. Документация к этой библиотеке, к сожалению, не проясняет множества моментов, поэтому статья будет интересна и новичкам, и людям уже поработавшим с библиотекой.

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

5 распространенных ошибок Rails-разработчиков

Reading time4 min
Views13K

Я проработал с Rails уже порядочное количество времени, и за это время я видел много Rails-приложений, а также немало прочитал и написал плохого кода на Ruby. И вот вам 5 самых распространенных ошибок, которые я наблюдал практически в каждом приложении.
Читать дальше →

RubyMotion: нативные iOS приложения на Ruby (перевод)

Reading time10 min
Views14K

В 2007 году Лоран Сансонетти, разработчик из Apple, основал проект с открытым исходным кодом MacRuby. Его целью было создание интерпретатора Ruby поверх среды исполнения Objective-C, который бы обеспечивал прозрачное взаимодействие между Ruby и экосистемой OS X «Cocoa» — и ему это удалось. Теперь Сансонетти надеется сделать что-то подобное и под iOS.

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

MongoDB или как разлюбить SQL

Reading time6 min
Views67K
Введение

Коллеги, при разработке приложений, мы каждый день сталкиваемся с потребностью в гибком хранении информации (обновлении, поиске по ней, и т.д.). Класс продуктов, которые решают этот круг задач, как все мы знаем — Базы данных. Но что это такое в нашем понимании? У многих «база данных» твердо ассоциируется с MySQL, таблицами и SQL-запросами. И это устраивает до определенного момента. Действительно, реляционные базы данных дают массу преимуществ в работе: поскольку данные имеют сильную связанность, не нужно контролировать целостность базы данных. Используя простой под-запрос можно выбрать количество комментариев к каждому посту в блоге. Используя JOIN нетрудно делать сложные связанные выборки и получать данные сразу о нескольких сущностях.
Читать дальше →

Использование связки Sinatra, mongodb и carrierwave, пишем простую фотогалерею

Reading time3 min
Views5.2K
Всем доброго времени суток!

Введение


На написание этого поста меня сподвигло слишком малое количество материала о sinatra, и тем более о данной связке. Надеюсь для кого то этот пост будет полезен. Ниже я опишу как можно совместно использовать sinatra, mongodb и carrierwave, на примере создания простой фотогалереи. Для общения между sinatra и mongodb мы будем использовать отличный gem — mongoid. По умолчанию предполагается что у вас уже установлен ruby и mongodb. Приступим.
Читать дальше →

Когда не нужно слушать пользователей при проектировании интерфейса

Reading time4 min
Views40K
Большинство специалистов, принимающих участие в проектировании и разработке пользовательских интерфейсов, давно запомнили простую истину — «интерфейс создается для конечного пользователя». А значит, пользователя нужно любить, лелеять и внимать каждому его отзыву. Но бывают случаи, когда юзабилист не должен слушать пользователя, давайте поговорим о проектировании интерфейса для профессиональных систем.
Читать дальше →

Расширяем Ruby с помощью Ruby: заимствуем у Python декораторы функции

Reading time8 min
Views5.1K
От переводчика: предлагаю вам перевод начала презентации Michael Fairley — Extending Ruby with Ruby. Я перевел только первую часть из трех, потому что она имеет максимальные практические ценность и пользу, на мой взгляд. Тем не менее, настоятельно рекомендую ознакомиться с полной презентацией, в которой помимо Python приводятся примеры заимствования фишек из Haskell и Scala.

Декораторы функции


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

Раньше я очень много работал с Python и декораторы функции определенно являются тем, чего мне так не хватает с тех пор, и кроме того тем, что может помочь практически всем нам сделать наш код на Ruby чище.

Возьмем Ruby и притворимся, что нам нужно перевести деньги с одного банковского аккаунта на другой. Вроде все просто, так?

def send_money(from, to, amount)
  from.balance -= amount
  to.balance += amount
  from.save!
  to.save!
end
Читать дальше →

ЭЦП в браузере: проблемы, решения, личный опыт

Reading time5 min
Views61K


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

На самом деле сегодня ситуация с ЭЦП в браузере все же не так печальна как еще несколько лет назад, но она все же далека от идеала. Тема эта также несколько раз поднималась на хабре, например, здесь и здесь.

Под катом рассказ о самой проблеме, о том, как эту проблему можно решить, о том, как я ее решал, а также личные впечатления о том, как обстоят дела с ЭЦП в Беларуси.
Читать дальше →

Fake S3 для офлайновой разработки и экономии денег

Reading time1 min
Views3.7K
Кёртис Спенсер (Curtis Spencer) с коллегами из компании Spool разработали легковесный сервер Fake S3, который ведёт себя как настоящий Amazon S3 и помогает тестировать проекты, не гоняя данные в облако и не тратя деньги на трафик. К тому же, для тестирования Fake S3 надёжнее, потому что работает локально. Спенсер говорит, что благодаря Fake S3 они сэкономили около $1000 за последний месяц на одной только оплате трафика.

Установка

gem install fakes3

Для запуска сервера нужно указать хост и порт

fakes3 -r /mnt/fakes3_root -p 4567

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

Наболевшее об исходном коде объектов БД

Reading time3 min
Views5.7K
Представьте такую ситуацию: команда разработчиков работает над программой. При этом исходный код приложения нигде не хранится. Каждый программист с помощью специального декомпилятора выгружает нужный код из бинарника, работает с ним, а потом вновь собирает и отдает на дальнейшую разаработку коллегам.
Как вы думаете, это нормальная ситуация? Думаю, что нет.
Но почему-то такой подход довольно часто применяется при разработке приложений БД.
Читать дальше →

Почему весёлым быть выгоднее, чем умным: исследования EQ в IT-среде

Reading time4 min
Views51K
Исследователь Дэвид Карузо и пара его коллег – это как раз те парни, из-за которых технические навыки и интеллект при приёме на работу в крупные IT-компании часто оцениваются заметно ниже, чем эмоциональный интеллект. То есть тот факты, что вы умный, означает гораздо меньше, чем то, что вы узнаёте вот этого парня с картинки:


Он пристально наблюдает за постом

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

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

Деньги из воздуха

Reading time2 min
Views2K
Этот пост отражает только мое личное мнение.

Побывал на саммите Open Source (http://www.pcweek.ru/foss/conference/program/), даже выступал там с докладом в секции «Сертифицированные и защищенные решения на базе СПО».

В этой же секции выступал товарищ из вот этой вот компании www.c-i-s.ru с докладом: «Проблемы при сертификации обновлений сертифицированных программных продуктов».

В докладе рассказывалось, с какими трудностями они сталкиваются при сертификации обновлений Microsoft Windows по «руководящим документам» (зашибись тема для Open Source саммита!), как преодолевают эти трудности и таки доносят сертифицированные обновления Windows до благодарного потребителя.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity