30 апр. 2010 г.

Тестировщик на работе

Да. Они такие... :) Взято отсюда.

Самый короткий анекдот для приверженцев vim

Самый короткий анекдот для фанатов Vim и волна протеста от любителей Emacs.
vim ~/.emacs

29 апр. 2010 г.

А еще, а еще...

А еще DSK (российский медиахолдинг, владеющий, в частности, mail.ru) купил у АОЛа ICQ. Теперь ждем нового монстроидального Mail.ru-агента.
Короче, и ICQ была.

HP купила Palm

Вот... HP купила Palm.
Ну, что еще сказать?! Была Sun, была Palm...
А мы сериалы смотрим.

27 апр. 2010 г.

iGoogle. Какие-то точки появились...

Сегодня на виджетах iGoogle возникли какие-то точки. Глюки? Или баги?

25 апр. 2010 г.

Что такое пьяный?

Это когда попал в замочную скважину с первого раза и думаешь: "О! А я еще не настолько пьяный..."

22 апр. 2010 г.

Физиология

Я понял для чего организм отягивается после сна! Это тест системы! Ощупываем все девайсы, чтобы на месте были. Своеобразный PNP. А вдруг что-то новое появилось?... :)
Хотя, возможно, сокращением мышц организм доставляет туда свежую кровь. Универсальный драйвер :)

21 апр. 2010 г.

Блин

Интересно, кто-то сможет мне толком объяснить, почему для того, чтобы отсканировать что-то МФУ-шкой HP PSC 1513, она сначала должна отпечатать тестовый листик? И при этом она полчаса пытается что-то сделать с картриджами, не может затянуть бумагу, потом затягивает и мнет ее, потом опять не может начать тянуть листик, потом опять стучит картриджами... Иногда мне кажется, что для HP и Adobe программирует один и тот же марсианин со своим видением логики и юзабилити.

Блин, а почему моей любимой Опере в последней версии для отрисовки 5 страничек требуется 250 метров памяти?!

А почему программы сами закачивают обновления и ставят их без спросу? 

Блин, куда катится мир?!

Наблюдения

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

20 апр. 2010 г.

Вакансия для терминатора


Очередное объявленьице на сайте с вакансиями. НЕ иначе придет к ним терминатор устраиваться на работу. Правда, со сменным блоком кассет.

Мысли

Что наша жизнь? Игра!
Только жаль, что один из участников - желудок. А зачастую и не один.

QA

Сижу, читаю про QA. Спросил у Гугла. Гугл ответил.

18 апр. 2010 г.

Круговорот серверов в природе

Не совсем круговорот, но де-то так :)

Остановись, мгновенье...

Что недавно было на Гаити? Фотообвинение! Всё началось с Ланжерона.


Alice in ZombieLand

17 апр. 2010 г.

Небольшой список вопросов по программированию

Вот небольшой список вопросов по программированию на C++. Я по нему обновляю свои знания оного:

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, ошибка открытия письма.

В какой-то момент на терминальном сервере под Win2K3 при выборе в списке определенных писем в 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, но там я изменения не вносил.

11 апр. 2010 г.

Windows 2003 Terminal Server, Citrix 4.0

На терминальном сервере с подключением через Citrix возник глюк. При попытке открытия опубликованного прилолжения Explorer вместо него открывается рабочий стол пользователя. После долгой возни и поисков решений выяснилось, что в пылу борьбы с еще одним глюком (при открытии в терминальной сессии окна Explorer через Win-E с последующим закрытием этого окна происходит закрытие Explorer-а. Он сразу запускается, но при этом все открытые окна обозревателя закрываются - глюк пока не вылечили) была отключена библиотека explhook.dl командой
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.

Недавно столкнулся с задачкой монтирования виртуальных CD в Windows 2003/2008 Terminal Server. Поиски эмуляторов, которые бы нормально работали в многопользовательской среде терминального сервера, в принципе, были не долгими, но немного неожиданными.
Первое, что было найдено - утилита от 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 г.

Фрагментация памяти.

Небольшя заметка по поводу фрагментации памяти в приложениях. В частности, можно отнести к теме C++. Во многих других языках есть автоматические сборщики мусора, которые в той или иной степени эту проблему решают. Заметка некоего Дэнни Калева (Danny Kalev) с мертвой страницы www.devx.com:


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 г.

Китайский автопром.

В продолжение заметки про покупку китайцами Volvo. General Motors в 2009 году вел переговоры с китайцами о продаже им Hummer. Но китайские власти чему-то возмутились и сделка сорвалась. 12/04/2010 со сборочной линии сойдет последний Hummer. GM больше не планирует их выпускать.

Возникает мысль, что скоро мы будем ездить либо на дорогих китайцах, либо на дешевых европейцах. Что лучше? Не знаю. Пристегивайтесь!

Apple

Я вот что подумал. Почему Apple так хорош?! Сторонники, противники оного... Всё равно всем понятно, что то, что делает 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 г.

Еще про админов и морских свинок :)))


Из того же 9gag. Шедевр! :) Адназначна!

Женщины и морские свинки :)

Последнее время подвисаю на www.9gag.com. Иногда попадаются шедевры. Вот один из них. Где таких админов раздают? :)

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