Matra - новое слово в средствах создания домашних страниц | |
---|---|
Имеется: желание прославится, заработать бабла, достаточное количество времени, знание php и прочей ерунды, башка на голове с кучей идей и руки для их воплощения.
Цель: создание веб-проекта и его сбыт + поддержка. Результат: всемирная известность (пускай только в определённо взятой среде), бабло (притом как от самого веб-проекта, так и от будущих работ, которые будут после того как прославишься – типа «ээ, да это же тот перец, который создал Матру! Ну-ка возьмём его техническим руководителем в нашу суперкрутую компанию.»). ... Сидел я тут недавно и думал что пора бы нафиг бросить заниматься ерундой, а написать суперкрутой движок, суперкруто его раскрутить, на который был бы суперкрутой спрос, и на этом можно было бы суперкруто нажииться. Самое интересное, что всё необходимое для этого есть. Бери да делай. Ну, есть голова, есть руки, есть знания. Есть идея – план действия. Может пока ещё довольно жидкий план с кучей неясного, с дырами посреди текста... Это самое сложное в работе – залатать эти дыры, притереть шероховатости. Ну да не суть важно. | |
Вот мой жидкий план.
Задача – создание веб-проекта. какого именно? Это должно быть некое средство управления контентом предназначенное для рядовых обывателей в первую очередь. Ибо только обыватель будет заказывать себе такую систему – профи она нафиг не нужна, он сам напишет или подгонит под себя какую-нибудь из существующих... Ну да не будем наи этом останавливаться. Может и профи будут пользовать эту систему, просто ориентирована она должна быть на человека нихрена не смыслящего ни в программировании, ни в веб-разметке. Да вообще нигде ничего не смыслящего. Умеет в Ворде печатать и по инструкции с картинками освоить 4–5 действий по работе со своим веб-проектом – этого более чем достаточно. Всё остальное – проблема разработчика проекта. Даже обновление движка не должно будет волновать его хозяина. Все фиксы будут ставится автоматически – что-то вроде автообновления в Windows. Далее – что именно за система управления контентом? CMS вроде Нюка? Или блог? И то и другое. В первую очередь это блог, но это только главная возможность системы (об этом позже). Почему блог? Очень просто – мы делаем систему для чайников, а ничего более сложного чем ведение блога (очень мощного блога) ему не потребуется. Блог – это идеальное средство для ведения этакой домашней странички. Да, именно домашней странички, хотя Матра сможет кроме ведения блога каким-нибудь рыболовом, который раз в месяц публикует там фотки своих достижений и может пару строчек о своих хитростях – 100% сайта-домашней странички, так вот Матра сможет работать не только для рыболова, но и для крупного коммерческого проекта вроде порносайта с огромной аудиторией и огромного количества контента (или вроде сайта kpnemo.ru) Блог подойдёт ко всему. Из Матры можно будет сделать статический сайт-презентацию и даже при определённых дополнительных ухищрениях большой информационный сайт вроде сайта МТС. | |
Каким образом из блога получится большой информационный портал?
Ну, Матра это будет не совсем обычный блог, к каким мы все привыкли. Мы привыкли что блог это записи отсортированные по дате и по разделам (с возможностью иногда ориентации оп ключевым словам). В Матре это естественно тоже всё будет (на несколько другом уровне, но всё же). Главная изюминка Мантры – расширенная возможность по созданию отдельных статических страниц. Т. е. не записей 2005/02/03/мамамия.хтмл а /мамамия/ и /мамамия/итвоюмамутоже/ У нас получатеся система идеальная для домашней страницы. В простейшем случае в блог пишется то что ежедневно приходит в голову, (как я сегодня сходил к стоматологу) а в статическую страницу инфу о себе-любимом, о своих достижениях ну и всё такое. Это не ново – в самых распространённых блогах вроде Wordpress и MovableType это давным давно придумали и осуществили. Но тупые буржуи никак не могут додуматься применять это соответствующе. Кроме того в Матре будут возможеость создавать не просто страницы /about/ но и /about/me/ или /about/myanimals/mycat/ но и что-то вроде /about/mycat/2005–02–03/my-cat-eat-my-junks/ В Матре не будет чёткой границы между «страница блога» и «статическая страница» как во всех остальных системах. Есть страница «я» с фотографией автора, у неё есть дочерняя страница «моя кошка» где может быть просто фото кошки с коротким текстом, или же там может быть этакая лента событий связанных с кошкой – практически отдельный блог «кошка» с записями вроде 12 июля – котёнок продрал когтями мамину любимую штору, 3 февраля – кошка сожрала мои шнурки, 4 февраля – когшку тошнило после вчерашнего... | |
Заходит человек в свой этот блог в форму написания материала и выбирает что он хочет написать: очередную ежедневную заметку чем он сегодня умывался, которая потеряет свой смысл на первой секунде своего существования, или он хочет разместить информацию о том как он отдохнул на море с красивыми фотографиями, которые он хотел бы показать всем своим друзьям, или он, например, архитектор и хочет опубликовать своё портфолио и резюме. Если это был бы Вордпресс или любой другой современный блог, то парню ничего бы не отавалось кроме как первую заметку написать в общий поток, вторую в самом лучшем случае сделать «избранной заметкой», а третью запихать как статическую страницу /portfolio/ Собственно, в Матре он сделает то же самое, за исключением того что вторую запись разместит в /travels/sea/.
Так в чём фишка? Что же в Матре тогда такого суперкрутого что она всех заткнёт за пояс? А ничего. Просто в Матре всё организовано будет лучше. Удобнее интерфейс, удобнее набор текста, удобнее доступ к материалам за счёт развитой фасетной классификации записей (фасетной классифкации нет ни у кого). Принципиального отличия нет. его и не может быть. Фасетная классификация записей и расширенная возможность в создании статичных страниц – вот и всё что нужно внедрить. Остальные хорошие решения есть в других блогах. И что особенно радует – нет такого блога где бы были все известные полезные возможности. В том же ВордПрессе нет элементарного файлменеджера. | |
Короче, установка простая. Берутся все полезные штуки из разных блогов, соединяются в одном проекте и получается Матра – идеальный инструмент для создания самых разных сайтов – от домашних страничек до крупных технологичных проектов.
Осталось написать todo-list из этих полезностей, сесть и тупо начать кодить. Самое главное – правильная организация. Продумать всё до малейших деталей, чтобы не пришлось потом что-то переделывать. План должен быть чётким и ясным. Даже наверное сверхчётким. Чтобы дело оставалось лишь за написанием php-кода. Ну а уж написать код это дело десятое. При грамотно поставленной задаче-то – меньше месяца работы до rc1. Я вот сейчас только и делаю что облизываю каждую мелочь. Тут каждая ошибка может быть фатальной. Если интересно – буду в дальнейшем посвящать в курс дела. (: | |
Главное что пока я решил из идеологических проблем: будет 2 сборки – однопользовательская и многопользовательская, Матра должна работать без использования средств .htaccess (ггг тушинский хостинг) и возможно даже придётся выпускать третью сборку которая бы работала без БД, – с текстовыми файлами.
Ещё точно будут активно использоваться сторонии библиотеки – Вика, Safehtml, typografica, find as you type, rubrika, htmlarea, xmlrpc, естественно что-то из PEAR и всякие другие. Благо, пользоваться ими можно свободно. Я так просчитал что сторонние библиотеки займут порядка 60–70% всего объёма кода Матры. Матра будет полностью бесплатным продуктом распространяющимся под лицензией GNU. Матра будет мультиязычной, естественно с возможностью выбора и редактирования дизайн-шаблонов (сами шаблоны будут максимально простыми, как в phpbb) и буддет работать в utf8. Сравнение с phpbb неслучайно. phpbb это замечательный продукт. Это средство которое может использовать любой желающий, кому понадобиться создать для своего проекта форум. Скачал дистрибутив, поставил, чуток настроил – пользуйся. Так и Матра. Её тоже надо будет просто поставть и использовать. При этом как и phpbb она будет обеспечивать (безупречно обеспечивать) практически 100% всех потребностей своего владельца. ... Ну хорошо, даже допустим выйдет движок таким, каким задумался. Как рассказать о нём людям? И как заставить их ствить его себе вместо того же ВордПресса (известного и «авторитетного»)? Есть у меня пара мыслей по этому поводу и несколько рецептов. Один из них – документация. Когда к функции вышиной 20 строчек есть грамотный красочный 3-страничный мануал, люди на это клюют. Они понимают что поставив движок они не будут испытывать каких-то трудностей при использовании. Они берут продукт о солидно выглядящей компании, а не у человека с талантом и амбициями. Покупатели вообще мудаки все, они хватают то что грамотно подано, а не то что грамотно сделано. А уж красиво подать дело опять же техники. Тем более если подавать реально качественный товар... Короче, пошёл я дальше думать над архитектурой компактного шустрого легкорасширяемого ядра, над внешним видом форм ввода, ужином, как сверкает на металлической крыше балкона соседского дома уже низкое солеышко, пятне на линолеуме... | |
Если честно пробежал по диагонали - вчитываться нету времени. А выделенного главного не увидел.
Но чем такая система будет отличаться от Wiki-систем? Или той же NPJ, например. И для начала этот текст надо красиво оформить, выделить главную мысль. Чтобы было более читаемо. Самое главное в чем отличие от сужествующих систем! Как ты собираешься сделать, чтобы у тебя работали human-like урлы без реврайтинга я не понял. Это с помощью PHP можно как-то? | |
...А выделенного главного не увидел. Ну о какой-то мысли можно будет наверное говорить только после выхода бета версии, когда можно будет пощупать. Но это будет совсем не то же что WackoWiki или NPJ. То не блоги как таковые, а этакие системы для совместной работы над документами. У меня же планируется нечто напоминающее тардиционный блог. HumanLike урлы у меня будут включаться опционально. Но и с помощью средств php их тоже можно организовать, правда не столь красиво. Принцип такой. Задаём ErrorDocument 404 parser.php Этот парсер.пхп анализирует запрошенный uri (он доступен в переменной окружения) ну а дальше дело техники - обработать его соответствующим образом и передать управление куда следует. Ну типа будет запрос site.ru/2005/02/03/ В парсер.пхп: $uri = $_SERVER[REQUESTED_URI]; ## это будет /2005/02/03/ list($year, $month, $day) = explode ("/", $uri); mysql_query (SELECT... where year = $year, month = $month Ну как-то в общем вот так. Но я такое применять не хочу - мало того тчо некрасиво, будет геморрой с тем что фактически ведь все страницы отдают ошибку 404 и сайт будут игнорировать поисковые роботы. Кроме того МодРирайт сработает быстрее. А самое главное - это работает только при просмотре страниц. Скажем, если экшн формы ведёт на созданный таким способом псевдоурл, то этот экшн работать не будет. А ещё по любому придётся прибегать к .htaccess'у, а я хочу чтобы мой движок работал и без него, на любом бесплатном хостинге (типа как на Агаве или же у нас у ТТ). | |
Хехе. После выхода, говоришь. Ты сначала послушай все гадости, а потом делай. А чтобы получить эти порции гадостей, надо внятно написать...
1. NPJ это именно блог! А вот остальные вики-системы нет, но они прекрасно умеют создавать страныцы по указнному пути и имеют человеческие урлы. 2. Как использовать mod_rewrite без htacess я не знаю. Работает он медленно. По крайней мере его использование замедляет работу любого сайта. 3. Способ с error 404 кривовй и косой. Его и рассматривать не стоит. Короче. Я считаю, что стоит глянуть NPJ получше. А также считаю, что желание сдалать человеческие урлы и так чтобы работало на любых бесплатных помойках несовместимы. | |
1. NPJ это именно блог! Ага, а ещё НПЖ нужен ZendOptimizer, а его и за бабло не каждый хостер предлагает. (: А также считаю, что желание сдалать человеческие урлы и так чтобы работало на любых бесплатных помойках несовместимы. Точно, поэтому в Матре в меню можно будет выбрать: генерить ЧПУ или "обычные". | |
Ага, а ещё НПЖ нужен ZendOptimizer, а его и за бабло не каждый хостер предлагает. (: А мне казалось что Зенд такая привычная штука, что о нем просто не говорят. Ну а найти хостинг с ним - большой проблемы нет. Не уверен, что надо ориентироваться на тех, кто не имеет ничего. Может у них и PHP нет? Как то не приходилось видеть нормальных ресурсов на халявных хостингах. А делать ради того, что чтобы пионЭры могли побаловаться. нафига надо. | |
Я что-то не всё понял, bob, это твои планы на перспективу или предложение для желающих поучастввовать?
Над техническими аспектами можно спорить вечно, могу сказать точно одно, если делать такую систему что бы прямо совсем всех устроила, и везде работала, и всё делала - это может рот у Матры порваться от такого куска. Для начала, если реально заниматься комерцией, то надо определить нишу для сбыта готового продукта, определить четкое его предназначение и основываясь на последнем его анонсировать. Иначе - мы будем иметь систему системм, в которой рано или поздно запутаемся сами, я всмысле, если делать большое опциональное меню. К такому меню придёться писать ман на десяток метров и в результате получиться ещё один монстр. Вобщем если ты предлогаешь поучаствовать, то я согласен, даже если просто поговорить =) Только если это реальное занятие с целью извлечения прибыли, то думаю надо сначала продумать, а потом делать... как говориться "Семь раз отмерь, один - отреж". | |
Матра это моя голубая мечта последнего месяца или даже больше. (:
И вот всё это время я сижу и думаю над деталями. Если говорить совсем простым языком, то Матра — это блог. Но с расширенными возможностями его расширенных возможностей. Что это значит? Ну вот к примеру: расширенной возможностью обычных блогов считается возможность создания статических страниц — ну типа старницы /about/ с инфой об авторе. В Матре можно будет не прсто создавать такие страницы, но и создавать дочерние — /myfamily/me/ Расширенной возможностью обычного блога является возможность закачки файлов. В Матре это естественно тоже будет, но там будет это реализовано лучше — проще, понятнее, удобнее для пользователя-ламера. В блогах принято классифицировать записи: по разделам или по ключевым словам. В Матре это всё тоже будет, но там будет возможность создавать ещё и подразделы, а ключевые слова можно будет классифицировать фасетно (а не линейный список кейвордов как везде). Когда я опишу все планируемые возможности Матры всё встанет на свои места. Матра должна: 1. Действительно устраивать всех, кому нужен движок для блога. 2. Беспроблемно работать. 3. Работать на любом хостинге с поддержкой php 4.x.х+ Добиться последнего — задача одна из первостепеннейших. В этом 30% успеха, чтобы система работала и на самом поганом хостинге. Ведь Матра это в первую очередь инструмент для создания личных страничек, а такие обычно размещают на дешёвых хостингах. Или вот на таких как в ТТ — "бесплатных". Достигнуть этой цели непрото, но как-нибудь уж да возможно. Второе — это само собой разумеющееся. Матра будет использовать огромное количество сторонних библиотек (благо хорошие вещи можно использовать совершенно бесплатно и законно), так что огромное число технических проблем удасться просто обойти стороной. А вот первое — исключительно зависит от хорошо продуманного плана действий, который сейчас медленно но верно варится в моей башке. | |
А мануал полюбому будет очень большого объёма.
А самое основное — план, план и ещё раз план. Чтобы там была описана каждая самая ничтожная мелочь. На своём опыте знаю: когда начинаешь писать имея очень смутное представление о том как это делать и даже иногда что нужно делать то ничерта хорошего не выходит. А если и выходит, то на это уходит невероятное количество труда. Очень сложно перебороть себя переписывать изрядный объём кода когда вдруг обнаруживаешь что всё что ты до этого писал бюло по сути пустой тратой времени и сил. Ведь начинаешь работать с энтузиазмом, а когда приходится что-то переделывать, что казалось таким уже близким, это очень тяжело, и дело идёт медленно, а что самое главное — без энтузиазма. А разве может что-то получиться когда делаешь дело не себе в радость? (: Поэтому для Матры я пока написал всего строчек 20, которые я точно уже не буду изменять. И больше не могу написать ничего, потому что чёткого плана ещё нет. Вот например сейчас. Я точно знаю что настройки Матры будут храниться в текстовом файле. (Ведь это же полный идиотизм хранить настройки, скажем, числа записей на главной странице в БД — нелепая трата ресурсов.) Так вот, в текстовом файле. Но вот до сих пор меня мучает вопрос: а в каком формате хранить это добро? Сериализованный массив или изощриться и хранить некую tab-delimited таблицу? И разве я могу вот так сомневаясь писать функцию чтения файла с этими настройками? (: Короче, вот такие вот у меня сейчас дела. | |
bob, от меня - желаю всяческих творческих успехов!
Если будет нужна реальная помощь, пиши, я всегда рад помочь. Всё остальное - технический аспект, "бизнес план" - ты прав нужен чёткий план. Главное не останавливайся, как обычно бывает, хАчу, мечтаю... но делать - времени нет. Если решил делать - делай, а уже по результату будем оценивать - стоила игра свеч или нет. | |
Задача почетная и если двигаться именно в направлении работоспособности на самом занюханном хостинге, то имеет право на жисть. Хотя задача крайне сложная, ИМХО.
Если в плане чего покритиковать, то мы готовы. :-) Что такое бизнес-план я не в курсах. Но наверное что-то интересное. | |
Хотя. Все же резану правду-матку я почти не верю, что что-то получится. Не в обиду тебе будет сказано, но так оно всегда и бывает. Так что пиши лучше отдельными модулями, всего может не напишешь, а что успеешь написать, может потом себе самому пригодится.
| |
Отдельных всяких модулей отличных и просто хороших пруд пруди. (http://pear.php.net/ тот же). А вот хороших сборок по пальцам пересчитать можно.
И с модулей ни бабла ни известности не заработаешь. А охота. Если только это будут какие-то супер-пупер полезные модули, вроде того же WikiFormatter'а. | |
bob, ты не прав, по поводу - не бабла, не известности... и то и другое будет, есть такая весчь как портофолио, без которого тебя попросту не возьмут на работу. Если ты задашься идеей устроиться на нормальную работу, то будешь отдавать хорошие свои идеи - за бесплатно, ради портфолио.
Можулей отличных - да, много. Но это всё не твоё, ты не потратил не грамма мысли на разработку концепции. Вот когда ты придумаешь что-то своё, или вот сделаешь уже всем извесное, но в своём исполнение, то да - это будет ощётимый перевес в собственном поднятие эго. По себе могу сказать, да я не гений и не когда не претендовал на эту роль, но тотже несчастный скрипт показывающий кол-во статей на странице я создавал очень долго, было очень много версий, пока не дошёл до той, которая есть сейчас - это один файл на все страницы сайта, без разницы какой это раздел. Вобщем суть мысли - знание приходит с опытом, а не от прочтения литературы. На чужих ошибках учаться, но такие люди не достигают собственных успехов (ИМХО), каждый должен пройти через свои ошибки, хотя бы для того, что бы набраться опыта. | |
Я за советом. (:
Как организовать дизайн-шаблоны? Писать свой псевдоязык — отметается сразу: это долго, нудно, сложно а самое главное никому не нужно. Поэтому остаётся только выбирать из уже существующих схем. Я знаю 3. Smarty. Очень нынче модная вещь, прямо такая модная что я уже в объявлениях о поиске работы вижу "... навыки работы со Smarthy,...". Почему-то считается что синтаксис Смарти прекрасно подходит для построения дизайн-шаблонов: он гораздо проще и понятнее для верстальщика и непрограммиста чем php {$content} — Смарти
Ну что же, им виднее, этим Смартистам. А по мне так это совершенно бесполезная обёртка.<?=$content?> — php Вот вам типичный модуль Смарти. <?php /** * Smarty plugin * @package Smarty * @subpackage plugins */ /** * Smarty plugin * * Type: modifier<br> * Name: nl2br<br> * Date: Feb 26, 2003 * Purpose: convert , or to < > * Input:<br> * - contents = contents to replace * - preceed_test = if true, includes preceeding break tags * in replacement * Example: {$text|nl2br} * @link http://smarty.php.net/manual/en/language.modifier.nl2br.php * nl2br (Smarty online manual) * @version 1.0 * @author Monte Ohrt <monte@ispi.net> * @param string * @return string */ function smarty_modifier_nl2br($string) { return nl2br($string); /* vim: set expandtab: */ ?> Единственное ради чего можно было бы использовать Смарти, атк это из-за того, что в Смарти встроена замечательная система кеширования создаваемых Смарти страниц. Работает прекрасно. Но всё-таки как мне кажется игра не стоит свеч. Второе — "обыкновенные" шаблоны на php Вот так примерно они бы выглядели: <html> <head> <title><?=$m_c['title']?></title> </head> <body> <h1><?=$m_c['header']?></h1> <?=$m_c[text]?> <br> <i><?=$m_c['date']?></i> </body> </html> Суть, думаю, понятна. Плюсы: простота для пользователя: всё равно что верстать обычный шаблон, нединамический. Даже во Фронтпейдже можно нарисовать. Возможность добавления в шаблон "недокументированных" кодов. Например, в такой шаблон можно вписать код на php который бы каждый раз выводил разные фотографии автора блога, или разные его девизы. Или приписать счётчик посещений. Или непосредственные какие-то операции над шаблоном: чтобы скажем каждый день менялся фон сайта. Или окошко в ктором бы отображалась какая-то инфа с другого сайта: фрэндлнта или новости каике. Короче, всё что угодно. (В моей Матре будет предположительно только 3-4 глобальных переменных, притом с названиями которые вряд-ли кто-то когда-нибудь будет ещё использовать). Минусы: я не знаю. И третий который мне нравится больше всего это шаблон на .xsl Суть: сценарий создаёт xml-документ и применяет к нему .xsl-шаблон. Вот что создаёт программа: <pagetitle><?=$m_c['title']?></pagetitle> <header><?=$m_c['header']?></header> <text><?=$m_c[text]?></text> <date><?=$m_c['date']?></date> Плюсы: Всё формление уместится в одном-единственном .xsl-файле: именно всё, включая не только размер шрифтов, цвет и всё такое, но и расположение блоков на странице. Скорость загрузки такой схемы будет максимально возможной: большой xsl-файл закешируется браузером при первом заходе а потом будет подгружать только контент с ешё непосещённых страниц и совсем немного тегов. Ну и все другие плюсы xml-сайтов. Минусы: Пользователю будет проблематично вообще говоря добавлять к шаблону "недокументированные" элементы: ведь как такового шаблона-то и не будет! Будет только .xsl-файл который содержить лишь правила. Ну и самое главное, разобраться в xsl без поллитра мало кто сможет. Я уж не говорю про ламеров для которых предназначема Матра. В общем, как это мне ни хочется, но надо делать по 2-ой схеме. А хотелось бы на .xsl.. Что скажете? Может посоветуете ещё какие схемы? | |
прости старена, но я не особо вчитался в твои рассуждения, но мне лично более по душе третий вариант. Это действительно правиьнее, с моей точки зрения...
по поводу разобраться без политры - ну это не правильное построение вопроса... если ты хочешь угодить самым юродливым юзерам, то будет трудно, но осуществимо... сама идея шаблонов -> что ты имеешь ввиду => создать свой шаблон or установить новый ? if (создать свой ) { то обычный ламер не будет этим заниматься, да и не зачем ему этого делать (не отбирай хлеб у людей, которые хоть что-то делают) } else if ( установить новый ) { то это уже моно делать, как тебе угодно... } резюме: вопрос сформулирован не точно, либо я не дочитал... шаблонизация - дело правильное, а система построения шаблонов - если ты уж хочешь победить всех, то сделай так что бы система была опциональной, т.е. юзер мог сам определить. Делай все три варианта. З.Ы. по поводу "нудно" и "никому не нужно" -> как я рад, что так же не подумали люди которые написали: Linux , FreeBSD , PHP , Python , Wiki , ExBB и т.д. , надеюсь мысль ясна... | |
Те люди, которые что-то кошерное написали как ни странно вобще о юзере не думали. Они просто писали хорошо, а народ взял и оценил по достоинству.
Или же второй вариант - народ писал что-то для обучения тупых студентов и получился Python и PHP. :-) Про PHP уже не помню, но вроде так было. | |
leksey писал:Плохо что-то у меня с ней дела пошли. Пока она только "читает" БД и выводит контент по дате, по страницам и по ключевым словам. Я почти месяц занимался тем что придумывал "грамотную" замену стандартной ф-ции php mysql_query. Эта сраная функция уж больно неудобная и капризная. С ней просто невозможно работать. Раньше я пользовался библиотеками PEAR для работы с СУБД, но они уж больно тяжёлые. |