воскресенье, 24 мая 2009 г.

Woody & Vista - оказывается они могут жить вместе..

С WinXP я распрощался давным-давно (дома по крайней мере), но приходилось ее держать в виде виртуальной машины - под вистой Woody работал глюкаво, а шкафов я себе нарисовал в нем уже ого-го скоко..

А оказалось, что всего-то надо было в свойствах ярлыка поставить галочку на закладке Compability - Disable Desktop Composition: теперь при запуске виста переключается из аеро в простой режим и Woody нормально работает.

Но ХР в виртуалке все равно придется оставить - есть супер-пупер древняя программа, написанная на FoxPro 2.6 для Dos-а, которую я периодически сапортю.. жду - не дождусь, когда ее (программу) решат похоронить с почестями (на которые она не заслуживает впрочем.. наверное потому что не я ее писал ;) )

пятница, 22 мая 2009 г.

Ремонт: окно..

Вчера установили в спальню окно - как и в случае в кухней в свое время это дало старт ремонту в комнате :)

Начну завтра с откосов (как настоящий джедай я откосы не заказывал, а решил делать сам - сэкономленные деньги потрачу на 5 бутылок портвейна к примеру ;) или на очередную "очень нужную" приблуду для компа)

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


четверг, 21 мая 2009 г.

WinXP vs Win7

Не претендуя на абсолют мои наблюдения - WinXP против Win7 - на примере моего последнего компьютера в дом на роль htpc:

  • Свежесть операционки определяет количество поддерживаемого оборудования: если я поставил ХР, у меня в "неопознаных" висело 5 устройств, для которых пришлось искать/качать драйверы (иногда очень и очень немаленькие размером, что меня просто убивает.. чего там в звуковой карте такого военного, что драйвер для нее весит метров 30?)

    После установки Win7 я ничего не делал - все определилось само
  • Из-за чего я перепробовал на этом компьютере все варианты windows - скорость загрузки; что бы там не говорили о тормознутости, но Win7 грузится быстрее всех (пусть какие-то службы запускаются уже после появления рабочего стола - мне как пользователю глубоко фиолетово, главное что появление рабочего стола и возможность запустить программу быстрее, чем в XP
  • Поскольку купить откровенно отстойный компьютер сейчас сложно (из новых я имею в виду), то все финтифлюшки типа аеро автоматически будут на нем работать; не жизненно-необходимо, но глаз радует
  • 2 гига памяти сейчас в общем-то не роскошь, а стандарт (имхо); после 7 часов работы с десятком программ у меня сейчас (если верить таскменеджеру) свободно 46% памяти; не знаю сколько там %%, но затыков со сбросом в свап я пока не замечал (abhtajrc потратил на себя 165 метров, фотошоп 120, делфи 60 - но я ее недавно перезагружал.. coolpro 30, сайдбар 10, мелочь разная по 10)
  • Виртуальная XP для программ прошлого века :) - правда пока не убедился, что она удобнее чем VMWare, плюс требует аппаратной поддержки от процессора (дома заработала, на работе отказалась)
Много очень удобных фишек именно в Win7:
  • обновленный проводник, строка адреса мне всегда нравилась, иногда только случалось, что в строке кроме текущей папки не помещалось больше ничего - но в 7-ке пофиксили;
  • панель с быстрым доступом слева к дереву с папками компьютера и ссылками на полезные папки;
  • идея "библиотек", когда я добавляю в библиотеку папки с видео, которые разбросаны по всему компьютеру, а открывая библиотеку вижу их все в одном месте;
  • стартовое меню, когда для запуска программы я просто набираю несколько букв имени и через мгновение система мне предложит имя для запуска;
  • строка поиска практ. везде в окне проводника - когда я хочу удалить программу, я открываю панель управления и начинаю набирать "Uni.." - через мгновение остаются только ссылки, связанные с удалением программ, гаджетов, шрифтов и прочего
  • механизм переключения между задачами (по Win-Tab у меня как-то так и не прижился) - если перебирать запущенные программы по Alt-Tab и задержаться на какой-то программе, все окна, кроме окна этой программы, прячуться за прозрачными рамками - на 2-х мониторах с запущенной кучей задач очень помогает
  • как и фишка группировки в таск-баре - если запущено несколько проводников скажем, то просто наведя мышку на иконку появятся окошки-эскизы, наведя мышку на такое окошко ошо найдется и покажется, остальные окна в это время временно попрячутся
  • да, встроенная лупа - если нажать Win-Num+, то запустится "магнифиер" - которым я раньше никогда не пользовался, а теперь он стал полезной утилиткой (при программировании интерфейсов помогает попиксельно посмотреть, как там все отрисовалось).. по Win-Num- все уменьшается
  • прикольная и полезная иногда фича - если ухватить окно за заголовок и "потрясти", то все окна свернуться :)
Есть и глюки, надеюсь глюки RC:
  • после слипа как-то все глючило (но комп на работе проклинаю с момента покупки, что слип что гибернейт у него всегда глючили)..
  • с сетью (с расшариванием ресурсов) разобрался не до конца пока (однажды по какой-то причине расшарилась вся папка Users - с документами всех пользователей в компе.. ничего там военного не было, но сам факт..
  • на htpc глюки с телевизором.. поставил драйвер от висты от ноября 2008, все отлично было, но Windows Update предложила обновление, а я не сообразив согласился - с новым драйвером стало хуже..
Плюсов и минусов еще тыщи, только я их специально не запоминаю.. что вспомнил вот с ходу, то и перечислил...

Кровать..

Потихоньку рисуем кровать, дорисовались до такой пока картинки:




Элементы украшательства придумываются, вот например вариант верха:

вторник, 19 мая 2009 г.

Про ролики..

У старшего дитя есть заначка - картонная коробка с надписью "На телефон" (его телефон 2 раза сдавался на гарантийный ремонт, в длинные недели ожидания видимо захотел новый, чтоб ява-игры шпилил, с блютузом был и все такое)

Назначение содержимого коробки впрочем меняется примерно как погода у нас сейчас; в субботу пришел он с твердым намерением выгрести все деньги и купить роликовые коньки. Денег наскребалось гривен 150 с копейками ($20 где-то другими словами), но на рынке его уже ждала "до пол-четвертого" тетка-продавец, которая уже подобрала отличные ролики.. (удавил бы)

Начал гуглить/выяснять для него (еле уговорив не нести 150 гривен тут же) про ролики - что/какие/почем, узнал много нового; понятно, что за $20 ролики - хлам, который надо выбросить не распаковывая; выяснил, что у нас в городе всего один магазин есть, "узкоспециализирующийся" на подобных вещах; порядок цен на самые простые модели от $120 (а скорее всего дальше, самые простые наверное на самых маленьких любителей спорта)

И в раздумиях: дитю ролики хочется, купить хлам не хочется - так что вроде есть смысл купить нормальне, пусть и дорогие; но увлечение роликами может (с вероятностью процентов 80-85) и пройти за 2 дня - кататься все равно негде, синяков да шишек набьет да и забросит их в кладовку.. Да и за лето нога вырастет и осенью в любом случае их в кладовку..

И что делать с его роликами..

Про удаленный доступ и ssh..

Удаленный не в смысле "его стерли", а в смысле "он далеко" :)

Дома стоит компьютер, специально обученный всего нескольким вещам: 1) быть подключенным к интернету по адсл, 2) разбираться со всех сторон - кому можно чего, а кому нельзя делать с интернетом, 3) качать/раздавать файлы.. Стоит он под столом, без монитора, без клавиатуры, голый и босый практически

На нем установлена Ubuntu, в которую я хожу удаленно для управления всем этим хозяйством; хожу по ssh, пользовался для этого putty и все меня устраивало, пока в поисках этой самой putty зашел на сайт и скачал Tunnelier (сайт тут, выдается гуглом первой строчкой, но почему-то раньше не видел)

С тех пор использую именно его; при подключении в одном окне обычный терминал, где можно также как и в putty поуправлять чем-нибудь, а супер-фича (ну для меня по крайней мере) еще в одном окне, которое реализует гуй для "ftp over ssh" (раньше я пользовалься консольной программкой для передачи файлов в свой удаленный компьютер)

Обычный сценарий таков: читая rss (в google reader-е конечно, конечно в firefox-е) вижу запись, что появилась скажем свежая серия House MD; иду на torrents.ru, скачиваю торрент-файл, соединяюсь с домом, смотрю, что там и как, переписываю торрент-файл в специально обученную папочку, торрент-клиент видит новый торрент-файл в специальной папочку и начинает качать файлы.. по приходу домой садимся с женой и смотрим свежую серию..

Да, подумал вот - до осени можно комп выключать получается - сезон то закончился ;) качать/смотреть нечего..

Затевашки с новой мебелью..

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

Вот што-то типа такого:


Матрацы до этого уже сходили перещупали, практически выбрали 200*90 ("ну чтоб до армии ж на них спали, а если в папу пойдут ростом - то надо двухметровые"), но с рулеткой походили по комнате, померяли, решили попустится, матрацы будут 190 см * 80 см - на ближайшие годы хватить должно, а там может кровать раньше развалится :) чем они до 2-х метров дорастут.. зато сьэкономили по 10 см, вроде мелочь, а место выиграли

Жене всегда хотелось лесенку совместить с ящиками, так что вовремя попалась на глаза картинка из инета и вспомнили.. внутри каждой ступеньки будет выдвижной ящик для игрушек и/или прочего хлама; снизу тоже будут большие ящики выдвижные для постельного и прочего. Сзади будет "спинка", по которой будет идти труба, на которой будут висеть подушки

Может быть (а может и нет) внутри сделаем угловых полочек, подсветку - если будет место и целесообразность.. на картинках вроде красиво все, но с рулеткой все опускается на землю с небес - или снизу комфортно и просторно, зато сверху в потолок головой стучаться будут, либо наоборот.. ну или "ни вашим, ни нашим", что правильнее

Осталось теперь все перенести в чертежи.. вчера из-за финалов сезонов "Хауса" и "Теории большого взрыва" глазели телевизор допоздна, сил хватило только вот на такое карандашное рукотворство.. главное не откладывать его в длинный ящик теперь..

понедельник, 18 мая 2009 г.

Про фондю..

А мы замечательно провели выходные - решили не травмировать мою психику покупкой сыра, попыткой сделать фондю и отвратительным результатом, поэтому делали мясное фондю..

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

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

На очереди экспериментирование с инградиентами для "мясного" фондю (жена уже предложила рыбу) и все таки поиск правильного сыра :)

пятница, 15 мая 2009 г.

Хочу фондю (опять)..

На фоне уныния и затыков с работой организм требует отвлечь его (организм) чем-то приятным.. например пожрать :)

Хочется попробовать сделать фондю, снова.. чугунок я жене на НГ еще подарил, а с тех пор всего 2 раза сподобились попрактиковаться, и оба раза что-то не получилось.. видимо в сыр наш уже ничего кроме резины не кладут при "изготовлении", иначе не обьяснишь, почему получается резиноподобная масса, которая никак не желает себя вести так, как должна согласно рецепту

И не думаю, что дело в каком-то очень специальном сыре - учитывая, что фондю было придумано пастухами, которые сидя в своих альпийских горах черти по скоку таким образом доедали высохший хлеб и сыр семьсот лет назад - скорее дело в составе современного сыра (как в общем и бОльшей части продуктов в наших маркетах), который уже доудешевляли непонятно чем дальше некуда

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


четверг, 14 мая 2009 г.

Про альфа-контролы, игры и вообще нытье..

Никак не добью проект текущий, красивость интерфейса достигается с помощью альфа-контролов (это реклама: сайт тут; очень неплохая подборка компонентов для создания нестандартного интерфейса приложения, для exUSSR бесплатная)

Все замечательно, только на който хрен мне надо менять размер формы ("окно фьють - и плавненько увеличилось, потом назад фьють - и уменьшилось"); никак у меня "фьють" не получается :'-(

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

Ненавижу все..

вторник, 12 мая 2009 г.

Пример реализации расширения для показа эскиза файла

В ответ на этот коммент сделал пример - работающий

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

Но совсем немного.. Вот работающий пример - скачать пример

пятница, 8 мая 2009 г.

Win7 - красивости

Благополучно переехал на Win7 RC - мне нравится еще больше

Одна из фишек, которую захотелось сразу сделать - показ прогресса чего-нибудь прямо на кнопке в таскбаре; вроде получилось, ничего военного в общем нету; код:

uses
  windows;

type
  TBPF = (TBPF_NOPROGRESS = 0,
          TBPF_INDETERMINATE = 1,
          TBPF_NORMAL = 2,
          TBPF_ERROR = 4,
          TBPF_PAUSED = 8);
  TBATF = (TBATF_USEMDITHUMBNAIL = 1,
           TBATF_USEMDILIVEPREVIEW = 2);

function InitTaskBar: HResult;
function SetTaskBarState ( hWnd: HWND; State: TBPF ): HResult;
function SetTaskBarValue ( hWnd: HWND; Value: integer ): HResult;

implementation

uses
  ActiveX;

const
  CLSID_TaskbarList: TGUID = '{56fdf344-fd6d-11d0-958a-006097c9a090}';
  IID_ITaskbarList:  TGUID = '{56FDF342-FD6D-11d0-958A-006097C9A090}';
  IID_ITaskbarList2: TGUID = '{602D4995-B13A-429b-A66E-1935E44F4317}';
  IID_ITaskbarList3: TGUID = '{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}';

type
   ITaskbarList = interface(IUnknown)
      ['{56FDF342-FD6D-11d0-958A-006097C9A090}']
      function HrInit : HResult; stdcall;
      function AddTab(hWndOwner : HWND) : HResult; stdcall;
      function DeleteTab(hWndOwner : HWND) : HResult; stdcall;
      function ActivateTab(hWndOwner : HWND) : HResult; stdcall;
      function SetActiveAlt(hWndOwner : HWND) : HResult; stdcall;
   end; { ITaskbarList }

  ITaskbarList2 = interface(ITaskbarList)
    ['{602D4995-B13A-429b-A66E-1935E44F4317}']
    function MarkFullscreenWindow(wnd : HWND; fFullscreen : bool) : HResult; stdcall;
  end;

  ITaskbarList3 = interface (ITaskbarList2)
  ['{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}']
    function SetProgressValue (hWnd: HWND; ullCompleted: int64; ullTotal: int64): HResult; stdcall;
    function SetProgressState (hWnd: HWND; tbpFlags: TBPF): HResult; stdcall;
    function RegisterTab (hwndTab: HWND; hwndMDI: HWND): HResult; stdcall;
    function UnregisterTab (hwndTab: HWND): HResult; stdcall;
    function SetTabOrder (hwndTab: HWND; hwndInsertBefore: HWND): HResult; stdcall;
    function SetTabActive (hwndTab: HWND; hwndMDI: HWND; tbatFlags: TBATF): HResult; stdcall;
    function ThumbBarAddButtons (hWnd: HWND; cButtons: integer; pButtons: pointer): HResult; stdcall;
    function ThumbBarUpdateButtons (hWnd: HWND; cButtons: cardinal; pButtons: pointer): HResult; stdcall;
    function ThumbBarSetImageList (hWnd: HWND; himl: pointer): HResult; stdcall;
    function SetOverlayIcon (hWnd: HWND; hIcon: HICON; pszDescription: PWideChar): HResult; stdcall;
    function SetThumbnailTooltip (hWnd: HWND; pszTip: PWideChar): HResult; stdcall;
    function SetThumbnailClip (hWnd: HWND; prcClip: PRect): HResult; stdcall;
  end;

var
  pTaskBarList: ITaskbarList3;

function InitTaskBar: HResult;
begin
  Result := CoCreateInstance (CLSID_TaskbarList, nil, CLSCTX_INPROC_SERVER, IID_ITaskbarList3, pTaskbarList);
  if Failed ( Result ) then
    pTaskBarList := nil;
end;

function SetTaskBarState ( hWnd: HWND; State: TBPF ): HResult;
begin
  if pTaskBarList = nil then
    Result := S_FALSE else
    Result := pTaskBarList.SetProgressState ( hWnd, State );
end;

function SetTaskBarValue ( hWnd: HWND; Value: integer ): HResult;
begin
  // assume Value = 0-100
  if pTaskBarList = nil then
    Result := S_FALSE else
    Result := pTaskBarList.SetProgressValue ( hWnd, Value, 100 );
end;

Использование - проще некуда: код можно выделить в отдельный юнит и подключать его при необходимости; перед использованием надо вызвать InitTaskBar - если получится создать нужный интерфейс (читай - если он есть, т.е. если мы в Win7), то вернется S_OK и значит можно вызывать функции прогресса.. хотя их можно вызывать и так, ничего не случится, но для красоты..

Ну и дальше - вызываем SetTaskBarState c:
  • TBPF_NORMAL, если будет показываться "обычный" прогресс
  • TBPF_INDETERMINATE, если надо отобразить процесс неопределенной длительности
  • TBPF_ERROR, если надо показать, что в процессе произошла ошибка (прогресс-бар окрасится в красный цвет)
  • TBPF_PAUSED, если процесс запаузили (прогресс-бар окрасится в желтый)
А для обновления прогресс-бара вызываем SetTaskBarValue, передавая значение в %% для отображения

Вот пример, как все должно работать: http://rapidshare.com/files/230523628/TaskBarDemo.zip.html

Вот как все работает (сначала надо нажать btn1 - это собственно инициализация, потом пощелкать по радиокнопкам и подвигать ползунок):
-> ->



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

Погоду смотрю в гаджете виндовом - он в RC "из коробки" наконец заработал..

понедельник, 27 апреля 2009 г.

MediaPortal vs XBMC

Что-то в последнее время в этом споре у меня побеждать начинает xbmc...

четверг, 23 апреля 2009 г.

Раздавал давеча писанки

На работе устроил раздачу писанок (а для чего же они делаются), вот этих:





Отмеченные стрелками - сам писал :)

вторник, 14 апреля 2009 г.

MediaPortal 1.0.1 released...

Вчера увидел новость, скачал, поставил..

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

Часа полтора пытался восстановить все как было; заодно обновил StreamedMP и MP-TV Series вкупе, база сериалов обновлялась как раз где-то час из полтора, при этом "Как я встретил вашу маму" обнаружился (хотя раньше пропускался), зато "Доктор Кто" теперь идентифицируется как версия 1968 года..

Надо было не трогать блин - но есть надежда, что что-то ж лучше сделали :)

з.ы. вообще надо было whats new посмотреть - может все же не надо было обновляться :)))

Пасха идет...

Вчера игрался - рисовал писанки (раскрашивал яйца то есть); не просто красил в шелухе, а делал красиво :)

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

Вот что у жены получалось в позапрошлом году к примеру:

четверг, 2 апреля 2009 г.

Замена кадров в 3gp файле

Нужен код, реализующий с помощью ffmpeg замену выбранных исходных кадров в 3gp видео на свои.

Не так все просто на самом деле с этим.. если бы мне надо было для моих проектов, я бы может и попарился, а так - времени нет

Смысл в том, что тут есть может не очень очевидная проблема: (очень грубое описание) при кодировании видео кодер берет картинку первого кадра и упаковывает ее каким-нибудь продвинутым способом - этот кадр называется "ключевым"; затем берется картинка следующего кадра, определяются различия с предыдущей картинкой и упаковывается только различие между кадрами, так продолжается до следующего ключевого кадра (частота которых может задаваться)

При распаковке декодер распаковывает ключевой кадр, получает полную картинку; затем распаковывается только "разница" картинок и накладывается на предыдущий кадр, получаем 2-й кадр полностью

А теперь скажем надо заменить 5-й кадр в видеоряде: если просто вставить на место 5-го кадра свой упакованный кадр, даже отметив, что он ключевой - как декодер декодирует и покажет 6-й кадр? Он ведь декодирует только разницу в картинках и наложит ее на вставленый кадр - получим мешанину на экране, мешанина будет видна какое-то время - пока не раскодируется очередной ключевой кадр

Метод решения в лоб - декодировать подряд все кадры, тут же кодируя их назад, в нужный момент подменяя картинку.. самый простой способ, но дурная работа при этом составит процентов 90 наверное, смотря сколько кадров подменяется..

Метод правильный - тот же способ, но только в пределах оджного GOP (group of picures, группы кадров между двумя ключевыми кадрами)

1 апреля..

Пришел вечером домой, отдал жене деньги со словами: "На, это последняя зарплата, меня уволили".. Такой вот розыграш

среда, 11 марта 2009 г.

Опять паяю!..

Стряхнул пыль, взял в руки паяльник на выходных: в htpc штатно предусмотрено 2 вентилятора на выхув, маленькие, сантиметров по 6 диаметром наверное; понятное дело, что на полной скорости они шумят не по детски.
Сначала вообще не подключал, но корпус компактный, вентиляции внутри практически нет - поэтому после нескольких зависаний компьютера начал подозревать перегрев; кроме того угол корпуса, в котором живет ж.диск, ощутимо теплый, что для диска наверное тоже нехорошо; так что включил вентилятор - корпус стал реально холодный, но шумит!
Поэтому делал регулятор скорости - нашел в закромах LM317 (выпаял несколько из дохлого блока питания кажется), поискал что это - оказалось стабилизатор, нашел схемку типовую, перерисовал в редакторе схем, сделал плату; плата совсем простая, поэтому нарисовал лаком для ногтей, а дырки сверлить оказалось легко 1-мм сверлом моим шуруповертом
Платку притянул хомутиком внутри корпуса к какой-то "балке" (заизолировав понятное дело) - комп теперь и нешумный, и негорячий (мог бы конечно быть или нешумнее, или холоднее, но все сразу - пока никак)


Заработало (что странно) с первого раза.. такое со мной случается очень редко :)


вторник, 10 февраля 2009 г.

Такая вот игра слов...

Читаю в новостях:

"Патриарх Кирилл I не даст Украине автокефалию"

и как в том исследовании вижу только про "фекалии"

Сермяжная проза жизни?..