• Как скрыть алгоритм от дизассемблера?

    @jacob1237
    Если Вы хотите "спрятать" реализацию алгоритма, лучше всего это сделать на сервере. В таком случае Вам нужно будет отправить всего лишь один запрос с минимальным количеством данных (по защищенному каналу).

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

    Если ни один подобный вариант не подходит, лучше всего написать реализацию алгоритма на C (как уже советовали выше), но C точно также можно декомпилировать, если очень захотеть. Софт типа IDA Pro решает подобные задачи на ура.

    Единственный способ хоть как-то скрыть и усложнить дизассемблирование - это применение различных техник обфускации бинарного кода. Эта тематика особенно популярна в среде вирусописателей. Они используют т.н. "крипторы", одна из разновидностей которых - это полиморфный криптор.

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

    Чтобы не писать все самому с нуля, посмотрите вот эти ссылки и погуглите на тему virtualization obfuscation:
    vmpsoft.com - софт который делает как раз то что Вам нужно
    https://oreans.com/codevirtualizer.php - похожий софт
    https://www.reddit.com/r/ReverseEngineering/commen...
    https://github.com/fritzone/obfy - небольшой фреймворк на C++ для обфускации кода.

    В целом же все эти варианты (кроме варианта с запросами на сервер) не дадут 100% защиты от декомпиляции кода.
    Ответ написан
    Комментировать
  • Как правильно реализовать авторизацию через JWT?

    @jacob1237
    Используя пару access_token и refresh_token, попробуйте уменьшить время жизни access_token, например до 10 или 20 минут.
    Хранить access_token'ы в базе данных смысла нет, так как главная фишка JWT не столько в stateless сессии, сколько в децентрализации (вернее, одно проистекает из другого).

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

    И да, основной побочный эффект в этом случае как раз заключается в том, что даже после блокировки refresh_token, access_token будет действовать еще какое-то время.

    Это всегда некий компромисс между удобством и безопасностью.
    Ответ написан
    Комментировать
  • С прикладного в системное программирование?

    @jacob1237
    Рекомендую определиться под какую конкретно систему собираетесь писать.
    Кроме того, неплохо было бы понять какая тема Вас интересует, т.к. понятие "прогать именно в ядре" очень обширное и, в общем-то, ни о чем не говорит, с первого взгляда.

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

    Надо понимать как работает само ядро ОС. К примеру Linux и Windows принципиально одинаковые в подходах, но разные в реализации.

    Далее, если хотите сконцентрироваться именно на ядре операционной системы, то это вообще отдельная тема в рамках Computer Science. Тут помимо знания железа потребуется знание теории. Например виды многозадачности: вытесняющая, кооперативная и т.д., способы управления памятью, способы организации кэша наиболее часто используемых страниц памяти и т.д.
    Важно понимать что в данном случае написание драйверов и написание ядра ОС здесь расходятся, т.к. драйверы это уже более прикладной уровень, хотя и осязаемой пользы от них больше.
    Если интересна именно тема ядра, можете начать со статьи в википедии: https://ru.wikipedia.org/wiki/%D0%AF%D0%B4%D1%80%D... и далее продолжить чтением Таненбаума: https://media.pearsoncmg.com/bc/abp/cs-resources/p...

    По теме ядра Windows хорошо помогут книги Джефри Рихтера. ReactOS Вам уже посоветовали. Также по сети бродят слитые исходники Windows 2K, Windows XP и т.д. Их можно тоже скачать, но это нелегально =)

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

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

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

    Например:
    https://www.amazon.com/Rootkits-Subverting-Windows...

    Раньше был сайт wasm.ru, там было много статей. Сейчас от него остался вроде бы только форум, но можно попробовать найти копию в сети.

    Такая задача достаточно "живая" и интересная, к тому же позволит Вам лучше разобраться в архитектуре систем.
    А далее, после ознакомления, идти "вглубь" по тем темам, которые интересуют больше всего, будь то драйверы или архитектура ОС.
    Ответ написан
    Комментировать
  • Прокси сервер из NGINX с ssl?

    @jacob1237
    В такой ситуации Вам подойдет обычное SSH туннелирование:

    https://ru.wikibooks.org/wiki/SSH_%D1%82%D1%83%D0%...
    rus-linux.net/MyLDP/sec/SSH-Tunneling.html
    https://www.opennet.ru/tips/1691_ssh_tunnel_socks.shtml
    Ответ написан
    Комментировать
  • На удаленной работе просят подписать гонорар контракт а также НДА и скан главной страницы паспорта, ничего серьезного?

    @jacob1237
    Если требуют скан паспорта - рекомендую для начала собрать побольше информации о работодателе.
    Вполне вероятно это может быть мошенничество. Целью мошенничества в данном случае могут быть Ваши персональные данные, находящиеся в скане паспорта (серия/номер, адрес прописки и т.д.).

    К тому же не припоминаю никого кто бы работал через Western Union (очень популярную у мошенников, кстати) в последнее время - в основном это Skrill, Paypal и Wire Transfer.

    Не высылайте незнакомым людям скан паспорта, если не уверены что это "настоящая" организация!
    Ответ написан
  • Питон считают медленным из-за того, что он скриптовый?

    @jacob1237
    Python считается медленным, потому что он интерпретируемый и в стандартной реализации интерпретатора (CPython) нет таких вещей как JIT компиляция.
    Таким образом JavaScript (на основе V8), к примеру, обгоняет его по скорости.
    Кроме того, в ряде бенчмарков Python3 оказывается медленнее чем Python2.

    Однако медленный - понятие относительное. В Python сильно развита система использования внешних модулей/динамических библиотек, есть возможность писать модули на C/C++, использовать внешние динамические библиотеки с помощью ctypes и т.д.

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

    При этом Питон останется тем высокоуровневым "мостиком", который позволит продолжать решать задачу абстрагировавшись от всяких технических моментов (работа с памятью и т.д.).
    Ответ написан
    Комментировать
  • Правильно ли я понимаю суть программирования?

    @jacob1237
    Формат интерпретации данных и их кодирование в памяти, а также список команд, которые способен исполнить процессор, предопределены производителем CPU и описаны в Instruction Set Architecture процессора?


    Да, все верно понимаете. Производители процессоров конечно пытаются стандартизировать свои архитектуры, но все равно остаются ньюансы как у AMD, так и у Intel (если рассматривать только ПК).

    Пример документации от Интел: https://software.intel.com/en-us/articles/intel-sdm

    В целом для ПК (именно для ПК) существуют некий стандарт x86, а также его расширение x86-64. Именно он описывает набор доступных программисту инструкций, флагов и ячеек данных (регистров).
    В рамках этого стандарта каждая инструкция имеет свой опкод.

    Т.е. после компиляции программы в машинный код (двоичную последовательность), опкоды команд будут одинаковы для всех x86-совместимых процессоров (т.е. компиляция идет не под отдельный процессор, а под архитектуру, а самих архитектур много, x86, ARM и т.д.).
    Это дает возможность запускать программы с одинаковым результатом как на процессорах Intel, так и на AMD.

    Программирование — умение кодировать алгоритмы, предназначенные для исполнения процессором, на языке, синтаксис которого, в конечном счёте - после стадий трансляции символьных масок в последовательность электрических сигналов, предназначен для понимания процессором


    Если рассматривать только сам процесс кодирования, то примерно так и есть.
    Но сейчас под термином "программирование" подразумевается нечто большее чем простой набор инструкций с клавиатуры.
    Программирование - прикладная наука. Без предметной области программирование не существует в принципе.
    И именно предметная область зачастую определяет каким будет язык и инфраструктура.

    От программиста требуется не только забить алгоритм и откомпилировать исходник, но и зачастую этот алгоритм сначала придумать/скомбинировать. Без знания предметной области этого сделать опять же не получится, либо получится, но малоэффективно.

    Вам точно не в "web-dev"..
    P.s уж слишком низко полезли. У нас же всё в абстракциях :D

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

    Это может быть потребность написать свой модуль для PHP, Python, JavaScript (Node.js), либо реализовать программный интерфейс к внешним приложениям/системам.

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

    В 90% задач конечно это не нужно (особенно где надо "натягивать верстку на движок" =D), но если хотите расти как профессионал и покрывать весь спектр возможных задач в вебе, то это, как говорится, must have.
    Ответ написан
    Комментировать
  • Какую архитектуру для высокой доступности REST API вы бы порекомендовали?

    @jacob1237
    Не указали какого типа у Вас авторизация и аутентификация и какую роль играет "бэкенд" в этом процессе по отношению к API.

    Предположу что авторизация session-based и бэкенд хранит именно сессионные данные, тогда Вам необходимо использовать токены для авторизации, например JWT.
    Таким образом слой API не будет иметь никакой связи с бэкендом при авторизации запросов (именно авторизации), т.к. все необходимые данные будут "зашиты" в токене.

    Если же у Вас слой API служит только для того, чтобы отображать (проксировать в каком-то смысле) RESTful запросы на внутренний API или протокол (я так понял что WCF у вас в стэке именно об этом) и Вы хотите просто сохранять запросы на сервер (которые должны, видимо, быть больше на запись чем на чтение), воспользуйтесь промежуточным ПО, которое даст возможность складывать в очередь эти задачи.

    Примеры ПО: Redis, Beanstalkd.
    В первом воспользуйтесь структурой данных LIST, а второй как раз только под это и заточен (не забудьте настроить persistance чтобы не терять данные).

    Но т.к. у Вас Windows, то наверное больше подойдет что-то типа hangfire.io
    Однако у вышеперечисленного софта есть форки и скомпиленные под Windows бинарники.

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

    Возможно даже что его получится решить через Rate Limiting. Либо своими силами, либо при помощи сервисов типа Apigee: docs.apigee.com/api-services/content/rate-limiting.

    К сожалению именно по стэку .NET не подскажу, т.к. сам работаю в другом стэке. Но принципы тут общие.
    Ответ написан
    1 комментарий
  • Как реализовать вывод товаров по категориям и подкатегориям (Laravel 5.4)?

    @jacob1237
    Ваша задача с категориями не относится к контексту Laravel - это задача о хранении деревьев в СУБД.
    Рекомендую ознакомиться вот с этим ответом: https://toster.ru/answer?answer_id=952447#answers_...

    Принадлежность товаров нескольким категориям в реляционных СУБД (если Вы работаете именно с ними) оформляется как связь "многие-ко-многим" (many-to-many).

    Роутинг Вы уже реализовали в своем ответе. {category} {subcategory} {productID} - это параметры роута, которые будут передаваться в контроллер (документация).

    В контроллере просто вытаскиваете эти параметры, фильтруете и подсовываете в SQL запрос. Хотя {category} (как впрочем и subcategory) здесь даже будет лишним. Но для красоты можете и оставить.
    Ответ написан
  • На чём лучше прокачивать архитектурный навык разработки моделей предметной области и принципов DDD вообще?

    @jacob1237
    Как это реализуется на Laravel? Или может мне с такими запросами и не он нужен?

    Никак не реализуется

    Кроме того, установленный ларавель с его фасадами фасадами как то не сильно сдружился с PHPStorm.

    Для этого существует плагин Laravel IDE helper.

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

    Чтобы полноценно работать по DDD, Вам необходимо как можно больше абстрагироваться от кода, ответственного за техническую часть (работа с БД и прочее). В этом как раз помогут паттерны Repository, UnitOfWork, DataMapper и т.д.

    Эти шаблоны уже реализованы, например, в ORM Doctrine. В Laravel же по-умолчанию в качестве слоя БД используется ActiveRecord, который применяется преимущественно в целях RAD (rapid application development).

    Если очень хочется Laravel, можете попробовать AnalogueORM. Это DataMapper-надстройка над Eloquent. Все остальное придется реализовывать ручками.

    Поэтому если хотите начать работать полноценно и сразу, берите Doctrine 2 (либо Hibernate для Java, либо SQLAlchemy для Python и т.д.) и что-то в придачу к нему (тот-же Symfony или любой другой веб-фреймворк с инверсией контроля).

    Если же хотите поразбираться каким образом все устроено на техническом уровне, берите AnalogueORM или нечто подобное и пробуйте остальное реализовывать вручную.
    Ответ написан
    2 комментария
  • Как не обжечься снова при подборе команды?

    @jacob1237
    К сожалению найти хорошего разработчика действительно непросто.
    А хороший разработчик на удаленке - это вообще отдельный "фрукт", который созревает годами.

    Чтобы найти такого человека, нужно хорошо разбираться в мотивации и знать где искать:

    Как правило разработчики на удаленке - люди с хорошим техническим бэкграундом и хорошим английским (работают в интернациональных командах).
    Это в каком-то смысле поднимает планку по з\п (первый факт).

    Что касается Upwork - здесь очень тяжело найти реального разработчика. Upwork никак не фильтрует уровень таких специалистов. И надо признать, не особо эффективно борется с различного уровня мошенничеством, как то: накрутка отзывов, подделка личности и т.д.
    Процентов 80 там (цифра просто из головы, прошу не принимать близко к сердцу) - это низкоквалифицированные рабочие(либо посредники) с проблемами в само мотивации. Это ни хорошо ни плохо - это факт (номер два), потому что мотивировать себя на удаленке действительно непросто, особенно если ты не любишь свою работу (к сожалению сейчас в IT попадает все больше "случайных" людей из за хайпа и денег).

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

    Тем не менее, контроль за бюджетом и сроками очень важен, и это задача из дисциплины управления проектами.
    Разработчики этим, как правило, не занимаются (а если и занимаются, то опытные, и попросят за это больше $$).
    Поэтому чтобы контролировать ход работ по проекту, Вам (или Вашему менеджеру проекта) необходимо разработать (либо взять существующие) соответствующую методику (например Scrum). Не обязательно копировать 1в1, просто взять то, что нужно, в зависимости от проекта и размера команды.

    Например разбейте ход работ на итерации (длиной в 2 недели). В каждой итерации выделяйте какое-то время на декомпозицию и оценку задач. Старайтесь по окончании каждой итерации получать видимый и работоспособный результат, прежде чем приступать к следующей (грубо говоря, отчетный период - каждые две недели).
    Используйте инструменты для совместной проектной работы - Trello, Jira и т.д.

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

    Конечно это не означает, что тех кто откровенно кладет болт на работу нужно уговаривать и убеждать поработать. В таком случае это просто не ваши "пассажиры".

    Ну и искать рекомендую не на бесплатных фриланс-биржах по ключевым словам, а на специализированных площадках: тематических тусовках (чаты/форумы по технологиям/фреймворкам), специализированных биржах с отбором кадров (типа Toptal), ресурсах посвященных работе (типа Djinni.co).

    Также порекомендую самому проводить какой-либо простейший отбор/тестирование кандидатов, особенно если кандидаты с фриланс-бирж и не топовые профили.
    Ответ написан
    Комментировать
  • Дерево категорий Laravel. Как уменьшить количество запросов в БД?

    @jacob1237
    Если используете PostgreSQL, посмотрите в сторону рекурсивных подзапросов.

    Если это не PostgreSQL, то можете попробовать строить дерево из "сырых данных" непосредственно в PHP (как подсказывает Вам ThunderCat ).

    Но вообще лично я бы для начала оценил частоту изменений категорий в каталоге и общее количество категорий (объем данных), и в соответствии с этой информацией выбрал более подходящую модель хранения деревьев в БД.

    Таких основных моделей четыре: Adjacency list, Nested Sets, Materialized Path и Closure Tables (можно рассматривать как развитие Adjacency List) плюс их вариации.

    Каждый тип модели может послужить для оптимизации выборки данных из древовидных структур в БД.

    Присутствуют готовые библиотеки и для Laravel:
    Nested Set
    Closure Tables

    Для Adjacency List (вашей текущей реализации), просто сортируйте данные самостоятельно, либо попробуйте этот пакет.
    Ответ написан
    3 комментария
  • Можно ли получать через IFTTT обновления обычных страничек?

    @jacob1237
    Если ничего не найдете, попробуйте SuperFeedr: можно подписываться на HTML страницы, фрагменты JSON и XML.
    Результат можно получать либо в виде веб-хука, либо через XMPP.
    Ответ написан
    Комментировать
  • Существует ли каталог opensource ПО?

    @jacob1237
    Существует. Называется Ubuntu Software Center.
    Ответ написан
    Комментировать
  • Веб-скрэпинг заблокированных сайтов: что посоветуете?

    @jacob1237
    Если бы я делал это руками, я использовал бы Tor или friGate, но, естественно, я не хочу делать это руками

    Tor прекрасно работает в качестве прокси для ботов/краулеров. Весь вопрос только в стабильности соединения и попадании в черные списки IP. Потому что некоторые сервисы умеют определять принадлежность IP к сети Tor.

    Если нужно делать профессионально, посмотрите на сервисы типа Crawlera. Это очень удобный авторотатор прокси.

    Но если данные Вы собираете не в гигантских масштабах и не со скоростью света (фактически заваливая веб-сайты), то самый простой вариант - купить аккаунт любого зарубежного VPN-сервиса и гонять своих ботов с домашнего PC через VPN-туннель, т.е. с одного IP.
    Ответ написан
    Комментировать
  • Как лучше организовать работу с worker серверами чтобы они сами брали работу из пула или мастер сервер им дает работу?

    @jacob1237
    Минус первого подхода в том что могут возникнуть коллизии и 2 сервера могу взять одновременно задачу на себя и будут выполнять двойную работу

    Зависит от технологий, которые Вы собираетесь использовать. У Вас в варианте №1 структура данных с задачами для воркеров будет называться распределенная очередь (shared queue). У этой структуры данных как раз-таки основная задача - раздавать данные юнитам, предотвращая дублирование и негативные эффекты типа race condition и т.д.

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

    Однако преимущество Beanstalkd будет в том, что он специально заточен именно под очереди задач: поддерживается сортировка задач в заданном числовом порядке, резервирование задач, автоматическое снятие резерва при превышении времени на обработку и др.

    Плюс предусматривает возможность хранения задач на жестком диске (с ключом -b) помимо хранения в памяти (что в Redis реализуется только через слепки (snapshot), либо через полный лог операций - что не есть оптимальный вариант).
    Ответ написан
  • Как можно обойтись без backend?

    @jacob1237
    Вы сами на свой вопрос и ответили в комментарии. Вам как раз нужен BaaS.

    Например:
    https://backendless.com
    https://firebase.google.com/features/

    Из основного судя по всему потребуется авторизация через соц. сети. И там и там это есть, но вроде в FireBase побольше соц.сетей в данный момент.

    Конечно предварительно нужно понять какой функционал Вам нужен, т.к. из вопроса это вообще не ясно.
    Но совсем без кода скорее всего не получится обойтись.

    После того как проанализируете базовый функционал, подумайте что будет быстрее - написать свой простенький бэкенд, либо штудировать доки стороннего сервиса, потому что время на изучение API тоже может уйти немало, если нужно писать какие-то нестандартные фичи.
    Ответ написан
    Комментировать
  • Как реализовывать наследование моделей в laravel?

    @jacob1237
    То что Вы пытаетесь реализовать, называется наследованием таблиц (Table Inheritance) - это такой способ эмулировать наследование классов в реляционных СУБД.

    Всего существует несколько известных вариантов решения такой проблемы, например Single Table Inheritance и Class Table Inheritance (это если не учитывать нативную поддержку подобных вещей в некоторых СУБД, например PostgreSQL).

    Полиморфные же связи (которые по-дефолту в Laravel) - это не очень хороший способ реализации, потому что не позволяет поддерживать целостность связей на уровне СУБД. Однако можно использовать и его, если Вам эта целостность не очень важна (ее надо будет поддерживать на уровне приложения).

    К сожалению Eloquent не поддерживает ни Single Table Inheritance, ни Class Table Inheritance (зато их поддерживает Doctrine из Symfony), поэтому придется писать вручную.

    Прежде чем это делать, я бы Вам посоветовал разобраться как Profile относится к User и OrgAdmin.
    Является ли Profile подвидом пользователя (из названия честно говоря не понял), или же это просто набор дополнительных полей, которые можно оформить в виде связей?

    Если и Profile и OrgAdmin - это подвиды (подтипы) пользователей со своим собственным набором полей, то Вам нужно добавить в общую таблицу отдельное поле type (это называется дискриминатор), в котором у Вас будет проставлен тип пользователя. Например 1 для User, 2 для Profile и 3 для OrgAdmin.
    Короче очень похоже на стандартный Polymorphic Relationships из Laravel.

    А потом переопределяете у модели User функции newFromBuilder() или newInstance() в которых Вы укажете какие классы моделей создавать для конкретного type. Вот например статья.

    Дальше для Class Table Inheritance можно в трейт поместить функцию сохранения и родителя и потомка, потому что сохранять их придется вместе (на уровне БД), в зависимости от измененных свойств. Кроме того, нужно будет позаботиться об отображении (mapping) атрибутов родителя на потомков (__set и __get), на случай если вдруг захочется делать вот так (представьте что атрибут name принадлежит родителю - модели User):
    $profile = new Profile();
    $profile->name = 'John Doe';
    $profile->save();


    Короче это гемор в Laravel. Поэтому перед тем как делать, подумайте можно ли решить задачу проще - например через Single Table Inheritance, поместив все атрибуты в одну таблицу, либо делайте через стандартные полиморфные связи.

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

    Погуглите по указанным ключевым словам (паттернам), может что уже появилось для Laravel.
    Ответ написан
    3 комментария
  • Видео конференции в команде?

    @jacob1237
    Ответ написан
    Комментировать
  • Новый поиск в Laravel 5.3?

    @jacob1237
    Laravel Scout это просто программная абстракция над различными поисковыми движками (в том числе и ElasticSearch). Библиотека просто добавляет некоторые "вкусности" и удобства при работе с моделями Eloquent.

    Чтобы подключить ElasticSearch к Laravel Scout, нужно просто найти под него соответствующий драйвер.
    Все примеры в документации: https://laravel.com/docs/5.3/scout
    Ответ написан
    Комментировать