Microsoft is DEAD? А также warez
Новость дня — вся сеть Microsoft лежит в дауне. Не отвечают ни DNS-сервера, не Web-сайты, ни другие сервисы. Насколько я знаю, пока не поступило никаких комментариев от самой Microsoft, по крайней мере, мне не удалось найти ничего об этом в Интернете. Народ выдвигает предположения об атаках хакеров. Моя версия — чисто хардварные проблемы, в любом случае, правды мы все равно не узнаем. Просто интересно, как это объяснит Билл Гейтс и компания. Вот будет смешно, если никак. :)
Ну, а теперь, к менее важным новостям. MySQL 3.23 перешел в разряд стабильных.
А вот новость, которую я каждый раз жду с нетерпением. Вышла очередная версия программы удаленного администрирования через
Вот как раз открылся change log. Что у нас нового? Добавлен модуль PAM Authentication, добавлена поддержка групп в ACL-модуль, изменения в модуле DHCP, пофиксена пара багов. Качать!
А что у нас с FARом? Давненько там не был… А с Фаром у нас… хм… фаровская эха у меня не грузится.. идем на сайт… А с Фаром у нас ничего. На сайте лежит все также без движения вторая бета. Новый FAR не вышел. Зато вышел WinAMP 2.72. Причем уже давненько. Аж 10 дней назад. Хожу я туда редко, поскольку скорость выхода новых версий, после придания проекту статуса бесплатного, упала на порядки.
Итак. Подправлен кодек и пара плагинов. Уменьшен размер WinAMP agent (а я им все равно не буду пользоваться). Пофиксены баги. Ну что же. Можно и скачать. Но семь мегабайт… Кстати, надо бы выяснить чем полная версия отличается от стандартной и «облегченной». Прямо сейчас и выясним. Итак.
Полная версия — это и так понятно. Стандартная не проигрывает Windows Media Audio и
На сегодня с меня хватит, только что докачался VNC, сейчас пойду знакомиться: Хочется узнать, что это за зверь. Всем пока! :)
Java и JavaScript. Близнецы или братья?
Сегодня, когда мне в триста тысяч двадцать седьмой раз сказали, что Java и JavaScript — это одно и тоже, я не выдержал, и решил высказаться со своей относительно высокой трибуны.
Господа! Java и JavaScript — языки разные, что я намерен сейчас доказать.
Большинство, в качестве защиты своей точки зрения, приводит такой аргумент, буквально: «посмотри на название, если ты не видишь сходства…» и т. д. Странная точка зрения, тем более, что это самое большинство вполне допускает, что C и C++ — языки разные. Разубеждать таких людей бесполезно, у них сформировалась своя точка зрения, менять которую они не собираются, в голове их путаница, и чтобы их еще больше запутать, я скажу, что JavaScript — это не один язык, а три. Есть JavaScript от Netscape, JavaScript от Microsoft, который еще называется JScript, и EMCAScript, который тоже является JavaScriptом. Вот эти три языка весьма похожи, хотя и не совместимы между собой полностью.
А теперь, собственно, перейдем к сути. Начнем с базового языка. Корни этих двух языков уходят
Простой пример на JavaScript:
function somefunct (s)
{
Arr = new Array (2)
var k = parseInt (s) + '99'
alert (k)
}вопрос к знатокам Java — какая из этих строчек, исключая скобки, не вызовет ошибки в интерпретаторе? Правильно, вызовут все. Думаю, лучшего доказательства и не придумаешь. Кстати, обратите внимание: в JavaScript точка с запятой элемент необязательный и ставится лишь там, где действительно нужна (например, после пустого цикла for).
Если кто не понял, тут я создал объект типа Array и переменную k. Преобразовал s в число, а потом сложил со строкой «99». В результате, опять получил строку и при помощи alert вывел на экран. Тут я подхожу к еще одному отличию JavaScript от Java: первый язык с нестрогой типизацией данных. Переменная в разные моменты времени может хранить строку, целое или любой другой объект. Кстати, строка, число и прочие типы в JavaScript являются объектом, а «базовые» функции — методами объекта Global. Чего не скажешь о Java. Да, и кстати, вспомните о том, как выполняется конкатенация в Java. И вот, проделайте мне еще такую штуку в Java:
Регулярные выражения:
function somefunct2 (s)
{
if (/\d+\s+/.test(s)) alert ('Ok!'); else
s = s.replace (/(\d)/g,'\\1!')
}99,9999% людей такое объяснение удовлетворит, а вот самые стойкие, знаю по опыту, приведут мне примеры блоков try и вызовов Java-методов из JavaScript в Netscape. Последовательно.
Блок try — catch поддерживается только JScript 5.0 и Netscape JavaScript 1.4, т. е. введение это довольно недавнее. Кроме того, этот блок имеет синтаксис отличный от принятого в Java. Наверное достаточно будет сказать о наличии у try, по крайней мере в версии от Microsoft, блока else при отсутствии finally, а так же о том, что catch возвращает специальный объект Error с двумя (в 5.5 — тремя) свойствами, что уже совсем никак не похоже на Java.
Теперь относительно вызовов Java-методов. Вызов Java-методов из JavaScript в NC называется LiveConnect и к самому языку непосредственного отношения не имеет. Пользуясь LiveConnect я, теоретически, могу вызвать Java из Flash, Flash из JavaScript, JavaScript и
Ну а самых упорных я отсылаю на сайты фирм Sun и Microsoft, где они, скачав себе документацию, смогут воочию убедиться в разнице между этими языками.
Opera: три в одном
Вы любите многофункциональные вещи? Шампунь, бальзам и кондиционер в одном флаконе? Отвертка, плоскогубцы, нож в одном футляре?
Когда я узнал, что в, замечательный по своему потенциалу, браузер Opera будет встроен клиент ICQ, я не понял, зачем это нужно авторам браузера. Тем более, что этот самый клиент там абсолютно мертворожденный, неудобоваримый и, на мой взгляд, не обладающий должной функциональностью. Вдоволь поудивлявшись, я об этом забыл.
Недавно, запустив Opera, я вновь заинтересовался вопросом «зачем», и вспомнил одну вещь. Идея авторов Opera изготовить среду «все в одном» родилась не сегодня. В Opera есть
Стремление затащить «под крышу» удавшегося продукта
Судя по всему, разработчики из Opera corp. пошли по пути расширения количества сервисов продукта, наверное надеясь, что так его будет легче продать. Напоминаю, что
В этом я вижу причину рождения всего «универсального» и «многофункционального», что пытается
И не стоит, кстати, думать, что «бесплатная» Opera начнет в этом вопросе меняться в лучшую сторону. Почему? Потому что.
Из этого следует, что ничего не изменилось.
Подпункт первый. Почему Opera не поддерживала
Подпункт два. Чтобы продать побольше рекламы нужно распространить побольше копий. Вот и подумайте, что проще — распространить «пусть даже самый навороченный и супербыстрый браузер» или… Ну, вы понимаете.
Так что, увы. Opera так и останется навсегда браузером с хорошим потенциалом и кучей «шашочек». Пока
P.S. Кстати, для прикола, зайдите на opera.ru, а потом на opera.com.
Микромечта по Unix
Есть у меня маленькая мечта. Прикупить новый жесткий диск, старый поставить на вторую мою машину, что пылится в кладовке, поставить на нее Linux, соединить это все коаксиалом и делать все проекты исключительно дома.
Все что мне нужно от второй машины — это наличие там Apache, Perl, PHP, MySQL и PostgreSQL. Пока приходится довольствоваться одной, и при каждой переустановке Виндов, все настраивать заново. Занятие весьма утомительное. Или было таковым до вчерашнего дня.
Вчера я узнал о существовании некого проекта, поддерживаемого, как я понял, группой энтузиастов, который позволяет ставить на машину с Windows 95/98/NT/2000, Apache, PHP, Perl и MySQL при помощи одного файла setup.exe. Как я понимаю, там есть
Обойдусь пока тем что имею. Хотя мучаться и соблюдать совместимость с Unix мне порядком поднадоело. Вот сделаю рывок и прикуплю
P.S. Дистрибутив скачался, но оказался битым. :( i опять
Гагаузы
Вчера, просматривая найденные ссылки
Я просмотрел 380 ссылок, выданных мне Yandex’ом, но узнал совсем немного. Гагаузы — небольшой народ, проживающий, в основном, на территории Молдавии (3,5% процента за 1990 г), Украине и Российской Федерации. Общая численность на 1992 год 220 тысяч человек.
Что еще? 99% источников говорят о том, что гагаузы — православные и только сайт Ethnomuseum утверждает, что…
- конфессиональная принадлежность: Ислам: суннизм;
- языковая принадлежность: Алтайская семья: тюркская группа: гагаузский язык.
Правда, у меня к нему доверия мало. Татар (а я живу в Татарстане) сайт относит:
- конфессиональная принадлежность: Христианство: католицизм, протестантизм;
- языковая принадлежность: Индоевропейская семья; славянская группа; польский язык.
Это, конечно, весьма любопытно, учитывая, что национальная религия татар — мусульманство. И, лично мне, непонятно, как язык, построенный на суффиксах (или как там это называется), попал в славянскую группу. Еще более непонятно, причем здесь польский язык. Татары разговаривают на татарском, который больше всего похож на турецкий.
Больше мне ничего найти не удалось, кроме разве что того, что флаг гагаузов — изображение белой полной луны и головы волка на голубом фоне.
P.S. Просматривая информацию о гагаузах, я случайно наткнулся на список национальностей, проживающих на территории бывшего СССР. Он наверняка не полный (например, нет русских :), но все же, очень любопытный. Никому не в обиду, как вам названьица «самоеды» и «зыряне»?
Народы: аварцы, аланы, алеуты, алтайцы, андийцы, армяне, арчинцы, балкарцы, бартангцы, башкиры, белорусы, бужане, булгары, буртасы, буряты, ваханцы, вепсы, вогулы, водяне, волыняне, вотяки, вятичи, гагаузы, греки, грузины, даргинцы, долганы, евреи, зыряне, ижорцы, ингуши, испанцы, ительмены, кабардинцы, казахи, калмыки, камасинцы, камчадалы, карагасы, каракалпаки, карачаевцы, карелы, касоги, кеты, киргизы, китайцы, коми,
26-й кадр
Ребята, ну не верю я в магическое воздействие на сознание человека штуки, под названием
Что вообще известно об этой «технологии»?
Я сейчас сижу на работе, за монитором
Лично для меня
Теперь о том, что слова, написанные в этом самом кадре, воспринимаются подсознанием, как сигнал к действию.
Первое. Как не удивительно, в бывших союзных республиках есть люди, которые умеют понимать устную речь
Второе. Даже если фраза проскочила мимо сознания в подсознание, не факт, что она воспримется так, как того хотели люди, туда ее внедрившие. Я бы даже сказал, совсем не факт. Знаете почему? Потому что это текст, а не речь, он печатный. Вы
Пример.
Третье. В нашем мире «картинка» перед глазами часто меняется очень быстро. Так, что сознание «зацепить» ее не может. Например, близкостоящие деревья за окном автомобиля, несущегося на солидной скорости. Да, то, что это деревья — видно, а вот какие, сидят ли на них птицы? Информация об этом в сознание не попадает, тогда должна, по той же идее, попасть в подсознание и заставить меня
P.S. Кстати, в фильме «Бойцовский клуб», есть кадр, который появляется на экране только одно мгновение — за спиной человека, сидящего на стуле, появляется девушка (кажется в красном, давно смотрел не помню), держащая руку на плече сидящего, и тут же исчезает. Возможно, в кассетной версии этого момента нет, я не знаю.
PalmOS. Секурность
Похоже, есть вещи, которым люди никогда не научатся. Одна из таких вещей — анализ чужих ошибок. Ну, казалось бы, о безопасности, паролях и необходимости выбора «сильного» алгоритма шифрования уже столько сказано… Так нет, уважаемая мной фирма, производящая операционку PalmOS для «наладонников», допустила такой досадный промах.
В базовых приложениях этой ОС есть возможность пометить часть данных как «Private», закрыв их от любопытных глаз паролем. Само собой, пароль хранится
Такого шока я не испытывал с тех времен, когда обнаружил, что хваленая утилита из комплекта Norton Utilites (DiskReet, кажется), позволяющая создавать диск с доступом по паролю, хранит этот самый пароль также за’xor’енным по константе.
Будем надеяться, фирма Palm хватится за голову или другое место (чем они там придумывали этот алгоритм шифрования?) и выпустит в скором времени патч, предотвращающий дешифрование пароля обратным преобразованием. А пока, владельцам «наладонников» с PalmOS рекомендуется запирать свой Palm и не давать его в руки злым кул хацкерам.
P.S. А вы говорите WindowsCE…
Всех с Рождеством. Новый TheBAT! и PostgreSQL
Что поделать? Опять праздники, я, право, не виноват. В конце концов, могу же я отдохнуть еще разок? Рождество — штука странная. Вроде, в Рождество родился Христос, так? Причем, по разным версиям, родился либо
Тем не менее, всех вас с уже неоднократно прошедшим Рождеством, сами уж разберитесь, кого с каким. :)
Кроме того, из приятных (по крайней мере для меня) новостей на сегодня — выход так мной ожидаемой версии 7.1 СУБД всех времен и народов — PostgreSQL (поклонникам Oracle, Informix и прочего просьба не беспокоить). Правда это еще beta3, но скорость, с которой эти самые беты появляются, вселяет надежду на скорый выход релиза. Ждал я выхода этой версии по одной простой причине — в этой версии (уже начиная с beta2) тип поля text
Кстати, о временах и народах.
На этом, разрешите откланяться, у моего хорошего друга сегодня день рождения, люди ждут. :)
Как звери друг друга били. Найдено в FIDO
Медведь был безобразным, косолапым и грязным животным. Однако, добрее его не было никого во всем лесу. Hо звери замечали только его внешность, на что Медведь жутко обижался, ловил их и жестоко избивал ногами. Поэтому звери его не любили. Хотя он был очень добрым. И веселым. Он любил задорные шутки. За эти шутки звери его скоро жутко возненавидели и били. Да, трудно быть на свете добрым и веселым.
Волк был тоже безобразным и грязным. И еще он был очень злым и жестоким. Hо звери не испытывали к нему ненависти и не били. Потому, что Волк умер еще в раннем детстве. Потому, что Медведь родился раньше Волка. Да, хорошо, когда Добро побеждает Зло.
Заяц тоже был злым и жестоким. И грязным. И еще он был трусливым. Гадостей Заяц никому никогда не делал. Потому, что боялся. Hо его все равно сильно били. Потому, что Зло всегда должно быть наказано.
И Дятел тоже был злым и жестоким. Он не бил зверей, потому, что у него не было рук. Поэтому, он вымещал свою злость на деревьях. Его не били. Потому, что не могли дотянуться. Однажды его придавило насмерть упавшее дерево. Поговаривали, что оно отомстило. После этого звери целый месяц боялись мочиться на деревья. Они мочились на Зайца. Заяц простудился и умер. Всем было ясно, что во всем был виноват Дятел. Hо его не тронули. Поскольку не смогли выковырять
Крот был маленьким и слепым. Он не был злым. Он просто хорошо делал свое дело. Это он подъел дерево, которое упало на дятла. Об этом никто не узнал, и поэтому его не избили. Его вообще били редко. Чаще пугали. Hо его было очень трудно испугать, потому что он был слепой и не видел, что его пугают. Когда не удавалось испугать Крота, звери очень огорчались. И били Медведя. Потому, что им было очень обидно. Однажды Медведь тоже захотел испугать Крота. Hо Крот не испугался. Потому, что Медведь его убил. Нечаянно. Просто Медведь был очень неуклюжим. И звери его очень сильно избили. Даже, несмотря на то, что Медведь сказал, что пошутил. Плохо, когда твои шутки никто не понимает.
Лиса была очень хитрой. Она могла запросто обхитрить кого угодно. Когда ей это удавалось, то ее не били. Hо иногда ей не везло. И ее били. Били всем лесом. И она уже не могла
Кабан был большой, сильный и страшный. Его все очень боялись. И поэтому его били только всем лесом. Или просто кидали в него камнями. Кабан этого очень не любил. И однажды ночью он спрятал все камни в лесу. За это его очень сильно избили. Больше Кабан никогда не прятал камни. Воистину говорят — время собирать камни и время их не трогать никогда.
Козел не был ни злым, ни добрым. Он был просто Козел. Он часто козлил. И его боялись бить. И он своим козловством всех достал. И тогда его избили до смерти. Потому, что иначе он бы умер от старости.
Ежик был маленький и колючий. Он кололся. Он не был злым, он кололся по своей природе.
Скунс был почти таким, как Заяц. Hо только очень вонючим. Он плохо пахнул. Его били только в полиэтиленовом пакете. Тогда запах был не такой сильный. Однажды у Скунса был день рождения. Он пригласил всех зверей, потому, что был жадным и любил подарки. И звери подарили ему новый полиэтиленовый пакет. И сильно избили до потери сознания. И Скунс задохнулся в пакете. Так его и похоронили. В пакете. В Очень Дальнем Лесу. Потому, что мертвый Скунс вонял еще сильнее. Потом пришли жители Очень Дальнего Леса и всех сильно избили. Им не понравился запах мертвого Скунса. Да, с соседями надо жить в мире.
Хомяк был тоже очень жадным. И богатым. Если бы он делился своим богатством, его бы били не так сильно. Hо он был очень жадным. За это его били сильно. И ему все равно приходилось делиться. И он горько плакал. Да, богатые тоже плачут.
Лев был царь зверей. Он правил лесом. Царей бить не положено. Это закон. Hо звери давно забили на закон. Звери били и льва. Hи за что. Потому, что так уж здесь повелось.
Хибер. Нате
Жаль, но в то время эта задача была практически невыполнимой, а то бы я, возможно, уже сказочно разбогател. :) Или не я. Вряд ли мне принадлежит первенство в рождении этой идеи. Как показала практика, трудность не в сохранении дампа базовой (как тогда это называлось) памяти и содержимого XMS, да и с сохранением состояния контролера клавиатуры и прерываний (как не странно некоторые игры перепрограммировали и то и другое) я бы справился. Мне помешал защищенный режим и оставшееся оборудование.
Сначала на моем пути встал EMM386, этот менеджер VCPI— и EMS-памяти переводил процессор в защищенный режим (protected mode). Программировать под него я не умел, но из того, что знал, я сделал, может быть ошибочный, вывод — я не смогу после восстановления состояния компьютера сделать «так как было». Я решил на защищенный режим «забить» и загружать содержимое EMS уже после старта DOSа и самого EMM386. VCPI я не трогал, да он нигде и не использовался.
Потом появился DOS4GW. Его требовали DOOM и другие игрушки. Эта библиотека (или как это еще назвать?) так же использовала для своих темных дел защищенный режим. Я узнал слово «DPMI». С DPMI так же легко как с EMS я работать не умел, не было документации. Это стало первым гвоздем в гроб моей идеи.
Вторым, и последующими гвоздями, оказалось оборудование. Слово драйвер тогда рождало несколько другие ассоциации, ни о какой универсализации работы с оборудованием речи не шло. Так что нелегкий труд по опросу и сохранению состояния
Шли годы…
Незаметно появилась и вошла в нашу жизнь ОС Windows. Операционная система встала над защищенным режимом. Слово «драйвер» получило другой смысл, прослойка между операционкой и оборудованием… Слова XMS, EMS и VCPI стали забываться, а DPMI — расшифровываться
Идея «
«Здорово», — подумал я, и отправился в недра настроек своей W2K — искать, где у меня спрятан этот самый режим. Найти с первого раза мне его не удалось. Пришлось идти в большой Интернет и читать. Все оказалось просто. Оказывается, по умолчанию возможность использования этого режима отключена. Так исторически сложилось. А для его включения необходимо выполнение двух условий:
- все оборудование, включая материнскую плату, должно уметь работать с ACPI;
- BIOS, который на этот самой плате стоит так же должен знать, что это такое.
Выяснить, как дело обстоит у вас просто — достаточно зайти на «Панель управления» («Control Panel»), там найти «Управление энергопитанием» («Power») и посмотреть, есть ли у вас закладка «Hibernate». Если есть — включайте режим, в списке «
Мне повезло. У меня машина «белой сборки» IBM-IntelliStation-
Ссылки по теме
Hibernate и Win2000
Hibernate и Windows 98
Технология Hibernate и Win2000
Базы данных. Наведем порядок
Устав бороться со своей и чужой ленью, я решил принять
Естественно, что файл предназначен для описания достаточно небольших баз данных (менее 7—10 таблиц). В этом случае больших баз без хорошо составленной наглядной документации все равно не обойтись. Не надейтесь. :)
Четкий формат представления имеют пока только таблицы, в силу того, что остальными объектами приходится пользоваться достаточно редко, да и синтаксис их описания различается для разных СУБД, но, возможно, в следующих версиях формата появятся правила и их описания тоже.
Вот пример описания двух таблиц, связанных между собой
[/usr/local/pgsql/bin/psql eshop]
items / товары
-----------------------
id serial / идентификатор
gid int4 / категория товара -> group.id
name text / наименование
price real / цена
comment text / описание товара
CREATE INDEX items_price_idx ON items (price)
group / категории
-----------------------
id serial / идентификатор -> items.gid
parent int4 / родитель в дереве. -1, если верхний уровень -> id
name text / наименованиеДумаю из примера и так все понятно, но я
Строчка, заключенная в квадратные скобки, — команда, принимающая данные. Пустые строки и строки, начинающиеся с двух минусов игнорируются. В абзаце, где описывается таблица, первым идет ее имя, ниже — описания ее полей: наименования, через табуляцию тип. В конце каждой значимой строки через пробел и слеш находится ее краткое описание.
Инструкции заведения секвенсоров, представлений и хранимых процедур записываются в одну строку.
Так как формат файла представлений достаточно легко может быть разобран и преобразован в команды мониторов mSQL, PostgreSQL и MySQL я, пару дней назад, выбрав время, написал небольшую программку на Перле. Правда толком ее еще не обкатал, но не думаю, что с ее эксплуатацией возникнут
Интепретатор файлов таблиц: intp.pl
#!/usr/bin/perl
sub StripComment
{
my ($line) = @_;
unless ($line=~s{^([^/]*)\s+/.+}{$1}o)
{
print "Предупреждение: не указан комментарий [ $line ].\n"
unless ($line=~/^CREATE/o);
};
return $line;
};
sub AddData
{
my ($table, @query) = @_;
my $query = join ',', @query;
my $result = '';
if ($todrop)
{
for (@query)
{
if (/([^ ]+) serial$/)
{
$result.= "DROP SEQUENCE ${table}_${1}_seq\\g\n";
last;
};
};
$result.= "DROP TABLE $table\\g\n";
};
$result.= "CREATE TABLE $table ($query)\\g\n";
return $result."\n";
};
sub AddDrop
{
my $table = $_[0];
if ($todrop && $table=~/^CREATE ([^ ]+ +[^ ]+)/o)
{
return "DROP $1\\g\n$table\\g\n";
} else
{
return "$table\\g\n";
};
};
unless (open F, (shift or '.tables'))
{
print <DATA>;
die "\n"
};
@query = ();
$table = '';
$result = '';
$comm = '';
$todrop = shift or 0;
while (<F>)
{
chomp;
next if ($_ eq '' || /^\-\-/);
if (/^\[(.+?)\]$/)
{
$comm = $1;
next;
};
@data = split (/ +/,StripComment $_);
if (@data < 2)
{
$result.= @query?AddData($table, @query):AddDrop ($table)
if ($table ne '');
$table = $data[0];
@query = ();
} else
{
push @query, "$data[0] $data[1]";
};
};
close F;
$result.= AddData ($table, @query) if (@query);
if ($result ne '')
{
if ($comm ne '')
{
open F, "|$comm";
print F "$result\\q";
close F;
} else
{
print "Ошибка: не указана команда для приема данных.";
};
} else
{
print "Ошибка: файл для обработки пуст.";
};
__END__
Интерпретатор файлов таблиц для СУБД.
Написал Евгений Степанищев (2000 год).
Использование: inpt.pl имя_файла [DROP]
DROP - предварительно сделать DROP для таблиц и SEQUENCE
Формат:
-- БД stat комментарий
tablename / описание имя таблицы
--------------------- оформительский элемент
поле1 тип / описание поля таблицы,
поле2 тип / описание описание интепретатор игнорирует
и т.д.
[/usr/local/mysql/bin/mysql stat] комманда, принимающая данныеP.S. Если
P.P.S. Вышеописанное ни в коем случае не претендует на панацею и всеобъемлющий инструмент, а всего лишь на роль мелочи, которая поможет избежать некоторых возможных трудностей.
Mu/\EHHuyM
Всех с Новым годом, счастьем и всем прочим, с чем принято поздравлять при смене года и тысячелетия. :) Надеюсь, всем удалось отдохнуть.
Прошу прощения за молчание в весь период праздника Нового года, но, в конце концов, могу я расслабиться или нет?
Честно говоря, расслабиться в этот Новый год не получилось, не позволил туго набитый едой живот. Наученные предыдущим горьким опытом прогулок по праздничному городу, мы, с моей женой, решили на этот раз не толкаться на заполненных до отказа народом улицах, а набрать побольше еды (долларов на 50) и, засев перед телевизором, провести весь праздник вдвоем. Можно считать, что праздник удался. :) Жаль только, что наша маленькая кошка Кошмарка уронила бутылку шампанского, которое немедленно вспенилось и мне, успевшему его подхватить, посчастливилось оценить всю красоту шампанского, выстреливающего в крышку стола и льющегося обратно. На ковер. :)
Наверное сделала это специально, чтобы потом вылакать. :)
Хотя вспомнить
Время есть. И пить.
99 бутылок: ASP (JScript и JavaScript), Parser
Жаждались? Судя по кислым лицам — нет. Итак, представляю очередную серию из мыльного сериала «99 бутылок пива на стене». На этот раз, на стене амбициозный Парсер с хорошей родословной, но плохой внешностью
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> <!-- // < %> -->Opera 5.01. Опять Парсер. Etc
Только что узнал о выходе Opera 5.01. С чем и поздравляю всех немногочисленных пока поклонников этого, потенциально популярного браузера. Краткий список изменений со слов сайта «Абсолютно все о браузере Opera» выглядит так:
- Добавлены функции поиска на кнопку «Go» (ввод)
- Новые shotcuts в почтовой программе
- Исправлены проблемы с прокси
- Оптимизирована работа ICQ
- Косметические изменения в окне новостей
- Изменения в самом файле Оперы
- Исправлена ошибка в Ecmascript
Да, чуть не забыл представить эту замечательную программу тем, кто с ней еще не знаком: это очень маленький, быстрый браузер с поддержкой практически всего чего только можно. Для программистов и верстальщиков: к сожалению пока нет нормальной поддержки DOM, в HTML— и WAP— отрисовке еще множество глюков. Радует, что проект быстро развивается, возможно к версии так
Лебедевский «Parser» до сих пор не дает покоя сетевым обозревателям. Сегодня журнал «Интернет.Ру» разродился интервью с создателем Парсера Константином Моршневым. Интервью коротенькое (а о чем
В той же статье Моршнев обещает открыть нам глаза на другое свое детище — уже упомянутый мною «Imprimatur!». Не нужно быть семи пядей во лбу, чтобы догадаться, какой доменный адрес будет иметь сайт ему посвященный. Я — догадался. Правда на сам сайт войти не получится, доступ запрещен. Но работа над подпиткой утихающей уже шумихи вокруг лебедевской студии продолжается.
Баннерная реклама. Только не бейте…
К сожалению, фильтровать рекламу «в телевизоре» мы не научились, зато
Для начала отмазка.
Итак. Для начала надо разобраться, как собственно осуществляется фильтрация подобного рода. Все очень просто. Пользователь (или изготовитель фильтра) прописывает некий набор правил, согласно которым, программа определяет, что есть баннер, а что — нет. Напрашивается вывод: чтобы ваши баннеры проходили
- Либо назвать их так или сунуть в такой каталог, что бы правила, заданные в программе, их не опознали;
- Либо сделать
что-то, что бы добавить правило (а значит отличить баннерот не-баннера) не представлялось возможным.
Первый вариант отметаем сразу. По очевидным соображениям — если правил, заданных в программе, не хватает для опознания, пользователь добавит новое. Вариант номер два кажется более привлекательным, только как достичь того о чем я говорю?
Нужно будет внести
<IMG SRC=http://your.host.ru/aa12/a.gif>
<IMG SRC=http://your.host.ru/priale/sila/duaa1/1808500.jpg>и т. д.
Популярные
Остается добавить, что схема успешно испытана и скоро будет запущена под одним из региональных порталов. Парочку подводных камней предлагается найти и разбить самостоятельно. Чтобы жизнь малиной не казалась. :)
Дядя Ваня — это вкусно…
Смотрю фильм ужасов, который, по обыкновению всех фильмов, перемежается рекламой. Фильм вызывает лишь смех (ковыряют ножом
Раз уж затронули рекламу, давайте поговорим поподробнее. Для меня вообще реклама — штука странная. В том смысле, что, по идее, она должна создать у меня положительный настрой по отношению к товару. То ли у креаторов
Конечно это крайний случай. Обычно реклама у меня не вызывает никаких эмоций вообще, разве что кроме скуки.
Было время, когда я, на протяжении примерно трех лет, каждый день прочитывал примерно по одной фантастической книге, которыми меня снабжали три моих друга, каждый из которых собрал более чем солидную библиотеку. Мне настолько нравилось читать, что не засыпал пока не прочитывал все, что мне приносили. Однажды я засиделся до 7 утра.
Прочитав такое количество книг, не имеющих ничего общего с реальностью, я очень хорошо стал понимать, что следует воспринимать всерьез, а что — мир, который рушится, когда закрываешь последнюю страницу книги. Вот и рекламу я воспринимаю как плохую фантастическую книгу или, что ближе к телевидению, нудный фильм. И у меня мысли не возникает, что происходящее на экране — часть реальности.
У моей матери собственного иммунитета нет.
Парсим Лебедева, Emax, PHP 4.0.4
Артемий Лебедев и компания опубликовали язык своего заочно знаменитого Парсера. Непонятно, чем они так гордились? С точки зрения программиста — обычный предпроцессор, тот же PHP — гораздо логичнее, понятнее и функциональнее, а с точки зрения не программиста, как мне кажется, — кошмарное нагромождение скобочек, стрелочек и значков «@». Нет, увольте.
Сегодня я решился
- Девушка молодая, задумчивая;
- Пора пришла;
- Я птица слабая, мне тяжело лететь;
- Двое в сторонке;
- Дуб Ангела;
- Монастырь.
Особенно понравилась первая, причем до такой степени, что я, активный противник фотографий и рисунков на десктопе, не удержался. Хотя понимаю, что ставить такое на десктоп — кощунство, ничего поделать с собой не могу.
Не скажу, что с нетерпением этого ожидал,
Мой дедушка — хакер. Найдено в 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! - выругался дедушка и подвесил систему.Софт. FAR 1.70b2, MySQL, PostgreSQL…
Новость дня — вышел FAR 1.70b2 build 321. С некоторый пор этот, один из лучших (скажу лучший — заклюют :) файловых менеджеров, разрабатывается не одним человеком, а группой разработчиков (FAR Team). С этих же самых пор список WhatsNew каждой новой версии поражает своим размером. Вот и на этот раз, я насчитал 64 пункта! Приставки Beta бояться не нужно, FAR Team обещает выпустить release только в случае полного отсутствия багов. То есть никогда :). Так что — качать!
Продолжая тему FARa.
Смешно, но факт — я знаю людей, которые пользуются FARом, начиная чуть ли не с первой версии и не знают о существовании такий вещи, как плагины. На всякий случай, сообщу. Сам FAR — это еще не все. К нему существуют «довески», называемые плагинами, которые сильно расширяют его функциональность. Например, есть плагины для чтения почты, работы с FTP через Proxy-сервер, проигрывания музыкальных файлов (точнее управления WinAMP’ом) и многого другого. Плагины можно взять на сайте PlugRing, ссылка на который есть в конце статьи (см. «ссылки по теме»).
Из других новостей мира вареза — появление MySQL
Так что, если будете выбирать СУБД для Веба… вы знаете, что я бы посоветовал.
Грамотно
Все кругом поправляют, замечают, советуют. Говори, пиши, употребляй слова правильно. Одно забываю сказать — как это сделать? В прямом смысле. Нет, конечно, на меня еще не посмотрят как на идиота, если я употреблю в приличном обществе слово «позвонишь» с ударением, как ему и положено, на последнем слоге. Но уже при слове «красИвее» на меня начинают коситься, а упоминание «строчна́я» вызывает у собеседников нервный смешок.
Вывод? Какие бы усилия я не делал, мне не подняться по уровню грамотности над людьми из основного моего круга общения. Моя речь неизбежно будет стачиваться, меняться, упрощаться. И с этим ничего не поделаешь, да и делать я ничего не собираюсь.
А как же, скажете вы, письменная грамотность? Не знаю, не пробовал. А если серьезно, то на ее наличие/отсутствие влияют другие факторы. Текстовая часть Интернета и книги. И то и другое я читаю каждый день и, в максимально допустимых количествах. Я не обладаю заученной грамотностью, так что приходится пользоваться грамотностью заимствованной. Проще говоря, пишу я, руководствуясь не правилами, почерпнутыми из учебников, а интуицией, базирующейся на обобщениях, сделанных на основе прочитанного. Наверное, как и многие из вас. Это еще, кстати неверно, называют «врожденной грамотностью»… или безграмотностью. :) У кого как.
Совсем другое дело ошибки стилевые. Но и тут есть оправдание. Эти ошибки следствие того, что фраза, которую я хотел записать, а то и смысл, который я хочу вложить в текст могут измениться в моей голове в процессе написания. Так и получается, что начал я с одной мысли, а закончил — другую. Правится это все элементарно — банальной вычиткой собственных текстов. Вот только не у всех хватает на это времени.
Так что буду писать как пишется, говорить как слышится и обильно снабжать все это ошибками разнообразных мастей. :) И уберите свои грязные манипуляторы, это святое, мое личное право. :) На худой конец, считайте, что пишу я не на русском, а, скажем, на украинском (для украинцев — болгарском). С сим позвольте откланяться…