• Какой JS обфускатор?

    @sanex3339
    Мой обфускатор (NodeJS пакет):
    https://github.com/sanex3339/javascript-obfuscator

    Плагин для Webpack:
    https://github.com/sanex3339/webpack-obfuscator

    Пример обфусцированного бандла Angular 2:
    https://gist.github.com/sanex3339/ffc2876123b52e6d...
    Ответ написан
    Комментировать
  • Что такое slug в разработке?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Чаще всего, как уже написали, встречается в URL, но все же его значение чуть более шире - slug это уникальная строка идентификатор, понятная человеку (в отличие от ID) и содержащая только "безопасные" символы:
    - 0-9
    - a-z (общепринято - в нижнем регистре)
    - символ -
    - иногда еще символ _
    Могут использоваться не только в URL для понятности, но и, например, в запросах к БД (в первую очередь - на уровне АПИ) - ведь
    SELECT * FROM pages WHERE category="some-slug"
    более понятно, чем
    SELECT * FROM pages WHERE category=126.
    На уровне API это выглядит как
    get_pages_in_category( 'some-slug' )
    или
    $object->get_pages_in_category( 'some-slug' ).
    В общем, это человеко-понятный уникальный идентификатор.
    Ответ написан
    1 комментарий
  • Что такое Push-уведомления?

    AMar4enko
    @AMar4enko
    Push уведомления инициируются сервером, без необходимости делать какие-либо периодические проверки в приложении.

    Схема примерно следующая:
    • Приложение регистрируется в GCM, получая уникальный id (это может происходить, например, при логине), после чего отправляет этот id на свой сервер, чаще всего с информацией о логине, чтобы на сервере привязать полученный от GCM id к пользователю.
    • Приложение слушает входящие сообщения с помощью .GcmBroadcastReceiver
    • При наступлении какого-то события на сервере (например, пользователю прислали сообщение) сервер вытаскивает нужный id, которое приложение передало в первом пункте и использует его для отправки уведомления через шлюз GCM
    • Шлюз сам разруливает куда чего слать
    • В приложении срабатывает код, который был подписан на получение уведомлений
    Ответ написан
    Комментировать
  • Как работать с websocket в php без библиотек?

    @xfg
    Прочитать соответствующий RFC https://tools.ietf.org/html/rfc6455 чтобы понять, как происходит рукопожатие и какие байты в переданном сообщении за что отвечают. После этого будет понятно как написать реализацию. Я досконально уже не помню, но фактически от клиента приходит обычный http запрос с определенными заголовками, сервер разбирает этот запрос и если всё ок, то сохраняет открытое соединение в массив, если нет, то отправляет соответствующий ответ и закрывает соединение. Дальше по открытому соединению начинает сыпаться поток байтов от клиента их нужно разбирать, чтобы понять длину сообщения, сами данные переданные в фрейме, закончился фрейм или еще нет и тому подобное. Обратно также кодировать данные в поток байтов и отправлять по открытому соединению. Каждый байт в переданном фрейме несет определенный смысл. Обо всем этом подробно написано в RFC, но на английском. Вообще это хорошо примерно понимать как работает, но глупо писать такую низкоуровневую реализацию, когда есть готовые. Такие вещи развивают и поддерживают годами. Вы же не пишите HTTP серверы, а берете готовые вроде nginx и тому подобное.

    В каком месте можно полученные данные подготовить к записи в бд.

    Как сделать, что бы на стороне клиента, один websocket отвечал за сообщения, другой за статьи. (Или за эти два действия отвечает один websocket, тогда как мне на сервере это различать).

    Вебсокет это низкоуровневая штука, для передачи потока байтов от клиента на сервер, в отличии например от HTTP, где есть заголовки и тело сообщения. Поверх вебсокета нужно делать еще один протокол или самописный или выбрать один из готовых. Это проще говоря, то как выглядят ваши фреймы (сообщения), которые вы отправляете с клиента на сервер и назад. Например клиент может отправлять такой фрейм:
    ["id", "controller/action", {param1: value1, param2: value2}]

    в ответ получать
    ["id", "OK"]
    если запрос был обработан успешно или
    ["id", "ERR", {error: "action not found"}]
    если произошла ошибка. По переданному id в массиве, можно понимать, к какому запросу относится ответ.
    Для уведомлений (событий) сервер может отправлять клиентам что-то такое
    ["user_added", {user: {...}}]
    и т.д. Этот протокол необходимо придумать самому или выбрать из готовых (популярных пока нет) и написать его реализацию (клиентскую и серверную часть) или опять же взять уже готовую.

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

    Но это уже всё должно быть, просто возьми real-time фреймворк. Там за тебя написали и websocket сервер и протокол поверх него и экшены уже есть. Всё низкоуровневое уже готово. Бери и пиши приложение. В nodejs самый популярный это например https://github.com/socketio/socket.io, а в php я не знаю, но уверен, что тоже есть что-то популярное.

    Своё написать не получится, без опыта и без попыток сделать приложение на чем-то готовом. Нужно как минимум прочитать RFC и посмотреть реализации других разработчиков. Для этого нужно быть кем-то больше, чем "программистом сайтов".
    Ответ написан
    1 комментарий
  • Какой лучший учебник по линейной алгебре

    FINTER
    @FINTER
    Тыртышниктов Е. Е. «Матричный анализ и линейная алгебра»
    Евгений Евгеньевич является одним из сильнейших специалистов по линейной алгебре в мире. Преподает в МГУ и ФизТехе.

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

    Вначале предлагается обучиться инструменту линейных оболочек, а потом с помощью этого мощного инструмента показывается все красота линейной алгебры. При этом лекции читаются легко, что для математического пособия в принципе редкость.

    Освоив эту книгу полностью вы будете с гордостью говорить: «Тензоры? Тензоры — это просто =)»
    Ответ написан
    2 комментария