Плохая дока или ее отсутствие?..

Какими иногда путями узнаешь о некоторых особенностях языка программирования, операционной системы или СУБД… Ну нет у меня времени и желания внимательно читать всю доку по PHP, например.

Поясню: как много людей, программирующих на PHP, знают о существовании в нем конструкции <?=$variable?>? Я о ее существовании узнал вчера. Из чужого листинга. Для хохмы попытался найти ее через «Table of Contents» родной доки. Не удалось. Пришлось набирать в командной строке магическое grep '[%\?] *= *\$' * чтобы узнать, что эта, довольно полезная фича, упоминается в доке аж два раза, но эпизодически, и в разделе «Escaping from HTML». Кто бы мог подумать? Там, кстати, говорится, что это shortcut к echo. Тогда такой вопрос: почему бы этот самый shortcut не поместить рядом с echo (раздел « String function») или хотя бы дать ссылку на него в «see also…»?

Еще хуже дело обстоит с PostgreSQL. Для интереса зайдите в Postgres monitor (psql) и наберите: \dd regexeqjoinsel. — «O!», — думаете вы — «новая функция!». Не спешите искать информацию по ней в официальной доке. Там эта функция даже не упоминается. Кстати, это далеко не единственный пример. По-моему, дока для Постгреса — худшая в мире.

Это что касается софта под Unix. Документация для платформы Windows обычно составлена лучше. По крайней мере та ее часть, что от Microsoft. Конечно, мало кто знает, что такое HTA или WScript, но информации по ним вполне достаточно, просто эти вещи мало кому нужны.

У Microsoft другая крайность — описывать все тщательно, но с опозданием. Меня вот интересует вполне конкретный вопрос: в чем с точки зрения разработчика разница между Jet4.00SP5 и Jet 3.00? Боюсь, придется подождать пару месяцев, до выхода 5-й версии, прежде чем я смогу получить на него ответ.

Кстати, с начинающим наступать Миллениумом вас!

Оставить комментарий

Как мне кажется. Генетика

Больной, испуганно, доктору:
— Доктор, что это у меня?!
— АаААааааа!!! 8-O Что это у вас?!

(анекдот)
 
Глядя на визжащее, скулящее, повизгивающее сосредоточие страха, раболепно ползающее у ног своей хозяйки — бабки неопределенного возраста, невольно задумываешься, что может сотворить человек, если дать ему в руки генетику. Я говорю о болонках (или как там называются эти маленькие, визгливо потявкивающие трусливые комочки?) и их прародителей — волках.

Становится страшно.

Канадский сфинкс

Если человек, имея возможность изменять животное лишь косвенно, наворотил такое, представляю что будет, когда человечеству удастся расшифровать ДНК, когда оно научится дешево изменять генотип и выращивать жизнеспособных особей заданной конфигурации. У меня есть множество знакомых, которые завели себе какую — нибудь уродливую породистую кошку или собаку только для того, чтобы было «не как у всех». Теперь представьте себе скажем… гигантскую муху с человеческими глазами, того же пушного таракана размером с ладонь. А кто-то, наверное найдет жутко милыми летающих вечных котят с белым пухом вместо шерсти.

Конечно, придется издать некий закон, запрещающий, или как-то регулирующий эту деятельность. Как всегда найдутся страны, которые этот закон не примут и люди, которым будет на него наплевать. В канализациях будут размножаться жуткие, и не очень, твари, которым оставили возможность размножения. У мафиози появится новое развлечение «изготовь клон своего врага в виде писсуара». Шучу, конечно. У кого-то, возможно, появится идея улучшить человеческую породу. Например, ввести более продуманную имуннозащиту. Баги в реализации приведут к каким нибудь страшным последствиям лет так через 50, когда потомство несколько смешается с «обычными» людьми. Скажем, проявится неожиданная агрессия в подростковом периоде.

Людям, которые живут по правилу «после меня хоть потоп», советую почитать литературу о генетически измененных продуктах. В этих самых продуктах я ничего плохого не вижу, просто хочу сказать — начало положено.

Оставить комментарий

Недокументированные возможности

Если не всем, то многим, известно, что в практически в любом устройстве есть ,так называемые, «недокументированные возможности». Первое мое знакомство с ними состоялось еще на примере команд Ассемблера к компьютеру ZX-Spectrum. Владение командами типа LD IYh,10 приятно грело душу. Позже, я еще неоднократно сталкивался с такого рода возможностями в Intel Assembler (LOADALL, SETALC), MS-DOS (системные структуры, 2F и т. п.), Windows (некоторые функции API), телевизорах (встроенные меню) и т. д. Теперь пришлось столкнуться и в Вебе. Точнее в браузере. А еще точнее в Netscape Navigator.

Время от времени я просматриваю exe-файлы браузеров и их dll-ки, в надежде узнать что-то новое. Иногда мои усилия вознаграждаются, чаще — нет. Интересно, кто, кроме разработчиков, знает о существовании тегов NSCP_OPEN, CHARLES, JEAN, SUBDOC, CELL? О типе JOT тега INPUT? Единственный тег, в тайну которого я смог проникнуть самостоятельно — это INLINEINPUT. Как я понял, единственное его назначение заключается в подчеркивании текста прерывистой линией. Конечно, те же телевизионные сервисные меню не стоит делать достоянием общественности, но вот дополнительные теги браузера можно и открыть — ничего страшного не произойдет (раз уж все равно сделали, теперь выбрасывать что ли?). Зато это добавит в скудную палитру «украшательств» верстальщика под Netscape пару новых возможностей.

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

  • SUBDOC — «определяет субдокумент с собственным окружением. Может быть вложен.» Что бы это значило? Эксперименты ни к чему не привели.
  • HYPE — Судя по косвенным ссылкам раньше воспроизводил какой-то звук. Оставлен как заглушка.
  • MQUOTE — Средство для цитирования почтовых сообщений.
  • COLORMAP — упоминается как параметр (PRIVATE|DITHERED|YES|NO) тега EMBED. Похоже используется в каком-то плагине.

На большее моего терпения не хватило. Так вопрос о том, что такое CELL, CHARLES, JEAN, NSCP_CLOSE, NSCP_OPEN, NSCP_REBLOCK, UNKNOWN и т. д. остается открытым.

Оставить комментарий

Недокументированные… Окончание.

Вместо предисловия.

Сегодня Google выдал мне все-таки страницу, URL которой я так жаждал получить. На нем, английским по белому, написано, что теги NSCP_CLOSE, NSCP_OPEN, NSCP_REBLOCK, MQUOTE, CELL, SUBDOC, CERTIFICATE, INLINEINPUTTHICK, INLINEINPUTDOTTED, COLORMAP, HYPE, SPELL и NSDT более не поддерживаются.

Так что в списке подозреваемых на полезную нагрузку остались: CHARLES, JEAN, UNKNOWN и INPUT TYPE=JOT.

Внимательное изучение этой самой страницы увеличило вышеприведенный список еще на два экземпляра: INPUT TYPE=READONLY и INPUT TYPE=OBJECT. Что означает первый, стало понятно после полевого испытания — создается текстовое поле, которое нельзя редактировать. Для чего служит второй, станет понятно ниже. Кроме того, на той же странице я с удивлением узнал, что у тега INPUT есть атрибут HEIGHT.

Все вышеперечисленное вдохнуло в меня новые силы и я, с утроенной энергией, взялся за поисковые машины…

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

Атрибут JOT предназначен для вывода поля перьевого ввода произвольного размера (атрибут SIZE="xsize,ysize"), размер по умолчанию 200×50, перешел в Netscape, судя по всему, из браузера Mosaic. Используется совместно с атрибутом SRC.

OBJECT создает невизуальный элемент формы для сбора данных от заданного Java-компонента, расположенного на странице. Java-компонент задается при помощи атрибута NAME, который должен быть равен атрибуту ID предыдущего объявления компонента. Его данные попадут на сервер когда пользователь нажмет на кнопку SUBMIT (немного сумбурный перевод, но, думаю, смысл ясен).

Чтение исходников (спасибо AllTheWeb) показало, что тег UNKNOWN — никакой не тег, а абстрактное обозначение любого неизвестного тега, встречающегося в заголовке документа. Сделан этот финт ушами для пропуска контента неизвестных контейнеров. CHARLES и JEAN — это не что иное, как загадочные, но уже не поддерживаемые «теги» INLINEINPUTDOTTED и INLINEINPUTTHICK.

Теги, начинающиеся с букв NSCP были предназначены для внутренних целей браузера, в частности, NSCP_CLOSE закрывал все незакрытые теги, что позволяло «сливать» воедино два незавершенных документа.

Из тех же исходников, кстати, видно, что побочным действием тега HR является закрытие блочного тега P, что действительно имеет место.

Что касается тега COLORMAP, то тут не все так кристально ясно. Это, безусловно, тег, что подтверждает чтение исходников, у него есть атрибут SRC и нет закрывающей пары. Судя по комментариям в коде, этот тег задает карту цвета, которая будет использоваться для всех картинок страницы. Но для чего это нужно, и каков формат этой карты ссылок — неясно. Кроме того сама, процедура обработки тега стоит под #IFNDEF, так что непонятно, работает он в текущей версии Netscape или отключен.

Тег HYPE был введен «just for fun» и работает (-ал), судя по исходникам, только на Mac и Unix-платформах.

Из других любопытных открытий — существование атрибута SUPPRESS, который заставляет (его значения — TRUE и FALSE) тег LAYER игнорировать свое содержимое до закрывающей пары и того же атрибута у тега A (anchor), только с другим значением — его использование ведет к появлению рамки вокруг ссылки в момент нажатия, как в MSIE. Только непонятно, исходники какой из версий я смотрел — одной из будущих, или какой-то из прошлых, потому что в текущей это не работает.

В общем, я остался доволен сегодняшним результатом поиска. :) И хотя, остались еще кое-какие мелкие вопросы, я уже порядком подустал, так что объявляю свое виртуальное расследование завершенным.

Оставить комментарий

Разгон. S3. MCLK

Я снимаю с себя всю ответственность за любые последствия подобного разгона.

Почему-то, принято считать, что видео карты типа S3 Trio32 или Cirrus Logic GD-5420 вымерли как класс, а у пользователей стоят сплошь навороченные Riva TNT2 и Voodoo-6500. Думаю, такая точка зрения далека от истины. Лично я знаю очень мало людей с Riva и очень много с теми же S3. Между тем, многие знают как выжать последнее из первых и очень мало о том, как разогнать вторые.

Речь пойдет о небольшой, по современным меркам (113Кб), утилите MSLK. Она предназначена для разгона видео карт Cirrus Logic (GD-542X, 5430, 5436, 5440/M40, 5446, 7543), S3 inc. (864/866/868 с SDAC RAMDAC, Trio 32/64/64V+, Virge, Virge VX, Virge DX), Trident (9440/96xx) и Tseng Labs (ET-4000, generic ET-6000). Не знаю, насколько у меня последняя (0.90с/093c) версия, возможно в более поздних есть поддержка и других карт.

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

Video card MCLK utility v0.90с 07/28/96, chips_lib v093с 05/04/97
FAMILY= S3 ... CHIP= PCI Virge DX/GX ... REVISION= 01
1-cycle EDO RAM

Adjustable settings:
0 S3 Trio/Virge MCLK programming
1 Trio64V+/Virge memory page-mode control
2 S3-864/964/Trio CAS', OE' strech time, WE' delay
3 S3Trio RAS' timing control (2 parameters)
4 S3Trio 2MCLK/3MCLK timing controls
5 function NOT available

Это означает, что на своей старенькой карточке я смогу изменить пять настроек. Список возможных значений параметра и его текущее значение можно посмотреть, запустив программу с цифрой параметра (от 0 до 5), например, так: MCLK /0.

Если программа неправильно определила вашу карту, ее тип можно задать вручную при помощи параметра /F. Для примера. Предположим у вас S3 — 968.

Набираем MSLK /F, получаем:

Supported families
------------------
0 Generic VGA
1 Cirrus Logic
2 S3, Inc.
3 Tseng Labs
4 Trident Microsystems

Выбираем третьего по счету производителя (MSLK /F 2), получаем:

S3 accelerator
0 S3-801/805
…
7 S3-968
8 S3-325 (Virge)
9 S3-988 (Virge/VX)

Наша карта — под номером 7. Набираем MSKL /F 2 7 Примечание: при использовании параметра /F он должен стоять первым!

Настройка параметров карты осуществляется вызовом программы с указанием настраиваемого параметра и его нового значения или значений. Например, так: MCLK /0 1 1 1 или с выбором видеокарты, так: MCLK /F 1 1 /0 32

Если пожадничать, и слишком разогнать карту, то изображение может пропасть. В этом случае помогает только перезагрузка. Советую войти под «голым» DOS’ом и поэкспериментировать. После подбора оптимальных параметров, вызов программы с соответствующими параметрами можно вставить в AUTOEXEC.BAT.

Более подробная документация (правда, на английском) распространяется вместе с программой.

Оставить комментарий

О безопасности в Unix

О безопасности Unix-систем.

Сегодня побывал в шкуре киношного кул хацкера, из тех, что подбирают пароли с третьего раза. Правда, попыток я сделал побольше, да и пароль не подобрал… в общем, все по порядку.

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

Примерно через 5—10 минут (я как раз вбивал какое-то нечитаемое наименование с коробки из-под монитора), система меня пустила… Думаете я подобрал пароль? Если бы. СИСТЕМА МЕНЯ ПУСТИЛА, но, как будет видно ниже, Я НЕ НАБРАЛ ПРАВИЛЬНЫЙ ПАРОЛЬ.

Теория о том, что совпала hash-сумма, или, что я нашел «инженерный» пароль, не подтвердилась. После прихода Сергея мы провели «следственный эксперимент» — он заблокировал консоль и ввел ту же комбинацию.

Так что единственное разумное объяснение, которое пришло мне в голову, заключается в следующем. Похоже разработчики включили в свой продукт одну недокументированную особенность — система пускает человека, который в течение долгого времени вводит парольные последовательности, некоторая часть которых совпадает по буквенному составу и/или длине с правильным паролем. «Cчитая», что хозяин забыл пароль.

Остается только догадываться, сколько еще таких «недокументированных возможностей» зашито в софт, которому мы привыкли доверять безопасность нашего компьютера.

4 комментария

Что происходит?

Кто-нибудь мне объяснит, что происходит?

Почему на протяжении последней недели ко мне в ICQ стучатся какие-то Тани, Светы, Оли и утверждают, что хотят со мной познакомиться? С первыми пятью я был настолько агрессивен, что они быстро исчезли из моего поля зрения. Пару раз я порывался выяснить, кто это решил пошутить таким странным образом. Одну звали , я проследил ее айпишку, оказалось она выходит через того же провайдера что и я. Я туда позвонил и выяснил какой пользователь сидит сейчас на этом IP-е. Имя совпало, дальше я копать не стал, просто пригрозил, что узнаю, где она живет и перевел ее в Ignore List. Дольше всего я проговорил с девушкой по имени Света. Она дала мне свой номер пейджера и я, воспользовавшись кое-какими своими связями, узнал какие сообщения приходят на этот номер. Имя совпало. Значит эти девушки — не одно лицо. Дошло даже до того, что она мне позвонила и мы с ней немного поговорили. Сегодня она пропала.

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

Так что же происходит? Случайность? Верится. С трудом. Розыгрыш? Ни у одного из моих знакомых нет одновременно двух ресурсов для этого необходимых: терпения и времени.

Одна из девушек, я уже про нее упоминал, Света, прокололась: отступила от сценария и дала понять, что знает, где я работаю. На вопрос откуда, сказала, что это ей сказал я. По Аське. Я специально выгрузил Аськин лог и пересмотрел весь наш разговор. Там я ни единым словом не упомянул где именно я работаю.

Сегодня в моем контакт-листе появились Таня №2 и Катя.

P.S. Что называется «когда верстался этот номер».

Только что мне позвонила Света и сказала, что скоро доедет до компьютерного класса и выйдет в Инет. Хочет со мной поговорить.

Оставить комментарий

Виртуальная пьянка

Многие слышали о такой вещи, как виртуальный секс. А кто-то даже утверждает, что занимается им регулярно. Остается только недоумевать, почему наряду с виртуальным сексом, в Сети не стали обычными вещами виртуальные пьянки, виртуальное курение, виртуальная наркомания, проституция (за WebMoney или CyberCash) и т. п. Ведь такой способ реализации своих потребностей имеет множество плюсов перед традиционными: никакого тебе похмелья, вредного воздействия на организм, СПИДа и прочей гадости.

Вот только представьте себе такой разговор:

MegaDestroyer: с какой начнем?
SuperCrasher: давай с «Пшеничной».
MegaDestroyer: с «Пшеничной», так с «Пшеничной». Разливай.
SuperCrasher: BlackKiller, ты чего молчишь? Опять dial-up отвалился?
BlackKiller: Тут я.
SuperCrasher: ОК. Не торопясь, достаю бутылку, срезаю ножом пробку и разливаю.
\^/ \^/ \~/
BlackKiller: Стоп! А почему меня обделили?
SuperCrasher: Pardon, \^/ \^/ \^/
MegaDestroyer: Ну, выпьем. За нас!
SuperCrasher: \_/
BlackKiller: \_/ Хорошо пошла…
MegaDestroyer: \_/ Угу…

Представили? Ну не красота? Заметьте, утром никакого похмелья или пищевого отравления, драки по пьяни с привлечением мебели или порчи оной. Как максимум — выяснение отношения в Quake или VirtuaFigter, да и то, при условии наличия выделенки. В связи со стремительно приближающимся Новым Годом (вы, кстати, уже купили мандарины?), вышесказанное становится еще более актуальным.

Так что, все на освоение безграничных возможностей Интернета и, возможно, для кого-то, утро без похмелья наконец-то станет реальностью!

P.S. Автор не несет ответственности за появление вирутальной алкогольной зависимости, синдрома виртуальной алкогольной интоксикации или виртуальной заменительной рвотной реакции. Кроме того, автор считает нужным поставить читателя в известность о незафиксированных случаях виртуального похмелья, якобы имевших место быть в одном из городов Алтайского края, хотя факты проявления этого явления достоверными считать нельзя.

P.P.S. Специально для господ из оффлайновых изданий: все сказанное в предыдущем абзаце не более чем шутка.

Оставить комментарий

Хедэйк

Вообще-то, у меня редко болит голова. Сегодня, как раз один из этих редких дней. 165-тимиллиметровый гвоздь, забитый по самую шляпку, куда-то в середину лба, очень мешает думать. Мне трудно понять, особенно сегодня, почему природа со всей своей эволюцией, естественным отбором и прочим перекрестным опылением, допустила наличие такого человеческого дефекта, как головная боль?

Как работает естественный отбор? Кто не убежал — того съели, потомства не осталось, какой-то набор признаков, разнящихся из-за мутаций, не сохранился. Так скажите мне, ради всего святого, неужели головная боль абсолютно не мешала древнему человеку убегать от своих врагов и охотиться? А может это беда только современного человека?

Интересно, а у животных болит голова? Глядя на мою кошку Кошмарку, я начинаю в этом сомневаться. По-моему, у нее всего 2 состояния: сон и активный бег за всем, что движется. Не было ни одного случая, когда бы моя кошка, в мерзком настроении ходила по квартире, боясь пошевелить головой и мерзко мяуча, мучаясь головной болью.

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

Тогда мне тем более не понятно, зачем нужен этот маппинг боли на голову. Если верить в высший разум, сваявший человека, можно предположить, что «это не баг, это фича», предназначенная для мониторинга (слежения за) состояния человека.

Жаль, что меня все равно не удовлетворит ни одно объяснение, в смысле, что легче-то все равно не станет. Кто-то может сказать — «да выпей ты, наконец, таблетку». Спасибо за совет, но принцип «здесь лечим, там калечим» меня не устраивает. В том смысле, что головную боль сегодня я перетерплю, а вот завтрашнюю операцию на язве желудка я могу и не пережить. Да и если переживу, жить с усеченным желудком или, вовсе без него, радости мало.

Так что, буду терпеть. Главное не шевелить головой…

Оставить комментарий

HTA (HTML application)

После появления на свет WebICQ, я получил множество писем с просьбами рассказать, что такое HTA и WScript. О WScript как-нибудь в другой раз, а сегодня я расскажу о том что такое HTA.

HTA (или HTML Application) — так называемые «безбраузерные приложения», выполнение которых — одна из возможностей браузера Internet Explorer 5.0. С точки зрения пользователя, такая программа ничем (кроме, разве что, расширения) не отличается от любой другой: имеет заголовок окна, свою иконку, отображается в панели задач и т. п.

С точки зрения программиста, HTA — обычная Веб-страничка: для ее создания используются все те же HTML, CSS, JScript и VBScript. Единственное, что ее отличает от всего того, что можно увидеть на любом сайте, это наличие заголовочного тега (в общем случае он может отсутствовать) и полное отсутствие системы безопасности (как и в любом нормальном приложении).

Тег заголовка позволяет программисту управлять некоторыми параметрами созданного приложения. Выглядит он, как простой XML-тег, расположенный внутри тела программы (обратите внимание пробел перед «/>» обязателен!): <HTA:APPLICATION... />.

Параметры перечисляются внутри тега, например, так, как это показано ниже:

<HTA:APPLICATION ID="oHTA"
APPLICATIONNAME="myApp"
VERSION="1.0"
WINDOWSTATE="maximize" />

Хотя параметров довольно много (все они перечислены в Таблице 1), мне, например, очень не хватает еще двух: WIDTH и HEIGHT, которые позволили бы задавать размер окна, не вызывая методов JScript или VBScript.

Таблица 1

Параметр В JavaScript Назначение Значения
APPLICATIONNAME applicationName Имя приложения строка
BORDER border Тип бордюрa thin, dialog, none, thin
BORDERSTYLE borderStyle Стиль бордюра внутри HTA normal, complex, raised, static, sunken
CAPTION caption Наличие заголовка yes, no
commandLine Содержимое командной строки
CONTEXTMENU contextMenu Управляет наличием меню правой кнопки мыши yes, no
ICON icon Задает иконку приложения URL (строка)
INNERBORDER innerBorder Внутренний бордюр yes, no
MAXIMIZEBUTTON maximizeButton Управляет кнопкой «развернуть» yes, no
MINIMIZEBUTTON minimizeButton Управляет кнопкой «свернуть» yes, no
NAVIGABLE (только для IE 5.5) navigable Переход по ссылке произойдет в окне HTA no, yes
SCROLL scroll Наличие scroll bars yes, no, auto
SCROLLFLAT scrollFlat Управление стилем scroll bars no, yes
SELECTION selection Управляет возможностью выделения текста внутри HTA yes, no
SHOWINTASKBAR showInTaskBar Отображать ли в панели задач yes, no
SINGLEINSTANCE singleInstance Запретить запуск второго экземпляра? no, yes
SYSMENU sysMenu Управляет наличием системного меню yes, no
VERSION version Версия HTA строка
WINDOWSTATE windowState Начальный размер окна normal, minimize, maximize

Как видно из таблицы, все параметры приложения (большинство в режиме read-only) доступны из скриптовых языков. Что бы было понятно, как это делается, приведу небольшой пример для applicationName: oHTA.applicationName (oHTA — ID, заданный в заголовке).

Отсутствие системы безопасности означает, что разработчику предоставлена полная свобода доступа к ActiveX, а значит файловой системе и WScript. Кроме того, программист имеет возможность, при помощи атрибута APPLICATION, явно указать содержимое какого из внутренних фреймов может получить доступ к объектам приложения: <IFRAME SRC=content.htm APPLICATION=yes>.

Исходя из концепции безбраузерного приложения, Microsoft исключила из HTA функцию автозаполнения (AutoComplete of form) и закрыла доступ к объекту external.

Более подробно о HTA (на английском языке) можно почитать на сайте Microsoft MSDN.

Оставить комментарий

Поиск в Сети

Каждый раз, когда мне нужно найти в Интернете что-то специфическое, я с трудом вспоминаю адреса нужных мне искалок. А то и не вспоминаю, теряя кучу времени в попытках найти то, что мне нужно через друзей или, совсем не предназначенных для поиска подобной информации, других поисковых машин.

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

Итак, начну я со всем известных поисковых машин по Веб-ресурсам Yandex и Aport. Ссылки на них я вряд ли забуду, поскольку основной объем информации нахожу именно в них. Они стоят упоминания только за одно это. Трудно сказать, какая из этих двух поисковых машин лучше, но начинаю я поиск с Yandex — грузится быстрее.

Эквивалентом этим поисковым машинам в англоязычных ресурсах я считаю не AltaVista с Yahoo!, а менее известные (но более мощные, как я имел время убедиться) AllTheWeb и Google. В среднем, эти машины ищут быстрее и находят бо́льший объем информации. Особенно рекомендую вторую.

Переходим к поиску программ и прочих файлов, расположенных на FTP. А точнее к FTP-поисковикам. Из рунетовских особенно рекомендую Files.ru и FileSearch, из забугорных, кроме Lycos FTPsearch, ничего не вспоминается.

Тесно к FTP-поисковикам примыкают более специализированные — поисковики бесплатных программ. Раньше я чаще всего пользовался, теперь сдающим уже свои позиции, ListSoft. Сейчас предпочтение отдаю конкурирующим FreeSoft и FreeWare. Обозреватели упоминают еще какой-то SoftSeek. Я там не разу не был, так что ничего про него сказать не могу.

Большое спасибо создателям поисковых машин, специализирующихся на поиске драйверов для всевозможных видеокарт, модемов и проч. В Рунете из таких мне вспомнился Drivers.ru, из англоязычных, не раз меня выручавший, DriverZone.

Самая многочисленная группа — растущие как грибы MP3-искалки. Поскольку пользуюсь ими редко, ничего определенного сказать не могу, просто перечислю: Oth Net, Music Lycos, Italia On-line, Audiofind, Audiophilez, 2000 MP3 и WinMP3Locator.

Как можно тише и незаметнее упомяну о Crack.ru, Cracks.ru и небезызвестной Astalavista. :) Что они ищут — ясно из названия первых двух.

Поиск картинок. С этой задачей справятся, уже вышеупомянутые, Yandex и Aport, а также, выуженный из моих закладок CreativePro.

Так, что у нас осталось? Осталось упомянуть о сайте с говорящим названием Referats.ru и двух словарях сокращений — Sokr.ru (на русском) и AcronymFinder (на английском).

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

Нашел поисковик по схемам: «РадиоЛоцман». Поисковики по товарам в различных городах Price.ru (Москва, С.П., Екатеринбург, Новосибирск, Минск) и «Где купить?» (Казань).

Оставить комментарий

Мышь EzBrowser+

Примерно полгода назад, я вздумал проапгрейдить свой старенький Pentium-166 (разогнанный до 200) с 32-мя метрами на борту, до чего-то, более приличного. С играми я завязал около 2-х лет назад, монитор меня устраивал, так что я решил прикупить системный блок с Celeron-466/128Mb внутри. Дома, соединяя вышеозначенное с периферией, я обнаружил сзади корпуса сюрприз: два PS/2-ских разъема, ни в один из которых моя старенькая клавиатура ессно не полезла.

Мышь EzBrowser

На следующий день я твердо решил прикупить новую клавиатуру. Зашел я за клавиатурой, а вышел, держа в руках новую мышь EzBrowser и переходник PS/2 ⭤ AT для клавы. :)

Серый («металлик») корпус и провод, полупрозрачное дно из красного пластика с подсветкой, встроенная камера, делающая до 1500 снимков в секунду (именно так мышь понимает в какую сторону ее смещают) — все это поразило меня до глубины души, и заставило мой кошелек несколько похудеть.

Первая половина дня ушла на полевые испытания и рассказы всем встречным — поперечным, чем хороша моя новая любимица…

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

Итак.… EzBrowser, так же как и ее сородич из Microsoft, действительно, может нормально ездить по чему угодно: ноге, столу, стене, бумаге, по всему, у чего есть фактура. А вот по моему новому коврику, сделанному из переработанных шин и, раскрашенному австралийскими школьниками, она ездить отказалась.

Эта мышь не засоряется, не начинает пробуксовывать со временем, и нормально реагирует на прямой свет от лампы, фонарика, солнца, луны и прочих источников света.

Как с ней играется в Quake я не знаю. Я не играю в Quake, так же как и в HalfLife, Motorhead 2 и прочие фантики на раздевание. Но замечено, что мышь иногда может вести себя очень неадекватно, особенно, во время резкого старта после долгого простоя. Выражается это в беспорядочном скакании курсора по всему экрану. Для меня это не страшно, для игрока в Quake, наверное тоже. Там нет долгих простоев.

Дешевле всего купить ее можно в Москве. Где именно? Не знаю. Зайдите на Price.ru, и посмотрите. Цены в других городах я также не знаю. Позвоните в магазин, и спросите. Жители Москвы, Санкт-Петербурга, Новосибирска, Екатеринбурга, Минска могут зайти на тот же Price.ru, жители Казани — на «Казанский Портал», раздел «Где купить?». Купить — рекомендую.

Смотрится она очень здорово и необычно. Гостей можно развлекать подсветкой дна, которая отключается через некоторое время, если мышь не двигается. Третьей кнопки у нее нет, зато есть колесико, на которое тоже можно нажимать, как кнопку, или использовать его по прямому назначению — прокрутки окна.

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

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

Оставить комментарий

Интернет версия 2.0. Beta

Мегабайт — американское название килобайта.
(народная мудрость)

Люблю я маленький софт.

Думаю, если бы Microsoft делала программы, отвечающие ее названию, она была бы моей любимой фирмой. А пока, все с точностью наоборот.

Между тем, на Microsoft свет клином не сошелся. К счастью, есть люди, заботящиеся не о наличии красивых иконок и анимированных пиктограмм, а о функциональности и размере программы. Удивительно, но факт: существует Веб-сервер размером в 17Кб (вместе с DNS и HTTP-Proxy — 40), полноценный браузер Opera со встроенным news-ридером «весом» всего в 2Мб, графическая операционная система, умещающаяся на одной дискете и анонимный прокси в 100 строк на Perl’е (вместе с комментариями).

К счастью, люди есть… К несчастью, у этих людей нет достаточного количества денег, чтобы устроить своим продуктам мощный промоушн и встать в один ряд с монстрами программостроения. Я говорю о рынке программного обеспечения, хотя, в любой области ситуация та же. С чем это связано? Я считаю — с несовершенством информационной среды. С ее незащищенностью от недостоверной информации и убогими возможностями поиска. В идеале, все должно быть несколько по-другому. Должна существовать некая единая информационная Сеть. Пока что, на ее роль претендует Интернет, но до идеала ей еще очень далеко.

Во-первых, Сеть должна быть абстрагирована от носителя информации. Видео, текст, цвет, свет, запах и т. д. — различий быть не должно. В том смысле, что поиск должен адекватно вестись по любому носителю. Например, сейчас поиск по видеоизображению или звуку провести затруднительно. Было бы неплохо иметь возможность преобразования из одного носителя в другой. О равноценном, естественно, речь не идет, согласен на адекватное. :) А еще лучше — заиметь некий информационный порт для ее восприятия в отрыве от органов чувств. Даже не знаю, возможно ли такое в ближайшие лет 100. Человеческий носитель информации (aka память) целиком и полностью завязан на чувства.

Во-вторых, любая информация, попадающая в Сеть, должна быть сертифицирована сторонними организациями или виртуальными сущностями (aka ИИ aka AI). Таких организаций (сущностей) должно быть несколько, для того, чтобы невозможно было их купить. Жить все это хозяйство должно на деньги государства (aka налоги) и жестоко внутри себя конкурировать.

Я не призываю ввести цензуру в Сети, просто нужен механизм подтверждения подлинности информации. Если сертификата нет — пользователь сам решает, верить информации или не верить. Да и сертификату, в конечном счете, тоже. Право на выбор традиционно остается за пользователем.

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

А пока все останется по-старому. У девяноста процентов людей на их PC будет стоять Microsoft Windows, текст они будут набирать в Word и постоянно тратить деньги на новый винт, видеокарту, процессор, память и т. д. Ну, или, если более приближенно к жизни, утолять голод батончиком «Mars», считать, что «Nivea» — лидер в области косметики и покупать стиральные машины «LG» с номинальной загрузкой 7 килограмм.

Оставить комментарий

Кот Экслера (aka Бублик)

Как вы думаете, до какого размера может вырасти кот? Особенно если его надлежащим образом кормить? Ну? Два, четыре, восемь килограмм? Когда-то, я думал, что мой 5-тикилограммовый Мурзик (так звали моего ныне покойного кота), эта гора мускул, запросто прыгающая с пола на шкаф, — абсолютный рекордсмен по весу среди себе подобных.

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

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

Кот Бублик
Кот Бублик

Поначалу, увидев эти фотографии, я подумал, что тут не обошлось без фотошопа, но, приглядевшись внимательно к фото, и вспомнив, что Экслер не знает даже, где в фотошопе стёрка, а где карандаш, все-таки поверил, что они настоящие.

Вот, что делает с животными хороший уход и кастрация. :)

Оставить комментарий

Инструмент Веб-верстальщика

Иногда Веб-мастеру приходится резать и верстать страницу в расчете на то, что ее рабочее разрешение (минимальное разрешение необходимое для ее просмотра) меньше того, что выбрано им в данный момент. Фраза сложная, а означает она вот что: у меня, например, разрешение установлено в 1024×768, а заказчик хочет, что бы страница также хорошо смотрелась и на 640×480. Что бы во время верстки проверить, так ли это, мне приходится либо уменьшать окно браузера, что неудобно, так как точно в размер попасть трудно, либо переключаться между разрешениями (именно переключаться, резать при 640×480 для меня, мягко говоря, уже проблематично), что вызывает еще бо́льшие неудобства — устают глаза, да и общий дискомфорт…

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

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

Естественно, при таком наличии меда не обошлось без ложки дёгтя. Во-первых, вся эта красота работает только под Internet Explorer (в принципе я, как и многие другие, Netscape запускаю редко — только чтобы посмотреть все ли нормально под ним).

Во-вторых, работает не под всеми Эксплорерами, но под многими. Точнее мне выяснить не удалось. Единственно надежный способ узнать, работает ли под вашим — установить программу. Более быстрый способ — посмотреть в реестр. Для этого запустите программу regedit.exe из каталога Виндовз, в ветке HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer должна быть секция MenuExt. Если ее нет, скорее всего (90%) исталляция моей программы не даст никакого эффекта.

Программа представляет из себя батник с вкраплениями из ассемблерных подпрограмм. После запуска программа все сделает сама, кроме перезапуска. Его надо сделать самостоятельно. Скачивается очень быстро — всего 991 байт в архиве, сжато ZIP’ом.

P.S. Позже IE resizer был переписан на Windows Script Host. Запускается под Windows 98/ME/NT Option Pack/200x.

Оставить комментарий

99 бутылок: SHS SSI, Price Convertor Small Talk

Эпопея о бутылках с пивом продолжается. Сегодня вашему вниманию предлагается тексты программы, выводящие песню о бутылках на языках Small HTTP Server SSI и Price Convertor Short Talk 2.00rc2.

7. Small HTTP Server SSI. Вариант реализации SSI для SHS, написанного Максом Фиоктистовым. Файл должен называться index.shtm.

<!--#if expr="$b=No" -->
<BODY BGCOLOR=BLACK TEXT=WHITE>
No more bottles of beer...<BR>
Go to the store and buy some more...<BR>
99 bottles of beer.</BODY>
<!--#break -->
<!--#endif -->
<!--#set var="" value="" -->
<!--#set var="N" value="No" -->
<!--#set var="9" value="8" -->
<!--#set var="8" value="7" -->
<!--#set var="7" value="6" -->
<!--#set var="6" value="5" -->
<!--#set var="5" value="4" -->
<!--#set var="4" value="3" -->
<!--#set var="3" value="2" -->
<!--#set var="2" value="1" -->
<!--#set var="1" value="0" -->
<!--#set var="0" value="9" -->

<!--#if expr="!$a" -->
<!--#set var="a" value="9" -->
<!--#set var="b" value="9" -->
<!--#set var="s" value="bottles" -->
<!--#set var="m" value="$s" -->
<!--#endif -->
<!--#set var="t" value="$a" -->

<!--#if expr="$b=0" -->
<!--#set var="c" value="$a" -->
<!--#elif expr="$a>0" -->
<!--#set var="c" value="t" -->
<!--#endif -->
<!--#set var="d" value="$b" -->

<!--#if expr="$a=||$a=0||$c=1" -->
<!--#set var="c" value="" -->
<!--#endif -->

<!--#if expr="$d=1&&$c=" -->
<!--#set var="d" value="N" -->
<!--#elif expr="$d=2&&$c=" -->
<!--#set var="m" value="bottle" -->
<!--#endif -->

<HEAD>
<META HTTP-EQUIV="Refresh" Content="1;URL=index.shtm?a=<!--#echo var="$c" -->
&b=<!--#echo var="$d" -->&m=<!--#echo var="m" -->
&s=<!--#echo var="m" -->">
</HEAD>
<BODY BGCOLOR=BLACK TEXT=WHITE>
<!--#echo var="a" --><!--#echo var="b" -->
<!--#echo var="s" --> of beer on the wall,<BR>
Take one and pass it around,<BR>
<!--#echo var="$c" --><!--#echo var="$d" -->
<!--#echo var="m" --> of beer on the wall.
</BODY>

8. Price Contertor Small Talk 2.00rc2. Этот язык я придумал сам, реализован он был примерно в 1998 году, как внутреннее средство управления программой обработки прайсов, представленных виде файлов Excel.

BEGIN
    "99"
    mov a "bottle(s) of beer on the wall."
END
WORK    "*"
    eq "No"
    if
        echo "No more bottles of beer..."
        echo "Go to the store and buy some more..."
        echo "99 bottles of beer."
        break ""
    endif

    else
        delete
        mov Y a
        .
        echo
        echo "Take one and pass it around,"
        mov Y "1"
        -
        eq "0"
        if
            mov Y "No"
        endif

        delete
        mov Y a
        .
        echo
    endelse
    prev
END


Оставить комментарий

Windows 2000. Впечатления

С появлением Windows 2000 все как будто сошли с ума. Даже те, кто до сих пор морщился при слове Microsoft, как будто надели на глаза розовые очки. Я, проработавший на этой системе со времени ее появления, совершенно не замечаю плюсов ее использования перед гораздо более стабильной Windows 95 OSR2.

Что же приводится в качестве аргументов? Система сделана по технологии и на ядре NT. Это не аргумент. Это сообщение, причем несущее очень мало информации. Один тот факт, что первое сделано по технологии второго или с использованием его части, еще ни о чем не говорит.

Монтирование. Первое, что люди вспоминают. Лично мне, наличие этого самого монтирования глубоко фиолетово. Тем более, что эта «новая возможность» на самом деле довольна бородата. В UNIX’ах и прочих *INIX’ах эта возможность была с рождения, так же как и в MS-DOS’е (правда, не на уровне ядра и версии так до 5-й). Помните маленькую такую утилитку JOIN?

Стабильность. Об этом я мог бы сказать много. Матерных слов. Но не буду. Windows 2000 зависает по самым невероятных причинам. Мне, как человеку работающему еще и с Linux Slackware, где крутится Apache, Postgres, MySQL, miniSQL, Sendmail, FTP и т. д., есть с чем сравнивать.

Многопользовательская система. Это вы зря. Для безопасности нужно ограничить запись в реестр. Без возможности записи многие приложения (Photoshop, например) работать не будут. Приходится разрешать запись в некоторые ветки. Вы просто не представляете во сколько разных веток пишут свои данные некоторые приложения. Случается так, что программы буквально прячут свои данные в этом необъятном дереве. Например, серийный номер. Таким образом получается, что нормально работать под ней можно только с правами администратора.

Что еще? Защита от DLL Hell? Не смешите. Через пол-года эксплуатации на мою систему перестали инсталлироваться некоторые нужные мне программы. TheBAT!, WinAMP, Netscape инсталлируются через версию. Появился странный глюк. Есть файлы, открыть которые на моем компьютере стало невозможно. Система сообщает, что файл уже открыт. Чего я только не пробовал. Перезагружал систему, пробовал переписать через FTP и сетевой диск. Две вещи которые сделать получается — переименовать и удалить. Только толку от этого мало.

Microsoft в очередной раз сделала рывок. Только опять не вперед, а в сторону.

Оставить комментарий

Грамотно

Все кругом поправляют, замечают, советуют. Говори, пиши, употребляй слова правильно. Одно забываю сказать — как это сделать? В прямом смысле. Нет, конечно, на меня еще не посмотрят как на идиота, если я употреблю в приличном обществе слово «позвонишь» с ударением, как ему и положено, на последнем слоге. Но уже при слове «красИвее» на меня начинают коситься, а упоминание «строчна́я» вызывает у собеседников нервный смешок.

Вывод? Какие бы усилия я не делал, мне не подняться по уровню грамотности над людьми из основного моего круга общения. Моя речь неизбежно будет стачиваться, меняться, упрощаться. И с этим ничего не поделаешь, да и делать я ничего не собираюсь.

А как же, скажете вы, письменная грамотность? Не знаю, не пробовал. А если серьезно, то на ее наличие/отсутствие влияют другие факторы. Текстовая часть Интернета и книги. И то и другое я читаю каждый день и, в максимально допустимых количествах. Я не обладаю заученной грамотностью, так что приходится пользоваться грамотностью заимствованной. Проще говоря, пишу я, руководствуясь не правилами, почерпнутыми из учебников, а интуицией, базирующейся на обобщениях, сделанных на основе прочитанного. Наверное, как и многие из вас. Это еще, кстати неверно, называют «врожденной грамотностью»… или безграмотностью. :) У кого как.

Совсем другое дело ошибки стилевые. Но и тут есть оправдание. Эти ошибки следствие того, что фраза, которую я хотел записать, а то и смысл, который я хочу вложить в текст могут измениться в моей голове в процессе написания. Так и получается, что начал я с одной мысли, а закончил — другую. Правится это все элементарно — банальной вычиткой собственных текстов. Вот только не у всех хватает на это времени.

Так что буду писать как пишется, говорить как слышится и обильно снабжать все это ошибками разнообразных мастей. :) И уберите свои грязные манипуляторы, это святое, мое личное право. :) На худой конец, считайте, что пишу я не на русском, а, скажем, на украинском (для украинцев — болгарском). С сим позвольте откланяться…

Оставить комментарий

Софт. FAR 1.70b2, MySQL, PostgreSQL…

Новость дня — вышел FAR 1.70b2 build 321. С некоторый пор этот, один из лучших (скажу лучший — заклюют :) файловых менеджеров, разрабатывается не одним человеком, а группой разработчиков (FAR Team). С этих же самых пор список WhatsNew каждой новой версии поражает своим размером. Вот и на этот раз, я насчитал 64 пункта! Приставки Beta бояться не нужно, FAR Team обещает выпустить release только в случае полного отсутствия багов. То есть никогда :). Так что — качать!

Продолжая тему FARa. 14-го декабря появилась новая версия одного из моих любимых плагинов к FARy — ProxyNews 1.0 b8. Исправление только одно — пофиксен баг с листингом сообщений.

Смешно, но факт — я знаю людей, которые пользуются FARом, начиная чуть ли не с первой версии и не знают о существовании такий вещи, как плагины. На всякий случай, сообщу. Сам FAR — это еще не все. К нему существуют «довески», называемые плагинами, которые сильно расширяют его функциональность. Например, есть плагины для чтения почты, работы с FTP через Proxy-сервер, проигрывания музыкальных файлов (точнее управления WinAMP’ом) и многого другого. Плагины можно взять на сайте PlugRing, ссылка на который есть в конце статьи (см. «ссылки по теме»).

Из других новостей мира вареза — появление MySQL 3.23.29a-gamma. В списке изменений — в основном исправление ошибок.

Почему-то, MySQL считается лидером по производительности в мире Веба. По-моему, мнение это распространяется за счет испытаний на время обработки одного простейшего запроса. На мой взгляд, у PostgreSQL достоинств гораздо больше. Во-первых, он производительнее MySQL, если запросов несколько (надо только запустить его в асинхронном режиме), при условии, что сайты, обращающиеся к СУБД, достаточно посещаемы, наличие нескольких запросов одновременно — обычное дело. Во-вторых, в PostgreSQL есть несколько встроенных языков для определения хранимых процедур. В-третьих, в PSQL есть подзапросы, в отличие от MySQL, где их можно найти только в TODO list. В-четвертых, в PSQL есть UNION. В MySQL приходится пользоваться временными таблицами. Да и вообще, что перечислять? В MySQL есть, на мой взгляд, только две вещи, которых нет в Postgres: переменные (которые, кстати, не везде могут быть использованы) и условие IF (которое с успехом заменятся CASE и процедурами).

Так что, если будете выбирать СУБД для Веба… вы знаете, что я бы посоветовал.

Оставить комментарий

Мой дедушка — хакер. Найдено в FIDO

Увидел сегодня в fido7.ru.anekdot. Помещаю без всяких комментариев, кроме одно — автор не я. А жаль…

Мой дедушка - хакер

     Мой дедушка никогда не работал. "Якi ж хакер работает!"
- говаривал он. Он не писал интегрированных систем, утилит и
даже  вирусов  -  он  избегал  операционных  систем.  Он  не
пользовался окнами.  Hе было в его комнате и дверей. Общался
он только  со  своими старыми друзьями по  сетям: обменяются
парой сообшений, а потом Дедушка подвесит систему, обратится
к порту напрямую, и приговаривает:
        - Теперь позвольте пару слов без протокола...

Jump

     "JMP IP", - подумал однажды Дедушка и повис.

Завтрак

     Дедушка  никогда  не  завтракал  дома.  Рано  утром  он
надевал свой макинтош,  клал в карман apple  и отправлялся в
Space bar,  где заказывал hot  keys  с  инвалидной  мидией и
стаканчиком холодного ребута.

Power user

     В соседнем доме жил Power User. Каждое утро он открывал
окно и говорил "Hello,  world!". Hа это Дедушка презрительно
фыркал - он не любил user'ов, особенно power.
        - Утюг тоже power user, - говаривал он.

Ignored

     Однажды к Дедушке прибежала молоденькая лаборантка:
        - Мистер  Hackerley,  это ужасно!  Я  беременна! Что
делать? Может, аборт?
     Поскольку    Retry   был   явно    неуместен,   Дедушка
игнорировал, и дал мне возможность написать эти строки.

Hаследство

     Однажды  Дедушка  застал  своего  пятилетнего  сына  за
вызовом системного прерывания,  и устроил ему головомойку. И
сколько баловник не оправдывался, что, дескать прерывание-то
было UNDOCUMENTED, Дедушка лишил его наследства.
     Поэтому мы,  Дедушкины  потомки,  и не унаследовали его
монографию `Hacker's Methods'.

Far Call

     Однажды  Дедушка отсиживался от  multiuser'ов в верхних
адресах видеопамяти.  Вдруг в IP он увидел свой адрес. "FA",
-  издал  Дедушка  боевой  КЛИч  и  запретил  прерывания. Hе
помогло  -  процессор  неумолимо  приближался  к  дедушкиной
run-time библиотеке.
        - Far call! - выругался дедушка и подвесил систему.

4 комментария

Парсим Лебедева, Emax, PHP 4.0.4

Артемий Лебедев и компания опубликовали язык своего заочно знаменитого Парсера. Непонятно, чем они так гордились? С точки зрения программиста — обычный предпроцессор, тот же PHP — гораздо логичнее, понятнее и функциональнее, а с точки зрения не программиста, как мне кажется, — кошмарное нагромождение скобочек, стрелочек и значков «@». Нет, увольте.

Сегодня я решился все-таки посмотреть то, о чем говорит весь РуНет уже примерно неделю, — на проект Emax’a («Три сестры»). Я абсолютно не понял почему вокруг всего этого столько шуму. Будем считать, что идеей этого проекта я не проникся. Зато проникся идеей соседнего → www.sight.ru. Для того чтобы понять, что представляет из себя сайт, достаточно взглянуть на несколько работ, там представленных. Вот список наиболее понравившихся мне из просмотренных:

  • Девушка молодая, задумчивая;
  • Пора пришла;
  • Я птица слабая, мне тяжело лететь;
  • Двое в сторонке;
  • Дуб Ангела;
  • Монастырь.

Особенно понравилась первая, причем до такой степени, что я, активный противник фотографий и рисунков на десктопе, не удержался. Хотя понимаю, что ставить такое на десктоп — кощунство, ничего поделать с собой не могу.

Не скажу, что с нетерпением этого ожидал, но все-таки выход каждой новой версии PHP для меня — событие. Вот и сегодня, узнав о выходе PHP 4.0.4, я внимательно изучил change log, выкачал новую версию и документацию. Несмотря на то, что изменилась лишь вторая цифра после запятой, изменений довольно много. Если оценивать с точки зрения количества, то на моем домашнем разрешении (800×600) список занимает девять экранов. Качественного, как и ожидалось, скачка нет, обширный список багфиксов, с редкими вкраплениями новых возможностей. Особенно меня заинтересовала поддержка новой версией модуля OpenSSL и ключ «F» к функции preg_replace (за что он отвечает посмотрите сами), из багфиксов, цитирую, «fixed mysql_close(), pg_close(), msql_close() and sybase_close() — they weren’t properly closing the SQL connections». При всем уважении к создателям PHP у меня просто нет слов…

Оставить комментарий

Дядя Ваня — это вкусно…

Смотрю фильм ужасов, который, по обыкновению всех фильмов, перемежается рекламой. Фильм вызывает лишь смех (ковыряют ножом какого-то монстра, из него вываливаются черви, коллективный разум наверное?), зато от рекламы — волосы встают дыбом. Цитирую, «дядя Ваня — это вкусно». Как вам? Как говорит Хрюн Моржов из «Тушите свет» — «внушает».

Раз уж затронули рекламу, давайте поговорим поподробнее. Для меня вообще реклама — штука странная. В том смысле, что, по идее, она должна создать у меня положительный настрой по отношению к товару. То ли у креаторов что-то не ладится, то ли у меня в голове мозги не той модели, но не действует она на меня так как должна. Помните девочку из рекламы чего-то-там-молочного от «Милая Мила»? Ту самую, которая лезет в кувшин с этим самым молочным, пальцем, а потом его, палец, облизывает? Меня в этот момент просто тошнит. И _это_ мне предлагается купить? Предлагаю создателям этой рекламы для полноты картины поместить в рекламу следующий «рекламный трюк» — две зеленые сопли в нос этой самой девочки. Тогда меня наконец перестанет тошнить. Потому что стопроцентно вырвет.

Конечно это крайний случай. Обычно реклама у меня не вызывает никаких эмоций вообще, разве что кроме скуки.

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

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

У моей матери собственного иммунитета нет. По-моему, она покупает все что рекламируется. Зато у нее есть мой отец. Он, так и не выработав внутренних способов защиты, изобрел защиту внешнюю. Когда на экране появляется реклама, он переходит на другой канал или, если переходить некуда, просто _выключает_ звук. Похоже, это им помогает.

Кто-то может спросить, как же выбрать товар, не посмотрев рекламу. Все очень просто. Интернет у вас есть? Читайте, узнавайте, почему одно лучше другого, анализируйте. Фильтруйте аргументы, типа «лучше потому что лучше», и выбирайте, думая своей головой.

Оставить комментарий

Баннерная реклама. Только не бейте…

К сожалению, фильтровать рекламу «в телевизоре» мы не научились, зато худо-бедно фильтруем рекламу в Интернете. Кто-то ставит AtGuard, кто-то настраивает Squid, кто-то — надеется на «ускорители Интернет». О том как очистить свой виртуальный мирок от баннеров сказано достаточно. Я же хочу восстановить справедливость — защитить владельцев сайтов от программ вырезающих баннеры.

Для начала отмазка. Почему-то считается, что баннеры — это зло. Они засоряют канал и снижают скорость загрузки любимого ресурса. Никто и не задумывается, как и на какие деньги, эти самые «любимые ресурсы» существуют. Так вот, открою вам глаза. Любимые ресурсы существуют за счет показов так нелюбимых баннеров. А внося свой вклад в урезание баннерных показов, вы тем самым способствуете банкротству Веб-проектов.

Итак. Для начала надо разобраться, как собственно осуществляется фильтрация подобного рода. Все очень просто. Пользователь (или изготовитель фильтра) прописывает некий набор правил, согласно которым, программа определяет, что есть баннер, а что — нет. Напрашивается вывод: чтобы ваши баннеры проходили «фейс-контроль» надо:

  1. Либо назвать их так или сунуть в такой каталог, что бы правила, заданные в программе, их не опознали;
  2. Либо сделать что-то, что бы добавить правило (а значит отличить баннер от не-баннера) не представлялось возможным.

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

Нужно будет внести кое-какие изменения в баннерную систему и в настройки Веб-сервера. Начнем с баннерной системы.

Во-первых, баннеры нужно называть совершенно произвольным образом, не придерживаясь никаких правил. Например: tri-gusia-i-utka.gif, a.gif, 1808500.jpg и т. д.

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

<IMG SRC=http://your.host.ru/aa12/a.gif>
<IMG SRC=http://your.host.ru/priale/sila/duaa1/1808500.jpg>

и т. д.

Популярные Веб-сервера (по крайней мере Apache и IIS) предоставляют возможность задать произвольную реакцию на ошибку 404 (файл не найден). Изготавливается скрипт, который будет вести себя следующим образом: при запуске он проверяет какая страница была запрошена, если это GIF— или JPEG-файл (для Apache — анализируется переменная REQUEST_URI), то скрипт пытается найти баннер с таким именем. Если находит — показывает, не находит — сообщает об ошибке «файл не найден».

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

Оставить комментарий

Opera 5.01. Опять Парсер. Etc

Только что узнал о выходе Opera 5.01. С чем и поздравляю всех немногочисленных пока поклонников этого, потенциально популярного браузера. Краткий список изменений со слов сайта «Абсолютно все о браузере Opera» выглядит так:

  • Добавлены функции поиска на кнопку «Go» (ввод)
  • Новые shotcuts в почтовой программе
  • Исправлены проблемы с прокси
  • Оптимизирована работа ICQ
  • Косметические изменения в окне новостей
  • Изменения в самом файле Оперы
  • Исправлена ошибка в Ecmascript

Да, чуть не забыл представить эту замечательную программу тем, кто с ней еще не знаком: это очень маленький, быстрый браузер с поддержкой практически всего чего только можно. Для программистов и верстальщиков: к сожалению пока нет нормальной поддержки DOM, в HTML— и WAP— отрисовке еще множество глюков. Радует, что проект быстро развивается, возможно к версии так 6-й из него получится мощная альтернатива Internet Explorer.

Лебедевский «Parser» до сих пор не дает покоя сетевым обозревателям. Сегодня журнал «Интернет.Ру» разродился интервью с создателем Парсера Константином Моршневым. Интервью коротенькое (а о чем говорить-то?), но для меня интересное. Интересное тем, что в нем упоминается о другой разработке студии Лебедева — «Imprimatur!». Как вам фраза: «этот продукт совершенно не похож на все остальные наши разработки — его нет в какой-то стандартной версии, он подгоняется под каждый конкретный сайт»? Которую любой человек, имеющий какой-то опыт создания Веб-интерфейсов, с легкостью расшифрует как: «это не продукт, а обычный Веб-интерфейс к сайту, каких — тысячи, для каждого сайта на базе предыдущих создается новый Веб-интерфейс».

По-моему, ход гениальный. Завтра же вставлю в свои коммерческие предложения: доступ к вашему сайту будет осуществляться по нашему оригинальному протоколу «Русская Линия», базирующемся на HTTP и FTP, поисковая машина «Ванга», которую мы каждый раз переписываем под конкретный сайт, ну и так далее. :)

В той же статье Моршнев обещает открыть нам глаза на другое свое детище — уже упомянутый мною «Imprimatur!». Не нужно быть семи пядей во лбу, чтобы догадаться, какой доменный адрес будет иметь сайт ему посвященный. Я — догадался. Правда на сам сайт войти не получится, доступ запрещен. Но работа над подпиткой утихающей уже шумихи вокруг лебедевской студии продолжается.

Оставить комментарий

99 бутылок: ASP (JScript и JavaScript), Parser

Жаждались? Судя по кислым лицам — нет. Итак, представляю очередную серию из мыльного сериала «99 бутылок пива на стене». На этот раз, на стене амбициозный Парсер с хорошей родословной, но плохой внешностью и братья-почти-что-близнецы JavaScript и ASP.

9. Parser (втрой версии) студии Артемии Лебедева. Предпроцессор для генерации Веб-страниц «на лету».

^var[i;99]
^while[i>0;

^var[i] bottle^if[i!=1;s;] of beer on the wall, ^var[i]
bottle^if[i==1;s;] of beer.<BR>
Take one and pass it around,<BR>
^var[i;-;1]
^if[i;^var[i];No] bottle^if[i!=1;s;] of beer on the wall.<BR>
<BR>
]
No more bottles of beer...<BR>
Go to the store and buy some more...<BR>
99 bottles of beer.

10. ASP JScript и JavaScript. Одновременно. Первый — серверный язык, второй — клиентский. Испытано под IE 5.0, Opera 5.01, Netscape 4.75, Netscape 6.0 и IIS5.

<!-- <%@ LANGUAGE = JScript %>

<% //>
//</%> --> <SCRIPT LANGUAGE=JavaScript>
for (k = ' of beer on the wall',o='', i = 99; i>0; i--)
{
    a = i+' bottle'+(i-1?'s':'')
    o+= a+k+', '+a+' of beer...<BR>'+
    'Take one down, pass it around.<BR>'+
    (i-1?i-1:'No ')+' bottle'+(i-2?'s':'')+k+'.'+
    '<BR><BR>'
}

o+= 'No more bottles of beer...<br>'+
'Go to the store and buy some more...<br>'+
'99 bottles of beer.'

if (typeof(document)!='undefined') document.write (o); else
if (typeof(Response)!='undefined') Response.Write (o)
// </SCRIPT> <!-- // < %> -->


Оставить комментарий

← сюда туда →