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

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



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

    Суть сервиса


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

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

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

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

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

    image

    Изменения



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


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



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

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

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

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


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

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

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

    Заключение


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

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

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

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

    Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

    Ваши мысли о сервисе

    Поделиться публикацией

    Похожие публикации

    Комментарии 15

      +9
      На StackOverflow теги прекрасно работают в качестве средства категоризации, в том числе много частных тегов для одного языка программирования, теги для абстрактных концепций, и т.д. Думаю, вы даже базу тегов у них могли бы позаимствовать, лишь бы контент был.
      А так идея отличная!
        0
        Любой пользователь может отправить запрос в виде комментарии к какой-либо заметке и, если модератор подтвердит, его изменение добавится в общий список, который выводится внизу каждой заметки.


        Что-то я в упор не вижу этой возможности…
          +7
          Добавьте, пожалуйста, вход через гитхаб :)
            0
            Шрифт в тегах «code» немного мелковат (или мне кажется, что он меньше всего остального?). Хотя можно просто ctr + scrol++
            Отличная идея, надеюсь проект будет процветать!
              0
              Замечательная идея, но пока немного сыровато. У меня не работает поиск на странице заметки, например(это же поиск должен быть, да?).
                0
                Знаю, что сыровато. Если наберется достаточно отзывов положительных, то допилим. На странице заметки там уже не поиск, а список тегов, по которым будет идти выборка, при случайном совете.
                  0
                  Аа, тогда все работает. Но неочевидно. Напишите подсказку что ли
                +2
                Добавьте поддержку RSS и будет пользователям счастье)
                  0
                  Понимаете, это разрушает идею :) Советы не должны быть в виде новостей, их нужно постоянно просматривать, как карточки со словами. Я знаю, что много недовольных, но отступать от идеи пока не хочу. Если будет какая-то база пользователей, то с удовольствием буду улучшать сервис, но в сторону юзабилити.
                    0
                    Так лень постоянно заходить на сайт, чтобы увидеть, что там ничего не изменилось.
                    Вы можете добавить в ленту только заголовки советов, а сами советы показывать только на сайте.
                      0
                      Хорошо, будем делать рассылку, когда набирается 5-10 новых советов.
                        0
                        Добавил RSS по новым заметкам (чисто заголовок + теги)
                    0
                    Советам нужна вычитка. Первое, что бросается в глаза — терминология. unsigned — это не атрибут (это вид целочисленных типов), const — это не модификатор (это квалификатор), и методов в C++ тоже нет (есть функции-члены).
                      –1
                      Нужно еще рандомно для разных языков добавить такого плана универсальный совет:
                      пиши-код-блять.рф
                        0
                        Хотелось бы тексты на русском. Например про беззнаковые переменные:

                        image

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое