Архив за месяц: Апрель 2016

О принятии решений

Есть две одинаково удобные позиции: либо верить во все, либо во всем сомневаться; то и другое избавляет от необходимости думать.
-- Анри Пуанкаре

В фейсбучной группе про ТОС наткнулся на статью "3 способа принятия сложных решений". И что-то как-то зацепило. Под катом размышления на тему как выбирать, и почему то что описано в статье по ссылке опасно.

Начнем с того, с чем я согласен. Во-первых, надо экономить мышление. Исследования показывают, что наш ресурс на принятие решений ограничен. Причем, батарейка этого ресурса общая с силой воли, что тоже хоть как-то но связано с принятием решений, но она еще связана и с памятью. Т.е. неважно думаем мы над чем-то, просто запоминаем что-то это приводит к расходу энергии. Во-вторых, я категорически согласен, с тем, что если есть несколько достаточно удачных решений, то надо не пытаться найти максимально верное решение, самое правильное решение, решение с наименьшими рисками. У меня на эту тему даже вот такая картинка рядом с рабочим местом висит:
И здесь проблема не только в обезьянке Тима Урбана. Мы не можем предсказывать будущее, от слова совсем. Никто и никогда не узнает как работает то или иное решение, к каким последствиям приведет, какие риски реализуются. И здесь действительно, чем раньше мы начнем действовать, тем больше вероятность получить результат, ну или понять, что этот вариант нас к нему не приведет.
Теперь о том, с чем не согласен. Здесь вот какая штука. Если нам не нравиться какая-то наша модель поведения, то да, привычки это 100% выход ее изменить. Про это как-нибудь отдельно, но основная идея в том, что не надо заставлять себя правильно питаться, должна быть привычка правильно питаться. Не надо заставлять себя что-угодно (мыть руки, читать инструкцию перед тем как сломать, заниматься спортом), а должна быть привычка. И это позволяет экономить пусть будет по Максу "мыслетопливо". Но у привычек есть и другая сторона. Как только мы переводим деятельность в бессознательное, т.е. решения принимаем "быстрой" подсистемой мозга, так тут-же качество этих решений ухудшается. То что было хорошо в той ситуации когда привычка вырабатывалась (нами осознанно или внешними обстоятельствами неосознанно), может оказаться не так эффективно, а зачастую и вредно в той ситуации в которой привычка пытается выстрелить.
Еще одним существенным минусом наличия привычек является отсутствие возможности потренировать мозг в принятии простых решений. В книге "Сила воли. Как развить и укрепить" даже одно из упражнений на тренировку силы воли и осознанности, когда мы боремся с привычкой. А тут нам говорят - забей, неосознанное супер.
Что же тогда с этим делать?
Первое и самое главное, это экономить мыслетопливо. Думать над задачей один раз, фиксировать принятые решения в системе учета задач и т.д.
Второе, для ситуаций когда решений больше одного понятно, но что делать с ситуациями с которыми не понятно? А здесь как раз упоминаемые вскользь в статье схемы если-то. И чем на большее количество таких схем будет настроен мозг, тем лучше. Кстати, это хорошая привычка прогонять по таким схемам все непонятно.
Ну и пара примеров на эту тему, а то в статье какой-то мутный.
Классика жанра, разбор входящих:

Имея входящее и подойдя к времени разбора, все что накопилось прогоняем по этой схеме если-то и удаляем. Применимо ко всему: просьбам, письмам, идеям. Есть отдельно тонкости что помещать во входящие, а что сразу прогонять по этой схеме, но лучше (если вы только начинаете со всем этим разбираться) все сначала помещать во входящие, а то может тупо захлестнуть волной из входящих которые типа на две минуты и быстренько сделаю.
Второй пример был для меня в новинку, поэтом про него поподробнее отдельной статьей. А вот картинка для затравки:

WR Галерея V 1.5

 

Перед Вами проста і надійна галерея на php.

Зручні функції — скрипт показує невеликі і повнорозмірні зображення завантажених фото. Є можливості адміністрування: редагування / видалення фото, описи до фото. Дані зберігаються в файлах (без використання MySQL), не вимагає складних налаштувань, простий і не примхливий в експлуатації. Проста структура даних дозволяє легко і швидко встановити / перенести скрипт без втрати даних в будь-яку папку як на сервері, так і на інший сайт.

функції:
— Можливість налаштування верхньої і нижньої частини всіх сторінок (top.html і bottom.html)
— Відправка на емайл адміну повідомлення про додавання фото в галерею (опціонально)
— Автоматично вказуються дата / час / розмір / ширина / висота фото при додаванні
— Вибір кількості відображуваних фото на кожній сторінці, розбивка на сторінки
— Адмінінтерфейс з можливістю редагування / видалення фотографій

Новости сайта: купить импланты

Нові функції:
— Блок антиспам винесено в окремий файл, так як у деяких були проблеми з інклюдінгом на свій сайт
— Переписаний код для полегшення роботи галереї, у меньшенія навантаження на сервер
— Змінено структуру зберігання даних — тепер всі файли * .dat знаходяться в папці data. Всі скіни тепер в назві папки мають слово «skin»
— Антиспам став ще краще, тепер код змінюється кожні 24 години. В адмінку додані можливості змінювати кількість символів ціфрозащіти

Приклад роботи скрипта


Завантажити Розмір: 141,33 Kb Файл: 105.zip

Блокировка кнопки и контекстного меню закрытия консольного окна

Как известно, accoreconsole.exe всегда был и до сих пор остаётся достаточно кривым... Один из неприятных аспектов его поведения, присутствующий по сей день, заключается в том, что если завершать работу приложения кликом мышки по кнопке закрытия консольного окна в верхнем правом углу, либо выбирая соответствующий пункт из контекстного меню консольного окна, то приложение завершает свою работу через задницу - не выполняя код методов Terminate(), а так же код зарегистрированных событий, таких например, как AppDomain.CurrentDomain.ProcessExit.

Однако обозначенная проблема гораздо глубже и не ограничивается рамками кода ваших расширений: при таком способе закрытия AutoCAD так же не выполняет и свой собственный код, который он обычно выполняет при завершении работы приложения (код корректного освобождения ресурсов, сохранения настроек и т.п.). Например, не происходит восстановление настроек в реестре, которые временно были изменены accoreconsole.exe под свои нужды. Это сразу бросается в глаза на напримере переменной FILEDIA, на время работы консольного приложения устанавливается в 0:  при очередном запуске acad.exe для неё приходится вручную восстанавливать значение 1 (в противном случае вместо диалоговых окон AutoCAD будет использовать свою консоль).

Если завершать работу accoreconsole.exe путём вызова команд quit и exit, то завершение работы приложения происходит так, как это должно было происходить (т.е. выполняется весь необходимый код). Однако никто не застрахован от клика мышкой по обозначенной выше кнопке, а пользователи с вероятностью 100% будут клацать как раз именно по ней, когда потребуется завершить работу приложения, потому как такой способ завершения работы - самый простой.

В качестве "лекарства" против обозначенной выше проблемы я блокирую кнопку закрытия консольного окна и соответствующий её пункт контекстного меню:


  1. const uint MF_BYCOMMAND = 0x00000000;
  2. const uint MF_GRAYED = 0x00000001;
  3. const uint SC_CLOSE = 0xF060;
  4. const uint MF_DISABLED = 0x00000002;
  5. [DllImport("kernel32.dll")]
  6. static extern IntPtr GetConsoleWindow();
  7. [DllImport("user32.dll")]
  8. static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
  9. [DllImport("User32.dll", SetLastError = true)]
  10. static extern uint EnableMenuItem(IntPtr hMenu, uint itemId, uint uEnable);
  11. [DllImport("user32.dll")]
  12. static extern bool DeleteMenu(IntPtr hMenu, uint uPosition, uint uFlags);
  13. ...
  14. // Disable the Close ("X") button and "Close" context menu item of the Console window
  15. IntPtr hwnd = GetConsoleWindow();
  16. IntPtr hmenu = GetSystemMenu(hwnd, false);
  17. uint hWindow = EnableMenuItem(hmenu, SC_CLOSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  18. // Also it is possible to delete "Close" context menu item
  19. // instead of disabling it.
  20. // DeleteMenu(hmenu, SC_CLOSE, MF_BYCOMMAND);

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

Однако мне всё же интересно: почему не блокируется пункт меню?

Оказалось, что обозначенная проблема свойственна не только accoreconsole.exe, но и любому консольному приложению в Windows 7 x64, а так же в Windows Server 2003. А вот в Windows 10 x64 всё работает корректно...

Т.о. то, что контекстное меню не блокируется в некоторых версиях Windows - очень похоже на баг WinAPI.

 В этой же теме сразу размещаю код примера того, как можно скрывать или отображать консольное окно (например всё тот же accoreconsole.exe):
  1. [DllImport("kernel32.dll")]
  2. static extern IntPtr GetConsoleWindow();
  3. [DllImport("user32.dll")]
  4. static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
  5. const int SW_HIDE = 0;
  6. const int SW_SHOW = 5;
  7. IntPtr hwnd = GetConsoleWindow();
  8. // Hide window
  9. ShowWindow(hwnd, SW_HIDE);
  10. // Show window
  11. ShowWindow(hwnd, SW_SHOW);

Длительная, нередко печальная практика показывает, что лозунг Autodesk касательно данного продукта, к сожалению, выглядит как-то так:
`accoreconsole.exe` - мы заставим Вас работать через задницу!

Блокировка кнопки и контекстного меню закрытия консольного окна

Как известно, accoreconsole.exe всегда был и до сих пор остаётся достаточно кривым... Один из неприятных аспектов его поведения, присутствующий по сей день, заключается в том, что если завершать работу приложения кликом мышки по кнопке закрытия консольного окна в верхнем правом углу, либо выбирая соответствующий пункт из контекстного меню консольного окна, то приложение завершает свою работу через задницу - не выполняя код методов Terminate(), а так же код зарегистрированных событий, таких например, как AppDomain.CurrentDomain.ProcessExit.

Однако обозначенная проблема гораздо глубже и не ограничивается рамками кода ваших расширений: при таком способе закрытия AutoCAD так же не выполняет и свой собственный код, который он обычно выполняет при завершении работы приложения (код корректного освобождения ресурсов, сохранения настроек и т.п.). Например, не происходит восстановление настроек в реестре, которые временно были изменены accoreconsole.exe под свои нужды. Это сразу бросается в глаза на напримере переменной FILEDIA, на время работы консольного приложения устанавливается в 0:  при очередном запуске acad.exe для неё приходится вручную восстанавливать значение 1 (в противном случае вместо диалоговых окон AutoCAD будет использовать свою консоль).

Если завершать работу accoreconsole.exe путём вызова команд quit и exit, то завершение работы приложения происходит так, как это должно было происходить (т.е. выполняется весь необходимый код). Однако никто не застрахован от клика мышкой по обозначенной выше кнопке, а пользователи с вероятностью 100% будут клацать как раз именно по ней, когда потребуется завершить работу приложения, потому как такой способ завершения работы - самый простой.

В качестве "лекарства" против обозначенной выше проблемы я блокирую кнопку закрытия консольного окна и соответствующий её пункт контекстного меню:


  1. const uint MF_BYCOMMAND = 0x00000000;
  2. const uint MF_GRAYED = 0x00000001;
  3. const uint SC_CLOSE = 0xF060;
  4. const uint MF_DISABLED = 0x00000002;
  5. [DllImport("kernel32.dll")]
  6. static extern IntPtr GetConsoleWindow();
  7. [DllImport("user32.dll")]
  8. static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
  9. [DllImport("User32.dll", SetLastError = true)]
  10. static extern uint EnableMenuItem(IntPtr hMenu, uint itemId, uint uEnable);
  11. [DllImport("user32.dll")]
  12. static extern bool DeleteMenu(IntPtr hMenu, uint uPosition, uint uFlags);
  13. ...
  14. // Disable the Close ("X") button and "Close" context menu item of the Console window
  15. IntPtr hwnd = GetConsoleWindow();
  16. IntPtr hmenu = GetSystemMenu(hwnd, false);
  17. uint hWindow = EnableMenuItem(hmenu, SC_CLOSE, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
  18. // Also it is possible to delete "Close" context menu item
  19. // instead of disabling it.
  20. // DeleteMenu(hmenu, SC_CLOSE, MF_BYCOMMAND);

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

Однако мне всё же интересно: почему не блокируется пункт меню?

Оказалось, что обозначенная проблема свойственна не только accoreconsole.exe, но и любому консольному приложению в Windows 7 x64, а так же в Windows Server 2003. А вот в Windows 10 x64 всё работает корректно...

Т.о. то, что контекстное меню не блокируется в некоторых версиях Windows - очень похоже на баг WinAPI.

 В этой же теме сразу размещаю код примера того, как можно скрывать или отображать консольное окно (например всё тот же accoreconsole.exe):
  1. [DllImport("kernel32.dll")]
  2. static extern IntPtr GetConsoleWindow();
  3. [DllImport("user32.dll")]
  4. static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
  5. const int SW_HIDE = 0;
  6. const int SW_SHOW = 5;
  7. IntPtr hwnd = GetConsoleWindow();
  8. // Hide window
  9. ShowWindow(hwnd, SW_HIDE);
  10. // Show window
  11. ShowWindow(hwnd, SW_SHOW);

Длительная, нередко печальная практика показывает, что лозунг Autodesk касательно данного продукта, к сожалению, выглядит как-то так:
`accoreconsole.exe` - мы заставим Вас работать через задницу!

C#: скачиваем файлы из Интернет


Пример кода для простого скачивания файлов из Интернет (например файла http://stroustrup.com/Programming/PPP2code/std_lib_facilities.h). Сетевые настройки при этом считываются из настроек Internet Explorer.




static voidMain(string[] args) {
    String file_name = Path.GetRandomFileName();
    String full_path = Environment.ExpandEnvironmentVariables(
        Path.Combine(@"%LocalAppData%\Temp", file_name));

    using (WebClientclient = new WebClient()) {
        String uri = "http://stroustrup.com/Programming/PPP2code/std_lib_facilities.h";
        var proxyUri = WebRequest.GetSystemWebProxy()
            .GetProxy(new Uri(uri));
        client.Proxy = new WebProxy(proxyUri);
        client.Proxy.Credentials = CredentialCache.DefaultCredentials;
        try{
            client.DownloadFile(uri, full_path);
        }
        catch(Exception ex) {
            Console.WriteLine(ex.Message);
        }
    }
    Console.WriteLine("The result file: {0}", full_path);
    Console.WriteLine("Press any key for exit.");
    Console.ReadKey();
}



C#: скачиваем файлы из Интернет


Пример кода для простого скачивания файлов из Интернет (например файла http://stroustrup.com/Programming/PPP2code/std_lib_facilities.h). Сетевые настройки при этом считываются из настроек Internet Explorer.




static voidMain(string[] args) {
    String file_name = Path.GetRandomFileName();
    String full_path = Environment.ExpandEnvironmentVariables(
        Path.Combine(@"%LocalAppData%Temp", file_name));

    using (WebClientclient = new WebClient()) {
        String uri = "http://stroustrup.com/Programming/PPP2code/std_lib_facilities.h";
        var proxyUri = WebRequest.GetSystemWebProxy()
            .GetProxy(new Uri(uri));
        client.Proxy = new WebProxy(proxyUri);
        client.Proxy.Credentials = CredentialCache.DefaultCredentials;
        try{
            client.DownloadFile(uri, full_path);
        }
        catch(Exception ex) {
            Console.WriteLine(ex.Message);
        }
    }
    Console.WriteLine("The result file: {0}", full_path);
    Console.WriteLine("Press any key for exit.");
    Console.ReadKey();
}



Как выбрать золотые серьги или браслет в подарок: секреты мастерства

Как известно, чаще всего разнообразные ювелирные украшения получают в подарок представительницы слабого, но в то же время, прекрасного пола, а попросту, женщины и молодые девушки. Именно потому речь пойдет о выборе подобных аксессуаров именно для них, капризных и вредных, но таких любимых и трогательно нежных. Приобрести золотые серьги с изумрудом можно очень просто и легко, если посмотреть на страницы удобного и необычайно функционального интернет-магазина в Москве, под романтическим названием «Рай бриллиантов».

Верный выбор – это далеко не просто

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

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

Основные критерии, которыми нужно руководствоваться при выборе ювелирных украшений

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

  • Если речь идет о выборе кольца, то в первую очередь нужно определится с размером пальца, на котором оно и будет носиться. Кроме того, нужно учесть, какие уже имеются украшения, и выбрать такое, чтобы оно не выбивалось из общего ряда.
  • Приобретая золотой браслет на руку, стоит измерить запястье девушки и только после этого учитывать все остальное. Кроме того, не помешает учесть также и материалы, из которого такие изделия производятся, а также плетение, камни и прочие нюансы.

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

Участки под застройку для любого из нас: «10соток» предлагает выгодные решения

Каждый современный человек, особенно, если он живет в огромном и бурлящем мегаполисе, заполненном шумными автомобилями, тысячами разнообразных магазинов, а также чадящими производствами мечтает обзавестись собственным уголком, где можно вдохнуть свежий воздух полной грудью. Причем многие думают, что им это попросту не по карману, однако компания «10соток» предлагает купить участок в Сергиевом Посаде недорого, а потом уже выстроить на нем дом, который вам как раз и необходим.

Преимущества и достоинства земельных участков очевидны для всех: Сергиев Посад ждет вас

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

Общая площадь районы составляет более двухсот тысяч гектаров, а это уже точно не шутки. Купить участок в Сергиевом Посаде вовсе не сложно, однако нужно тщательно подбирать компанию, которая занимается недвижимостью и может гарантировать чистоту и прозрачность сделки, а «10соток» как раз таковой и является.

Стоит сказать, что большая часть территорий района занята именно лесами и сельскохозяйственными угодьями. Причем земельные участки у воды пользуются наибольшим спросом, ведь очень хорошо, когда рядом есть речка, где можно искупаться в кристальной воде, сходить на рыбалку, или просто отдохнуть на берегу. Причем все это можно сделать, не вкладывая особых средств, просто приобретя участок и потихоньку выстроив на нем свой собственный дом. Стоит упомянуть, что Сергиев Посад является важной частью «Золотого кольца» нашей матушки России. Тут есть и уникальный Троицкий монастырь, который называют еще Троице-Сергиева Лавра.

Почему люди выбирают Сергиев Посад?

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

  • Ввиду огромной территории, которая имеется в наличии, каждый сможет выбрать участок, который ему наиболее по карману, а также тот, который нравится больше всего.
  • Стоимость участка при содействии компании «10соток» будет гораздо доступнее и ниже, чем в любом ином месте.
  • В районе имеется достаточно развитая инфраструктура, то есть все необходимое, от аптек и магазинов, до развлекательных и даже туристических центров.