Задать вопрос
  • Есть ли статьи, которые приводят наглядные примеры того, как код на rust превосходит код на других языках?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В топике непонятно что автор имеет в виду под превосходством.

    Я думаю что если заказать статьи разным техно-писателям то они напишут каждый про свое. Один
    может писать про удобство процесса разработки (и это важно). Другой напишет про безопасность
    по memory safety. Третий может напишет про ФП и обобщенное программирование и может
    быть про автоматическое доказательство каких-то свойств которые есть у софта.

    Могу констатировать в живых примерах что ядро линукс уже содержит 55 исходников на rust (по состоянию
    на 5/13/2023) и следовательно кому-то это надо. Кто-то заказал внедрение нового компиллятора.
    Видимо язык С уже не устраивал. Я пытался просмотреть эти сорцы но моих знаний Rust и Linux kernel
    разработки пока не хватает чтобы дать хоть какой-то внятный комментарий по поводу. Ну раз коммитеры
    вкоммитили значит все таки было очень нужно.

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

    Про Mozilla тоже можно посмотреть. Возможно там найдуться примеры где было на С++ и стало на Rust.
    Ведь это по сути была главная причина возникновения самого языка Rust.
    Ответ написан
    Комментировать
  • Как добиться баланса между скоростью и производительностью при импорте ~200к строк в базу данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    1) 200k строк это вобщем-то мало для современных БД
    2) Загрузи как есть в новую таблицу вот как тут пишут
    https://stackoverflow.com/questions/14127529/impor...
    3) С помощью alter add column добавь нужные колонки и обнови через UPDATE.

    Никуда больше копать не надо. Загрузка данных - уже 30 лет как решенная коробочная задача.
    И ее делают встроенные в БД утилиты и сама БД если если ей доступен диск с csv-файлом.

    Никакой ORM тебе тоже не нужен. ORM вообще - противопоказан для задач аналитики и ETL.
    Ответ написан
    9 комментариев
  • Правильно ли я учусь программированию?

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

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

    И как ты думаешь что быстрее и больше усвоит материала?
    Ответ написан
    4 комментария
  • Какие бывают примеры метапрограммирования на Форт?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не Фортист. Но я-бы обозвал себя Форт-любознательный. Что такое вообще мета-программирование.
    Вики определяет так
    Метапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы

    Туда-же до кучи кидают и макросы и кодо-генерацию. Достаточно общо. Мне это и нравится
    и не нравится. Нравится тем что в топике Форта безо всякой конкретики мы можем
    крутить это определение как есть и натягивать его как сову на мячик.

    Что вообще есть в языке Форт. Макросы? Вроде там весь синтаксис - это слова (words). И можно определять
    новые слова и переопределять старые. Например вместо цифры 2 можно определить 3. Вот даже так.

    Про кодо-генерацию говорить не интересно. Форт - язык для встраиваемой техники и микро-контроллеров
    и таких вобщем-то задач как кодогенерация в ентерпрайзе и финтехе - вобщем -то нету. Тоесть типичная
    задача генерации ORM-Entities где на вход приходит реляционная БД со схемой а на выходе например
    C#/Java код с готовыми сущностями - неспецифичная для Форт. Ну нету такой потребности.

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

    Вот эта конструкция берет с вершины стека число и считает целое число в кубе.

    CUBE DUP DUP * * ;

    Функция или макрос? Вот если макрос - то я уже мета-программирую. Тоесть
    форт мета-программирует постоянно.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос не глупый а вполне себе хороший.

    Его плавное развитие приводит к концепции баз данных. Самое главное что можно сказать тезисно это
    1) Пока памяти хватает (массив) - используй смело память
    2) Диск - больше и дешевле памяти
    3) С памятью работать легко. С диском - очень неудобно и надо обрабатывать IOExceptions почти всегда.
    Диски внезапно полны сюрпризов. Могут быть сетевыми дисками.
    4) Разные диски имеют скорость на порядки разную.
    5) Диски ведут себя очень плохо на random access. От этого даже метрика IOPS появилась.
    Ее очень любят обсуждать админы баз данных.
    6) Существуют структуры данных которые спецом создавались только для дисков (B+Tree)
    7) Диск - переживает выключение питания.
    8) Самые разумные решения - сочетают в себе и диск и память в тех частях кода где это нужно.
    9) Есть интерфейсы программирования которые виртуализирут диск как память. Этим пользуется
    SQLite например.
    10) Диск может достигать очень высокой последовательной скорости чтения или записи в файл
    при условии отсутствия конкурирующих записей в данный момент. Этим пользуются в БД
    для журналирования событий.

    В принципе если современный программист просто будет использовать только оперативную память
    то никто ему не сможет ударить по рукам или подойти с какой-то метрикой и чего-то там измерив
    сказать что он неправ. Тут уж только падения по OOM и потери информации и performance issues
    могут быть каким-то значимым аргументом.
    Ответ написан
    3 комментария
  • Сколько времени можно питать ноутбук от инвертора из гнезда прикуривателя автомобиля без риска потом не завести двигатель?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть китайское зарядное устройство. Размером с обычное мобильное.
    На вход - 12 Вольт от аккумулятора. На выходе USB-TypeC стабилизированное
    и с интеллектом для регулировки тока.

    На нем ноубтук проживет очень долго.

    А инвертор в этой схеме не нужен. Он - оверинжинеринг.
    Ответ написан
  • Хранение смартфонов и деградация ячеек памяти?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Никто не сможет ответить на твой вопрос точно. Память Flash/Nand утекает от длительного неиспользования. Когда она утечет - через 1 год или через 5 лет это наверное тоже зависит от кучи параметров типа новизны телефона и типа внутреннего диска.

    Поэтому тут можно ответить как "бабка надвое сказала". Или помру или нет.
    Ответ написан
    Комментировать
  • Должен ли я ограничивать длину пароля?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Автор беспокоиться о максимальной длине POST-запроса.

    Я-бы просто предложил не беспокоиться а провести тестирование корнер-кейсов. Ввести там пароль
    в 256 символов. Или в 64К символов. Или в 4 гигабайта символов.

    И уже пойти от конкретной проблемы.

    А то получается что человек пришел и говорит. Вот... что-то меня беспокоит. Но я не знаю что.
    Помогите доктор. С чем-то...
    Ответ написан
    9 комментариев
  • Что такое событие в ООП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В первоначальном варианте ООП Аллана Кея было событие. Грубо говоря Кей считал объекты акторами.
    И от этого рисовал своё видение разработок. Но его кунг-фу не полетело в свое время. Слишком рано
    было.

    В современном классическом ООП в его реализации С++ и Страуструпа
    нет никаких событий. Нету ключевых слов. И нету среды которая-бы обеспечивала путешествие
    этих события вне объектов.

    Событие может появляться например как абстракция прикладного уровня в библиотеках типа MFC
    которы должны были работать с UI и регистрировать мышко-клики и прочее. Но там была ОС которая
    обеспечивала буфер событий. Отдельный life cycle для каждого из них. Вот. А языс Microsoft Visual C++ / MFC
    предоставляли как-бы фреймворк который регистрировал хендлеры и там соотв. эти события ловил и обрабатывал. Но это было сами понимаете никакое ни ООП. А это была очередная абстракция от Microsoft
    которая по их задумке должна была упрощать процесс разработки графического софта.

    В Borland C++ тоже есть свои абстракции для событий. Но они тоже лежат как-бы отдельно от языка. Скорее
    во фреймворке или в библиотеках.

    Откуда в PHP-OOP вдруг появляется событие? В ключевых словах PHP есть class, trait, function, abstract, extends.

    Но никаких event нету. Осталось задать вопрос. Кто вообще дает такую информацию? Что за курсы? Что
    за книга? Что за преподаватель?
    Ответ написан
    3 комментария
  • Как правильно распределять ответственность между классами?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Поскольку топик тегирован PHP то я-бы предложил взять PHP фреймворки и смотреть как они видят себе реализацию шаблона например репозиторий. Я-бы мог рассказать о Spring Data Repository но боюсь что для PHP будут отличия и автор просто запутается.

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

    Что такое шаблон Store - я не знаю. Опять-же это специфика PHP скорее всего.

    Что такое шаблон Сервис. Ну я вообще не рискнул бы его никак определять. Это КМК слишком размытое понятие и его надо срочно сузить. Хотя-бы до уровня техно-стека. Может сервис в терминологии SOAP это одно. Облачный сервис - может быть вообще другое. Короче архитекторы этих технологий будут бить друг друга здесь как епископы разных церквей друг друга за ереси.

    Сервис для ООП - вообще седьмая вода на киселе. Вообще ООП надо начать и закончить на его полиморфизмах и наследованиях и поставить точку. Дальше - нет ООП. Дальше идет хаос и новые виды абстракций от вендора языка. Аннотации и аспекты и рефлексия и прочий бред.
    Ответ написан
    1 комментарий
  • Как поставить 2D персонажа на 3D сцену?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ну 2Д персонажа можно рассматривать как такого картонного человечка. Тоесть он объемный но просто у него есть объем в оси X и оси Z но нет объема в Y.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот этот дефайн коде. Это что тут бывает?

    defineCode(stringLine);

    Если это можно свести к конечному (небольшому) числу вариантов - то можно собрать ну 5-10 библиотеки (*.dll) и подгружать ту логику которая нужна в зависимости от conditions.

    И вообще динамический код считается угрозой №1 с точки зрения антивирусов.
    Ответ написан
    Комментировать
  • Гит: лёгкий откат изменений (дискард) у группы файлов без добавления в игнор?

    mayton2019
    @mayton2019
    Bigdata Engineer
    1) Проблема решается просто переносом home каталога вашей проги "во вне" корня репозитария кода.

    2) Непонятно почему вы боитесь что-то добавлять в игнор. Обычно туда уходят специфичные extenions, *.o, *.exe, *.dll которым точно не место в коммитах или фолдер типа /bin или /target который проще менеджерить чем список расширений.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Работа без ОС с железом заключается в том что вы делаете свою "ОС на минималках" и компилируете
    ее в ваш софт. Поэтому мне кажется что тут более важный вопрос - а что вам нужно от ОС ?
    Загрузчик? Файловая система? Драйвера для экрана? Для звука? Это все очень сложные
    инжереные вопросы и чтобы их решать - нужно сначала уметь их решать вместе с ОС и уже
    потом как-то придумать как избавиться от ОС.

    Иначе выглядит что вы просто хотите странного.
    Ответ написан
    Комментировать
  • Материнка выключается через 4 секунды после включения. Что делать и что это может быть?

    mayton2019
    @mayton2019
    Bigdata Engineer
    А попробуй память вытащить и включить.

    И на кулёчек не надо ложить. Электризуется... со всеми последствиями.
    Ответ написан
    1 комментарий
  • Нейросеть для юристов существует?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Приговор выносит судья. Человек. Потому что любое современное судо-производтсво требует живых людей и их подписей.

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

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

    Что там где-то в америке случилось - надо разбираться. Возможно это неправильно прочитанная новость. Может там речь шла о автоматической выдаче штрафа или еще что-то. Но вряд-ли это был приговор. Вообще такие новости надо читать ... делая большую скидку.
    Ответ написан
    4 комментария
  • В чём безопасность DNS over HTTPS?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Существует атака когда человек посередине канала (man in the middle) подсовывает свой dns и вы,
    заходя в свой банковский кабинет попадаете на сайт-обманку. Дальше могут быть разные сценарии
    но в целом доверие к доменному имени базируется просто на предположении что вы точно-точно
    знаете что зашли в СВОЙ банк а не в фейковый.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Какая у тебя клавиатура? Я не советую ничего учить на ноутбуке. Ноут - всегда был походным вариантом десктопа со всеми вытекающими. Ход клавиши плохой. Нет характерного щелчка при нажатии. И вообще набирать неудобно из-за того что сухожилия пальцев напряжены постоянно. Вы боитесь нажать чуть сильнее чтоб не дай бох не сломать чего в своем любимом Apple M1.

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

    Я знаю что щас в топик набегут сторонники ноутбуков но послушайте программиста-электронщика-и-связиста. Я печатал на технике которую вы даже не знаете. На телеграфных аппаратах РТА-80. И все они по дизайну были продуманы для работы человека пальцами с учетом охраны трудна. Они все были удобнее чем самые лучшие клавиатуры ноутов. Подумайте о том что мировой опыт печатающей техники никтогда не тяготел к плоской
    поверхности и малому ходу клавиш.

    Хорошая клавиатура для человека - это например клавиатура фортепиано. Вот там и ход клавиш добротный.
    И вы не боитесь раздолбать ничего. Рука - расслаблена. Можно печатать быстро и без оглядки.
    Ответ написан
    1 комментарий
  • Как в респонсе на ходу создавать объект?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тут описана проблема которая принципиально в Rest-сервисах не решена до сих пор.

    Ее коробочное решение было реализовано в GraphQL. Но GraphQL - это не Rest. Это более
    сложный и более умный протокол и он позволяет выбирать из entity ровно те поля
    которые нужны для responce.

    А в твоем случае надо просто в контроллере создать еще один метод. Типа getUserByIdShort
    Ответ написан
    Комментировать