• Как можно ускорить выполнение SQL запроса?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно материализовать. Перечислить все комбинации prop_id и создать такое представление

    prop_ids | responce
    ---------|---------
    '1,2,3'  | [ { "prod_001" : 200 }, { "prod_333" : 134 } , ..... ]
    '2,3,4'  | [.....]
    Ответ написан
  • Как происходит обмен с БД данными в Lineage2?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я не специалист в играх но обычно когда хотят гарантированное время выдачи ответа -
    используют key-value dbms,. Они очень хорошо масштабируются и таблица с 10
    записями и таблица с 10 миллиардами записей дают примерно одинаковый отклик.

    Далее - искусство разработчика - уложить действия с инвентарем и действия с балансом золота
    в 1 едиснственную операцию put/get или атомарную операцию с key-value системой.

    Из недостатков. Никакие сортировки и группировки использовать нелзя. Если сильно хочется
    - создается 1 запись типа JSON и там уже заранее лежат отсортированные дочерние записи.
    И такая запись подготавливается в фоновом режиме обычно.
    Ответ написан
    Комментировать
  • Какие простые, "бытовые" задачи подходят для изучения машинного обучения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Машинное обучение (ML) это над-множество задач типа классификация, регрессия, кластеризация
    и детектирование аномалий.
    В последнее время очень часто идет подмена понятий и вместо ML
    задач все время подсовывают нейронные сети, хотя они закрывают некое под-множество этих
    же задач.

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


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

    Сама по себе идея например применять нейронные сети не плоха, но с точки зрения экономического расчета
    может быть полностью провальной ведь для хорошей НС - вам надо купить хостинг у гугла с процессорами
    тензоров например
    . А зачем это делать если вы и так решаете вашу задачу просто линейной логикой
    (набором if-else)?
    Ответ написан
    3 комментария
  • Какой есть бесплатный редактор растровой графики для детей похожий на фотошоп?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Gimp очень похож но из-за других хот-кеев и нестандартного меню, вам будет скорее всего
    очень некомфортно на него переходить. Поэтому лучше купить лицензию и работать с комфортом
    как раньше.
    Ответ написан
    Комментировать
  • Как программировать на машинных кодах?

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

    Это очень наивная идея. Она была работоспособной в XX веке, когда система команд была простая и процессоры
    были однопоточные и без кешей и конвейеров и микро-кода (КР580, Z80...)

    Современный компиллятор знает больше чем обычный человек-разработчик. И очень мало людей в мире
    в состоянии писать машинный код думая одновременно
    1) О состоянии кешей
    2) О состоянии всех регистров
    3) О микрокоде и о загрузке конвейеров
    4) Об таймингах mmx, sse, avr командах и сравнивать их на ходу по скорости исполнения
    5) О прогнозировании переходов

    Современный компиллятор - видит глубоко и знает очень много. И очень сомнительно что
    человек, а тем более пишуший на новом языке да еще и в каких-то кодах может хоть
    близко подойти к этому пределу. Разумеется мы можем рассмотреть частные случаи
    когда человех перехитрил компиллятор, но промышленная разработка не состоит
    из таких кейсов.

    Обычный кейс - надо писать код.
    Надо писать МНОГО кода.
    Надо не делать ошибок.
    Надо гарантировать хорошую производительность этого кода.
    Ответ написан
    Комментировать
  • Актуален ли ассемблер на сегодняшний день?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ассемблер полезен при анализе прошивок на безопасность.
    При изучении того как работает софт без исходного кода (обратный инжинеринг)
    и при решении задач интеграции разных слоёв софта.

    Ассемблер также очень близко стоит к разработке компилляторов. И если у вас нет
    соотвествующих знаний то строить свой компиллятор вы не сможете. Или вам нужно
    будет изучать готовые back-ends, virtual-machines.

    Ассемблер помогает при анализе узких мест в коде. В частности например
    векторизация вычислений ставит в первую очередь вопросы на которые ассемблер
    отвечает а ЯВУ - нет.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Давайте посчитаем скорость 10Тб за 8 часов. Это

    8L * 1024 * 1024 / (10 * 60 * 60) = 233 Mb/s

    233 мегабайта в секунду это очень хорошая скорость.

    По поводу износа. Если это магнитный блин то он страдает не от пропускной способности а от IOPS.
    Тоесть от спорадических движений БМГ туда-сюда (SEEK time). Яркий пример - индекс баз данных. Если вы его
    кладете на магнитный диск и база под нагрузкой то скорее всего повреждение может быть в механике.

    Если вы просто копируете 1 толстый файл - то для HDD это достаточно мягкая нагрузка и он проработает долго.
    Если в RAID то еще дольше.
    Ответ написан
  • Как наработать навык декомпозиции задач?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Программирование - это как плаванье. Ты сколько книжек не читай - все равно программистом не станешь.
    Ты просто должен сесть и начать программировать. Прыгнуть в воду и плыть.

    По поводу декомпозиции. Обычно такой вопрос возникает когда кода много или когда задача большая.
    Эта декомпозиция идет параллельно со знанием таких частей ООП как Single-Responsibility, и структурных
    шаблонов проектирования
    . Начни это применять и декомпозиция сама собой пойдет.

    Чаще заказывай code-review своего кода и слушай советы старших коллег. Даже если обидно и стыдно.
    Слушай. Записывай и потом применяй.

    По поводу Алгоритмов и Структур данных. Почитай Никлауса Вирта. Он как раз такую книгу и написал.
    Ответ написан
    Комментировать
  • Python как получить данные из 1С находящейся на удаленном рабочем столе?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Попроси себе лицензию и установи этот чортов 1С и работай.
    То что ты хочешь сделать - выглядит со стороны как нарушение инфо-безопасности.
    Ответ написан
    Комментировать
  • Существуют ли библиотеки для поиска в интернете?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот посмотри на этот API https://github.com/googleapis/google-api-python-client
    Ответ написан
    Комментировать
  • Как можно в Tesseract улучшить распознавание желтого шрифта на красном фоне?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Протстой перевод в Grayscale может не сработать. Тусклый желтый и яркий красный могут
    дать совершенно одинаковый уровень серого. На градиетнах этот эффект испортит распознавание
    текста. Вплоть до полной бесполезности Tesseract на такой картинке.

    Картинку можно перевести в режим HSV (Hue,Saturation,Value) и для слоя H, который обычно
    меряется в виде градусов от 0 до 360 будет ярко выраженная гистограмма из двух пиков - желтого
    и красного. Далее обычным фильтром типа range выделяем желтый цвет и берем его за белый
    и все что не-желтый - берем за черный.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    У трубочных, TFT, и плазменных телевизоров (мониторов), или светодиодных панелей
    есть некая инерция свечения. У трубочных - свечение люминофора, у прочих время переключения затеняющей матрицы или включения-выключения светодиодов.

    Тоесть если ты снял управляющее напряжение с пиксела - он продолжает светить несколько
    милисекунд. (На этом основана физика движущихся изображений и анимации.)
    Светит с затуханием. Поэтому чем дольше будет время этого пост-свечения (или реакции)
    тем меньше будет мерцаний. Можно даже на 25 fps транслировать и будет выглядеть вполне
    хорошо. Если это пост-свечение очень короткое - то надо ему давать 120 fps чтоб подогревать.

    Геймеры обычно выбирают где побольше герц и поменьше реакция. Любители кино и сериалов
    могут брать 30-60 Гц. (Реально больше не надо ибо оригинал идет таковой).

    А обычные пользователи офис-приложений могут брать моники с самой медленной реакцией.

    Существует ли формула для расчета этой частоты или реакции - я не знаю. Физика - чуть более
    сложная. Аналоговая а не цифровая. Плюс еще - психофизиология восприятия цвета (ФНЧ в JPEG
    и Chroma-Sampling).
    Ответ написан
  • Какие есть способы хранения вебсокет соединений?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сокеты невозможно сериализовать. Придумай другую термиологию или другую идею.

    Возможно ты хотел что-то другое?
    Ответ написан
    2 комментария
  • Как изменить текст в звук оффлайн?

    mayton2019
    @mayton2019
    Bigdata Engineer
    espeak
    Ответ написан
    Комментировать
  • Как хранить номера авто казахстанского учета в базе данных чтобы максимально быстро найти номер в БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе ничего не надо придумывать. Все уже придумано и база умеет индексировать.

    create table autonumbers(autonumber varchar(30), region varchar(30));
    
    create index idx1 on autonumbers(autonumber);
    create index idx2 on autonumbers(region );


    Запросы:
    поиск номеров в регионе (индексированный)
    select .... where region = 'Астана';
    
    точный поиск номера по полному совпадению
    
    select .... where autonumber= '111AAA11';


    все что я знаю это поиск чисел быстрее поиска строк


    Это слабое утверждение для баз данных. БД это на 80% IO bounded приложение
    и его нагрузка будет зависеть от дисковой подсистемы и от удачного расположения
    искомых строк в блоках БД.

    Мой личный опыт эксплуатации БД Oracle например показывает что практически
    нет разницы между varchar / number. Хотя многие DBMS (Postgresql) поддерживают
    примитивные типы данных, но когда строка (datarow) длинная - то практически
    безразлично будет ли у тебя integer, biginteger, decimal.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    неприлично долго думаю над тем что нужно вынеси в отдельный пакет, а что достаточно вынести в отдельную структуру


    Такая-же проблема и у меня. Я тоже долго думаю над дизайном. Но суть в том что в большинстве задач
    ты и бизнес не всегда знаете куда пойдет проект дальше. И поэтому нарисовать идельный дизайн нельзя.
    Я-бы даже сказал что попытка сопровождать идеальный дизайн - может затянуть внедрение проекта.

    Поэтому просто откажись от декомпозиции. Пиши сначала прототип в олимпиадном стиле. Тоесть функция
    main - и погнал писать как чукча. Что вижу то и пою.

    И после того как ты напишешь 1000 строк например к тебе придет понимание как следует декомпозировать.
    И к этому моменту у тебя будут ДОКАЗАТЕЛЬСТВА выгодности твоего дизана. И теоретические споры можно
    уже исключить.
    Ответ написан
    1 комментарий
  • Как прервать поток c#?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Раньше и всегда я делал, кучу говнокода, вставлял проверки на статус токена или булевой переменной.

    Да. Ты правильно делал. Это единственный дешевый пособ остановить поток не разрушив приложение.
    Единственное но. Если это численный метод и он вычисляет
    int[a][b][c][d]=Math.Pow(a*b*c*d,Math.Sqrt(Math.Sin(Math.Cos(Math.Sqrt(a-b/a)))))))*a+b;

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

    Практика показывает что частота 10-50 Гц является оптимальной для работы с пользователем.
    И нет смысла делать чаще. Ты все равно быстрее на кнопку не нажмешь.
    Ответ написан
    Комментировать
  • Полезность моделей памяти которые отличный от linear?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Любая оптимизация начинается от проблемы. Из проблем памяти я могу отметить технологический предел
    на пропускную способность. (так называемая Стена Фон-Неймана). Она частично решается
    кешамя для горячих участков кода но никак не решается в обобщенной постановке.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть утилита torrent-cli. Кажется у нее были опции для просмотра.
    Еще в гитхабе есть проекты похожие по смыслу
    https://github.com/casey/intermodal
    https://github.com/elektito/ih2torrent
    Они позволяют видеть каталог файлов.

    Непонятно зачем ты пишешь про tbpw. Если ты хочешь видеть контент самих файлов - у тебя только
    один вариант - качать торрент.
    Ответ написан
    Комментировать
  • Может ли язык Си работать на условной stack-based машине?

    mayton2019
    @mayton2019
    Bigdata Engineer
    на условной stack-based машине


    С точки зрения практических стековых машин. Существует язык стек-ориентированный Forth и на нем программируют микроконтроллеры и вообще творят всякие штуки которые можно описать алгоритмом. Гитхабе я находил проекты реализаций языка Lisp на Forth. Тоесть ... скорее всего можно все.

    Является ли Форт в данном вопросе stack-based машиной - я не знаю. Он - скорее всего шире чем просто
    стек машина. По крайней мере есть ссылки на память и стек возвратов.

    Для прояснения - желательно чтобы автор привел свое понимание термина. Потому что есть еще
    push down automata, это тоже термин и его надо как-то сопоставить с тем что пишет автор
    иначе у нас будет оооочень много стековых машин с разными свойствами и мы запутаемся.
    Ответ написан