Search
Write a publication
Pull to refresh
20
0

User

Send message

Полиморфные связи. Маленькое дополнение

Reading time3 min
Views1.3K
В декабре на Хабре была хорошая статья, о полиморфных связях в Рельсах. Вот она. Перед тем как читать дальше, пожалуйста ознакомьтесь с ней.
Однако, у автора статьи осталось несколько неотвеченных вопросов. Вот на них то мы сегодня и найдем ответы.
Читать дальше

SIP телефония для дома — реализация, опыт, фишки

Reading time9 min
Views204K
Всем привет.

В комментариях к различным топикам на Хабре нередко видел вопросы класса «А зачем вам нужна SIP-телефония дома» и «Как все это безобразие работает». Некоторые темы на хабре уже раскрывались, но многое осталось в тени. Посему решил описать используемую мной схему SIP-устройств и сервисов, и набросать некоторые планы на будущее.

Просто повторять аксиому, что SIP – это далеко не только дешевые междугородние звонки через sipnet или других операторов я не буду, и постараюсь в данном топике раскрыть все многообразие возможных вариантов применения SIP в быту.
Читать дальше →

Программист и рисование

Reading time5 min
Views13K


Нужно ли программисту уметь рисовать? Я подумал это довольно-таки интересная тема, под катом рассуждения о том нужно ли это вообще + урок рисования кота для полных новичков от программиста.

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

Эрик Липперт — Генерация всех произвольных деревьев

Reading time3 min
Views8.9K
BinaryTrees1В прошлый раз мы говорили о том, что число бинарных деревьев с n вершинами равно C(n), где C(n) – это n-ое число Каталана. Я заинтересовался чего больше: произвольных деревьев из n вершин или бинарных деревьев из n вершин. Ответ может вас удивить, он не лежит на поверхности.
BinaryTrees2

Распространённый ответ на этот вопрос я получу сразу: «Разумеется, произвольных деревьев больше, т.к. бинарное дерево – это частный случай произвольного дерева». Можете ли вы сказать, почему это неверно? Бинарных деревьев больше, чем произвольных деревьев! Существует два бинарных дерева из двух вершин: одно с левым потомком ребёнком корня, а другое – с правым потомком корня. Но есть только одно произвольное дерево с двумя вершинами, в нём нет разницы между «левым» и «правым» потомком.
Читать дальше →

Эрик Липперт — Генерация всех бинарных деревьев

Reading time4 min
Views12K
Раньше я описывал небольшой алгоритм, который делал небольшие операции на бинарными деревьями. Я хотел протестировать его. Я попробовал несколько небольших тестов и они прошли, но я не был доволен. Я был почти уверен, но возможно какая-то непонятная топология бинарного дерева могла привести к ошибке. Я сообразил, что существует конечное количество бинарных деревьев данного размера. Я решил попробовать их все.
Читать дальше →

Плагин авторизации через Вконтакте, Yandex, Google, OpenID и тп

Reading time1 min
Views19K
В недавнем моем посте «Javascript виджет авторизации OpenID» на хабре, я описал свою разработку виджет-consumer авторизации OpenID.

Прошло время, я получил много положительных отзывов, получил замечания и пожеланию по улучшению виджета. Среди пожеланий развития была просьба создать WordPress плагин и добавить поддержку Вконтакте OpenAPI.
Читать дальше →

Астериск продолжает говорить по-русски!

Reading time2 min
Views18K
Замечательный подарок для всех любителей мира открытых коммуникаций – вышел очередной релиз уникального русскоязычного голосового пакета для IP АТС Астериск. Более 600 фраз и слов, адаптированных для «русского уха», доступны для свободного использования!
Читать дальше →

Повышаем производительность Ruby on rails приложений с помощью ActiveMQ

Reading time4 min
Views8.7K
В своём посте хочу рассказать о возможности использования ActiveMQ в проекте написанном на фреймворке Ruby on rails.

Что такое Message Queue?


MQ – это архитектура обмена сообщениями между компонентами приложения в асинхронном режиме. Т. е. отправитель и получатель могут взаимодействовать в разное время. Состоят такие системы из producer'а (отправителя) и consumer'a (получателя) которые взаимодействуют между собой через broker.

Используя такие системы можно существенно увеличить производительность приложения, выполняя код в асинхронном режиме. Допустим у вас есть код который очень замедляет выполнение какой то части на вашем сайте, чтобы пользователь не ждал завершение работы такого кода, лучше его выполнить в асинхронном режиме. Несколько простых примеров:
— генерация thumbnails;
— сбор статистики;
— рассылка писем/сообщений;
— удаление данных с таблиц;
— индексация данных;
— импорт данных в базу.

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

Backup My App – резервное копирование сайтов на Ruby On Rails

Reading time1 min
Views1.1K
Привет, ruby-on-rails-разработчики. Я работаю программистом в Теориях и практиках и хочу рассказать про Backup My App – сервис бекапа для ror-приложений, который мы используем.

Его придумали и сделали ребята, с которыми я работаю; они как-то раз выяснили, что некоторые хостинги умеют подчистую удалять данные и сразу после этого начали мечтать о простом резервном копировании.

Как это работает

Сервис платный: есть бесплатный тарифный план только для одного приложения на один гигабайт, либо нужно платить за 5 гигабайтов 3 доллара в месяц, за 100 гигабайтов – $60. После регистрации нужно
  • установить плагин
    $ script/plugin install git://github.com/crocoduck7/backupmyapp.git
  • запустить генератор
    $ script/generate backupmyapp KEY=выданный ключ
а потом отправить изменения на сервер. После этого сайт – код, база данных, файлы – начнет бекапиться.

Что это даст



Это даст ежедневные автоматические бекапы с предпросмотром в браузере, загрузкой, восстановлением и просмотром статистики за просто так. Я считаю, что это чудо.

ActiveModel: пусть любой Ruby объект почувствует себя ActiveRecord

Reading time8 min
Views4.7K
Yehuda Katz опубликовал эту запись в своем блоге 10 января 2010 года.

Огромное количество действительно хорошей функциональности Rails 2.3 скрыты в его монолитных компонентах. Я уже публиковал несколько сообщений о том, как мы упростили код маршрутизатора, диспетчера и некоторых частей ActionController, частично реорганизовав функциональность ActionPack. ActiveModel — еще один модуль, появившийся в Rails 3 после реорганизации полезной функциональности.
Читать дальше →

Google Analytics: Определение позиции сайта по ключевому слову в поисковой системе Google

Reading time3 min
Views46K
На текущий момент с помощью инструментов веб-аналитики можно отследить множество различных параметров, в том числе и ключевые слова, по которым пользователи перешли на сайт из поисковых систем. Но нам предоставляется информация только о том поисковом запросе, с которого пользователь перешел на сайт, но не его место в выдаче поисковой системы, на которое кликнул посетитель.

К сожалению, большинство поисковых систем не предоставляют возможности отследить, с какой позиции поисковой выдачи был осуществлен переход на сайт. Однако такую возможность предоставляет поисковая система Google. Единственное условие — возможность определить позиции можно только у тех пользователей, которые были авторизованны в Google.

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

Числа Фибоначчи и золотое сечение

Reading time1 min
Views4.2K
На Хабре я уже писал про числа Фибоначчи и золотое сечение. Но не смог удержаться, чтобы не выложить новое видео с новыми примерами этого чуда во многих областях нашей жизни.

Редирект после POST запроса

Reading time2 min
Views48K
Каждый веб-разработчик знает, что после POST сабмита формы желательно сделать редирект, чтобы предотвратить повторную отправку данных, когда пользователь захочет обновить страницу. В основном это критически необходимая операция, так как данные формы могут сохраняться в базе данных или участвовать в платёжной транзакции. И тогда данные не только продублируются, но и спишутся лишние деньги.

Но речь не о деньгах, а о правильном редиректе…
Читать дальше →

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

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

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

Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables

Reading time7 min
Views67K
Здравствуй, Хабр!
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).

Способ реализация

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

Область применения

Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.

SEO под DDoS-ом

Ваш сайт будет правильно индексироваться во время атаки, что позволит сохранить позиции в выдаче поисковых систем. Особенно актуально для сайтов с большими SEO бюджетами.

Стоимость и эффективность

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

Полиморфные связи

Reading time10 min
Views10K
На днях в блоге Ruby on Rails появилась статья о полиморфных связях, в которой автор писал всякие разные вещи, но при этом забыл упоминуть, как их использовать и зачем они нужны (потом, конечно же, исправился, но все равно написал достаточно поверхностно).
Поначалу я даже испугался, что это моя статья каким-то непостижимым образом вырвалась из «черновиков» и попала в общую ленту. Потом разобрался, собрался с мыслями, и решил таки дописать свою.

Что же такое полиморфные связи и для чего они нужны? В одном из своих скринкастов Ryan Bates уже рассказывал об этом, и я ни в коем случае не хочу рассказывать то же самое. Ситуация была следующей:
у нас есть модели Статьи, Фотографии и События. А еще есть модель Комментарии. А еще очень хочется все комментарии (комментарии статей, фотографий и событий) хранить в одной таблице.
Статей по этой проблеме в интернете очень много, но бывают и случаи «наоборот». Далеко ходить не нужно, давайте попробуем разработать функционал постов Хабрахабра!
Читать дальше →

Типовой шаблон технического задания на разработку сайта

Reading time2 min
Views450K
ОФФТОП: Хочу выразить свою благодарность, всем кто плюсанул мой предыдущей пост и карму, это позволило мне пригласить на Хабр еще несколько хороших людей.

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

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

«Мое дело» — подготовка документов для регистрации ИП

Reading time1 min
Views2.3K
Регистрация ИП - бесплатно
Привет!

Представляем хабрасообществу новый сервис от онлайн-бухгалтерии "Мое дело".

Теперь все документы, необходимые для регистрации ИП, можно подготовить за 10 минут на условиях DonationWare. То есть абсолютно бесплатно, но если если все очень понравилось, то можно сказать спасибо.

Подробности и скриншоты под катом.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity