Pull to refresh
5
0
Send message

Ruby — хранение части кода в базе данных

Reading time1 min
Views648
Сегодня нашел еще один способ как можно использовать «фишку» интерпретируемых языков — создавать и выполнять программный код в процессе работы программы.

Можно положить часть кода в базу данных.

Для чего это нужно?

Мне встретилась такая задача — писать онлайн тесты.
У каждого теста есть функция — по которой ответам пользователя ставится в соответствие — номер описания результата

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

и теперь в месте, где нужно рассчитать результат теста пишем:
eval(@test.function)

function — это и есть ячейка в таблице БД, описывающей тесты.
при этом код просто вставляется в это место программы и выполняется, ему даже не надо передавать в качестве параметров результаты ответов пользователя, он их и так уже видит

Правда если внутри строки, передаваемой eval объявить локальную переменную, то внешняя программа ее не будет видеть (по крайней мере у меня не увидела, хотя в консоли все было ок), поэтому лучше пользоваться переменными экземпляра (instance variables) вида — @varname

Подозреваю справедливую критику со стороны любителей строгого ООП. Но приводить этот пример в согласие с ООП я не буду, если есть желание — поэкспериментируйте.
Total votes 16: ↑5 and ↓11-6
Comments23

Пути развития интернет-технологий

Reading time9 min
Views613
IBM только что объявила о выпуске набора офисных программ IBM Lotus Symphony. Звучит как еще один вариант StarOffice (бесплатного пакета офисных прогамм от Sun Microsystems). Но я подозреваю, что они пытаются стереть из памяти изначальный вариант Lotus Symphony, который преподносится и пиарился чуть ли не меньше нового пришествия Христа, но в итоге оказался довольно блеклым.

В конце 80-х, Lotus попытался решить, что же делать дальше с их главным продуктом по работе с табличными данными и графикой — Lotus 1-2-3. Было 2 очевидных пути: первый, они могли просто добавить новую функциональность. Например, работу с текстом. Этот продукт был назван Symphony. Другой очевидной идеей было, создать программу, для работы с 3-хмерными таблицами. Так 1-2-3 стала версией 3.0.

Обе идеи быстр уперлись в серьезную проблему: старое ограничение памяти в DOS в 640К. IBM только начал выпускать компьютеры с чипами 80286, которые могли адресовать больше памяти, но Lotus не думал, что рынок достаточно широк для программного обеспечения, которое требовало компьютеров за 10 000$. Поэтому они ужимались и ужимались. Они потратили 18 месяцев, пытаясь заставить работать Lotus 1-2-3 в DOS-е с его ограничением в 640К оперативной памяти, и в конечном счете, после кучи потраченного времени, были вынуждены отказаться от функционала работы с 3-хмерными таблицами, чтобы подогнать свой продукт под ограничение оперативной памяти. В случае же Symphony, они просто отрубали функциональность налево и направо.

Ни одна из стратегий не оказалась правильной. К тому времени, когда Lotus 123 3.0 был выпущен, каждый имел 80386 процессор и 2М оперативной памяти. И Symphony имел несовременный механизм работы с таблицами и работы с текстом и некоторые другие устарелые вещи.

«Ну, хорошо, приятель,» скажете, Вы. «Кого волнуют какие-то старые программы?»

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

Ограничение памяти и мощности процессора.



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

В поздние 90-е парочка компаний, включаю Microsoft и Apple, заметила (чуть раньше, чем все остальные) что закон Мура означает, что им не стоит уделять слишком много внимания производительности и экономии памяти… просто создавать хорошие продукты, и ждать появления железа, на котором все это будет работать. Microsoft впервые выпустил Excel для Windows, когда 80386-ые были слишком дороги для большинства пользователей, но они были терпеливы. Не дольше, чем через 2 года, вышли 80386SX, и каждый, кто был в состоянии позволить себе выделить 1500$ мог работать в Excel.

Читать дальше →
Total votes 45: ↑13 and ↓32-19
Comments10

Information

Rating
Does not participate
Registered
Activity