• Как правильно написать авторизацию/аутентификацию?

    dasha_programmist
    @dasha_programmist
    ex Software Engineer at Reddit TS/React/GraphQL/Go
    Есть два варианта хранения данных об авторизованном пользователе:
    1) В куки (так по умолчанию используется в асп.нет): необходимые данные (claims) шифруются machineKey и отдаются пользователю в http-only куках, таким образом при каждом запросе на сервер они присылаются, расшифровываются и далее можно проверить в необходимых местах.
    плюсы: полностью stateless, нет надобности обращаться к БД
    минусы: при необходимости "выбить" сессию со стороны сервера нужно поднимать более сложную логику и хранить флаги в промежуточном хранилище (проверять что если для такого-то пользователя требуется завершить, то такие действия, иначе другие);
    2) Ключ сессии: после успешной аутентификации авторизуем пользователя и claims храним на сервере в быстрой памяти или БД (key-value), где ключ - ключ сессии, значение - любые данные.
    плюсы: есть полный контроль состоянием авторизации (как и возможность завершить сессию со стороны сервера, так и сменить пользователю роль(или другие параметры) "на лету")
    минусы: организация доп. прослойки - кэша или хранение в БД (медленно), при перезапуске/падении сервиса сессии клиентам потребуется перелогиниться.

    1
    1.1 В куки писать или ключ сессии или шифрованные данные о пользователе, сессия - абстрактное понятие (это пара: ключ и данные), ключ должен быть защищенным, т.е. трудным к копированию (хотя бы зрительно трудно запомнить), уникальным (чтобы не возникло коллизий: двум разным пользователям выдался один и тот же ключ, т.е. это не должна быть хэш-функция от логина-пароля или IP или чего-то неуникального).
    1.2 В асп.нет существуют атрибуты авторизации (в которых можно расставлять проверки на требование таковой, роль, конкретный пользователь), в общем смысле логика такова: поступил запрос на сервер, далее нужно посмотреть к какому ресурсу идёт обращение (защищенному или свободному), если ресурс защищен, то проверить куки (ключ сессии или шифрованные данные), расшифровать/получить данные о сессии из кэша и предпринять решение: пускаем или не пускаем (отдаём 401/403 или отдаем 200/404/...).
    1.3 Завести на сервере (в кэше или БД) словарь , при алгоритме проверки сессии добавить условие проверки на наличие записи в словаре.
    1.4 С нескольких - словаря не нужно.

    2
    2.1 Даже если пользователь входит через ВК всё равно нужно отдавать свои ключи сессий/шифрованные данные, а вот внутри данных уже хранить access_token от вк-шной сессии, так очень маленькая вероятность, что токен ВК утечет, а если утек ключ сессии, то действия будут ограничены только функционалом сайта.
    2.2 После расшифровки куки или данных по ключу сессии делать доп запрос на сервер ВК с токеном, который сохранился при аутентификации (access_token), запрос простой, например получить имя пользователя, если ВК выдал что токен просрочен или ошибку, то сессию закрывать или куки с данными обнулять.
    Ответ написан
    3 комментария
  • Есть ли в modx процессор для добавления TV полей?

    Vadiok
    @Vadiok
    Веб разработчик
    А чем API не подходит?
    $page = $modx->getObject('modResource', 123);
    if (!$page->setTVValue('bio', 'This is my new bio...')) {
        $modx->log(xPDO::LOG_LEVEL_ERROR, 'There was a problem saving your TV...');
    }
    Ответ написан
    1 комментарий
  • Сколько примерно стоит программирование сайта?

    webinar
    @webinar Куратор тега Веб-разработка
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Проект не стандартный. Скрипт сопоставления цен чего только стоит. Я имел дело с подобными проектами. Заставить это все работать без багов, дело хлопотное. Что-то поменялось в прайсе стороннего магазина и все. Сомневаюсь, что данный проект может жить без постоянного программера.Главный вопрос - получение данных от других магазинов. У них api или прайсы в csv или xml? Или парсить надо?
    В зависимости от ТЗ оценил бы проект от 50 до 150k. если идея сделать, что-то типа яндекс-маркета - то надо собирать команду на гитлабе и колбасить несколько месяцев.
    То что движки для этого не пригодны - факт. Надо брать фреймворк (yii2, symfony, laravel) и делать.
    Думаю автор не совсем понимает, насколько это трудоемко. И тот кто возьмется это сделать за 10 - тоже не понимает.
    Ответ написан
    5 комментариев
  • Сколько примерно стоит программирование сайта?

    @kirill-93
    Вы с ума сошли что ли? Какие 7к? Верстка + программирование 7к? Допустим, что на каком-нибудь несчастном опенкарте это сделать, но какие магазины? Есть ли у них АПИ нормальное или тащить самим? От 50к и выше нормальная работа стоит.
    Ответ написан
    2 комментария
  • Сколько примерно стоит программирование сайта?

    vawsan
    @vawsan
    Frontend Developer
    Верстануть psd, если он не сложный, найдете за 10к. Школоту не смотреть если. А то и за 500 руб сверстают.
    Движок тут либо самопис(видимо вы собираетесь зарабатывать на партнерках), либо любой популярный + плагин к нему.
    В любом случае, что парсер писать для 30к товаров с разных магазов, а потом импортировать стандартными средствами, что использовать апишку партнерок и импортировать сразу в базу, выйдет ну минимум 20-30к и то, многие не возьмутся.
    Даже если брать минимально, такая работа от 50к начинается. А если делать все качественно - раза в 3 выше точно.
    Если вам предлагают 5-7к, бегите. А, или наоборот, попробуйте, а потом отпишитесь, как оно работает)
    Ответ написан
    1 комментарий
  • Как сделать Wordpress очень быстрым?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Я уже раньше отвечал по поводу оптимизации VPS под быструю работу именно WP. Можете порыться в моих старых ответах. Но там все конечно в общих чертах. Сейчас как раз готовлю серию статей по этому поводу - от сетапа системы и пакетов, до оптимизации самого WP и кастомного кода. В принципе, могу достаточно детально проинструктировать, но писать тут сейчас такой объем лень :) Если хотите - стукните в личку (см. профиль).

    Если кратко:

    На shared хостинге разве что плагины кеширования, disk cache и тд. Чтобы добиться максимума, нужно:

    VPS
    нормально настроенная система, особенно дисковые и сетевые операции, включая tcp congestion control и прочие няшные твики
    Nginx, можно с fastcgi_cache, для хардкора есть модуль для прямой работы с memcached
    HHVM c фоллбеком на PHP-FPM (с opcache)
    Memcached / Redis
    MariaDB
    WordPress
    плагин/класс объектного кеширования на уровне WP
    минификация и конкатенация скриптов и стилей
    оптимизация изображений
    грамотный код (в том числе использование объектного кеша, transients / wp_cache)
    грамотное использование функционала ядра WP и архитектурные решения
    и еще огромная тележка мелких нюансов

    зы: такой хардкор касается не только WP но и любой другой платформы, если надо "быстро"
    ззы: а еще уже вышел HTTP/2 модуль под Nginx, сейчас как раз тестирую. Шустрая штука (кстати, снимает небольшую часть задач перечисленных выше)
    Ответ написан
  • Как сделать Wordpress очень быстрым?

    copist
    @copist
    Empower people to give
    1. Установить nginx + php-fpm
    2. Настроить в nginx выдачу всех страниц, которые генерятся в PHP через файлы
    habrahabr.ru/post/124684
    не кэшировать, если пользователь авторизовался или оставил комментарий через внутреннюю систему комментариев. Если комменты через Disquss, то с ними сам Disquss разберётся.
    3. Подключить плагины к Wordpress, которые работают с memcached.
    навскидку: Supercacher и W3 Total Cache
    4. Настроить сборку всех JS и CSS в кучу, сжатие и выдачу в минифицированном виде.
    Ответ написан
    3 комментария
  • Каковы Возрастные ограничения в программировании?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Нет никаких возрастных ограничений. Физиологических нет. Могут быть психологические (и у вас сейчас есть, раз вы в 27 уже задаетесь таким вопросом), но это лечится. Мозг, как и мышци, можно и нужно тренировать постоянно, до последнего вздоха.
    Ответ написан
    Комментировать
  • Фронтенд сборка сайта. Что же это значит?

    @LiguidCool
    Думаю имеется в виду сборка аля gulp - преобразование CSS, конкатинация JS итп...
    Ответ написан
    Комментировать
  • Научиться парсингу - с чего начать?

    @throughtheether
    human after all
    С php не имел удовольствия работать, но поводу парсинга могу пояснить.
    Что вам, по большому счету, надо, так это:

    1) скачать страничку сайта или сделать вызов HTTP API. В этом вам помогут библиотеки вроде curl.

    2) разобрать полученные в п.1) данные. В случае API, как правило,это JSON. В случае HTML вам пригодится знание XPATH-выражений (которые также помогут, если в результате выполнения п. 1) вы имеете XML) и css-селекторов. Исполнять эти запросы будет XML- или DOM-парсер.

    3) полученные в п.2) данные сохранить в конечном или промежуточном виде: CSV, записи в RDBMS (sqlite, mysql, postgresql) или NoSql (Mongo, например)

    В дальнейшей работе помогут Selenium (или другой HTTP клиент с исполнением javascript), очереди заданий, кэширование (redis).

    Думаю, направление для поиска я вам задал.
    Ответ написан
    2 комментария
  • Фриланс. Рассматривать ли российские биржи?

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

    kimono
    @kimono
    Web developer
    В самом парсинге нет ничего сложного - берете несколько кусков чужого кода (например несколько однотипных страниц HTML с товаром или новостями), определяете то что вам нужно вытащить, далее смотрите какие-то закономерности, вложенности, признаки и т.д. Определяете - всегда ли это работает или нет. Пишете шаблон (или шаблоны в циклах), потом проверяете тестами - лучше онлайн (например https://regex101.com/ ), чтобы можно было сразу видеть результат.
    Другое дело как быть со "спарсенными" данными - стоит им доверять полностью или нет. Что делать с данными, если что-то пошло не так.
    Ответ написан
    1 комментарий
  • Научиться парсингу - с чего начать?

    kawabanga
    @kawabanga
    1) Нужно иметь представление, как загружаются и работают сайты. Тут необходимо иметь представление и о том, что полезный контент может появится на сайте и после загрузки через определенное время.

    2) Нужно иметь представление, как работает самый обычный способ получения контента - Curl. Попробуйте скопировать что то, поработать, представить в xml документ и тд. Тут вы определитесь с принципом работы парсера.
    - парсер получает вводую информацию -> с учетом программы и вводных данных, парсер запрашивает определенные данные -> парсер обрабатывает данные для пользователя -> при необходимости, парсер повторяет запрос (инициированный пользователем или рекурсий) -> конец

    3) Далее вы дойдете до механизмов защиты от парсинга:
    - ограничение запросов на 1 ip, на один клиент и тд
    - подгузка информации после загрузки контента
    - дополнительный запрос на подгрузку контента с CSRF и другими способами
    - блокирование ip
    Это откроет вам парсеры типа PhantomJs, Научит пользоваться прокси, мимикрировать под популярные браузеры и тд.
    Так же вы дойдете до многопоточности работы парсера, и подумаете о переходе на C и подобный язык программирования. Общаясь с сайтом уже посредством api.

    А дальше, сталкиваяь с новыми проблемами, будете их решать.
    Ответ написан
    1 комментарий
  • Фриланс. Рассматривать ли российские биржи?

    @zakraben
    Я постоянно ищу хороших верстальщиков, только уже сменил человек 6.
    Российский рынок насыщен говно-дизайнерами( -кодерами и тд) в основном от этого и качество отстой и соответственно платят меньше.

    Можешь показать мне свой скилл и я смогу тебя нанять через апворк.
    Ответ написан
  • Фриланс. Рассматривать ли российские биржи?

    opium
    @opium
    Просто люблю качественно работать
    Если ты можешь работать на не российских биржах нет смысла рассматривать русские, на западе и так платили в пару раз больше, а с курсом бакса минимум в 4 раза уже.
    В русском фрилансе достаточно количество хороших заказчиков, но они работают с хорошими фрилансерами.
    Ответ написан
    Комментировать
  • Фриланс. Рассматривать ли российские биржи?

    Я считаю их стоит рассматривать только в одном случае: если запретят хождение доллара или отключат swift, в остальных случаях welcome to upwork etc
    Ответ написан
    Комментировать
  • Фриланс. Рассматривать ли российские биржи?

    Jump
    @Jump
    Системный администратор со стажем.
    Стоит рассматривать все биржи и искать где вам удобнее.
    И что самое главное - почему именно биржи?
    На биржах бывают хорошие заказы, и некоторые умудряются работать исключительно через них, но это же не единственный источник заказов.
    Ответ написан
    5 комментариев
  • Стоит ли работать программистом?

    @malroc
    Тут в общем-то много от вас зависит. В программировании неинтересной и нудной работы полно, собственно основная часть именно такая.
    Есть ли интересная работа? Есть, и в общем её немало. Можно ли много зарабатывать? Можно. Но нужен уровень.
    Как этот уровень получить? Ну очевидно всё-таки начинать с неинтересной и нудной работы под контролем "старших товарищей". То есть готовьтесь что первый год-два работа будет не просто низкооплачиваемая, но и скучная. А дальше зависит от того, насколько быстро учитесь, от личных качеств и способностей.
    Да, есть ещё относительно экстремальный вариант - начинать с фриланса. Лучше так не делать, потому что рискуете застрять на уровне бесконечного клепания сайтов-визиток. Вот после того как минимальный опыт уже набрали, можно переходить на фриланс, причём желательно сразу на англоязычный (в русскоязычном сегменте делать нечего). Ну или устраиваться в другую контору/карьерно расти в одной, здесь много от личных предпочтений зависит.

    P.S.: Да, Люди, которые говорят (в т.ч. здесь в комментариях) что в IT плохие перспективы - это скорее всего люди, у которых плохие перспективы будут везде. Ну есть такой специальный тип людей.
    Ответ написан
    1 комментарий
  • Где тусуются Javascript-разработчики(это не hh)?

    @shane89
    есть чатик отличный, позже напишу, щас нету доступа. Только он на английском, но там товарищи с бородой.
    Ответ написан
    2 комментария