Предисловие

Знаю, что “хабра-народ” сейчас очень негодует, что стало очень мало технических статей, Хабр “не торт” и т.п. поэтому напишу сразу – это не техническая статья.

Цель статьи – поделиться удобным бесплатным сервисом хранения ссылок.

Конечно, можно было бы написать подробное техническое повествование. Например, целая история с изменением регулярного выражения для проверки корректности ссылки, сколько бы его не настраивали – всегда находилась ссылка, которая не вписывалась бы в правила. Но тогда бы получилась целая серия статей, которые наверняка никому и не интересны. Да и некоторые NDA надо учитывать.


Вступление

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

Был проект. Построенный на IIS + ASP.NET + MVC. Время шло. Появлялись новые версии MVC. Проект переезжал с версии на версию. Проект использовал достаточно специфическую внутреннюю архитектуру, поэтому MVC обрастал всё новыми костылями.

Шло время и в MVC подвезли новый промежуточный веб сервер Kestrel. Возможно, этот факт послужил последней песчинкой заставившей перевесить чашу весов, было принято решение написать свой web-стек. Превратить все костыли в архитектурную особенность. Чтобы код помогал программисту, а не вызывал отвращение.

Честно сказать – по прошествии времени можно сделать вывод.

Чёткое понимание, что сейчас за такую работу вряд ли бы взялись. Но т.к. путь проделан и результат есть – дальнейшая разработка вызывает только моральное удовольствие. Конечно “удовольствие” измеритель достаточно эфемерный, но проявляется это в том, что новые архитектурные изменения не ложатся костылями, а гармонично вписывается в текущую структуру. Не разрушая её, а дополняя. Разработка ведётся быстрее. Новые фичи не ломают старые. Все довольны.

Так вот. По мере написание своего web-стека встал вопрос о тестировании.

А как тестировать web стек? Разумеется, нужно повесить какой-нибудь тестовый сайт. В результате быстрого мозгового штурма, чтобы не писать “коня в вакууме”, было решено сделать какой-нибудь простенький полезный сервис.

И этот сервисом оказался – сервис хранения ссылок. Более того этот сайт оказался отличным тестовым полигоном для отработки различных web идей. И по мере своего существования обрастал всё новым функционалом. Который тестировался, уходил в другие проекты, но и оставался в сервисе.

И хотя сайт оброс достаточно большими возможностями, изначальная идея - максимально простое (отсюда и удобное) сохранение ссылки, осталась. В конечном счёте, тестовый сайт-сервис превратился в самодостаточный сайт и активно используется. Внутри узкого круга лиц ).

Было решено написать документацию к нему. Нуднейшее дело я вам скажу. Ну и поделится с другими.

Описание сервиса

Сервис предназначен для хранения ваших ссылок. И по мере наполнения ссылками – должен становится личным удобным каталогом. Весь функционал сервиса построен на идее – минимальное количество действий для получения результата – сохранения ссылки. При этом все возможные лишние действия – автоматизированы.

Главный интерфейс изображён в шапке этой статьи. В общей структуре он одинаков для разных разделов сервиса, таких как например “Шифрованные ссылки” или “Публичные ссылки”. Для добавления ссылки в каталог, её копируем в поле, которое расположено в верхней части сайта. Нажимаете кнопку “Добавить”собственно это все действия.

Далее ссылка передаётся на сервер. Там подвергается проверке работоспособности. Проверяется доступ по протоколам http/https. Проверяется редирект ссылки. При необходимости производится промежуточное сохранение и отправка cookies. После всех проверок сохраняется конечный вариант.

Далее сервис загружает вашу ссылку и производит поиск заглавия. При этом производится автоматическое определение правильной кодировки – многие сайты возвращают неправильную кодировку. Для некоторых популярных сайтов поиск названия производится в заранее определённых местах. При поиске названия автоматически определяется тип ссылки. Сервис может, например, отличать PDF от html.

В конце всей процедуры сохраняется правильная ссылка и её заглавие. Это информация и заносится в каталог.

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

У каждой добавленной ссылки есть меню настройки. Для вызова меню для ссылки надо нажать на иконку в виде квадрата слева от ссылки. При нажатии появляется меню управления ссылкой. Меню состоит из 5 кнопок

  • Удаление ссылки

  • Добавление иконки

  • Перемещение ссылки в другую группу подгруппу

  • Редактирование заголовка ссылки

  • Редактирование URL ссылки

Иконки

Для часто используемых сайтов можно сделать иконку быстрого доступа. Иконки подобны ярлыкам программ в Windows. Располагаются в поле иконок – область сразу после меню групп. Размер поля иконок можно изменять. Положение и размер иконки так же можно менять.

По умолчанию сервис пытается скачать для изображения иконки картинку с именем logo по адресу иконки либо скриншот. Иногда, если url иконки не доступен – картинка не устанавливается. В таких случаях картинку для иконки можно загрузить вручную. Для этого есть меню настройки картинки. Так же в меню можно удалить ранее установленную картинку. При наведении на иконку - слева становятся видимыми 2 кнопки. Верхняя квадратная - меню. Нижняя треугольная - размер. Зажимая нижнюю кнопку можно изменять размер. Зажимая саму иконку – можно менять местоположение.

Меню иконок

  • Положение заглавия иконки. Верх, середина, низ, нету заглавия.

  • Редактировать заглавие иконки

  • Меню настройки картинки иконки. Можно загрузить картинку из интернета или с компьютера.

  • Фиксировать иконку. Запретить перетягивание.

Группы

Все добавленные ссылки делятся по группам. Группы – это страницы каталога ссылок. Выбор группы происходит путём нажатия на кнопку с именем группы. Меню групп закреплено и не прокручивается вместе с прокруткой.

Кнопки групп можно двигать. Слева каждой кнопки есть полоса для перетягивания. Самая первая кнопка меню – это кнопка открытия вашего каталога ссылок в виде оглавления.

Это список всех групп/подгрупп с активными линками. Щелчок мыши – быстрый переход в нужную категорию.

Для управления группами ест отдельная страница. Вход – кнопка в виде креста в правой части меню групп.

Подгруппы

Группы делятся на подгруппы. Внутри подгруппы можно установить способ сортировки ссылок.

  • Сортировка ссылок по названию. Сверху-вниз.

  • Сортировка ссылок по названию. Снизу-вверх.

  • Сортировка по дате добавления ссылки. Сверху-вниз.

  • Сортировка по дате добавления ссылки. Снизу-вверх.

Подгруппы можно перемещать между группами. Последовательность подгрупп меняется. Щелчок по заглавию подгруппы выделяет её. Новая добавленная ссылка будет добавлена в эту подгруппу.

Подгруппы также имеют страницу настроек. Вход - маленький крест в левой-нижней части поля иконок. Страница настроек повторяет страницу настроек групп.

Backup всех ссылок

Если вы боитесь потери ваших ссылок – вы можете в любой момент сохранить все их на ваш компьютер. Для этого есть четыре кнопки в верхней левой части экрана. При нажатии на кнопку будет предложено сохранить файл со всеми вашими ссылками. Файл будет в том формате кнопку которого вы нажали.

Файл будет содержать ссылки только того раздела, из которого вы нажали сохранение. Например, ссылки для раздела “Ваши ссылки” или “Шифрованные ссылки”. Шифрованные ссылки расшифровываются на стороне браузера и формируется файл – который вам предлагается для скачки. Который будет содержать уже расшифрованные ссылки.

  • Загрузка всех ссылок в текстовом формате

  • Загрузка всех ссылок в виде html страницы. Можно либо сохранить файл, либо сразу открыть в браузере.

  • Загрузка всех ссылок в виде JSON кодировки. Предназначен для автоматизированных систем.

  • Загрузка всех ссылок в виде XML кодировки. Предназначен для автоматизированных систем.

Разделы сайта

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

Список разделов.

Ваши ссылки.

Это первый и основной раздел сайта. Это собственно основной формируемый каталог ссылок. Каталог имеет широчайшие возможности по настройке отображения и управления добавленными ссылками.

Шифрованные ссылки.

Если вы хотите чтобы ваши ссылки не были видны администраторам сайта. А так же пользователям, которые по тем или иным причинам зашли на сайт под вашим логином – но которые не знаю специальный пароль, то этот раздел для вас.

Раздел по предоставляемым функциям аналогичен разделу “Ваши ссылки”. Но ссылки хранятся на сервере в зашифрованном виде.

Для этого при добавлении новой ссылки пользователем - ссылка шифруются на стороне клиента (в браузере) и передаётся и хранятся на стороне сервера только в зашифрованном виде. При просмотре ссылок пользователем – скаченные зашифрованные ссылки с сервера расшифровываются на стороне клиента. Т.е. данные в не зашифрованном виде находятся только на стороне клиента. На стороне сервера - данные находятся только в зашифрованном виде. Крипто-операции происходят только на стороне клиента. Крипто-ключ никогда не покидает сторону клиента.

Короткие ссылки

Если вам нужно превратить длинную ссылку в короткую, то этот раздел для вас. Раздел по функциональности аналогичен разделу “Ваши ссылки”. Для удобного пользования ссылки также добавляются в группы/подгруппы. Все операции со ссылками такие же, как в разделе “Ваши ссылки”.

Друзья

Раздел друзья предоставляет 2 функции:

  • Кинуть ссылку другу. Получить ссылку от друга

  • Открыть другу для просмотра любую группу из раздела “Ваши ссылки”

Т.е. этот раздел по функциям напоминает почту. Но только для ссылок. Последовательность действий следующая.

Вы отправляете запрос на добавление в друзья. Ваш запрос принимают. И в списке друзей у вас появляется новый друг. У каждого друга есть входящая папка и исходящая. Вы можете кидать ссылки друг другу. При этом ссылки распределяются на просмотренные или нет. Ссылку можно "лайкнуть".

Событие о новой ссылки от друга будут отображаться в верхней части сайта. Если зарегистрирована почта - будет отправлено письмо о событии.

Так же другу можно открыть для просмотра любую группу из раздела "Ваши ссылки".

Боксы ссылок

Боксы с ссылками это страница с группой ссылок и имеющая общедоступный из интернета адрес. Например вам нужно оставить на форуме, блоге или в youtubе – список ссылок. Но при этом вы ходите редактировать этот список впоследствии. А также хотите знать, сколько пользователей интересовалось ссылками. Тогда инструмент “Бокс ссылок” – то что вам надо.

Интерфейс аналогичен остальным разделам. Каждая группа в разделе “Бокс ссылок” – это отдельная страница который имеет самостоятельный адрес.

Каждый бокс имеет текстовый блок, в котором вы можете разместить текстовую информацию. Информация также будет доступна по адресу бокса.

Справа адреса бокса расположен счётчик переходов по этому адресу, а также кнопки управления счётчиком. Также счётчик переходов имеет каждая ссылка в отдельности. Ссылки в бокс добавляются также как и в других разделах.

В бокс также можно добавить подгруппы – если ссылок много и вы хотите их систематизировать для удобства просмотра.

Публичные ссылки

Раздел по функционалу аналогичен разделу “Ваши ссылки”, но все добавленные ссылки становятся публичными. Это значит, что на вас могут подписаться другие пользователи, в разделе “Лента” и просматривать ваши публичные ссылки.

Лента

Это раздел для просмотра публичных ссылок других пользователей. Раздел состоит из 3 подразделов.

Лента новых публичных ссылок пользователей, на которых вы подписаны

Лента представляет собой непрерывный список ссылок пользователей, на которых вы подписаны. Ссылки добавляются от новых к старым. Лента отображается с автоподгрузкой данных.

Просмотр всех публичных ссылок конкретного пользователя

Раздел предоставляет список всех публичных пользователей, на которых вы подписаны. Список располагается в левом всплывающем окне

Поиск публичных пользователей

Раздел отображает в виде списка всех публичных пользователей, на которых вы можете подписаться. Если раздел пуст – публичных пользователей нет. Пользователи, на которых вы подписаны, так же не отображаются в разделе.

Темы, языки

Сайт доступен в 2 языках en/ru и в 2 темах тёменая/светлая.

Ссылка на сервис

P.S. Прошу с пониманием отнестись, если сервис вдруг будет работать не так как ожидалось. В web стеке используется криптография на эллиптических кривых, поэтому в старых браузерах работать не будет. Но думаю сейчас их никто практически и не использует.