Задать вопрос
  • Как напечать треугольник в консоли?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Брось прикалываться. Нормальные люди рисуют геометрию на matplot. Вот посмотри примеры
    https://matplotlib.org/stable/gallery/lines_bars_a...

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не специалист в Perl. Но использовать awk-like replacements для работы с бинарниками - так себе идея.

    У тебя в примере такой кейс. Дан двоичный файл и надо заменить в нем байты
    01 02 03на байты 04 05 06. Ето один кейс? Или возможны другие? 3 на 2 байта можно менять?
    В этом случае размер файла изменится. И нужно-ли сделать один реплейсмент? Или найти все возможные?

    Я думаю что тебе надо найти сишника, поставить ему пиво и он тебе 1 раз напишет утилиту для патчей и будешь ей всегда пользоваться.

    Или попробуй разберись вот как тут пишут https://stackoverflow.com/questions/2464334/how-ca...
    Ответ написан
    4 комментария
  • Написание кода коротко плохо?

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

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Напоминает попытку построить свой кеш. А зачем топик тегирован Ассемблером? Какая тут нерешаемая
    для ассемблера задача?
    Ответ написан
    Комментировать
  • Кроссплатформенное программирование на C?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Давайте поговорим о шрифтах. В 2012 я перешел с windows7 на Linux. И первая проблема практической работы с десктопом заключалась в том что я начал менять шрифты. Вот не нравились мне не шрифты не алгоритмы их рендеринга. Надо отдать должное МС. Шрифты у них хорошие. Дизайнеры очень долго думали над ними. Вот. Когда вы заняты кросс-платформенным UI возникает проблема. - Где взять шрифты максимально похожие на оригинал. Высота. Кернинг. Все должно быть максимально похожим на оригинальный десктоп где идет разработка иначе дизайн разваливается. В годы развития Linux Suse я пытался устанавливать их десктопы и использовать. И самая большая визуальная проблема что я видел - это полный развал шрифтового оформления. Доходило до смешного. Я просто не мог прочитать кириллический месседж в окне. Текст - сползал куда-то за границу окна. Или текст успешно переносился а баттон сползал за границы окна. Вобщем проблем было масса. Я думаю что одна из главных проблем кросс-платформенного UI - это унификация шрифтов. И дело тут вовсе не в Qt или Gnome/Gtk или KDE. А дело в том что другая платформа понятия не имеет как должен выглядет текстовый месседж.
    Ответ написан
    Комментировать
  • Имеются ли общие гайды по созданию моделей данных (ERD) для Data Quality?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не знаю каким боком ERD связано с DataQuality. Но на одной лекции я слышал что для оценки качества данных используют "ящики с усами" (box-and-whisker) и по ним смотрят выбросы. Ящик строится для каждой колонки отдельно.

    Реляционная диаграмма здесь скорее всего непричем. Статистика и маш-обучение оперирует обычно одной таблицей где есть всё.
    Ответ написан
    2 комментария
  • Как дать пользователю права суперюзера без использования стандартного пользователя postgres?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Судя по всему ты следуешь какой-то инструкции. По обучению наверное. Смотри если смысл - создать бд и стать владельцем - то это все не нужно. Качай постгрес под Windows и ставь его каким угодно способом. Базу табличное пространство и пользователя можешь создать скриптами. Если твой пользователь - владелец базы - то этого достаточно чтоб делать почти все что нужно.
    CREATE TABLESPACE tbs1 OWNER joker LOCATION '.....';
    CREATE USER joker WITH PASSWORD '123';
    CREATE DATABASE pingwin OWNER joker TABLESPACE tbs; 
    GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO joker;

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

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

    Вобщем создайте столько шифрованных колонок сколько надо. Накладные расходы - обсудите с бизнесом.
    Дескыть вы хотели GDPR - получите и распишитесь. Если не даете нам создавать колонки - тогда мы не знаем
    как решать вопрсы вашего бизнеса. Эстимируйте в конце концов. Это все цена разработки и она должна
    быть обсуждена.
    Ответ написан
  • Язык програмирования для нейросетей и ИИ?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тяжеловато будет изучать и С++ и ИИ одновременно. Для новичка. Оба направления - это просто космос знаний.
    С++ - сложен. И даже Бьярн Страус-труп советует его изучать частями. Не охватывая сразу все фичи. Восходящая звезда хай-лоада - язык Rust выглядит привлекательнее но я к сожалению не знаю насколько его библиотеки покрывают саму педметную область НС и ИИ. Пускай Rust-овщики скажут.

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

    Кроме Python я могу посоветовать Python. Потому что все API будут делаться под него.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сколько работаю с БД - впервые слышу глагол "внос". Слышал: загрузка, input, ingestion, migration, load, pull.

    Ладно. Вобщем ты конено тег не поставил БД. В классическом SQL я не помню такой команды. Но в Postgres есть
    insert ... on conflict ...
    где ты указываешь что делать если ключик уже есть.

    В Oracle можно сделать как-то так
    merge into .... using dual on (key = key)
             when not matched then insert (...) values (...)
                 when matched then update set ....;


    И возможно в современных SQL/Nosql системах уже UPSERT поддерживается нативно.
    Ответ написан
  • ChatGPT создаёт новый код или только дублирует существующий из примеров? Он понизит зарплаты фронтендерам-джунам?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Он хайпанул знатно. Но у него есть детские болезни. Такие-же которыми болеют всякие stackoveflow и прочие вопросники. Возможность словить эксплоит. И не очень понятная лицензионная чистота кода. Кто проверит и кто програнтирует что код надежен - непонятно. Тут недавно log4j бабахнул как бомба с critical vulnerability. Джависты до сих пор заикаются и крестятся. Пакет для логгирования который был в каждом втором проекте оказался с дыркой. И никто не видел. При том что и исопльзовали его и code-review многократно делали.

    И представте себе уровень безответвенности который исходит из генератора шума. Шучу конечно не шума. А такой себе Марковской генерилки шума. Но опять-же спрашивать про это GPT команду бесполезно. Они-же ее просто обучали на каком-то текстовом сете. Вот надо смотреть что было в том сете и как оно проскочило в учебную выборку.
    Ответ написан
    1 комментарий
  • Как обновить весь столбец sqlite3 python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Непонятно что автор хотел сделать. Может так. Я не проверял. Типы и функции может другие надо.

    UPDATE my_table SET days = CURRENT_TIME - date;
    Ответ написан
    Комментировать
  • Как корректно реализовать код?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В подобного рода задчах - стоит цель просто продемонстрировать все что вы знаете про ООП. В данном случае ООП+JS. Поэтому берете любой учебнок по ООП и затаскиваете в ваш гамбургер все-что что там есть. Наследование. Билдер. Декоратор.

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

    Или вы думаете что пользователь в бургерной будет стоять перед терминалов и в Java консоли код набирать?

    В реальном бизнес проекте классификатор продуктов может занимать до сотен тысяч позиций. Одних бургеров может быть до 1000 из которых например 300 - в будущих акциях а 400 - удалены с продаж но еще существуют
    в справочниках для аналитики. Будут абсолютные дубли по названиям но отличающиеся по цене. Будут товары недоступные любым а только VIP и так далее. Вот такие вот дела.

    Поэтому здесь что бургер что кот-собака или человек-обезьяна все едино. Демонстрируйте ООП в вакууме.
    Ответ написан
    1 комментарий
  • Можно ли переносить данные базы данных через phinx?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Типа можно накатить изменения и также безопасно откатить.

    По поводу безопасного отката. Это на 99% зависит от SQL кода который вы напишете. Это никак не связано с фреймворком поддержки миграций. Берите какой угодно фреймворк. Например liquibase или flyway.

    И даже в них если во время alter table rename column вы столкнетесь с активными сессиями в БД - то ваша транзакция переименования упадет и вы будете вручную решать ситуацию отката или наката.

    Безопасность наката и отката также зависит от грамотности описания ваших чендж-сетов. Бывает так что в 1 чендж-сет запихивают 2 DDL команды и одна из них проходит а вторая не проходит и фреймворк повисает навсегда в клинче. Двигаться назад он не может т.к. Не был применен чендж-сет. И двигаться вперет тоже не может т.к. первая DDL команда уже выполнена и повторо ее вызывает ошибку типа "table/index already exists".

    Выводы - грамотность описания чендж-сетов. И все.

    Ваш фреймворк phinx выглядит ужасно с точки зрения кода. Как по мне он не делает главной задачи а именно - не является DSL для upgrade/rollback. Он - прибит гвоздями к PHP и следовательно его можно рассматривать только под углом вашего PHP-удобства. Удобен он вам? Используйте.
    Ответ написан
    Комментировать
  • Что происходит на уровне БД при группировке?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По разному. Я думаю что разные DBMS (SQlite, Oracle) могут по разному обрабатывать группировку.
    Правильный ответ на вопрос - посмотреть execution plan комадой
    explain (plan) select ..... group by....;
    Наперед угадать какой будет использовал алгоритм - невозможно. Как вы помните
    язык SQL - это декларативный язык который декларирует свойства результата а не метод
    которым разрабочик хочет что-то сделать.

    Oracle например имеет много conditions для исполнения группировки например:
    1) Какой оценочный объем выборки? Может ли она быть отсортирована in-memory (sort-area-size) в противном
    случая будет external sorting в TEMP tablespace.
    2) Есть-ли композитный или простой индекс по полям группировки? В этом случае будет index-scan.
    3) Требует ли запрос немедленной выдачи первой пачки (хинт +FIRST_ROWS) или можно подождать
    но получить весь объем быстрее. Это тоже влияет на выбор алгоритма.

    Это всё эвристики которые влияют на выбор окончательного алгоритма.

    И уже к сортированной выборке собственно применяется лямбда которая делает группирующую операцию
    AVG, SUM, COUNT ... e.t.c. и выдает строки курсора.
    Ответ написан
    Комментировать
  • Какой язык программирования выбрать для изучения основ работы с алгоритмами и структурами данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Алгоритмы и структуры данных тесно связаны с зубо-дробительными бенчмарками. Как-то отсортировать терабайтный текстовый файл или найти два одинаковых числа в файле из чисел тоже большого размера.
    Иногда такие задачи задают на собеседованиях Google и Microsoft.

    И если вы будете изучать эти алгоритмы на js, то вы не сможете продемонстрировать эффективность этих
    алгоритмов. Python машина - просто медленная. У нее конечно есть надстройки например над векторной
    алгеброй которые позволяют быстро считать рутину вроде циклов над векторами. Но является ли это
    программированием Python - чорт его знает. Как по мне - нет. Тут - другая экспертиза нужна.

    В структурах данных важно также оценивать память "на глазок".

    В этом смысла кодер С++ имеет много преимуществ т.к. он видит и понимает как распределяется память
    в узле бинарного дерева например (два указателя по 64 бита + какой-то размер для ключа который тоже
    можно посчитать). Какой аллокатор брать? Встроенный в язык new или нужно делать собственный.
    Такой расчет важен для оценки например - применима ли структура данных вообще?
    Какой толк от дерева если оно не влезет в оперативную память? А падение памяти в swap - тут-же замедляет
    алгоритм в разы.

    JS и Python не предоставляют тонкого контроля над памятью. У них своя модель построенная для комфорта
    самого процесса разработки а вовсе не для струткуры данных.
    Ответ написан
    Комментировать
  • Можно ли сбалансировать бинарное дерево поиска без использования поворотов дерева?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Давайте порассуждаем что такое вообще "поворот дерева". Это - метафора. Это изменение двух потомков двух узлов a и b. По сути это функция transform:
    void transform(Node *a, Node *b) {....}
    при этом (a,b) - состоят в отношении relatives. Родственники.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    В рамках импорто-замещения РФ скоро откажется от Windows.
    Тогда специалисты по Linux будут восстребованы везде.

    Вот главный мотиватор. Хочешь иметь работу завтра - изучай Линуха сегодня.
    Ответ написан
    4 комментария
  • Какие есть хорошие статьи, рассказывающие именно о технологии blockchain?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По линкам из википедии можно начать читать https://en.wikipedia.org/wiki/Blockchain#References
    Ответ написан