• Стоит ли делать приложение на Cordova?

    @Levhav
    Возьмусь за разработку проектов любой сложности.
    Гибридное приложение это не просто браузер встроенный в приложение. Это ещё возможность написать нативный код и вызывать его из JavaScript так что аргумент на счёт будущих хотелок и то что на них может не хватить произодительности это бред. На пример я делал приложение видео чата. В ios на момент разработки в сафари такого не было. Но я взял и поставил плагин к кордове который работу с webrtc выполнял нативным образом и рендерил содержимое в отдельный нативный слой в ios приложении.
    А в андроиде эта функция уже давно есть и там я не ставил плагин. Но в итоге всё равно это эффективнее чем писать всё нативно.

    Вот если бы у вас была игра с 3D графикой то думаю было бы правильно выбирать нативный подход. Но во всех остальных случаях cordova оправдана.
    Ответ написан
    Комментировать
  • Каковы основные принципы регистрации и авторизации через социальные сети OAuth2?

    hbuser
    @hbuser Автор вопроса
    Отвечу сам себе.
    Здесь есть полезная конкретная информация о технической реализации.

    А если вкратце, то...

    Для авторизации, регистрации используется все та же таблица 'users'. Вместе с обычной регистрацией и авторизацией, когда при регистрации (в самом простом виде) в таблицу 'users' добавляются email, password и login пользователя, а при авторизации проверяется соответствие введенных login'а и password'а существующим в базе данных, аналогичным образом используется и регистрация/авторизация через социальные сети. Только в данном случае источником данных о пользователе для его регистрации является не непосредственный пользователь, который вводит данные в форму, а соц. сеть. Регистрация в данном случае достаточно прозрачная, т.е. не видна пользователю. Схема примерно следующая (без особенностей работы Oauth-протокола):


    1) Пользователь выбирает вход через соц. сеть.
    2) Происходит обращение к странице авторизации в этой соц. сети, если человек еще не авторизовывался там. После ввода данных, а если он ранее авторизовывался, происходит запрос на разрешение использования его данных.
    3) Если человек отказывается, то на этом конец. Если дает согласие, то выполняется перенаправление на указанную в настройках Oauth страницу сайта.
    4) У каждого пользователя в соц. сетях есть свой уникальный идентификатор, который можно запрашивать. Для своей таблицы 'users' нужно добавить пару дополнительных полей (например, вот такие): auth_via (enum('native, 'vk', 'mailru', '...')) - для обозначения типа регистрации пользователя, и social_id - здесь будет храниться уникальный идентификатор в соц. сети. Если нужно хранить какие-то специфические данные этого пользователя из соц. сетей, то можно создать доп. поля для этих данных.
    5) После того, как пользователь дал разрешение на использование его данных, необходимо запросить нужные данные от соц. сети, в т.ч. и идентификатор пользователя в соц. сети. Вот здесь и начинается невидимый процесс регистрации. Нужно проверить есть ли в БД пользователь с таким social_id, если нет, то вставляем social_id, данные пользователя из соц. сети, по необходимости, в БД. Все, пользователь зарегистрирован.
    Если же данные о пользователе есть, то необходимо запросить актуальные данные из соц. сети, сравнить их с теми, что в базе и если они изменились, то обновить их и в своей базе данных, если нет, то просто переходим к следующему шагу.
    6) Создается сессия с данными пользователя.

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

    ca4a4b263fd1424085988c9deaeb6d5b.png

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

    'AND WHERE `auth_via`="native"'

    , чтобы исключить пользователей, зарегистрированных из соц. сетей.

    Как видно, для каждого пользователя в таблице создается внутренний (внутрисайтовый, если так можно выразиться) первичный, автоинкрементный ключ. Соответственно, нет разницы для логики сайта между пользователем, зарегистрированным через соц. сеть и через сайт. Если говорить об интернет-магазине, то, для привязки заказов к пользователю, можно использовать единый, внутренний идентификатор ID.
    Ответ написан
    3 комментария
  • Какой дистрибутив Linux подойдет для новичка?

    Elementary основана на Ubuntu, для новичка подойдет.
    Так же можете взять за основу Debian и накатить туда XFCE. Гикая настрока + простота и минимум ресурсов жрёт.
    Ответ написан
    1 комментарий
  • Что выбрать для VPN?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Softether - OpenVPN, L2TP (для ноутов и мобильников/планшетов), IPSec для туннелей. В одном флаконе. Приятный интерфейс управления, большое количество настроек.
    Ответ написан
    Комментировать
  • Подкиньте идею как реализовать шифр цезаря на JS?

    ptrvch
    @ptrvch
    вебдев-энтузиаст. Django, AngularJS
    1. Создаём строку, содержащую алфавит
    2. пишем функцию, создающую алфавит сдвинутый на n символов
    3. пишем функцию, которая будет искать индекс каждого символа исходной строки в исходном алфавите и для зашифрованной строки брать индексы из сдвинутого алфавита


    codepen.io/ptrvch/pen/VvvPdo
    Ответ написан
    1 комментарий
  • Как работать с Coocies в компоненте idhttp в Delphi XE6?

    BuriK666
    @BuriK666
    Компьютерный псих
    Для Cookies есть idCookieManager
    Ответ написан
    Комментировать
  • Возможна ли адаптивная верстка под любое разрешение экрана?

    @danSamara
    Думаю вам надо изменить сам подход к вёрстке - нельзя верстать под конкретные разрешения, это тупиковый путь с бесполезными затратами времени.
    Оптимальный workflow примерно такой:
    1. Делаем максимально резиновую вёрстку. Всё что может быть резиновым - должно им быть, включая изображения. На этом этапе можно с картинками сильно не заморачиваться и делать просто { width: 100%; height: auto; }, перфекционизм - позже.
    2. Расставляем брекпоинты. Обратите внимание: их надо расставлять не по "популярным" разрешениям экрана, а в соответствии с дизайном! Как пример - вывод товаров в каталоге в виде сетки. На большом экране будет четыре товара в ряд (25% ширины), потом - три, два и, наконец, для телефонов в портретной ориентации - один товар (100% ширины). Разрешение, при котором будет "перепрыжка" товаров с четырёх в строке на три (и прочие) надо определять визуально, лучше вместе с дизайнером. Результатом этого этапа должен быть сайт, который с максимального разрешения (допустим 2000 пикселей) до минимального (200?) красиво меняется в браузере при плавном изменении размера окна.
    3. Тестируем на популярных разрешениях экрана. Заметьте, это практический последний этап. Если предыдущие этапы сделаны правильно, то на этом не остаётся никакой работы - просто проверка.
    4. Наводим лоск. Здесь уже можно заняться оптимизациями и украшательставами. В частности - сделать разные источники для каждой картинки. Не буду подробно описывать технологии, руководств много в сети, по картинкам например вот: "Отзывчивые изображения: примеры использования"
    Ответ написан
    Комментировать
  • Как снять защиту от записи с флешки transcend 16gb?

    Spetros
    @Spetros
    IT-шник
    Нужно определить какой контроллер в ней используется, после чего утилитой производителя попытаться разблокировать контроллер флешки.
    Более подробно есть описано здесь.
    Ответ написан
    Комментировать