Возможно, стоит пояснить разницу между синхронизацией из thread/process-safe и синхронизацией с помощью Lock🤔
Наша задача — заставить разные процессы и потоки обращаться к базе данных (или любым другим ресурсам) последовательно. Чтобы не случилось так называемого race condition, то есть состояние гонки. Это когда разные потоки или процессы пытаются одновременно что-то сделать с одним и тем же ресурсом.
В этом случае нам нужна какая-то логика ограничения. Пока один процесс не завершил своё действие, другие не могут получить доступ к ресурсу.
Так вот, thread-safe и process-safe означает что отдельно взятые операции записи в БД гарантированно будут последовательны. Запросы из разных процессов или потоков выстроятся в очередь и не будут мешать друг другу. Лучше всего когда этот блок реализован на уровне БД в виде атомарных операций или ещё как-то.
Но зачем нам тогда еще дополнительный Lock?
Этот способ синхронизации используется когда процесс никак не укладывается в одно действие и должен сделать множество операций прежде чем дать доступ следующему. В этом случае процесс ставит некий глобальный Lock на ресурс и никто другой, даже получив законное право на доступ, не может ничего сделать. Все ждут пока этот Lock не будет снят.
Это решается на уровне приложения и правильность реализации полностью в вашей ответственности. Например, если забыли разблокировать или сделали перекрёстный Lock (Deadlock как на картинке), то всё зависнет в бесконечном ожидании.
#basic
Плагин для QGIS с помощью ChatGPT – Wurman Dots
Создавать точки Вурмана в QGIS теперь можно с помощью плагина Wurman Dots. Пока что инструмент позволяет только визуализировать плотность объектов точечного слоя. Но планируется расширить его возможности и для других сценариев.
Примечательно, что код скрипта, который лёг в основу плагина, полностью был написан ChatGPT. То есть его можно было запустить в консоли Python QGIS.
На эту работу потребовалась несколько вечеров и добрая пара десятков версий кода, который шлифовался промптами. По итогу парочка ошибок осталась, их исправили коллеги из NextGIS и превратили скрипт в полноценный плагин.
Возможно, специалисты Python быстрее бы разработали этот плагин и без AI, но я не программист :)
Wurman Dots уже доступен в QGIS. Узнать больше о плагине можно в материале. Работа продолжается.
#imap
🪐 NASA’s Interstellar Mapping and Acceleration Probe (IMAP), set to launch soon, will study the boundary where the solar wind from our Sun meets interstellar space—the region Voyager 1 and Voyager 2 have just crossed. By learning how particles and energy behave at this distant frontier, IMAP is paving the way for future interstellar journeys, helping scientists prepare for the challenges of sending spacecraft far beyond the influence of the Sun to new worlds around stars like Alpha Centauri. ✨
#interstellar⚡#travel⚡#IMAP⚡#heliosphere⚡#nasa⚡#galaxy⚡#stars⚡#astronomy⚡#universe⚡#cosmos⚡#space
👉subscribe Universe Mysteries
👉more Channels
#rust#caldav#carddav#imap#jmap#mail#pop3#rust#server#smtp#webdav
Stalwart is a secure, fast, and scalable open-source mail and collaboration server supporting all major email protocols (IMAP, SMTP, JMAP, POP3) plus calendar, contacts, and file sharing. It offers strong built-in spam and phishing protection, advanced message authentication (DMARC, DKIM, SPF), and flexible storage options. Designed for high availability and fault tolerance, it can scale from small setups to thousands of nodes without complex proxies. Its web-based admin interface and automation tools simplify management. Using Stalwart helps you control your email securely, improve collaboration, and reduce reliance on big tech, making your communication more private and reliable.
https://github.com/stalwartlabs/stalwart