Блого-социальная сеть с нуля, с чего начать и на чем начать?
Такие вопросы уже звучали, но я не до конца понял, либо нет ответа, либо пишут не по делу. Хочется написать свою блого-социальную сеть, можно сказать, что для практики. Но возник вопрос на чем же писать, и что дополнительно использовать. Думаю что за основу взять PHP. Получается в моих планах что-то на подобие Хабра, только сильно урезанного.
По минимуму функционал такой:
- Можно зарегистрироваться.
- Есть рейтинг постов, пользователей, блогов.
- Можно создавать блоги, в которых находятся топики пользователей (подобие хабра и его клона LiveStreet).
- Возможность комментирования, но на крайний случай поставлю отдельные сервисы KOMENT или Disqus.
- Наиболее важное: созданные топики будут выводится все на главной странице, то есть ссылки на них с частью описания и т.д.
- Возможность писать личные сообщения.
- Другие небольшие мелочи.
Использовать буду базу mysql. Шаблонизатор, думаю, не нужен, так как писать буду один, как я понимаю, он нужен чтобы разделить функционал от дизайна. Админпанели делать не собираюсь, шаблон будет один и, наверное, сразу встроенный, плагины и подобные вещи тоже не будут. Правильное ли я направление выбрал? Стоит писать на PHP или все же что-то нужно другое?
Учебники по созданию CMS выпрашивать, думаю, не стоит, так как это понятие растяжимое, но если кто встречался с подобными статьями/книгами, буду рад увидеть ссылку. Просьба писать по делу и не критиковать.
Не очень могу себе представить как ответить на этот вопрос. Вы сами-то как думаете?
Хочется написать свою блого-социальную сеть, можно сказать, что для практики.
Если для практики - наверное да, направление отчасти верное, но смотря для какой практики... практики написания собственного велосипеда или практики написания проекта на PHP или практики создания структуры соц.сети?
Как только ответите себе для какой практики вы хотите это все делать - ответ на ваш вопрос будет готов на 85%. ;)
Стоит писать на PHP или все же что-то нужно другое?
Ответ на этот вопрос вы так же сможете получить, ответив на вопросы выше. Если вам нужен PHP, то вопрос отпадает сам собой, если нужна практика создания соц.сети, то выбирайте тот инструментарий (php, ruby или .net) в зависимости от того, что вам потребуется в дальнейшем или к чему душа лежит более, ибо тут советовать бесполезно. У каждого из озвученных ЯП есть множество достоинств и недостатков, каждый из них предназначен для схожих задач, но все они отличаются как по сложности (удобству), так и по предпочтительной сфере применения.
Это оставшиеся 15% ответа на ваш вопрос.
Если пишите в образовательных целях, то возьмите какой-нибудь мэйнстрим фреймворк (Symfony2 или Zend2 для php например). Главным критерием фреймворка берите сложность. Не берите фреймворки где слоган гласит "начните писать крутые приложения уже через неделю ковыряния", ибо в итоге вам придется обжечься на базовых вещах по 10 раз прежде чем придет какое-то понимание о проектировании web-приложений. Лучше уж брать что-то, что заставляет писать правильно, или хотя бы дает направление верное для развития. Можно так же взять какой микрофреймворк, аля Silex, Slim и что там еще популярно нынче. Это я описал по ситуации в php, для других языков (типа руби к примеру), чуть менее остро стоит проблема выбора инструментов, ибо большая часть инструментов проектировалось нормально. В php много такого (это относится и к встроенным функциям, и к инструментам и к фреймворкам), что потворствует говнокоду.
Если не сложно, можете оставить ссылку, где можно почитать с нуля об этом, я даже не могу понять какой запрос в гугл делать, знаком слишком поверхностно с этим.
Yii - как раз из разряда "начните писать крутые приложения уже через неделю ковыряния". Но я все же не совсем согласен с @Fesor , так как если уж делать, то полностью самостоятельно, на чистом php. Так будет проще наступить на все простейшие грабли, а на грабли посложнее - наступить еще успеете. Начинайте с азов, ну и почитайте - Мэтт Зандстра - PHP. Объекты, шаблоны и методики программирования 2 издание 2011 года.
@copyloc Фреймворк — структура программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта. (Википедия)
А если по простому - это готовый набор из небольших программ (функций, классов и их методов) которые реализуют наиболее востребованные задачи (пример: авторизация, работа с сессиями, работа с БД и т.д.) в написании собственного ПО. Как пример тот же Yii - поглядите как он устроен.
@copyloc Правильно, начинайте с начала, а потом уже смотрите и сравнивайте вашу реализацию задачи с проверенными решениями в тех же фреймворках PHP. Так вы сможете на практике познакомиться со всеми особенностями языка и на собственном опыте изучить все те "грабли" на которые наступите. Это полезно тем, что в дальнейшем вы сможете ориентироваться не только в знании языка, но и в правильном и грамотном его применении.
@Marques Yii не лучший пример "смотреть как он устроен". В процессе обучения, если человек долго не достигает видимого результата, угасает интерес. По этому писать все с нуля я не вижу смысла. Можно брать отдельные готовые компоненты и на основе их реализовывать (в этом смылсе symfony идеально подходит, ибо можно взять пару компонентов оного (appkernel, httpfoundation) и этого для начала хватит. Зачем тратить год на изучение не правильных и заведомо неудобных вещей, когда можно тот же год потратить на изучение вещей правильных, с которыми использование чего-то уровнем ниже так же не составит проблем.
Я проходил через написания своих фреймворков, пару лет работал с yii, и последний пункт как оказалось был ошибкой, ибо из двух лет я как минимум год потерял.
@Fesor Ваш подход к этой задаче мне понятен, отчасти даже соглашусь, но все равно мне кажется, пока свой велосипед не напишешь (желательно не один), не поймешь как крутить педали. Но это только мое ИМХО.
Я сомневаюсь, что вы так сходу без знания того, что такое фреймворк сразу потянете написание блого-социальной сети. Ставьте лучше перед собой более реалистичные задачи, результат которых скажем можно уже пощупать через пару недель работы. И главное - чтобы процесс разработки ощущался как наркотик, чтобы хотелось больше и больше написать. Тогда получатся интересные вещи, а не очередной банальный 'Hello world' на суперсовременных технологиях.
И да, если встал вопрос о языке, то без грамотного ментора лучше не смотреть на PHP. Обратите лучше внимание на Python или RoR, там отсутствует тяжелое наследие быдлокодинга.
Ну в этом ничего нет сложного. Для написания такой системы и php ОПП достаточно. Там для анимаций и т.п. js, jquery, ajax - достаточно использовать. А
личные сообщения
, ты по принципу регистрации или публикования статей можешь сделать. p.s. большинство так и делают. Я сам подобное для себя делаю, не ради пиара, а ради знаний.