• Персональный гугл, если ли?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Для того, чтобы просканить интернет, нужно для начала иметь список интернет-сайтов и страниц на них. Это уже огромный объём информации, которую поисковики накапливали годами и поддерживают в актуальном состоянии.

    Но даже если такой список есть - по нему ещё надо пройтись. Потратив уйму времени на скачивания этих миллиардов страниц. И возможно в итоге получить 0 результатов. А на следующий запрос начинать скачивать всё то же самое заново повторно.

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

    А искать по всему интернету в личных целях могут только настоящие поисковики. Ну вот можно разве пытаться их результаты обрабатывать и фильтровать, но это уже не будет поиск своими силами.
    Ответ написан
    1 комментарий
  • Персональный гугл, если ли?

    Daemon23RUS
    @Daemon23RUS
    Краулер, который ходит по интернетам и ищет сам, то о чём я его попросил

    Боюсь, что ответ Вашего частного поисковика придется долго ждать. Обратимся к цифрам: сейчас порядка 2 млрд. сайтов ( обратите внимание на то что это сайты, а не страницы, коих на многих сайтах десятки, сотни, тысячи а на части на порядки больше) предположим, что ваш краулер пожирает сайты по 10 шт в секунду (со всеми страницами), так вот ждать ответа придется лет 7.
    И это мы опустили трафик, который сожрет краулер. А там все за гранью не то что домашнего сервера, а не все страны потребляют такой объем.
    P.S. Тут вопрос не в алгоритмах или коде, вопрос в объеме "перевариваемой" информации
    Ответ написан
    3 комментария
  • Почему при восстановлении базы Elasticsearch данные не восстанавливаются?

    mobilesfinks
    @mobilesfinks
    сисадмин *nix
    бэкап сохранился всё отлично.

    Как определил что всё отлично?

    Caused by: org.apache.lucene.index.CorruptIndexException: [bulks][5] Preexisting corrupted index
    ...
    Can't restore corrupted shard

    индекс битый. Попробуй вот это
    И ещё
    • проверь целостность файловой системы. Проверь оперативу. Просто что бы убедиться, что не в железе проблема.
    • Проверь целостность файловой системы на которой бэкап.
    • Попробуй восстановить на версию 1.5

    Ещё 2 варианта:
    - Попробуй перенести базу простым копированием через rsync.
    - объедини оба сервера в кластер и пусть он сам перельёт все шарды на второй. Ты просто наблюдай за этим процессом через kopf, например.
    Ответ написан
    2 комментария
  • Является ли python-shell безопасным решением для запуска untrusted-кода на Node.js сервере?

    Vindicar
    @Vindicar
    RTFM!
    Не думаю, он создаёт дочерний процесс от ноды, но в доках не написано, что этому процессу задаются особые права - значит, права будут как у ноды.

    Я бы сделал минимум три уровня защиты:
    1. Полученный от пользователя скрипт выполняется не напрямую, а в скрипте-обёртке. Обёртка подписывается на события аудита Питона, и мониторит событие импорта. При попытке импорта модуля не из белого списка сигнализируем родительскому процессу и вызываем заранее сохранённую os._exit(), чтобы немедленно прибить интерпретатор. Также на обёртку можно возложить собственно прогон тестов.
    2. Скрипт-обёртка должен выполняться от nobody:nobody с правами только на временную директорию, в которой лежит сам скрипт и его виртуальное окружение. Директория должна пересоздаваться заново при каждом запуске скрипта. Может иметь смысл оформить выполнение обёртки внутри chroot.
    3. Выполнение должно происходить внутри контейнера, который должен перезапускаться время от времени (не обязательно при каждом запуске скрипта, можно раз в сутки или около того). Передача скрипта внутрь контейнер - через сетевой сервис, хотя можно и через примонтированную директорию. Внутри контейнера сервис сам создаёт временную директорию с окружением, переносит скрипт в эту директорию (с переименованием в заранее известное имя - user_script.py или подобное) и только тогда запускает обёртку.

    В этом случае атакующему нужно будет сначала обойти аудит импортов, потом сделать эскалацию привилегий, потом выбраться из-под chroot. И даже если он закрепится в контейнере, контейнер периодически перезапускается, так что малварь будет снесена.
    Ответ написан
    3 комментария
  • Почему в Docker копируется сначало package*.json, а затем все?

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

    И это есть в документации: https://docs.docker.com/build/guide/layers/
    Ответ написан
    Комментировать
  • Почему в Docker копируется сначало package*.json, а затем все?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Скорее всего, это сделано для того, чтобы не пересобирать слои, а использовать закэшированные в случае, когда зависимости не поменялись между сборками. Это существенно ускоряет процесс.
    Ответ написан
    2 комментария
  • Как тут очистить кэш?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Больше чем установлено в компьютер памяти у вас не станет. Зачем вам больше свободной памяти? Ведь именно в этом назначение памяти хранить данные (в том числе кэш). Если вы очистите его - программе придётся снова считывать данные с диска (или другого источника). Так что не занимайтесь ерундой - оставьте управление памятью операционной системе - она это сделает лучше вас!
    Ответ написан
    1 комментарий
  • Как исправить ошибку HostNotFoundError [SequelizeHostNotFoundError]: getaddrinfo ENOTFOUND 5432 при подключении к PostgreSQL на NodeJS?

    @q2digger
    никого не трогаю, починяю примус
    А теперь внимание на свой конфиг
    dialect: 'postgres',
            host: process.env.DB_HOST,
            host: process.env.DB_PORT

    и на ошибку
    syscall: 'getaddrinfo',
    hostname: '5432'

    Дальше надо подсказывать или уже увидел?
    Ответ написан
    4 комментария
  • Как защитить данные от повреждения при INSERT?

    @Akina
    Сетевой и системный админ, SQL-программист.
    Например, если какие-то строки смогут загрузиться, а какие-то - нет, то бд будет повреждена.

    НЕТ.

    Возможно рассогласование данных, нарушение внутренней логики системы - но никак не повреждение.

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

    При отсутствии аппаратных ошибок, на чистой логике повреждение БД возможно либо из-за ошибочного/злонамеренного действия, либо из-за бага/сбоя программного обеспечения. В обоих случаях - как внутри SQL-сервера, так и снаружи (ОС, третий софт, ...).
    Ответ написан
    Комментировать
  • Как вообще нужно входить в IT сферу?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Стоит ли верить тем самым "Топ языков" или нет?

    Нет.
    Если молоток стоит на 1 месте среди инструментов, то это не значит, что он подходит для починки двигателя автомобиля.
    Стоит ли уходить после 9 класса или нет?
    Какие вообще предметы нужно мне сдавать на ОГЭ, чтобы стать разработчиком игр и войти в IT сферу?

    Если ты собрался стать разработчиком игр, то 11 классов - обязательно. Потом в ВУЗ на высшую математику.
    Разработка игр (я имею ввиду всякие серьезные AAA проекты) это по большей части высшая математика: физ. движок, столкновения, рей-трейсинг, теория вероятностей + надо самому быть немного математиком, чтобы быть программистом
    Колледж это лофа, лучше самообучение?

    ВУЗ + самообучение
    ВУЗ - сложные темы по матану, опыт от преподавателей (практикующих), единомышленники/друзья, практика в компаниях
    Самообучение - никто не становится гением без мотивации и постоянных тренировок
    И что же по поводу книг?

    Читай.
    Единственное что могу сказать - практикуйся больше, чем читай. Без практики книги ты не поймешь.
    Так если я изучу C# и C++, смогу ли я делать десктопные, веб и мобильные проги?


    Короткий ответ - да
    Длинный - разработка приложений это навык и опыт. С опытом сможешь делать одно и то же на любом яп

    Вывод по всему лонгриду: доучивайся до 11 класса, иди в ВУЗ и параллельно со всем этим учи программирование. К моменту поступления уже будешь знать чего ожидать и куда копать. Эта нора глубока
    Ответ написан
    4 комментария
  • Насколько глубоко нужно знать Linux дата-инженеру?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    По-хорошему, надо знать то, что потребуется для работы.
    Обычно это понимание как работает командная строка, терминал, ssh.
    Немножко вглубь: файлы, дескрипторы, файловая система, монтирование, симлинки, хардлдинки, пайпы, конвейеры, синтаксис перенаправления между стандартными потоками ввода/вывода, базовые утилиты командной строки (grep, ls, tee, tail, cat и т.д.), желателен какой-то опыт работы со всем этим, понимание как обычно устроен механизм передачи параметров в таких утилитах, как их выстроить в конвейер, как запаковать\распаковать поток данных на лету. Желательно понимать что такое, как устроены и для чего нужны make-файлы.
    Нужно понимать как пользоваться менеджерами пакетов основных дистрибутивов, желательно в общих чертах понимать что такое докер, контейнеризация в целом, ориентироваться в командах управления образами и контейнерами, понимать что такое вольюмы и где их искать, уметь читать докер-файлы и компоуз-файлы, понимать как вообще это всё работает. Ну и GIT нужно уметь использовать.

    Это основа, но наверно от джунов всего списка никто ожидать не будет - обучат по ходу дела, а если вы претендуете на большее, то сможете быстро разобраться в нужных вопросах, если претензии ваши обоснованы, а пробелы обнаружились.
    Ответ написан
    6 комментариев
  • Код на Python написан правильно но вот система постоянна выдаёт ошибку пробовал обновлять все билиотеки но ошибка остаётся?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting

    File "C:\Peton\python\.venv\lib\site-packages\aiogram\dispatcher\__init__.py", line 2
    IndentationError: expected an indented block after class definition on line 1

    Похоже, что внутри __init__.py (aiogram\dispatcher) проблемы с табуляцией.
    Ответ написан
    1 комментарий
  • Почему система падает при большом трафике?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Описание проблемы проще чем кажется: чем больше трафика - тем больше работы.
    Это влечет за собой:
    - Больший нагрев процессора и других комплектующих + повышение их износа -> могут отвалиться
    - В каждом софте (даже стабильной ОС) есть ошибки, которые точно возникнут согласно ЗБЧ
    - Появляется слишком много прерываний, которые тормозят систему -> большие операционные издержки (переключение контекста, переход в режим ядра и т.д.)
    - Рано или поздно доступные ресурсы закончатся (ОЗУ, Диск, буфер сетевой карты), а не многие приложения могут такое обработать и упадут

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

    Сколько ресурсов должно быть для корректной работы при определенной нагрузке надо искать самим - тестировать систему (стресс/нагрузочное/объемное и т.д.).
    Создавать математические формулы - такое себе, т.к. слишком много важных параметров не будет учтено:
    - Топология сети
    - Используемые комплектующие
    - Охлаждение
    - Расположение серверов
    - Версия ОС + гипервизор

    UPD: + конечно же когда много трафика, то какие-то пакеты отбрасываются/теряются и необходимо слать их повторно, что увеличивает нагрузку на сеть + задержку запроса
    Ответ написан
    1 комментарий
  • Что такое культура программирования?

    xez
    @xez
    TL Junior Roo
    Почти то же самое, что культура коммуникации.
    - Следование код-стайлу. Адекватный нейминг.
    - Умение писать выразительный, понятный код. Без лапши, без убер-методов на миллион строк, без олимпиадных трюков (если нет такой необходимости); код, в котором можно будет легко разобраться.
    - Любовь к тестам. Понимание почему и зачем тесты писать и почему и зачем не писать.
    - Следование общепринятым инженерным практикам. В Гите не пушить без реквеста в мастер, не ребейсить без необходимости, подписывать комиты, описывать реквесты. В бд предпочитать миграции и не лазить в прод трясущимися, грязными ручонками. Релизы согласовывать, к стейджам относится уважительно. В очереди не срать. Рута избегать.
    - Скилл в декомпозиции и оценке. Умение прогнозировать разработку, умение давать обещания и умение их выполнять.
    - Отсутствие магического мышления. Понимание причино-следственных связей. Знание что такое логи и что такое метрики.
    - и т.д..
    Ответ написан
    Комментировать
  • Что такое культура программирования?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Все, что можно отнести, к "делай как надо, а как не надо - не делай"
    Ответ написан
    Комментировать
  • Актуален ли ассемблер на сегодняшний день?

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

    Области, навскидку, где можно использовать ассемблер:

    • Системное программирование (драйверы и тп)
    • Оптимизация производительности
    • Разработка встроенных систем и микроконтроллеров
    • Обратная инженерия и безопасность
    Ответ написан
    Комментировать
  • Как запушить проект webpаck на GitHub, но при этом не толкать все зависимости?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Надо добавить папку node_modules в .gitignore

    Если файлы уже добавлены под контроль гит, то просто добавление этой папки в gitignore не поможет. Надо сперва удалить эти файлы, потом добавить папку в gitignore, а потом уже снова подтянуть зависимости.
    Ответ написан
    9 комментариев
  • Где и как хранить сообщения чата?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Если бот будет не только считать статистику, но и модерировать, то хранить сообщения нужно. Его постоянно придется дообучать, вводить новые правила модерации. Истории сообщений очень поможет это новое тестировать.

    Советую использовать ту базу с которой больше работал. Postgresql - подойдет. Отдельно таблица сообщений, отдельно таблица агрегированных счетчиков что бы каждый раз тебе не делать тяжелые агрегирующие запросы к базе с count. Максимум у тебя должно быть что-то суммирующее. По дням/чатам/пользователям внутри чата.

    Если прочувствуешь, что упираешь в какой-либо потолок, то только тогда стоит задуматься о миграции на что-то более узкоспециализированное.
    Ответ написан
    5 комментариев
  • Есть ли смысл создать docker контейнеры и k8s для djjago?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    IMHO прежде чем создавать портфолио, нужно иметь как теоретические, так и практические навыки работы с сервисами. Изучите docker, изучите Kubernetes на minikube или k3s, а создать "портфолио" по инструкции в интернет, не понимая базовых принципов работы - бессмысленно
    Ответ написан
    1 комментарий
  • Какой ЯП подходит для производственного ERP?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Какой хочешь.
    Равнозначно

    UPD:
    Лично я, как предприниматель, бы делал выбор между C# / Java
    Причины:
    1. Сформированное, "взрослое" (mature) сообщество, которое может помочь
    2. Существуют проверенные/документированные фремворки
    3. Для общих случаев (настройка БД, создание диаграмм, документирование кода, какие-нибудь паттерны) уже есть удобные инструменты/фреймворки
    4. Рынок разработчиков большой
    5. Эти ЯП позволяют абстрагироваться от инфраструктуры или упростить работу с ней (управление памятью, вопросы ABI, версионирование, сборка и т.д.)
    Ответ написан
    1 комментарий