Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-21-57
#original-date: 31.03.2008 Mon
#original-time: 9:57 PM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

Что подразумевает программист, когда говорит...

1.Невозможно в принципе - Я не знаю, как это сделать.

2.Невозможно - Я знаю как, но мне лениво.

3.Сложно - Придется прочитать документацию.

4.В принципе, реализуемо - Я как раз вчера скачал из интернета библиотеку, которая решает поставленную задачу. /* Мой любимый ответ ^_^ */

5.Работает - Компилируется.
6.Отлаживаю - Не компилируется.
/* А эти два пункта вообще блеск ^_^ */

7.Прогоняю тестовые примеры - Пытаюсь найти такой, на котором программа не вываливается. /* "Правило наименьшего удивления - программа должна работать так, чтобы вызывать наименьшее удивление пользователя." */

8.Работал допоздна - Играл по сети.

9.После обеда - Часам к 18:00. /* Это про сенсея ^_^ */

10.Вероятно - Вероятность равна 1,5%.

11.Мы пробуем несколько различных подходов - Мы до сих пор не знаем, что делать.

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

13.У нас выработана четкая проектная координация - Мы знаем, кому намылят шею, если вдруг что.

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

15.Предварительные операционные тесты прошли успешно - Мы сами удивились, что эта идиотская штука работает.

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

17.Да, хорошо, мы глянем - Забудьте! У нас и без этого достаточно проблем.

18.Пожалуйста, прочитайте и распишитесь - Давайте разделим ответственность за полный провал.

19.Позвольте узнать ваше мнение - Мы можем его послушать, пока то, что вы говорите, не будет влиять на то, что мы уже сделали.

20.Годы разработки... - Одна программа в итоге заработала.

21.Мы делаем все в соответствии со стандартами! - Мы всегда так делаем!

22.Это от многого зависит... - Оставь надежду добиться внятного ответа. /* Ещё один мой любимый ответ ^_^ */

23.У нас произошел грандиозный прорыв - После очередной попытки программа почти загрузилась. /* Красота ^_^ Грандиозным прорывом было когда Ubuntu Server почти встал на виртуальную машину ^_^ */

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

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

26.Проект близится к успешному завершению - Хочется верить, что 26-недельный проект к концу 48 недели будет-таки реализован.

27.На проекте наблюдается беспрецедентная производительность - Похоже, это самая низкая производительность по отношению к ранее достигнутой.

28.Программа соответствует стандартам качества - Компиляция прошла без ошибок.

29.Информационные биты проходят через коллектимайзер, который разделяет массивы на элементы виртуальных сообщений - Я не знаю. /* А это надо будет взять на вооружение ^_^ */


Половина выдрана из Escape словаря ^^

#music: Yuki Kajiura\Madlax  OP Single\Hitomi no Kakera

02:39

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-21-43
#original-date: 31.03.2008 Mon
#original-time: 9:43 PM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

Я сижу в Инете без файрволла и ни капельки не боюсь. Ибо с пропускной способностью моего канала ни один нахер не пролезет - увязнет в полутора байтах в секунду. А впереди меня ещё и болото Дальсвязи, где многие хакеры нашли свою смерть.

#music: move\Initial D Second Stage\Blazin' Beat

02:39

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-21-32
#original-date: 31.03.2008 Mon
#original-time: 9:32 PM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

Да ёлки палки! Тупо отправляю серверу ImageShack то, что отправляет пенелька. Image is too big! Да что б тебя!

#music: Dave Rodgers\Initial D Fourth Stage D Selection 2\Wild Reputation 2005

02:39

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-19-02
#original-date: 31.03.2008 Mon
#original-time: 7:02 PM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

Не, ошибочка вышла. Манга тоже лоликоновская (точнее лоликон наоборот ^^), но не та...

02:39

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-18-49
#original-date: 31.03.2008 Mon
#original-time: 6:49 PM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

О пользе.

Сегодня на ImageShack в поиске набрала "lolicon" - получила кучу картинок. Среди них нашёлся кусочек манги Kodomo no Jikan. Анимэ по этой манге уже сняли с показа (Nice Boat был ^^), но мне же интересно. Залезаю в архив с хентайной мангой - на первом же диске ^_^ /* А вот футанари манга почему-то так не попадается... */ Полезно держать много дисков с мангой ^_^

Полезно знать POP3. Типичная ситуация: на Яйцах денег ноль, приходится с Рупора получать почту, а там Инет никакой. В ящике шесть писем, в Бэки глюк, при котором она "забывает" уже полученные письма, если связь дважды сорвалась. Так и произошло. Как их удалить, чтобы не получать по два раза? Очень просто ^_^ telnet pop.mail.ru 110 ^_^

02:39

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-02-58
#original-date: 31.03.2008 Mon
#original-time: 2:58 AM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

Так. Всё. Спать. Завтра будет бесполезно потеряный день, зато нужно на работе быть вовремя. Ге...

А напоследок для Мэг ^_^ Subaru R2 ^_^



02:39

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-02-41
#original-date: 31.03.2008 Mon
#original-time: 2:41 AM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

Только сейчас заметила, что в серии YUA про ливень, Миюки прилепила к выхлопной трубе что-то и какбы вывела её повыше ^_^ Хитро ^_^



И ещё наблюдачка. Honda Today - это kei-car, но только в первых сериях первого сезона YUA (которые поначалу были овашкой) у неё жёлтый номер. На скриншоте это видно. А в остальных сериях он белый...

Хотя нет, я всёже ошиблась ^^ Он жёлтый ^^ И у машинки Ёрико и Аой-чан (марка неизвестна, но кажется мне что это Suzuki) он желтый, а вот у Subaru Нацуми он был белый. Хотя по размерам - натуральная kei-car...

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-02-27
#original-date: 31.03.2008 Mon
#original-time: 2:27 AM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)



  • Programs.

    • Обновила "AJPapps - My quick tray 1.00.0014".

    • Перевыложила "AJPapps - Private desktops 1.01.0017".

    • Перевыложила "AJPapps - Global hotkeys 1.03.0085".




  • Wallpapers :: 29.02.2008.
    • Добавила "You're Under Arrest :: Futaba Aoi-chan".



Перевыложенные программы я не отметила в соответствующем разделе. Это те же версии, но с обновлённым компонентом SysTray0200.OCX. В компоненте я исправила серьёзную ошибку, от которой сильно страдала программа AJPapps - My quick tray. Поэтому рекомендую обновить любую из перечисленных программ чтобы обновить компонент.




/* Да что со мной сегодня такое? Одни ошибки. То забуду в RSS добавить полные URL, то ещё что. И ведь не тороплюсь... */

02:39

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-01-51
#original-date: 31.03.2008 Mon
#original-time: 1:51 AM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

Исправила. Там у меня неправильно структура обрабатывалась. Это старое объявление NOTIFYICONDATA:

typedef struct _NOTIFYICONDATA {
   DWORD cbSize&#59;
   HWND hWnd&#59;
   UINT uID&#59;
   UINT uFlags&#59;
   UINT uCallbackMessage&#59;
   HICON hIcon&#59;
   TCHAR szTip[64]&#59;
} NOTIFYICONDATA, *PNOTIFYICONDATA&#59;



А это - новое, которое годится для Shell32.DLL версии 5 и выше (тоесть Win2000, XP):

typedef struct _NOTIFYICONDATA {
   DWORD cbSize&#59;
   HWND hWnd&#59;
   UINT uID&#59;
   UINT uFlags&#59;
   UINT uCallbackMessage&#59;
   HICON hIcon&#59;
   TCHAR szTip[128]&#59;
   DWORD dwState&#59;
   DWORD dwStateMask&#59;
   TCHAR szInfo[256]&#59;
   union {
       UINT uTimeout&#59;
       UINT uVersion&#59;
   }&#59;
   TCHAR szInfoTitle[64]&#59;
   DWORD dwInfoFlags&#59;
   GUID guidItem&#59;
} NOTIFYICONDATA, *PNOTIFYICONDATA&#59;



Полную версию я использовала только когда выводила балунчик в трее, а в остальном пользовалась сокращённой версией. Но поскольку Shell32.DLL пятой версии может обрабатывать szTip длиной 128 байт, я объявила szTip как szTip[128], а длину структуры передавала через cbSize: для Shell 5++ - 152, а в ранних - 88. Но строка всё равно оставалсь старой длины. Оказалось, что нужно давать функции полную версию структуры - тогда он скушает 128, а поскольку длина была далека от полной версии, лишнее она игнорировала, а szTip считала массивом из 64 байтов.

А ещё я постоянно использую TLB, поэтому в очередной раз забыла как строки в структурах объявляются. Вот как. Field As String*28 - это CHAR Field[28]. А Field As String - это LPSTR Filed... Тоесть если строка фиксированной длины - то в функцию передаётся массив в структуре, а если динамическая строка, то в функцию уходит указатель на временный буфер, который по возвращении копируется в строку (BSTR).

02:38

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-01-19
#original-date: 31.03.2008 Mon
#original-time: 1:19 AM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

Так... Ещё глюк нашёлся...

02:38

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-00-38
#original-date: 31.03.2008 Mon
#original-time: 12:38 AM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

Победила!!! Короче, у меня есть структура, которая содержит ссылку на сам контрол. Тоесть объявлено вот так:

Type SYSTRAY_SUBCLASS_INFO
 PrevWndProc As Long
 SysTray As SysTray
End Type



Вторая переменная - это и есть ссылка. Когда мы присваеваем ей объект, Visual Basic автоматом получает интерфейс IUnknown и вызывает AddRef() - он автоматом ведёт учёт ссылок чтобы объект случайно не освободился. Это правильно, так и должно быть.

Когда я делаю субклассинг окна контрола, я связываю с этим окном указатель на экземпляр этой структуры. В оконной процедуре, которая живёт в модуле, этот получается этот указатель (ведь манипулятор окна известен), а потом на локальную переменную копируются данные структуры. VB не позволяет по манипулятору получить объект окна, так что приходится так вот поступать. Код форвардит сообщение контролу, используя функцию (объявленную как Friend, тоесть видимую только в проекте, но не за его пределами) SendEvent, а потом возвращает ответ системе.

Поскольку экземпляр структуры объявлен на уровне модуля класса контрола, имеется ссылка на сам класс, которая не позволяет вызвать деструктор. А прячется иконки именно в деструкторе, там же освобождается и ссылка на контрол. И что делать?

Нужно чтобы эта ссылка работала, но не считалась. Как это сделать? Можно копировать указатель через CopyMemory() или что ещё - тогда ссылка не будет считаться, хотя переменная будет того же типа (Object и подобные - это указатель, 4 байта). Но я сделала хитрее. Вот код начала субклассинга и присвоения переменной ссылки на контрол:

Set Info.SysTray = Me
asObjectRelease Info.SysTray



А вот освобождение:

asObjectAddRef Info.SysTray
Set Info.SysTray = Nothing



asObjectAddRef() вызывает AddRef() и увеличивает количество ссылок на единицу, а asObjectRelease() вызывает Release(), и уменьшает количество ссылок. Тоесть несмотря на то что ссылка у нас есть, количество ссылок на контрол остаётся таким же. Деструктор прекрасно вызывается, а при обнелении ссылки я просто увеличиваю количество ссылок, чтобы опять ни чего не поменялось.

Не делайте так ^^

Но главное что работает, и мне ни чего переделывать не пришлось ^^ Просто дописала две строчки ^^

02:38

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2805-00-25
#original-date: 31.03.2008 Mon
#original-time: 12:25 AM
#original-day:  2805
#original-host: WinXP Prof SP2 (Build 2600)

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

SysTray::Initialize() ==> hWnd = 0x002000E8 
SysTray::HookTaskbar() ==> We're in run mode!
frmTaskbarHook::Subclass() ==> hWndSysTray = 0x002000E8
SysTray::HookTaskbar() ==> Hooked! Name = SysTray
SysTray::Initialize() ==> hWnd = 0x001900E0
SysTray::HookTaskbar() ==> We're in run mode!
frmTaskbarHook::Subclass() ==> hWndSysTray = 0x001900E0
SysTray::HookTaskbar() ==> Hooked! Name = SysTray
SysTray::Initialize() ==> hWnd = 0x0025010C
SysTray::HookTaskbar() ==> We're in run mode!
frmTaskbarHook::Subclass() ==> hWndSysTray = 0x0025010C
SysTray::HookTaskbar() ==> Hooked! Name = SysTray
HookWindowProc() ==> WM_TASKBAR_CREATED, hWnd = 0x0025010C
HookWindowProc() ==> WM_TASKBAR_CREATED, hWnd = 0x001900E0
HookWindowProc() ==> WM_TASKBAR_CREATED, hWnd = 0x002000E8
SubWndProc() ==> WM_TASKBAR_CREATED, hWnd = 0x0025010C
SubWndProc() ==> WM_TASKBAR_CREATED, hWnd = 0x002000E8
SysTray::Terminate() ==> hWnd = 0x001900E0
SysTray::UnhookTaskbar() ==> We're in run mode!
frmTaskbarHook::Unsubclass()
SysTray::UnhookTaskbar() ==> Unhooked! Name = SysTray



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

Я с ума сойду...

02:38

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2804-22-09
#original-date: 30.03.2008 Sun
#original-time: 10:09 PM
#original-day:  2804
#original-host: WinXP Prof SP2 (Build 2600)

Должна признаться, что иногда меня всёже мучает комплекс вибишника (тоесть программиста на VB)... Особенно когда говорю с теми, кто хорошо знает C++...

Наконец взялась за SysTray Control. Температура не даёт сконцентрироваться, но я всёже нашла решение. У моего же контрола есть оконная функция, он субклассируется, это обычное окно. Поэтому я решила не обрабатывать сообщение создания таскбара в оконной процедуре вспомогательной формы, просто перенаправлять сообщение самому контролу. Поэтому форме я вместо ссылки даю манипулятор окна, проблема циклических ссылко тутже отваливается, и всё прекрасно работает.

#music: Dave Mc Loud\Initial D Third Stage\Street of Fire

02:38

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2804-21-45
#original-date: 30.03.2008 Sun
#original-time: 9:45 PM
#original-day:  2804
#original-host: WinXP Prof SP2 (Build 2600)

По телевизору:

- По улице шёл мужчина, вёл ребёнка, ребёнок плакал, все видели, но никто не остановил.

А почему, собственно, должны были остановить?

#music: Dr.LPVE & D.Essex\Initial D Third Stage\Max Power

02:38

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2804-18-42
#original-date: 30.03.2008 Sun
#original-time: 6:42 PM
#original-day:  2804
#original-host: WinXP Prof SP2 (Build 2600)

3) Version History  
------------------
v.1.0 beta: It didn't work.
v.1.1 beta: Works fine, all features are new there.


#music: Dr.LPVE & D.Essex\Initial D Third Stage\Max Power

02:38

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2804-18-14
#original-date: 30.03.2008 Sun
#original-time: 6:14 PM
#original-day:  2804
#original-host: WinXP Prof SP2 (Build 2600)

О, нашла один трюк в Photoshop CS. Допустим нам нужно поместить картинку 640x480 в документ 1024x768. Ну, тоесть вставить где-нибудь по правой стороне. Можно допустим, у нас там есть уже слой с такой картинкой, а нам нужно поместить новую как раз на место старой картинки. Выделаем картинку (Ctrl+Click на слое), а потом через Shift+Ins вставляем. Картинка вставится новым слоем, но не по центру, а точно в выделении.

#music: Dr.LPVE & D.Essex\Initial D Third Stage\Max Power

02:38

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2804-16-56
#original-date: 30.03.2008 Sun
#original-time: 4:56 PM
#original-day:  2804
#original-host: WinXP Prof SP2 (Build 2600)

SyncToy у меня взбунтовался. Время перевели на час вперёд (XP почему-то не сообщила как Windows 98), на NTFS томе время файлов передвинулось тоже. Ну SyncToy и понаходил кучу файлов, а ещё столько же сказал, что не изменились. Тоесть фактически он сказал, что все файлы изменились, но все же файлы не предназначены для копирования... Брр..

#music: Dr.LPVE & D.Essex\Initial D Third Stage\Max Power

02:38

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2804-14-51
#original-date: 30.03.2008 Sun
#original-time: 2:51 PM
#original-day:  2804
#original-host: WinXP Prof SP2 (Build 2600)

Просьба о помощи, не подкреплённая материально, - либо подстава, либо идиотизм.

Занятно, что обычно на это обижаются. У нас видимо очень любят халяву. /* Особенно когда два дня бегаешь пытаешься разобраться почему ни как не монтируется образ, привлекаешь к решению ВСЕХ, а потом на тебя смотрят невинными глазками и говорят, что это жы была такая мелочь... Или ещё веселее когда пугают что в следующий раз кого-нибудь другого позовут. Угу. Страшно аж жуть. */

#music: J.Storm-GTR\Initial D Battle Stage\Dancin' In My Dreams

02:37

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2804-14-08
#original-date: 30.03.2008 Sun
#original-time: 2:08 PM
#original-day:  2804
#original-host: WinXP Prof SP2 (Build 2600)

Кстати, в "Gyakasyu 3" (это и есть та самая игра про щюпальца, о которой я выше писала) есть некий мужжчина, который (наверное) главгерой... Учитывая что даже его лица не показали, герой очень невзрачный. Нет, даже у CROWD было такое, разве что Такую показали полностью, поскольку в скором времени он превратился в девушку, но всёже... Как-то это не так хорошо. В общем, я за детально проработанную футанарьку вместо невзрачного главгероя призванного нести разве что только мужскую составляющую в игру. А нафига, если там и так щюпалец полно?

Кстати! Я же не зря Kashimashi называю "X-Change без хентая". Такое ощущение, что авторы поиграли в X-Change и заинтересовались темой, но решили пойти дальше. Например, если в X-Change лицо Такуи не светилось до превращения, то лицо Хазуму (позабывала все имена ^^) вообще никто не видел ^^ Зато сразу же после превращения - лицо крупным планом ^^ Правда, авторы решили, что тратить оставшуюся жизнь на то чтобы найти способ вернуться в прежнее состояние - это глупость, и сосредоточились на другом ^_^ Да, ну и Аска ни куда не делась - её просто немного перерисовали, но характер остался прежним как и нежелание видеть главгероиню девушкой ^_^ В роли остальных девушек из X-Change выступает Ясуна ^^ Да, а тот парень - это Кодзи, разве что Кодзи до конца игры так и не понял, что не любит его Такуя ^^

А вот Кейко-сан там не было T_T

#music: Toby Ash\Initial D Battle Stage\Jumping Up The Nations

02:37

Тотальная неудачница и убийца жёстких дисков.
#post-id: 2804-13-34
#original-date: 30.03.2008 Sun
#original-time: 1:34 PM
#original-day:  2804
#original-host: WinXP Prof SP2 (Build 2600)

В WinRAR есть такая фича как оценка степени сжатия. Тоесть можно глянуть заранее, на сколько сожмутся файлы. Но это очень приблизительно ^^ Идём в папку с обойками, которые я в данный момент ваяю. 7 файлов, 38 метров. Смотрим в WinRAR: 75%, 29 метров. Не очень сильно ^^ А теперь сжимаем! 51%, 19 метров. А теперь ради интереса сжимаем в 7-zip: 39%, 15 метров!

Меня волнует только один вопрос: почему раньше у меня PSD вообще не сжимались, а сейчас аж на 50% скомкались?

#music: Toby Ash\Initial D Battle Stage\Jumping Up The Nations