169 похожих чатов

Я, честно говоря, потерял дар речи и немного шокирован. Нет ли

здесь программистов на Perl?
Не пользователи pm, настоящие программисты на Perl?
Я имею в виду людей, которые знают BEGIN и END?

...
my $f = $0; $fe =~s/.pl$//; file_out("$f.pid",$$);
BEGIN { "read save data\n" }
END {
"write save data\n";
print "Going down ... \n";
$f = $0; $fe =~s/.pl$//;
if (-e "$f.restart" && `cat $f.restart` == 1 ){ print "reboot \n"; exec("perl $0"); } else { print "no reboot\n";}
}

44 ответов

66 просмотров

А что непонятно с BEGIN/END?

Daniel Даниэль- Автор вопроса
Vyacheslav Koval
А что непонятно с BEGIN/END?

Почему здесь никто этим не пользуется?

Daniel Даниэль
Почему здесь никто этим не пользуется?

Когда нужно - пользуются. Например, он используется в use под капотом. Но в целом, они редко нужны.

Ясно. Синглетонами, ещё, поди балуешься )

Daniel Даниэль- Автор вопроса
Daniel Даниэль
Почему здесь никто этим не пользуется?

Я пользуюсь BEGIN периодически. END не припомню, чтобы использовал

Daniel Даниэль
END { disconnect_database();}

Он и так должен отсоединиться, когда объект будет уничтожаться

Daniel Даниэль
END { disconnect_database();}

за тебя ОС отключит соединение, когда процесс прибъётся

Daniel Даниэль- Автор вопроса
basiliscos
за тебя ОС отключит соединение, когда процесс приб...

И что показывает база данных? Я никогда не слышал, чтобы операционная система знала учетные данные для входа, входила в базу данных и говорила: "Простите, любезнейший, процесс мертв".

Daniel Даниэль
И что показывает база данных? Я никогда не слышал,...

Когда процесс закрывается ОС закрывает все его дескрипторы. В том числе и сетевые сокеты. Во время закрытия сетевого сокета для TCP идет спец пакет "сокет закрыт с другой стороны". По нему на стороне сервера ОС информирует СУБД что дескриптор закрыт и уже СУБД сама делает что ей надо в связи с отключением коннекта.

Warstone
Когда процесс закрывается ОС закрывает все его дес...

да видимо он хочет что-то типа END{ $dbh->exec("INSERT INTO DEAD_PROCESSES ($$)"; . Я только не пойму зачем...

Warstone
Когда процесс закрывается ОС закрывает все его дес...

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

Андрей aka ti-an
Чистить за собой ресурсы - вполне правильная конце...

Еще один... Чистить ресурсы при порванном коннекте должен сервер. Если он не чистит - его проблемы.

Андрей aka ti-an
Чистить за собой ресурсы - вполне правильная конце...

совершенно верно. И для этого "нормальный" инструмент типа деструктора.

Warstone
Еще один... Чистить ресурсы при порванном коннекте...

Почему порванном? Вполне себе живом, просто за ненадобностью надо почистить, и не надеяться, что само все рассосется.

Андрей aka ti-an
Почему порванном? Вполне себе живом, просто за нен...

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

Warstone
В контексте разговора человек говорил что он хочет...

Верно, соединение живое еще. И скрипт должен освободить ресурсы, которые занимал, не надеясь, что ОС сама что-то за него сделает.

Warstone
Это антипаттерн.

Наоборот - правильный подход. А судьи кто?

Warstone
Здравый смысл. Деструктор - дорого.

А уж в каком месте это делать - вопрос другой.

Андрей aka ti-an
А уж в каком месте это делать - вопрос другой.

Не надо говорить ОС - забери ресурсы во время завершения работы программы. Это глупость.

Warstone
Не надо говорить ОС - забери ресурсы во время заве...

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

Warstone
В контексте разговора человек говорил что он хочет...

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

Anton Petrusevich
бд была примером и надо сказать не самым удачным. ...

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

Warstone
Не я придумал использовать ее в качестве примера. ...

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

Anton Petrusevich
другой вариант, когда сервис, сообщивший о своём з...

О! И еще один человек, который не знает как работает TCP. Ответ на это был дан выше.

Warstone
О! И еще один человек, который не знает как работа...

человек знает. но бывает не только коннекты в пределах одного компьютера

Anton Petrusevich
человек знает. но бывает не только коннекты в пред...

И TCP/IP работает там точно так-же как и в пределах одного компьютера

Warstone
И TCP/IP работает там точно так-же как и в предела...

магически, ага. ни разу не видел коннектов зависших?

Anton Petrusevich
магически, ага. ни разу не видел коннектов зависши...

Представьте себе - обычно зависшие коннекты говорят о том что жопа в сети. А если у вас жопа в сети между сервером и СУБД, то это уже другой вопрос.

Vadim Goncharov
mktemp() же и так придуман, и не только он

так он не почистит за собой если приложение крашнется

Denis F
так он не почистит за собой если приложение крашне...

для этого много десятилетий файл удаляют сразу после открытия - реально будет удален после закрытия

Yuri Myasoedov
круто, а я не знал про такую штуку

на винде жил, где это не работает?

Yuri Myasoedov
man читал плохо :)

не админил? это ж классика вопросов "а куда делось место в /var если du показывает меньше"

Vadim Goncharov
для этого много десятилетий файл удаляют сразу пос...

Это не работает если у тебя файл создается в одном месте, а писать в него надо в другом, а хэндлер таскать не хочется

Denis F
Это не работает если у тебя файл создается в одном...

какой хэндлер? ядру пофигу, дескриптор файла общий на весь процесс

Denis F
Это не работает если у тебя файл создается в одном...

В этом случае файл можно удалить в том процессе, который будет писать. Это тоже не всегда удобно, но ещё часть проблем снимает.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
TCodePointer = record cp: CodePointer; name: string; cnt: Integer; next: TCodePointerArray; // этот тип ещё неизвестен end; TCodePointerArray = array of ...
notme
9
Привет ) есть такой кусок кода, он считывает ini файл. my $conf = Config::IniFiles->new( -file => $ini_file ); if (!$conf) { $self->my_die('cannot_read_cfg', ...
Kolya lastname
7
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Блин, интересно, кто-нибудь когда-нибудь переписывал какую-нибудь игру с x86 на arm? Вообще, такое возможно?
Alan 🔝 Бэброу
13
здравствуйте, братья, кто-нибудь знает, как работать с Swift.com или Swift.net?
Ozzy
6
why html and css is not standard? i mean why different browser has their own engine and styles and how them work to show result to end user?
Mr Thieves
5
Ну тогда у меня вопрос... ) А вот в Delphi 7, к примеру, это что не решаемая задача была бы? (дженериков то ещё нету) Эта: https://t.me/Delphi_Lazarus/319568
notme
5
@wit01d How are you? What are you studying these days, curious man ?
Sahand 🏔️
6
Карта сайта