Задать вопрос
  • Как работают real time приложения в Java?

    Денис Загаевский, товарисчь, я пытался донести мысль, что RT это не только java/C/C# и JMS со товарищи. Есть много гитик. Идите.
  • Как работают real time приложения в Java?

    Денис Загаевский, интересно-интересно, что же по вашему реалтайм?! И почему нельзя использовать очереди? А в режиме broarcast можно? А латенси тут роль играет? А какая она для реалтайм нужна? А чем пыхпых плох? Он лучше питона или луа? Или только Си можно? А контроллер с интерпретатором МЭК и 100милисекундным циклом это тру? Или на 10 милисекунд разогнать нужно? А реалтайм по rs-485 гонять можно? Или профибас нужен? А очереди там есть? Или ниже нифинибанда не опускаться? А ничего, что там интерпретатор? Ух ты, он еще и автоматикой газотурбины успевает управлять!?
    Это я как разработчик и системный программист со стажем в 15 лет в этом вот реалтайме, написав драйверов и портировав этих вот систем с косой десяток! Блин, как же за#%^## люди, ничего не знающие, но любящие взбзднуть (9 букв и одна гласная, да, слово-фантастика, еще поискать такое).
  • Как разверуть приложение из трея из консоли?

    leahch
    @leahch Куратор тега Linux
    А нет такого сигнала! Точнее, можно, но искать нужно не в процессах, а в dbus например, и то, если приложение поддерживает оное.
  • Как работают real time приложения в Java?

    Ну, можно и в рамках томката запустить воркеров, но лучше этого не делать, так как томкат и иже с ним типа jetty - контейнеры сервлетов и нацелены на работу с web.

    В этом случае либо используют легковесные фреймворки типа spring, либо просто пишут воркеров типа "do ... while", которые работают как обычные процессы в системе.
    Да, при этом никто не запрещает в в web-приложении подключиться к тому же самому rabbitMQ или удаленному JEE, или какй-то левой очереди сообщений. Или использовать акторы https://akka.io иил еще что для передачи сообщений.

    Тут единого подхода нет, и наверное не будет. Путей решения любой задачи сотни, благо разных библиотек и фреймворков сделано столько, что иногда главной задачей становится выбор того самого фреймворка, которому вся команда готова положить жизнь года на 2-3 :-)
  • Как запретить одновременный доступ к файлу/ячейке БД?

    klim76, Нет, как раз Сергей Горностаев прав, оптимистическая блокировка не даст залить данные, если версия не совпадет. Другими словами нужно просто добавить автоинкрементное поле version (или программно делать инкремент) и во всех запросах на update указывать это поле. Update не будет проходить, если мы пытаемся обновить запись с просроченной версией.
  • Как в PostgreSQL выбрать значения значения которые есть в массиве, но нет в БД?

    Вот даже говорить ничего не буду, удачи!
    explain (analyze) select i from unnest(array[1,2,3,4,5]) as i where exists (select 1 from v_vars where var_order = i);
                                                      QUERY PLAN
    ---------------------------------------------------------------------------------------------------------------
     Hash Semi Join  (cost=3.69..5.88 rows=75 width=4) (actual time=0.091..0.094 rows=5 loops=1)
       Hash Cond: ((i.i)::numeric = v_vars.var_order)
       ->  Function Scan on unnest i  (cost=0.00..1.00 rows=100 width=4) (actual time=0.009..0.009 rows=5 loops=1)
       ->  Hash  (cost=2.75..2.75 rows=75 width=5) (actual time=0.052..0.052 rows=75 loops=1)
             Buckets: 1024  Batches: 1  Memory Usage: 11kB
             ->  Seq Scan on v_vars  (cost=0.00..2.75 rows=75 width=5) (actual time=0.011..0.026 rows=75 loops=1)
     Planning time: 0.566 ms
     Execution time: 0.135 ms
    (8 строк)

    И у меня.
    explain (analyze) select var_order from v_vars where var_order in (1,2,3,4,5);
                                               QUERY PLAN
    ------------------------------------------------------------------------------------------------
     Seq Scan on v_vars  (cost=0.00..3.22 rows=5 width=5) (actual time=0.020..0.067 rows=5 loops=1)
       Filter: (var_order = ANY ('{1,2,3,4,5}'::numeric[]))
       Rows Removed by Filter: 70
     Planning time: 0.194 ms
     Execution time: 0.086 ms
    (5 строк)
  • Как в PostgreSQL выбрать значения значения которые есть в массиве, но нет в БД?

    Melkij, как бы сказать, 7 лет, это треть от моего стажа, большинство из которого прошло под знаком работы с базами, вплоть до помощи в портациях этих баз на разные платформы и архитектуры. Это не боязнь, а горький опыт ошибок и разрчарований от неправильных подходов к их использованию. И здесь разговаривать и дискутировать можно бесконечно. Но поверьте, не просите от базы лишнего, и она будет ласкова и послушна, как котенок.
    Конкретно по данному запросу, представьте, что вы купили оракл, или сайбейс/mssql, или еще какую подобную хреновину, за пару сотен убитых енотов. И вот в какой-то момент вы видите, что подобные запросы составляют 80-90% всей нагрузки. Приходите к инвестору и просите в качестве развития еще один сервер с базой... А вот еще один вычислительный сервер вам обойдется в 10к!!!!
    Ну и в качестве и заказчика и менеджера, я бы такой код не пропустил. Аргументация таже самая, база дорогой ресурс, даже если сама база бесплатная и нефиг его использовать как калькулятор. Мы не можем за 5 минут поставить новый сервер и кластеризовать базу. Я уж молчу про хранимки и триггеры, и как они блокируют все и вся прибездумном использовании. Использование любой хранимки и триггера мне нужно так обосновать, чтобы и я и остальная команда была полностью уверена во всех аспектах его надежности. Я уж не говорю про дополнительные ресурсы на их отладку, поддержку и сопровождение.
    Да и похоже, за эти 7 лет вы не работали в сколь нибудь большой команде разработчиков...
  • Как в PostgreSQL выбрать значения значения которые есть в массиве, но нет в БД?

    Melkij, у меня позиция такая, если можно вычисления делать программно, вне sql, хранимок и транзакций, то его и нужно делать именно программно. Во первых, это легче и переносимее, во вторых, программный код гораздо легче кластеризовать, В третьих, мы не засоряем базу ненужными вычислениями, тем более с непрогнозируемой нагрузкой.
  • Как в PostgreSQL выбрать значения значения которые есть в массиве, но нет в БД?

    beduin01, Если у нас есть ограниченный набор ID
    то одним запросом их вытащить примерно так
    SELECT  ID FROM    table WHERE   ID IN (1,2,3,4,5,6,7)
  • Как в PostgreSQL выбрать значения значения которые есть в массиве, но нет в БД?

    Melkij, у вас получился просто цикл с подзапросом, другими словами, вместо того, чтобы просто последовательно одним запросом выбрать все ID и сравнить их с заданным массивом, вы на каждый элемент делаете отдельный, пусть и короткий, запрос. Ну и данные будут гоняться туда и обратно каждый раз.

    А большой массив получить легко, например, у меня есть набор файлов на диске (пусть это будут изображения товаров) и мне его нужно сопоставить с записями в базе, после этого почистить файлы. Итого, в базе 900M товаров, к каждому товару по 4-5 картинки - вот вам и миллиард.

    Да и программно можно массивы подгружать кучками, если их сортирнуть, если в память не влезают.
  • Как в PostgreSQL выбрать значения значения которые есть в массиве, но нет в БД?

    Модуль timeit запускает строку несколько раз, и выбирает лучший результат, по умолчанию запускает 10 раз.

    Вот без этого модуля на голом интерпретаторе
    MacBook-Pro:~ leah$ time python -c 'set(range(1,1000022)) - set(range(1,1000000))'
    
    real	0m0.306s
    user	0m0.186s
    sys	0m0.092s
    MacBook-Pro:~ leah$

    PS. На питоне я не настаиваю, тоже самое можно на любом языке программирования, где-то 1-2 строки, где-то 20.
  • Как в PostgreSQL выбрать значения значения которые есть в массиве, но нет в БД?

    Я бы не назвал этот запрос оптимальным, если у нас мульен этих ID. Такие вещи лучше делать программно.
  • Python TCP server threading или multiprocessing?

    Пишите сразу на asycio - потом переделать будет гораздо сложнее, точнее, придется все полностью переписывать. Так как асинхронный код основан на колбеках, а вам многопоточный будет прямой, как рельса.
  • Почему не работает sql?

    Сергей БАрд, Значит я не прав. А у вас точно должны быть обратные кавычки?! на обыкновенные не пробовали поменять?
  • Почему не работает sql?

    Попробуйте звездочку (*) перед listUpdates поставить
    cursor.executemany("""
    UPDATE `table1` 
    SET `%s` = '%s' 
    WHERE `id` = '%s' 
    AND `url` = '%s'
    """, *listUpdates)
  • В чем основные отличия mySQL от Postgre?

    Вот смотрите, даже "финансы" бывают разные, одно дело - зафиксировать факт оплаты, здесь и мускул неплохо справится. Другое - держать в базе кошельки с приходом/расходом и фиксировать списание услуг с возможностью отката этих самых списаний, сторно, дебет, кредит и всей этой бухгалтерии, тут постгрес или что-то из энтерпрайза типа сайбейса или оракла. Ибо даже за копейку не в ту сторону придется отвечать и перед налоговой и кастомером, и не понятно, кто из них чёрт в табакерке.
  • Как передавать данные на сервер без статического IP?

    leahch
    @leahch Куратор тега Linux
    Arti Markelov, да можно, ставите nginx и в режиме обратного проки кидаете все запросы на адрес удаленного компа по vpn.
  • В чем основные отличия mySQL от Postgre?

    И да, транзакция это не только запись в базу, это еще и блокировки, и, самое важное, ее откат. Другими словами, говоря транзакция, я подразумеваю классическое ее понимание, а именно запись непротиворечивой информации в базу данных в конкурентном режиме.
  • В чем основные отличия mySQL от Postgre?

    Обычно говорят, что мне нужно записать информацию в столько-то таблиц по таким-то условиям и если что-то пойдет не так, то вот эта информация должна вернуться в исходное состояние. Вы где нибудь в этой фразе видите тип базы или тип транзакции? И мускул тоже умеет откатить транзакцию, ипостгрес, а вот редис не может (но это не беда, если знать как).