Как так, Ruby ?
Я вот всегда думал, что такие серьезные проекты как Python, Perl, Ruby и прочие, пишутся людьми »семи пядей во лбу». А оказывается, что и у них бывает проскакивает всякого рода быдло-код.
Наткнулся сегодня на такую статейку на рубиинсайдере http://www.rubyinside.com/ruby-1-9-3-faster-loading-times-require-4927.html. Суть (насколько это я понял): при использовании функции «require», которая подключает новый файл в программу, имя этого файла заносится в некий массив (кэшируется). При повторном включении, этот массив проверяется и если файл уже включен — функция ничего не делает. В общем случае для того чтобы узнать присутствует ли тот или иной элемент в массиве, что необходимо предпринять? Правильно! ПЕРЕБРАТЬ ВЕСЬ МАССИВ (тем или иным способом)! Все книжки о таких языках как Perl, PHP, Ruby начинаются с описания структур данных, во всех этих книжках все нахваливают такие структуры как хэш, ассоциативный массив или словарь и настоятельно рекомендуют их использовать из-за высокой скорости работы. А тут вот такое дело… Одно хорошо — руби избавился от такой «детской», на мой взгляд, болезни.
Подработка
Из-за наличия огромного количества свободного времени (шучу конечно, просто денежки очень нужны) ищу подработку на 10-12 часов в неделю.
Идеальным был бы вот такой вариант: по 2-2.5 часа в будни (понедельник, среда, пятница) + 4-5 часов в один из выходных дней (и я отдохнуть тоже хочу), но рассмотрю и Ваши варианты. Предпочтительно долгосрочное сотрудничество, но короткие и интересные задачки тоже подойдут.
Понимаю, что большой проект при таком графике будет строиться долго, но исправление ошибок и добавление новых фишек (иными словами «поддержка») в готовые/почти готовые проекты никто не отменял. Вот это умею готовить
Что касается оплаты — пишите, договоримся =)
Правила хорошего тона для веб-приложений
Некоторые моменты интересны, некоторые спорны, но просмотреть слайды рекомендую.
Источник http://tonsky.livejournal.com/241759.html
MVC такой MVC =)
Попытался объяснить, что такое MVC на примере, вот результат:
….для этого пишется контроллер, который по переданному id лезет через модель в базу и достает информацию о фльме, после чего передает ее в шаблон для отображения…
Сам бы, наверное, ничего не понял…
Как я делал pechat-noginsk.ru
Продолжаю рассказ о проектах и сайтах, которые мне приходилось делать.
Первой была заметка о каталоге объектов недвижимости http://www.buyrealty.su/.
Сегодня речь пойдет о сайте для заказа печати фотографий — http://pechat-noginsk.ru/
В один прекрасный день я получил сообщение на моем круге приблизительно следующего содержания:
«Андрей, нам необходим специалист для разработки программы приема заказов фото печати через интернет…»
После некоторой переписки выяснилось, что заказчику нужна именно программа, т.е. реальное десктопное приложение. Я естественно отказался, так как писать десктоп-приложения — это не моя специализация. Однако в своем «прощальном» письме все же предложил вместо приложения реализовать сайт/портал для приема этих самых заказов. Через некоторое время мне ответили согласием, но с одной оговоркой, которая касалась бюджета. Заказчик хотел опробовать наш местный рынок и посмотреть пойдут ли вообще эти услуги. В связи с этим бюджет был весьма ограничен, более того от услуг дизайнера/верстальщика тоже решили отказаться. Как и большинство своих проектов, этот проект я решил делать на фреймворке Yii, который активно изучал (и продолжаю это делать). В качестве «дизайна» самого сайта и личного кабинета пользователя/администратора я предложил использовать макеты, кторые Yii генерирует при создании CRUD-а для моделей базы данных. Заказчик одобрил это.
Практически любой сайт состоит из стандартных элементов, таких как: страницы, регистрация и авторизация пользователя, форма обратной связи и т.д. После того как человек слез с дерева и заменил палку-копалку клавиатурой и монитором — изобрели CMS, которые все эти проблемы решают на «раз два». В то время я активно разрабатывал свой «движок» на фреймворке Yii и решил попробовать применить его в первом «настоящем» проекте. Так как управление страничками, пользователями, регистрациями и авторизациями, а так же форма обратной связи — у меня уже были реализованы, осталось всего лишь написать модуль для работы с заказами.
Модуль оказался довольно простой. Вот что он умеет:
- позволяет пользователю создать и отправить заказ, добавив в него фотографии
- создает превьюшки всех фотографий загружаемых пользователем
- позволяет рассчитать стоимость заказа в зависимости от размера фото, типа бумаги, эффектов и т.д.
- позволяет распечатать квитанцию, с которой пользователь обращается в фото-мастерскую
- позволяет управлять (создавать, редактировать) отделениями фото-печати (их около 10)
- администратор может управлять статусом заказа, может отредактировать заказ и т.д.
Проект размещается на простеньком хостинге, который не отличается супер производительностью и бесконечными ресурсами. В связи с этим были введены некоторые ограничения:
- за один раз можно загружать только 5 фотографий (экономим ресурсы)
- после того как заказ выполнен, все фотографии и превьюшки удаляются (экономим диск)
- пустые заказы периодически чистятся (они ведь тоже занимаю кое-какое место =) )
В процессе разработки возникло несколько ситуаций, когда ресурсов хостинга мягко говоря «не хватало». Вот они:
- генерация превью для фотографий — если позволить пользователю загружать за один раз произвольное количество фотографий — при загрузке, приблизительно 10-15 фотографий и более — упираемся в недостаток памяти, а иногда работа прекращается из-за таймаута. По хорошему можно было просто загружать фотографии, а генерацию превью производить в фоновом режиме или вообще организовать что-то типа очереди.
- менеджер магазина может скачать все фотографии по заказу за один раз, для этого фотографии ужимаются в архив и уже этот архив отдается на скачку, после чего удаляется. При генерации таких вот архивов тоже бывали ситуации когда не хватало оперативной памяти. После переговоров с хостером немного памяти нам все же добавили.
В записной книжке сохранилось несколько TODO-листов по этому проекту, вот они (фото с мобильника):
На сайте есть несколько моментов, которые можно улучшить, да и идей по его доработке/развитию у меня предостаточно (не буду выдавать все тайны), но заказчика все устраивает и в таком виде.
Хозяин — барин!
В целом и я и заказчик остались довольны проделанной работой (я надеюсь =)).
Продолжение следует =)



