30 апр. 2010 г.
Самый короткий анекдот для приверженцев vim
vim ~/.emacs
29 апр. 2010 г.
А еще, а еще...
Короче, и ICQ была.
27 апр. 2010 г.
25 апр. 2010 г.
Что такое пьяный?
22 апр. 2010 г.
Физиология
Хотя, возможно, сокращением мышц организм доставляет туда свежую кровь. Универсальный драйвер :)
21 апр. 2010 г.
Блин
Интересно, кто-то сможет мне толком объяснить, почему для того, чтобы отсканировать что-то МФУ-шкой HP PSC 1513, она сначала должна отпечатать тестовый листик? И при этом она полчаса пытается что-то сделать с картриджами, не может затянуть бумагу, потом затягивает и мнет ее, потом опять не может начать тянуть листик, потом опять стучит картриджами... Иногда мне кажется, что для HP и Adobe программирует один и тот же марсианин со своим видением логики и юзабилити.
Блин, а почему моей любимой Опере в последней версии для отрисовки 5 страничек требуется 250 метров памяти?!
А почему программы сами закачивают обновления и ставят их без спросу?
Блин, куда катится мир?!
Наблюдения
20 апр. 2010 г.
Вакансия для терминатора
18 апр. 2010 г.
17 апр. 2010 г.
Небольшой список вопросов по программированию
C++
- Конструктор копирования, оператор присваивания
- Передача параметров по значению, ссылке, указателю.
- Константные ссылка, указатель
- Константная функция-член класса
- Явные и неявные конструкторы
- Оператор преобразования типа
- Преобразование типов static_cast, constant_cast, dynamic_cast, reinterpret_cast, C-cast
- Перегрузка операторов
- public-, private-, protected-члены класса
- static- члены класса
- Друзья класса
- Указатель на функцию
- Указатель на член класса
- Наследование классов
- Виртуальные функции
- Абстрактный класс
- Множественное наследование
- Виртуальное наследование, виртуальные базовые классы
- Пространство имен
- Шаблонные классы, шаблонные функции
- Перегрузка функций
- Специализация шаблонных классов и функций
- Частичная специализация шаблонных классов
- Члены-шаблоны класса
- Фрагментация памяти. Способы устранения
- Оптимизация возвращаемого значения
- Обработка исключений
- STL-контейнеры, STL-итератор
- STL-Allocator
- Ассоциативный контейнер
- Библиотека boost
- Умные указатели
- Функторы
Алгоритмы и математика
- Вычислительная сложность алгоритма
- Алгоритм нахождения НОД (наибольший общий делитель)
- Алгоритм быстрой сортировки
- Алгоритмы на графах: поиск вглубину, вширину
- Алгоритм Дейкстры (или др.) поиска кратчайшего пути в графе
- Метод Форда-Фалкерсона (ил др.) нахождения максимального потока
- Алгоритмы решения СЛАУ: метод Гауса и др.
- Численное решение нелинейного уравнения: методы Ньютона, золотого сечения и др.
- Быстрое преобразование Фурье
- Алгоритм поиска подстрок
- Алгоритм построения выпуклой оболочки
- Афинное преобразование плоскости
- Биноминальные коэффициенты, числа Стирлинга, перестановки
- Классы P, NP, NP-полные задачи
- Математические ожидания и дисперсия случайной величины
- Условная вероятность, теорема Байеса
- Медиана, alpha-квантили распределения
- Биноминальное и нормальное распределение
- Стеки и очереди
- Связные списки
- Очереди с приоритетами
- Hash-функции
- Бинарные деревья
- Красно-черные деревья
- Коды Хаффмана
- Задача линейного программирования, двойственность
- Симплекс-метод
- Алгоритм банкира
Система
- Критические секции, мьютексы (mutex)
- Deadlock, livelock
- Многопоточность, передача сообщений
- Разделяемая память
- GDI+
- Socket
- Video for Windows
- DirectShow
- Direct 3d
- MFC
Windows 2003 Server, Lotus Notes, ошибка открытия письма.
Access to resource "<URL-адрес htm файла во временной директории пользователя>" has been disallowed
После закрытия окна сообщения отображается только заголовок письма, а тело не отображается.
После недолгих изысканий выяснил, что причиной тому являются включенные ограничения NoRun и NoFileURL. Поводом к изысканиям вне Lotus-а стало то, что установленный Internet Explorer 8 тоже не хотел открывать эти файлы с точно таким же сообщением.
Первое из этих ограничений запрещает выполнение команд через Start/Run (Пуск/Выполнить), посредством Task Manager (Диспетчера задач) и отключает сочетание Win-R. Как оно связано с открытием файлов Internet Explorer-ом - не знаю. Но после отключения этого ограничения IE начал открывать эти файлы нормально. Однако Lotus по прежнему отказывался.
Второе ограничение запрещает обращаться через URL-имена типа
file:///c:/temp/file.htm
к локальным файлам. После отключения оного Lotus согласился работать нормально.
Оба ограничения отключаются либо через ГРупповую политику (gpedit.msc)
Конфигурация пользователя \ Административные шаблоны \ Меню «Пуск» и панель задач
, либо через реестр:
HKLM\SOFTWARE\Microsoft\Windows\Current Version\Policies\Explorer\
NoRun и NoFileURL - 0 - выключено, 1 - включено.
На сайте Microsoft указывается так же наличие этих ключей в ветке HKCU, но там я изменения не вносил.
13 апр. 2010 г.
11 апр. 2010 г.
Windows 2003 Terminal Server, Citrix 4.0
regsvr32 /u explhook.dll
После повторной регистрации библиотеки командой
regsvr32 /i explhook.dll
открытие окна Explorer'а, а не рабочего стола, возобновилось.
Вообще, пара слов по поводу Citrix.
У меня имеется опыт работы с терминальным режимом работы сервера Win2K3 и многопользовательской средой. И сейчас я задаю себе вопрос - почему я раньше не знал про возможности Citrix?!
Какие он дает преимущества по сравнению со стандартным виндовым RDP? Кроме того, что он используется на МКС? Кроме того, что он используется 10-ю крупнейшими банками европы, несколькими министерствами европейских стран?
Ну, во-первых, это безопасность. Это несколько вариантов криптования траффика. В то время, как Microfost только в 2008 сервере решил добраться до защиты трафика RDP-сессий.
Во-вторых, это передача звука в обоих направлениях для клиента. В штатном RDP это, опять-таки, появилось только в 2008 сервере.
В-третьих, это публикация приложений. То есть у нас есть сервер под Windows. Есть клиент с практически любой операционкой, в том числе мобильный. Есть приложение, которое должен пользовать клиент. Ставим это приложение на сервере, публикуем его, настраиваем подключение на клиенте и - вуаля. В линуксе, маке и любой другой операционке, для которой есть Citrix Reciever, мы получаем натуральное виндовое приложение. Скорость работы мобильного клиента, подключенного через GPRS не сильно отличается от пользователя, находящегося в локалке с сервером. И можно особо не беспокоиться при подключении из интернет-клубов, аэропортов и прочих публичных мест, так как при соответствующей настройке трафик надежно защищен.
В-четвертых, это даже возможность подключения через интернет-броузер. С, правда, установленным плагином, но для этого даже Citrix Reciever не нужен.
Ну и в-пятых, это контроль. Контроль загрузки серверов (работа с несколькими серверами для пользователя абсолютно незаметна - он и не подозревает, что каждый раз может подключаться к разным серверам, или запущенные приложения находятся в разных географических точках), контроль прав доступа к приложениям, объему памяти, устройствам и т.д. Печать, мапирование локальных устройств и дисков... В общем, сказка для админа.
Windows Server, Terminal, Virtual CD.
Первое, что было найдено - утилита от Microsoft. Судя по дефолтной пиктограммке от 6-й Visual Studio, программка не предполагалась в широкое использование. Она упоминается в статье "How to customize Windows PE by using the source files that are included with the Microsoft SMS 2003 Operating System Deployment (OSD) Feature Pack". Ставилась и тестировалась в Wiindows 2003 Server и Windows 2008. Обе - x32. На Windows 2008 x64 утилита работать отказалась - возникала ошибка инициализации драйвера.
Второй находкой оказалась утилита MagicDisk от MagicISO. Эта утилита спокойно работает и в x32, и в x64-операционках (разные сборки).
Обе утилиты бесплатны. Видимых ограничений на количество монтируемых дисков не обнаружено. Работают стабильно (пока глюков не замечено). Монтируемые диски остаются в системе и после перезагрузки оной и всеми пользователями.
Неожиданного в этих находках то, что они обе не значатся ни в списках продуктов, ни в центрах скачивания. Первая упоминается в статье, вторая - в разделе помощи.
UPD 2012-11-18: На сайте Майкрософт ссылка на файл не работает, но файл можно скачать на CNet.com - старая уважаемая файлопомойка.
7 апр. 2010 г.
6 апр. 2010 г.
Фрагментация памяти.
Preventing Memory Fragmentation
Applications that are free from memory leaks but perform dynamic memory allocation and deallocation frequently tend to show gradual performance degradation if they are kept running for long periods. Finally, they crash. Why is this? Recurrent allocation and deallocation of dynamic memory causes the heap to become fragmented, especially if the application allocates small memory chunks (int, an 8 byte object etc.). A fragmented heap can have many free blocks, but these blocks are small and non-contiguous. To demonstrate this, look at the following scheme that represents the system's heap. Zeros indicate free memory blocks and ones indicate memory blocks that are in use:
100101010000101010110
The above heap is highly fragmented. Allocating a memory block that contains 5 units (i.e., 5 zeros) will fail, although the systems has 12 free units in total. This is because the free memory isn't contiguous. On the other hand, the following heap has less free memory but it's not fragmented:
1111111111000000
What can you do to avoid heap fragmentation? First of all, use dynamic memory as little as possible. In most cases, you can use static or automatic storage instead of allocating objects dynamically. Secondly, try to allocate large chunks rather than small ones. For example, instead of allocating a single object, allocate an array of objects at once, and use these objects when they are needed. If all these tips don't solve the fragmentation problem, you should consider building a custom memory pool.
В двух словах. При выделении большого числа блоков памяти в куче накапливаются неиспользуемые несмежные области, которые не используются. Со временем эти области заполняют всё выделенную приложению кучу и приложение падает. Основные тезисы:
1. Старайтесь не выделять много маленьких блоков, а выделить один большой.
2. Старайтесь использовать статические или автоматические хранилища.
3. Пишите собственный менеджер памяти.
Можно добавить совет повторно использовать выделенную память.
Пасхальная служба. 3 апреля. Одесса. Иверский монастырь.
Паски ездили святить в Иверский монастырь. Было темно, холодно, много народу... Зато детям праздник :). Купили там 1.5 литра квасу и бутылку (наверное, пол-литровую - они там без опознавательных знаков продаются) кагора. Квас понравился - никаких стабилизаторов и усилителей вкуса не почувствовал. Один недостаток - 15 гивень отдали. 2 литра Ярило - лучшего, имхо, кваса, который продается у нас в магазинах, стоит 8 гривень. Кагор тоже хорош, но о его ингридиентах сложно судить.
Показалось, что проповедь (ее я слушал в пол-уха и на улице) модифицировали в сторону молодежи. Более просто и менее витиевато, чем в прошлые разы.
Несколько фотографий:
Пасха 2010. Иверский монастырь. |
5 апр. 2010 г.
Интересный перекресток
3 апр. 2010 г.
Китайский автопром.
Возникает мысль, что скоро мы будем ездить либо на дорогих китайцах, либо на дешевых европейцах. Что лучше? Не знаю. Пристегивайтесь!
Apple
Дык вот! На чем в 40/50-е годы выехал McDonald's, обставив конкурентов и став в последствии крупнейшей сетью фастфуда? Они урезали своё меню от, imho, 40 до 9 пунктов. Просто выбрать, просто заказать, просто заплатить и удобно съесть. Вариантов приготовления мало, все они стандартизированы и заучены назубок. Всё делается быстро и приемлемо качественно.
При чем тут Apple? А кто-то видел мониторы Apple Cinema 230, Apple Cinema 232i, Apple Cinema 236, Apple Cinema 240e, etc?! Нет. Нету у них такого. У них есть Apple Cinema 18", Apple Cinema 20", Apple Cinema 22". Они отличаются только размером экрана. Долго ли нужно думать, чтобы выбрать размер экрана? Мне хватит 18" для моих задач? Не хватит? Значит всё просто - берем 20". Есть деньги? Берем 22". Выбор ровно из 3 вариантов по одному параметру, который поймет даже секретарша. iPod? Nano - без экрана, Touch - с экраном. iPhone, iPad? Какие варианты выбора у каждого из продуктов? 2-3. И, опять-таки, по параметрам, которые понятны даже бабушке, продающей семечки. Без экрана, с экраном, с большим экраном. Просто выбрать, понятно заплатить, качественно съесть.
Странно? Но так и есть. Чем проще выбор, тем легче выбрать. Я, когда выбирал между Nokia 6300 и 6230, думал, наверное, минут 20. Потом консультант мне рассказал разницу этих двух телефонов (которая, по его словам, заключалась только в толщине корпуса и мощности батареи). 2 года спустя я его вспоминаю с мыслью, что он, эдакий кокашко, не рассказал мне о том, что на моём Nokia 6233 нет разъема под обычные наушники, что клавиша 2 там жестко забронирована под VideoMail, которого у нас в помине нет, что у него джойстик работает чуть по-другому, нежели у 6300...
В общем, больше вариантов выбора - больше проблем. И у покупателя, и у производителя. Меньше вариантов выбора - меньше проблем. И всем проще.
KISS - keep it simple, stupid.
2 апр. 2010 г.
Женщины и морские свинки :)
1 апр. 2010 г.
Ubuntu. Список любимых приложений
Создать и сохранить список установленных пакетов:
sudo dpkg --get-selections > installed_list.txt
После инсталляции новой системы сделать
sudo dpkg --set-selections < installed_list.txt
sudo apt-get -y update
sudo apt-get dselect-upgrade