LINUX.ORG.RU

demon 2019

 


0

1

на чем бы вы начали писать демона который:

1) демонизируется
2) конектится по tcp к железке и отправляет/принимает от нее байтики по определенному протоколу
3) принятые данные порождают события которые обрабатываются
4) взаимодействует с SQL (postgresql)

особых каких то нагрузок нет, по скорости условно и bash подойдет.

★★

Последнее исправление: quester (всего исправлений: 2)

На Си(++) это делается буквально в сотню строк. Ну, без парсера команд разумеется.

Deleted
()
Ответ на: комментарий от Deleted

ну не на сотню, но возможно на нем и напишу, но может кто что-то другое предложит. сейчас тут чуваки подобное на erlang пишут. у erlang интересная и правильная идея в виде событийно ориентированного программирования, но по факту код очень мусорный получается.

quester ★★
() автор топика
Ответ на: комментарий от quester

> у erlang интересная и правильная идея в виде событийно ориентированного программирования

Для C++ это самое событийно-ориентированное программирование уже давно доступно в виде разнообразных библиотек.

По самому вопросу: каким нативным языком владеете, на таком и напишите, разве что за исключением чистого C. А так C++, Rust, Go, D подойдут запросто.

eao197 ★★★★★
()

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

erlang

Это как раз маргинальный, даже смотреть не стоит.

slovazap ★★★★★
()

На любом высокоуровневом языке, который хорошо знаешь. Я бы написал прототип на Ruby, убедился бы, что действительно «особых нагрузок нет», и если это верно, так на Ruby бы и дописал.

Deleted
()

А что ты знаешь?

При отсутствии требований производительности очевидный вариант — Python. А по-хорошему я бы на Go писал.

WitcherGeralt ★★
()
Ответ на: комментарий от eao197

Для C++ это самое событийно-ориентированное программирование уже давно доступно в виде разнообразных библиотек.

каких например?

quester ★★
() автор топика
Ответ на: комментарий от slovazap

Это как раз маргинальный, даже смотреть не стоит.

из функциональных мне кажется это самое живое и достойное

quester ★★
() автор топика
Ответ на: комментарий от quester

каких например?

Ну, если совсем не знаете, то тогда:

Boost.Signals2, libsigc++.

Механизм Signal-Slot из Qt в эту же область.

Акторные фреймворки для C++, если хочется совсем по-взрослому: SObjectizer, C++ Actor Framework, QP/C++.

eao197 ★★★★★
()
Ответ на: комментарий от slovazap

сам ты маргинальный, это ж не хаскель какой

anonymous
()

особых каких то нагрузок нет, по скорости условно и bash подойдет.

Для такой задачи можно для развлечения сделать и несколько реализаций для сравнения.

madcore ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Python. А по-хорошему я бы на Go писал.

Python умеет демонизироваться? Python немного знаю но писать на нем не хочу. Go немного знаю, но для реальных задач не использовал и не уверен что не столкнусь с какой нибудь фигней над которой буду биться так долго что пожалею что не набросал на c++

quester ★★
() автор топика
Ответ на: комментарий от eao197

Акторные фреймворки для C++

спасибо интересно!

quester ★★
() автор топика
Ответ на: комментарий от madcore

Для такой задачи можно для развлечения сделать и несколько реализаций для сравнения.

хочется и новое что-то попробовать и не пожалеть об этом)

quester ★★
() автор топика
Ответ на: комментарий от quester

Python умеет демонизироваться?

Всё что угодно может демонизироваться, дабл форк и вперёд. К тому же никто не мешает написать инит или юнит под сисмуде.

с какой нибудь фигней над которой буду биться так долго что пожалею что не набросал на c++

Например? Ничего такого в голову не приходит, Go достаточно прост и достаточно выразителен, чтобы не вызывать проблем сам по себе. У тебя же задача не rocket science, ничего необычного не предвидится.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

ну справедливости ради там ещё немного теории помимо даблфорка, типа закрытия лишних дескрипторов и прочих мелочей, но от языка не зависит наверно

anonymous
()
Ответ на: комментарий от anonymous

В питоне классический вариант выглядит примерно так: http://devres.zoomquiet.top/data/20150702154058/index.html

А вот более юзабельный но громоздкий вариант: https://pypi.org/project/python-daemon/

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

WitcherGeralt ★★
()
Ответ на: комментарий от ox55ff

У меня на гитхабе этих демонов - вагон и маленькая тележка.

Да, все они на С написаны, ясен пень. Только postgre мне избыточен, при необходимости я sqlite использую.

// тот, кого ты кастовал.

anonymous
()
Ответ на: комментарий от vvn_black

Покажи мне человека, который активно программирует, работает с железом и системными сервисами и использует поцтеризованный дистрибутив по собственному желанию!

Если найдешь, то наверняка этот человек давно уже не дружит со своей головой!

anonymous
()
Ответ на: комментарий от WitcherGeralt

Например? Ничего такого в голову не приходит, Go достаточно прост и достаточно выразителен, чтобы не вызывать проблем сам по себе.

например какие-то теоретические проблемы с засыпанием тредов на пайпах в golang (допускаю но не уверен)

quester ★★
() автор топика

На любом языке, который знаешь. Да хоть хипстерский Go или Rust.

Meyer ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.