PrestaShop это электронный магазин, однако может работать в формате каталога (с версии 1.4, которая вот-вот зарелизится, вчера вышел RC5). Система бесплатная, open source, разрабатывается и поддерживается организацией Prestashop SA. Сообщается более чем о 50 тысячах инсталляций по всему миру, система заняла первое место в номинации Open Source E-Commerce Applications 2010. Хотя мой опыт работы с ней невелик, возможно, кому-нибудь будет полезно нижеследующее краткое резюме (касается версии 1.4).
"Мёбель" из ДСП
Ранее я рассказывал о проекте RepRap -- трехмерном принтере, могущем печатать собственные запчасти (в идеале все, пока лишь некоторые). Вся документация и программное обеспечение находятся в открытом доступе, так что каждый может попробовать собрать что-нибудь подобное, разумеется, при наличии некоторых знаний и комплектующих.
И вот, на днях прочитал про еще одно устройство подобного типа, сделанное в наших непростых условиях умельцами из Москвы. Непростые условия потому, что нужных комплектующих часто не достать, приходится изворачиваться с тем, что доступно. На западе в этом отношении все проще -- существует отдельная индустрия "самоделок" со своими магазинами, сервисами доставки и проч. Тем не менее, прототип "пока-еще-не-самовоспроизводящего" трехмерного принтера был построен. Несущий каркас станка сделан из ДСП (отсюда и название детища "Мёбель", с закосом под буржуйский "Мендель"), электроника на базе Freeduino, сопла стеклянные, обеспечивающие разрешение около 0,5 мм, в качестве сырья используется термопластик ABS. В конечном итоге, по словам разработчика, печать мелких бытовых изделий вполне себя оправдывает с экономической точки зрения (наверное, амортизацию принтера не учитывали, но все же). Спортивный свисток обходится в 15 российских рублей с учетом электричества (печатается около 3 часов), а в магазине аналогичный стоит 99 рублей. Если интересуетесь темой, прочтите тот пост, он написан занимательно.
Что же касается основного проекта RepRap, то там, как я понял, идет оптимизация схемы, создаются разнообразные модификации и т. п. Одной из существенных проблем, которую пытается решить сообщество, является печать проводящих элементов для создания электрических цепей. Пока что хорошего решения нет, идет поиск.
Выбор Open Source электронного магазина
Понадобился сабж для быстрого запуска небольшого, но функционального магазина. Краткие результаты анализа по отдельным вариантам (чисто субъективно, конечно, в код не было времени лазить):
- AlegroCart -- базируется на несколько устаревшей версии OpenCart, простой интерфейс.
- Axis -- написан на ZendFramework, широкие возможности, но и требования к серверу не уступают. Чем-то похож на клон Magento.
- Batavi -- форк OsCommerce 3, еще в альфе, но говорят что можно пробовать. На вид функционал широкий, но вот сайт проекта оставляет печальное впечатление.
- eclime -- форк ОсКоммерц 2, я такие игнорировализ-за тяжелого груза обратной совместимости.
- ECShop -- говорят, отличается скоростью и неприхотливостью. Однако официальный сайт на китайском, что печалит.
- LiteCommerce -- может работать как модуль к Друпалу или самостоятельно. Выглядит приятно, хотя и лаконично. Требует php 5.3. И пока что в альфе.
- Magento -- серьезное, громоздкое решение. С точки зрения разработчика многие хвалят, но и куча критики налицо.
- OpenCart -- компактная и легкая система, обладающая основным необходимым функционалом. К сожалению, мало модулей, расширяющих функционал. Несмотря на некоторые странности разработчика, вполне пригодна для быстрого запуска небольшого магазина.
- osCMax -- форк ОсКоммерц 2
- osCommerce -- весия 3 в глубокой альфе, а двойка морально и технически устарела.
- OXID eShop -- детище сумрачного тевтонского гения. "Из коробки" функционал обширнейший, но существенным недостатком является интуитивно непонятная и неприветливая админка. Да и не совсем понятно, как обстоит ситуация со сторонними модулями.
- PrestaShop -- функционал очень широкий, модулей много самых разных, активный форум. Из минусов тяжеловесность и местами сомнительная архитектура.
- TomatoCart -- интересная современная система, но вот админка очень не понравилась, несмотря на кажущуюся "продвинутость".
- Drupal+UberCart -- во-первых, нужно хорошо знать Друпал, чего про себя пока не могу сказать. Во-вторых, функционал готовых магазинов на этой связке как-то не поразил, хотя они приводились в пример.
- Zen Cart -- возможно, я избалован, но смущает, что текущий релиз 1.3.х актуален с 2006 года, все это время происходили лишь багфиксы, судя по их истории версий.
В итоге сошлись OpenCart и PrestaShop. В данном конкретном случае победил PrestaShop из-за обширного функционала и большого количества модулей. Сыграл свою роль встроенный модуль CMS -- OpenCart позволяет создавать лишь набор страниц без иерархии. В нестабильной ветке 1.4.х Преста внедрена широкая поддержка кэширования, надеюсь, это несколько убыстрит магазин. Программная архитектура не отличается изысканностью, но пока не сталкивался с существенными трудностями при разработке.
С Рождеством Христовым!
Вот и дождались этого радостного Праздника! Желаю моим читателям побольше радости в наше непростое время. Радуйте друг друга, делайте подарки, улыбайтесь, помогайте словом и делом! Увидите -- мир будет меняться в лучшую сторону.
Вот вам хороший позитивный барельеф 4-го века -- поклонение волхвов
Любителям javascript -- компактная рождественская елка, победившая на конкурсе JS1k #2, Xmas edition. А вот так она делалась.
Радостного вам Рождества Христова!
С наступающим Новым 2011 годом!
Есть много мнений по поводу того, стоит ли праздновать Новый год. Но как бы то ни было, у этого праздника есть одна очень положительная особенность: так уж повелось, что у большинства жителей ex-USSR он ассоциируется с надеждой. Надеждой на нечто лучшее, на новые впечатления, на исправление ошибок лет минувших. Ну и с ожиданием чего-то радостного.
Пусть же в будущем 2011 году нам всем представятся возможности воплотить эти надежды в радостную реальность, избежав при этом отрицательных побочных эффектов!
Краткий туториал по Jelly-Rauth
Всех тех, кто празднует Рождество Христово 25 декабря -- с Праздником!
Приходят письма с просьбами продемонстрировать особенности работы с моей библиотекой аутентификации для ORM Jelly. С этой целью покажу, как можно написать каркас для системы под следующие требования: админка + регистрация посетителей (то и другое с возможностью автологина).
Языки vs Альцгеймер
Прочел, что к людям, владеющим двумя языками, болезнь Альцгеймера в среднем приходит позже. Говорят, что в среднем интеллект снижается на 4,3 года позже, а сам диагноз ставится на пять лет позже. Здорово, только бы еще кое-что прояснить в контексте..
1. А третий язык усиливает эффект?
2. Насколько должны быть разными изученные языки? Близкие диалекты-то вряд-ли считаются.
3. Наконец, очень любопытно, сохраняется ли эффект для искусственных языков типа языков программирования?Представляете мотивацию для профессии программиста ?
Jelly-rAuth - мой модуль аутентификации для Kohana 3
Announced my view on what should be Kohana 3 authentication library (see my github repo for readme).
Если кому интересно, выложил немного причесанный модуль, скажем, jelly-rauth, которым реализую аутентификацию в Кохане 3. Постарался все описать в README, лишь немного более развернуто по отличиям:
- Это не драйвер к какой-либо из имеющихся библиотек, а самостоятельный и самодостаточный модуль (требует только Jelly). Разумеется, предпочтительнее было бы реализовать его с возможностью подключения драйверов для разных ORM. Возможно так и сделаю в будущем, если будет интерес со стороны сообщества. Но не сейчас
-
При разработке мне время от времени требуется задавать разные настройки для разных типов пользователей. Например, разную соль для обычных пользователей и администраторов. Ну и чтобы по разным табличкам были, хотя это дело вкуса, наверное
Не нашел лучшего решения, чем добавить многопрофильность в конфиг. Теперь смело шифруем пароли обычных пользователей md5, а одминские -- sha512
-
Убрал систему ролей. Ну не нужна она здесь, мне кажется, ибо это вотчина ACL! Там и роли, и ресурсы, все логично.
-
Вместо ролей заделал булевское свойство 'is_active', которое отвечает за бан юзера и тем самым отчасти является аналогом прежней роли 'login'.
-
Стало можно проверять существование пользователя в базе данных при каждом вызове logged_in() на случай если вдруг он был удален.
В итоге получилось, как мне кажется, нечто более компактное и даже может быть простое. Впрочем, исключительно на мой вкус. Конечно, сюда нужна и библиотечка для ACL, возможно чуть попозже тож поделюсь наработками, пока непричесано
Наслаждаетесь ли вы качеством своего кода?
Это тезисный перевод увлекательной статьи Do You Enjoy Your Code Quality? из блога RubyLearning Blog.
Программированию присуще -- или должно быть присуще -- удовлетворение. Создание кода это творчество, ну или должно быть таковым. А творчеству сопутствует наслаждение. Конечно, рабочий на конвеере тоже получает некое удовлетворение, нажимая на кнопки и наблюдая за результатом технологического процесса. Однако удовольствие от ручной работы глубже и длительнее.
Цель статьи -- помочь улучшить качество вашего кода, вне зависимости от того, новичок вы или профессионал, всегда есть куда развиваться. С улучшением качества кода выше удовольствие от работы несомненно будет возрастать. Для этого существует ряд практичных способов, большинство из которых универсально и применимо к каждому разработчику.