Случайные советы

в 1:39, , рубрики: c++, заметки, обучение, Программирование, Учебный процесс в IT, метки: , ,

Здравствуйте, вот прошло почти пол года, как я опубликовал на хабрахабре свой небольшой сервис заметок/советов программисту. К моему большому удивлению, откликнулось очень много людей, которым понравилась идея.

Случайные советы

Честно сказать, я до сих пор получаю e-mail от многих людей с вопросами о состоянии сервиса и просто пожеланий. К сожалению, я сейчас очень занят (на постоянной работе), но решил добить хотя бы базовый функционал и буду потихоньку его докручивать, если сообщество и в этот раз оценит мои старания.

Суть сервиса

Для начала, приведу цитату с сайта:

В базе хранится список советов с прикрепленными тэгами. Вы можете задать фильтр интересующих тем. Сервис не является online-учебником/сборником статей/каталогизированным FAQs. Основная идея: случайные советы, заметки, задания «с подвохом» на собеседованиях.

Мне очень нравится идея изучения иностранных слов и правил, используя карточки: вы их постоянно просматриваете, пока не выучите. Идея сервиса в том же: никакой разбивки по темам (кроме тегирования), вам нужно просто ограничить диапазон «карточек» и просматривать их.

По собственному опыту знаю, чтобы запомнить что-то особое в любой области, нужно несколько раз столкнуться с этим на практике, только после этого приходит осознание и возможность использовать знания в будущем, но для этого нужно хотя бы приблизительно представлять, что есть у нас «в арсенале». Для этого и предназначен сервис.

На людей с большим опытом я не рассчитываю, все заметки брались с книг, придумывались мной и моим другом, за что ему большое спасибо. В планах постепенно перевести C++ FAQ с примерами и, по возможности, ссылками на C++ стандарт.

Как это выглядело раньше:

image

Обновленная версия:

Случайные советы

Изменения

  • Прислушался к мнению некоторых хабралюдей, улучшил вид статуса рейтинга заметки (+сделал его интерактивным)
  • Сделал защиту от накруток (там, где используется ajax+get запрос ввел csrf-токены
  • Раньше сайт был с ajax-навигацией, теперь он полностью статичный, что очень хорошо сказалось на поисковом траффике.
  • Немного доработал дизайн (в силу своих программист-дизайнерских способностей)
  • Для защиты от накрутки ввел авторизацию по социальным сетям
  • Новые заметки/советы

Естественно, от какого-то списка существующих карточек я отказаться не мог, поэтому ввел начальную страницу, где вы можете отфильтровать по: тегам и контексту любую запись.

Случайные советы

Изначально была идея добавить комментарии к заметкам, но это усложняет восприятие и разрушает общую идею сервиса, поэтому я решил сделать иначе: ввести некую систему контроля версий, в виде добавлений. Любой пользователь может отправить запрос в виде комментарии к какой-либо заметке и, если модератор подтвердит, его изменение добавится в общий список, который выводится внизу каждой заметки.

Чтобы хоть как-то привлечь пользователей не только к чтению, но и созданию заметок (на что, если честно, особо не надеюсь), к каждому добавлению информации (комментарий/совет) можно «прицепить» любой адрес сайта.

Как я представляю себе работу с сервисом? На странице любого совета вы вводите интересующие теги и нажимаете «Случайный совет», либо «Мне повезёт» (если вам нужны только записи с высоким рейтингом).

Случайные советы

Техническая сторона

Эта часть вряд-ли отличается чем-то особенным от множества проектов, но мы же на хабре, об этом умолчать нельзя :)

Взял давно проверенную связку php+mysql (это позволило взять быстрый старт и быстро разрабатывать все нужное). Никаких готовых cms. Вся логика разбита на 2 файла: index.php и Logic.php.

Для ускорения работы, используется кеширование данных (на данный момент, отключено, поэтому надеюсь, что хабр положит домен не на века):
Берем alias-страницы, проверяем в кеш-папке, если файл с таким именем создан — берем сформированный html-контент из него, иначе — запрос в базу. По сути, самая простая схема из возможных.

Заключение

Буду рад любой критике. К сожалению, в ближайшее время не смогу дорабатывать функционал, только пополнять список советов. Все рейтинги заметок пришлось почистить, потому что они не были защищены от накруток. Надеюсь, что если кто-то найдет уяизвимость/нефильтруемые данные, то не будет использовать её для засорения базы.

И да, много кто просил тот же интерфейс, но для других языков программирования. Для теста я создал запись с тэгом java, но не уверен, насколько будет удобно разделять категории по языкам программирования в тегах.

Адрес сервиса

Спасибо за внимание.

Автор: Ockonal

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js