Задать вопрос
  • На телефоне слетела прошивка (андроид). Как с него восстановить фотографии?

    2ord
    @2ord
    Отправиться в фирму по восстановлению данных.
    Ответ написан
    Комментировать
  • Turbo Pascal устарел и не актуален?

    2ord
    @2ord
    В общем, сильно отстала учебная программа, построенная на древних инструментах со времен DOS. Сам язык еще вполне используется, только в форме современного языка Object Pascal, сегодня это продукты Delphi и его клон Lazarus (компилятор Free Pascal). Есть также более новое поколение языков - потомков Паскаля - Модула-2, Оберон. Однако в этой нише очень мало вакансий. Так исторически сложилось в пользу языков семейства Си, хотя это и не означает что так лучше.
    Актуальны лишь приобретенные знания по алгоритмам и структурам данных. Текстовый интерфейс и BGI графика, конечно же, более не актуальны.
    Ответ написан
    1 комментарий
  • Как организовать микросервис для биллинга?

    2ord
    @2ord
    Сразу предупреждаю что не работал с системами биллинга вплотную.

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

    Архитектура
    ... если делать в лоб, то перед каждым запросом юзера нужно будет делать запрос в БД, чтобы определить, доступно ли по тарифу этому юзеру действие. То есть увеличится количество запросов к БД существенно. А можно держать какой-то кеш в памяти, и для определения параметров тарифа обращаться к нему. Но процессов-бекендов у меня много (бекенд на ноде), а этот кеш должен быть один. Это либо какое-то хранилище использовать (Redis, memcache и т.д.), либо выделить все в один процесс и внутри него организовать кеш. В первом случае все равно нужно как-то управлять кешем, с помощью какого-то процесса. Вот я и остановился на втором варианте - сделать сервис, который будет отвечать на вопросы биллинга. Но кеш же нужно своевременно обновлять (например, когда оплата прошла), поэтому логично и оплату вносить через этот сервис - он сразу сможет обновить данные по нужному клиенту. А где оплата, там и счета и все остальное.

    Конечно нельзя по любому запросу пользователя лезть в БД и всё заново. Можно периодически отложенно считать стоимость услуг и сливать результаты в кэш.

    Иван Шумов верно заметил, стоит подумать о процессах и от этого отталкиваться.
    Материал почитать...
    Designing for SaaS: Next-Generation Software Deliv...
    Ответ написан
  • Почему не запускается в CentOS, golang бинарик скомпилированный на debian 9?

    2ord
    @2ord
    Полагаю, что библиотека libstdc++ на ЦентОС другой версии, из-за чего в ней отсутствуют необходимые API.
    Ответ написан
    2 комментария
  • Как хранить много данных компактно и надежно?

    2ord
    @2ord
    Хранить надежно - это в СУБД, поддерживающих ACID. Данные массива, (де)сериализуя в приложении, можно хранить как BLOB.
    Ответ написан
    Комментировать
  • Где можно опробовать ИИ?

    2ord
    @2ord
    Раньше это называлось кибернетикой. Строили всякие радиоуправляемые устройства, типа "роботы". Поиск выхода из лабиринта и т.д. А сейчас все плавно перетекло в то, что сегодня называют ИИ.

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

    Или же вместо хостинга можно взять какую-нибудь простенькую железяку типа Arduino, Raspberry Pi.

    Для затравки:
    https://www.quora.com/How-do-you-implement-Artific...
    Ответ написан
    Комментировать
  • PascalABC - Режим передвижения кисти без оставления следа?

    2ord
    @2ord
    Во времена Турбо Паскаля, помню, был такой режим отрисовки XOR, который при повторной отрисовке по тем же координатам рисовал пиксели либо стирал их. Это возможно когда изображение на холсте имеет лишь черный и белый цвета.
    То есть перед изменением координат надо "стереть" объект, передвинуться и тогда рисовать на новом месте.
    Надеюсь, помог.
    Ответ написан
    Комментировать
  • Спецификация Linux?

    2ord
    @2ord
    GNU/LInux по большей части POSIX-совместимые.
    Ответ написан
    Комментировать
  • Как распознать движущиеся объекты в видео?

    2ord
    @2ord
    Гуглить "video object tracking".
    По мне, так эта задача носит скорее исследовательский характер, нежели практический.
    Ответ написан
    Комментировать
  • Есть ли решение распознавания и подсветки текста на видео?

    2ord
    @2ord
    1. погуглить "video text detection"
    2. получить маркеры с координатами текста
    3. распознать текст при помощи OCR
    4. определить принадлежность к словарю
    5. пометить рамкой по координатам
    Ответ написан
  • Как организовать он-лайн получение информации от систем мониторинга?

    2ord
    @2ord
    Гуглить "windows performance counters" - это механизм для получения разных метрик с локальной машины.

    Если хочется наблюдать извне, то можно использовать связку Telegraf Client -> InfluxDB <- Grafana (GUI).
    flemmingriis.com/displaying-windows-performance-co...
    https://grafana.com/dashboards/1941
    Ответ написан
    Комментировать
  • Как создать иерархию классов?

    2ord
    @2ord
    Всего потребуется написать M×N трансформаций, где M - количество видов, а N - количество форматов.
    Вход: вид, сами данные, дополнительные параметры в зависимости от формата
    Выход: формат
    Операции: Построить
    Построить можно только зная из чего и в какой формат, то есть совсем абстрактно не получится.
    Ответ написан
    Комментировать
  • Как в Ruby on rails вызвать системную команду FFMPEG?

    2ord
    @2ord
    При условии что ffmpeg присутствует и верно заданы параметры в ключах, команда должна выполниться. После system можно проверить код выхода процесса при помощи $?.exitstatus
    Советую заняться отладкой кода.
    Ответ написан
    Комментировать
  • Как можно расшифровать QR код, представленный символами из Юникода?

    2ord
    @2ord
    Строку уникода можно отобразить в виде квадрата, разбив на несколько равных по длине подстрок разделителями CR LF. Таким образом, QR код можно вывести на экран для отладки. Затем перевести в формат изображения
    и декодировать средствами библиотек либо написать свой софт для декодирования.
    Ответ написан
    Комментировать
  • Какую СУБД выбрать для хранения вложенных комментариев?

    2ord
    @2ord
    Как вариант, ArangoDB. Она поддерживает SQL и может быть графовой или ключ-значение.
    Ответ написан
    Комментировать
  • Сервисы для распознования паспорта?

    2ord
    @2ord
    У ABBYY есть SDK. А вообще, лучше погуглить "распознавание паспортных данных".
    Ответ написан
    Комментировать
  • Обмен данными о парсинге между 2 базами данных mysql?

    2ord
    @2ord
    Результаты парсинга можно складывать в очередь, к которой могут подсоединяться воркеры по такой схеме:
    Parser -> MQ <-> workers <-> HTTP API (server) <---(internet)---- HTTP client -> DB
    Ответ написан
    Комментировать
  • Возможно ли получить уникальный идентификатор файла?

    2ord
    @2ord
    Полагаю, что если строить свою ИС (инф. сист.) поверх прослойки, работающей посредством FUSE, то все упростится.
    В своей нижележащей ФС можно назначать файлам UUID. Файл - это некий объект, с которым может быть ассоциирована такая служебная информация, как имя файла или URI, в общем виде, которые подвержены частым изменениям. Набор таких объектов хранить в некой СУБД (допустим, SQLite).
    При монтировании хранилища посредством FUSE в какую-нибудь директорию наружу будут видны как обычные файлы. При изменении имени файла меняется только служебная информация об объекте в хранилище. Хранилище может быть как локальное, так и удаленное. При удалении файла-документа в хранилище можно пометить объект как подлежащий утилизации или же просто удалению. При изменении версии файла-документа меняется содержимое объекта в хранилище. В служебной информации (meta data) можно также хранить хэш от содержимого.
    Ответ написан
    Комментировать
  • Как построить структуру контроллеров у однотипных страниц?

    2ord
    @2ord
    Можно сделать 30 контролеров, в каждом будет 2 метода (show, calc) и две страницы.
    Ни в коем случае так не делать!
    Можно хранить контент вопросов в виде шаблона Liquid (рендеринг на стороне сервера) или шаблона с рендерингом на стороне браузера (Riot.js, Vue.js, React.js, ...):

    В базе данных хранить записи модели QuizQuestion:
    • question (string)
    • annotation (string)
    • html_template (string)
    • calc_params (json?)


    Общий для всех вопросов шаблон (erb) - partial
    <h1 class="header"><%= quiz_question.question %></h1>
    <span class="annotation"><%= quiz_question.annotation %><span>
    <div class="content"><%= raw content %></div>
    <button>Показать/рассчитать</button>

    <% @quiz_questions.find_each do |quiz_question| %>
    <%
    content = Liquid::Template.parse(quiz_question.html_template)
    # content.render( 'name' => 'vasya', 'age' => 25 ) 
    %>
    <%= render partial: 'quiz_template', locals: {quiz_question: quiz_question, content: content} %>
    <% end %>
    Вместо raw безопаснее таки использовать sanitize, указав белый список разрешенных тегов.
    В контроллере при показе вопроса компилировать шаблон на основе имеющихся данных (calc_params) в целевой HTML.
    Как-то так.

    Для отображения на 1-й странице 30 вопросов использовать
    def index
      @quiz_questions = QuizQuestion.limit(30).offset(0)
    end
    Ответ написан
  • Как получить один файл из ZIP архива на s3 (boto3 + python)?

    2ord
    @2ord
    Был похожий вопрос:
    Можно ли извлечь файл из архива zip по SMB?
    Я думаю, суть ясна.

    А извлечь один-единственный файл можно при помощи Info-zip unzip таким образом при помощи ключа -p:
    unzip -p /mnt/s3/mybucket/myfile.zip SOMEFILE > SOMEFILE_content

    То есть всё это нехитрое дело можно завернуть в Bash и там перенаправлять вывод куда нужно.
    Ответ написан
    2 комментария