Здравствуйте, вот прошло почти пол года, как я опубликовал на хабрахабре свой небольшой сервис заметок/советов программисту. К моему большому удивлению, откликнулось очень много людей, которым понравилась идея.
Честно сказать, я до сих пор получаю e-mail от многих людей с вопросами о состоянии сервиса и просто пожеланий. К сожалению, я сейчас очень занят (на постоянной работе), но решил добить хотя бы базовый функционал и буду потихоньку его докручивать, если сообщество и в этот раз оценит мои старания.
Суть сервиса
Для начала, приведу цитату с сайта:
В базе хранится список советов с прикрепленными тэгами. Вы можете задать фильтр интересующих тем. Сервис не является online-учебником/сборником статей/каталогизированным FAQs. Основная идея: случайные советы, заметки, задания «с подвохом» на собеседованиях.
Мне очень нравится идея изучения иностранных слов и правил, используя карточки: вы их постоянно просматриваете, пока не выучите. Идея сервиса в том же: никакой разбивки по темам (кроме тегирования), вам нужно просто ограничить диапазон «карточек» и просматривать их.
По собственному опыту знаю, чтобы запомнить что-то особое в любой области, нужно несколько раз столкнуться с этим на практике, только после этого приходит осознание и возможность использовать знания в будущем, но для этого нужно хотя бы приблизительно представлять, что есть у нас «в арсенале». Для этого и предназначен сервис.
На людей с большим опытом я не рассчитываю, все заметки брались с книг, придумывались мной и моим другом, за что ему большое спасибо. В планах постепенно перевести C++ FAQ с примерами и, по возможности, ссылками на C++ стандарт.
Как это выглядело раньше:
Обновленная версия:
Изменения
- Прислушался к мнению некоторых хабралюдей, улучшил вид статуса рейтинга заметки (+сделал его интерактивным)
- Сделал защиту от накруток (там, где используется ajax+get запрос ввел csrf-токены
- Раньше сайт был с ajax-навигацией, теперь он полностью статичный, что очень хорошо сказалось на поисковом траффике.
- Немного доработал дизайн (в силу своих программист-дизайнерских способностей)
- Для защиты от накрутки ввел авторизацию по социальным сетям
- Новые заметки/советы
Естественно, от какого-то списка существующих карточек я отказаться не мог, поэтому ввел начальную страницу, где вы можете отфильтровать по: тегам и контексту любую запись.
Изначально была идея добавить комментарии к заметкам, но это усложняет восприятие и разрушает общую идею сервиса, поэтому я решил сделать иначе: ввести некую систему контроля версий, в виде добавлений. Любой пользователь может отправить запрос в виде комментарии к какой-либо заметке и, если модератор подтвердит, его изменение добавится в общий список, который выводится внизу каждой заметки.
Чтобы хоть как-то привлечь пользователей не только к чтению, но и созданию заметок (на что, если честно, особо не надеюсь), к каждому добавлению информации (комментарий/совет) можно «прицепить» любой адрес сайта.
Как я представляю себе работу с сервисом? На странице любого совета вы вводите интересующие теги и нажимаете «Случайный совет», либо «Мне повезёт» (если вам нужны только записи с высоким рейтингом).
Техническая сторона
Эта часть вряд-ли отличается чем-то особенным от множества проектов, но мы же на хабре, об этом умолчать нельзя :)
Взял давно проверенную связку php+mysql (это позволило взять быстрый старт и быстро разрабатывать все нужное). Никаких готовых cms. Вся логика разбита на 2 файла: index.php и Logic.php.
Для ускорения работы, используется кеширование данных (на данный момент, отключено, поэтому надеюсь, что хабр положит домен не на века):
Берем alias-страницы, проверяем в кеш-папке, если файл с таким именем создан — берем сформированный html-контент из него, иначе — запрос в базу. По сути, самая простая схема из возможных.
Заключение
Буду рад любой критике. К сожалению, в ближайшее время не смогу дорабатывать функционал, только пополнять список советов. Все рейтинги заметок пришлось почистить, потому что они не были защищены от накруток. Надеюсь, что если кто-то найдет уяизвимость/нефильтруемые данные, то не будет использовать её для засорения базы.
И да, много кто просил тот же интерфейс, но для других языков программирования. Для теста я создал запись с тэгом java, но не уверен, насколько будет удобно разделять категории по языкам программирования в тегах.
Спасибо за внимание.
Автор: Ockonal