Задать вопрос
  • Как можно изменить код, чтобы он работал быстрее?

    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. Ну допустим пойдет автор на фриланс. Сделает заказ. Ему скажут готово. Переписал. Он скажет - не работает. А они скажут - пуговицы пришиты нормально.
    Какие претензии? Скользкая это постановка. Вообще надо ставить новую задачу о разработке софта. Это знания из ДОС-овского исходника можно использовать а можно и выкинуть. Но упор здесь должен быть именно на разработку.
    Ответ написан
    Комментировать
  • Почему SpringBoot не видит ни одного моего бина?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    А попробуй так

    System.out.println(applicationContext.getBean(ConnectionPool.class));
    Ответ написан
    4 комментария
  • Как рассчитать экспоненциальное скользящее среднее с учётом различных по длине временных интервалов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот подумалось что для того чтоб расчитать экспоненциальное скользящее среднее c gaps нужно все равно расчитать какое-то скользящее среднее.

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Почитай про такое понятие как Blue-Green deployment. Его можно реализовывать по разному. Наверное можно с докером и с кубером и без них.
    Ответ написан
    2 комментария
  • Стоит ли разработчикам платить за баги?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Баги на проекте - это нормально. Плохо когда баг был передан в релиз. Возникает вопрос - было ли тестовое покрытие а если было то почему не заметило этот баг.

    С точки зрения бизнеса - идет просто почасовая оплата за активности разработчиков. И бизнесу по большему
    счету все равно как распределяется время внутри спринта. Но во власти команды разработки принять какие-то
    решения которые уменьшают вероятность возникновения бага за 5 минут до релиза. С моей точки зрения
    здесь модульные тесты и код-ревью полезны. Но бизнесу об этом сообщать не надо. Это внутренняя кухня
    разработки и написание тестов идет просто как часть процесса разработки.

    И если например сравнивать риски появления бага в релизе с одной стороны или еще +20% времени
    на написание логики с тестами с другой стороны - то я выберу второй вариант. Так - спокойнее.

    Так разработчик спокойно идет в пятницу пить пиво и не думает о нежданчиках или о том
    что ему позвонят и дёрнут на работу.
    Ответ написан
    Комментировать
  • Почему не собиратеся сборка gradle?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Он же тебе предлагает запустить с --debug опцией. Запускай. Смотри. Сетевая ошибка может быть.
    Ответ написан
  • Можно ли использовать внешний накопитель для установки программ?

    mayton2019
    @mayton2019
    Bigdata Engineer
    По поводу NTFS/ExFat - для самих приложений ничего особо не меняется. Ну я не знаю приложений
    которые-бы как-то были завязаны на эти свойства. Это может для админов безопасности там важно.

    Хорошая ли это идея. Тут надо рассмотреть опции. Я часто смотрю кино с портативного диска. Иногда
    кошка может прыгнуть на системник. Пошатать что-то и диск может отмонтироваться. Бывает. Но с кино ничего не происходит. Доступ read-only. Кошку выгнал. Диск подключил и смотрю себе дальше. А что с приложениями?
    Дело в том что когда программист пишет код с I/O - он считает что диск всегда доступен. Совсем всегда.
    И ситуация когда диск вдруг отьехал - катастрофична. Может ли ОС работать когда диск c: отключился?
    Скорее нет чем да. Вобщем отсутсвие диска - катастрофа для приложений. И особенно для приложений
    которые в этот момент что-то сохраняли на диск - это отложенная катастрофа. Вы последствия
    почувстуете после следующего запуска. В противоположность - сеть. Она изначально проектируется
    как опционально-доступная и все программы при обработке сетевых ошибок используют ретрай-логику.
    Тоесть просто ждут и повторяют операции. Толерантны к сбоям.

    В противоположность I/O ошибки записи - нихрена не толерантны. Это сразу выпадение программы в ОС
    с сообщением "я не шмогла!". Это не относится ко всем программам а просто к большинству. К 80%
    программ если хотите.

    Вобщем все зависит от класса I/O операций ваших приложений. Если это как просмотр фильмов - то можно.
    Если это КАК postgres с журналом - то есть риск получить полностью поломанную файловую системую и
    неработающие приложения. Как работают ваши секвенсоры и плагины? Часто они делают запись?
    Насколько запись критична для работы "здесь и сейчас"? Что будет если их структуры данных
    для записи оказались записаны "наполовину"? Вот это вопросы на которые вы должны ответить.

    Если хотите более надежные внешние диски - подключайте SATA-диск через внутренний карман на корпусе.
    Ответ написан
    Комментировать
  • Разобраться с моим кодом, можно?

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

    Но я-бы предложил тебе стратегию как в будущем не залетать с такой бедой.
    Тебе надо стартовать новый проект который точно работает (hello world) на ботах.
    И потихоньку начинай переносить свой функционал в новый проект. И делай запуск и тестируй.
    И делай каждый раз git commit.

    Наступит момент когда он упадет - это и будет проблемное добавление. Дальше - откатывайся взад
    и разбирайся какое изменение привнесло дефект. Процесс можно ускорить если добавлять дихотомически.
    Сначала +50%. Упало. Удалил 25%. Едет. И так далее.
    Ответ написан
    Комментировать