Смеялся: про медиков. То, что Экслер называет "баннизм".
Tools
Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.
2007-07-31
2007-07-22
тоже забавно, PHP headers_sent & CGI mode
Да, кому забавно, а у кого сайт работать перестает.
Есть на сайте программулина, на PHP, выдает клиенту файл по номеру.
Для указания правильного mime используется функция header()
И все это дело внутри некоего фреймворка, который тоже, не будь дурак, всякие хидеры пишет.
Правда отгрузка файла сбрасывает все буферы и когда далее по коду фреймворк хочет выдать свои заголовки, проверка headers_sent() его обламывает.
Все это в теории и работает только если PHP подключен как модуль Апача, типа так:
LoadModule php5_module "d:/httpd/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
PHPIniDir "d:/httpd/php"
А если подключить пыха как CGI обработчик, типа так:
ScriptAlias /php5/ "D:/httpd/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php5/php-cgi.exe"
всё. Браузер перестает понимать, что ему присылают. Потому как фреймворк посылает свои заголовки, потому как проверка headers_sent() уже не срабатывает.
Я не стал разбираться, фича это или бага. Я понял, что если уж так планеты сложились, что надо пользоваться режимом CGI, то, будь любезен, всю работу с заголовками оберни в свой код. А лучше это сделать при любых вариантах. Спокойнее.
2007-07-20
Забавные вещи с CSS & expression
Кратко опишу ситуацию словами.
Была сделана страница, под браузер IE6. Работала.
Потом случился браузер IE7.
Страница стала вывавать (нестабильно) сообщение при загрузке:
"divContent не определен" или вроде того.
После разбора, выяснилось - в подключаемой стилевой таблице использовался
expression для вычисления ширины блока шапки, на основе параметров
блока, находящегося ниже в теле страницы.
Видимо выражение срабатывало до того как закачается блок, параметры которого используются в выражении.
Ну, пришлось стиль с expression подключить в теле документа после всех этих блоков.
типа так:
Лекарство:
в теле < body > ближе к концу страницы:
< style type="text/css" >
@import url("general.detail.css");
< / style >
А было так:
< header >
< link rel="stylesheet" type="text/css" href="general.detail.css" >
...
в стилях:
#divHeader {
width: expression((divContent.clientHeight < divContent.scrollHeight) ? (document.body.clientWidth - 16 + 'px') : (document.body.clientWidth + 'px'));
}
причем
divContent
ниже в тексте документа чем
divHeader
полезно:
http://stepbystep.htmlbook.ru/?id=44
Posted by Valentin at 18:45 0 comments
2007-07-12
почему я не люблю Мелкософт
Рисую в красках: купил человек MS Office. Давно, году эдак в 2001. Понятно, офис у него версии 2000. Работал с ним (или на нем?) и по ходу учился программировать. Как научился, решил автоматизировать некоторые свои работы с помощью честно укупленного офиса. Ведь все знают, офис тем и хорош, что его можно программно заставить делать многое.
И полез человек на сайт Мелкософта за документацией на программные интерфейсы... А поскольку шел уже 2007 год и вышел офис 2007...
Уже догадались? А я вот до сих пор не могу поверить. Может плохо искали? Короче, нету на сайте МелкихИмягких документации на офисы старее 2007. То что осталось, практически бесполезно. А поскольку программные интерфейсы офисных пакетов на месте не стояли (тоже вопрос, с каких таких понадобилось менять интерфейсы?) то существующая документация не помогает автоматизироваться со старым офисом.
И что делать? Старый офис честно куплен, но использовать его нельзя, потому что документацию не догадались вовремя скачать и сохранить. Надо новый покупать? И пока не поздно, качать все, что только может понадобиться?
Билли сказал - каждые 5 лет вы должны по новой покупать у нас программы. И мечтает Билли о том, чтобы мы не покупали софт а брали напрокат.
Posted by Valentin at 02:08 0 comments
Labels: documentation, Microsoft Office, programming