Блоки try… catch… finally… в JScript 5

Заметка была впервые опубликована на сайте «Цитфорум» в 1999-м году, дата публикации примерно восстановлена из «Веб-архива»

Пояснение для людей не знакомых с данной конструкцией:

  • Конструкция try — catch — finally предназначена для перехвата ошибок (исключений). Если в блоке try каком-то операторе возникает ошибка, JScript игнорирует остальные операторы и переходит в блок catch, где находится блок обработки исключений. Последним выполняется блок finally, в котором обычно выполняют некие заключительные действия. Допускается использование неполной конструкции — без catch или finally.

Скажу сразу, что бы не было никаких недоразумений: JScript — это JavaScript в интерпретации Microsoft, а 5-я версия предполагает наличие Internet Explorer 5.0 (в 4-м IE всего лишь 3-я версия JScript).

Не знаю как вы, а я, сколько программирую на J[ava]Script мечтал, что бы в этом языке появился наконец эта конструкция из двух слов, но шли годы, а заветные слова так и оставались зарезервированными и я уж было потерял всякую надежду, как вышел пятый IE…

И вот, однажды вечером, внося очередные изменения в свой JS Unix и роясь одновременно во внутренностях 5-го «зонда» взгляд мой зацепил знакомые try, catch и незнакомое Error. Смутная надежда маленьким мерцающим огоньком загорелась в моей душе. Осторожно, не давая ей погаснуть я протянул руки к клавиатуре, набрал try… catch… и в место досадного «зарезервированные слова», получил радостное «предполагается наличие }». Надо было видеть меня в тот момент (или слышать), каюсь: я кричал, что Гейтс молодчина. Каюсь, потому что Гейтс — плохой дядя, сделал в пятой версии то, что надо было сделать еще в первой. Ну да ладно, это все замечательно, но надо было сделать так, что бы кроме пятого эксплорера, остальные браузеры не замечали этот блок. Хорошо, что в JScript есть такая замечательная вещь, как условная компиляция. Воспользовавшись ею можно скрыть все что угодно от посторонних глаз Netscape Navigator и Internet Explorer 4.01 и ниже. Таким образом, вся конструкция выглядит так (после точки с запятой — мои комментарии):

/*@cc_on @*/                  ; Включаем условную компиляцию
/*@if (@_jscript_version>4)   ; Проверяем версию JScript
try                           ; Сам блок try
{@end @*/	
Result=eval(expression);      ; Делаем что-то полезное
/*@if (@_jscript_version>4)	
} catch (err)                 ; «Ловим» ошибку
{	
alert(err.description);       ; Сообщение об ошибке
Result='';	
} finally
{
alert(Result);                ; Завершающие действия
};
@end @*/
/*@cc_off @*/                 ; Выключаем условную компиляцию

Где еrr — имя объекта Error, который будет создан при возникновении ошибки, в него будут помещены параметры ошибки. Объект Error имеет три конструктора и два свойства:

err=new Error();

err=new Error(number);

err=new Error(number, description);

Свойство (и параметр конструктора) number — числовое значение (номер ошибки), свойство description (так же параметр конструктора) — строка, описание ошибки. Некоторые числовые значения и соответствующие им описания ошибок приведены в таблице ниже:

Номер ошибки Описание ошибки
-2146823279 Определение отсутствует
-2146827282 Предполагается наличие ‘)’
-2146827273 Незавершенная строковая константа
-2146827286 Ошибка синтаксиса
-2146827280 Предполагается наличие {
-2146827850 Объект не поддерживает это свойство или метод
-2146827843 Команда не поддерживается объектом
-2146827859 Невозможно создание объекта сервером программирования объектов
-2146828235 Файл не найден

Существует способ программно возбудить исключение (создать ошибку) — достаточно вызвать оператор throw с созданным ранее объектом Error. При перехвате ошибки конструкцией try-catch созданный объект будет передан блоку catch. Примеры:

var err=new Error(-10,"Неверное число");
throw(err);

throw(new Error(-4,"Ошибка"));

Таким образом JScript пополнился еще одной полезной конструкцией, существенно упрощающей жизнь программиста.

Web-программист казанского центра Интернет Степанищев Е.В.

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

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

Заметка была впервые опубликована на сайте «Цитфорум» в 1999-м году, дата публикации примерно восстановлена из «Веб-архива»

Использование встроенных в NC картинок.

Однажды вечером, из любопытства просматривая файл NETSCAPE.EXE, я наткнулся на странный текст:

<IMG SRC=internal-attachment-icon BORDER=0>

Словечко internal наталкивало на определенные мысли и я решил их проверить. Набрав эту строку в виндовом блокноте я посмотрел на результат в NC. И вот что я увидел:

Иконка скрепки на сером фоне с синей обводкой, символизирующая прикрепление файлов или вложение документов.

Wow! Я решил отыскать другие встроенные картинки, получился довольно приличный список, но уникальных оказалось не очень много, всего 22 штуки. Не ручаюсь, что я нашел все:

Набор пиктограмм интерфейса: инструменты редактирования, файлы, папки, замки, запрещающие знаки, стрелки и другие значки управления.

А вот список имен:

<IMG SRC=internal-attachment-icon>
<IMG SRC=internal-icon-insecure>
<IMG SRC=internal-icon-show-all-mail-recipients>
<IMG SRC=internal-gopher-binary>
<IMG SRC=internal-gopher-unknown>
<IMG SRC=internal-gopher-movie>
<IMG SRC=internal-gopher-sound>
<IMG SRC=internal-gopher-image>
<IMG SRC=internal-gopher-text>
<IMG SRC=internal-gopher-menu>
<IMG SRC=internal-gopher-index>
<IMG SRC=internal-gopher-telnet>
<IMG SRC=internal-smime-encrypted-bad>
<IMG SRC=internal-smime-signed-bad>
<IMG SRC=internal-smime-encrypted-signed-bad>
<IMG SRC=internal-edit-unsupported-end-tag>
<IMG SRC=internal-edit-unsupported-tag>
<IMG SRC=internal-edit-form-element>
<IMG SRC=internal-edit-named-anchor>
<IMG SRC=about:security?banner-secure>
<IMG SRC=internal-attachment-dl-all-icon>
<IMG SRC=internal-sa-encrypted-bad>
<IMG SRC=internal-sa-signed-bad>
<IMG SRC=internal-news-followup-and-reply>
<IMG SRC=internal-icon-delayed>

Использование встроенных рисунков позволяет ненамного, но все же уменьшить размер страницы. Жаль только, что способ непригоден для Internet Explorer’a. В идеале хорошо бы при просмотре страницы Netscape’ом загружался встроенный рисунок, а при использовании IE, нууу… хотя бы картинка из внешнего файла.

И тут я вспомнил о введенном еще в IE 2.0 атрибуте DYNSRC тега IMG.

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

С помощью пресловутой кнопки PrintScreen и Adobe Photoshop я изготовил GIF-файл, содержащий первый в моём списке рисунок: internal-attached-icon, потом при помощи досовской утилиты VFD я сконвертировал его в AVI-файл, содержащий один-единственный кадр и сохранил его под именем 1.avi. Создав следующий HTML-файл:

<BODY BGCOLOR=WhiTE>
<IMG SRC=internal-attachment-icon DYNSRC=1.avi WIDTH=27 HEIGHT=27>
</BODY>

я посмотрел результат попеременно в NC и IE. Как и следовало ожидать в обоих браузерах я увидел одинаковую картинку:

Иконка скрепки на сером фоне с синей обводкой, символизирующая прикрепление файлов или вложение документов.

Как любил говаривать герой игрушки Duke Nukem 3D «piece of cake!». Напоследок я решил просмотреть страничку в браузере Opera 3.51 и тут меня постигло жестокое разочарование: картинка появилась… и иcчезла, я смотрел на абсолютно белую страничку. Проблема решилась добавлением параметра LOOP=-1 в тег IMG. Если вы не рассчитываете, что вашу страницу будут смотреть пользователи браузера Opera, этот параметр лучше убрать, иначе при наведении курсора на картинку он будет мерцать.

Web-программист казанского центра Интернет Степанищев Евгений.

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

Что нового в JavaScript версии 1.3 от Netscape

Заметка была впервые опубликована на сайте «Цитфорум» в 1999-м году, дата публикации примерно восстановлена из «Веб-архива»

Язык JavaScript 1.3 поддерживается Navigator’ом версий 4.06 и 4.5.

Поддержка Unicode

В строках теперь стало возможным использование любых символов из таблицы Unicode, которые кодируются как шесть ASCII-символов: \u и 4 цифры в шестнадцатеричной кодировке, например, \u0041 — латинская буква «A» из таблицы Unicode. Каждая такая последовательность добавляет только один символ к строке. Функции escape и unescape не подвергались изменениям и не используют Unicode-последовательности.

Следующий пример выведет на экран символ «копирайт» и строку «Netscape Communicator»:

alert("\u00A9 Netscape Communicator");

Следующая таблица содержит список наиболее часто используемых специальных символов и их коды в Unicode:

Unicode Наименование
\u0009 Tab
\u000B Vertical Tab <VT>
\u000C Form Feed <FF>
\u0020 Space <SP>
\u000A Line Feed <LF>
\u000D Carriage Return <CR>
\u000b Back Space <BS>
\u0009 Horizontal Tab <HT>
\u0022 Double Quote "
\u0027 Single Quote `
\u005C Backslash \

Вы можете использовать Unicode для отображения символов в различных языках или технических символов. Для отображения символов Unicode у клиента должны быть установлены шрифты Unicode. Некоторые ОС, например Windows 95, поддерживают Unicode лишь частично.

Новые свойства объекта Global

NaN

Синтаксис

NaN

В JavaScript 1.2 значение NaN (Not-a-Number) было определено только для объекта Number, в версии 1.3 это значение также определено, и для объекта global. NaN никогда не равно ни одному другому числу, включая NaN. Функции, работающие с числами (например Number.constructor, parseFloat и parseInt) возвращает NaN, если значение параметра не числовое.

Infinity

Синтаксис

Infinity

Числовое значение величины Infinity — бесконечность. В JavaScript 1.2 Infinity было определено как свойство объекта Number. У объекта Number есть два свойства POSITIVE_INFINITY и NEGATIVE_INFINITY (для примера, Number.POSITIVE_INFINITY). В JavaScript 1.3 Infinity определено и для объекта Global. Значение Infinity (положительная бесконечность) всегда больше, чем любое другое число, включая себя. Infinity полностью соответствует математической бесконечности. Например любое число, умноженное на Infinity, есть Infinity, любое число, деленное на Infinity, есть 0.

undifined

Синтаксис

undefined

Переменные, которым не было присвоено значение, имеют значение undefined. Теперь вы можете использовать undefined для проверки того, было ли присвоено переменной значение. Методы и выражения JavaScript также возвращают значение undefined, если используемые переменные не имеют своего значения. undefined — это свойство объекта Global, которое имеет значение undefined.

Пример:

var input;
if(input == undefined){
    document.write("переменной input значение не присвоено");
}

Новые функции объекта Global (IsFinite)

IsFinite

Синтаксис

IsFinite(число)

Вы можете использовать эту функцию, для определения конечности числа. Если аргумент функции NaN положительная или отрицательная бесконечность, функция возвращает false, иначе она возвращает true.

Пример:
Проверка числа на конечность

if(isFinite(Input) == true)
{
    // Ваш код
}

Метод toSource

Синтаксис

toSource()

Это новый метод, определенный для всех встроенных объектов. Большинство объектов наследуют этот метод от Object. Метод toSource базируется на методе toString объектов Object и Array.

toSource возвращает строку, которой вы создавали объект. Вы можете подставлять это значение в функцию eval, сохранять его и др. Для объекта tools метод eval(tools.toSource()) вернет копию объекта tools. Если tools содержит рекурсивные свойства, то строка, которую вернет функция toSource() может выглядеть странно.

Пример:

product = {type: "electronic", value: 500};
myList = ["school", 4, "home", 10];
myBool = new Boolean; 
myString = new String("my line");
myDate = new Date();
document.write(product.toSource());
document.write(myList.toSource());
document.write(myBool.toSource());
document.write(myString.toSource());
document.write(myDate.toSource());

Расширение объекта Date

В предыдущих версиях JavaScript формат даты был зависим от платформы и различных установок. В новой реализации объект Date полностью платформонезависим. Объект Date теперь поддерживает дату и время в формате UTC (Universal Coordinated Time). Дата задается как количество миллисекунд, прошедших с 1 января 1970 года. День содержит 86400000 миллисекунд.

Следующий пример возвращает разницу между timeA и timeB в миллисекундах:

timeA = new Date(); 
alert("подождем какое-то время");
timeB = new Date(); 
timeDifference = timeB - timeA;

Для работы с миллисекундами были добавлены методы getMilliseconds() и setMilliseconds(num_ms), getUTCMilliseconds() и setUTCMilliseconds(num_ms). Для устранения проблеммы 2000 года добавлены функции setFullYear, getFullYear, setUTCFullYear и getUTCFullYear. getFullYear возвращает полный год, например 1998, а setFullYear — устанавливает. Методы setYear и getYear оставлены для обратной совместимости.

Новый конструктор объекта Date

Конструктор объекта Date был расширен для поддержки миллисекунд, его полный формат:

Date (yr_num, mo_num, day_num, [, hr_num[, min_ num[, sec_num[, ms_num]]]])

UTC

UTC — метод объекта Date, теперь также поддерживает миллисекунды.

Date.UTC(year, month, date, [, hours[, min[, sec[, ms]]]])

Для поддержки UTC были введены getUTCFullYear(), getUTCMonth(), getUTCDate(), getUTCDay(), getUTCHour(), getUTCMinutes(), getUTCSeconds(), getUTCMilliseconds(), setUTCFullYear(year [, month[, date]]), setUTCMonth(month[, date]), setUTCDate(date), setUTCHour(hours[, min[, sec[,ms]]]), setUTCMinutes(min[, sec[, ms]]), setUTCSeconds(sec [, ms]), setUTCMilliseconds(ms) и toUTCString() ( превращает дату в строку, используя соглашение Universal Coordinates Time). Рассматривать эти методы более подробно не имеет смысла, их предназначение вполне понятно из названия.

Изменения в методах объекта Date

Методы объекта Date в версии 1.3 получили дополнительные параметры:

setMonth(month[, date])
setHours(hours[, min[, sec[, ms]]])
setMinutes(min[, sec[, ms]])
setSeconds(sec[, ms])
Теперь эти методы по своей форме полностью эквивалентны методам setUTC-.

Новые методы объекта Function

call

Синтаксис

call(thisArg, arg1, arg2, ...)

Параметры

thisArg —вызываемый объект
arg1, arg2,… — параметры вызываемого объекта

call позволяет вызывать методы одних объектов в контексте других (вызвавших) объектов. Это дает возможность задать свое значение объекту this, при вызове функции и, что самое главное, метод call позволяет написать метод один раз и наследовать его для других объектов не переписывая их! (См. также apply).

Пример:

function product(name, value)
{
	this.name = name;
	if(value > 1000) this.value = 999; else this.value = value;
}
function prod_dept(name, value, dept)
{
	this.dept = dept;
	product.call(this, name, value);
}
prod_dept.prototype = new product();
cheese = new prod_dept(feta, 5, food);  
car = new prod_dept(honda, 5000, auto);

apply

Синтаксис

apply(thisArg, argArray)

Параметры

thisArg — вызываемый объект
arg1, arg2,… — параметры вызываемого объекта

apply позволяет применять методы одних объектов в контексте других (вызывающих). Так же как и в call объект this может принимать заданное значение (this будет указывать на текущий, вызвавший объект). apply очень напоминает call, отличие лишь в типах параметров (аргументов) вызываемого объекта. В методе apply возможно использование любых типов массивов. Например: apply(this, new Array(name, value)). Разрешается так же использовать свойства вызываемого объекта. Можно использовать arguments для передачи всех параметров вызываемому объекту.

Пример:

function product(name, value)
{
	this.name = name;
	if(value > 1000) this.value = 999; else
	this.value = value;
}
function prod_dept(name, value, dept)
{
	this.dept = dept;
	product.apply(product, arguments);
}
prod_dept.prototype = new product();
cheese = new prod_dept(feta, 5, food);
car = new prod_dept(honda, 5000, auto);

Операторы === и !==

Операторы === и !== проверяют на соответствие (и не соответствие) операнды одинаковых типов (т. е. например оба операнда должны быть типа String). При сравнении с помощью этих операторов не происходит преобразования типов. Их использование необходимо, когда нужно убедиться, что оба операнда имеют одинаковый тип и одинаковые (или разные) значения.

Пример:

10 === '10'

вернет false, тогда как

10 == '10'

вернет true.

Изменения в операторах == и !=

Если операнды разного типа, происходит преобразование. Как результат возвращается значение типа Boolean. Если типы операндов одинаковы, то операторы == и != эквивалентны === и !==. Значения null и undefined считаются одинаковыми, NaN считается не равным ни одному значению, включая NaN.

Пример:

10=='10'

возвращает true.

Изменения в объекте Array

Свойство length

Длина массива (свойство length) теперь задается беззнаковым 32-битным целым. Значение свойства length может лежать в пределах от 0 до 232-1.

Конструктор

В JavaScript 1.3 при использовании конструктора с единичным параметром (new Array(len)) конструктор проверяет тип параметра. Если это число конструктор конвертирует его в 32-битное беззнаковое целое и создает массив со свойством length(размер массива), установленное в integer. Начальные значения элементов массива — undefined.

Метод push

В JavaScript 1.2 метод push возвращал последний элемент, добавленный к массиву. В версии 1.3 метод возвращает новую длину массива.

Метод splice

В JavaScript 1.2 метод splice возвращал удаленный элемент, если удалялся только один элемент (параметр howMany равен 1). В JavaScript 1.3 splice всегда возвращает массив, содержащий удаленные элементы. Если удаляется только один элемент, то splice вернет массив, содержащий один единственный элемент.

Метод replace объекта String

Синтаксис

replace(regexp, newSubStr)
replace(regexp, function)

В JavaScript 1.3 в качестве второго параметра можно использовать функцию. В этом случае заданная функция будет вызвана после метода match и ее результат (строка) заменит найденную подстроку. Есть возможность передать найденную подстроку функции. Первый параметр функции содержит найденную подстроку, остальные — подсовпадения в найденной строке. Надеюсь следующий пример разъяснит смысл вышесказанного:

"XXzzzz".replace(/(X*)(z*)/, function (str, p1, p2) {return str +" - " + p1 +" , " + p2;} )

вернет XX.zzzz — XX , zzzz

Объект Boolean

В JavaScript 1.2 значение false объекта Boolean трактовалось как ложь в логических выражениях. Если Boolean использовался в операторе if (if (выражение)), JavaScript 1.2 использовал значение объекта Boolean. В JavaScript 1.3 все объекты в логических выражениях трактуются, как истина, включая объект Boolean, даже если он имеет значение false.

Пример:

x = new Boolean(false);
if(x) // значение этого выражения - истина
{
	// Выполнение кода
}

toString

В JavaScript 1.3 метод toString объекта Object возвращает [object type], где type — имя объекта или имя конструктора объекта. Метод toString объекта Array вернет строку, содержащую значения всех элементов, разделенных запятыми.

Пример:

var SeaLion=new Image();
alert(SeaLion.toString());	// выдаст [object Image]

eval

Функцию eval можно вызывать не напрямую. Для примера можно использовать следующий код:

var x = 2;var y = 4;
var myEval = eval;
myEval(x + y);
eval(x + y);

Использование операции присваивания в логических выражениях

Ранние версии JavaScript конвертировали операции присваивания в логических выражениях в операции сравнения, другими словами if (x=y) превращалось в if (x==y). В Navigator 4.06 и выше возможно использование присваивания, если воспользоваться следующей конструкцией: if ( (x=y) ).

Web-программист казанского центра интернет Степанищев Евгений

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

14/II-98г

Удалён большой кусок личного текста — примечание.

Читал Н. Рериха «Алтай — Гималаи» (Н. К. Рерих, Алтай — Гималаи, «Мысль», М., 1974) (пока не полностью). Пока не понравилось — искал информацию, наткнулся на воспоминания. Стиль — хуже, чем my Д/ж. Под абзацем, где Р. описывает обряд наполнения чаши представителями махараджи Сиккима и опираясь на результаты обряда, говорит, что 1924 год будет нехорошим, написано карандашом: «1924 — умер Ленин». Интересно, когда это написано?

Прерываюсь, Серж вернулся.

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

4/I-98г

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

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

Мозг мой в последнее время редко оказывается в рабочем состоянии — дело в том, наверное, что я редко заставляю его работать. Сейчас я пытаюсь вспомнить всегда ли я был таким лентяем. Пожалуй всегда, но только в учёбе и только по некоторым дисциплинам. Математику, for example, я очень любил; читать фантастику на математике (ровно как и на химии и нек. другим предметам) я считал святотатством, я делал все задания по математике и мне ещё и нравилось. Я думаю, что если бы поступил в КГУ после 1го курса ЛНТ (Лениногорский Нефтяной Техникум, я в нём учился до вуза — примечание), то матан, АиГ, ДМ и т. д. я знал бы на 5.

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

Удалён небольшой личный абзац — примечание.

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

2/I-98г

Удалён огромный кусок очень личного текста — примечание.

На листе в клетку нарисован чашка с волнами, рядом формула колебаний и текст: «А физику я всё же сдал... Piece of cake! Оставлю формулу на память. Logout.

Logout.

Горе сердцу, которое льда холодней
Не пылает любовью, не знает о ней
А для сердца влюблённого — день, проведённый
Без возлюбленной, — самый пропащий из дней!
— Омар Хайям

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

27/XII-97г

В своём last письме Риваль (мой друг, который на тот момент был в армии — примечание) посоветовал мне взяться за голову. Иногда я думаю (каким местом? иногда…), что этой вышеуказанной части тела у меня просто нет.

Простой пример: через 2 (ДВА) дня мне сдавать физику (этот предмет я абсолютно не знаю), знаете чем я занимаюсь? Ну да — конечно не знаете… Тогда угадайте! Некоторые пришли уже к выводу, что физику я НЕ учу.

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

Трудно быть идиотом. Идиотом до такой степени, что в мире, где считается, что оливковое масло и красный перец спасает от рака, бить детей — полезно, где секс отделяют от любви (вообще-то правильно, хуже — когда любовь отделяют от секса) и много другой глупости, в этом мире верить в какие-то там идеалы и расстраиваться, что люди их не соблюдают, не ценят и/или не принимают?.. Теперь наберите побольше воздуха в лёгкие — вам его будет сейчас не хватать. Я ТАК И ДЕЛАЮ! (Дышите ровно и медленно).

Часть текста я удалил, так что весь воздух можно потратить на негодование — примечание.

А ещё я люблю себя ругать. Вот что люблю, так люблю! :-> Но моя ли тут вина? Все кругом ещё с детства мне вдалбливали, что я идиот, учителя в школе орали: «Придурки, изверги, отбросы, идиоты, недоумки» et cetera. Личное удалено — примечание. Таких примеров — масса. Неудивительно, что к 20ти годам я стал страдать комплексом неполноценности и склонностью к самобичеванию… личное удалено — примечание.

Другой недостаток — переживать то что ещё не случилось и, может быть, не случится. Возможную измену или несдачу экзамена, for example. Идиотизм и только. Всё бы, может быть, и ничего, но… личное удалено — примечание.

Если мне об’яснить, что я хороший, только притворяюсь злым и глупым, я поверю, но недолго — пока не найду что-то, что убедит меня в обратном. В «обратном» я убеждаюсь моментально — был бы малейший, ничтожнейший повод, а вот на «путь истинный» меня надо наставлять долго и вооружившись серьёзными аргументами.

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

Logout.

«…Круговая порука мажет, как копоть,
Я ищу чью-то руку, а чувствую локоть…»
— Нау

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

14/XII-97г

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

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

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

29/XI-97г

Жизнь сошла с рельсов и покатилась ч/з куда. Трудно быть максималистом. Всё кажется, если сейчас плохо, то всю жизнь было так и, более того, — так будет всегда. В такие минуты как не поддаться слабости обвинить во всех своих бедах кого-то постороннего, а не себя.

Не учусь, ничем не занимаюсь, как итог — всё труднее побороть лень, мозг засыпает, даже слова в осмысленные фразы об’единять всё труднее. Скоро из моего лексикона навсегда исчезнут все существительные, останутся лишь «эта штука», «хреновина» и т. п. Полный упадок. Свой день я провожу в каком-то полусонном состоянии. УЖЕ С УТРА ХОЧУ СПАТЬ.

А сегодня вообще настроение препаршивейшее. Дико болит спина, наверное ущемление позвонка (так кажется это называется?), поругался с Сержем (вместе снимали квартиру в студенчестве — примечание), в понедельник (сегодня — суббота) две контрольные — ДУ и ДМ, а ни по одному предмету НИЧЕГО не знаю. И помочь некому.

Bye. С паршивым настроением.

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

7/IX-97г

«…Ехали мы ехали с горки на горку,
Да потеряли ось от колеса…»
— БГ

Следует различать понятия «гордыня» и «гордость». Гордость помогает нам остаться на человеческом уровене, не позволяя опуститься ниже. Гордыня же заставляет смотреть свысока на остальное человечество, а то и на Бога. Необходимо подавлять гордыню и развивать гордость в себе.

Всё это хорошо, но в моей жизни был момент …убрано личное… Я понимаю, что поступить по-другому я бы не смог и никакие аргументы на меня бы не подействовали. Тогда,.. но не сейчас. Вот только правильно ли я делаю, боясь уронить этот хрупкий сосуд, который я назвал «гордость»? Может верное ему название «гордыня»?

Logout.

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

24/VIII-97г

На странице с датой 24/VIII-972 и рисунком церкви с крестом — цитата из «Мира огненного», ч. I § 87: о блуждающих, шатуне, сомнении и разложении.

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

Разговаривая со своей тётей Раей, я был поражён её видением Бога единого во всех религиях. Только через неё я понял, что да, — Бог един по всех религиях. А вот способы поклонения разные. И так ли это важно — какую религию ты исповедуешь? Наверное главное всё же Вера сама по себе, а не её атрибуты. Имхо.

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

7/VIII-97г

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

Рукописный текст о том, что не стоит окликать идущего по канату над пропастью, чтобы не отвлекать и не лишать равновесия, с аналогией к Богу.

…незначительная, но ведь в развёрнутом цикле (*) задержка, какой бы малой она ни была, по прошествии определённого интервала времени всегда перерастает в ощутимую величину. А если в запасе вечность? Я прерву свою демагогию ради более полезного занятия: чтения труда под названием «Великий путник» Стрельцовой Л. В.

(*) конечно и в нормальном тоже, но тут ведь цикл развёрнутый

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

6/VIII-97г

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

Надеюсь стало понятно. Как сказано в «Скрижалях лазурной горы» («Би янь лу») «…если вы всё ещё понимаете не больше, чем лакированная лохань, я ударю в барабан и созову всех поглазеть на вас!» (Таким вот образом люди прошлого оправдывали своё неумение или нежелание выразить мысль достаточно ясно, сваливая всё на низкий интеллектуальный уровень собеседника). А сейчас у меня дела. Вынужден прерваться. Bye. See you later.

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

5/VIII-97

Рукописный стих от 5/VIII-97: «Круша размер и перспективу...» с подписью «G.A. John», рядом — рисунок дома, солнца и цветов.
Вокруг рисунка были некие рифмованные строки в стиле «садистких стишков», но я их убрал, какие-то они чересчур, видимо тогда у меня было очень плохое настроение (примечание от 5.05.2019)

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

Это всё, что я хотел сегодня сказать, пойду высплюсь и завтра проснусь бодрым и полным желания свершить что-нибудь великое. Например, Windows’95 переписать на Lisp’e. Не-е. (Цензурное оскорбление ОС Виндоуз). Тогда, скажем Quake для 286-го написать. Хотя. (Цензурное оскорбление Квейка). Ладно спать иду. Аминь.

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

17/I-92г

Вчера ходил на фильм «Терминатор-1», на первый сеанс, народу — пропасть. Еле купили билеты (со мной ещё ходил мой братишка, Медведев Д., его двоюродный братишка), билеты покупал Галеев Ф., ещё там были: Мартынов Д., Тимербулатов М. и мой дядя.

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

15/I-92г

Спаяв по схеме, приведённой вверху (схема в тексте от 14-го числа), я воткнул его в сеть, у меня бахнул К1. Я перепаял «Икар-05» по старой схеме. Получается 5 (пять) сносных напряжений (вместо одного):

1) 246,(6) +14B -1B
2) ≈102B±10B
3) ≈77B +11В -6В
4) ≈55В ±4В
5) ≈44В ±4В

Мало? Но я «изобрёл» новый способ заряда — вот рекордные напряжения этого метода:

1) ≈280В
2) ≈260В
3) ≈160В
4) ≈110В
5) ≈80В

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

14/I-92г

У нас в школе карантин до 15 числа. До здравствуют каникулы!

Я сегодня сделал «ШРСК-5» (школьный разрядник собственной конструкции модель №5). Вот схема:

Рукописная схема питания с надписью «Вот схема:», где указаны S1, S2 — на ток не менее 2А, VD1 — А226Б, конденсаторы на напряжение 250–400 В.

S1 — нажимают (вкл.), когда надо разрядить ШРСК-5;
S2 — переключение «регисторов»;

Я называл его «Икар-05».

Чтобы его разрядить S1 — в положение противоположное чем на схеме, а S2 после каждого разряда переключают, так можно получить ≥ 15 разрядов. Ш1 — выход.

Чтобы зарядить воткнуть в розетку Ш1, S1 — в положение на схеме, S2 — двигать 2 раза. Для чего нужен? Для того, чтобы бить кого-нибудь током.

≈ с 29/XII-91 г кончились серии Уолт Диснея «Утиные истории» и «Чип и Дейл спешат на помощь» и начались «Чудеса на виражах» и «Медведи Гамми».

Когда мы ездили на «Красный ключ», я нашёл необыкновенный камень, — одна сторона содержит гигантское кол-во записей (это были узоры естественного происхождения), другая чистая, две остальных что-то вроде карты звёзд. Я только спустя несколько лет понял, что это и для чего (но это мой секрет)…

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

Скетч устройства «Икар-05» с надписью: «мой "Икар-05" габариты корпуса 50×50×45 мм

Некоторые рекомендации по «Икару-05»:
подключить к точкам А и Б:

Схема подключения: резистор R1 (1-2 кОм, проб.) к контактам B, A, C и источнику U, с обозначением 83 на линии C.

через этот разъём можно разряжать «регистр А» (конденсатор С1) и остальные конденсаторы.

Вечером разряжать регистр А, а утром поставить S1 в положение «заряжать» (т. е. в положение на схеме), S2 в положение «1» и воткнуть в сеть, потом выткнуть, поставить S2 п «2» и обратно, повторить 3—5 раз.

Чтобы зарядить, S1 — «заряжать», S2 — «1», подержать 25—60 сек., S2 — «2», снова подержать, S2 — «1» снова подержать и выключить из сети.

Где у вашего «Икара-05» положение «1» и «2» подбирают опытным путём.

Если при всовывании штекера Б замыкается с С (а на А с С), то S3 можно не ставить, а R1 поставить:

Рукописная схема электрической цепи с резистором R1, диодом, катушкой индуктивности и конденсатором C1, подключёнными к источнику тока.

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

10/I-92г

Осваиваю машинные коды и Асамблер по комментариям к программам.

Произошла сенсация — не так давно пролетел башкой вниз со своей койки… <я спал на втором этаже двухэтажной кровати — примечание> Родители говорят, что улож̅или меня на диван, массировали шею и т. д., а я ничего этого не помню.

Мы с Олегом (мой брат) хотим сделать ПЭВМ «Радио-86РК».

Завтра едем резать поросёнка. У меня есть кое-то сказать бабушке. hh’.

Есть события в игрушечном мире. Потом расскажу.

Я почему-то стал всех подозревать в чём-то (не всех, конечно). Wsl’не очень-то верю в «мистику» (хотя в последнее время вера начинает нарастать), наверное взрослею. Я нашёл одну вещь (из своих наблюдений) — стоит мне несколько минут посидеть в позе лотоса как я сплю лучше.

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