Windows 2000. Впечатления
С появлением Windows 2000 все как будто сошли с ума. Даже те, кто до сих пор морщился при слове Microsoft, как будто надели на глаза розовые очки. Я, проработавший на этой системе со времени ее появления, совершенно не замечаю плюсов ее использования перед гораздо более стабильной Windows 95 OSR2.
Что же приводится в качестве аргументов? Система сделана по технологии и на ядре NT. Это не аргумент. Это сообщение, причем несущее очень мало информации. Один тот факт, что первое сделано по технологии второго или с использованием его части, еще ни о чем не говорит.
Монтирование. Первое, что люди вспоминают. Лично мне, наличие этого самого монтирования глубоко фиолетово. Тем более, что эта «новая возможность» на самом деле довольна бородата. В UNIX’ах и прочих *INIX’ах эта возможность была с рождения, так же как и в
Стабильность. Об этом я мог бы сказать много. Матерных слов. Но не буду. Windows 2000 зависает по самым невероятных причинам. Мне, как человеку работающему еще и с Linux Slackware, где крутится Apache, Postgres, MySQL, miniSQL, Sendmail, FTP и т. д., есть с чем сравнивать.
Многопользовательская система. Это вы зря. Для безопасности нужно ограничить запись в реестр. Без возможности записи многие приложения (Photoshop, например) работать не будут. Приходится разрешать запись в некоторые ветки. Вы просто не представляете во сколько разных веток пишут свои данные некоторые приложения. Случается так, что программы буквально прячут свои данные в этом необъятном дереве. Например, серийный номер. Таким образом получается, что нормально работать под ней можно только с правами администратора.
Что еще? Защита от DLL Hell? Не смешите. Через
Microsoft в очередной раз сделала рывок. Только опять не вперед, а в сторону.
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
Инструмент Веб-верстальщика
Иногда
Мне это все порядком поднадоело и я решил узнать, нет ли
Я решил посмотреть, как это можно сделать проще, а заодно, если получится, осчастливить
Естественно, при таком наличии меда не обошлось без ложки дёгтя.
Программа представляет из себя батник с вкраплениями из ассемблерных подпрограмм. После запуска программа все сделает сама, кроме перезапуска. Его надо сделать самостоятельно. Скачивается очень быстро — всего 991 байт в архиве, сжато ZIP’ом.
P.S. Позже IE resizer был переписан на Windows Script Host. Запускается под Windows 98/ME/NT Option Pack/200x.
Кот Экслера (aka Бублик)
Как вы думаете, до какого размера может вырасти кот? Особенно если его надлежащим образом кормить? Ну? Два, четыре, восемь килограмм?
Полгода назад, зайдя в мясной отдел местного магазина, я увидел кота размером в полтора раза больше моего и понял — недооценил я кошачий род. Наверное, сказалось выбранное котом место жительства. Такая кошара запросто могла бы дать отпор некоторым собакам среднего роста. Увидев его, я подумал — ну все, для этого вида животных это предел.
Но когда сегодня я, зайдя на сайт Экслера, увидел во что превратился его кастрированный кот Бублик, раздобревший на сочинских харчах, я чуть не упал в обморок.
Поначалу, увидев эти фотографии, я подумал, что тут не обошлось без фотошопа, но, приглядевшись внимательно к фото, и вспомнив, что Экслер не знает даже, где в фотошопе стёрка, а где карандаш,
Вот, что делает с животными хороший уход и кастрация. :)
Интернет версия 2.0. Beta
Мегабайт — американское название килобайта.
(народная мудрость)
Люблю я маленький софт.
Думаю, если бы Microsoft делала программы, отвечающие ее названию, она была бы моей любимой фирмой. А пока, все с точностью наоборот.
Между тем, на Microsoft свет клином не сошелся. К счастью, есть люди, заботящиеся не о наличии красивых иконок и анимированных пиктограмм, а о функциональности и размере программы. Удивительно, но факт: существует
К счастью, люди есть… К несчастью, у этих людей нет достаточного количества денег, чтобы устроить своим продуктам мощный промоушн и встать в один ряд с монстрами программостроения. Я говорю о рынке программного обеспечения, хотя, в любой области ситуация та же. С чем это связано? Я считаю — с несовершенством информационной среды. С ее незащищенностью от недостоверной информации и убогими возможностями поиска. В идеале, все должно быть несколько
Я не призываю ввести цензуру в Сети, просто нужен механизм подтверждения подлинности информации. Если сертификата нет — пользователь сам решает, верить информации или не верить. Да и сертификату, в конечном счете, тоже. Право на выбор традиционно остается за пользователем.
А пока все останется
Мышь EzBrowser+
Примерно полгода назад, я вздумал проапгрейдить свой старенький
На следующий день я твердо решил прикупить новую клавиатуру. Зашел я за клавиатурой, а вышел, держа в руках новую мышь EzBrowser и переходник PS/2 ⭤ AT для клавы. :)
Серый («металлик») корпус и провод, полупрозрачное дно из красного пластика с подсветкой, встроенная камера, делающая до 1500 снимков в секунду (именно так мышь понимает в какую сторону ее смещают) — все это поразило меня до глубины души, и заставило мой кошелек несколько похудеть.
Первая половина дня ушла на полевые испытания и рассказы всем встречным — поперечным, чем хороша моя новая любимица…
Прошло полгода. Знакомые моих знакомых рассказали своим знакомым, что знакомый знакомых их знакомых приобрел мышь c камерой в пузе и может бесплатно проконсультировать по поводу ее плюсов, минусов, стоимости в разных уголках планеты и вообще обо всем, с ней связанном. Получив на этой неделе. примерно, трехсотое письмо, я решив, что так больше нельзя, решил написать небольшую заметку, так сказать, FAQ и давать всем желающим ссылку.
Итак.… EzBrowser, так же как и ее сородич из Microsoft, действительно, может нормально ездить по чему угодно: ноге, столу, стене, бумаге, по всему, у чего есть фактура. А вот по моему новому коврику, сделанному из переработанных шин и, раскрашенному австралийскими школьниками, она ездить отказалась.
Эта мышь не засоряется, не начинает пробуксовывать со временем, и нормально реагирует на прямой свет от лампы, фонарика, солнца, луны и прочих источников света.
Как с ней играется в Quake я не знаю. Я не играю в Quake, так же как и в HalfLife, Motorhead 2 и прочие фантики на раздевание. Но замечено, что мышь иногда может вести себя очень неадекватно, особенно, во время резкого старта после долгого простоя. Выражается это в беспорядочном скакании курсора по всему экрану. Для меня это не страшно, для игрока в Quake, наверное тоже. Там нет долгих простоев.
Дешевле всего купить ее можно в Москве. Где именно? Не знаю. Зайдите на Price.ru, и посмотрите. Цены в других городах я также не знаю. Позвоните в магазин, и спросите. Жители Москвы,
Смотрится она очень здорово и необычно. Гостей можно развлекать подсветкой дна, которая отключается через некоторое время, если мышь не двигается. Третьей кнопки у нее нет, зато есть колесико, на которое тоже можно нажимать, как кнопку, или использовать его по прямому назначению — прокрутки окна.
С мышью поставляется специальный софт, но нужен он больше для настройки действия совершаемого по нажатию на колесико. Все ставится и настраивается элементарно, никаких проблем замечено не было.
Кажется ничего не забыл. А! Насчет считывания этой мышью
Поиск в Сети
Каждый раз, когда мне нужно найти в Интернете
Наконец, все это мне надоело и я решил сегодня порыться в закромах сетевых обозревателей, собственной памяти, своих закладках и собрать все найденные ссылки на одной странице.
Итак, начну я со всем известных поисковых машин
Эквивалентом этим поисковым машинам в англоязычных ресурсах я считаю не AltaVista с Yahoo!, а менее известные (но более мощные, как я имел время убедиться) AllTheWeb и Google. В среднем, эти машины ищут быстрее и находят бо́льший объем информации. Особенно рекомендую вторую.
Переходим к поиску программ и прочих файлов, расположенных на FTP. А точнее к FTP-поисковикам. Из рунетовских особенно рекомендую Files.ru и FileSearch, из забугорных, кроме Lycos FTPsearch, ничего не вспоминается.
Тесно к FTP-поисковикам примыкают более специализированные — поисковики бесплатных программ. Раньше я чаще всего пользовался, теперь сдающим уже свои позиции, ListSoft. Сейчас предпочтение отдаю конкурирующим FreeSoft и FreeWare. Обозреватели упоминают еще
Большое спасибо создателям поисковых машин, специализирующихся на поиске драйверов для всевозможных видеокарт, модемов и проч. В Рунете из таких мне вспомнился Drivers.ru, из англоязычных, не раз меня выручавший, DriverZone.
Самая многочисленная группа — растущие как грибы MP3-искалки. Поскольку пользуюсь ими редко, ничего определенного сказать не могу, просто перечислю: Oth Net, Music Lycos, Italia
Как можно тише и незаметнее упомяну о Crack.ru, Cracks.ru и небезызвестной Astalavista. :) Что они ищут — ясно из названия первых двух.
Поиск картинок. С этой задачей справятся, уже вышеупомянутые, Yandex и Aport, а также, выуженный из моих закладок CreativePro.
Так, что у нас осталось? Осталось упомянуть о сайте с говорящим названием Referats.ru и двух словарях сокращений — Sokr.ru (на русском) и AcronymFinder (на английском).
Это все, что я смог вспомнить, ниже я буду добавлять поисковые машины, о которых я узнаю позднее.
Нашел поисковик по схемам: «РадиоЛоцман». Поисковики по товарам в различных городах Price.ru (Москва, С.П., Екатеринбург, Новосибирск, Минск) и «Где купить?» (Казань).
HTA (HTML application)
После появления на свет WebICQ, я получил множество писем с просьбами рассказать, что такое HTA и WScript. О WScript
HTA (или HTML Application) — так называемые «безбраузерные приложения», выполнение которых — одна из возможностей браузера Internet Explorer 5.0. С точки зрения пользователя, такая программа ничем (кроме, разве что, расширения) не отличается от любой другой: имеет заголовок окна, свою иконку, отображается в панели задач и т. п.
С точки зрения программиста, HTA — обычная
Тег заголовка позволяет программисту управлять некоторыми параметрами созданного приложения. Выглядит он, как простой
Параметры перечисляются внутри тега, например, так, как это показано ниже:
<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 |
Как видно из таблицы, все параметры приложения (большинство в режиме
Отсутствие системы безопасности означает, что разработчику предоставлена полная свобода доступа к ActiveX, а значит файловой системе и WScript. Кроме того, программист имеет возможность, при помощи атрибута APPLICATION, явно указать содержимое какого из внутренних фреймов может получить доступ к объектам приложения: <IFRAME SRC=content.htm APPLICATION=yes>.
Исходя из концепции безбраузерного приложения, Microsoft исключила из HTA функцию автозаполнения (AutoComplete of form) и закрыла доступ к объекту external.
Более подробно о HTA (на английском языке) можно почитать на сайте Microsoft MSDN.
Хедэйк
Как работает естественный отбор? Кто не убежал — того съели, потомства не осталось,
Интересно, а у животных болит голова? Глядя на мою кошку Кошмарку, я начинаю в этом сомневаться.
Медики утверждают, что в головном мозге, ровно как и в костях черепа, нет нервной ткани, так что сама голова болеть не может. Головная боль должна означать, что у вас
Тогда мне тем более не понятно, зачем нужен этот маппинг боли на голову. Если верить в высший разум, сваявший человека, можно предположить, что «это не баг, это фича», предназначенная для мониторинга (слежения за) состояния человека.
Жаль, что меня все равно не удовлетворит ни одно объяснение, в смысле, что
Так что, буду терпеть. Главное не шевелить головой…
Виртуальная пьянка
Многие слышали о такой вещи, как виртуальный секс.
Вот только представьте себе такой разговор:
MegaDestroyer: с какой начнем?
SuperCrasher: давай с «Пшеничной».
MegaDestroyer: с «Пшеничной», так с «Пшеничной». Разливай.
SuperCrasher: BlackKiller, ты чего молчишь? Опять dial-up отвалился?
BlackKiller: Тут я.
SuperCrasher: ОК. Не торопясь, достаю бутылку, срезаю ножом пробку и разливаю.
\^/ \^/ \~/
BlackKiller: Стоп! А почему меня обделили?
SuperCrasher: Pardon, \^/ \^/ \^/
MegaDestroyer: Ну, выпьем. За нас!
SuperCrasher: \_/
BlackKiller: \_/ Хорошо пошла…
MegaDestroyer: \_/ Угу…Представили? Ну не красота? Заметьте, утром никакого похмелья или пищевого отравления, драки по пьяни с привлечением мебели или порчи оной. Как максимум — выяснение отношения в Quake или VirtuaFigter, да и то, при условии наличия выделенки. В связи со стремительно приближающимся Новым Годом (вы, кстати, уже купили мандарины?), вышесказанное становится еще более актуальным.
Так что, все на освоение безграничных возможностей Интернета и, возможно,
P.S. Автор не несет ответственности за появление вирутальной алкогольной зависимости, синдрома виртуальной алкогольной интоксикации или виртуальной заменительной рвотной реакции. Кроме того, автор считает нужным поставить читателя в известность о незафиксированных случаях виртуального похмелья, якобы имевших место быть в одном из городов Алтайского края, хотя факты проявления этого явления достоверными считать нельзя.
P.P.S. Специально для господ из оффлайновых изданий: все сказанное в предыдущем абзаце не более чем шутка.
Что происходит?
Почему на протяжении последней недели ко мне в ICQ стучатся , я проследил ее айпишку, оказалось она выходит через того же провайдера что и я. Я туда позвонил и выяснил какой пользователь сидит сейчас на этом IP-е. Имя совпало, дальше я копать не стал, просто пригрозил, что узнаю, где она живет и перевел ее в Ignore List. Дольше всего я проговорил с девушкой по имени Света. Она дала мне свой номер пейджера и я, воспользовавшись
Все девушки утверждают, что меня не знают. Причину по которым они решили пообщаться со мной чаще всего сообщают
Так что же происходит? Случайность? Верится. С трудом. Розыгрыш? Ни у одного из моих знакомых нет одновременно двух ресурсов для этого необходимых: терпения и времени.
Одна из девушек, я уже про нее упоминал, Света, прокололась: отступила от сценария и дала понять, что знает, где я работаю. На вопрос откуда, сказала, что это ей сказал я. По Аське. Я специально выгрузил Аськин лог и пересмотрел весь наш разговор. Там я ни единым словом не упомянул где именно я работаю.
Сегодня в моем
P.S. Что называется «когда верстался этот номер».
Только что мне позвонила Света и сказала, что скоро доедет до компьютерного класса и выйдет в Инет. Хочет со мной поговорить.
О безопасности в Unix
О безопасности
Сегодня побывал в шкуре киношного кул хацкера, из тех, что подбирают пароли с третьего раза. Правда, попыток я сделал побольше, да и пароль не подобрал… в общем, все по порядку.
Сидел я у нашего постмастера Сергея, консультировался по поводу мультидоменной настройки sendmail. Примерно на середине разговора нас прервали — зашел его начальник, Сергей ушел с ним забрать
Примерно через 5—10 минут (я как раз вбивал
Теория о том, что совпала hash-сумма, или, что я нашел «инженерный» пароль, не подтвердилась. После прихода Сергея мы провели «следственный эксперимент» — он заблокировал консоль и ввел ту же комбинацию.
Так что единственное разумное объяснение, которое пришло мне в голову, заключается в следующем. Похоже разработчики включили в свой продукт одну недокументированную особенность — система пускает человека, который в течение долгого времени вводит парольные последовательности, некоторая часть которых совпадает по буквенному составу и/или длине с правильным паролем. «Cчитая», что хозяин забыл пароль.
Остается только догадываться, сколько еще таких «недокументированных возможностей» зашито в софт, которому мы привыкли доверять безопасность нашего компьютера.
Разгон. S3. MCLK
Я снимаю с себя всю ответственность за любые последствия подобного разгона.
Речь пойдет о небольшой, по современным меркам (113Кб), утилите MSLK. Она предназначена для разгона видео карт Cirrus Logic (
Программа работает под управлением 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.
Более подробная документация (правда, на английском) распространяется вместе с программой.
Недокументированные… Окончание.
Вместо предисловия.
Сегодня Google выдал мне
Так что в списке подозреваемых на полезную нагрузку остались: CHARLES, JEAN, UNKNOWN и INPUT TYPE=JOT.
Внимательное изучение этой самой страницы увеличило вышеприведенный список еще на два экземпляра: INPUT TYPE=READONLY и INPUT TYPE=OBJECT. Что означает первый, стало понятно после полевого испытания — создается текстовое поле, которое нельзя редактировать. Для чего служит второй, станет понятно ниже. Кроме того, на той же странице я с удивлением узнал, что у тега INPUT есть атрибут HEIGHT.
Все вышеперечисленное вдохнуло в меня новые силы и я, с утроенной энергией, взялся за поисковые машины…
Через пару минут поиска, видимо найдя
Атрибут 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» и работает
Из других любопытных открытий — существование атрибута SUPPRESS, который заставляет (его значения — TRUE и FALSE) тег LAYER игнорировать свое содержимое до закрывающей пары и того же атрибута у тега A (anchor), только с другим значением — его использование ведет к появлению рамки вокруг ссылки в момент нажатия, как в MSIE. Только непонятно, исходники какой из версий я смотрел — одной из будущих,
В общем, я остался доволен сегодняшним результатом поиска. :) И хотя, остались еще
Недокументированные возможности
Если не всем, то многим, известно, что в практически в любом устройстве есть ,так называемые, «недокументированные возможности». Первое мое знакомство с ними состоялось еще на примере команд Ассемблера к компьютеру
Время от времени я просматриваю exe-файлы браузеров и их dll-ки, в надежде узнать
Простой опыт показывает, что информацию о них в сети найти можно, если очень постараться. После
- SUBDOC — «определяет субдокумент с собственным окружением. Может быть вложен.» Что бы это значило? Эксперименты ни к чему не привели.
- HYPE — Судя по косвенным ссылкам раньше воспроизводил
какой-то звук. Оставлен как заглушка. - MQUOTE — Средство для цитирования почтовых сообщений.
- COLORMAP — упоминается как параметр (PRIVATE|DITHERED|YES|NO) тега EMBED. Похоже используется
в каком-то плагине.
На большее моего терпения не хватило. Так вопрос о том, что такое CELL, CHARLES, JEAN, NSCP_CLOSE, NSCP_OPEN, NSCP_REBLOCK, UNKNOWN и т. д. остается открытым.
Как мне кажется. Генетика
Больной, испуганно, доктору:
— Доктор, что это у меня?!
— АаААааааа!!!8-O Что это у вас?!
(анекдот)
Глядя на визжащее, скулящее, повизгивающее сосредоточие страха, раболепно ползающее у ног своей хозяйки — бабки неопределенного возраста, невольно задумываешься, что может сотворить человек, если дать ему в руки генетику. Я говорю о болонках (или как там называются эти маленькие, визгливо потявкивающие трусливые комочки?) и их прародителей — волках.
Становится страшно.
Если человек, имея возможность изменять животное лишь косвенно, наворотил такое, представляю что будет, когда человечеству удастся расшифровать ДНК, когда оно научится дешево изменять генотип и выращивать жизнеспособных особей заданной конфигурации. У меня есть множество знакомых, которые завели себе какую — нибудь уродливую породистую кошку или собаку только для того, чтобы было «не как у всех». Теперь представьте себе скажем… гигантскую муху с человеческими глазами, того же пушного таракана размером с ладонь.
Конечно, придется издать некий закон, запрещающий,
Людям, которые живут по правилу «после меня хоть потоп», советую почитать литературу о генетически измененных продуктах. В этих самых продуктах я ничего плохого не вижу, просто хочу сказать — начало положено.
Плохая дока или ее отсутствие?..
Какими иногда путями узнаешь о некоторых особенностях языка программирования, операционной системы или СУБД… Ну нет у меня времени и желания внимательно читать всю доку по 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? Боюсь, придется подождать пару месяцев, до выхода
Кстати, с начинающим наступать Миллениумом вас!
26/XI-00
Удалён самоуничижительный вводный абзац — примечание.
У меня в квартире живут: я,.. <удалено — примечание>, кошка Кошмарка и куча насекомых, называемых муравьями <у нас тогда жили бытовые рыжие муравьи — примечание>. Иногда пробегают тараканы, но они здесь скорее гости. Муравьи — жильцы незаконные.
Я,.. <удалено — примечание> и, в меру своих сил, кошка нещадно их истребляем. Удивительно, почему я давлю мурав’ёв? Рефлекс
Ползёт муравей. Нажал, и нет его. Интересно, кстати (не то чтобы я хотел оказаться на его месте, просто интересно), как для него выглядит этот мир? Насколько я понимаю, он ничего не слышит, лучше я улавливает вибрации и запахи, и почти ни черта не видит.
Если я рядом с ним раздавлю его товарища, поймёт ли первый от чего его «друг» (а может и друг) вдруг перестал шевелится? Думаю — нет. Наверное единственное, что он поймёт, что тут стало опасно.
А вдруг и люди умирают точно так же?
• Другое
Реальность опережает самые смелые мечты. Совсем недавно я и мечтать не могу, что буду зарабатывать столько, сколько зарабатываю сейчас. Причём тенденция роста сохраняется. Надеюсь так будет и в дальнейшем.
На этом мои бумажные дневники кончаются, возможно я вёл бы их и дальше, но помешал интернет — к нему я получил доступ примерно в 1997 году, на втором курсе университета. Всё больше текстов я печатал, всё меньше писа́л ручкой, а потом, в ноябре
99 бутылок: PostgreSQL, MySQL, xSSI, CMD, PHP, JUnix Shell
Есть такой прелюбопытный сайт «99 Bottles of Beer on The Wall». Это сборник листингов программ, написанных на разных языках, но выводящих один и тот же текст — «песню про пиво». Как ни странно, но я обнаружил, что могу пополнить список из 227 языков, представленных на сайте, еще своими 6 экземплярами. Что я без промедления и сделал. Но, так как владелец сайта занят переездом на новый адрес и ему пока не до меня, я решил выложить эти образцы здесь, чтобы широкая общественность могла полюбоваться делом рук моих.
1. PostgreSQL (СУБД) https://www.postgresql.org/
YourTable — это ваша таблица с числом строк более 100.
-- Written by Evgeny.Stepanischev at ksu.ru
--
CREATE SEQUENCE temp_beer_seq INCREMENT -1 MINVALUE 0 MAXVALUE 99 START 99;
CREATE FUNCTION temp_b() RETURNS text
AS 'SELECT \' bottle\'||CASE WHEN last_value=1 THEN
\'\'::text ELSE \'s\'::text END||\' of beer\' FROM temp_beer_seq'
LANGUAGE 'sql';
CREATE FUNCTION temp_b_out() RETURNS text
AS 'SELECT s.last_value||temp_b()||\' on the wall, \'||
s.last_value||temp_b()||\'.\\n Take one and pass it around,\\n \'||
CASE WHEN NEXTVAL(\'temp_beer_seq\')=0 THEN \'No\'
ELSE text(s.last_value-0) END||
temp_b()||\' on the wall.\\n\'
FROM temp_beer_seq s'
LANGUAGE 'sql';
SELECT CASE WHEN temp_beer_seq.last_value=0
THEN 'No more bottles of beer...\n Go to the store and buy some more...\n
99 bottles of beer.' ELSE temp_b_out() END
FROM YourTable LIMIT 100,1;
--
DROP SEQUENCE temp_beer_seq;
DROP FUNCTION temp_b();
DROP FUNCTION temp_b_out();
-- END2. MySQL (СУБД) https://www.mysql.com/
YourTable — это ваша таблица с числом строк более 100.
/* Program by Evgeny.Stepanischev at ksu.ru*/
SET @beer:=100;
SET @w:=' on the wall';
SELECT IF(@beer<2,'\nNo more bottles of beer...\n\
Go to the store and buy some more...\n99 bottles of \
beer.',CONCAT(CONCAT('\n',@str:=CONCAT(@beer:=@beer-1,\
@bot:=CONCAT(' bottle',IF (@beer>1,'s',''),' of beer')),\
@w,', ',@str,'.\nTake one and pass it around,\n'), IF \
(@beer-1=0,'No more ',@beer-1),@bot,@w,'.')) as beer
FROM YourTable LIMIT 100;3. xSSI для Apache https://httpd.apache.org/
Знаком «█» обозначено место, где перевод строки не нужен,
просто строчки такие длинные, что пришлось их разбить.
<!-- Written by Evgeny.Stepanischev at ksu.ru -->
<!--#if expr="$D=A || $D=B" -->
<!--#if expr="$K=/${D}8/" -->
<!--#set var="D" value="8" -->
<!--#set var="M" value="7" -->
<!--#elif expr="$K=/${D}7/" -->
<!--#set var="D" value="7" -->
<!--#set var="M" value="6" -->
<!--#elif expr="$K=/${D}6/" -->
<!--#set var="D" value="6" -->
<!--#set var="M" value="5" -->
<!--#elif expr="$K=/${D}5/" -->
<!--#set var="D" value="5" -->
<!--#set var="M" value="4" -->
<!--#elif expr="$K=/${D}4/" -->
<!--#set var="D" value="4" -->
<!--#set var="M" value="3" -->
<!--#elif expr="$K=/${D}3/" -->
<!--#set var="D" value="3" -->
<!--#set var="M" value="2" -->
<!--#elif expr="$K=/${D}2/" -->
<!--#set var="D" value="2" -->
<!--#set var="M" value="1" -->
<!--#elif expr="$K=/${D}1/" -->
<!--#set var="D" value="1" -->
<!--#set var="M" value="0" -->
<!--#elif expr="$K=/${D}0/" -->
<!--#set var="D" value="0" -->
<!--#else -->
<!--#set var="D" value="9" -->
<!--#set var="M" value="8" -->
<!--#endif -->
<!--#else -->
<!--#set var="D" value="A" -->
<!--#set var="K" value="$QUERY_STRING" -->
<!--#include virtual="$DOCUMENT_NAME" -->
<!--#set var="A" value="$D" -->
<!--#set var="Am" value="$M" -->
<!--#set var="D" value="B" -->
<!--#include virtual="$DOCUMENT_NAME" -->
<!--#set var="B" value="$D" -->
<!--#set var="Bm" value="$M" -->
<!--#if expr="$A=0 && $B=0" -->
<BODY BGCOLOR="BLACK" TEXT="WHITE"><B>
No more bottles of beer...<br>
Go to the store and buy some more...<br>
99 bottles of beer.
</BODY>
<!--#else -->
<HEAD>
<!--#if expr="$B=0" -->
<!--#set var="A1" value="$Am" -->
<!--#set var="B1" value="9" -->
<!--#else -->
<!--#set var="A1" value="$A" -->
<!--#set var="B1" value="$Bm" -->
<!--#endif -->
<META HTTP-EQUIV="Refresh" Content="1;█
URL=http://<!--#echo var="HTTP_HOST" --><!--#echo var="DOCUMENT_URI" -->?A█
<!--#echo var="A1" -->B<!--#echo var="B1" -->">
</HEAD>
<BODY BGCOLOR=BLACK TEXT=WHITE><B>
<!--#if expr="$A>0" --><!--#echo var="A" --><!--#endif -->█
<!--#echo var="B" -->
bottle<!--#if expr="$A$B>1" -->s<!--#endif -->
of beer on the wall, <!--#if expr="$A>0" -->█
<!--#echo var="A" --><!--#endif --><!--#echo var="B" -->
bottle<!--#if expr="$A$B>01" -->s<!--#endif --> of beer.<br>
Take one and pass it around,<br>
<!--#if expr="$A1$B1>00" -->
<!--#if expr="$A1>0" --><!--#echo var="A1" -->█
<!--#endif --><!--#echo var="B1" -->
bottle<!--#if expr="$A1$B1>01" -->s█
<!--#endif --> of beer on the wall.
<!--#else -->
No more bottles of beer on the wall.
<!--#endif -->
<!--#set var="C" value="" -->
<BR>
</B></BODY>
<!--#endif -->
<!--#endif -->4. Win2000 batch file (CMD)
@ECHO OFF
REM Evgeny.Stepanischev at ksu.ru
FOR /L %%B IN (99,-1,1) DO CALL :PROG %%B
ECHO No more bottles of beer...
ECHO Go to the store and buy some more...
ECHO 99 bottles of beer.
GOTO :EOF
:PROG
ECHO %1 bottle(s) of beer on the wall, %1 bottle(s) of beer.
ECHO Take one and pass it around,
SET /A S=%1-1
IF %S% EQU 0 SET S=No
ECHO %S% bottle(s) of beer on the wall.
ECHO.5. PHP https://www.php.net/
<?
for ($s='s' and $beer=99;$beer;)
{
echo "$beer bottle$s of beer on the wall, $beer bottle$s of beer.<br>",
"\nTake one and pass it around,<br>";
$beer--;
$s = $beer==1?'':'s';
if ($beer) echo "$beer bottle$s of beer on the wall.<br><br>";
};
?>
No more bottles of beer on the wall.<br><br>
No more bottles of beer...<br>Go to the story and buy some more...<br>
99 bottles of beer.6. JUnix SHell junix.kzn.ru https://github.com/bolknote/junix
Предупреждаю: JUSH работает настолько медленно, что вы вряд ли дождетесь результата работы. Для испытания лучше уменьшить константу «beer»
set beer=99
set s=s
while ($beer gt 0)
echo $beer bottle$s of beer on the wall, $beer bottle$s of beer.
echo Take one and pass it around,
set beer--
if ($beer==1) set s=
if ($beer) echo $beer bottle$s of beer on the wall.\n
end
cat <<T
No more bottles of beer on the wall.
No more bottles of beer...
Go to the store and buy some more...
99 bottles of beer.
T
1/IX-00
Удалён абзац личного текста — примечание.
Прошло 2 года. Я изменился, стал более серьёзным и скрытным, может быть менее пугливым и доверчивым. Одно точно: я решил никогда больше не брать в руки д/ж. И никому никогда его не показывать,
Но вот проблема: теперь я не настолько верю себе и бумаге, чтобы так просто взять и изложить здесь всё то, что меня так беспокоит… удалён глубоко личный текст — примечание.