Lazarus и консоль - стоит ли?
Модератор: Модераторы
Lazarus и консоль - стоит ли?
У меня программа, по сути парсит сайты и после всяких обработок записывает всякую ерунду в БД постгрес. Также Читает данные из БД всячески их обрабатывает и снова записывает в БД. Для вывода у меня поле мемо, в него я пишу логи при ловле ошибок и чисто ход работы, чтобы убедиться, что программа не зависла. Пока еще всё только начинается, но влруг я задумался.
А нужен ли мне gui для этих целей?
Какие минусы будут если начать использовать лазарус как консольные приложения?
Какой режим проекта выбрать (программа, простая программа, консольное приложение)?
зы
сам в консоли не писал, любым советам буду рад.
А нужен ли мне gui для этих целей?
Какие минусы будут если начать использовать лазарус как консольные приложения?
Какой режим проекта выбрать (программа, простая программа, консольное приложение)?
зы
сам в консоли не писал, любым советам буду рад.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Если только для просмотра и управления. Если чисто демон, то можно и как консольное использовать . Но лучше действительно создать демона (службу). http://freepascal.ru/article/lazarus/20090403120204/
- alexs
- долгожитель
- Сообщения: 4069
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
Статья немного устарела. Я сейчас даже таймеры не использую в своих демонах. Просто ставлю между итерациями простейший Sleep.
А так - демоны на FPC\Lazarus очень хорошо получается писать. Особенно мне понравилось это дело после перехода в линухе на SystemD. Вообще красота стала.
А так - демоны на FPC\Lazarus очень хорошо получается писать. Особенно мне понравилось это дело после перехода в линухе на SystemD. Вообще красота стала.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
Тем более.
а какие преимущества у демона перед консольной программой? Мои программы бывают виснут и ылетают, мне кажется более логичным всё таки запуск в консоли, чтобы можно было увидеть ход работы. Нет?
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
azsx, прежде всего, то, что демон написан именно для работы в фоне операционной системы, как (почти) ее часть, а любая консолька это все же отдельная прога требующая открытия отдельного окна. Пусть иногда ты его и не видишь. Да и работа с ней по преимуществу идет в режиме открыл, сделал, закрыл. Ну а насчет вылетов и зависаний... можно ведь и анимацию иконки в трее сделать, текстовый лог и всплывающие сообщения.
Да и зная майкрософт есть ненулевой шанс, что когда-нибудь консоль вырежут совсем. Правда, после этого винду можно будет стирать, так как некоторый инструментарий админов работает только через консоль. И я что-то не видел программы с подобными возможностями в графическом виде.
Так же у консоли в винде есть одна неприятная особенность -- она может внезапно закрыться, если случайно программа завершится... и тогда весь ее выхлоп будет потерян (например, если она запущена не из сеанса консоли, а ярлыком).
Да и зная майкрософт есть ненулевой шанс, что когда-нибудь консоль вырежут совсем. Правда, после этого винду можно будет стирать, так как некоторый инструментарий админов работает только через консоль. И я что-то не видел программы с подобными возможностями в графическом виде.
Так же у консоли в винде есть одна неприятная особенность -- она может внезапно закрыться, если случайно программа завершится... и тогда весь ее выхлоп будет потерян (например, если она запущена не из сеанса консоли, а ярлыком).
Раз даже демонах всё хорошо, то в консольной программе всё будет отлично.
оффтопик
Спасибо, почитал внимательно про службы / демоны. Хотя некоторые плюсы для меня очевидны, всё таки это не мой случай. Хотя это не правда, но предположим, что освоить написание консольных программ и написание служб для меня будет одинаковой задачей. Минусы для меня лично.
1. Я не умею нормально программировать многопоточные приложения. Как я начинаю делать потоки, так сразу начинаю жалеть, что продавцом фруктов не пошел, работа проще и интереснее. У меня возникают плавающие ошибки, которые я ищу крайне плохо.
По этой причине я пишу программу линейно и когда надо несколько потоков - просто запускаю несколько программ. Сегодня у меня одновременно запущно 30 гуи программ, по моему мнению на моем пк можно довести до сотни. Ну и в мире есть еще один комп, на нем 30, также можно увеличить.
---
Будет несколько странным запустить на компьютере 100 служб сразу!
---
2. Моя задача нужна целиком для меня, то есть мне проще отследить, что юзер залогинен на винде и никсе и программы работают, чем волноваться, что кто-то разлогинился и все мои программы выключились.
оффтопик
Спасибо, почитал внимательно про службы / демоны. Хотя некоторые плюсы для меня очевидны, всё таки это не мой случай. Хотя это не правда, но предположим, что освоить написание консольных программ и написание служб для меня будет одинаковой задачей. Минусы для меня лично.
1. Я не умею нормально программировать многопоточные приложения. Как я начинаю делать потоки, так сразу начинаю жалеть, что продавцом фруктов не пошел, работа проще и интереснее. У меня возникают плавающие ошибки, которые я ищу крайне плохо.
По этой причине я пишу программу линейно и когда надо несколько потоков - просто запускаю несколько программ. Сегодня у меня одновременно запущно 30 гуи программ, по моему мнению на моем пк можно довести до сотни. Ну и в мире есть еще один комп, на нем 30, также можно увеличить.
---
Будет несколько странным запустить на компьютере 100 служб сразу!
---
2. Моя задача нужна целиком для меня, то есть мне проще отследить, что юзер залогинен на винде и никсе и программы работают, чем волноваться, что кто-то разлогинился и все мои программы выключились.
azsx писал(а):1. Я не умею нормально программировать многопоточные приложения.
Скажу больше, что скорей всего, многопоточность тебе будет вредна, вместо неё тебе нужно использовать многопроцессность
Разницы между консольными и сервисами, с точки зрения разработчика - нет.
Подразумевается, что консольные программы, могут требовать от пользователя ввод некой информации (чего сервис себе позволить не может). Но считается правильным, что консольная программа, должна исполняться и без участия пользователя.
(Например: в svn-е есть режим "не-интерактив", в котором SVN не будет запрашивать от пользователя подтверждения тех или иных действий, или требовать пароль).
По сути - любая консольная программа должна уметь быть сервисом.
Например - Apache сервер (httpd) - его можно запустить как консольную программу. А можно запустить как и сервис (причём тот же исполняемый файл).
Нужно заметить, что хорошо написанный сервис, должен уметь работать и как консольная программа (даже если он не будет использоваться как консольная). Просто с точки зрения удобства отладки!
Разница между консольнями и сервисами, всплывает на уровне администирования. Где сервисы запускаются системой и обычно имеют права, выше чем простой смертный пользователь, который запустит консольную программу.
Скажу больше, что скорей всего, многопоточность тебе будет вредна, вместо неё тебе нужно использовать многопроцессность
thread знаю. Многопроцессорность не знаю.
Нужно заметить, что хорошо написанный сервис, должен уметь работать и как консольная программа
я учту это на будущее, но пока написать бы хоть какие-то работающие консольные.
azsx писал(а):thread знаю. Многопроцессорность не знаю.
это просто. одна программа запускает другую
я не понимаю.
azsx
Извините, что вмешиваюсь в Ваш разговор, но... По моему Вам надо Джеффри РИХТЕРА прочитать "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows" (не всего, а то что касается процессов и потоков) (хотя в книге упор делается на С, но как Windows работает понятно. Конечно Паскаль более "приспособлен" для работы с потоками (класс TTheard), и почти нет возможности лезть в процессы, но суть надо знать) (Найдите время и прочтите, мне после этого стало более понятно. ИМХО)
p.s. скалогрыз имел в виду не "мнегопроцессорность" а "многопроцессность".
Извините, что вмешиваюсь в Ваш разговор, но... По моему Вам надо Джеффри РИХТЕРА прочитать "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows" (не всего, а то что касается процессов и потоков) (хотя в книге упор делается на С, но как Windows работает понятно. Конечно Паскаль более "приспособлен" для работы с потоками (класс TTheard), и почти нет возможности лезть в процессы, но суть надо знать) (Найдите время и прочтите, мне после этого стало более понятно. ИМХО)
p.s. скалогрыз имел в виду не "мнегопроцессорность" а "многопроцессность".
vvvch спасибо,скачал. Скажу откровенно я не оСилятор и большой вопрос пойму ли чо там написано. Но попытаюсь!
