• Как на C#(Windows Forms) можно масштабировать векторный (в моем случае .eps) файл?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Комментировать
  • Как получить часть строки через MySQL запрос?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если порядок всегда один и тот же, то можно через SUBSTRING_INDEX(). Разбить по кавычкам и взять нужные подстроки.
    Начиная с версии 8.0 можно через REGEXP_SUBSTR().
    Но, по хорошему, надо парсить строку до занесения в базу и записывать уже чистые значения.
    Ответ написан
    1 комментарий
  • Как правильно работать с большим количеством данных?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    70 Гб - это вообще не гигантский объём. Люди оперируют террабайтами и даже больше. Главная проблема не в объёме таблицы, а в том, чтобы не читать её целиком (full scan) при выполнении запроса. И вот тут главная фигня: одно только условие like '%слово%' в любом случае требует просмотреть каждую строку, значит, будет full scan. Обычные индексы по этому полю строить бесполезно. Есть всякие полнотекстовые, но в общем случае их тоже надо правильно готовить, чтобы работало приемлемо. Решение может зависеть от задачи. Например, если это ключевые слова в виде текстовой строки с пробелами или иными разделителями, то их можно вынести в отдельную таблицу отдельными строками и проиндексировать там, полнотекстовый поиск тут будет излишним.
    Ответ написан
    1 комментарий
  • Реально ли запустить c# приложение на Ubuntu?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Если оно написано под .NET Framework и использует Winforms - можно запустить на mono.
    Если оно написано под .NET Framework и оно консольное - можно запустить на mono или мигрировать на .NET Core одной консольной командой.
    Если оно написано под .NET Framework и использует WPF, то можно переписать на Avalonia и запускать под .NET Core.

    Все три способа будут работать только в том случае, если вы жёстко не привязались к технологиям винды.
    Лично я рекомендую перейти на .NET Core и делать кроссплатформенное приложение.

    PS: dotnet try-convert
    Ответ написан
    1 комментарий
  • Почему в tarantool\redis хранимые процедуры если не на SQL, то на Lua?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Потому что интерпретатор Lua очень маленький и нетребовательный к ресурсам, но при этом обладает JIT-компилятором и высокой производительностью, а также встраивается намного проще, чем интерпретатор любого другого языка.
    Ответ написан
    9 комментариев
  • Почему нет функции удалить свой вопрос?

    SagePtr
    @SagePtr
    Еда - это святое
    Потому что люди тратили своё время, отвечали на вопрос, а вы собираетесь его взять и удалить?

    Вопросы-ответы полезны не только сиюминутно, но и на будущее, если у кого-нибудь возникнет похожий вопрос, и он найдёт его вместе с ответами поисковиком.
    Ответ написан
    Комментировать
  • Как ускорить сложный запрос mysql?

    @dimuska139
    Backend developer
    С помощью EXPLAIN проанализируй запрос и попробуй построить индексы
    Ответ написан
    8 комментариев
  • Как передавать аргументы к внешнему файлу в Docker?

    @zohan1993
    devops
    Если определить /usr/local/bin/trid как ENTRYPOINT, то CMD будет предоставлен в качестве параметров для ENTRYPOINT.
    При запуске контейнера можно переопределять CMD, в нашем случае указывать путь к файлу для анализа внутри контейнера.
    Поэтому нужно смонтировать внешнюю папку с файлами в контейнер.

    # Dockerfile
    ---
    FROM alpine:3.7
    ADD ./trid /usr/local/bin
    ENTRYPOINT ["/usr/local/bin/trid"]
    ---
    
    docker build -t trid:v1 .


    # Files for analysis on host system
    /var/lib/docker_data/files/file1.txt
    /var/lib/docker_data/files/file2.txt
    /var/lib/docker_data/files/file3.txt


    # Running container for analysis file1.txt
    docker run --rm -v /var/lib/docker_data/files:/data:ro --name analysis trid:v1 "/data/file1.txt"
    Ответ написан
    Комментировать
  • Какую технологию выбрать для работы с базой данных?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Огромные таблицы однотипных и упорядоченных по времени данных - это моветон. Партиционирование таблиц по дням/месяцам и схлопывание старых данных в агрегаты должны помочь - именно так, например, происходит в БД Заббикса.
    Ответ написан
    Комментировать
  • Какую технологию выбрать для работы с базой данных?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Вряд ли скажут точно.
    Скорость запроса зависит от всего. От размера конкретной таблица, от того какие данные, причем важно и тип и их схожесть, чтобы было проще индексы строить.
    И от скорости ssd
    Но я бы сказал, что 100-300 гб это далеко не бигдата. Это просто большая база, с которой справится и mysql и postgres, тем более что взяв сервер с 128гб оперативки, почти треть можно в памяти кешировать.

    В вашем случае - без перфоманс тестов никто не скажет даже примерный порядок.
    P.S. И да, если ваши данные в основном числа (таймстамп и числовые показатели, то time series data bases могут с этим справиться лучше). С другой стороны они не так популярны и возможно не так развиты.
    Ответ написан
    Комментировать
  • Какую технологию выбрать для работы с базой данных?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Если у вас большой объем показаний датчиков с временными метками - то стоит присмотреться к специализированным БД
    Ответ написан
    Комментировать
  • Асинхронная работа ZipArchive (::addFromString) теряет файлы, как победить?

    s5656
    @s5656
    Ну давайте обратимся к документации и попробуем понять в какой момент происходят изменения в конечном файле:

    ZipArchive::close — Close opened or created archive and save changes. This method is automatically called at the end of the script.

    То есть либо при вызове ZipArchive::close, либо в конце скрипта (так как автоматически вызывается ZipArchive::close).

    Сам по себе ZipArchive — синхронный.
    Если в одном потоке, то вы создаете и редактируете один архив, через один объект ZipArchive и когда вызываете close — все сохраняется в файл, на диск.
    Если вы работаете в нескольких потоках, то у вас создается несколько ZipArchive, которые друг о друге ничего не знают и когда вы вызываете close — каждый из них пытается сохранить свои изменения и здесь уже кто последний тот и папа сохранил свою версию.

    Нужно либо как-то передавать экземпляр ZipArchive между вашими потоками, либо писать свою (или найти готовую) библиотеку для асинхронной работы с zip архивами.

    Как более простой вариант — делать работу с файлами асинхронно (во временной директории?), а затем их архивировать через тот же zip (консольную утилиту).
    Ответ написан
    2 комментария
  • Нужна программа для сбора и визуализаци статистики. Есть у кого на примете такая?

    @dmshar
    Чем MS Excel не угодил? Простая, дает возможности, которые вы просили, отлично строит картинки и графики. Что значит "удобно" просматривать графики я правда не понял, но мои графики и картинки и рисовались и просматривались всегда отлично. Если скажете что не так - будем думать дальше.
    Ответ написан
    6 комментариев
  • Почему возникает ошибка при deploy heroku?

    zb_venom
    @zb_venom
    Жизнерадостный чебурек
    package.json не содержит данных об express.js
    Примерно так:
    "dependencies": {
        "express": "^4.17.1",
      },
    Ответ написан
    1 комментарий
  • Где можно использовать горутины в Go?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Самый простой пример - это HTTP сервер.
    Когда к вам приходит HTTP запрос - создаётся горутина и каждый запрос спокойно обрабатывается, никто никого не ждёт. Т.е. сервер может обрабатывать параллельно несколько запросов как раз за счёт горутин.

    Фактически, почти во всех сетевых сервисах есть смысл использовать горутины для распараллеливания обработки запросов (кроме epoll, kqueue и т.п.)

    Еще хороший пример.
    Вам нужно сделать парсер Авито :)) или индесатор сайтов.
    Т.е. задача сводится к тому, что нужно будет постоянно качать страницы с сайтов.
    Если вы будете качать одну страницу за другой - вы будете очень долго качать.
    А так вы можете сделать пул из нескольких горутин (как минимум по 1 на поток процессора) и получите параллельное скачивание страниц.

    Для ускорения работы вычислений (параллельные вычисления) есть смысл использовать горутины только по 1 на поток процессора). Т.е. в случаях, когда у вас огромный объём данных и нужно максимально ускорить его обработку. Например у вас файл 100Гб, и 8 ядер в процессоре - вы можете разбить файл на 8 частей и параллельно эти части обработать (в самом простом варианте, в реальной жизни нужно будет просто по частям считывать новые данные и скармливать свободной горутине)

    Еще когда нужно сделать чтобы какая нибудь задача выполнялась в "фоне".
    Например периодическая очистка кеша/устаревший записей в базе.

    Реальных примеров намного больше :)
    В целом их есть смысл использовать там, где нужно параллельное выполнение какой либо задачи или разных задач параллельно :)
    Ответ написан
    2 комментария
  • Как работает шифрование и подпись файлов?

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

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

    Пользователь добавляет все центры сертификации которым он доверяет в "Доверенные" и сразу появляется доверие ко всем сертификатам выданным этими центрами.

    и в чем в целом разница между подписью и шифрованием файла,
    А в чем разница между жирафом и зеленым?
    Вот в этом же разница и между подписью и шифрованием.
    Ответ написан
    Комментировать
  • Как работает шифрование и подпись файлов?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    А что, в гугле забанили?

    Корневой сертификат нужен для того, чтобы проходила проверка валидности сертификата. Ты выпускаешь себе сертификат - но доверия к нему нуль. Ты должен либо каким-то образом убедить/заставить всех тех, кто будет читать твою почту например поставить себе этот сертификат в доверенные (это в энтерпрайзе просто - сунул в политику и всем разлетелось).
    В этом и смысл выпуска сертификата в CA с мировым признанием - хотя бы в LE - чтобы проходила проверка валидности без танцев с корневым сертификатом.
    Подпись не изменяет содержимое файла - его можно будет прочитать. Подпись гарантирует, что файл в процессе доставки не был изменен.
    Шифрование изменяет файл - его нельзя будет прочитать, но злонамеренный чел может его модифицировать - и его нельзя будет расшифровать.
    Подпись шифрованного файла гартантирует, что шифрованный файл не был изменен и он нормально расшифруется.
    Ответ написан
    4 комментария
  • Как сохранить 500 млн документов в Mysql или Postgresql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    500 млн документов в Mysql или Postgresql... Мне нужно их индексировать через Sphinx

    However, Sphinx does not depend on nor require any specific database to function.
    Если у вас не стоит задача работать с УЖЕ СУЩЕСТВУЮЩЕЙ базой, база сфинксу как таковая не нужна, у него свои индексы и свой движок, хотя и с базами она тоже умеет.

    PS: sphinxsearch.com/forum/view.html?id=11964
    Ответ написан
    Комментировать
  • Django & PostgreSQL MemoryError + не правильная работа скрипта?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Как тут уже правильно заметили, не надо ловить все Exception без разбору и даже не выводить никакой ошибки. Ничего хорошего от этого антипаттерна не получится.

    Как минимум следует начать хотя бы с такого:

    try:
      ...
    except Exception as e:
      print (e)


    Сейчас же, возможно, случается Exception, но мы этого даже не знаем.

    Далее, не стоит использовать ORM вперемешку с обычными запросами. Это тоже источник потенциальных проблем, ведь ORM может кэшировать данные, в том числе ещё не сохранённые. Возможно, до вызова save случился Exception, данные в кэше отличаются от данных в базе, но при прямом запросе в базу мы получим не то же самое, что получили бы из кэша.

    Вот такие мелочи могут создавать проблемы, которые при этом вообще нигде даже не отражается. И это ещё повезло, что эффект такой заметный. А если бы эффект проявлялся в одном случае из тысячи? Как бы его потом ловить и что отвечать пользователям, с которых списали лишних денег?
    Ответ написан
    Комментировать
  • Django & PostgreSQL MemoryError + не правильная работа скрипта?

    @Norkotik
    Реализация понравилась
    try:
    Вся логика
    except:
    pass
    Если эту гомосятину убрать, то смог бы понять где ошибся в логике, а так чему удивляться?
    Ответ написан
    Комментировать