Задать вопрос
  • Как составить блок-схему из готового кода C++?

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

    Еще вариант - это может называться Activity Diagrams - https://plantuml.com/activity-diagram-beta

    В советском варианте цикл отображался как шестиугольник (плоская гайка) где описано i=0...20
    Далее - стрелочка вниз. Ромбик. Вывод. "Задайте...." и так далее.

    Вот эта штука никак не отображается.
    int number;
    Пропускаем.

    Снова стрелочка низ. Ромбик. Типа input. Там описываются имена переменных для ввода.

    И стрелочка наверк к циклу. Повтор цикла. И справа из гайки - выход в овал "конец"
    Ответ написан
    1 комментарий
  • Как в Python перевести string в bytes, не меняя string?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для хранения байтов в базах данных обычно из заворачивают в строки в кодировках BinHex, Base64.
    Ответ написан
    Комментировать
  • В чем смысл do while? Как его можно использовать?

    mayton2019
    @mayton2019
    Bigdata Engineer
    do-while удобно применять когда например есть пользовательский ввод и есть реакция на ошибу. Где нужно ввод
    повторить. Например

    do {
      s = input("Enter your bidthday: ")
    } while(!isValidDate(s));

    Еще я использовал для простого I/O когда надо что-то по-символьно читать и проверять
    что файл не закончился (результат не отрицательный).

    В последних версиях Scala (3.x) мусье Одерский внезапно зобанил оператор цикла с постусловием.
    Я уж не помню как он это аргументировал.

    В качестве альтернативы предлагалось делать такой композитный предикат который делает
    сначала действие а потом проверяет.

    while ({ <body> ; <cond> }) ()

    Еще дальше пошел Дейкстра. Он придумал специальный вид do-while для конечных автоматов.
    Такой себе гибрид do-switch-case-while. Где можно как в DSL описать исходящие переходы.
    Правда я не помню где он его реализовал.

    UPD: Ошибочка. Не Вирт а Дейстра. Путаю их.
    Ответ написан
    Комментировать
  • Как повторить curl запрос в java?

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

    Попробуй понаблюдать сетевой трафик через tcpdump/wireshark.

    И попробуй активировать DEBUG логгирование для библиотеки org.apache.hc.client5 (я думаю что ты ее используешь хотя по исходнику неочевидно). Попробуй в отладке посмотреть на MultipartEntityBuilder. Есть ли у него toString() ? И что там?
    Ответ написан
    Комментировать
  • С чего начать проектирование базы данных имея только макет?

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

    Из практики я не встречал в жизни такой задачи где-бы проектирование было с нуля и до конца.
    Бизнес меняется. Постоянно появляются новые услуги. И под них растет база. Я-бы на твоём месте
    не стал-бы упарываться вопросом именно проектирования базы. Я-бы доверился итеративному
    процессу наподобие scrum-agile. Делаешь первую версию БД. Показываешь демо. Потом снова
    итерации. Я надеюсь с командой alter table ты знаком? Ну и прекрасно. Значить в любую
    табличку можешь внести изменения. Табличка это не железо-бетон. Если надо - пределай.

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

    Если ты не знаешь какие сущности там будут лежать - то пойди от бизнес-кейсов. Например кейс.
    Человек хочет сделать заказ. Или еще другой кейс. Человек пришел оплатить заказ.
    Оплатил. Попользовался неделю. Потом ему что-то не подошло и он потребовал возврат.
    Из кейсов сразу появляются сущности. Клиент. Заказ. Склад. Платеж. Фидбек. Flow товара по магазинам
    и складам. И так далее.

    Если начнешь делать - делай по минималке. Лучше сделать меньше но самодостаточно чем поначинать
    тысячу сущностей и бросить их.
    Ответ написан
    1 комментарий
  • Как заменить двойные кавычки на "?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Друзья я не знаю как вы в PHP работаете с XML. Но любой нормальный XML-API (стриминговый или документ-ориентированный) это делает автоматически. Экранирует gt, lt, amp, quot.

    Тот факт что вы зачем то делаете строковую замену говорит о том что вы просто работаете с кастомной строкой. А это неправильный подход.
    Ответ написан
    4 комментария
  • Как сделать обработчик коллизий в OpenGL?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это сложная тема. Это вам - не арканоид написать. Чтоб правильно сталкивать объекты - надо представить как-бы они сталкивались в реальном мире. И я думаю что тут даже десятка параметров недостаточно чтобы описать какое это столкновение. Столкнуть два бильярдных шарика - это одно. А два мешка с песком - это другое. Или шарик с мешком.
    Ответ написан
    1 комментарий
  • Как можно изменить код, чтобы он работал быстрее?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Python это в принципе не тот язык который работает быстро. Но если есть уже готовый вектор примитивов то его наверное можно процессить их альтернативного API написанного на векторных операциях. И Python будет просто посредником при вызове. Разумеется вне цикла. Arrow. Numpy. Numba. Pandas неважно. Их огромное количество.

    Тоесть главная задаа - подготовить структуры данных так чтобы они были applicable к альтернативному API.
    Ответ написан
    Комментировать
  • Нужна ли математика?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Большинство программирования базируется на математике школы. Сложить. Умножить. Взять процент.
    Посмотри на все сайты электронной коммерции и магазины. Какая там математика?
    Ответ написан
  • Вопрос по оформлению кода C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вопрос по оформлению кода C++?

    Если делаешь себе пет-проекты или фрилансишь - то безразлично. Делай как читабельно лично
    для тебя. Из best-practices. Старайся уменьшать количество вложенных for/if/else. Для
    уменьшения - делай декомпозицию на функции. И добавляй guard-expressions с выходом
    в return сразу когда какое-то условие выполняется. Часто это уменьшает число вложенной логики.
    break - как аналог guard только для циклов.

    Если ты зашел в корпорацию - то первое что ты увидишь - это тонны легаси кода и корпоративные
    требования (локализованные под проект) о том как надо писать. Конвенции. Соглашения.
    И просто договорняки в команде. Например у нас было такое что в проекте мы после пары
    багов решили писать switch/case с комменарием в секции default ВСЕГДА в том случае
    когда default не содержал логики. Тоесть программист как-бы подтверждал что все
    кейсы учтены и мы ничего не потеряли в проверках.
    switch(weekday) {
      case SAT: 
         onSaturday();
      default:
         // Nothing to do!
    }

    Фигурные скобочки и пробелы обычно подсвечивают корпоративные плагины в IDE с настройками.
    Еще вариант что стиль чекается во время процедур CD/CI и выдает ошибки или предупреждения
    о нарушении стиля. Тоесть сильно упарываться сейчас этим вопросом не стоит. Когда тебя
    прижмет - привычка писать правильно появится очень быстро. За считанные недели.

    Следующий пример цикла - просто неудачен.
    for (int a = 0; a < 10; a++) {
        if (a == 5) {
            break;
        }
        std::cout << "Не то значение" << std::endl;
    }

    Здесь можно доказать что он на самом деле сводится к циклу от 0 до 4. И вообще без проверки внутри.

    Видишь очень важно правильно подбирать учебные примеры.
    Ответ написан
    1 комментарий
  • Почему попытка обратиться к только что созданной таблице вызывает ошибку "no such table"?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Слушай автор давай табличку по другому переделаем. Вот так

    CREATE TABLE IF NOT EXISTS warning(id INT, user_id INT, count INT);


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

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

    Но когда будешь изучать команды типа fdisk, parted, mkfs то лучше конечно ценную ОС отключить вообще.
    Ответ написан
    2 комментария
  • Почему я получаю данную ошибку?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется ты смешал в кучу две разные технилогии. Bind variables. Это вставка специальных переменных
    в тело DML/DQL запроса вместо значений. Это поддерживается на уровне БД. Это важно для БД потому что идет компилляция текста запроса для повторного его исполнения много раз.

    И интерполяция строк. Это просто тупо генерация новой строки. К базам не имеет отношения.
    Это поддерживается Python например. Строковой интепорляцией ты можешь сделать первую часть запроса.

    Сделать нечто вроде
    "UPDATE emp SET ename=? WHERE empid=?"
    (кстати в синтаксисе у тебя скорее всего была ошибка)

    И потом уже вместо вопросительных знаков добавить bind variables.
    Ответ написан
    Комментировать
  • Можно ли как-то отследить прогресс добавления колонки в БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нужно добавлять в часы когда пользователи не работают с БД. И добавлять в несколько этапов.
    Сначала просто добавить колонку. Потом ее дефолтное значение обновить. Это можно порциями делать.
    Потом констрейнты и триггеры добавить. И смотри чтоб ты не пересекался с джобом который делает
    вакуум.

    Сколько времени - ждать ХЗ. Наверное в PG есть monitoring views которые показывают текущие активности.
    Но это я не знаю. Пусть другие подскажут.
    Ответ написан
    Комментировать
  • Как испровить медленный запрос к базе данных?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Из быстрых советов - проверь что Subdivision_ID проиндексирован.
    Ответ написан
    Комментировать
  • Сказано, что различие между for и while в пространстве видимости. Что это значит?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Наверное имеется в виду это. Вот тут переменная i может быть использовани и после цикла.

    int i = 0;
    while(i<10) {
     doSomething(businessObj[i]);
     j++;
    }
    i = 0;


    Кострукция for - замыкает область видимости и переменную не видно. Хотя в наше
    время код больше тяготеет к более function-style кодингу когда итератор
    или параметр цикла вообще не нужен. У нас есть некий foreach и он делает все что надо.
    Ответ написан
    4 комментария
  • Что значит "знать PostgreSQL"?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ух. Нет предела совершенству. Можно начать читать отсюда https://www.postgresql.org/docs/current/index.html

    Если спрашивают на собеседовании - то у них есть конкретная позиция или должность например DBA или разработчика. У них - очень разные задачи. Например DBA заниматеся бекапами, перформансом. Поднимает новые экземпляры БД для бизнеса. Лечит упавшие. Делает апгрейд версий софта. Вобщем поддерживает непрерывный цикл работы. Если спрашивают на разработчика (к примеру для банка) - то нужно знать режимы работы транзакций (их там 4 штуки кажется). Нужно знать и применять индексы. Оценивать когда они полезны и когда - бесполезны. Писать триггеры и хранимые процедуры. Если ты идешь разработчиком в какой-нибудь 2ГИС то будут спрашивать гео-поисковые возможности PG. Кроме того в наше время разработчик с БД работает малую часть времени. Все таки его основными языками будут Java/C# e.t.c. и фреймворки типа Hibernate. И нужно распределять усилия. Чистых БД разработчиков я уже лет 10 не видел. Поэтому стоит ли "упарываться" прямо в постгрес - ну я не знаю.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне нужно совершить запрос по url адресу : primer.primer/keyword='слово'
    И следовательно чтобы все пройти в один поток, нужно много времени, поэтому нужна многопоточность. Очень надеюсь на помощь :)

    Нет-нет. Это все - полная фигня постановка. Так не работает. Если кто-то что-то хочет быстро искать - он создает специальные структуры данных оптимальные для быстрого поиска. Например этот txt-файл со словами записывается в Python dictionary и там и лежит себе. Для поиска - самое оптимальное. Если памяти не хватает
    то тогда этот текстовый файл переписываелся в БД типа SQLite. И ищется там уже с механиками индексов
    и с более рациональным (блочным) использованием памяти (там кажется mmap используется).

    Мультипоточное чтение файла здесь особо ничего не дает. При холодном старте - будет даже хуже чем одно-поточное.
    Ответ написан
    Комментировать
  • Как ужимать jpeg без потери цветов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Не очень понятен смысл твоей экономии. Что ты хочешь выторговать?

    Скорее всего цвет страдает при использовании цветовой модели Y(Cb)(Cr). В этом режиме
    отдельно кодируется черно-белая яркость одним каналом. И еще двумя другими каналами
    кодируются цветовые разности. На них идет жосткая экономия. Прореживают и по разрешающей
    способности (chroma subsampling) и еще возможно по квантизации. Короче экономят на красках.
    Это не ново. Это цветовая психо-физиология. Подтверждено экспериментами на людях. Об
    этом знали еще в 20м веке когда строили телевизионные системы типа PAL/Secam.

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

    Я не помню поддерживает ли JPEG RGB модель. Но поищи. И начни искать в фотошопе а не в этой
    стрёмной библиотеке PIL. Кстати почитай насколько глубоко она работает с JPEG. Использует
    ли она сишный libJPEG или у нее самопальный алгоритм. По идее в RGB модели должно
    быть более равномерные потери для цвета и яркости. Но результат будет не лучше.

    Еще посмотри в направление форматов webp. Если ты такой жадный дизайнер - то там будут
    улучшеные алгоритмы кодирования-декодирования основанные прогнозе следующего цветового
    фрейма.

    Посмотри в JPEG2000 который умер так и не родившись. Но возможно там будут идеи которые тебе будут
    интересны.
    Ответ написан
    Комментировать
  • Как собрать библиотеку из кода для 16-bit ОС для работы в 32-bit \ 64-bit ОС?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тут еще такая тема что на эту задачу трудно написать acceptance criteria. Ну допустим пойдет автор на фриланс. Сделает заказ. Ему скажут готово. Переписал. Он скажет - не работает. А они скажут - пуговицы пришиты нормально.
    Какие претензии? Скользкая это постановка. Вообще надо ставить новую задачу о разработке софта. Это знания из ДОС-овского исходника можно использовать а можно и выкинуть. Но упор здесь должен быть именно на разработку.
    Ответ написан
    Комментировать