Browse Category

IT

Мессенджер, страница клуба, фотки

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

Начал страницу автоклуба. Пока дизайнера похитили инопланетяне, справляюсь собственной фантазией. Сделал управление обложкой, Добавил фотоальбомы. 

Главная страница клуба.

Закончил фотоальбомы. Это общий компонент для клубов, и прочих объектов. Загрузку фоток сделал на Amazon S3. Стоит копейки, гибкое кэширование, скорость отдачи впечатляет. Каждая фотка обрабатывается 4 раза: квадрат, маленький размер, средний и большой.

Фотоальбомы (клуба)

Активный альбом.

 

Очень коротко

Досадно что общество совсем оказалось не способным к анализу и факт-чекам. Методы манипуляции становятся хитрее, люди к сожалению ведомы. В сети с самого начала можно легко было найти переговоры пожарных расчетов в момент ликвидации пожара, из которых было сразу ясно про количество жертв и состоянию дверей в кинотеатрах. Да и скрыть подобную информацию в наше время, когда у людей есть возможность коммуницировать и вести общий список жертв – просто не реально. 

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

Сегодня по всей стране прошли акции в знак солидарности. К сожалению нас могут объединить только такие поводы… Берегите себя!

stop ___

После того, как я покинул свои проекты в связи с уходом из Уссури-Телесервис, потребовалась небольшая пауза, что бы определить вектор моих дальнейших планов помимо основной работы. 

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

А поскольку половину моего времени занимает работа над NDA-проектом, а другую – разработка собственного сервиса, я буду делиться своими собственными открытыми наработками.

На данный момент я использовал:

  • React-Redux (Frontend)
  • PHP с самописным модулем кэширования (на бэкенде)
  • Node (сервер для сокетов)
  • БД (MySQL) – в будущем переключусь на PostreSQL если будет проседать.
  • Go Lang – Скрипты для парсинга данных с внешних источников.

Сейчас мессенджер умеет диалоги юзер-юзер, юзер-группа.

Важно понимать что это технический дизайн, настоящий дизайн еще не подъехал.

Так-же готова регистрация и авторизация. 

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

Мессенджер в стадии альфы обошелся мне в 1k+  строк когда и два дня выходных. А еще я прикупил бейсболку, что бы прохожие не видели мои красные глаза от лютого оверворка. 🙂

Техническая спецификация.

Общение socket-сервера с базой данных происходит по средствам http запросов в API. Сам сервер сокетов к базе не подключается.

  • При подключении к socket-серверу передается токен, который был сгенерирован для пользователя при успешной авторизации на сервисе.
  • На socket-сервере присходит handshake по токену. А именно – сверяется присланный токен с доступными открытыми сессиями в системе. Если все ок, сеанс на socket-сервере попадает в массив socket-сессий данного юзера. Сеансов у юзера может быть множество – вкладки в браузере, приложение в смартфоне и т.д.
  • Если имеются группы, то клиент подписывается на групповые каналы (комнаты).
  • Всем клиентам, относящимся к авторизованному юзеру отсылается сокет-оповещение, о том что их друг появился в онлайне, или на оборот.

Далее сеанс будет использован для живых данных: “Вася набирает сообщение”, “Джон только что посетил ваш профиль”, и т.п. Он же будет подниматься с мобильного приложения в фоне.

Ты меня слушаешь, %username%? Или смотришь на девушку в красном(???) платье?

А вот интересное: оказывается Фиона закончила свою съемочную деятельность в 2002. Почему братья выбрали на роль девушки в красном малоизвестную на тот момент (1999 г.) актрису не понятно. Хотя пару причин я уже вижу.

Neo: But if you already know, how can I make a choice?

/* Prolog on

Так много вещей от которых меня торкает, что не хватило бы нескольких жизней что бы во всем преуспеть, а в чем-то одном – скучно. Ума не приложу, как Лео все успевал. Хотя, если брать во внимание принцип релятивистского замедления времени Эйнштейна, согласно которому  в движущемся теле все физические процессы происходят медленнее, чем в неподвижном, то если лежать на диване перед теликом и ничего не делать, точно не на что времени не хватит. 😂

Есть интересный фильм косвенно на тему с Джастином Тимберлейком. Время – самый важный ресурс, ну правда. Да и теория 10 тысяч часов тоже давно описана. 10 тысяч часов, отданных чему либо конвертируют тебя в специалиста.

 Prolog off */

Ладно. Сегодня вроде-бы как выборы состоялись. В который раз я поражаюсь на сколько оказывается это непосильная задача для Россиян – взять и просунуть бюллетень в урну! Ну правда, это Вам не зависать на участке несколько дней к ряду, собирая урны, заполняя тысячи бланков росписью и печатью а потом считая голоса. Это намного сложней – тут нужно оторвать свою жопу от дивана в воскресный день и уделить этому 15 минут! Да и намного проще на кухне под водочку пожаловаться на то, что в твоих неудачах виноват Путин, чем признать себя лузером.

Свобода – это возможность выбирать свою профессию, совершенствоваться в ней, получать кайф от результата. При этом можно получать материальное вознаграждение, эквивалентное твоей полезности для общества. Весь мир у наших ног, любая точка на карте, куда долетит Люфтганза 👨‍✈️👩‍✈️. Именно мы сами программируем наше будущее, выбирая профессию, образ жизни и мышления, но никак не один из 8 кандидатов в президенты.

Однако все мы имеем право голоса и свое мнение. И на него ни как не должен повлиять ютуб, телевизор и прочее чужое мнение.

Парадокс буддизма и индуизма с точки зрения логики.

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

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

А значит теория о перевоплощениях – не верна.

Information Security 2k18

Recently, there occurred a very significant global disturbance! A crowd rushed to download the virus-infected app called “getContact,” but no one considered that after launching the application, humanity opens access to very serious personal data, and I will now explain why.

Keep Reading

IE 11

Сегодня по просьбам пользователей пришлось налаживать совместимость в нашем проекте с IE 11 и ниже. И тут выяснилось что IE не поддерживает асинхронный код Promise и метод поиска подстроки includes.

Вообще забавно вести отладку на IE, когда вся разработка производится на Mac OS. Тут на помощь приходит VirtualBox и установка винды в виртуальной машине. В виртуалке создается сеть между гостевой системой и хостом, и далее появляется возможность использования виндового IE, для открытия и отладки проекта.

Promise

Для решения проблемы с Promise в IE 11 и прочих браузерах, где он не поддерживается, существует полифил es6-promise.

npm install es6-promise –save

Подключаем в проект es6-promise.auto.js и проблема с совместимостью Promise() исчезает.

String.includes()?

Метод includes(), который определяет, находится ли одна строка внутри другой, так-же не доступен в IE 11. Решаем эту проблему очень просто:

if (!String.prototype.includes) {
    String.prototype.includes = function (search, start) {
        ‘use strict’;
        if (typeof start !== ‘number’) {
            start = 0;
        }

        if (start + search.length > this.length) {
            return false;
        } else {
            return this.indexOf(search, start) !== -1;
        }
    };
}

YouTrack

На днях у нашей команды разработчиков встал вопрос об обновлении текущей системы трекинга (Jira) на новую версию, поэтому мы заодно решили попробовать Youtrack от JetBrains и не зря!

Из очень приятных вещей – возможность интеграции с командными продуктами JetBrains, интеграция с BitBucket и GitLab, импорт из Jira в один клик, а так-же настраиваемый dashboard с отчетами и удобными виджетами о состоянии задач и графиками.

Спешу поделиться нашим докер-контейнером с youtrack+nginx+lets encrypt для работы по https. При первом запуске lets encrypt запрашивает сертификаты, если они еще не существуют и стартует https хост с youtrack.

https://github.com/Egregors/youtrack-docker-compose