Появилась у меня как-то идея(или расcчётка по мобильным платформам) написать приложения под android на своём любимом ruby. И тут я вспомнил про проект который несколько раз упоминался в RubyNoName подкасте, собственно речь пойдёт о Ruboto.
Читать полностью »
Метка «ruby» - 11
Пишем приложение для Android на Ruby (Ruboto)
2013-01-08 в 14:01, admin, рубрики: android, ruboto, ruby, метки: android, ruboto, rubyПростой RESTful api сервер на Ruby (Sinatra)
2013-01-06 в 22:03, admin, рубрики: api, json, mysql2, ruby, sinatra, метки: api, json, mysql2, ruby, sinatraRails params & GC
2013-01-04 в 6:36, admin, рубрики: ruby, ruby on rails, security, XML, Егор Хомяков, информационная безопасность, метки: ruby, security, XML, Егор Хомяков У нас тут в rails комьюнити опять драма.
Есть методы типа find_by_* которые проецируются на модели в find_by_title например и find_by_id.
Их можно использовать так
find_by_id(params[:id], select: «CUSTOM SQL»)
Но обычно их используют вот так
find_by_id(params[:id])
И происходит SQL Injection если в params[:id] лежит {:select => «CUSTOM SQL»}. Обратите внимание — :select это символ а не «select»(строка). Это значит что трюк ?id[select]=SQL не пройдет т.к. ключ окажется строкой.
И вообще params это хеш типа HashWithIndifferentAccess. Те у него ВПРИНЦИПЕ не может быть символов в ключах т.к. они все уничтожаются при создании.
Есть такой gem authlogic, в общем виде он использует find_by_token(token) где token это объект из сессии(которая хранится в куках и подписана session_secret). Чтобы в него записать :select => «SQL» вам нужно знать session_secret, поэтому уязвимость крайне редкая.
Весь этот SQL Injection CVE не стоит выеденного яйца! И ради чего пост? DDoS!
Читать полностью »
Переходим на Puppet или как не испортить борщ
2012-12-27 в 18:52, admin, рубрики: linux, puppet, ruby, системное администрирование, метки: linux, puppet, ruby, системное администрирование Всем доброго времени суток.
Я работаю системным администратором в небольшой компании myhotspot, занимающейся различными разработками в сфере IT, в том числе на ruby on rails. Естественно приходится часто устанавливать и администрировать виртуальные сервера, для чего мы с успехом используем Puppet. На Хабре уже писали про Puppet (Как стать кукловодом или Puppet для начинающих или Puppet под нагрузкой), но не описали того, о чем на мой взгляд очень важно сказать. Суть проблемы, которую я хочу описать в процессе перехода на автоматическую систему управления конфигурациями серверов под названием Puppet. О том как это проще сделать, чем нужно руководствоваться, чего стоит опасаться и как жить дальше.
Читать полностью »
Практическое использование Racc — генератора LALR(1) парсера для Ruby
2012-12-26 в 21:43, admin, рубрики: LALR(1), parser, ruby, Программирование, метки: parser, rubyВ рамках создания фреймворка для некоторой системы Enterprise класса, у меня стояла задача создания утилиты для автоматизированной генерации кода по UML модели. Ничего наиболее подходящего для быстрого и эффективного решения задачи, кроме как использование Ruby, и встроенного шаблонизатора ERB, под руку не подвернулось.
Файл проекта из среды UML моделирования представлял собой базу данных формата SQLite3, однако некоторую часть информации в этой БД среда хранила в виде сериализованных в BLOB поля объектов. Формат сериализации был текстовый, но не совместимый ни с одним из известных, такими как XML, YAML, совсем отдаленно напоминал JSON. Использовать существующие в природе парсеры было невозможно.
В простых случаях, когда вам не требуется весь объект целиком, а только пара скалярных полей конкретной инстанции, то конечно можно тупо добраться до нужного регулярками. В противном случае, есть универсальное решение проблемы, позволяющее быстро создавать собственные парсеры для подобных структур, десериализующие их в объекты Ruby.
Читать полностью »
Слабые ссылки в различных языках программирования
2012-12-25 в 14:11, admin, рубрики: c++, haskell, java, perl, python, ruby, Программирование, метки: c++, haskell, java, perl, python, ruby, Программирование В языках с автоматическим управлением памятью сборщик мусора удаляет объекты, когда они перестают быть доступными по ссылкам. Обычно это именно то, что нужно: объект существует, пока есть возможность к нему обратиться.
Иногда такое поведение не подходит. Например, программе понадобилось хранить некоторую вспомогательную информацию об экземплярах некоторого класса, но у вас нет возможности добавить в этот класс своё поле. В этом случае можно создать отображение, в котором ключом будет объект, а значением — вспомогательная информация.
Вот тут-то и начинаются проблемы. Поскольку отображение хранит ссылки на ключи, те объекты, к которым была привязана вспомогательная информация, перестают освобождаться из памяти. Если программа в процессе своей работы создаёт много объектов, память рано или поздно заканчивается.Читать полностью »
Ведение логов в полевых условиях
2012-12-25 в 8:25, admin, рубрики: ruby, логи, Программирование, Проектирование и рефакторинг, метки: ruby, логи, ПрограммированиеДоброго времени суток. Я хочу порассуждать о такой, казалось бы, банальной вещи, как логи.
Ни для кого не секрет, что логирование занимает важное место в отладке и поддержке практически любого мало-мальски сложного продукта. Что может быть проще — вставлять значение переменной куда-то в поясняющую строку, да скинуть в файл. Но тут могут ждать несколько подводных камней, на них я и остановлюсь.
Читать полностью »
Как стать кукловодом или Puppet для начинающих
2012-12-25 в 6:02, admin, рубрики: linux, puppet, ruby, системное администрирование, метки: puppet, ruby, системное администрирование Здравствуйте.
Этот топик открывает цикл статей по использованию системы управления конфигурацией Puppet.
Что такое система управления конфигурацией?
Предположим, что у вас есть парк серверов, выполняющих различные задачи. Пока серверов мало и вы не растёте, вы легко настраиваете каждый сервер вручную. Устанавливаете ОС (может быть, автоматизированно), добавляете пользователей, устанавливаете софт, вводя команды в консоль, настраиваете сервисы, правите конфиги ваших любимых текстовых редакторов (nanorc, vimrc), выставляете на них одинаковые настройки DNS-сервера, устанавливаете агент системы мониторинга, настраиваете syslog для централизованного сбора логов… Словом, работы довольно много и она не особенно интересна.
Читать полностью »
Интервью с Джеффом «Cheezy» Морганом
2012-12-17 в 14:03, admin, рубрики: agile, bdd, jetbrains, ruby, ruby on rails, rubymine, tdd, Блог компании JetBrains, тестирование, метки: agile, bdd, jetbrains, ruby, ruby on rails, rubymine, tdd, тестированиеВсем привет!
Просим любить и жаловать: Джефф Морган, он же Cheezy (@chzy). Джефф дал нам подробное интервью о его новой книге «Cucumber & Cheese» и лучших методах тестирования, поэтому… довольно предисловий — читайте и знакомьтесь!
1. Здравствуйте, Джефф (Cheezy)! Спасибо, что нашли время поговорить с нами. Вы довольно известная личность, например, в мире Agile и ATDD. Но не могли бы Вы рассказать немного о себе для тех, кто еще Вас не знает?
Моя страсть – написание программ, чем я и занимаюсь почти тридцать лет. Восемь с лишним лет назад я решил покинуть «корпоративную машину» и основал компанию, которая впоследствии стала известна под названием LeanDog. С тех пор я путешествую по Соединенным Штатам и Канаде и помогаю группам разработчиков работать эффективнее, внедряя методики Agile и Lean.
Читать полностью »
Ruby Science: руководство по созданию качественных приложений на Ruby on Rails от thoughtbot
2012-12-13 в 22:29, admin, рубрики: best practices, patterns, ruby, ruby on rails, метки: best practices, patterns, ruby, ruby on railsthoughtbot (с маленькой буквы) — одна из ведущих американских консалтинговых фирм, ориентированных на веб разработку с помощью Ruby on Rails. thoughtbot эксплуатирует распространенную в этой среде бизнес-модель, и зарабатывает не только за счет консалтинга, но и за счет своих больших вкладов в Open Source, активного участия в жизни сообщества (например, подкаст Giant Robots Smashing into Other Giant Robots), образовательной деятельности (воркшопы, менторство), внутренних продуктов и литературы.
На их счету до сегодняшнего дня числилось две полноценных книги: The Playbook — исчерпывающий справочник по внутреннему распорядку и трудовым хитростям thoughtbot (бесплатна для изучения на их сайте), и Backbone.js on Rails — не менее исчерпывающее руководство по использованию JS фреймворка Backbone вместе с Ruby on Rails.
Интересна особенность их подхода к публикации книг. Это не статичный труд, написанный однажды, напечатанный на бумаге и устаревающий с годами, а продукт, поддерживающий версионность, развивающийся под влиянием читателей и сопровождающийся различными электронными плюшками, в том числе и готовым к использованию кодом примеров. «Исходники» книги хранятся на github, а это значит, что в любой момент читатель имеет возможность получить самый свежий релиз, сообщить о проблеме, обсудить какую-либо часть текста и т.п.
Сегодня они объявили о начале работы над новой книгой, под названием «Ruby Science. The reference for writing fantastic Rails applications». Более того, начать чтение книги и принять участие в её развитии можно уже сейчас.
Читать полностью »