Entry tags:
Special Olympics - айсед в рантайме
скриншот
Полудневное (поверхностное) вздрючивание айседного приложения как средствами собственно веб-морды, так и 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
- мы видим сикль в логах. целый запрос а не анальное говно с вопросиками и вагоном параметров в жопе.
минусы:
- ну есть метаклассы захотят формат параметров использовать с скобках
- чуууууть больше нагрузка на базу. умные люди меряли, она незначительна.
------
теперь пусть дурачки пизданувшие про закаты солнца вручную (artureg, sorhed, veter_r_r, falcrum) приведут воспроизводимые замеры где препаред стэйтменты дают более 10% перфоманса или возьмут мой мозолистый хуец в свой нежный ротик и начнут сосать причмокивая.
ещё раз - можно были спокойно взять ruby-dbi и использовать те самые преп стэйтменты (код даже было бы на пару строк меньше), но оно плохо, см. выше.
no subject
no subject
охуенно практично. "я покупаю ВАЗ, потому что его легко чинить"
"- чуууууть больше нагрузка на базу. умные люди меряли, она незначительна."
какие люди? Где они?
no subject
no subject
бугага, тебе это мама сказала? :)))))))))))))))
no subject
no subject
no subject
no subject
no subject
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
no subject
ещё раз - я мог просто убрать эти 5 строк и заменить .execute на .exec_query которая понимает бинды (ака параметры). но зачем если это плохо?
no subject
э... как вообще логирование происходит???
у рубёвых либ отсутствует возможность делать callback на уровне курсора/коннекшена???
no subject
no subject
«Как видите, включение параметризованных запросов повысило пропускную способность базы данных на 30-40% и даже обеспечило 15-25%-ное повышение по сравнению с режимом Statement Concentrator.»
Отсосать у себя не дам: ты и зубы, поди, не чистишь.
no subject
no subject
Соглашусь, что РЕАЛЬНО надо смотреть. Это да. Но... :)
no subject
no subject
no subject
Но соскакиваешь ты интересно. :)
no subject
http://www.engineyard.com/blog/2011/sql-server-10xs-faster-with-rails-3-1/
no subject
no subject
У меня - самый большой :)