IWasHere: дневники разработки. Февраль

Знаете, а я тут ВНЕЗАПНО вспомнил, что мне надо пилить диплом. А точнее говоря, дипломный проект. Сия внезапность меня настигла вчера ночью, поэтому подкрепившись знатной дозой кофе, я таки до 8 утра просидел за Android Studio. И да, меня до сих пор бесят его вечные тормоза, если что. Впрочем, сам диплом для меня сейчас вовсе не в приоритете, ибо еще конец прошлого года показал, что важным фактором защиты диплома является скорее куча ненужной бумаги и красивые речи, плюс еще люто ненавидимый мной деловой внешний вид. Не, я конечно знаю, что «встречают по одежке», но всё же… Как вы уже догадались, на первое место в приоритетах выходит сам проект. Поэтому в качестве некой систематизации рабочего процесса где-нибудь, скажем, раз в месяц я буду публиковать отчеты о ходе разработки. И нет, это не постоянная рубрика, просто небольшой эксперимент. Может быть, он мне не понравится и продолжать публикацию записи я и не буду. Кто знает.

И раз записи будут выходить примерно раз в месяц, то сегодня я хочу рассказать о том, что я сделал в феврале. Напомню, что на начало февраля у меня был готов сервер(написанный на PHP+Yii2, в качестве базы данных используется MySQL) и даже интерфейс для взаимодействия с ним на клиентской стороне(это делалось с помощью библиотеки Retrofit).
1. Аутентификация. Разумеется, самой первой функцией приложения, которую необходимо было реализовать, стала аутентификация. Как я уже рассказывал, вместо привычной и уже немного устаревающей связки «логин-пароль» я выбрал «email-одноразовый пароль». Причем, одноразовый пароль высылается на адрес email. В будущем возможно применение OAuth, в частности, использование аккаунтов Google, которые есть почти на всех устройствах Android.
Однако, главным принципом любого современного приложения является не только удобная аутентификация, но и возможность хранить сессию сколь угодно долго. Мобильные устройства чаще всего принадлежат одному владельцу и процедура прерывания сессии здесь нужна не так часто, как, например, в браузере. В конце концов, приложение может закрываться системой или юзером много раз, но каждый раз начинать аутентификацию заново в таком случае — просто бред. При этом, сервер должен быть уверен в том, что получает информацию от нужного пользователя и выполняет запросы от имени того, кто этот запрос отправил. Проще говоря, если Б отправил от имени А запрос на сервер по выполнению какого-либо действия, то этот запрос должен быть отклонен. Проще говоря, при каждом запросе клиента сервер должен авторизовать запрос. Для этого используются Cookie. При успешной аутентификации сервер передает клиенту файл Cookie, содержащий уникальный идентификатор и ключ сессии. Ключ случайно генерируется из символов латинского алфавита(строчных и прописных) и цифр. Длина ключа составляет 32 символа. Хеш ключа хранится в базе данных в объекте сессии. В каждом запросе клиент предоставляет файлы Cookie, а сервер, перед тем как этот запрос выполнить, проверяет, соответствует ли переданный пользователем ключ данному хешу.
2. Регистрация. Тут всё гораздо проще — пользователь заполняет 4 поля и регистрируется в системе. Приложение сразу определяет заполнение полей(пока что только сам факт заполнения, о корректности как-нибудь потом поговорим) и отправляет запрос. Сервер отвечает и в случае успеха юзер сразу перенаправляется на страницу аутентификации.
3. Выдвижное боковое меню. Плюшка, сделанная ради интереса. Использовалась библиотека MaterialDrawer. Выглядит неплохо, по крайней мере, на девайсах с 6-м андроидом и выше. На планшете с 5.1, увы, не работает. Надо пилить отдельные костыли
4. Сервер. Периодически дописываются различные методы для сервера. Ибо сначала их было примерно 15, к концу практики их уже стало около 20, а теперь я еще хочу парочку добавить. Соответственно, будет обновляться и интерфейс сетевого взаимодействия в клиентском приложении.

Вот пока что и всё. Сейчас я пилю добавление новых меток, их просмотр и RecyclerView со списком всех меток в заданной точке и некоторой небольшой окружности(ах да, добавилась еще и небольшая окружность, вида +-0.0002 градуса к координатам точки по GPS, для того, чтобы нейтрализовать погрешность в точности геолокации. Хотя, это нужно тестировать для достижения наилучшей точности).

По сути, где-то через месяца три уже должна быть защита. А времени не так уж и много, я вам скажу. Впрочем, в сроки я укладываюсь. Наверное. А после защиты… Что делать после защиты? Кто-нибудь знает? Не, в июне-июле я, может быть, отпуск себе организую. А потом ведь надо будет искать, чем заняться. С одной стороны, я давно хотел заняться бизнесом. Особенно было бы хорошо, если в сфере информационных или телекоммуникационных технологий. Ну, той же связи, например. Эта сфера мне интересна(особенно, если мобильную связь вспомнить). Но… бизнес и Россия — вещи мало совместимые. Отдельно хотелось бы продолжить изучение хомо и общества, применить уже навыки управления людьми на куда более широкой аудитории… Хм… мысли вслух, не более.
До скорого.

Добавить комментарий