Дмитрий Радищев (dibr) wrote,
Дмитрий Радищев
dibr

Categories:

AHCI! - будьте здоровы!

     Фантазия "погромистов" меня иногда впечатляет. Причём, что обидно - не индусов с быдлокодом, а нормальных, но именно что "с развитой фантазией".
     Вот, скажем, много лет назад понадобилось мне регулярно перекодировать из KOI-8 в 866 "в батничке" (не спрашивайте зачем - тогда вообще динозавры бегали по ещё не остывшей поверхности планеты, а KOI-8 кое-кем считалась даже "довольно удачной" кодировкой). Задача-то тривиальная, "программа на три строчки", но самому писать лениво, поэтому скачал и заюзал какую-то утилиту "перекодировки изо всего во всё" - она ж по определению тривиальная, глючить там просто негде. А потом до-олго искал, почему иногда (редко-редко, этак раз в месяц) перекодируется только часть текста. Нашёл - оказывается, это документированная но неотключаемая фича: встретив в тексте значок "тильда" (~) перекодировка отключается, на второй тильде - включается обратно. В документации так и было написано, мол "а если вам нужно, чтобы часть текста не перекодировалась - обнесите её тильдами". Пришлось сносить "перекодировщик" нафиг, и то-ли писать свой (точно без таких вот фич), то-ли искать нормальный - давно дело было, не помню уже.

     А сегодня делал "батничек", в котором по ходу дела требовалось впечатывать текст в jpeg-файл. Нашёл командлайновую утилитку - хорошую, в меру развесистую, в меру простую, даже lossless (в тех местах, где текст не впечатывается), погонял на тестовых картинках (они, собственно, реальные, просто не в реальном времени получались) - на них всё блестяще работало, запустил на реальном потоке. Получил тотальную забастовку программы и пачку уведомлений вида "Ignoring Input File: %s since it looks like it was created by this program itself", прифигел. До-олго разбирался в чём дело (если отложить "ошибочный" файлик в сторону - всё работает, а вот "с пылу с жару" - нифига), грешил на то, что свежий файл какое-то время остаётся залочен программой, его создавшей, но после того, как получил аналогичную ошибку даже скопировав файл на новое место (копия-то точно не залочена) - задумался уже сильно.
     Оказалось, что авторы программы считают, что файл "создан ей же" в том случае, если файл... моложе 15 секунд от роду! Через 15 секунд - можно, а прямо вот так - нельзя, естественно "на консервах" всё прогоняется отлично, а на свежих данных - опаньки. ЧСХ - фича, разумеется, неотключаемая:

            if(!stat(inpFile, &fileInfo) && g_startTime-15 <= fileInfo.st_mtime &&
               fileInfo.st_mtime <= 15+time(NULL))
            {
                cp = g_errorPrefix;
                g_errorPrefix = "";
                JDSTMP_ERROR("--- Ignoring Input File: %s since it looks like 
                                  it was created by this program itself\n", inpFile);
                g_errorPrefix = cp;
                retVal = 1;
            }

     Разбираться и "пересобирать", конечно, не стал, вставил в батник  touch -d "1 day ago" %%i  (авторы touch тоже, кстати, жгут - документации по формату ключа -d в манах нет, хотя как можно видеть - он зело хитёр и нетривиален), хожу впечатлённый от логики: ну ведь правда же, логично, что всё то, что ты успел увидеть первым (в течении 15 секунд от рождения) - твоё по праву первого увидевшего, а то, что ты упустил из рук более чем на 15 секунд - больше не твоё?

     И куча скучного железячно-софтовогого лытдыбра:

     1. Современные материнки по дефолту часто имеют SATA контроллер в режиме эмуляции IDE (это точно со всеми работает), AHCI нужно включать. Если поставить XP на контроллер в режиме IDE - после переключения в AHCI XP не грузится: драйверов нет. Если взять драйвера, и, как советуют в интернете, привязать их силком к контроллеру - то... как повезёт: у кого-то грузится, у меня "не берёт", мол "куда ты это пихаешь, тут такого железа вообще нету".
     А если ставить XP с "фирменного" дистрибутива при включённом AHCI - то драйвера надо подсунуть при установке, нажав F6. Подсунуть - на 3.5" дискетке, ага! Без вариантов: никаких вам флэшек и сидюков, или давай дискету, или "у вас тут вообще дисковых устройств нету". А у меня даже контроллера-то дискетного в чипсете нет (и не вспоминайте про USB-дисководы!) :-)
     Поскольку AHCI хотелось (NCQ там, "и вообще"), проблема решилась процедурой "интеграции драйверов в дистрибутив", но просьба вставить дискету - порадовала (я до последнего момента верил, что всё-таки можно будет подсунуть флэшку) :-)

     2. Также держу в руках артефакт. USB3.0 PCI-e 1x контроллер. Спокойно работающий под win7 (внешний USB 3.0 HDD через него увидел и прочитал), а под XP (на другой машине, правда) - не обнаруживающийся вообще, даже как "неизвестное устройство", как будто и нет в слоте ничего. Может, конечно, слот битый, но странно как-то. На неделе продолжу эксперименты...

     3. Также за эти праздники "поставлена на боевое дежурство" в новый компьютер PCI платка (четырёхканальный захват видео). Два дня из трёх понадобилось на то, чтобы "сделать чтобы не висло". А чтобы не висло - оказалось нужным заменить один блок питания на другой почти такой же (450Вт Noname Vento на 450Вт FSP), навесить на шины +5В и +12В пучок кондёров, и переставить плату из второго PCI слота в третий. Откат любого действия (отцепляем пучок кондёров, или возвращаем оригинальный БП, или переставляем плату взад) - зависание (без "синьки", просто всё замерзает) за время от 15 минут до 2-3 часов, если вынуть плату совсем - ничего не виснет. При этом первые два пункта (БП и кондёры) - чётко "нехватка питания", но блин - это ж сопливая PCI платка с четырьмя небольшими чуть тёплыми микросхемами без радиаторов, какое нафиг "питание", особенно в таких масштабах?!

     4. В процессе "переливания файлов из пустого в порожнее" обнаружил 2.5 гигабайта несвежих логов прокси (логи компактные, один запрос - одна строка). "Они там от основания мира что-ли" - подумал я, и посмотрел повнимательнее. Оказалось, всего за три месяца.
     А всего-то - я когда-то по причинам историко-политического характера завернул торрент, чтобы он ходил через прокси, и он при относительно небольшом суммарном трафике, поназапрашивал такое количество HTTP CONNECT (около 150000 в сутки), что логи как-то резко стали большими... :-)

     5. А вот перевод квартирной локалки на гигабит эзернет - порадовал. Всех делов - снять со стены 100Мб свитч, повесить гигабитный (контроллеры в компьютерах уже интегрированные, старая cat5e проводка вполне подошла) - и вуаля: скорость сетевого диска теперь слабо отличается от локального (а ещё характерный "треск" раздаётся теперь в другом месте, где меня нет) :-) Есть небольшие радости в этой современной компьютерной технике :-)
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 45 comments