• Как правильно собрать проект на nodeJs?

    bingo347
    @bingo347 Куратор тега Node.js
    Crazy on performance...
    Бэк так же можно собирать сборщиками, у того же webpack есть пресет настроек под ноду.
    Насчет оптимизации, тот же terser.js, который включается при production билде по умолчанию, помимо сжатия делает ряд оптимизаций кода. Но для ноды работающей длительное время они могут оказаться менее значимыми, так как JIT v8 так же делает свои оптимизации, и многократно запускаемые функции наверняка будут им оптимизированы. Однако при возможности прогнать код через дополнительную оптимизацию, лучше это сделать.
    Насчет ejs, шаблоны нужно компилировать в js. В случае ноды это можно делать как при сборке, так и на старте приложения. Главное чтоб не происходило компиляции во время обработки запроса.
    Оптимизация картинок и css должна происходить при сборке клиентского кода, к ноде они вообще никакого отношения не имеют. Нода вообще не должна о них знать, максимум пути после сборки, чтобы вставить их в шаблон, хотя и это по хорошему решается сборкой. Отдаваться статика должна Nginx или аналогами.
    Ответ написан
    Комментировать
  • Как организовать быстрый поиск по 78 млн строк?

    @rPman
    На любом языке программирования, желательно c++, реализуешь следующее приложение, использующее map или аналогичную структуру следующим образом.

    В качестве ключа - хеш от искомого значения
    В качестве значения - список структур, в котоых пара искомое значение (с возможностью выставить null) + возвращаемое значение (идеально может быть смещение в файле csv где начинается нужная строка). Возможно вместо списка использовать еще один map (значение => смещение или даже значение => список смещений, если искомое поле не уникально)
    Map<hash,List<{value,offset}>> или Map<hash,Map<value,List<offset>>>

    Тогда первоначальное наполнение просто считает хеши ключа и заполняет в возвращаемые значение смещение соответствующих строк в csv файле
    Затем вторым проходом, для тех записей где случились коллизии хеша и список возвращаемых значений больше 1, прописать искомое значение либо его хеш (с другим алгоритмом, если не боишься двойных коллизий)

    Затем организуешь поисковый метод который будет принимать поисковые запросы и складывать в очередь (thread safe) ответы (id запроса + смещение строки в csv либо null если не найдено). Метод просто считает хеш искомой строки и берет в map нужный список ответов, если их больше 1 то последовательно сравнивае

    Параллельным потоком либо с асинхронно считываешь csv строки, на основе этой очереди (если диск hdd то лучше сортировать порядок чтения записей из файла по смещению, если записи в csv очень короткие, сотня другая байт, то сортировать имеет смысл и для ssd)

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

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

    ddv88
    @ddv88
    Binance Futures
    git restore --source=HEAD :/

    А это для кого?

    git clone https://github.com/Ismaestro/angular-example-app.git .

    Этого достаточно.
    spoiler

    $ git clone https://github.com/Ismaestro/angular-example-app.git .
    Cloning into '.'...
    remote: Enumerating objects: 6702, done.
    remote: Counting objects: 100% (798/798), done.
    remote: Compressing objects: 100% (506/506), done.
    remote: Total 6702 (delta 458), reused 543 (delta 274), pack-reused 5904 eceiving objects: 100% (6702/6702), 11.05 MiB |Receiving objects: 100% (6702/6702), 12.02 MiB | 6.82 MiB/s, done.
    
    Resolving deltas: 100% (4307/4307), done.
    Ответ написан
    3 комментария
  • Джуны на удаленке нужны?

    ddv88
    @ddv88
    Binance Futures
    Нужны. Дело не в удаленке. Вопрос цены.

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