Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
AntonariyskyANAВы же поняли, что автор за то, чтобы писать более удобочитаемый и поддерживаемый HTML/CSS код, а не гнаться за максимальной производительность.Да все с ним ясно...С Вами тоже всё ясно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 18:32 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
да, тут все про всех всё знают, души как на ладони ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 18:35 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
hVosttписец, я долбаном детском саду или в дурке. что ну-ну? чо эт значит? это значит есть ситуации, когда финализатор может не вызваться. Рихтера цитировать не буду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 18:43 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
ИзопропилhVosttписец, я долбаном детском саду или в дурке. что ну-ну? чо эт значит? это значит есть ситуации, когда финализатор может не вызваться. Рихтера цитировать не буду. Так ему об этом уже раз десять сказали. Доселе невнял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 20:03 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
hVostthandmadeFromRu, я только и слышу «так неправильно»... «так нельзя»... «это зло»... ну а теперь еще «искусственно»... почему???? как достучаться до вас!?? если вы такие УМНЫЕ, объясните! а если не можете, так и не пишите тогда ничего. 1) твой класс не управляет файлами вообще никак, но ты умник на его финализатр кинул чистку файла, искусственно дал ему эту функцию 2) твой говнокод с сессией обломиться если шарехостинг сдохнет, такие хостинги как паркинг регулярно падают и хер там твой финализатор вызовется (свет отрубили, винда упала изза дров, диск покрошился) да блин элементарно подчищать можно не завися от сессии и финализатора. Везде чистить по дате создания: 1) фоновый сервис отдельно от сайта раз в N- времени 2) фоновый процесс внутри сайта, но если апп выгрузиться то тут надо пошаманить раз в N- времени 3) самый тупой от каждого реквеста на контролер/страницу из пула брать поток фоновый и давать задачу на чистку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2013, 21:07 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
cooldeveloperhVosttя только и слышу «так неправильно»... «так нельзя»... «это зло»... hVosttвешать стили на id — зло во плоти, не вздумай больше такое никому советовать. никогда. Этопять для тебя и твоим же языком. чего смешного? у тя с головой-то все ок? эхх.. доходяга... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 01:11 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
Другой удачный способ применения финализатора — проверка очистки объекта перед удалением. Если объект при создании или по ходу своей работы захватывает ценные системные ресурсы, кроме памяти (открывает файлы или коммуникационные каналы, подключается к устройствам ввода-вывода), то, очевидно, в момент удаления объекта сборщиком мусора все эти ресурсы должны быть уже освобождены (то есть объект должен быть очищен). Ошибки очистки (когда объект в некоторых ситуациях не очищается или, что ещё хуже, очищается не полностью) очень коварны, их сложно выявлять, так как проявляются они при выполнении совсем не той части кода, где допущена ошибка. Как уже говорилось, проводить очистку в финализаторе неразумно, так как неизвестно, когда он будет вызван и вызовется ли вообще. Зато в финализаторе вполне уместно и удобно провести проверку того, полностью ли очищен объект, и выдать, в той или иной форме, сообщение об ошибке, если какой-то ресурс остался захваченным. Неважно, что финализатор может быть вызван поздно и не каждый раз; всё равно, если ошибка очистки объекта имеется, то рано или поздно финализатор «поймает» её. я бы хотел увидеть цитату Рихтера, который пишет, что вызов финализатора не гарантирован . то, что он неизвестно когда выполнится — это точно. но, то что он выполнится по-любому, 100%. если приложение фатально рухнет, конечно финализаторы не вызовутся. я это учел. папка должна очищаться перед стартом/рестартом приложения. на текущий момент, загружено более 10000 файлов, папка чистенькая, в логе исключений нет. спецом отключил очистку папки при запуске приложения. ну скажите мне, какие меня ждут проблемы? стоит ли опасаться? пока убедительных аргументов никто не привёл. зато поумничать в том или ином виде успели многие. аплодирую стоя. за упёртый мудизм. обращаюсь к МСУ — харе выдерать слова из контекста и пулять их с понтом «аагггга! подловил!!! бугааагаааг». эт детсад, осталось клоунов еще позвать. нечего по делу сказать, так лучше молчи. и не смеши народ. тем более это уже даже не смешно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 01:21 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
handmadeFromRu1) твой класс не управляет файлами вообще никак, но ты умник на его финализатр кинул чистку файла, искусственно дал ему эту функцию 2) твой говнокод с сессией обломиться если шарехостинг сдохнет, такие хостинги как паркинг регулярно падают и хер там твой финализатор вызовется (свет отрубили, винда упала изза дров, диск покрошился) да блин элементарно подчищать можно не завися от сессии и финализатора. Везде чистить по дате создания: 1) фоновый сервис отдельно от сайта раз в N- времени 2) фоновый процесс внутри сайта, но если апп выгрузиться то тут надо пошаманить раз в N- времени 3) самый тупой от каждого реквеста на контролер/страницу из пула брать поток фоновый и давать задачу на чистку функция класса — управлять удалением файла. это его единственная функция. требованиям его работа полностью отвечает. что не так? где проблема? тыкните носом. если шаред внезапно сдохнет, конечно финализаторы не сработают, но приложение перезапустится, а при перезапуске (при старте) папка очищается — это называется «приведение приложения в изначальное состояние», все логично. 1. фоновый сервис — в топку, сразу без разговоров. даже обсуждать это баранье решение не буду. 2. фоновый процесс внутри сайта значит лучше, да? чем? почему? где блин хоть один аргумент? 3. это действительно самый тупой. мой маленький класс, с единой ответственностью, против целой эпопеи с запуском каких-то оторванных от задачи процессов, запускаемых неизвестно кем... вот уж точно, чтобы выкопать ямку мы пригоним экскаватор. убить воробья, мы пригоним целый батальон артиллерии и еще для верности вызовем пару бомбардировщиков. вы меня поражаете. дайте угадаю, это уже дело принципа? аргументы будут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 01:32 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
hVosttя бы хотел увидеть цитату Рихтера, который пишет, что вызов финализатора не гарантирован . то, что он неизвестно когда выполнится — это точно. но, то что он выполнится по-любому, 100%.Зачем для этого Рихтер? GC.SuppressFinalize(this) достаточно. Где гарантия, что в каком-нибудь наследуемом классе из левой сборки эта фигня не запилена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 01:32 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
AntonariyhVosttя бы хотел увидеть цитату Рихтера, который пишет, что вызов финализатора не гарантирован . то, что он неизвестно когда выполнится — это точно. но, то что он выполнится по-любому, 100%.Зачем для этого Рихтер? GC.SuppressFinalize(this) достаточно. Где гарантия, что в каком-нибудь наследуемом классе из левой сборки эта фигня не запилена? это не библиотека. если бы я делал библиотечное решение, подход был бы совсем другой. GC.SuppressFinalize я точно вызывать не буду для этого класса. а другие компоненты не будут использовать этот класс. у него только один потребитель. это достаточные условия для выполнения нужных гарантий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 01:36 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
hVosttэто не библиотека.Вот это новость. Вы экзешники под иисом крутите? hVosttGC.SuppressFinalize я точно вызывать не буду для этого класса. а другие компоненты не будут использовать этот класс. у него только один потребитель. это достаточные условия для выполнения нужных гарантий?Ну вот так и говорите, "по-любому, 100% в моих условиях ". А не вообще, да еще с апелляциями ко всяким рихтерам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 01:46 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
Antonariy, признаю свою ошибку. да действительно совсем позабыл сказать, что я не буду запрещать запуск финализатора для своего класса вручную и никакие «левые» библиотеки тоже не будут. я со всех библиотек взял предварительно клятвенное обещание. вселенную на всякий случай тоже попросил. а понятия библиотека от понятия сборка все же отличается. не физически, так логически. но я тут тоже могу дико ошибаться. поправьте если что. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 01:55 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
если все эти подколки типа «ну-ну» и т.п. крутятся вокруг одного только GC.SuppressFinalize, то я умываю руки. тогда надо учесть еще и хомяка. вы учли хомяка? он перегрызвает провода. как силовые, так и сетевые. если этот хомяк вас сбивает с толку, типа что еще за хомяк, то его зовут Хома. его никто не видел, но он есть. еще бывают землетрясения, они тоже могут помешать выполниться долбанному финализатору. и Путин тоже может испортить всю малину. энергетиков, кстати, вы учли? а злобные хакеры, бессовестно вмешивающиеся в работу серверов? а уборщицу, которая усиленно трет пол, задевая как будто специально провод серверного питания и проливающего воду на ИБП? нет? ну чтож. давайте обсудим это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 02:01 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
hVosttа понятия библиотека от понятия сборка все же отличается. не физически, так логически.IIS работает с файлами, а не понятиями. И тип этих файлов — библиотека. dynamic link library. hVosttесли все эти подколки типа «ну-ну» и т.п. крутятся вокруг одного только GC.SuppressFinalize, то я умываю руки.Понятия не имею, вокруг чего крутились чьи-то подколки. Я просто заглянул и вспомнил про SuppressFinalize. Мало чего я еще не вспомнил. hVosttнет? ну чтож. давайте обсудим это.Достаточно убить и перезапустить процесс, чтобы файлы разблокировались и стерлись, сами же сказали. Хомяки это из пушки по воробьям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 02:21 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
hVosttда действительно совсем позабыл сказать, что я не буду запрещать запуск финализатора для своего класса вручную и никакие «левые» библиотеки тоже не будут Дурень, не финализатора, а деструктора. Разницу понимаешь? Финализатор вообще категорически запрещается трогать. Ладно, спишем на то, что оговорился. http://msdn.microsoft.com/ru-ru/library/66x5fx1b.aspx If your application is using an expensive external resource, we also recommend that you provide a way to explicitly release the resource before the garbage collector frees the object. You do this by implementing a Dispose method from the IDisposable interface that performs the necessary cleanup for the object. Или опять скажешь, что рекомендации от нашего вендора - филькина грамота? Далее. hVosttя бы хотел увидеть цитату Рихтера, который пишет, что вызов финализатора не гарантирован . то, что он неизвестно когда выполнится — это точно. но, то что он выполнится по-любому, 100%. РихтерБеда в том, что разработчики ошибочно полагают, что использование синтаксиса деструктора означает в С # детерминированное уничтожение объектов типа, как это происходит в С++ .Но CLR не поддерживает детерминированное уничтожение, поэтому С# не может предоставить этот механизм. РихтерПри первом создании любого объекта, производнаго от типа Сritiсаl - FinalizerObject, CLR автоматически запускает JIT -компилятор, компилирующий все методы финализации в иерархии наследования. Компиляция этих методов после создания объекта гарантирует, что машинные ресурсы освободятся, как только объект станет мусором. Без компиляции метода финализации возможно лишь выделение и использование ресурсов, но не их освобождение. При недостатке памяти CLR не сможет найти достаточно памяти для компиляции метода финализации. Автоматическое управление памятью (сборка мусора) будет исполнен, что приведет к утечке машинных ресурсов. Также ресурсы не освобождаются, если код в методе финализации содержит ссылку на тип в другой сборке, которая не была обнаружена CLR Таким образом, если нужна гарантированная финализация, нужно смотреть в сторону класса CriticaiFinalizerObject. Только зачем эти грабли нужны для такой задачи, как у тебя. Сотый раз повторяю, что это нужно использовать при захвате unmanaged объектов. В твоем случае, ты вообще используешь логику в деструкторе. Убей себя. Серьезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 09:58 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
1) конкретный финализатор может не вызваться при зацикливании одного из финализаторов При завершении процесса выполнение финализаторов может быть прервано при превышении таймаута на отдельный финализатор или таймаута на всю очередь 2) для завершения рабочего процесса IIS никакой хомяк не нужен. рабочий процесс может быть планово перезапущен после обработки определённого числа запросов, превышении лимита занимаемой памяти и внепланово по "состоянию здоровья" и т д 3) перезапуск рабочего процесса приводит к потере состояния сессий(если сохранение состояние сконфигурировано как InProc) 4) сохранение состояние отличное от InProc(StateServer,SQL Sever,Custom) производится сериализацией/десериализацией со всеми вытекающими последствиями 5) финализаторы в IIS вызываются с правами рабочего процесса Достаточно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2013, 10:43 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
Изопропил, с сессиями понятно. данное решение подходит только для InProc сессий, для других форм неуместно. InProc сессия довольно нестабильна и надо разрабатывать так, как будто сессия вообще толком не работает, выполняя по сути кеширующий для пользователя механизм, не более того. т.е. логика работы приложения не должна опираться на наличие сессии. на счет использования финализатора для удаления файла. да, в общем такое использование финализатора выходит за рамки рекомендаций. т.е. финализатор не должен участвовать в логике , а плановое удаление файлов это все-таки логика. поэтому данное решение мною рассматривалось для удовлетворения академического интереса. и пока что отлично работает. но в целом, так делать не стоит. потому что цель финализатора несколько другая. о чем написано кучу талмудов и что составляет муськину грамота — о том же :) в общем да, достаточно, спасибо за 5 пункт. есть еще что поисследовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 02:55 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
Муся в бане, :) рад, что добился вразумительного ответа. в целом ты прав. вендоры не советуют лезть в финализатор со своей логикой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 02:57 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
hVostt, очень рад, что терез тернии, терзания сознания и избиение плетью тебя, таки, удалось вразумить. Похвально. Теперь переключаемся на второй вопрос, с которого ты как-то лихо съехал и всё забылось под беспощадным гнётом твоей беспринципной напористости. Ну, конечно же, вопрос о сессии! Итак, согласен ли ты, что сессия - зло? P.S. Набрал попкорна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 11:07 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
МСУ, сессия, это инструмент со слегка повышенным риском использовать его неправильно. называть из-за этого его злом можно не от большого ума. если только пугать новичков... у каждого педагога свои извращенные методы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 11:59 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
А альтернатива имеется? Сессия, она как работает, есть в браузере сессионная кука, по этой куке берутся некоторые данные. В общем-то, всё. Дёшево и сердито. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 12:03 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, сессия, это инструмент со слегка повышенным риском использовать его неправильно. называть из-за этого его злом можно не от большого ума. если только пугать новичков... у каждого педагога свои извращенные методы Не выкручивайся, как гнусный червяк, ты понял о чем речь :) О том же, о чем и твои декструторы. Речь о логике, разумеется. Вопрос повторить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 12:04 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
ShSergeА альтернатива имеется? Сессия, она как работает, есть в браузере сессионная кука, по этой куке берутся некоторые данные. В общем-то, всё. Дёшево и сердито. Не, Серж. С этим всё хорошо, речь о том, что ты свой прикладной код и логику реализуешь с помощью сессии. Он понял о чем речь, просто выкручивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 12:06 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
МСУ, разумеется сессию можно использовать для логики. например, пошаговые визарды для анонимов, состояние которых можно сохранять в сессии. ибо гадить в куки или вкручивать стейт в страницу — не всегда разумное решение. в основном сессия выполняет роль кеширующего механизма для посетителя/пользователя. но если: 1. существует «риск» масштабирования приложения на несколько серверов в будущем 2. нет (и/или не будет) контроля за конфигурацией сессии 3. не понятно что же это такое и как оно работает — забыть про использование сессий в личных целях. можно окрестить её злом и забыть на веки вечные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 12:15 |
|
||
|
Ленивая очистка. Продолжение
|
|||
|---|---|---|---|
|
#18+
hVosttМСУ, сессия, это инструмент со слегка повышенным риском использовать его неправильно. называть из-за этого его злом можно не от большого ума. если только пугать новичков... у каждого педагога свои извращенные методы +1. Четкий ответ. Сессия - это данность. Она есть и все. Бест практис никто не отменял. А реверансы "слегка повышенного риска" - ну не надо бояться говорить. Найдется тонна объектов пострашнее сессии, которые юзают и - ничего. троллиИдет расклейка ярлыков - через неправильное использование клеится ярлык на некоторую область. Так я смогу аппроксимируя доказать что .Net (ровно как и что угодно) - говно, зло и полный отстой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2013, 12:22 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38269757&tid=1358408]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 373ms |

| 0 / 0 |
