ОХ*ЕЛИ! и несменяемость власти

Всем привет! И кто-нибудь мне скажет, какого вообще хрена сегодня повалил снег. Причем, уже полдня как валит. Позавчера, значит, я стараюсь отсиживаться в общаге, ибо на улице +27, а сегодня снег и только +2. Что это за хрень с погодой, блин? И да, ни тот, ни другой вариант меня не устраивает. Разве что где-нибудь посередине остановиться. Хотя бы на +15.

Ладно, сегодня у нас обещанная еще вчера рубрика «ОХ*ЕЛИ!». Скажу сразу, я бы выпустил её вчера, но 3 часа просидел в универе готовясь к последнему зачету, о сдаче которого я узнал ВНЕЗАПНО тем же утром. Плюс еще час на дорогу. В общем, вместо выхода видео в пять в это время я только снимать начал. А в середине монтажа у меня завис и вылетел Corel Videostudio. Еще он, видимо, просёк что я его не покупал, а скачал вместе с кейгеном с торрентов и при открытии и закрытии показывает окошко «You are victim of piracy?» и предлагает купить себя всего-то за 7900. Ага, щас. И да, я не жертва пиратства. Я и ЕСТЬ пиратство. Хм… согласен, отсылка хреновая.

Короче, монтаж и фотошоп превью я закончил только сегодня к часу. Поэтому, в три было выпущено видео. Собственно, вот и оно:

Видео


Новый выпуск рубрики должен был быть приурочен к коронации впрочем, кого волнует как эта процедура называется Лысого еще на 6 лет правления Этой страной. Выпуск рассказывает об одном из принципов демократии — сменяемости власти. И о том, к чему приводит её отсутствие. На примере правителя одной очень гордой и независимой банановой республики. Все события и персонажи являются вымышленными, любые совпадения случайны, поэтому если что не обижайтесь на меня, товарищи майоры.

Кстати, пока я монтировал этот выпуск, кое о чем задумался. Сами видите, что здесь больше закадрового текста, чем действий и реплик персонажей. И это если еще учесть то, что к этому видео в отличие от других в этой рубрике я писал сценарий. Получается, что подобный формат больше подходит для текстовых рубрик, а не для видео. Но проблема в том, что текст большинство воспринимает хуже, чем видео/аудио. Многим тупо лень читать или писать. А, как понимаете, главной целью этой и других рубрик является распространение информации. Ибо, например, многие люди до сих пор не понимают, зачем нужно менять кого-то во власти. И те, и другие, и третьи ведь воруют. И будут воровать. Затем. Сами видите, как сильно и безнаказанно стали злоупотреблять властью за 18 лет её несменяемости. Дальше — хуже. Причем, сильно хуже. Если говорить о 24-х годах. Об этом я и хочу сказать. Надо что-то делать.

Возможно, на фоне бездействия и неспособности отдать четкий приказ и задействовать хоть какую-то тактику у лидеров протестов 5 мая(по крайней мере, в Москве) нам придётся сменить лидера. Или даже не лидера, а назначить координаторов, которые будут принимать решения, обдумывать планы и отдавать указания своим волонтерам. Иначе протест сольётся. Он, кстати, уже сливается. Вы ведь, наверное, видели ролик Навального по итогам 5 мая. Что там было? «Спасибо, что вышли… вы молодцы… бла-бла-бла…. они нас боятся… бла-бла-бла». Ни конкретных дальнейших указаний, ни назначения даты следующего протеста. Что-то мне подсказывает, что Навального сейчас на месяц опять отправят в СИЗО, он там отсидится и месяца через 3-4 организует еще один митинг. Месяца через 3-4. Когда уже всем будет плевать и какие-либо настроения исчезнут. Градус протеста нужно постоянно повышать, нагревая обстановку нетерпимости и неподчинения, а что мы видим тут? Митинги раз в 3 месяца, без каких-либо четких указаний и даже никто никого и не пытается защищать. Моя хата с краю. Правильно говорят, «как в Армении» у нас не будет, армян слишком мало. Либо кому-то не хватает яиц дать приказ перекрывать трассы или выйти в бессрочный митинг. В общем, один простой вопрос — почему раскрученный уличный политик не додумался до того, что мне пришло в голову практически за 3,5 минуты? Банально хотя бы взять московский штаб, сотню волонтеров и сказать им, что делать, если Главного унесут в автозак. А сомневаться в том, что унесут, не приходится. А сотню унести сложнее, нежели одного.  Фууух! Ладно, проехали!

Сегодня я, кстати, сдал последний зачет. Закрыл сессию. Теперь осталось лишь пилить диплом. По этому поводу, кстати, где-то в четверг-пятницу будет еще одна запись. Ждите.
До скорого.

С возвращением!

Всем привет! И… как же я соскучился по этому блогу! Не, я конечно, делал небольшие записи в VK и Telegram, но… поверьте, это не то. Блог для меня за эти 7 лет стал уже личным пространством — некой точкой вселенной, в которой я могу быть настоящим. Говорить [почти] всё, что думаю и делать то, что хочу. Планируемый запуск Project Darkside же и вовсе усилит это чувство, позволив «сбросить маски», которые приходится носить в обществе. Как же иногда устаешь притворяться! Ложь становится обыденностью, а за «масками» не остаётся ничего. Ты делаешь только то, что тебе нужно делать, а не то, что ты хочешь делать. Так ведь можно стать слишком … «обычным»?!

Хм… что-то я увлекся. Так, раз блог две недели лежал, то пора бы поговорить о некоторой … хм… «компенсации» рубрик за это время. Что ж, к концу недели выйдет предварительное расписание рубрик на май, по которому я и буду выпускать записи. 2-3 лишних записи, думаю, точно будут обеспечены. А в июне меня ждёт подведение итогов сего важного периода(думаю, что имеет смысл выделить последние 4 года в отдельный жизненный период, ведь так?) и отпуск, который начнется после защиты диплома, который мне, я полагаю, удастся защитить(но это не точно!). В «итогах» я подведу некоторые итоги сего периода и подумаю над тем, чем именно я хочу заниматься.

Новости. Их было много. Революция в Армении, митинг за свободный интернет, новые фэйлы Роскомпозора при блокировке Telegram. Как хорошо, что обзоры новостей я делаю редко.
Митинг 5 мая. Собственно, на него я предлагаю вам сходить. Я вообще чуть ли не на все митинги вам тут ходить предлагаю(ну, ладно, ладно, было одно исключение 28 января, где я промолчал, ибо не поддерживал саму идею бойкота выборов и потом даже понял и объяснил почему). В Иркутске митинг состоится в 13:00 на Площади 50-летия Октября(остановка Баргузин/Диагностический центр). Недалеко от моей общаги, кстати, так что можно пешком притопать. Думаю, перед самим митингом запилить одно небольшое видео.

Сходил в субботу в Kari, запасся новыми обудками. 3 пары раздают по цене 2. В принципе, выгодно. Заплатил 2400 с копейками, благо у меня теперь есть новая кредитка. Будет в чем теперь защищать диплом, если буду.
Ах, кстати, тут 1 июня грядет срок продления основного домена i-swa.ru, а это как никак 200 рублей. Не то, чтобы я не мог эту сумму оплатить, но… мало ли… В общем, скоро будут открыты Донаты. Буду рад, если поддержите отца русской демократии мизантропии меня. Можно, кстати, и наматериально — разместить понравившуюся вам запись(например, из какой-нибудь рубрики) в ваших соцсетях. Как никак, за эти две недели кто-то мог обо мне и забыть. Да и новые читатели будут как никогда к месту. Вон, даже сегодня, только после восстановления посещаемость уже поползла чуть выше отметки «3,5 анонимуса». В том числе и по старым записям. Ну, например, в списке посещаемых часто фигурирует «Немного о фурри» . Это при моём-то пренебрежении к сему фэндому.
И, что-то я заболтался уже. Третий час ночи, послезавтра экзамен сдавать, а я ни хрена еще не сделал и вообще устал за сегодня. Кстати, я вам уже говорил, что в этом семестре в универе был всего один(!) реально интересный предмет, по которому я получил зачёт вообще на easy? Ладно, потом расскажу.
До скорого! И да, с возвращением!

IWasHere: дневники разработки. Март

Всем привет! Итак, как вы уже помните, я сейчас занимаюсь работой над собственным проектом. Ну… как занимаюсь… вспоминаю иногда. Подробности о нём вы можете прочитать, например, вот здесь — IWasHere: мизантропичная геосоциальная сеть. А здесь находится предыдущая запись по дневникам разработки. Что ж, с тех пор аж месяц прошел, за это время я, правда, успел пару раз упомянуть некоторые фишки проекта(например, модное на фоне конфликта Telegram с гэбней сквозное шифрование), но всё-таки до полноценных «дневников разработчика» это не дотягивает. Ах да, теперь эта небольшая рубрика будет выходить раз в месяц.

1. Концепция MVP. Собственно, основная концепция при разработке проекта и презентации его первой версии(которая будет во второй половине мая). Название подсказал мне мой научрук в универе, но основной смысл был понятен мне и до этого — для начала реализуется базовый функционал, достаточный для презентации основной идеи проекта. В нашем случае, это будет сама возможность добавления меток, отправки сообщений и создания групп. В данном виде выпускается первая готовая версия приложения и анализируется спрос на него. В случае успеха допиливаются различные свистелки и перделки(«extended version»). В случае фейла проект успешно забывается, ибо потери невелики.

2. Определение местоположения(включая точность). Достаточно много времени пришлось потратить на непосредственно определение координат и улучшение их точности. Был создан класс GPSLocation, реализующий паттерн Singleton, в котором определяется местоположение устройства пользователя. В единственном экземпляре данного класса хранятся и сами координаты, и точность определения местоположения(в метрах).
Использование всех доступных провайдеров местоположения позволяет снизить время определения координат(то есть, время неактивности приложения с момента запуска, ибо первым делом у нас идёт именно определение местоположения) до минимально возможного. При переключении между различными компонентами приложения координаты сохраняются. Также приложение умеет работать в фоне и определять местоположение там.
Определив координаты и точность, приложение отправляет их на сервер, который возвращает все доступные метки, находящиеся в окружности радиуса точности с центром в указанной координатами точке.

3. Отображение метки. Получив список меток, приложение отображает их в RecyclerView. При клике на элемент списка, юзер попадает на страницу информации о метке. При этом, зашифрованные метки, ключа от которых на устройстве пользователя нет, не показываются. Текст остальных зашифрованных меток показывается только на странице подробной информации.

4. Анонимность и шифрование. Метка может быть оставлена анонимно, при этом другие пользователи не смогут узнать имя автора. Однако, на сервере эта информация всё равно будет храниться(для того, чтобы была возможность редактировать и удалять метку, а также делиться ею). По умолчанию метки хранятся на сервере в открытом виде и все пользователи могут получить к ним доступ. Однако, при добавлении или изменении метки пользователь может сделать её шифрованной. В таком случае, её текст будет зашифрован с помощью алгоритма AES, а ключ от метки сохранится на устройстве юзера. Этот ключ можно будет отправить другим пользователям с помощью личных сообщений, но об этом позже.

5. Добавление, изменение и удаление метки. Тут всё просто  — заполняешь поле текста, по желанию щелкаешь две галочки(анонимность и шифрование), и метка добавлена. Автор метки может изменить или удалить её, если нужно. Изменению подлежат только текст, а также опции «Анонимность» и «Шифрование». Изменить метку можно в течение часа после её добавления. Удалить — в течение 24 часов. Это сделано ради предотвращения возможных спекуляций. При таком раскладе на одной точке может скопиться огромное множество меток, но и этого можно избежать с помощью небольшой доработки проекта. В будущем.

Еще много чего надо успеть сделать. А остаётся полтора месяца. Что ж, пора бы, пожалуй, поднажать. Тем не менее, еще как минимум две записи с этим заголовком вы еще увидите. А там посмотрим.
До скорого.

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, для того, чтобы нейтрализовать погрешность в точности геолокации. Хотя, это нужно тестировать для достижения наилучшей точности).

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

Скучно.

Привет! Да, пожалуй, именно таким коротким предложением можно охарактеризовать моё текущее настроение. Я уже наверно говорил, что если бы можно было изобразить график моей активности по периодам, то это были бы те еще американские горки с экстремальным уклоном. Ибо за периодом быстрого роста следует пик и столь же быстрый спад до того состояния, когда вообще ничего не хочется делать. Конечно, энергии на всё и сразу не хватает и иногда нужно время, чтобы восстановить силы. Потому что иногда приходишь ты такой с практики, на которой делал… ну… практически ничего, и валишься с ног. Ну да, еще и сбитый режим дня, вкупе с тем, что на практику за каким-то хером нужно было приходить к 9 утра. Впрочем, к 9 утра за весь месяц я приходил лишь пару раз. Ибо в первые часа два-три я всё равно бы либо спал, либо занимался чем угодно, только не дипломом. Рабочие часы у меня обычно начинаются гораздо позже.

Ах да, в субботу должна была быть рубрика, но я слишком сильно увлекся дипломом, поэтому на написание букв времени не хватило. Будет, пожалуй, через пару дней. Максимум — в субботу. Вообще, надо бы немного подкорректировать расписание выхода рубрик, дабы, скажем, раз в две недели рубрика выходила, например, в среду. Сокращать время выхода, как раньше, я пока не хочу, ибо рассказать надо о многом, а времени не так уж и много. Но ладно, об этом я как-нибудь сообщу позже.

Диплом. Да, я тут в пятницу вечером решил продолжить им заниматься. Ну, во-первых, появилось желание. Во-вторых, надо ж его когда-то делать. Я вон итак из графика выбился. Впрочем, график я делал только на время практики, преимущественно по желанию моего научного руководителя и на абсолютное [ДАННЫЕ УДАЛЕНЫ]. Ибо я никогда не умел вкладываться в нужное время. А уж куча подводных камней, что мне пошла встречаться и вовсе делает реализацию этих планов в указанное время невозможной.
Кстати, о недостатках разработки по Android. Что бы вам рассказать? Ладно, такой НЕНАВИСТИ, как в случае первого пришествия OdinAss 1С не будет, но вот что мне НЕ нравится в этом занятии:
1. Android Studio. Нет, местами это даже вполне удобная среда разработки. Подсказки там, автоматическое форматирование кода, дабы ВЕСЬ программный код не писали в одну строку, что есть абсолютно вырвиглазно. Но! Как же он тормозит! Ваш проект может собираться минуты 3-4 минимум, и это без учета состояния, когда система радостно информирует вас о том, что «Приложение не отвечает». Вообще, по уровню тормозов ЭТО обгоняет все ОСки семейства Windows вместе взятые. А по количеству обновлений Gradle, SDK и иже с ними еще и персонально десятую винду. Возможно, это всё потому что у меня на ноуте стоят «нищебродские» 4 гига оперативной памяти, когда системные вымогательства этой среды рекомендуют аж 8(8, Карл!). И еще 1 гиг для эмулятора. Извините, у меня даже большинство игр на ноуте столько не требуют. Про такие мелочи, как Fucking English по умолчанию я и вовсе предпочту забыть.
2. Эмулятор. Начнем с того, что он тоже тормозит. Продолжим тем, что на моём ноуте с «не менее нищебродским» процессором AMD A6 он и вовсе отказывается запускаться. Поэтому про это адское поделие гугла и IntelliJ мы благополучно забываем и качаем GenyMotion, благо для частного использования он бесплатен. Правда, если эти запускать её одновременно с Android Studio(что логично при отладке приложения!), тормозят они в два раза больше. Ладно, черт с вами, хорошо, что андроидофон у меня в наличии.
3. Дизайн. Вот не люблю я всякие юзер-интерфейсы пилить хотя бы за то, что в CSS и верстку я нормально не могу. В андроиде этому посвящена отдельная дисциплина, называющаяся Layout и расположение элементов в нём. Благо можно в ConstraintLayout сделать кучу форм и кнопочек, привязать их друг к другу и не особо париться.
4. Отображение и обратная совместимость. Частично вытекает из предыдущего пункта. Приложение должно хорошо выглядеть на всех устройствах. Телефон, планшет, 4 дюйма, 5, 10 и так далее. Соответственно, для планшетов следует пилить свой собственный интерфейс, с Layout и Fragments. Отдельная песня — это различные версии Android. Поскольку даже начиная с 4.0 зеленый робот претерпел кучу изменений, все их следует мысленно держать в голове. Ну… например: приложение, определяющее местоположение пользователя требует прописать разрешение на это в манифесте и если вы это успешно сделаете, то оно будет успешно работать вплоть до версии 5.1, а вот начиная с Marshmallow ваша замечательная прога вылетит примерно с SecurityException, если вообще установится или скомпилируется. Ибо многие разрешения нужно запрашивать у юзера лично прямо во время пользования. Удобно, да, но вот про старые версии тоже не забывайте. В общем да, читайте официальные мануалы. Которые, ВНЕЗАПНО, тоже в 90% случаев написаны на Fucking English. Блэт. Впрочем, http://startandroid.ru и http://developer.alexanderklimov.ru вам в помощь. И StackOverflow, конечно, но без него вообще нельзя.

Минутка объективности: весь этот список НЕ значит, что я терпеть не могу разработку под Android. Более того, это мне нравится. Потому что это Java, который интуитивно понятен, это быстрорастущая сфера и это поле для кучи новых идей. В частности, геосоциальных сетей. Просто здесь я хотел описать те моменты, на которые следует обратить внимание и которые нужно учитывать. И да, еще мне до сих пор скучно и хоть какую-то запись надо бы сделать. У меня после выхода новых записей статистика посещений обычно растёт 😉 Шучу.
До скорого.