Задать вопрос
  • Можно ли сегодня использовать Rust вместо C++, в разработке серьёзных низкоуровневых программ?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Какое состояние у языка Rust на текущий момент?


    Я несколько лет наблюдаю за долей Rust исходников в браузере Mozilla.
    По состоянию на 2022 год там была такая пропорция С/C++/Rust 0.19 : 0.39 : 0.42
    (При этом я игнорировал прочие типы файлов). И эта доля Rust кода практически
    не меняется несколько лет. Тоесть видимо те цели которые ставили Mozilla/Microsoft
    были достигнуты. Они переписали что хотели и успокоились.

    Любитель пингвинов и нелюбитель NVidia тоже обещал затащить Rust в исходники
    linux-ядра, но я не собирал сведенья по линуксу и не знаю что там сейчас. Кто
    знает? Поделитесь.

    Можно ли уже полностью отказаться от C++ в пользу Rust, в низкоуровневых вещах

    Скорее всего нет. Потому что есть потребность в безшовной интеграции с вызовами kernell и библиотек.
    В Rust скорее всего потребуется сильная адаптация кода чтобы он был пригодным для ABI например.

    Понятно, что нет полноценной IDE

    Забавное наблюдение. Я слушаю блоги хаскелистов. Душкина. Брагилевского. Вершилова.
    И практически все они хором поют одну и ту-же вещь.. дескыть им IDE не нужна а им
    достаточно vim или блокнот. Я с ними не до конца согласен. Но что-то есть в этом. Получается
    что математически совершенному языку незачем иметь обязательноую IDE. И вообще
    с каких пор мы язык должны рассматривать в комплекте с IDE? Неужели язык без
    этого инструмента неполноценен? Можем ли мы рассматривать "зрелость" языка просто
    как языка?
    Ответ написан
    83 комментария
  • Как удалить предложение в столбце с типом TEXT?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Могу дать просто несколько советов как упростить работу с текстом.
    1) У тебя слишком много всего наворочено в одной строке. Разбей запрос на части.
    Например сначала сделай просто SELECT того что ты хочешь удалять. Почему это важно?
    Если ты ошибешся и сделаешь слишком либеральный квантор - то удалишь те строки которые
    удалять было не надо. И назад дороги нет.

    SELECT * 
    FROM 
     `sonnik` 
    WHERE 
     SUBSTRING_INDEX(SUBSTRING_INDEX(`text`, '\n', find_in_set('женщине или мужчине', `text`)), '\n', -1) 
              LIKE 'Сонник %' 
     AND text LIKE '%Сонник %';

    И просматривай глазами кандидатов на удаление.

    2) Вот это выражение 'женщине или мужчине' слишком строгое. В реальном тексте может
    быть многообразие склонений падежей и вообще слова могут быть с переносом через
    дефис на новую строку. Поэтому надо искать лемму или основу слова типа "жен".... "муж"

    И лучше использовать предикат ILIKE для регистро-независимого сравнения.

    3) И как всегда я выражаю своё ворчание по поводу этого тега SQL. Что такое SQL? MySQL? Postgres? Там возможности текстового поиска разные. Есть всякие текстовые индексы и прочие функции FTS.
    Ответ написан
  • Что за хеш такой?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Что указать в параметре -m - на это отвечает хелп.

    $ hashcat --help
    hashcat - advanced password recovery
    
    Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...
    
    - [ Options ] -
    
     Options Short / Long           | Type | Description                                          | Example
    ================================+======+======================================================+=======================
     -m, --hash-type                | Num  | Hash-type, see references below                      | -m 1000
    Ответ написан
    Комментировать
  • Можно ли в c++ реализовать new() с c#?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Насколько я помню new - это зарезервированное ключевое слово языка. Поэтому использовать
    его в роли функции вряд-ли получится.

    Да и зачем это автору? Создание новых конструкций синтаксиса - это путь в Lisp, Nemerle, Forth.
    Языку С++ это не надо. А если автору так сильно хочется - то наверное настало время сменить язык.
    Ответ написан
  • В каком виде, хранятся записи в БД, подобные постам в соц.сетях?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Современная соц-сеть - это уникальная софтварная архитектура которая строилась индивидуально.
    Вряд-ли вы сможете ее просто повторить имея mysql/php/nginx.

    VK/Facebook имеют свои технологии кеширования контента в основном построенные на материализации
    страниц. Базы данных обычно - не-реляционные. Модель проектируется так чтобы не было joins между
    таблицами. И активно используются очереди сообщений. Вот в соц-сети Linked-In это было настолько
    важно что даже был создан отдельный программный продукт который сейчас называют Apache Kafka.

    Активно используются горизонтальное масштабирование. Сеть наращивает мощности просто путем подключения
    новых адресов в dns с балансом по географии, и запуска новых web-nodes и новых дисковых реплик хранилищ для картинок и текстов постов.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно идет верификация номера телефона. Тоесть если чел обладает двумя смартфонами с 2 сим-картами то теоретически он может создать до 4 аккаунтов.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Хотелось бы к этому всему включить в модель возможные корреляции товаров ,чтобы на основе изменений в продажах первого товара предсказывать второй .

    Ты уверен что твоя гипотеза о корреляциях верная?

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

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    В наше время что самое дорогое?

    Участие специалиста. Сисадмина. Девопса. Разработчика. Если смотреть с практической стороны
    то дешевле просто демонтировать DVD привод и вопрос будет закрыт. Все остальные решения
    это какой-то техно-дрочь или фетишизм.
    Ответ написан
    Комментировать
  • Как разобрать mp3 файл?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну автор блин затянул сюда разных вопросов. Тут есть и музыка и майнкрафт.
    Очень правильно предложили выше что такую задачу невозможно сделать сразу.
    Ее придется бить на части чтобы хоть как-то договориться о корректности выхода.

    Здесь явно две задачи. Первое - это перевод mp3 в нотные блоки (кстати что это?).
    И второе - это собственно интеграция этих блоков с приложением майнкрафт.

    И лучше этот вопрос закрыть и поднять новые два в qna.
    Ответ написан
  • Какую структуру данных выбрать для описания конфигуратора изделия?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Непонятно зачем автор протегал это АЛГОРИТМАМИ. Тут вобщем-то имеет место обычная работа с формочкой.
    Дизайнеры форм лабают это и не зная ваших умных абстракций. Просто пишут там хендлер на каждую радио-кнопку или на чек-боксик и в зависимости от действий - скрывают некоторые филды или подсвечивают.

    Но если вам интересна теория, то такое поведение можно описать небольшим конечным автоматом. Или
    в данной задаче несколькими конечными автоматами которые взаимосвязаны по реакции на переходы.

    Гуглить можно по FSM (Finite State Machine) и библиотек по сям и питонам будет много.

    Вообще данная задача еще не набрала критическую массу знаний чтоб кодить ее в автоматах.
    Время потраченное на библиотеки и на привязку их к формам может быть слишком большим
    и эффекта не будет. Будет разочарование.
    Ответ написан
    3 комментария
  • Способ получения ФИО через номер телефона или соц сети?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поскольку это сбор сведений на людей то легального способа скорее всего нет. А если он появляется
    его быстро закрывают. Государство и правозащитники здесь вобщем-то едины. Такие базы не должны
    быть открытыми никогда.

    Базы для "пробива" предположительно лежат во всяких Даркнетах но я ХЗ... не видел никогда.
    Ответ написан
    Комментировать
  • Как хранить множество слов в БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут сложно ответить однозначно. Тут есть какое-то дублирование технологий. С одной стороны - есть некий
    умный софт (автор пишет nlp-средство) который сделал разбиение писем на слова. Зачем именно nlp? В чем там была глубокая идея? Разве нельзя это-же разбиение сделать с помощью
    - Postgres
    - MySQL
    - SQlite
    как предлагали выше ?

    Так было-бы проще. А теперь мы все думаем - зачем так сложно?
    Ответ написан
    Комментировать
  • Как эффективно использовать 'сервисы' для обращения к БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По поводу смыслов. Обычно с БД работают сущностями (entities). Я не специалист в Node и я не знаю
    как у вас принято. Кажется в новых ecma-спецификациях уже ввели понятие класса.

    В данном коде идет проверка на то что email существует. Но полезный эффект - слабый.
    Я-бы сразу возвращал сущность пользователя. Чтоб не бегать потом в базу еще
    раз когда надо поискать имя или дату регистрации. Ну идея такая что
    если вы уж пошли в базу (это сетевой round-trip) то постарайтесь
    за этот трип собрать максимум информации.

    Вот это более рационально
    export const findUserEntityByEmail = async (
      email: string
    ): Promise<User> => {
      try {
        const users = await db
          .query('SELECT * FROM accounts WHERE email = $1', [email])


    Тоже самое относится к выборкам множества строк по множеству ключей.
    Лучше сделать 1 callback который вернет коллекцию чем для коллекции
    ключей дергать один несчастный метод который по штучке что-то достает.

    Еще важне - join. Если соединяете сущности - то соединяйте сразу в БД
    без попыток соединять в приложении. Это кстати еще бонус к компетенции
    в части ACID.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Эффективность идеи зависит тоже от того в каком виде представлены данные. Если рукописные цифры - это квадратные картинки (как в наборе MNIST) то тогда решается просто. Считай расстояние Хемминга для всех картинок ко всем. Там где расстояние будет минимально - найден кластер картинок. Или класс символов похожих на букву. Далее можешь искать среднее. Завести вещественные значения для кластера. (Тут кстати тебя надо спросить у тебя 1-битные изображения или GrayScale?)

    Если цифры еще не размечены на атласе картинок и тебе предстоит еще и найти их место-положение - то это
    задача уровня FineReader/Tesseract. Это посложнее будет и идей и методов там сразу еще +10 штук.

    Поэтому опиши как выглядят исходные данные. Понял да? Идей целый вагон. Только не заставляй распылятся на пустяки.
    Ответ написан
  • Почему space 32 в ascii называется printable?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Символы с кодами от 0 до 31 куда входит ТАБ являются управляющими символами (comma control / control symbold). И их задача - вызывать разные эффекты при выводе строки на экран. Звук. Backspace. Движения
    курсора в разные стороны. Поэтому данный диапазон символов не рекомендуется к оформлению текста. Потому что при печати текста на принтер например - эффект непредсказуем. Многие из них были частью сетевых протоколов и сейчас уже не используются.

    Символ табуляции в середине 20-го века использовали для оформления исходников на ассемблере
    ради экономии места. Это было удобно. Когда вся память ПК мерялась десятком килобайт - надо было
    экономить даже на тексте программы. И это реально работало. В современной разработке вообще
    нет необходимости использовать TAB (0x09). Ну разве что в Makefile он по старинке еще используется.
    Но мейк делали такие длинно-бородые колдуны что там нет диалога о модернизации. Часть колдунов
    уже померли. А оставшимся пофиг.

    Еще иногда символ TAB я встречаю в экспортах баз данных в формате TSV (Tab-Separated) но
    честно говоря на экране такой дамп выглядит ужасно. Все равно по 1 линии выравнивание не
    получается. Поэтому втопку такое.

    Сегодня в современнных IDE символ табуляции автоматически заменяется на серию пробелов. Поэтому
    смысла спорить о ТАБ нет никакого. Потому что и символа то уже нет. Есть просто клавиша которая
    имеет семантику добивания пробелов.

    UPD: Для исходников типа Python/Scala TAB (0x09) может создавать проблемы. Особенно когда идет
    микс отступов например одна строка TAB а другая spaces. Это сложные невидимые глазами
    проблемы. Только компиллятор увидит и ругнётся. Поэтому - выпиливайте ТАБы как сорняк.
    Чем скорее - тем лучше.
    Ответ написан
    1 комментарий
  • Как решить ошибку при установке Ubuntu 18.04?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Текущая LTS версия 22.0. Зачем автор ставит морально устаревшую?
    Ответ написан
  • Для чего на микрике мыши 3 контакта?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В телефонных станциях мне попадался экзотический вариант такого переключателя. Тип - "молоток".
    В нем красный был безобравно соединен с одним из других контактов. Разумеется это был не микрик.
    Это было реле. Даже в момент переключения был безобрывно соединен.
    Ответ написан
    Комментировать
  • Какую key-value БД использовать с данными в 10 млрд строк записей?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Несколько мыслей.

    1) У меня устойчивое дежа-вю. Периодически в топик заходят люди с именно этим вопросом. Разница только в количестве. Кому 1 млрд. Кому 10. Можно также поискать и слинковать эти вопросы в один большой вопрос.

    2) MySQL который указан в тегах - нормально справляется с этой задачей. Он и не такое число строк
    умеет хранить. И если взять MariaDb - там есть куча новых engines которые можно крутить для тюнинга
    именно скорости чтения. Разумеется жертвуя чем-то другим. Транзакциями и записью например.

    3) Непонятно что такое минимальное время? Если использовать дисковую БД типа MySQL то деградация времени
    поиска будет примерно зависеть от логарифма количества строк. Тоесть деградация будет но очень медленно.
    Для 10 млрд индекс по key будет содержать порядка 4-5 уровней BTree дерева. Тоесть дисковой системе
    нужно будет сделать до 5 или до 6 рандомных чтений (если нужные данные лежат в таблице). Это достаточно
    быстро для того чтобы моргнуть глазом за это время. Рандомное чтение любого блока из магнитного диска
    класса SATA-3 занимает порядка 20 милисекунд. Тоесть для 5 уровней - это 100 милисекунд. Для дисков
    класса SSD и это время можно уже считать меньше милисекунды. Точно я не знаю надо мерять.

    Испортить это время может сетевой лаг который в данной задаче мы просто не учитываем. Считаем что сеть идеальна.

    4) Непонятно зачем здесь указан Redis. Его задача не хранить 10 млрд а хранить только горячие
    ключи по котороым идет очень частый доступ. Если автор хочет In-memory хранение - то время можно
    еще сильнее улучшить. Его можно свести практически до нуля (я вангую несколько микро-секунд)
    но придется прикупить планок памяти побольше и посчитать сколько памяти
    надо для 10 млрд key/values неизвестной длины. Вообще крутить регулятор в направлении
    микро-секунд нет особого смысла т.к. другие звенья вашего стека (приложение и сеть) могут
    быть на порядки медленнее а это вообще нивелирует всю пользу от такой оптимизации.
    Ответ написан
    41 комментарий
  • Нужно ли хранить сервер и клиент в разных репозиториях?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это организационный вопрос. Если будут 2 команды - то лучше разделить. Пускай каждая коммитит в свой. Так будет меньше споров и конфликтов. Но есть смысл разделять какой-то sub-module для публикации сетевого стандарта или протокола как эти две части друг с другом разговаривают. Это может быть Swagger-файл или GraphQL или SOAP или любой вообще описатель сетевого взаимодействия.
    Ответ написан
    Комментировать
  • На сколько сложно утроиться джуном на позицию C++ dev?

    mayton2019
    @mayton2019
    Bigdata Engineer
    serhiops, скажу по себе что совмещать работу и учебу почти невозможно. Что-то одно ты потеряешь. Или сессию завалишь или на работе будешь уставать морально как чорт.

    Вообще учеба чем хороша. Нормальной жизнью студента. Где можно бухнуть. Где можно погулять со студентками.

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

    UPD: Тема окороков удалена. :) Мало-ли. Вдруг кто-то обидется. Щас время такое. Все обидчивые стали.
    Ответ написан
    7 комментариев