Special Olympics - айсед в рантайме
Feb. 7th, 2012 12:12 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
скриншот
Полудневное (поверхностное) вздрючивание айседного приложения как средствами собственно веб-морды, так и wget и редактированием конфига нашло только несколько мелких багов, типа "приложение показывает 500 Server error если указать кривой url".
Еще один мелкий баг был - редактирование конфига отчетов привело к незапускаемости rails s вообще, с диким стек-трейсом.
После исправления практически все кривые запросы напрямую к json-сервис показывали 403.
Ошибки в конфиге отчетов пишутся в лог сервиса.
Еще один крайне спорный момент: обработка параметров запроса:
theiced не использует препаред статементы,а вместо этого заменяет параметры регэкспом, а их значения обрабатывает ActiveRecord::Base.sanitize. Т.е. если мы верим либе - то у нас sql-injection не будет. Айсед утверждает, что у них так принято, хотя я всегда считал что единственно кошерный вариант - это препаред статементы и обработка переменных-параметров сервером.
Это решение, кстати, делает невалидными(не грузит их) такого рода sql-запросы:
select *,'?somestring' from test where stringval like ?stringval and boolval=?boolval
т.к. ?somestring оно считает параметром, хотя он очевидно не параметр, а литерал
Полудневное (поверхностное) вздрючивание айседного приложения как средствами собственно веб-морды, так и wget и редактированием конфига нашло только несколько мелких багов, типа "приложение показывает 500 Server error если указать кривой url".
Еще один мелкий баг был - редактирование конфига отчетов привело к незапускаемости rails s вообще, с диким стек-трейсом.
После исправления практически все кривые запросы напрямую к json-сервис показывали 403.
Ошибки в конфиге отчетов пишутся в лог сервиса.
Еще один крайне спорный момент: обработка параметров запроса:
@sql.scan(/\?\w+/).each do |name| real_name = name[1 .. -1].downcase parameter = @parameters.find { |p| p.name == real_name } value = ActiveRecord::Base.sanitize(parameters[@parameters.index(parameter)]) expanded_sql.sub!(name, value) end
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Это решение, кстати, делает невалидными(не грузит их) такого рода sql-запросы:
select *,'?somestring' from test where stringval like ?stringval and boolval=?boolval
т.к. ?somestring оно считает параметром, хотя он очевидно не параметр, а литерал
no subject
Date: 2012-02-07 09:23 am (UTC)no subject
Date: 2012-02-07 09:50 am (UTC)Всегда знал, что Rails — это такой PHP-переросток.
no subject
Date: 2012-02-08 04:04 pm (UTC)no subject
Date: 2012-02-08 04:09 pm (UTC)отчёты - их посмотреть хочется. иногда. побыстрее начать это делать. хоть на бейсике, хоть на фортране. ну это наверное я так понимаю задачу.
в этом смысле рулить будут именно бейсики и руби и пхп. что угодно кроме низкоуровневых ЯП.
no subject
Date: 2012-02-07 10:10 am (UTC)no subject
Date: 2012-02-07 10:27 am (UTC)no subject
Date: 2012-02-07 10:10 am (UTC)no subject
Date: 2012-02-07 10:17 am (UTC)ви ничего не понимаете, prepared statements - анальный кал, и используют его только нищеброды с xml-ем головного мозга
(/iced_mode)
no subject
Date: 2012-02-07 10:18 am (UTC)no subject
Date: 2012-02-07 11:37 am (UTC)no subject
Date: 2012-02-07 12:23 pm (UTC)no subject
Date: 2012-02-07 11:10 am (UTC)no subject
Date: 2012-02-07 11:29 am (UTC)no subject
Date: 2012-02-07 11:23 am (UTC)- мы видим сикль в логах. целый запрос а не анальное говно с вопросиками и вагоном параметров в жопе.
минусы:
- ну есть метаклассы захотят формат параметров использовать с скобках
- чуууууть больше нагрузка на базу. умные люди меряли, она незначительна.
------
теперь пусть дурачки пизданувшие про закаты солнца вручную (artureg, sorhed, veter_r_r, falcrum) приведут воспроизводимые замеры где препаред стэйтменты дают более 10% перфоманса или возьмут мой мозолистый хуец в свой нежный ротик и начнут сосать причмокивая.
ещё раз - можно были спокойно взять ruby-dbi и использовать те самые преп стэйтменты (код даже было бы на пару строк меньше), но оно плохо, см. выше.
no subject
Date: 2012-02-07 12:29 pm (UTC)no subject
Date: 2012-02-07 01:03 pm (UTC)охуенно практично. "я покупаю ВАЗ, потому что его легко чинить"
"- чуууууть больше нагрузка на базу. умные люди меряли, она незначительна."
какие люди? Где они?
no subject
Date: 2012-02-07 01:35 pm (UTC)no subject
Date: 2012-02-07 03:17 pm (UTC)бугага, тебе это мама сказала? :)))))))))))))))
no subject
Date: 2012-02-07 04:01 pm (UTC)no subject
Date: 2012-02-07 04:01 pm (UTC)no subject
Date: 2012-02-07 04:01 pm (UTC)no subject
Date: 2012-02-07 04:17 pm (UTC)no subject
Date: 2012-02-07 04:20 pm (UTC)http://www.simple-talk.com/community/blogs/philfactor/archive/2009/08/03/74227.aspx
http://www.codeproject.com/Articles/16994/Use-SQL-Parameters-to-Overcome-Ad-Hoc-Performance
вот какие-то тесты. adhoc не использую, по причине нахуй ненужности. Что такое сбор запроса из строк забыл лет 5 назад.
no subject
Date: 2012-02-07 04:23 pm (UTC)no subject
Date: 2012-02-07 04:29 pm (UTC)ещё раз - я мог просто убрать эти 5 строк и заменить .execute на .exec_query которая понимает бинды (ака параметры). но зачем если это плохо?
no subject
Date: 2012-02-07 03:21 pm (UTC)э... как вообще логирование происходит???
у рубёвых либ отсутствует возможность делать callback на уровне курсора/коннекшена???
no subject
Date: 2012-02-07 04:01 pm (UTC)no subject
Date: 2012-02-07 05:05 pm (UTC)«Как видите, включение параметризованных запросов повысило пропускную способность базы данных на 30-40% и даже обеспечило 15-25%-ное повышение по сравнению с режимом Statement Concentrator.»
Отсосать у себя не дам: ты и зубы, поди, не чистишь.
no subject
Date: 2012-02-07 05:42 pm (UTC)no subject
Date: 2012-02-07 05:44 pm (UTC)Соглашусь, что РЕАЛЬНО надо смотреть. Это да. Но... :)
no subject
Date: 2012-02-07 05:49 pm (UTC)no subject
Date: 2012-02-07 05:48 pm (UTC)no subject
Date: 2012-02-07 05:57 pm (UTC)Но соскакиваешь ты интересно. :)
no subject
Date: 2012-02-07 05:24 pm (UTC)http://www.engineyard.com/blog/2011/sql-server-10xs-faster-with-rails-3-1/
no subject
Date: 2012-02-08 06:03 am (UTC)no subject
Date: 2012-02-08 06:30 am (UTC)У меня - самый большой :)
no subject
Date: 2012-02-07 11:30 am (UTC)no subject
Date: 2012-02-07 11:47 am (UTC)no subject
Date: 2012-02-07 11:54 am (UTC)no subject
Date: 2012-02-07 12:19 pm (UTC)no subject
Date: 2012-02-07 12:23 pm (UTC)no subject
Date: 2012-02-07 12:32 pm (UTC)no subject
Date: 2012-02-07 01:03 pm (UTC)no subject
Date: 2012-02-07 01:39 pm (UTC)Не, понятно, что если ормы использовать в индо-ортуро-стайле:
то ничего хорошего из этого не выйдет.
no subject
Date: 2012-02-07 11:38 am (UTC)no subject
Date: 2012-02-07 11:55 am (UTC)аргументы или присоединяйтесь к весёлой групке уже сосущей мой хуй.
как меня бесит школота типа тебя которая прочитала одну говнокнижку по говножабе, свято ей верит и думать не умеет.
no subject
Date: 2012-02-07 05:33 pm (UTC)А что касается производительности - тут я с ребе айседом согласен. Нужно сначала мерять, а потом уже тюнить.
no subject
Date: 2012-02-07 05:46 pm (UTC)