Если же такой негарантированный показ «если есть деньги» пользователей устаривает, то его можно раелизовать так. Периодически (раз в час например) запускается «планировщик» и производит распределение имеющихся ресурсов (денег) по задачам (активным объявлениям) на ближайший час. Алгоритм выбирайте сами. Например, первыми получают показы объявления, поданные раньше. Или еще как-то.
Принцип тут тот же, что и в предыдущем варианте, только дискретизирован по времени.
Я бы, на месте пользователя, хотел бы быть уверен, что мое объявление будет показываться именно тогда и ровно столько, как мне нужно. А такая неопределенность, как у вас сейчас, меня бы взбесила.
Но может быть у вас совсем другие пользователи.
В приложениях типа «одна форма — две кнопки» особых преимуществ нет.
В больших же и сложных приложениях ситуация иная. особенно, если приложение строится с облюдением правил хорошего usability, accessibility и прочих гайдлайнов. Одно оэлементарное действие, вроде или «сохранить документ» или «пересчитать баланс», может быть инициировано многими способами. Как то:
— командой из главного меню
— кнопкой на основной панели инструментов
— командой из контекстного меню на форме (их может быть несколько)
— нажатием горячих клавиш
— дополнительной большой кнопкой на форме
— программно из недр разных модулей
и т.д.
Доступность действия может зависеть от контекста. Например, доступность команды «сохранить» зависит от того, были изменения или нет. Если не было, то кнопка на панели должна быть disabled; а как только появятся изменения, снова стать enabled. И так во всех меню, панелях и формах, где есть эта команда. Другой пример. В многопользовательской системе какие-то действия данному пользователю могут быть не разрешены, нет прав. При этом все соответствующие кнопки и команды желательно вообще убрать из интерфейса (скрыть). При проверке прав мы разумееется вызываем некий метод, запрещающий данную команду. Но как отследить, где по интерфейсу раскиданы эти кнопки и меню и сколько их? Во временем ведь могут добавляться новые места. Механизм Actions это все и реализует.
Кроме этого, Action позволяет передать контекст для выполнения действий. Например, кнопка «Очистить» всегда висит на панели инструментов, а ее действие зависит от того, какой элемент сейчас имеет фокус. Это может быть список, а может быть поле с текстом.
Начиная с некоторого уровня, близкого к среднему, удаленка вполне возможна. В команде, разумеется, не одиночке. Для тесного контакта с бухгалтерией отводится отдельная роль постановщика задач.
@DiFor:
А ваш заказчик плохо отнесется к «перерывам на хабр» во время работы? Вы с ним договаривались на «не менее шести часов в день»?
Просто сказать ему, что это ваше дело как распределять время, не вариант?
Это должно уменьшить срок жизни диска (так как не будет работать выравнивание износа), а также вызывть падение производительности со временем. У автора же падение наблюдается сразу, так что думаю причина в другом. Возможно зашифрованный раздел не выровнен по границе физического сектора вашего SSD. Или размер заголовка раздела не кратен размеру сектора, и все операции с данными оказываются не выровненными.