Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Закусь к пиву: сосиски запеченые с сыром

24.10.2010 | Категория: А еще я туда ем! | Автор: ManHunter

Сосиски запеченые с сыром

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

Читать статью целиком »
Просмотров: 12328 | Комментариев: 9

Музейно-выставочный комплекс "Рабочий и Колхозница"

20.10.2010 | Категория: Жизнь в оффлайне | Автор: ManHunter

Музейно-выставочный комплекс "Рабочий и Колхозница"

Музейно-выставочный комплекс "Рабочий и Колхозница" располагается в гигантском постаменте знаменитой статуи скульптора Веры Мухиной и архитектора Бориса Иофана, которая была создана в 1935-1937 годах для советского павильона на Всемирной выставке в Париже, а потом нашла свое место у северного входа на ВВЦ. В октябре 2003 года начались работы по ее реконструкции. Осенью 2009 года она вновь появилась у ВВЦ.

Читать статью целиком »
Просмотров: 10850 | Комментариев: 9

Плеер Ritmix RF-4500 8Gb

18.10.2010 | Категория: Обзоры техники | Автор: ManHunter

Плеер Ritmix RF-4500 8Gb

Спустя почти два года непрерывного использования, мой верный плеер Ritmix RF-7400 начал барахлить. Периодически при воспроизведении проскакивают какие-то посторонние щелчки и шумы, заедает кнопка воспроизведения, начала отслаиваться защитная пленка, аккумулятора без подзарядки стало хватать от силы на 2-3 дня. В остальном же как работал, так и работает. Но из-за указанных недостатков пришлось искать ему замену. И если тогда это был мой первый плеер, купленный по совету продавца, то сейчас я точно знаю, что я хочу от аудиоплеера. Это должен быть девайс без лишних наворотов, максимально громкий, легкий и тонкий, чтобы не оттягивать карманы, желательно с механическими кнопками, с достаточной емкостью памяти. В линейке аудиоплееров марки Ritmix был выбран кандидат - плеер Ritmix RF-4500 8Gb.

Читать статью целиком »
Просмотров: 10429 | Комментариев: 18

Использование HTML-комментариев для хранения данных

16.10.2010 | Категория: Web-мастеру и не только | Автор: ManHunter
Как-то меня посетила мысль проверить, как определяются HTML-комментарии в DOM-структуре документа, и как можно получить доступ к их содержимому. Ведь по сути они являются полноправными составляющими документа. Напрямую, через ID, имя и другими подобными способами, естественно, сделать это не получится, т.к. тег комментария не имеет ничего подобного. Но сделать это все-таки удалось, привязавшись к соседнему тегу одного уровня с нужным комментарием. После этого элемент комментария со всеми потрохами можно получить через функцию JavaScript nextSibling или previousSibling, в зависимости от вашей ситуации. Это можно посмотреть, например, вот на таком фрагменте кода:
  1. <div>
  2. <!--first comment--><div id="main_div">Main DIV</div><!--second comment-->
  3. </div>
  4.  
  5. <script type="text/javascript">
  6. // Получить опорный элемент
  7. var el=document.getElementById('main_div');
  8. // Сообщение "first comment"
  9. alert(el.previousSibling.nodeValue);
  10. // Сообщение "second comment"
  11. alert(el.nextSibling.nodeValue);
  12. </script>
Можно, конечно, перебрать все дочерние элементы документа, начиная от корневого, но описанным выше способом удобнее выбрать именно нужный комментарий. Способ с перебором элементов тоже приведу:
  1. <div id="overall">
  2.   <a href="#">link</a>
  3.   <!--first comment-->
  4.   <div id="inner_div">
  5.      inner div
  6.      <!--second comment-->
  7.   </div>
  8.   plain text
  9. </div>
  10.  
  11. <script type="text/javascript">
  12. var el=document.getElementById('overall');
  13. for (var 0el.childNodes.lengthi++) {
  14.   if (el.childNodes[i]=='[object Comment]' ||
  15.       el.childNodes[i]=='[object HTMLCommentElement]') {
  16.     alert(el.childNodes[i].nodeValue);
  17.   }
  18. }
  19. </script>
Последовательно перебираются все дочерние элементы, если текущий объект имеет тип [object Comment] или [object HTMLCommentElement] (в случае Internet Explorer), то значит найден комментарий. Несмотря на некоторые неудобства, способ с обходом дерева DOM тоже можно использовать, когда привязка к строго определенным элементам не требуется, а надо просто получить содержимое комментариев.

Читать статью целиком »
Просмотров: 5525 | Комментариев: 17

Экранная лупа на Ассемблере

15.10.2010 | Категория: Образ мышления: Assembler | Автор: ManHunter
Алгоритм реализации экранной лупы достаточно простой. Надо получить часть изображения рабочего стола и скопировать его с масштабированием в нужную область вашего приложения. Сделать это можно при помощи функции StretchBlt. Если посмотрите описание, то увидите, что для работы этой функции требуются следующие параметры: размеры результирующей области, размеры исходной области и контексты устройств (окон), в которых находятся области. А поскольку мы сейчас разрабатываем лупу, значит она должна увеличивать, то есть размеры исходного окна должны быть пропорционально меньше результирующего. Коэффициент пропорциональности и есть коэффициент увеличения лупы. При инициализации окна выполним предварительные расчеты:
  1.         ...
  2.         ; Получить контекст окна лупы
  3.         invoke  GetDlgItem,[hwnddlg],ID_ZOOM
  4.         mov     ebx,eax
  5.         invoke  GetDC,eax
  6.         mov     [wDC],eax
  7.  
  8.         ; Получить размеры окна лупы
  9.         invoke  GetClientRect,ebx,coord
  10.         mov     eax,[coord.right]
  11.         sub     eax,[coord.left]
  12.         mov     [dWidth],eax
  13.         mov     eax,[coord.bottom]
  14.         sub     eax,[coord.top]
  15.         mov     [dHeight],eax
  16.  
  17.         ; Получить контекст десктопа
  18.         invoke  GetDesktopWindow
  19.         mov     [hDesktop],eax
  20.         invoke  GetDC,eax
  21.         mov     [dDC],eax
  22.         ...
Как теперь запустить экранную лупу? Здесь есть два варианта: при получении сообщения от мыши и по таймеру. У каждого способа свои достоинства и недостатки. Если обрабатывать сообщения мыши, то требуется инжект вспомогательной dll во все процессы, а экран лупы будет обновляться только при движении мыши. Это существенно снизит нагрузку на систему, но если окно под курсором будет обновляться, а курсор останется неподвижным, то лупа получит только тот кадр, который был при последнем движении курсора. Обновление по таймеру создаст дополнительную нагрузку на систему, но при этом изображение в лупе будет в точности соответствовать текущему состоянию окна под курсором. Оба способа имеют место быть, каждый под свои задачи.

Читать статью целиком »
Просмотров: 6457 | Комментариев: 6

01 ... 370 371 372 373 374 375 376 ... 437
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.1 сек. / MySQL: 2 (0.0323 сек.) / Память: 4.5 Mb
Наверх