• Что эффективней, чтение из файла или массив?

    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 комментария
  • Задача с перестановкой спичек?

    Vindicar
    @Vindicar
    RTFM!
    Шаг 1. Опиши каждую цифру числа как бинарную строку, где каждому биту соответствует спичка в цифре. 1 - спичка есть, 0 - нет. Тебе понадобится 7 бит на цифру, можно округлить до 8 и считать 8й бит всегда 0. Это, по сути, семисегментный индикатор.
    Шаг 2. Научись преобразовывать число из нескольких цифр в длинную бинарную строку. Если гарантируется, что число 4значное или меньше, то эта строка будет выражена как 4 байтовое беззнаковое целое.
    Шаг 3. Если сделать XOR между двумя такими строками, то значение 1 примут только биты, соответствующие пропавшим/появившимся спичкам. Посчитать число единичных бит нетрудно.
    Шаг 4. Перебирай числа по возрастанию, для очередного числа построй битовую строку. Если число единичных бит в строках равно (для их "записи" используется равное число спичек), а число единичных бит в XOR равно четырём (две спички переложили = две спички пропали + две появились), число подходит.

    За скорость, правда, не ручаюсь. Но есть возможности по оптимизации подсчёта единичных бит, и по оптимизации перебора (перебирать не все числа, а только те, которые можно выразить тем же числом спичек).
    Ответ написан
  • Как автоматизировать запуск sql скриптов?

    @Akina
    Сетевой и системный админ, SQL-программист.
    MySQL имеет собственный встроенный планировщик (MySQL 8.0 Reference Manual / Stored Objects / ...), который может делать практически что угодно. Создаёшь Event Procedure, задаёшь периодичность выполнения - остальное сервер сделает сам. Вообще без помощи/управления со стороны.

    Народ обычно любит предлагать внешние планировщики (как правило CRON) - настоятельно не рекомендую, если требующий выполнения код есть чистый SQL. Другое дело когда надо выполнять скрипты на иных языках или внешние приложения - тут да, без крона скорее всего не обойтись. Хотя и тут есть способ - подключить внешний модуль с требуемым функционалом.

    Есть папка, которая хранит в себе sql файлы для создания бд, таблиц в этой бд, импорт данных в эти таблицы.
    Как автоматизировать запуск этих sql скриптов?

    Создание БД, таблица, начальное наполнение - это как бы одноразовое действие. Нафига их шедулить?
    Ответ написан
    3 комментария
  • Почему не выводится значение из sqlite3?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Руслан . абсолютно прав. А ещё по-умолчанию отсутствует login “Sergey”, поэтому, если он ранее не был добавлен в базу, .fetchall() вернет пустой список и всё равно ничего не напечатается.
    Ответ написан
    Комментировать
  • Как сделать вычисления только функциями?

    0xD34F
    @0xD34F
    zero, one, two, three, four, five, six, seven, eight, nine = \
      [ lambda f = None, v = i: f(v) if callable(f) else v for i in range(10) ]
    
    plus = lambda a: lambda b: b + a
    minus = lambda a: lambda b: b - a
    times = lambda a: lambda b: b * a
    divided_by = lambda a: lambda b: b // a
    Ответ написан
    Комментировать
  • Как поделить базу между микросервисами?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Но немаловажная суть микросервисов в том, что бы минимизировать зависимости, в том числе обеспечить каждый микросервис своей БД.

    Именно.

    Дублировать данные для каждого микросервиса нет никакого смысла.

    В микросервисной архитектуре в дублировании как раз есть смысл.

    Может быть вам просто не нужны микросервисы, какую проблему вашего проекта решает микросервисная архитектура? А может вы наоборот зря заморачиваетесь по поводу дублирования, какие проблемы у вас с ним?
    Ответ написан
    Комментировать
  • Как набить руку на Python разработку и сисадминистрирование за 2 месяца?

    ri_gilfanov
    @ri_gilfanov
    Web- and desktop-developer
    Веб-разработка и администрирование сетевых ресурсов более востребованы, поэтому я бы рекомендовал изучить следующее:
    • основы и стандартная библиотека Python -- навык лучше прокачивается написанием скриптов и программ для решения неучебных задач. И если основной навык миддла -- это гуглить (полу)готовые решения, то основной навык джуна -- уметь писать свои "велосипеды". Разработчик, который по-максимуму использует и полагается на готовое -- столь же неэффективен, как и предпочитающий использовать готовое по-минимуму;
    • веб-фреймворк Django -- пилите небольшой проект, получаете общие представления о веб-разработке и практику ООП, но о Python этот веб-фреймворк расскажет мало, делает слишком много работы за программиста, а в его исходном коде можно заплутать, так и не поняв как он работает;
    • система контроля версий Git -- обязательно для разработчика и желательно для сисадмина;
    • wsgi-сервер uWSGI (или Gunicorn) -- см. ниже;
    • http-сервер Nginx -- см. ниже;
    • GNU/Linux -- пробуете развернуть проект с использованием предыдущих двух пунктов;
    • веб-фреймворк Flask -- просто пощупайте или сделайте ещё один небольшой веб-проект, по исходникам этого веб-фреймворка проще понять как работают другие веб-фреймворки и как писать поддерживаемый код, к тому же на Flask часто пилят всякие API / бэкенды;

    Настольные приложения и мобильная разработка на Python кажется менее развита и менее востребована, но когда-нибудь можете пощупать:
    • Python GTK+ 3 (или PySide2) -- Python обёртки над GUI инструментариями для разработки настольных приложений;
    • Kivy -- фреймворк преимущественно для мобильной разработки.

    И, если вопрос предполагает поиск работы через пару месяцев, то работодателям обычно нужны те, разработчики, что будут решать их "бизнес-задачи": снижать расходы, повышать доходы и минимизировать риски. Проще говоря, знание математики, алгоритмов и модных технологий могут не пригодится вообще, а вот доведённые до ума проекты расскажут о Вас работодателю намного больше.
    Ответ написан
    4 комментария
  • На сколько может быть долгим запрос?

    VladimirAndreev
    @VladimirAndreev
    php web dev
    А зачем в дорогом sql запросе вообще нужны feature_values?
    Ответ написан
  • Как выбрать поля по значениям двух колонок?

    @Vitsliputsli
    При условии, что product_id всегда имеет не более одного типа property_id:
    SELECT `product_id` 
    FROM `product_properties_values`
    WHERE (`property_id`=1 AND `value`=2) OR (`property_id`=3 AND `value`=3)
    GROUP BY product_id
    HAVING count(*) = 2

    , и при условии, что я угадал то, что вы хотите.
    Ответ написан
    2 комментария
  • Как обработать [Errno 12] Cannot allocate memory исключение в python?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Правильным решением будет переписать код так, чтобы память не забивалась, а не обрабатывать ошибку отсутствия свободной памяти.
    Ответ написан
    Комментировать
  • Как реализовать месячную подписку?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Если не использовать календарный месяц, то есть подписка на, например, октябрь 2019 года, то подписывать на период (месяц должен быть месяцем, а не 28 дней). Оплата: код пользователя, дата оплаты, дата начала подписки, дата окончания. Дату начала подписки либо вычислять по последней подписке пользователя, либо запрашивать. Дату окончания — вычислять по тарифу, который действует на указанный период. Возможно потребуется отдельная таблица Тариф: дата введения, число дней, цена.
    Ответ написан
    1 комментарий
  • Не видно мои работы в codepen?

    sfi0zy
    @sfi0zy
    Creative frontend developer
    Ваши работы на пару секунд попадают в ленту /pens/recent/. Это тысячи демок каждый день. А может и десятки тысяч. Может быть кто-то увидит ваши в этом потоке безумия, но в лучшем случае это будет пара человек.

    Если ваши работы снабжены релевантным заголовком/описанием/тегами, то другие люди могут их нагуглить (или в местном поиске найти). Будет немного просмотров. Но не сразу и не факт.

    Можно привлекать зрителей со стороны. Например с помощью статей на Хабре, Медиуме или еще где-нибудь, где есть аудитория. Просмотры будут. Можно еще фолловить и ставить сердечки всем подряд. Люди будут приходить, чтобы посмотреть, кто вы такой и что вы делаете.

    Если контент стоящий и он попадет на глаза модераторов (Chris Coyier, Marie Mosley, Gabi, Alex Vazquez, вроде еще кто-то был), то его могут отправить в очередь в ленту /pens/picks/. Полезно шарить свои работы в твиттер - они мониторят упоминания @CodePen. Вам придет оповещение со звездочкой и как очередь дойдет, ваш проект появится там. Путь к известности на СodePen начинается где-то в этой ленте, от нее всего шаг до главной ленты с популярными демками. Там просмотры растут очень быстро.
    Ответ написан
    Комментировать
  • Структура данных для кругов Эйлера?

    longclaps
    @longclaps
    Ответ написан
    Комментировать
  • Взаимодействие нескольких python скриптов?

    landergate
    @landergate
    IT-шный jack-of-all-trades
    Опрашивать файл не надо, достаточно использовать inotify от самой ОС.
    Под Python есть кросс-платформенные реализации отслеживания изменения файлов через inotify-like подсистемы. Отслеживающие скрипты будут ловить событие по итогам записи и закрытия файла, даже без коммуникации с основным процессом.

    А так, скрипты могут взаимодействовать друг с другом как по HTTP (публикуя от себя маленький веб-сервер), так и по любому самописному RPC-протоколу поверх TCP или unix socket'ов.
    Ответ написан
    Комментировать
  • Как правильно сформировать SQL запрос?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    записей в таблице products очень много ( около 1млн )

    это не много, это нормально
    и запросы типа JOIN не предлагать, так как оно существенно влияет на производительность

    а этот бред вы как догадались сюда приплести? У вас наоборот с выходом из внутренних джоинов выборка по ид будет сокращаться, в итоге по таблице продуктс будет только джоин нужных ид(что аналогично выборке where in, только с меньшими ограничениями, например ордер и лимит). По этому сджойнте мелкие таблицы, получите с них модел_ид, и по нему уже джоин продкут.
    Я бы денормализовал продуктс, внес бы еще брэнд_ид в него, но это так, мелочи.
    Ответ написан
    Комментировать
  • Использование единой базы данных для кроссплатформенного мобильного приложения и веб-сайта. Как реализовать?

    zoroda
    @zoroda
    Необычный Fullstack
    Не очень понимаю, в чём именно требуется помощь.
    Обычно для таких проектов поднимаю БД PostrgeSQL c REST интерфейсом к нему PostgREST. Поднимается в простейшем случае одной командой в докер контейнере. Сайт, мобильное приложение и всякие модули интеграции натравливаю не на БД напрямую, а на этот REST интерфейс.
    Это вкратце. Если нужны детали, готов ответить на конкретные вопросы.
    Ответ написан
    5 комментариев
  • Как найти наибольшую поседовательность за O(n)?

    tsarevfs
    @tsarevfs
    C++ developer
    Хранить hash map, в которой ключ - значение последнего элемента в последовательности встреченной раньше, а значение -- длина. И дальше проходим по массиву и заполняем.
    Ответ написан
    2 комментария