Cardiotonic pills
Препарат Cardiotonic Pills (торговое название "Оксикардин") производства фармацевтической компании "Тяньшили Груп" (КНР) - это сердечно-сосудистый антиангинальный препарат, применяемый для лечения стенокардии. Здесь публикуется описание внешнего вида препарата и содержание листовки, вкладываемой в упаковку.
Предупреждение. Настоящая публикация не является ни официальной, ни рекламной. Текст документа получен из неофициального источника. Достоверность документа перед публикацией не проверялась. Сведений о том, где и каким образом можно получить официальную версию документа, мы не предоставляем. Также мы не предоставляем сведений о том, где и каким образом можно приобрести препарат.
Единственной целью публикации является предоставление информации, содержащейся в документе всем, кому эта информация может понадобиться. (Именно такая проблема однажды встала перед нами, и все поиски в Интернет оказались безуспешны.)
См.также:
Инструкция по медицинскому применению препарата "Оксикардин"
Описание препарата "Оксикардин"
Отчет об изучении клинической эффективности и безопасности препарата "Оксикардин"
Препарат представляет собой пеллеты в виде шариков коричневого цвета диаметром около 2 мм, с резким запахом и вкусом. Пеллеты расфасованы по 100 шт. в керамические бутылочки. Каждая упаковка содержит две такие бутылочки. Упаковки собраны в блоки по 6 шт. Один блок содержит количество пеллет, достаточное для одного курса лечения.
Разворот и содержимое упаковки препарата Cardiotonic Pills:
The first and the only natural compound herbal medicine with cardlovascular therapeutic effects succeeded in IND of FDA In USA.
Cardiotonic Pills
Cardiotonic Pill (CP) is the primary selective drug for preventing and treating cardiovascular disease. CP Protected by Chinese government and produced exclusively by Tianjin Tianshili Pharmaceutical Group Co. Ltd. CP is a pure Chinese herb medicine combining traditional Chinese medicinal theory with modern pharmaceutical techniques. The total effective rate for treating angina pectoris is 95.3%, for improving electrocardigram is 62.16%, CP has many advantages such as rapid action, high efficiency, low dosage, convenient for taking, wide uses, few side-effects and toxicities, etc.
Pharmacology:
CP can dilate coronary arteries(CA), increase blood flow in CA, improve cardiac output, and decrease myocardiac oxygen consumption. CP can decrease blood platelet aggregation, prevent thrombosis, lower whole blood and plasma viscosity, and reduce chelesterol. CP has the function of promoting cerebral blood flow, improving cerebral circulation, obviously inhibiting lipid peroxide, removing oxygen free radical, increasing SOD (superoxide dismutase) activity, protecting from damage of oxidative attack.
Toxicology:
CP has little toxicity and large safe range.
Ingredients:
Radix Salviae Miltiorrhizae 82.8% Radix Notoginseng 16.2% Bormel 1%
Functions:
Dilating coronary arteries, decreasing blood lipid and blood platelet aggregation, elimination of atherosclerotic plaque.
Indications:
For preventing and treating of coronary atherosclerosis, angina pectoris and hyperliponemia.
Administration:
Oral or sublingual medication. Three times a day, each time takes 10 pills, one course of treatment takes four weeks, or follows the doctor's advice.
Cautions:
It isn't advisable for the pregnant women
Storage:
Sealed storage at room-temperature
Number of documents of ratification:
(95)Health and Medicine permission number Z-OI.
Первое и единственное природное лекарство на основе сочетания трав, для cердечно-сосудистой терапии, соответствующее требованиям IND FDA США.
Cardiotonic Pills
Cardiotonic Pill (CP) - это уникальный препарат для предупреждения и лечения сердечно-сосудистых заболеваний. CP находится под защитой китайского правительства и производится исключительно фармацевтической компанией Тяньшили Групп. CP - это чисто китайское лекарство на основе трав, сочетающее в себе традиционную китайскую медицину с современными фармацевтическими технологиями. Общие показатели эффективности при лечении пекторальной ангины (?) - 95.3 %, для улучшения электрокардиограммы - 62.16 %. CP имеет много преимуществ: быстрое действие, высокая эффективность, низкая дозировка, удобство и широта применения, незначительные побочные эффекты и токсичность и т.д.
Фармакология:
CP расширяет коронарные артерии (CA), увеличивает кровоток в них, улучшает продукцию сердца, уменьшает потребление кислорода миокардом. CP уменьшает накопление бляшек, предотвращает тромбоз, понижает вязкость кровь в целом и ее плазмы, снижает содержание холестерина. CP улучшает мозговое кровообращение, препятствует окислению липидов, удаляет свободные окисные (?) радикалы, увеличивает активность SOD (superoxide dismutase), защищает от поражений при оксидативных атаках (?).
Токсикология:
CP имеет незначительную токсичность и высокий уровень безопасности.
Ингредиеты:
Даньшень (шалфей многокорневищный) Radix Salviae Miltiorrhizae 82.8% Женьшень нотогинзенг Radix Notoginseng 16.2% Бормель (?) 1%
Функции:
Расширение коронарных артерий, снижение уровня липидов в крови и скоплений липидных бляшек, устранение атеросклеротических проявлений.
Показания:
Для предупреждения и лечения коронарного атеросклероза, пекторальной ангины и гиперлипонемии.
Указания по применению:
Перорально или сублингвально. Три приема в день, по 10 пеллет за прием. Один курс лечения - четыре недели или по указанию врача.
Предупреждения:
Не желательно применение при беременности
Хранение:
Хранить в закрытом виде при комнатной температуре
Номер документа о ратификации:
(95)Разрешение № Z-OI.
(Перевод с английского assembler.ru. Не владея специальной медицинской терминологией, будем благодарны за замечания и исправления.)
Догадка гольдбаха (версия 2.1)
Догадка Гольдбаха была высказана прусским математиком Кристианом Гольдбахом в 1742 году в письме Леонарду Эйлеру и формулируется следующим образом: "Каждое четное число, большее двух, может быть представлено в виде суммы двух простых чисел." Попытки доказать истинность Догадки Гольдбаха или подтвердить невозможность такого доказательства до настоящего времени успеха не имели. Предыдущая попытка от assembler.ru тоже была не совсем удачной. Нынешняя кажется более убедительной. Здесь используются те же идеи, но уже нет никаких кирпичей, зато есть довольно внятная математика, устранены кое-какие проблемы и выявлены новые существенные обстоятельства.
Еще одна очень интересная попытка доказательства представлена Тимом Туманным. Всем интересующимся этой проблемой рекомендуется к изучению и обсуждению в первую очередь.
Основная идея предлагаемого доказательства заключается в том, чтобы сопоставить каждому четному числу E некоторую величину SE, заведомо меньшую, чем действительное число пар простых чисел, дающих в сумме число E. Четное число E, для которого значение SE > 1, обязательно будет иметь не менее одной пары простых чисел, дающих в сумме число E. Если условие SE > 1 выполняется для всех E, то Догадка Гольдбаха верна.
Каждое четное число E можно представить в виде суммы двух чисел с помощью E/2 уникальных пар. Необходимо исключить из этого количества все пары, в которых содержатся не простые числа. При определении, является ли число простым, будем руководствоваться правилом: число является простым, если не делится на все простые числа, меньшие или равные корню квадратному из этого числа.
Возьмем для примера четное число 78. Его можно представить в виде суммы двух чисел с помощью 39 пар: 1+77 2+76 3+75 4+74 5+73 6+72 7+71 8+70 9+69 10+68 11+67 12+66 13+65 14+64 15+63 16+62 17+61 18+60 19+59 20+58 21+57 22+56 23+55 24+54 25+53 26+52 27+51 28+50 29+49 30+48 31+47 32+46 33+45 34+44 35+43 36+42 37+41 38+40 39+39.
Исключим из числа имеющихся пар те, которые содержит числа, делимые на 2. Останется либо половина от определенного в п.2 числа пар (как, например, для E=16: 1+15 3+13 5+11 7+9), либо больше половины (как для E=18: 1+17 3+15 5+13 7+11 9+9). Воспользуемся первым случаем, потому что эта величина меньше, и, следовательно, соответствует принятому методу доказательства. Итак, после исключения пар, числа в которых делятся на 2, останется
пар.В примере с числом 78 на этом этапе подлежат исключению 19 пар: 1+77 2+76 3+75 4+74 5+73 6+72 7+71 8+70 9+69 10+68 11+67 12+66 13+65 14+64 15+63 16+62 17+61 18+60 19+59 20+58 21+57 22+56 23+55 24+54 25+53 26+52 27+51 28+50 29+49 30+48 31+47 32+46 33+45 34+44 35+43 36+42 37+41 38+40 39+39.
Остается 20 пар: 1+77 3+75 5+73 7+71 9+69 11+67 13+65 15+63 17+61 19+59 21+57 23+55 25+53 27+51 29+49 31+47 33+45 35+43 37+41 39+39.
Предлагаемая оценка дает значение 19.5, что меньше фактического числа оставшихся пар и согласуется с принятой методикой доказательства.
Исключим из числа оставшихся после п.3 пар те, которые содержат числа, делимые на 3. Следует оценить, какое наименьшее количество пар останется. Поскольку число 2, использовавшееся в предыдущем пункте, и число 3 - простые, то можно было бы утверждать, что при достаточно больших E это количество будет приближаться к 1/3 части от числа пар, оставшихся после предыдущего пункта. Однако количество пар должно выражаться натуральным числом. Следовательно, имеют место ошибки округления. Чтобы учесть их в наихудшем варианте, вычтем из результата оценки единицу:
В примере с числом 78 на этом этапе подлежат исключению 7 пар: 1+77 3+75 5+73 7+71 9+69 11+67 13+65 15+63 17+61 19+59 21+57 23+55 25+53 27+51 29+49 31+47 33+45 35+43 37+41 39+39.
Остается 13 пар: 1+77 5+73 7+71 11+67 13+65 17+61 19+59 23+55 25+53 29+49 31+47 35+43 37+41.
Предлагаемая оценка дает значение 5.5, что меньше фактического числа оставшихся пар и согласуется с принятой методикой доказательства.
Продолжая рассуждения, исключим из оставшихся после п.4 пар те, которые содержат числа, делимые на 5. Первое число в каждой паре делится на 5 примерно в 1/5 случаев. Второе число также делится на 5 тоже примерно в 1/5 случаев, не обязательно других и не обязательно тех же самых. В худшем варианте те и другие - разные случаи, и тогда пар, в которых ни одно из чисел не делится на 5, примерно 3/5 от числа, оставшегося после предыдущего пункта. С учетом ошибки округления их количество:
В примере с числом 78 на этом этапе подлежат исключению 4 пары: 1+77 5+73 7+71 11+67 13+65 17+61 19+59 23+55 25+53 29+49 31+47 35+43 37+41.
Остается 9 пар: 1+77 5+73 7+71 11+67 17+61 19+59 29+49 31+47 37+41.
Предлагаемая оценка дает значение 2.3, что меньше фактического числа оставшихся пар и согласуется с принятой методикой доказательства.
(Следует обратить внимание на наличие в числе остающихся пары 5+73. Она не подлежит исключению на этом этапе, так как число 5 - простое.)
На следующем шаге исключаются пары, которые содержат числа, делимые на 7. После этого в наихудшем случае остается количество пар, описываемое выражением:
В примере с числом 78 на этом этапе подлежат исключению 2 пары: 1+77 5+73 7+71 11+67 17+61 19+59 29+49 31+47 37+4.
Остается 7 пар: 5+73 7+71 11+67 17+61 19+59 31+47 37+41.
Предлагаемая оценка дает значение ~0.643, что меньше фактического числа оставшихся пар. Вместе с тем это число меньше 1, то есть наличие пар простых слагаемых для числа 78 нашим доказательством не гарантируется (оно подтверждено эмпирически). Однако это еще не значит, что доказательство неверно.
Все числа в полученных парах - простые, так как использованное на этом шаге число 7 является наибольшим простым числом, меньшим, чем квадратный корень из 78. Дальнейшие итерации для числа 78 выполнять нет необходимости.
Обобщая сказанное выше, каждому E можно сопоставить значение, величина которого никогда не превысит фактическое количество пар простых чисел:
где PE - наибольшее простое число, удовлетворяющее условию
Работу этого выражения можно проиллюстрировать предлагаемой программой. Программа работает в броузерах, поддерживающий JavaScript и фреймы. Она моделирует процесс отсева пар, содержащих не простые числа. При этом вычисляется оценка количества остающихся пар на каждом шаге отсева (step SE[i]) и накопленная оценка (partial SE(i)). Пробуя различные E, можно убедиться, что ни та, ни другая оценка не превышают реального количества остающихся пар.
Очевидно, значения SE образуют последовательность на множестве простых чисел. В контексте доказательства достаточно выполнить ее анализ, пользуясь расчетом. Видно, что значения SE, начиная с некоторого момента, устойчиво превышают 1 и возрастают. В точках, где вступает в силу новое PE, наблюдаются отрицательные девиации значений последовательности SE. Эти девиации обусловлены тем, что в этих точках в выражении для SE появляется новый множитель (PE-2)/PE и вычитается еще одна единица. Но их влияние с ростом E, очевидно, постоянно уменьшается, поскольку E возрастает линейно, а их появление обусловлено корнем квадратным из E, и, кроме того, (PE-2)/PE стремится к 1. Следовательно, начиная с некоторого момента, девиации никогда не станут настолько велики, чтобы значение SE стало меньше 1.
Вывод. Каждому четному числу E, начиная с некоторого, можно поставить в соответствие значение SE такое, что оно заведомо меньше фактического числа пар простых чисел, дающих в сумме число E, и одновременно больше 1. Следовательно, для каждого такого четного числа существует не менее одной пары простых чисел, дающих в сумме это число. Наличие таких пар для чисел E, меньших указанного, подтверждается эмпирически. Догадка Гольдбаха доказана.
Предлагаемое доказательство, к сожалению, нельзя считать окончательным. Несмотря на то, что оценка SE кажется надежно меньшей, чем реальное количество пар простых слагаемых, существует обстоятельство, снижающее уровень доверия к ней. Это обстоятельство заключено в следующем. Используемая в доказательстве методика основана на предположении, что пары, подлежащие исключению из набора на очередном шаге, распределены примерно равномерно. Однако, это не так. Неравномерность распределения исключаемых пар на каждом шаге обусловлена совместным воздействием процессов исключения на предыдущих шагах. В результате существует вероятность, что на каком-либо из шагов окажется, что в оставшемся наборе имеется больше пар, подлежащих исключению, чем дает оценка для этого шага. И такой эффект действительно, редко, но наблюдается. Так, для четных чисел до 1000 это имеет место примерно в одном случае из ста (388 на шаге 13, 520 на шаге 11 и др.). В этих случаях эффект не влияет на правильность окончательной оценки, однако следует предположить, что на бесконечной числовой оси возможны ситуации, когда пострадает и окончательная оценка. Следует показать, что либо такие ситуации невозможны в принципе, либо внести в выражение, определяющее оценку, коррективы, позволяющие их учесть. Может быть, это просто. А может быть, такие коррективы будут сами по себе являться завуалированной формой Догадки Гольдбаха, или приведут к падению оценки меньше 1, или просто не существуют. Ответ, скорее всего, следует искать на пути анализа взаимодействий большого количества периодических процессов.
Догадка Гольдбаха (версия Тима Туманного)
Замечания:
Настоящий текст является интернет-публикацией документа, полученного через электронную почту 25.07.00 в 10:59. Отправителем документа является Тим Туманный Текст публикуется без изменения содержания, то есть таким, каким был получен Текст публикуется с разрешения, содержащегося в сопроводительном письме Первое упоминание о существовании этого текста имеется в электронной переписке от 12.06.00 Все замечания и вопросы по содержанию текста следует направлять Тиму Туманному по адресу timtum@mail.ru или ttumanny@hotmail.com, либо в адрес assembler.ru. В последнем случае они будут перенаправлены Тиму Туманному без изменения содержания. Вы можете также ознакомиться с иными интересами автора этого варианта доказательства Догадки в Юмористическом журнале Прикол и Ежедневной газете Денечки.RU.
Проблема Гольдбаха может быть переформулирована следующим образом:
Теорема1. Для любого целого числа t всегда существуют два равноудаленных от него простых числа. То есть всегда t=p-c, t=m+c, где p и m - простые числа, c - некоторое целое число 0<c<t. Например, для 10 равноудаленными являются простые числа 7 и 13. Если верна Теорема1, то тогда для любого четного числа 2t=p+m, что равносильно утверждению Гольдбаха о том, что всякое четное число всегда можно выразить в виде суммы двух простых чисел. Начнем с общеизвестного доказанного факта: всякое нечетное число можно выразить в виде разности квадратов двух целых чисел. Действительно, t2-(t-1)2=2t+1 - общая формула для нечетных чисел. 5=32-22 7=42-32 и т. д. Легко заметить, что такое разложение не всегда единственно: 15=82-72=42-12 21=112-102=52-22 35=182-172=62-12 То есть видим, что всякое составное нечетное число, имеющее простой множитель p, можно выразить в виде разности квадратов: a2-(a-p)2=a2-a2+2ap-p2=p(2a-p) Действительно, число 2a-p - число всегда нечетное, то есть число p(2a-p) и есть некоторое составное нечетное число, имеющее множитель p. При a=p мы получаем квадрат числа p. Ясно, что если число p входит в разложение составного нечетного числа со степенью 1, произведение остальных простых сомножителей всегда имеет вид 2a-p, где a и p - взаимно простые числа. Также ясно, что a-(a-p) не равно 1. Итак, произведение двух простых чисел p и m есть число нечетное и составное, значит оно может быть выражено в виде разности квадратов двух целых чисел p·m=t2-c2 По формуле разности квадратов имеем p·m=(t+c)(t-c). Если положить t=a, c=a-p то как было показано выше t-c не равно 1. Но по основной теореме арифметики представление числа в виде простых сомножителей единственно, следовательно, если положить p>m, тогда обязательно p=t+c и m=t-c, что равносильно утверждению Теоремы 1. Итак, мы получили, что действительно для любого целого числа t всегда найдутся два равноудаленных от него простых числа p и m. Следовательно, Теорема Гольдбаха верна. Дополнение. Хорошо иллюстрирует вышесказанное метод конечных разностей. Если взять ряд квадратов натуральных чисел и образовать из него ряд, состоящий из разностей последующего квадрата с предыдущим, получим ряд нечетных чисел: 0 1 4 9 16 25 36 49 64 81 100 1 3 5 7 9 11 13 15 17 19 Легко заметить, что разность квадратов двух чисел разной четности, из которых меньшее отличается от большего более чем на 1, может быть выражена суммой некоторого нечетного количества слагаемых из ряда первых разностей. Например, 42-12=3+5+7 82-52=11+13+15 и т. д. Ряд первых разностей представляет собой арифметическую прогрессию с разностью d=2. Сумма n членов арифметической прогрессии выражается как sn=[n(a1+an)]/2, где в данном случае n-ый член арифметической прогрессии имеет вид an=a1+(n-1)d=a1+(n-1)·2. Итак, имеем для суммы n членов арифметической прогрессии sn=n·(a1+n-1). Рассмотрим s3, начиная с a1=3 и далее a1=5....... s3=3·(3+2)=15=3·5 s3=3·(5+2)=21=3·7 s3=3·(7+2)=27=3·9 То есть получаем ряд составных нечетных чисел кратных 3. То же верно и для s5: s5=5·(3+4)=35=5·7 s5=5·(5+4)=45=5·9 составные нечетные кратные 5. Итак, по индукции, составные нечетные числа могут быть выражены разностью квадратов двух чисел разной четности, из которых меньшее отличается от большего более чем на 1. Итак, мы получили, что действительно для любого целого числа t всегда найдутся два равноудаленных от него простых числа p и m. Следовательно, Теорема Гольдбаха верна. Впрочем, у серьезного и въедливого читателя может возникнуть вопрос: а не доказали ли мы теорему, обратную данной, а именно звучащую так: каковы бы ни были простые числа p и m, всегда найдется целое число t равноудаленное от них. Это доказывается тривиально. В самом деле, числа p и m - нечетные, значит числа t=(p+m)/2 и с=(p-m)/2 числа целые, откуда автоматически следует p=t+c и m=t-c. Но верно ли обратное,т. е. выполняется ли это для любого t? Обратимся снова к методу конечных разностей. Мы рассматриваем разности квадратов t2 - c2, где числа t и c разной четности. Мы уже видели, что такие разности выражаются суммой некоторого нечетного количества первых разностей и sn=n·(a1+n-1). Ясно, что всегда можно подобрать n равным некоторому простому числу m. С другой стороны, видно, что a1=(c+1)2-c2=2c+1. Тогда имеем sm=m·(2c+1+m-1)=m(2c+m). Из постулата Бертрана имеем, что на промежутке от t/2 до 2t имеется хотя бы два простых числа, одно меньшее, а другое большее t. Пусть t-c=m простое число. Но с другой стороны t/2+b=m и t/2=c+b, откуда t/2<c. Следовательно, число 2с+m<t+m<2t. Но 2с+m=c+c+m>t, значит число 2c+m лежит в промежутке от t до 2t, то есть там, где по Бертрану существует простое число p. Ясно, что разность между двумя простыми числами p и m всегда равна некоторому четному числу, следовательно всегда найдется такое c, что 2c+m=p. Итак, имеем, что какое бы целое число t мы не взяли, всегда найдется такое c, что t2-c2 равно произведению двух простых чисел p и m. Далее все ясно. Я уже знаю, что для доказательства моей последней теоремы можно использовать понятие о квадратичных вычетах и так называемый закон квадратичной взаимности Гаусса. Но можно обойтись и без этих штук. Достаточно того, что как мы уже выяснили, произведение двух простых чисел всегда можно представить в виде разности квадратов. Но с другой стороны имеет место формула: a2-b2=(a+b)(a-b)=(a-k)2-(b-k)2+2k(a-b) Тогда (a-b)(a+b-2k)=(a-k)2-(b-k)2. Пусть даны два простых числа p и m, тогда их произведение представимо в виде разности квадратов a2-b2=(a+b)(a-b), где m=(a-b) и p=(a+b). С другой стороны всегда существует некоторое простое число p1 равное p-2k. То есть имея два простых числа, равноудаленных от числа a, всегда можем получить два простых числа равноудаленных от другого числа a-k. Например: (8+5)(8-5)=3·13=72-42+2·3 3·(13-2)= 72-42 3·11=72-42 То есть зная доподлинно исходя из постулата Бертрана, что справа и слева от числа 7 имеются простые числа p<2·7 и m<7 и выбрав p=13 и m=3, получили простые числа 3 и 11 равноудаленные от числа 7. Еще одно дополнение. Утверждение Теоремы 1 равносильно следующему: всегда существует некое простое число p, которое при делении на целое число t>p/2 имеет ненулевой остаток с, который равен остатку с от деления числа t на простое число m. Например, остаток от деления 13 на 10 равен 3. С другой стороны остаток от деления 10 на 7 тоже равен 3. 10 - это и есть число , равноудаленное от 7 и 13. Особый случай представляет собой тройка чисел 3, 7 и 11. Скажем, остаток от деления 7 на 3 раввен 1, а 11 на 7 - равен 4. Но мы можем записать 7=2·3+1=3+4, То есть и здесь приходим к одинаковому остатку 4. Существование одинаковых остатков следует из элементарных положений теории делимости и условия m<t. |
Смотрите также публикации assembler.ru, предшествовавшие появлению данного документа:
Пролетая над миллионом баксов - постановка проблемы, предыстория, попытка доказательства Догадка Гольдбаха (версия 2.1) - вторая попытка доказательства
Инструкция оксикардин
Препарат Cardiotonic Pills (торговое название "Оксикардин") производства фармацевтической компании "Тяньшили Груп" (КНР) - это сердечно-сосудистый антиангинальный препарат, применяемый для лечения стенокардии. Здесь публикуется Инструкция (информация для специалистов) по медицинскому применению препарата "Оксикардин" (Oxycardin).
Предупреждение. Настоящая публикация не является ни официальной, ни рекламной. Текст документа получен из неофициального источника. Достоверность документа перед публикацией не проверялась. Сведений о том, где и каким образом можно получить официальную версию документа, мы не предоставляем. Также мы не предоставляем сведений о том, где и каким образом можно приобрести препарат.
Единственной целью публикации является предоставление информации, содержащейся в документе всем, кому эта информация может понадобиться. (Именно такая проблема однажды встала перед нами, и все поиски в Интернет оказались безуспешны.)
См.также:
Описание внешнего вида и содержание листовки препарата Cardiotonic Pills
Описание препарата "Оксикардин"
Отчет об изучении клинической эффективности и безопасности препарата "Оксикардин"
ОДОБРЕНО Фармакологическим Государственным комитетом «13 » января 2000 г. |
ИНСТРУКЦИЯ
(информация для специалистов)
по медицинскому применению препарата
ОКСИКАРДИН (Oxycardin)
Регистрационный номер: П № 011763/01-2000
Торговое название препарата: ОКСИКАРДИН (Oxycardin)
Состав и лекарственная форма: Пеллеты, содержащие
Даньшень (шалфей многокорневищный) Radix Salviae Miltiorrhizae - 70% Женьшень нотогинзенг (Radix Notoginseng)- 13,7% и вспомогательные вещества
Фармакологические свойства
Фармакотерапевтическая группа: сердечно-сосудистое средство. Антиангинальный препарат.
Фармакодинамика: препарат обладает антиангинальным действием. Основной механизм действия препарата заключается в расширении коронарных кровеносных сосудов, увеличении коронарного кровотока, снижении потребления кислорода миокардом.
Показания к применению. Купирование и лечение стенокардии.
Противопоказания. Повышенная чувствительность к компонентам препарата. Беременность и период кормления грудью. Детский возраст.
Особые указания. Не рекомендуется принимать препарат непосредственно перед сном.
Взаимодействие с другими лекарственными средствами. Не выявлено.
Способ применения и дозы
Для купирования приступа стенокардии рекомендуется прием 10 пеллет сублингвально. Для лечения приступов стенокардии принимать Оксикардин по 10 пеллет сублингвально 3 раза в сутки. Курс лечения составляет 4 недели. Повторные курсы - по рекомендации врача.
Побочное действие. Возможны аллергические реакции к компонентам препарата, головная боль, головокружение, нервное возбуждение, нарушение сна.
Форма выпуска. Пеллеты по 25 мг.
Условия хранения. Хранить в сухом месте, в герметичной упаковке при комнатной температуре. Хранить в недоступном для детей месте.
Срок годности. 4 года. Не использовать позже даты, указанной на упаковке.
Условия отпуска из аптек. По рецепту врача.
Производитель. Фармацевтическая компания " Тяньшили Групп" Лтд, КНР, г. Тяньцзинь.
Эффективность препарата оксикардин
Препарат Cardiotonic Pills (торговое название "Оксикардин") производства фармацевтической компании "Тяньшили Груп" (КНР) - это сердечно-сосудистый антиангинальный препарат, применяемый для лечения стенокардии. Здесь публикуется документ Изучение клинической эффективности и безопасности антиангинального препарата "Оксикардин".
Предупреждение. Настоящая публикация не является ни официальной, ни рекламной. Текст документа получен из неофициального источника. Достоверность документа перед публикацией не проверялась. Сведений о том, где и каким образом можно получить официальную версию документа, мы не предоставляем. Также мы не предоставляем сведений о том, где и каким образом можно приобрести препарат.
Единственной целью публикации является предоставление информации, содержащейся в документе всем, кому эта информация может понадобиться. (Именно такая проблема однажды встала перед нами, и все поиски в Интернет оказались безуспешны.)
См.также:
Описание внешнего вида и содержание листовки препарата Cardiotonic Pills
Инструкция по медицинскому применению препарата "Оксикардин"
Описание препарата "Оксикардин"
Московская медицинская академия им.И.М.Сеченова
Кафедра клинической фармакологии и фармакотерапии ФППО
Руководитель клинических исследований: академик Альбинская Л.И.
Российская академия медицинских наук
Проблемная лаборатория по разработке , изучению, внедрению,
производству и маркетингу лекарственных средств
Руководитель клинических исследований: профессор Кукес В.Г.
Московский государственный
медико-стоматологический университет
Кафедра внутренних болезней № 5
Руководитель клинических исследований: профессор Задионченко В.С.
ОТЧЕТ
ИЗУЧЕНИЕ КЛИНИЧЕСКОЙ ЭФФЕКТИВНОСТИ И
БЕЗОПАСНОСТИ АНТИАНГИНАЛНОГО ПРЕПАРАТА
«ОКСИКАРДИН»
Производства фармацевтической компании"Тяньшили Групп", КНР
Москва, 1999
По дневникам самонаблюдения больного расчитывалось количество приступов стенокардии и потребность в нитроглицерине за неделю.
Критерии эффективности
Хорошая - уменьшение числа приступов стенокардии и снижение потребности в нитроглицерине более 80% в сочетании с увеличением толерантности к физической нагрузке по данным ВЭМ на 20% и улучшением показателей ЭхоКГ Удовлетворительная - уменьшение числа приступов стенокардии и снижение потребности в нитроглицерине от 30 до 79 % в сочетании с повышением толерантности к физической нагрузке по данным ВЭМ на 10-19% и улучшением показателей ЭхоКГ Неудовлетворительная - снижение числа приступов стенокардии и потребности в нитроглицерине менее 30%, увеличение толерантности к физической нагрузке менее 10% и отсутствие динамики показателей ЭхоКГ или их ухудшение.
Оценка безопасности и переносимости
В ходе исследования регистрировались все нежелательные явления с отметкой времени их развития, продолжительности, интенсивности, связи с лечением, исход.
Критерии оценки переносимости:
Хорошая - отсутствие побочных эффектов; Удовлетворительная - появление побочных эффектов легкой степени тяжести, кратковременных, проходящих после коррекции лечения; Плохая - появление побочных эффектов, требующих отмены препарата.
РЕЗУЛЬТАТЫ ИССЛЕДОВАНИЯ
Под наблюдением находилось 75 больных ИБС со стенокардией 1-Ш ФК в возрасте от 42 до 72 лет (средний возраст 57,4±7,3 года), мужчин - 43, женщин - 32.
Доза ОКСИКАРДИНА составляла 250 мг 3 раза в день сублингвально.
При недостаточной эффективности к концу 1-ой недели лечения дозу увеличивали до 375 мг 3 раза в день.
Все пациенты давали устное информированное согласие на участие в исследовании и выполнение его требований.
Изучение антиангинальной эффективности ОКСИКАРДИНА по дневникам самонаблюдения больных показало, что уже через 1 неделю терапии большинство пациентов отмечали значительное улучшение общего состояния, повышение работоспособности, появление бодрости, лучшую переносимость повседневных нагрузок, многие из них перестали "чувствовать сердце", "забыли о сердце". Большинство больных выразило желание продолжить лечение.
Через 1 неделю непрерывной терапии ОКСИКАРДИНОМ потребность в нитроглицерине снизилась на 52,2%, а через 4 недели - на 63,7%.
При приеме ОКСИКАРДИНА сублингвально для купирования приступа стенокардии отмечена возможность купирования приступа при приеме одномоментно 10 пеллет, но скорость купированна была ниже, чем при приеме нитроглицерина. В то же время действие ОКСИКАРДИНА было более мягким, не сопровоящалось головной болью.
Результаты ВЭТ дают объективное подтверждение высокой антиангинальной и антиишемической эффективность ОКСИКАРДИНА.
К концу 1-ой недели лечения отмечена тенденция к увеличению пороговой мощности нагрузки и объема работы. Продолжительность нагрузки возросла на 23,4%, степень депрессии сегмента ST уменьшилась на 41,5%.
К концу 4-ой недели непрерывного лечения ОКСИКАРДИНом
пороговая мощность нагрузки достоверно возросла на 26,3% (р < 0,01), общий объем выполненной работы увеличился на 49,6% (р < 0,01), продолжительность нагрузки возросла на 32,5% (р < 0,05). степень депрессии сегмента 5Т уменьшилась на 34,0% (р < 0,05). период восстановления ЭКГ сократился на 13,5% (р > 0,05).
По данным суточного мониторирования ЭКГ через 4 недели лечения количество эпизодов депрессии сегмента ST уменьшилось на 75,4%.
В целом, хорошая антиангинальная и антиишемическая эффективность ОКСИКАРДИНА у больных ИБС, стенокардией напряжения 1-Ш ФК составила 67,8%.
В процессе непрерывного 4 недельного лечения ОКСИКАРДИНОМ не было обнаружено существенных изменений средних значений ЧСС, САД и ДАД. Это делает возможным применение ОКСИКАРДИНА у пациентов как с высоким, так и с низким артериальным давлением.
Индивидуальный анализ показал, что у 6 больных в конце 1-ой недели приема ОКСИКАРДИНА ЧСС увеличивалась на 15-20 ударов в минуту, однако к концу 4-ой недели степень прироста ЧСС уменьшилась и составила 4-6 ударов в минуту.
По данным ЭхоКГ достоверных изменений показателей сократительной функции миокарда левого желудочка под влиянием ОКСИКАРДИНА отмечено не было, но имелась тенденция к уменьшению его объемов в систолу и диастолу.
При сублингвальном приеме препарата у 9 больных (12,0%) отмечено возникновение следующих побочных эффектов:
явления стоматита на второй день приема, прошедшие после отмены препарата через 3 дня. Возобновление приема ОКСИКАРДИНА вновь вызвало аналогичные явления в ротовой полости (1 случай), сухость во рту и заложенность носа (1 случай); тошнота (1 случай); учащение перебоев в работе сердца, со слов больной, которое не подтвердилось объективными данными при проведении ВЭТ в конце исследования (1 случай); головная боль и головокружение через 30 минут после каждого приема препарата (1 случай); незначительное возбуждение, приводящее к затруднению засыпания (3 случая); небольшое повышение АД (1 случай).
Возникшие нежелательные явления проходили при переходе на пероральный прием ОКСИКАРДИНА или после уменьшения дозы до 5 пеллет на прием и ни в одном случае не потребовали досрочного прекращения лечения.
Таким образом, хорошая переносимость ОКСИКАРДИНА отмечена у 66 больных (88,0%), удовлетворительная - у 9 (12,0%).
ЗАКЛЮЧЕНИЕ
Терапевтическая эффективность ОКСИКАРДИНА составила в целом 67,5% (58,0% при монотерапии и 76,9% при сочетании ОКСИКАРДИНА с нитратами пролонгированного действия).
Побочные эффекты отмечены в 12,0% случаев при сублингвальном приеме и не возникали при пероральном приеме ОКСИКАРДИНА.
ОКСИКАРДИН (фирма «Тяньшили Групп», КНР) может быть рекомендован для широкого медицинского применения в качестве антиангинального и антиишемического средства при лечении больных ИБС со стенокардией напряжения 1-Ш ФК в виде монотерапии или в комбинации с другими препаратами.
Как починить hewlett packard
Допустим, у вас есть Hewlett Packard SureStore 7200. Это такой внутренний пишущий дисковод CD (он же - CD-recorder, CD-writer) для IDE-интерфейса, способный работать как с CD-R, так и с CD-RW. Старенький. Служит вам честно больше двух лет. Отливает в золоте плоды вашего творчества. Любуетесь вы, как растет стопка архивных дисков, и теплеет на душе: не пропадет ваш скорбный труд, а достанется истории в целости и сохранности.
Впрочем, если у вас есть что-нибудь другое от того же производителя, принтер там или даже компьютер, тоже неплохо. Много разной полезной техники производит Hewlett Packard. Бранднэйм - он и есть бранднэйм.
И вот пишете вы как-то раз очередной свой золотой диск, и случается с вами то, чего больше всего боятся все владельцы пишущих сидюков: выскакивает buffer underrun.
Маленькое техническое пояснение. Технология записи компакт-дисков такова, что данные на запись обязательно должны поступать непрерывным потоком. Это очень просто понять, если представить себе, как бежит луч пишущего лазера по записываемому слою вращающегося диска-матрицы, прочерчивая на нем спиральную дорожку, от центра к периферии. Позиционирование осуществляется простым перемещением луча вдоль радиуса диска. Приостановиться, вернуться назад, попытаться повторить запись невозможно - это вам не винчестер, где есть разметка секторов, позволяющая точно позиционировать необходимый блок информации. Любое нарушение в потоке записываемой информации ведет к краху процесса записи и безвозвратной порче матрицы (если, конечно, это одноразовый CD-R, а не многоразовый CD-RW).
Для обеспечения непрерывности потока записываемых данных внутри пишущего дисковода имеется специальный буфер памяти (в вашем случае - 768 Кбайт). Данные в него подгружаются порциями, по мере необходимости, из внешнего источника через дисковый интерфейс IDE, а считываются непрерывно, в темпе записи на диск. Естественно, главной заботой всей системы в течение всего процесса записи должно быть поддержание буфера в наполненном состоянии. Если буфер в какой-то момент хотя бы на мгновение окажется пуст - запись прервется со всеми вытекающими печальными последствиями. Это и есть та самая ситуация, которая называется buffer underrun.
Обычная причина опустошения буфера - это недостаточность скорости источника данных. Допустим, вы пишете компакт-диск на двухкратной скорости, что означает, что необходимо обеспечить скорость входного потока данных 300 Кбайт/с. А в качестве источника выбрали старенький сидишник от Panasonic тоже с двухкратной скоростью чтения. Казалось бы, все получается. Ан нет. Вы забыли, что при чтении компакт-дисков довольно часто возникают ошибки, для устранения которых дисковод-источник пытается считать информацию оригинала повторно, для чего, в свою очередь, долго позиционирует читающий луч. Пока он этим занимается, буфер пишущего дисковода неумолимо опустошается, и в конце концов все заканчивается катастрофой. То же самое следует ожидать в случае, когда источник вы выбрали подходящий (например, винчестер), но при этом загрузили систему какой-нибудь параллельной работой. Пишущий дисковод, например, чувствует, что пора бы подгрузить буфер, обращается к системе, а она в это время занята расчетом зарплаты вашего соседа за прошлый год с целью проверки обоснованности покупки им подержанной "копейки". И амба.
Для того чтобы оценить, насколько подходит предполагаемый источник данных для записи на CD, имеются разные средства. Например, в поставляемом с дисководом приложении Adaptec Easy CD Creator их два: тест Transfer rate и тест, имитирующий запись. Первый служит для предварительной оценки пригодности источника данных и представляет собой замер скорости поступления данных при чтении некоторого тестового количества файлов. При этом отдельно оценивается скорость при чтении маленьких и при чтении больших файлов. Первая обычно несколько меньше, чем вторая, потому что маленькие файлы требуют дополнительных накладных расходов файловой системы на позиционирование головок дисководов. Выполнять тест Transfer rate следует нечасто. Обычно достаточно сделать это один раз для каждого из потенциальных источников данных. Желательно, чтобы скорость источника данных как минимум в два раза превышала скорость записи. Имея, например, пишущий дисковод с четырехкратной скоростью записи (600 Кбайт/с), вам придется быть готовым к проблемам, если вы используете в качестве источника старенький винчестер с оценкой по тесту Transfer rate что-нибудь около 1000 Кбайт/с. А вот используя более современный винчестер с 3000 Кбайт/с и более, вы можете чувствовать себя более-менее спокойно.
Не забывайте только еще об одном обстоятельстве. Некоторые винчестеры, давая в целом очень неплохие характеристики по тесту Transfer rate, имеют привычку время от времени задумываться о чем-то своем, сокровенном. В частности, грешат этим некоторые модели от Maxtor. О том, что вам попался именно такой задумчивый винт, вы, возможно, догадаетесь по куче испорченных матриц.
Второй тест следует выполнять каждый раз перед записью. Он, по идее, заключается в имитации процесса реальной записи реального набора ваших данных, за тем небольшим исключением, что при этом не включается пишущий лазер. (Сказано "по идее" потому, что практика показала, что это не совсем так. Но об этом ниже.) Нормальное пишущее приложение, вроде уже упомянутого Adaptec Easy CD Creator, по умолчанию предлагает вам именно такую комбинацию: тест, а потом запись. И это правильно, потому что скорость потока данных очень сильно зависит от того, что этот поток собой представляет: то ли один файл размером 100 Мбайт, то ли 100000 файлов по 1 Кбайт. В последнем случае даже на быстром винчестере можно запросто столкнуться с ужасным buffer underrun'ом.
Резюмируя сказанное, следует дать несколько полезных советов:
запуская запись на компакт-диск, закройте все приложения и прекратите все работы с компьютером до самого момента ее завершения. При этом лучше вообще не дышать, особенно по утрам в понедельник исключите возможность автоматического запуска на вашем компьютере во время записи каких-либо процессов: хранителя экрана, энергосберегающих функций, планировщика задач и т.п. если компьютер включен в сеть и предоставляет пользователям свои ресурсы (принтер, диски) - запретите доступ пользователей запитайте компьютер от какого-нибудь UPS'а, особенно если имеете дело с нестабильной электросетью, что в условиях демократии - в порядке вещей используйте в качестве источника данных для записи самые быстрые устройства из имеющихся в вашем распоряжении обратите внимание, где ваше пишущее приложение собирается хранить временные файлы. Это устройство тоже должно быть быстрым обязательно тестируйте записываемые данные.
Однако вернемся к вашему Hewlett Packard SureStore 7200. Источником данных служил для него жесткий диск от Seagate. Имитирующее тестирование прошло нормально, что настроило вас на благодушный лад. И вдруг, записав чуть больше 5000 блоков, дисковод вываливается в buffer underrun! И просительно выдвинутый трей достаточно прозрачно намекает на предстоящие вам незапланированные траты…
Хорошо, что наученные предыдущим горьким опытом общения с неким угрюмым детищем фирмы Pinnacle еще в те времена, когда чистая золотая матрица стоила 10 баксов, вы, прежде чем дописывать на уже использованный диск новую сессию, предварительно сохранили все его предыдущее содержимое на винчестер. Иначе был бы безвозвратно утрачен труд двух предыдущих месяцев.
Поначалу вам показалось, что ничего особенно страшного не произошло. Ну запоролась матрица, эка невидаль. Возьмем другую. Сейчас их по доллару за штуку найти - не проблема. Но на всякий случай вы решили поэкспериментировать. Взяли перезаписываемый диск. И давай пытаться писать на него. Из пяти попыток три закончились крахом. Попробовали писать другие данные. Не помогло. Переинсталлировали софт. Тот же эффект. Вот именно на этом этапе вы ощутили некий неприятный холодок между лопаток.
Дальше пошли эксперименты с железом. Вскрыли брюхо компьютеру и, наигравшись с комбинациями Master-Slave, в конце концов отключили висящий на том же интерфейсе второй CD-ROM. Без толку. Вынули страдальца из этого компьютера и запихнули его в другой. На том очень кстати оказались проинсталлированы Windows 95 и NT4.0. Ничего не помогло. И только тут вы, наконец, сознались себе в том, что ваш любимый HP SureStore 7200 гавкнулся.
Что делать (как спрашивали друг друга Н.Г.Чернышевский и В.И.Ленин)? Естественно, чинить. Причем за деньги, потому что годовая гарантия давно истекла.
Вы лезете в Интернет, и без напряжения находите на каком-то сайте московский телефон технического центра Hewlett Packard: 797-3520. Звоните туда. Милый механический голос предлагаем вам нажать в тональном режиме кнопочку "1". Все еще надеясь на лучшее, вы выполняете указание и, бродя по виртуальному телефонному меню, в конце концов добиваетесь от механической барышни адреса центра: Спартаковская,16.
Кроме того, вы получаете возможность побеседовать с живой девушкой- оператором. На ваш лепет про buffer underrun, про проверку на двух компьютерах и на трех ОС и прочие ваши метания девушка отвечает, что сиди-райтеры они не чинят, но с удовольствием после тестирования заменят его вам целиком. Вы радостно прикидываете, сколько сэкономите, если получите новый, современный пишущий сидюк с вычетом стоимости почти исправного старого, и мчитесь через всю Москву на Бауманскую, в районе которой расположен ваш благодетель - техцентр Hewlett Packard. Оглушенный счастьем, вы при этом совершенно не обращаете внимания на интонацию, с которой любезная девушка произносила свои любезные слова. А ведь, задумавшись, вы могли бы без труда припомнить, что точно такую же интонацию вы слышали совсем недавно, не далее как в прошлую субботу, покупая на рынке черешню. На вопрос о том, есть ли в черешне червяки, здоровенная тетка отвечала: "Да нет, вроде," - как будто сама видела эту свою черешню в первый раз. И слово "нет" было произнесено с той самой интонацией.
Прибыв на место, вы долго бродите вокруг полуразвалившегося здания дореволюционной постройки, расположенного по адресу Спартаковская, 16, вызывая нездоровый интерес у толпы бауманских бомжей и охранников какого-то офиса без вывески, но зато с телекамерой. И только напрягши все свои умственные способности и еще раз созвонившись с любезной девушкой, вы наконец понимаете, что оказались на Спартаковской улице, а вам нужна Спартаковская площадь. Видно, здорово наследил древнеримский пугачев в Москве, если в его честь назвали и улицу, и площадь, и еще переулок.
Преодолев метров семьсот между Спартаковскими 16, вы, наконец, находите вожделенную синюю вывеску Hewlett Packard. Техцентр оказывается расположенным в современном деловом здании, инкрустированном ценными породами мрамора и, вероятно, евросантехникой. Порадовавшись за сотрудников техцентра, вы одновременно понимаете, что аренду этого архитектурного великолепия частично придется оплатить и вам.
И вы входите в прохладный кондиционированный сумрак обиталища отвертки и паяльника. Первое, что бросается в глаза прямо от входа - выгородка с надписью "Касса". Тут вы вспоминаете, что телефонный робот, разъясняя вам расписание работы техцентра, особо подробно, тщательно, со смаком, подавал расписание работы кассы. И еще почему-то вспоминаете червивую черешню.
Недалеко от кассы вы обнаруживаете несколько столов, за которыми удобно расположились несколько же симпатичных молодых людей мужского пола, на каждом из которых написано "Hewlett Packard". Решив, что именно эти люди заберут у вас сейчас ваш старый барахлящий сидюк и вынесут из недр своего волшебного замка новый, прекрасный, перевязанный синей ленточкой, вы мчитесь прямо к ним. Правда, молодые люди оказываются несколько заняты с уже сидящими перед ними клиентами, и вам приходится ждать, в отсутствии свободного стула переминаясь с ноги на ногу и прислушиваясь к разговорам.
Один из молодых людей беседует с клиенткой - дамой среднего возраста из числа тех, на которых держится любая организация. Дама нервно гоняет по столу образцы печати струйного принтера и пытается втолковать своему визави, что конкретно не устраивает ее в цветопередаче. Видно, что молодой человек страшно озадачен, потому что он молча берет в руки то один листок, то другой, так и сяк рассматривает их и кладет обратно. Этим он продолжает заниматься все оставшееся время вашего пребывания в техцентре.
Другой молодой человек уже заканчивает беседовать с клиентом. Окончание беседы еще более укрепляет ваши подозрения, потому что представляет собой заполнение каких-то бумажек с многими графами и проставление каких-то росписей. И вы опять понимаете, что речь идет о деньгах.
Наконец последняя роспись проставлена, и молодой человек обращает свое благосклонное внимание на вас. Вы усаживаетесь перед ним и изливаете свои жалобы, подпихивая в сторону молодого человека железного виновника своих несчастий. Но молодому человеку не нужен ваш дисковод. Он даже не смотрит в его сторону. Он внимательно смотрит на вас и спрашивает: "Но вы знаете, что это будет стоить дорого?" Вы спрашиваете: "Сколько?", думая при этом про себя: "А-а-а, черт с ней, с сотней баксов!" Но молодой человек не торопится отвечать на ваш глупый вопрос. Он долго щелкает клавишами компьютера, объясняя вам при этом ваши права, как будто он никакой не приемщик в радиомастерской, а настоящий американский коп. Он говорит вам, что сначала они возьмут у вас дисковод на тестирование. И если окажется, что он действительно неисправен, то они будут иметь с вами дальнейший разговор. А если он окажется исправен, то вернут они его вам только взамен шестидесяти баксов. За беспокойство, надо понимать, потому что за шестьдесят баксов можно протестировать не то что дисковод, а целый "Мерседес", и еще на "Жигули" останется. Но вот если дисковод действительно окажется неисправен (а это скорее всего так, говорит молодой человек, уверенный в технике своей фирмы), то вы сэкономите эти самые шестьдесят баксов, потому что тогда у вас никто их не возьмет. Тогда вам предложат замену с трехмесячной гарантией. И эта замена будет стоить… Будет стоить эта замена… Замена эта стоить будет… Стоить замена будет эта… Триста двенадцать долларов двадцать центов.
"Спасибо," - говорите вы, укладываете железяку в бесполезный антистатический пакет, прячете пакет в чемодан и позорно ретируетесь из техцентра, бросая на поле боя погибших и добивая раненых.
Дома вы снова залазите в Интернет, к Павло Дзиковскому, и обнаруживаете, что по всей Москве продается четырехскоростной HP SureStore 8250, и красная цена ему - 200 долларов. И в тот же день вы едете в давно уважаемую вами фирму НАК, что в Лебяжьем переулке, в ста шагах от кремлевской стены, и покупаете там новый прекрасный дисковод, даже дешевле среднестатистической. Естественно, этот самый, от Hewlett Packard. А как же иначе: бранднэйм - он и есть бранднэйм.
Классификация информации
Очевидно, что вся информация, доступная человечеству к началу третьего тысячелетия от Р.Х., делится на три больших класса:
информация об ассемблере информация, так или иначе касающаяся ассемблера информация, никоим образом не касающаяся ассемблера
Чрезвычайно интересно, не останавливаясь на семантическом уровне приведенной выше классификации, проследить деривационные, и, не побоюсь этого слова, педигриальные свойства генезиса каждого из ее разделов. Ибо естественно, что прямо из этих коренных свойств проистекают качественные характеристики текущего состояния информации соответствующего класса.
Начнем, с информации класса (c), на сегодняшний день наименее структурированной и упорядоченной. Как показывают многочисленные исследования (см., например, фундаментальный труд проф.М.Л.Кнопковича "Эпидемия ящура в Саратовской губернии в 1903 году"), самым значимым источником этой информации во Вселенной является неживая природа. Основной объем т.н. c-информации образовался одновременно со Вселенной в момент Большого взрыва, и на всех последующих этапах ее жизни возрастал незначительно, одновременно подвергаясь постоянной энтропийной эрозии и, в силу этого, деградируя качественно.
Если ограничиться рамками планеты Земля, то в ее истории обнаруживаются два отчетливых генерационных всплеска c-информации. Первый произошел в третьей четверти мелового периода, на исходе мезозойской эры, и именно он, по результатам последних исследований, явился причиной гибели динозавров. (Здесь надо отметить, что, в отличие от Вселенной в целом, на Земле существенную роль в генерации c-информации играет присутствующая здесь живая природа.) Меловой с-всплеск, как выяснилось, объясняется чрезмерной плодовитостью динозавров в условиях благоприятного климата той эпохи. По нашим подсчетам, жившее тогда на Земле количество особей, имевших вес свыше полутора тонн, превышает 17 миллиардов. Что же говорить об их более легких собратьях! Каждый экземпляр динозавра имел до сорока только ближайших родственников, а число двоюродных достигало тысячи и более. Представляете, что творилось в период предрождественских распродаж? А дни рождения? А, наконец, 8 марта? Собственно, необходимость помнить все эти даты и породила тот невероятный объем c-информации, оказавшийся непосильным для слабого мозга пресмыкающихся, и, в конечном итоге, погубивший их.
Второй всплеск, как может догадаться читатель, происходит в современную эпоху, и виновником его является, к сожалению, человек. Длительное время казалось, что праздники и юбилеи не угрожают человечеству. Дело в том, что человек, более ментально продвинутый, чем динозавры, нашел мощное защитное средство против информационной угрозы такого рода. В ходе эволюции примерно половина человечества, впоследствии определившаяся как мужчины, ценой многих лишений выработала уникальное свойство забывать памятные даты своих родных и товарищей, благодаря чему угроза гибели человечества была отложена. Но, оказывается, не отведена вовсе! В один прекрасный момент на арену информационной борьбы выступил интернет, с его бессчетными download-серверами, и оказалось, что до сорока процентов их ресурсов отведено под многочисленные программы, главной целью которых является напоминание пользователю о необходимости поздравить одну или несколько особей с каким-либо праздником. С этого момента выживание человечества снова встало под вопрос. Но эта тема, к сожалению, не является предметом нашего нынешнего исследования.
Информация класса (b) несколько более цивилизованна, если можно так выразиться, так как основным ее источником является разумное человечество, а точнее, его наиболее передовая часть, называемая "корпорация Microsoft". Значительно меньший b-объем генерируется рядом других корпораций, фирм и физических лиц. B-информация существенно более качественна, чем c-информация, имеет приятную сметанообразную консистенцию и оригинальный привлекательный аромат, легко и полностью усваивается организмом, особенно со второй попытки.
И именно в этом состоит ее опасность. До появления корпорации Microsoft человечество было вынуждено довольствоваться в основном грубой и плохо переваривавшейся c-информацией. Но c-информация хорошо очищала зубы от отложений зубного камня, держала в тонусе кишечник, стимулировала выработку слюны и желудочного сока. Массовая замена ее на b-информацию привела к катастрофическому зашлаковыванию организмов, ослаблению деятельности эндокринных желез и, как следствие, общему снижению стойкости организма к болезнетворным микробам и вирусам. Наиболее яркий пример последствий появления корпорации Microsoft - это пандемия СПИДа. На этом, пожалуй, можно остановиться в описании опасностей b-информации. Употребленная в разумных пределах она, как и все остальное, полезна, поэтому мы с удовольствием включаем ее в наши статьи.
И, наконец, информация класса (a). Наивысшая, без сомнения, категория информации. Недаром столько благородных a-созвучий находим мы вокруг себя. "А-а-а", - первый крик ребенка и последний крик выпавшего из окна. На "а" начинается слово "ассемблер", причем как в русском, так и в английском языке. Самые уважаемые и богатые люди в нашей стране называются "чиновники категории А". Впрочем, довольно примеров. Перейдем к сути. A-информация - это концентрированный интеллект, порожденный высшими проявлениями разума, свободного от забот о бренном теле. Строжайшая аскеза, беспримерный добровольный отказ не то что от наследования виртуальных функций, но даже и от элементарных фигурных скобок, порождают в итоге информацию класса А. Читайте a-статьи! Получайте a-знания! Программируйте a-программы! Ур-а!
В заключение - историческая справка. Пожалуй, первым зафиксированным в истории генератором информации класса (a) (он же - "настоящий ассемблерщик") был популярный древнегреческий философ Диоген. (Кстати, именно поэтому традиционно самая высококачественная информация класса (a) хранится в бочках. Хотя и из бутылок она тоже бывает неплоха.)
Эстафету у Диогена переняли старцы Оптиной пустыни и Валаама. Впоследствии, правда, с победой Советской власти, секреты старчества и аскезы были утрачены, сменившись роскошью и процветанием докоммунистического общества. Последний достоверный факт старчества зафиксирован историками И.Ильфом и Е.Петровым в известной монографии "Золотой теленок". С тех пор, казалось, ассемблер и связанная с ним a-культура больше не возродится. Отрадно видеть, что мы ошиблись в своих пессимистических прогнозах. Подтверждение тому - сайт assembler.ru и его посетители.
Можно ли зарабатывать на жизнь shareware?
Date: | 4-15 ноября 1999 | |||||
Newsgroup: | alt.comp.shareware.programmer | |||||
Subject: | Is it really possiable to make a living writing shareware? В самом ли деле можно зарабатывать на жизнь, разрабатывая shareware? |
|||||
Участвуют: | Keluna Gerry Quinn Matt piddy Peter Tiemann Scott Kane <MSA> Alun Jones | DemonAlleyCat@email.msn.com gerryq@indigo.ie mharp@one.net sar@atinn.net peter@preview.org manager@micronexus.com.au alun@texis.com | Indigo OneNet Communications News Hub Range bCandid - Powering the world's discussions Interpacket Group Inc. Texas Imperial Software |
if(dhtml){document.write(" Все сообщения: [+][-] Открывать: [несколько]");}
[+] KelunaВ Subject все сказано...
Alan [+] Gerry QuinnДа, и некоторые люди делают это. Однако подавляющее большинство shareware-авторов - не делает.
Я представляю собой в настоящее время довольно существенное исключение, так как собираюсь получить в этом году около $20000. Главным образом - от уже лицензированных версий, нежели от новых продаж.
Gerry Quinn http://bindweed.com
Puzzle / Strategy Games and Kaleidoscope for Windows Бесплатные пробные версии, без ограничения по времени
[+] MattПривет,
хорошо, но теперь у меня несколько вопросов
Итак, для $20K в год, сколько времени вы тратите в среднем в неделю, работая над shareware-проектами?
Кроме того, как долго вы работаете на рынке shareware?
-Matt [+] Gerry QuinnЧестно говоря, не так уж и много в настоящее время!
По-настоящему я начал работать в прошлом году, однако до этого я много лет писал игры в качестве хобби без какой-либо выгоды.
Gerry Quinn [+] piddyНет. [+] Peter TiemannВсе относительно... Я думаю, вполне реально предполагать, что проект shareware с одним программистом может дать вам $10К - $30К в год.
Сможете ли вы жить на эти деньги - другой вопрос.
Я не смогу. Но с другой стороны, если вы живете в Мексике или Индии, вы не только жили бы на эти деньги, но вы были бы БОГАТЫ!
-- regards, Peter Delphi Components & Reviews на http://www.delphifaq.com
[+] Scott Kane <MSA>Все сводится к природе shareware. Это просто способ маркетинга, а не тип программного обеспечения. Поэтому - компания имеет право (и должна) сочетать его с другими методами продвижения.
Scott Kane MicroNexus Software Australia
Moderator comp.software.shareware.* Team Nevrona Member
Member - Oz-Dev Australia
[+] Alun JonesЭто довольно легко выяснить, если ответить на вопрос: можно ли зарабатывать на жизнь написанием книг.
Несомненно, можно, и вам наверняка известны люди, которые это делают. Это хорошая новость. Однако маловероятно, что любой выбранный наугад автор зарабатывает на жизнь только этим.
Лично я и моя жена действительно зарабатываем на жизнь продажей нашего shareware FTP-сервера. Кроме того, в будущем мы даже надеемся несколько расширить наш бизнес.
Однако, мы не зарабатывали на жизнь (и в некоторых случаях вообще ничего не получаем) от ранее выпущенного shareware.
Не существует никакого другого способа выяснить, можете ли именно ВЫ зарабатывать на жизнь разработкой shareware, кроме как писать shareware и затем пробовать зарабатывать с его помощью. И это путь со слишком большим количеством неизвестных.
Alun. ~~~~ Texas Imperial Software | Try WFTPD, the Windows FTP Server. Find it 1602 Harvest Moon Place | at web site http://www.wftpd.com or email Cedar Park TX 78613 | us at alun@texis.com. VISA / MC accepted. Fax +1 (512) 378 3246 | NT based ISPs, be sure to read details of Phone +1 (512) 378 3246 | WFTPD Pro, NT service version - $100. *WFTPD and WFTPD Pro now available as native Alpha versions for NT*
openall(false);
Приведенное выше обсуждение содержит мнения людей, позиционированных вне Рунета. Резюмировать их (с учетом дополнительной информации, которой предостаточно) можно примерно так:
Обычная норма годового дохода для рядового, не хватающего звезд с неба, программиста shareware лежит в пределах $10000...$30000. Это чаще всего меньше самооценки программиста - резидента развитой страны. Но для остальных, в том числе русских - эти числа обычно воспринимаются в интервале от "здорово" до "ого-го". В отличие от стабильного дохода программиста, работающего на постоянной основе, доход от shareware имеет большое сходство с азартными играми, мытьем золота и поиском грибов. То есть можно не иметь ничего, а можно и сорвать куш (нарваться на самородок, найти белый). И сильно выйти за пределы, указанные в п.1, причем как в ту, так и в другую сторону.
Более развернутое обсуждение заглавной темы, а также прочих многочисленных аспектов этого благородного занятия современных вильгельмовтеллей можно найти в конференциях Usenet на английском языке:
alt.comp.shareware - реклама, релизы сайтов и серверов, анонсы и аннотации программ. Активность до 10 сообщений в сутки. alt.comp.shareware.authors - реклама, обсуждение вопросов маркетинга и технологии. Активность до 5 сообщений в сутки. Содержательность невелика. comp.software.shareware.announce - анонсы программ. До 5 сообщений в сутки. Модерируемая. comp.software.shareware.authors - маркетинг и технология. До 10 сообщений в сутки. Модерируемая. Содержительность довольно высока, много развернутых обсуждений. comp.software.shareware.users - активность крайне низкая, интереса не представляет.
До недавнего времени в некоторых из перечисленных конференций бушевали страсти, и активность достигала многих десятков сообщений в сутки. Виной тому была некая личность по имени Дорен Розенталь (Doren Rosenthal), владелец Rosenthal Engineering (San Luis Obispo, CA USA) и большой апологет ASP (Association of Shareware Professionals), который устраивал дикие флеймовые разборки. Однако в последнее время его присутствия в коференциях незаметно. Есть подозрение, что кто-то из его собеседников добрался-таки до него в оффлайне.
Существует еще некоторое количество конференций, в названиях которых присутствует слово "shareware":
alt.binaries.dominion.shareware alt.binaries.shareware alt.binaries.shareware.ibm.pc alt.comp.shareware.for-kids alt.comp.shareware.nettamer alt.no-advertising.files.shareware.win-95 alt.no-advertising.files.shareware.win-95.apps de.comp.shareware.entwicklung de.comp.shareware.misc fido.ger.shareware fido.shareware-ger it.comp.software.shareware tw.bbs.comp.shareware |
Что касается русскоязычных ресурсов, посвященных shareware, то самым ценным является Shareware Russia. Кроме статей по теме (в том числе "эпохальной" статьи Александра Каталова "Искусство shareware", вышедшей в 1998 году в Компьютерре), здесь имеется несколько mail-листов, организованных через сервис eGroups:
общие вопросы
вопросы программирования
вопросы веб-дизайна и хостинга
прочие темы
Общая активность в этих листах рассылки - более сотни сообщений в сутки. Обсуждаются практически все темы, так или иначе связанные с shareware, в том числе:
средства и технологии разработки программ конкретные программные решения, в том числе средства обеспечения регистрации и защита платежные средства и их применение для приема платежей shareware организация бизнеса, регистрация предприятий, оптимизация налогов, оффшоры и пр. сетевые сервисы для shareware: регистраторы, хостинг, download, платежи и т.д. борьба с крекерством и пр.
На сайте также имеется подборка ссылок на ресурсы Интернет, посвященные shareware и сервисы для шароварщиков.
О пользе монополий
Итак, Microsoft снова, теперь уже окончательно и бесповоротно, признана монополистом. 3 апреля 2000 года некто Томас Джэксон, федеральный окружной судья, про которого до сего дня никто дальше родной вашингтонщины не слыхивал, тронул святое. И добро бы по делу!
Допустим, собрались бы лидеры нации и решили, что Microsoft малость перебрала с ролью в мировой истории. Статьи в законе про это не подберешь, но, поскольку случай, мягко говоря, неординарный, можно на худой конец и 28-ю поправку к конституции принять: "Всякий Карфаген обязан быть разрушен". Бывало, и по куда более мелким поводам поправки принимали. Устроили бы сенатские слушания, побазарили - да и приняли. Все умные люди поняли бы и согласились.
Так ведь нет же! Вместо того чтобы решать проблему по существу, лицемерно подобрали повод. Повод, надо признать, довольно сомнительный.
Имела ли право Microsoft встраивать Explorer в Windows? То есть было ли встраивание монополистическим актом, направленным на ущемление прав конкурентов, или могло быть объяснено иными, более благородными соображениями? Давайте обсудим серьезно, не сбиваясь на панегирики или филиппики.
Вспомним не столь далекие годы, когда в прохладных машинных залах паслись стайки милых, как на подбор, девушек-операторов, день и ночь скармливавших ревущим считывателям колоды перфокарт. В то дремучее благословенное время IBM взяла, да и зарегистрировала торговую марку DOS, ибо появились магнитные накопители. А буква D, между прочим, в той ТМ была от слова "дисковая". Потому что тогда настала такая пора. Уходили в прошлое дырочки в бумаге, им на смену приходили магнитные домены. И дисковая подсистема становилась неотъемлемой частью ОС. Дело дошло до того, что некоторые решили, будто ДОС - это и есть ОС, а все остальное, пользовательский интерфейс, например - это нашлепки. Во всяком случае, представить себе современную ОС без встроенной файловой системы (дисковой в первую очередь, конечно же) можно только при наличии очень извращенного воображения (о сетевых ОС читай дальше).
Сегодня мы на другом, далеком витке, но все той же самой диалектической спирали. Наступает новая реальность: компьютеры сливаются в глобальный информационный континуум. Уходят в прошлое локальные ресурсы, приходят распределенные.
Это, конечно же, не значит, что локальные ресурсы когда-нибудь вымрут, как перфокарты, но они перестанут быть основой операционной среды.
Хотим мы того, или не хотим, но операционная среда каждого компьютера станет частью единой планетарной операционной среды. У этого процесса на сегодняшний день есть всего два серьезных препятствия: каналы связи и защита конфиденциальности. Серьезных, но не непреодолимых, так что ожидаемое слияние не так уж далеко.
Операционная система обязана ответить вызову времени. Не просто иметь встроенные сетевые средства, а гораздо более того: жизнь в сети должна стать ее сутью. И было бы странно, если бы пользовательский интерфейс, вторая неотъемлемая и главнейшая часть современной ОС, остался бы в стороне от этих перемен.
А ведь именно броузер - зачаточный, но, безусловно, базовый элемент, из которого в будущем должен вырасти пользовательский интерфейс интегрированной в мировую сеть ОС. И Microsoft неторопливо, но совершенно недвусмысленно двигалась по этому пути.
Первым шатающимся шагом на нем, как все помнят, был ублюдочный стиль веб в проводнике-95.
С точки зрения изложенного судебное решение о неправомерности интеграции броузера в ОС представляется как минимум некомпетентным, а называя вещи своими именами - бездарным и вредоносным.
Поговорим о более общих вещах.
Так ли уж негативен монополизм Microsoft?
В чем, собственно, состоит основной вред монополизма для общества? Отнюдь не в уничтожении соперников нечестными приемами: это с успехом проделывается и в немонопольных ситуациях (см. популярную передачу "Дорожный патруль", там через день во всех подробностях показывают аккуратно продырявленные головы предпринимателей). Главный вред монополизма - в угнетении общественного прогресса. Монополия не дает возникать и развиваться альтернативным решениям встающих перед обществом задач. Общество теряет выбор. А вместе с ним теряет потенциал выживания.
Кто не верит - см. вокруг себя. Стены вашего подъезда несут на себе письмена измученных подростковой гиперсексуальностью прыщавых юношей потому, что у вас в районе единственное ЖЭУ, и вам некому, кроме него, отнести свои денежки. И в телефоне вашем, срывая коннект, тарахтят наборные импульсы всей округи, потому что на сто окрестных домов у вас один-единственный "телефонный оператор" (взято в кавычки преднамеренно). И в стране вашей зарплата дворника зависит от решений стран-участников ОПЕК, потому что термин "естественная монополия" для вас почему-то более приемлем, чем, скажем, "дойный козел".
Несла ли Microsoft вред монополизма? Нет, нет, и еще раз нет. Наоборот! И это действительно уникальная ситуация. Наверное, ее можно объяснить только невероятным сочетанием личностных особенностей ее лидеров с особенностями материала, живого и бешено растущего, с которым они работали. И только этим сочетанием объясняются фантастические достижения корпорации.
(Джобс, между прочим, при тех же, а то и более благоприятных, условиях, с ситуацией не справился).
Microsoft, идеально эффективно используя для бутстрэпа свои гигантские интеллектуальные и финансовые ресурсы, перла вперед сама и тащила за собой весь технологический мир. И если она вламывалась на уже занятый кем-то рынок, то не ради подавления конкурентов, а принося с собой лучший продукт. И если перекупала у кого-то мозги, то не ради того, чтобы обескровить противника, а для предоставления талантам условий, позволявших реализоваться гораздо лучше, чем на старом месте.
Даже естественная для всякого нормального человека ненависть к чужому успеху в случае Microsoft была плодотворна. На этой ненависти выросли не только фирмы - целые отрасли и даже концепции. Чего стоит одна только идея независимого программирования, которая без Microsoft вряд ли бы заинтересовала хоть кого-нибудь, кроме десятка чудаков - социалистов.
И это фантастическое время уходит. Просто потому, что оно обязательно должно уйти. Природа не терпит ситуаций, когда выживание вида ставится в зависимость от одного конкретного фактора. А Microsoft объективно все более претендовала на роль такого фактора. Корпорация изменила мир - и мир изменился. Без Microsoft он не станет лучше или хуже. Пройдет несколько лет, и он просто станет другим.
Но все мы немножко будем скучать по детству, правда?
Итак, на вопрос, является ли компания Microsoft монополистом в классическом понимании этого слова, следует ответить: нет. На вопрос, подлежит ли компания Microsoft разделению, следует ответить: безусловно, да. И объяснить людям - почему. Так и для NASDAQ будет спокойнее, глядишь - еще и вырастет. Потому что биржевые индексы бесятся в условиях неуверенности инвесторов, а в условиях разумной прозрачной политики либо остаются стабильны, либо растут.
Описание препарата оксикардин
Препарат Cardiotonic Pills (торговое название "Оксикардин") производства фармацевтической компании "Тяньшили Груп" (КНР) - это сердечно-сосудистый антиангинальный препарат, применяемый для лечения стенокардии. Здесь публикуется Описание препарата "Оксикардин" (Oxycardin).
Предупреждение. Настоящая публикация не является ни официальной, ни рекламной. Текст документа получен из неофициального источника. Достоверность документа перед публикацией не проверялась. Сведений о том, где и каким образом можно получить официальную версию документа, мы не предоставляем. Также мы не предоставляем сведений о том, где и каким образом можно приобрести препарат.
Единственной целью публикации является предоставление информации, содержащейся в документе всем, кому эта информация может понадобиться. (Именно такая проблема однажды встала перед нами, и все поиски в Интернет оказались безуспешны.)
См.также:
Описание внешнего вида и содержание листовки препарата Cardiotonic Pills
Инструкция по медицинскому применению препарата "Оксикардин"
Отчет об изучении клинической эффективности и безопасности препарата "Оксикардин"
Tianjin Tianshili Pharmaceutical Group Co. Ltd.
60 Huangwei Road, Hebei District, Tianjin, China. Post Code: 300142
Tel.: 022-26264418, 26286379 Fax: 022-26264418, 26359109
http://WWW.TIANSHILI.COM.CN e-mail: TRADE@TIANSHILI.COM.CN------------------------------------------------------------------------------------------------------------------------
Представительство в Москве: Тел/факс: 095-5827309, Тел.:095-4001902
Торговое название - "Оксикардин" (Oxycardin)
Фармакологические свойства
"Оксикардин" является антиангинальным лекарственным средством растительного происхождения комплексного действия, применяемого для предупреждения приступов стенокардии, уменьшения их количества и интенсивности при хронической коронарной недостаточности как в монотерапии, так и в комплексной терапии с другими антиангинальными средствами.
Препарат "Оксикардин" является новой лекарственной формой, изготавливается по новой технологии путем экстрагирования эффективных растительных составов. Результаты клинического исследования больных коронарной болезнью сердца и стенокардией доказали, что эффективность лечения препаратом высокая и равна 95,3%. После приема "Оксикардина" облегчаются или исчезают симптомы стенокардии, стеснение в груди, сердцебиение, одышка и прочие недомогания облегчаются быстро и явно.
Клинический эффект показывает, что данный препарат имеет сильное действие расширения коронарных кровеносных сосудов, увеличения коронарного кровотока, снижения потребления кислорода миокарда, уменьшает размеры ишемического поражения. Результаты современного исследования фармакологии показывают, что препарат тормозит перекисное окисление липидов. Обладает антиоксидантными свойствами.
Важной особенностью является способность тормозить агрегацию тромбоцитов и препятствовать образованию тромбов в крови. Препарат "Оксикардин" быстро всасывается слизистыми оболочками, при сублингвальном применении он почти сразу оказывает эффект.
В связи со сложным составом препарата и его комплексным воздействием, совмещающего в себе свойства как быстрого, так и пролонгированного действия, препарат может применяться как для длительной профилактики приступов стенокардии, так и для облегчения острых приступов и уменьшения их количества.
Эффективность препарата в сравнении с нитроглицерином приведена в таблице:
Облегчение болевого синдрома |
Группа "Оксикардин" |
Контрольная группа Нитроглицерин |
||
Время, мин. | Количество случаев | % | Количество случаев | % |
1-5 | 11 | 36,7 | 17 | 56,7 |
6-10 | 14 | 46,7 | 12 | 40,0 |
11-15 | 5 | 16,7 | 1 | 3,3 |
Итого: | 30 | 100,0 | 30 | 100,0 |
Сравнительная эффективность препарата
с другими антиангинальными лекарственными средствами
В клиниках разных городов Китая были проведены широкомасштабные клинические испытания препарата "Оксикардин" для лечения хронической коронарной недостаточности и стенокардии различного типа. Исследования проводились как с группами сравнения, где использовались другие антиангинальные лекарственные средства, так и открытые испытания - без групп сравнения. Результаты испытаний приведены в таблице
Группа "Оксикардин" | Группа сравнения Антиангинальные препараты | ||||||
Кол. случаев, чел. |
Клинич. эффект. % |
Улучш. ЭКГ % |
Название препарата | Кол. случаев, чел. |
Клинич. эффект. % |
Улучш. ЭКГ % |
|
910 | 94,0 | 67,1 | Изозорбид динитрат | 763 | 77,6 | 49,3 | |
189 | 92,0 | 51,0 | Нитроглицерин | 117 | 94,6 | 52,0 | |
46 | 95,7 | 76,1 | Нифедилин | 32 | 75 | 43,8 | |
1258 | 95,4 | 56,0 | Сложн.таб.Даньшеня | 746 | 74,6 | 39,0 | |
Итого | 2403 | 91,28 | 60,98 | - | 1658 | 78,25 | 44,61 |
995 | 89,91 | 59,73 | Без препарата сравнения | - | - | - | |
Итого | 3398 | 95,30 | 60,36 | 1658 | 78,25 | 44,61 |
Общие клинические исследования
Для клинических исследований было отобрано 157 больных хронической коронарной недостаточностью, стенокардией разного функционального класса. Все больные были поделены на 2 группы. Группа, принимающая "Оксикардин" -107 больных и группа сравнения -50 больных. Кроме того, в группу, принимающую "Оксикардин", были включены 22 больных стенокардией на фоне перенесенного инфаркта миокарда, 16 больных стенокардией и нарушением углеводного обмена, 38 больныхстенокардией и гипертонией.
Все больные группы "Оксикардин" и группы сравнения прошли общепринятые лабораторные исследования крови и мочи до и после приема препаратов, проводилось наблюдение за артериальным давлением, числом ударов сердца, режим работы сердечной мышцы регистрировался 12 канальной электрокардиограммой. Проводилось измерение в крови холестерина и триглицерида. Велось наблюдение за состоянием печени. Ежесуточное наблюдение велось за изменением симптомов стенокардии, числом приступов, состоянием пульса, картиной языка.
Прием препарата "Оксикардин" осуществлялся сублингвально по 10 штук 3 раза в день.
В группе сравнения осуществлялся прием другого антиангинального препарата растительного происхождения - сложные таблетки даньшэня. Кроме того, в обеих группах проводилось комплексная терапия с применением антиангинального препарата изозорбида динитрата (Isosorbide dinitrate). В 27 случаях при нестабильной стенокардии использовался только препарат "Оксикардин".
Эффективность лечения оценивалась следующим образом:
Заметно эффективный результат: сокращение числа приступов более, чем на 80%, уменьшение приема изозорбида динитрага более, чем на 80%; Эффективный: сокращение числа приступов стенокардии и уменьшение приема изозорбида динитрата от 50 до 80 %; Неэффективный: сокращение числа приступов, стеснения в груди, уменьшение приема изозорбида динитрата менее, чем на 50%; Обострение: число приступов, степень и продолжающее время приступов обостряется, расход изозорбида динитрата увеличивается.
Результаты эффективности приведены в таблице:
Число случаев | % | |||||
Заметн. эффект |
Эффектив. | Неэффек. | Итого | Заметн. эффект |
Эффект. | |
Группа А (Оксикардин) | 38 | 64 | 5 | 107 | 35,5 | 95,3 |
Группа B (сравнения) | 10 | 28 | 12 | 50 | 20,0 | 76,0 |
Из таблицы 3 видно, что заметная эффективность и эффективность в группе "Оксикардин" выше, чем в группе сравнения.
Оценка эффективности лечения путем электрокардиографического исследования
Отклонения в режимах работы сердечной мышцы регистрировались электрокардиограммами.
Эффективность лечения оценивалась следующим образом:
Заметно эффективный: неподвижная ЭКГ восстанавливается в нормальное положение, толерантность движения повышается в 3 раза; Улучшение: ишемическая часть ST неподвижной ЭКГ или ЭКГ испытания движения вторичной предельной величины после лечения поднимается более, чем на 1,5 мм, но еще ненормальна; Нет изменений: неподвижная ЭКГ или ЭКГ движения вторичной предельной величины в основном одинакова с той, что было до лечения; Обострение: часть ST ЭКГ неподвижной или ЭКГ испытания движения вторичной предельной величины снизилась более, чем на 0,5 мм, чем до лечения, инверсированная волна Т главного отведения прибавляется более, чем на 50%; или ортостатическое положение волны Т переходит в ровное положение, или ровное положение волны Т переходит в инверсию, или испытание движения вторичной предельной величины снижается на одну ступень, чем прежняя толерантность движения.
Число случаев | % | |||||
Заметн. эффект |
Эффектив. | Неэффек. | Итого | Заметн. эффект |
Эффект. | |
Группа А (Оксикардин) | 12 | 26 | 57 | 95 | 12,16 | 40,0 |
Группа B (сравнения) | 3 | 12 | 28 | 43 | 7,0 | 34,9 |
Примечание: Обострений не наблюдалось.
Из таблицы видно, что заметно эффективный результат ЭКГ в группе, принимающей "Оксикардин" составляет 12,16%, в группе сравнения - 7,0%. Улучшение в группе "Оксикардина" - 40,0%, в группе сравнения - 34,9%.
Оценка эффективности лечения по определению
концентрации холестерина и триглицеридов
Холестерин, ммоль/л | Триглицериды, ммоль/л | ||||||
Город, клиника |
Число случаев, чел. |
До лечения |
После лечения |
t | До лечения |
После лечения |
t |
Пекин, НОА | 27 | 5,19±0,17 | 5,09±0,94 | 0,699 | 1,68±0,16 | 1,43±0,09 | 2,269 |
Тяньцзинь | 25 | 5,05±0,29 | 4,13±0,17 | 4,660 | 1,86±0,17 | 1,82±0,16 | 0,357 |
Пекин | 28 | 5,21±0,35 | 5,24±0,51 | -0,101 | 1,85±0,20 | 1,84±0,23 | 0,101 |
Итого | 80 | 5,15±0,16 | 4,84±0,20 | 2,521 | 1,80±0,10 | 1,69±0,21 | 1,300 |
Из таблицы видно, что после лечения липиды низкой плотности имеют тенденцию к снижению. Холестерин всех групп снизился в среднем на 0,92 ммоль/л, t = 2,521, триглицериды в среднем снизились на 0,11 ммоль/л, t=1,300.
Побочные действия
В группе, принимающей "Оксикардин" среди 107 больных в период приема препарата в одном случае после каждого приема пилюль появлялась тошнота, которая исчезала через 15 минут после приема. У одного больного появилось кратковременное ощущение полноты в голове, которое не влияло на непрерывный прием препарата. Исследование крови, мочи, функции печени до и после приема не имели отклонений от нормы.
ВЫВОДЫ:
Препарат "Оксикардин" является новой лекарственной формой, изготавливается по новой технологии путем экстрагирования эффективных растительных составов. Результат клинического исследования больных коронарной болезнью сердца и стенокардией доказал, что эффективность лечения препаратом высокая и равна 95,3%. После приема "Оксикардина" облегчаются или исчезают симптомы стенокардии, стеснение в груди, сердцебиение, одышка и прочие недомогания облегчаются быстро и явно.
Клинический эффект показывает, что данный препарат имеет сильное действие расширения коронарных кровеносных сосудов, увеличения коронарного кровотока, снижения потребления кислорода миокарда, уменьшает размеры ищемического поражения. Результаты современного исследования фармакологии показывают, что препарат тормозит перекисному окислению липидов. Обладает антиоксидантными свойствами.
Фармацевтическая компания "Тяньшили Групп", КНР, г.Тяньцзинь
Правильная история компьютера
Не помню, кто (как бы даже не сам Карл Маркс) как-то взялся распределить, на каком языке с кем разговаривать. Как распределил - тоже не помню. Помню только, что с врагом - на немецком.
С другом - на английском? С девушкой по вызову - на итальянском? С дамой сердца - на французском? С холодильным мастером - на финском? С товарищем по партии - на китайском? С соседом в самолете - на идиш? С соседом по камере - на русском? С продавцом на рынке - на азербайджанском?
Но что с компьютером нужно разговаривать именно на английском - это точно. По крайней мере не на русском.
А не слабо нам мысленно взмахнуть волшебной палочкой? Абак и астролябия, уж Бог с ними, пусть остаются на своих исторических местах. А вот, например, первый калькулятор пусть изобрел не Блез Паскаль в помощь отцу в 1642 году, а крепостной Федька Драный для учета телесных наказаний при Алексее Михайловиче "Тишайшем", и его за это случайно не запороли насмерть. И поэтому дальше покатилось!
Чарльзу Томасу Кольмарскому, допустим, утер нос наш Михал Василич Ломоносов. Пресловутого Бэббиджа заткнул за пояс, само собой, Колька Лобачевский - кому ж еще? Хермана Холлериха поставил на место, например Пал Карлыч Штернберг, который своевременно бросил валять дурака с астрономией и Мосреввоенсоветом, а занялся делом: основал товарищество на паях Международные Деловые Машины (далее - "МДМ").
Дальше все шло в том же духе. В Штатах, после неудачи с сухим законом, долго искали виновных, посажали-постреляли миллионов двадцать народу потолковей, потом посажали-постреляли тех, кто сажал-стрелял, ну и так далее. Во время войны американцы, вместо того, чтобы расчет траекторий стрельбы автоматизировать, Эккерта с Мочли вместе со всем Пенсильванским университетом как самых умных в заградотряды определили. А потом, в 46-м, вместо возни с ЭНИАКом они долго излечивались от космополитизма в благодатном юконском климате.
С фон Нейманом американцам совсем не повезло. Они его шлепнули еще в 41-м, за одну только приставку к фамилии. А Винер отсидел по полной за увлечение лженаукой "сибирьнетикой", про которую узнал из передач радиостанции "Рука Москвы". За КВ-приемник ему, кстати, еще червонец накинули.
Что случилось потом - общеизвестно. В 53- м наши гении сварганили БЭСМ. Потом за дело взялся штернберговский "розовый гигант" - МДМ. К концу 60-х весь машинно-счетный мир говорил на русском. Дольше всех, по обыкновению, сопротивлялись американцы: настойчиво употребляли неблагозвучную аббревиатуру ECM (произносится "э-кэ-эм") вместо простого и ясного русского слова "вычислятель" (пишется через "я", так как относится к неодушевленному предмету. Ср. "вычислительщик" - человек, работающий с вычислятелями).
Был еще такой эпизод. Два друга, молодые парни, Степан Попов и Степан Ямщик, в отцовском огороде слепили из отечественных комплектующих первый одночеловечный вычислятель, "Картошка-1". По сей день всему миру известен товарознак основанной ими компании - картофельный клубень со сгнившим боком.
В настоящее время лидирующее положение на вычислятельном базаре занимают такие товарищества, как Умник (известное в первую очередь своими оченьмаленькодвигалками), Малослабость (прогобеспный гигант), МДМ, Солнце, Урочище, Коммунистический Упаковщик и многие другие, составляющие российскую гордость в начале XXI века. По акциям этих компаний судят о состоянии наукоемких и высокотехнологичных отраслей экономики России, для чего в свое время был введен специальный индекс, называемый "Максимально Универсальный инДекс Акций Компаний".
В заключение этого краткого исторического обзора приведем небольшой чатлано-пацакский словарь по вычислятельной технике и электронике:
неправильно | правильно |
software freeware shareware hardware |
прогобесп хальобесп дешобесп желтовар |
transistor diode lcd microchip |
треххвост двуххвост светодвуххвост малогрызок |
laser | сувил (световое усиление посредством возбужденного испускания лучей) |
streamer inkjet printer laser printer scanner |
струячечник чернильник сувильник последовательник |
radio | поповолн |
modem cd-rom motherboard joystick |
накладыватель-сниматель сообщения на несущую (термин сокращению не подлежит) пк-чтп (плотный круг - чтение только память) [censored] доска палочка наслаждений |
mov cmp jmp call xor int push pop xchg |
двиг срав прыг звон исклили дерг засун высун сменка (прислал Roman Hady) |
red hat linux pan-european windows outlook |
красношляпый ванякс ос им. петра первого выглядыш, выглядок (прислал Argus) выглюк (прислал Frigate) |
.exe .bat .com .sys .htm .html |
.исп .пак .ком .сис .гтр .гтря |
copyright | скопировано правильно (прислал Dmitry Aleksandrovich Gusev) копья справа (прислал Frigate) |
download | низогруз (прислал Michael Meshanin) |
debugger | дуст (прислал Vlad) обезжучиватель (прислал Mac Buster) долбагер (прислал Frigate) |
abort, retry, ignore | нефиг, нафиг, пофиг (прислал Sergey V. Fuklev) |
TrueType Font | шрифт для печати газеты "Правда" (прислал Сергей Елкин) |
upgrade | вышесорт (прислал olimpiyam) |
reboot | снова-ботинок (прислал olimpiyam) переботинок (прислал Alessio) |
chkdsk | провдиск (прислал Sasha Efremov) |
добавь свой перевод с неправильного на правильный: | |
Пролетая над миллионом баксов
Догадка Гольдбаха подтверждается не абсолютно строго, но абсолютно убедительно. Дальше будет приведено полное доказательство, это не шутка. Но сначала предыстория, вдруг кто-нибудь из посетителей перед десертом любит чего-нибудь сладенькое?
Вернее, предысторий две. Первая давняя. Говорят, что ей 258 лет. Так оно и есть.
Леонард, брателло! В довесок к той цистерне бензина, которую я закинул тебе на прошлой неделе, отгоняю еще вагон селедочных голов, как договаривались. С бабками не тяни, переведи их на тот счет, который я тебе тогда у Муськи дал. Как у тебя дела? Не достает ли Починок? Ну, бывай, на той неделе свидимся. Твой кореш Христиан. 7.06.1742 P.S. Кстати, тут я давеча задумался: а не является ли всякое четное число суммой двух простых чисел? По-моему, так оно и есть. А ты как думаешь? |
Так (или примерно так) писал своему другу великому шведу Леонарду Эйлеру Христиан Гольдбах. Именно постскриптумом он и стал знаменит. Во всяком случае, в Grolier есть статья "Goldbach's Conjecture", а вот статьи "Goldbach" нет.
Загнал ли Эйлер селедочные головы, история умалчивает. А вот на догадку внимание обратил, и с Гольдбахом согласился, но доказательства этому утверждению так и не нашел. Чувствовал, что задачка тривиальная, все думал: как-нибудь; да, видно, некогда было, замотался.
Шли годы. Эйлер закончил свои дела в этом мире, Гольдбах тоже, но люди про догадку не забыли. Уж больно привлекательны такие задачи: на первый взгляд элементарные, а решение в руки не дается. А задумаешься чуть поглубже - и вот уже два мужика в халатах тащут тебя, болезного, по белому коридору на очередной сеанс электрошока.
С годами слово "Догадка" стало писаться с большой буквы, из уважения к труду многих поколений психиатров. Сначала еще теплилась надежда, что кто-нибудь успеет доказать ее раньше лоботомии, но с появлением компьютера угасла: люди стали стремительно разучиваться думать. Зато много народу с большим удовольствием стало гонять процессоры на предмет эмпирических проверок. Дошли до 1014 (вот это тема для диплома! Блеск!).
Некоторое оживление в историю Догадки привнесло появление научной криптографии, поскольку криптографы, будучи людьми ленивыми, очень полюбили простые числа и не захотели возиться со сложными. Но и криптографы, занятые бегом по кругу в поисках ядов и противоядий, приняли Догадку как должное и не стали очень уж надрываться ее подтверждением.
Так и дошло дело до наших дней.
Вторая предыстория - продолжение первой. В 1992 году греческий писатель Апостолос Доксиадис написал роман "Дядя Петрос и Догадка Гольдбаха" (Uncle Petros and Goldbach's Conjecture by Apostolos Doxiadis)
Роман начинается так: "В каждой семье есть своя черная овца - в нашей ею был дядя Петрос". Рассказчик - любимый племянник дяди Петроса. Семейство всегда считало Петроса неудачником. В начале рассказа племянник оглядывается назад, в годы своей учебы в средней школе в Афинах. Тогда его живой детский интерес вызывал эксцентричный дядя, отшельником живший в предместье и интересовавшийся только шахматами и озеленением. Племянник знал, что дядя Петрос когда-то был талантливым математиком, долгие годы учился и преподавал в университете в Германии и немного - в Кембридже. Однажды он приходит к дяде и объявляет, что хотел бы делать карьеру математика. Дядя Петрос предлагает племяннику решить одну математическую задачку. Если решит - то это будет означать, что математика действительно является его призванием. А если не сможет - то должен дать обещание навсегда забыть о математике. Племянник принимает условие, и, так и не найдя решения, по достижении совершеннолетия все-таки отправляется в университет в США в полной неуверенности в своем будущем математика. Его случайный попутчик, оказавшийся математиком, объясняет ему, что задача, заданная ему дядей, была ничем иным, как Догадкой Гольдбаха. Оказалось, что дядя потратил всю свою жизнь в поисках ее доказательства, но так и не нашел его. Во второй части романа читатель видит рассказчика вернувшимся в Грецию и требующим у дяди объяснений: почему тот задал ему неразрешимую задачу. И тогда мы добираемся до "Истории дяди Петроса Папахристоса", которую рассказчик подает нам в третьем лице. Это очаровательная история о математике и гениальности, о гордыне и навязчивой идее, которые все вместе составили жизнь дяди Петроса. Третья часть романа переносит нас в наши дни. Петрос теперь 80-летний старик, и слегка не в себе. Племянник, все-таки начавший свою математическую карьеру, но впоследствии оставивший ее, вновь пытается получить от дяди ответ на вопрос, который не получил когда-то. И далее следует очаровательный конец повествования с великолепной кульминацией. Доксиадис - удивительный рассказчик. Он побуждает вас переворачивать страницы одну за другой, раскрывая вам историю и мир ученого-математика, всю свою жизнь целеустремленно преследовавшего единственную цель: подтверждение Догадки Гольдбаха. А это, между прочим, самая простая и самая трудная из догадок: каждое четное число, большее 2, представляет собой сумму двух простых чисел. Звучит элементарно, неправда ли? (© J.A, перевод assembler.ru)
В этом году роман, по случаю слегка переработанный автором, опубликован на английском языке сразу в США и в Великобритании, двумя издательствами - Faber and Faber Limited (Лондон) и Bloomsbury Publishing (Нью-Йорк). И для того, чтобы сделать потенциальному бестселлеру необходимую рекламу, кто-то из сотрудников того или другого издательства предложил гениальный ход: бросить челлендж ценой в пресловутый миллион баксов. Тогда казалось, что никто особо ничем не рискует (жалко будет, если человека теперь уволят), ведь над подтверждением Догадки Гольдбаха люди бьются сотни лет, и до сих пор даже не уверены, что таковое существует. Насчет увольнения сотрудника - шучу, конечно. Они ведь тоже не лыком шиты. Никто никого не уволит и никакого миллиона никто никому не заплатит, так что ежели кто уже точит фомку, чтобы вскрывать мой пуленепробиваемый сейф, оставьте железо в покое. Правила вызова составлены из того предположения, что потенциальные разгадчики загадки Гольдбаха живут исключительно либо на территории США, либо на территории Великобритании. Как будто если Догадку докажет не-американец или не-англичанин, то это как бы и не будет никаким доказательством. Ну да им виднее.
Так не доставайся ж ты никому! Этой публикацией я нарушаю все правила вызова, установленные издательством, но уж постараюсь сделать так, чтобы мой миллион было бы трудно присвоить кому-нибудь шустрому. Впрочем, все возможно. В правилах же не сказано, что миллион будет вручен автору. Там сказано, что миллион будет вручен выполнившему условия. Эй, резиденты США и Великобритании, для вас еще не все потеряно! В английском языке то, что я сейчас делаю, определяется идиомой "vsju malinu obossal, gad". Впрочем, шутки в сторону. Вот доказательство истинности Догадки Гольдбаха. Примечание от 30.05.00: На самом деле, то что вы можете прочитать далее - это только первый, несовершенный, вариант. Возможно, он будет полезен для понимания основных идей, но его недостатки не позволяют считать его настоящим доказательством. Настоящее сухое математическое доказательство здесь. Примечание от 27.07.00: Еще более сухое и, возможно, более корректное (или истинное, чем черт не шутит?) доказательство Догадки прислал Тим Туманный. Читайте!.
Еще раз повторю формулировку Догадки:
"Каждое четное число, большее двух,
может быть представлено
в виде суммы двух простых чисел."
Для начала поговорим о природе простых чисел. Всякому, кто когда-нибудь интересовался простыми числами, знакомо чувство удивления, которое вызывает видимая бессистемность их расположения в числовом ряду. Казалось бы, про ряд натуральных чисел люди должны знать все, ведь это самые первые числа, с которыми познакомились наши пращуры сразу после того, как однажды на охоте завалили не одного мамонта, а двух. И вот в этом незыблемом от Начала Времен монолитном строю, оказывается, полным-полно бойцов, которые стоят где хотят, и совершенно непонятно, как они там оказались.
Причем любой здравомыслящий человек, конечно же, понимает, что никакого хаоса нет, и вот это-то и раздражает больше всего. Если нет хаоса - значит, есть система. Видимо, сложная, но все-таки система. Так в чем же она?
Для ответа на этот вопрос, и раз уж мы обсуждаем натуральные числа, самое время вспомнить о кирпичах.
Допустим, перед нами стоит задача определить, является ли простым некое число (на рисунке - любимое число 13, для примера). Естественной процедурой в таких случаях является поочередная попытка деления тестируемого числа на все числа, меньшие его, начиная с 2, на предмет определения делимости нацело. Смешно об этом говорить, но если число делится без остатка только на самое себя, то оно простое.
Нарисуем все потенциальные делители так, как показано, в виде кирпичной кладки.
Идея, по-моему, достаточно очевидна. Например, делитель "2" укладывается в кладке до отметки "13" шесть раз целиком, и еще пол-кирпича торчат наружу. А вот делитель "3" - четыре раза целиком и еще кусочек. И так далее.
Мы видим, что на отметку "13" попадает стык кирпичей в одном-единственном ряду - в ряду "13". Не нужно быть бакалавром математики, чтобы сообразить, что смысл этого рисунка, если исключить из рассмотрения избыточный нижний ряд, можно сформулировать следующим образом: "Если на отметку числа не попадает ни один стык кирпичей, то оно простое".
Теперь приглядимся к кладке повнимательнее. Посмотрите: все стыки в ряду "4" попадают на стыки в ряду "2"! Это значит, что если тестируемое число не попадает на стык в ряду "2", то уж на стык в ряду "4" оно точно не попадет! А мы, дураки, мучились, раствор мешали, на прораба матерились... Оказывается, ряд "4" совершенно неинтересен в смысле тестирования чисел на предмет их простоты. Убираем его нафиг. А вместе с ним и ряды "6", "8", "9", "10" и "12", так как все их стыки тоже надежно совпадают со стыками вышележащих рядов. Смотрим, что получилось.
Мама дорогая! Так это ж все сплошь простые числа! Вот оно, первое гениальное прозрение вольного каменщика: "Чтобы выяснить, является ли число простым, достаточно установить отсутствие его делимости нацело на все простые числа, меньшие его."
Уважаемые товарищи программисты! Не загружайте процессоры бесполезной работой! При определении простоты чисел используйте в качестве делителей только простые числа! (За исключением случаев, когда вы пишете на JavaScript. Тогда вы можете на этот призыв наплевать - все равно скрипт работает на чужом компьютере. Именно так я и сделал в этом примере.)
Впрочем, все вышесказанное никаких откровений в себе не содержит и давно всем очевидно. Не волнуйтесь: это всего лишь подготовка строительной площадки. А вот теперь, еще раз хорошенько всмотревшись в кирпичи, мы готовы сделать действительно принципиально важное для доказательства Догадки Гольдбаха умозаключение. Вот оно:
Простое число есть совокупный продукт
от всех простых чисел, меньших его.
Каждый ряд в кирпичной кладке - это периодический процесс с длиной периода, равной соответствующему ему простому числу. В точке 0 числовой шкалы узлы всех периодов совпадают. Очередное простое число образуется в точке, в которой периоды всех предыдущих простых чисел не имеют узлов. Следующее простое число образуется в новой точке, зависящей не только от всех предыдущих простых чисел, но и от вновь найденного.
Не удивительно, что ни на первый, ни на второй взгляд невозможно обнаружить системы в расположении простых чисел в числовом ряду! Ведь каждое простое число - это каша из всех предыдущих, тем более перемешанная и многокомпонентная, чем дальше от начала координат мы находимся.
Из этого тезиса можно делать разные полезные выводы, впрочем, имеющие отдаленное отношение к теме. Например, можно смело утверждать, что не может существовать никаких других строгих правил определения произвольного простого числа, кроме полного перебора всех простых чисел, меньших его.
И вот теперь, разобравшись с природой простых чисел, вернемся собственно к Догадке, и, конечно же, к кирпичам. Разве что раскрасим их теперь в какие-нибудь веселенькие цвета.
Этот рисунок уже прямо иллюстрирует Догадку и способ ее подтверждения. Для примера мы взяли число 16, которое, как мы знаем, является четным, и, если верить Гольдбаху, должно иметь два простых слагаемых. Не станем томить, таковые действительно имеются. Например, 11 и 5.
На этом рисунке слагаемое 11 покрашено в желтый цвет и представлено не само собой, а совокупностью формирующих его рядов кирпичей, соответствующих меньшим простым числам. Кирпичи, составляющие же слагаемое 5, покрашены в голубой цвет. Кроме того, начало кладки голубых кирпичей мы перенесли в точку "16", и направили кладку навстречу желтой. Видим, что имеет место точка рандеву, в которой встречаются отложенное слева число 11 и отложенное справа число 5. В этой точке, в соответствии с изложенным выше кирпичным взглядом на природу простых чисел, ни в одном ряду нет стыка кирпичей.
Целью всех этих, без сомнения, допустимых манипуляций, является переформулировка Догадки Гольдбаха в таком виде: для каждого четного числа можно составить хотя бы один вариант описанной кирпичной кладки, в котором имеется точка рандеву.
Почему сказано "вариант кладки" - потому что возможны и другие варианты, как показано на рисунке справа.
Давайте еще раз рассмотрим рисунок img03, ибо он позволяет сформулировать условие существования точки рандеву. Видно, что существует 15 точек, каждая из которых потенциально может стать точкой рандеву. Но всем, кроме одной, мешают стыки рядов кирпичей, иногда одного, а иногда и сразу нескольких. Разберемся с каждым из рядов по отдельности.
Правда, на рисунке img04 есть еще точка, отстоящая слева на 1, а справа - на 15, которой не мешает ни один стык кирпичей. Такая точка имеется у всех пар простых слагаемых, одно из которых - 3. Существование этой точки еще ждет своего объяснения, и, я думаю, кирпичная теория простых чисел способна дать его.
Видно, что желтый и голубой ряды кирпичей "2" синфазны. Их стыки совпадают. Это не удивительно, ведь число 16 кратно 2. Эти ряды будут совпадать и для любых других четных чисел. И они отсеивают половину всех потенциальных точек рандеву. Если бы фазы голубого и желтого рядов "2" не совпадали, тогда совместными усилиями они бы отсеяли все точки. Однако фазы рядов "2" не совпадают только у нечетных чисел.
А вы-то, небось, думали, что нечетное число не может быть суммой двух простых чисел, потому что сумма двух нечетных всегда четна? На самом-то деле причина в кирпичах!
А вот ситуация с желтым и голубым рядами "3" гораздо интересней. Поскольку число 16 не кратно 3, то фазы этих рядов не совпадают. В результате ряды "3" еще отнимают каждые две из трех потенциальных точек рандеву, оставшихся после разгрома, учиненного рядами "2". Очевидно, что после их совместных усилий остается вот какая доля потенциальных точек рандеву:
(1)
Следующий ряд - "5". К сожалению, на рисунке img03 ситуация не очень удачная - нет голубого ряда "5", потому что число 16 слишком маленькое. То же касается и ряда "7". Впрочем, мы уже достаточно подготовлены, чтобы забросить возню с кирпичами и обратиться-таки к абстрактным рассуждениям.
Если бы исследуемое четное число было побольше, и у второго слагаемого был бы голубой ряд "5", то он бы мог быть синфазен желтому (например, для числа 20), или несинфазен (например, для числа 22). Будем ориентироваться на худший для нас второй случай. Рассуждая аналогично рядам "3", можно считать, что несинфазные ряды "5" оставят только 3 из 5 точек, оставшихся после совместного воздействия рядов "2" и "3". То есть доля оставшихся потенциальных точек рандеву будет:
(2)
Аналогично для рядов "7":
(3)
Очевидно, зависимость доли остающихся потенциальных точек рандеву от числа рядов образует прогрессию. Каждый очередной ее член формируется путем умножения предыдущего на величину, определяемую очередным простым числом, то есть зависит сразу от всех предыдущих простых чисел и от текущего. (Обратите внимание, насколько это согласуется с природой простых чисел, которую мы обсуждали выше!) Первый член этой прогрессии - 1/2. Остальные в общем виде можно записать так:
(4)
Здесь:qi - очередной (i-й) член прогрессииPi - соответствующее этому члену простое число из ряда простых чисел, начиная с 2
Также очевидно, что прогрессия (4) бесконечно стремится к 0.
Сформулируем достаточное условие существования точки рандеву: "Для того, чтобы для некоторого четного числа Ej существовала хотя бы одна точка рандеву, достаточно, чтобы интерполированное значение прогрессии qi при Pi близком к половине Ej было не меньше, чем значение прогрессии:
(5)
Поясним, откуда здесь что.
(Ej-2)/Ej - это максимальная доля точек, которые не должны являться точкой рандеву для того, чтобы существование точки рандеву стало возможным. Наверное, проще пояснить на примере. Смотрим рисунок img03. Здесь Ej=16. Число потенциальных точек рандеву - 16-1=15. Но существование хотя бы одной точки рандеву возможно лишь в том случае, если не-"точками рандеву" будут не более 16-2=14 из них. То есть их максимальная доля составляет 14/16.
1-(Ej-2)/Ej - это, следовательно, минимально необходимая доля действительных точек рандеву (то есть доля одной-единственной точки).
Наконец, почему Pi должно быть близко к половине Ej? Да потому, что Догадка как раз про это: про четное как сумму двух простых. И еще вот почему.
Как уже было сказано, нас интересуют наихудшие для существования точек рандеву случаи. Если в этих случаях условие существования выполняется - то уж во всех других оно будет выполняться точно. Случай, когда простые слагаемые близки к половине составляемого ими четного числа, как раз из таких. Количество желтых и голубых рядов кирпичей в этих случаях примерно равно, в результате чего складываются наиболее благоприятные возможности для появления их несинфазности. Кстати, именно для таких, а вернее, для предельно худших случаев составлена прогрессия (4), потому что она вообще не предполагает наличия синфазных рядов (кроме, естественно, ряда "2").
Ну что ж, осталось совсем немного: убедиться, что достаточное условие существования точки рандеву действительно выполняется. Щелкайте - и убеждайтесь.
Убедились? Есть вопросы, да? Первый бросается в глаза сразу: почему в начальной части qi < ej? Ну что ж, если вы хотите проверить, что в этой части каждое четное число имеет пару простых слагаемых, просто посчитайте, это нетрудно (или поверьте предыдущим поколениям математиков). А насчет правоты достаточного условия - так оно ведь достаточное, а не необходимое. Здесь оно не работает по двум причинам. Во-первых, помните, что прогрессия (4) составлена в расчете на худший из худших случаев, когда голубых и желтых рядов - примерно поровну. Если вы учтете для первых нескольких чисел конкретные более благоприятные расклады (это выразится в замене в выражении (4) двойки на единицу в случае синфазности соответствующих рядов), весьма вероятно, все встанет на свои места. И во-вторых, на начальном участке велико влияние краевого эффекта, ведь наше достаточное условие в некотором роде - статистическое, и плохо работает на небольших выборках. Последнее утверждение, конечно же, образное. На самом же деле краевой эффект проявляется в том, что при небольшом числе младших простых чисел, определяющих слагаемые, на значение прогрессии (4) большое влияние оказывают дробные части от деления Ej на младшие простые числа (грубо говоря, части кирпичей, выступающих наружу).
Правда, насчет краевого эффекта - это просто догадка. Есть ли он на самом деле, и в какую сторону он влияет, я не анализировал, потому что задача эта громоздкая и в нашем контексте бессмысленная.
Второй вопрос возникнет у тех, кто разберется в программе. Она составлена "наоборот": мы не задаемся четными Ej, подбирая потом подходящие Pi, а последовательно перебираем Pi и получаем из него Ej простым умножением на 2. На самом деле, никакого вопроса здесь нет: нам достаточно построить кривые, а как - это безразлично. Нам даже все равно, четные ли числа Ej.
Если быть до конца честным, то получаемые с помощью выражения (4) значения прогрессии qi - это не самые минимальные из возможных значений минимальной доли точек рандеву, но они очень близки к минимальным, и ими вполне можно пользоваться для проверки достаточного условия существования точки рандеву. Причем, чем дальше по числовой оси, тем с большей надежностью. Убедиться в этом можно с помощью примера, который вычисляет реальные доли потенциальных точек рандеву для пар простых чисел, подозрительных на то, что они дают в сумме заданное четное число. Сохраните пример на диск и попробуйте поиграть с переменной ej, давая ей разные четные значения. Видно, что значения долей для этих пар образуют седло, и результат вычисления выражения (4) всегда находится в его нижней части. Извините за невнятность примера, но это - факультативная информация.
Кстати, вот еще один пример, позволяющий убедиться в справедливости нашего метода. Здесь сравнивается реальное количество пар простых слагаемых для каждого четного числа (Npairs) и прогнозируемое с помощью прогрессии (4) минимальное количество точек рандеву (qi*Ej). Совершенно однозначно видно, что после преодоления краевого эффекта ожидаемое минимальное количество точек рандеву надежно меньше, чем реальное число пар, но, конечно же, больше 1. То есть наша оценка действительно учитывает вариант "хуже худшего", но показывает, что всегда имеется не менее одной пары простых слагаемых.
Итак, мы убедились, что ej стремится к 0 гораздо быстрее, чем qi. Догадка Гольдбаха верна и подтверждена.
В заключение несколько замечаний.
Первое - философское. Обратите внимание НАСКОЛЬКО ej быстрее стремится к 0. И это, учтите, при наихудших условиях! Поэтому Догадка - это ОЧЕНЬ сильный закон. И, наверное, в этой силе - пролог ее мистической истории. Вот почему она буквально бросилась в глаза Гольдбаху (а если быть точным - то еще Декарту) во времена, когда простые числа не могли иметь никакого практического приложения и интересовали разве что чудаков. Вот почему люди искали, ищут и будут искать ясное и строгое ее доказательство: им просто не верится, что у такого сильного закона может его не оказаться. А с практической точки зрения эта сила проявляется в том, что пары простых слагаемых в подавляющем большинстве случаев обнаруживаются уже в непосредственной близости от половины четного числа. Убедитесь!
Второе - конкретное. Как видим, приведенное доказательство истинности Догадки нельзя считать абсолютно строгим. А возможно ли действительно строгое доказательство? Ответ: нет! Все те люди, включая дядю Петроса, кто потратил свои жизни на поиск доказательства, на самом деле строили вечный двигатель. Дело в природе простых чисел. Каждое очередное простое число ортогонально всем предыдущим и как бы создает новый мир, в котором не действуют законы предыдущих миров. И уж тем более для всех этих миров нет единого закона. Как невозможно точно выяснить, является ли взятое наугад нечетное число простым, не перебрав все предыдущие простые числа, так невозможно строго подтвердить Догадку.
Третье - эмоциональное. Печальное завершение романтической истории, правда? Так хотелось, чтобы у Догадки было такое же простое и красивое доказательство, как она сама: полтора десятка слов, и ничего не добавишь и не выкинешь... Вместо этого - кирпичи и приблизительные оценки. Жаль...
Сколько зарабатывают системные программисты?
Date: | 17-29 ноября 1999 | |||||
Newsgroup: | microsoft.public.win32.programmer.kernel | |||||
Subject: | Salary question Вопрос о заработке |
|||||
Участвуют: | - Alberto Orioli Wh Maxim S. Shatskih Jon Sturgeon Vladimir U. Gaikovich Vladimir Strogov Jamey kirby Oleksandr Bublyk Bob Moore Pavel A. - | nospam.batfish@mindspring.com a.orioli@aethra.it whehn@microtech.com.pl maxim@storagecraft.com JonS@futuresoft.nospam.com garry@infosec.ru svv@ultersys.ru jkirby@nospam.storagecraft.com sab@mastereye.kiev.ua bobm@mvps.org pavela@my-deja.com anhngo@my-deja.com | MindSpring Enterprises - TPNET MTU-Intel ISP Giganews.Com - Premium News Outsourcing - - - Anonymous Partisans Online MVP - - |
if(dhtml){document.write(" Все сообщения: [+][-] Открывать: [несколько]");}
[+] nospam.batfish@mindspring.comДействительно ли программисты, имеющие опыт программирования NT на уровне ядра, обычно зарабатывают больше, чем программисты только с опытом программирования для Win32? [+] Alberto OrioliЯ не знаю, но хотел бы знать, каковы заработки в разных странах для этого вида программирования. Я работаю в Италии, и в 1998 году мой доход составлял 17.0 евро/час. А как у вас, парни? [+] WhЯ из Польши. Я работаю не в Варшаве. Зарабатываю около 18 злотых в час (примерно 4 евро, включая налоги). В Варшаве программист зарабатывает на 50% больше. Программисты с опытом Win32 могут зарабатывать в Польше 12-30 злотых в час. [+] Maxim S. ShatskihА как евро соотносится к доллару? [+] Jon SturgeonКогда я смотрел последний раз, было $1.03 [+] Maxim S. ShatskihВ Москве хороший разработчик Win32 (COM/ATL/MFC) плюс SQL зарабатывает 800-1200 USD в месяц чистыми. (1200 - если вы лидер команды из ~10 человек). Получается примерно 4-6 евро в час. То есть то же самое, что в Польше. Программисты на уровне ядра получают больше - эта специальность гораздо более редкая, чем разработчики баз данных. [+] Vladimir U. GaikovichВы не правы насчет заработков в Москве (Россия). Не так уж много организаций в Москве, которым требуются (и которые готовы платить деньги) разработчикам на уровне ядра. И в Москве тоже... Поэтому программистам на уровне ядра платят хуже, чем хорошим программистам для Win32 - 500-800$ в месяц ($4-$5 в час) без налогов. [+] Vladimir StrogovЭто может быть верно только для компаний, которые нанимают системщиков для работы во внутрироссийских проектах на постоянной основе. Что касается проектов, для которых системные программисты нанимаются на контрактной основе, то в этом случае оплата может быть значительно выше (по моему личному опыту). В любом случае трудно найти таких разработчиков в любой стране. Если же говорить о разработчиках на уровне ядра, работающих в Москве для международного потребления, то там ситуация гораздо лучше. [+] Oleksandr BublykДа, та же самая ситуация на Украине. [+] Bob MooreОбычно да. Но мир требует не так уж много разработчиков на уровне ядра. [+] Jamey kirbyПрекрасно, давайте перенесем дисковые драйверы, файловые системы и управление памятью на прикладной уровень! [+] Pavel A.А это уже случилось в WinCE - все на прикладном уровне. [+] Jamey kirbyПростите, но я говорил о "настоящих" операционных системах. [+] anhngo@my-deja.comМне кажется, в США нет разницы, имеете ли вы опыт программирования на уровне ядра или в WIn32. Ну разве что системный программист имеет больше шансов найти работу. Но это совсем не означает, что вы будете зарабатывать больше. Обычно заработки различаются в разных штатах, так что я не могу говорить за всех. В Сан-Хосе, Калифорния, имея опыт работы 6-10 лет, можно зарабатывать $30-$60 в час. [+] Maxim S. ShatskihЭто до уплаты налогов? А как насчет других штатов? Там суммы меньше? Один мой друг уже около двух лет в США (Чикаго). Он работает на UNIX -подобной платформе и имеет ~100K$/год. Следует ли его считать гением (счастливчиком?) или это обычный случай? [+] Jamey kirbyВам недоплачивают или у вас не все в порядке. 10 лет опыта разработки драйверов среди моих знакомых оценивается намного выше, чем 100К в год. 150, может быть даже 180. То есть, пересчитывая на почасовую оплату, от 90 до 150 долларов в час. Конечно, это если вы действительно хороший программист. Я имею свой собственный бизнес, и я счастлив, если получается $10/час после выплат персоналу и оплаты расходов :) [+] anhngo@my-deja.comВы правы. Однако, существуют некоторые компенсации, которые следует учесть помимо прямого заработка. Не забывайте о регулярных доходах от консультаций, что совсем иное, нежели постоянная работа. Я согласен с суммой, которую вы называете. Но вот например консультанты делают гораздо больше денег. Если консультант имеет около 100К/год, это тоже недоплата. Минимальный доход консультанта представляется нормальным при 180К/год. Обычно, если работник получает 100К/год, он имеет реальную оплату на 30%-40% больше за счет социальных пособий, страховок и т.д. Добавьте также 10 дней праздников и 10 дней отпуска, это еще почти целый оплачиваемый месяц. Плюс 10 оплачиваемых дней на случай болезни. А также премии, доход от акций... Моя компания выплачивает 30% премиальных в год. Это означает, что человек, получающий около 100К/год, окончательно получит на 35% больше в смысле дохода, плюс еще 30К сверху (в зависимости от итогов работы компании). Он никогда не покинет компанию ради работы консультантом за 150К/год. Обеспечиваете ли вы другие доходы, кроме почасовых норм для ваших служащих? Многие из нас недополучают независимо от того, хороши мы или нет. У меня 7-летний опыта, так что я не могу сравнивать яблоко с яблоком, то есть с 10-летним опытом. Я тоже мечтаю стать консультантом, но не у каждого есть шанс на это. Между прочим, моя основная зарплата даже не приближается к 150K/год. Вы правы, возможно, мне недоплачивают, или я не очень хорош. Или я работаю в не очень правильной компании. Бизнес компании - это дисковые устройства, драйверы для них - не главный продукт. [+] Jamey kirbyДа, если работать консультантом полный день, то получится 180-200$/час.
Так в каком же веке мы живем?
Извини, усталый путник, случайно забредший на эту страницу. Предвижу твою кислую физиономию и предслышу добрые слова, которыми ты выражаешься в мой адрес в связи с нижеизложенным. В самом деле, просто достали все, от Папы Римского до изготовителей юбилейной туалетной бумаги, по 2000 метров в рулоне!
И еще: по домену millennium в каждой зоне (а за Россию радостно: ребята, прикинув процент не забывших латынь врачей и адвокатов на территории ru, не пожалели сотню баксов и на всякий случай зарегистрировали еще и millenium, ведущий на тот же хост. Уверен, большинство из набиравших url вручную попали на сайт именно этим путем. Сужу по себе. Наличие milennium и milenium не проверял, лень, но с них станется!)
И еще: кандидат в книгу рекордов Гиннеса в период с 15.06.99 по 31.12.99 съел 2000 куриных яиц. Скончался от легочной эмфиземы, осложненной сердечной недостаточностью, при прослушивании прощальной речи Первого Президента. А вот ел бы перепелиные, дурачок, мог бы скончаться куда более благородно, от сексуальных излишеств.
И еще: Windows 2000 с братом-Office'м. Точно говорю: прозорливец Билл прикидывал их раскрутку еще когда решал обозвать Chicago не 4.0, а 95.
И еще: умница Милен Фармер. И Милка с Охотного, берущая 20%-ю наценку, тоже большая молодец.
И еще: магическое число международных террористов на территории Чечни. При том, что примерно по столько их уничтожается ежемесячно, если судить по официальным сводкам. Число погибших наших, похоже, тоже неуклонно округляется до этого же значения.
И еще: хорошая передача Дм.Киселева "Национальный интерес-2000". Правда, в названии имеется неоднозначность: если это про зарплату, то в RU или в USD? Хотелось бы второе.
И еще, и еще, и еще...
Кажется, под верстовым столбиком с цифрами "2000" не пописала только соседская Аська, да и то, потому что она не собака, а кошка. Все остальные благополучно отметились, близко не подойдешь...
Но не могу молчать! Во-первых, cледующий случай высказаться по этой проблеме представится не скоро, боюсь, не доживу. И во-вторых, профессионально не терплю ошибок.
Всякому настоящему ассемблерщику знакомо это ощущение, когда программа готова к дистрибуции, но из личного опыта, из законов Мерфи, из знания жизни и еще черт знает откуда автор прикидывает, сколько в ней багов. Ненастоящие ассемблерщики и настоящие неассемблерщики могут примерно представить себе это ощущение, если когда-нибудь им доводилось летом, в жару, при мокрой спине, ехать домой в переполненном троллейбусе после посещения дешевой мужской парикмахерской. Возможно, именно в целях избежать упомянутых специфических ощущений, настоящие ассемблерщики почти не программируют и почти не стригутся.
Между тем, в ныне общепринятом определении того, в каком именно веке мы живем, имеет место самая настоящая ошибка.
Большинство людей, так уж сложилось, считает, что 2000-й год принадлежит 20-му веку. Одни - потому что с детства их учили считать: "раз, два, три, ...".
Настоящих ассемблерщиков чудаковатые родители учили, конечно же, так: "ноль, один, два,..., девять, а, бе, цэ, дэ, ..." и так далее, со всеми вытекшими отсюда печальными последствиями. Неспешно плыло светлое время шестидесятых, мир был наивен и добр. Печаталась цветная "Техника молодежи" про ЭВМ, про робота Сепульку, с фантастическим рассказом в каждом номере... А еще толстенькая "Наука и жизнь", и "Юный техник". За ночь глотался "Понедельник начинается в субботу". Полыхал дюзами "Непобедимый" Лема. Слово "голубой" ассоциировалось с небом. В году было 365 солнечных дней... Впрочем, это совсем другая история.
Вторые - потому что хотят стабильности. Третьи - потому что боятся будущего. Четвертым - наплевать. Пятые - решили, что так надо. Шестые - потому что верят пятым. Седьмые - потому что они посчитали, и у них так получилось. И так далее.
Очень интересно и привлекательно выглядит позиция официальных лиц, начиная от упомянутого Папы и кончая нашим начальником ЖЭУ. Не знаю, когда они все встречались, но на этой встрече они договорились о важном компромиссе. Чтобы не ссорить между собой настоящих ассемблерщиков и представителей всех остальных конфессий, принято было решение считать 2000-й год переходным, (не)принадлежащим обоим смежным векам. Слава мудрым!
Однако, время, как каждый вечер напоминает Михаил Леонтьев. Я лично вижу в его словах два смысла. Первый означает: "Треп закончен, переходим к делу". Второй обращает наше внимание на существо рассматриваемого вопроса.
Действительно, давайте вспомним, что речь идет о времени. И не просто о времени, а о времени, прошедшем от Рождества Христова. Потому что именно так называется Наша Эра (она же Новая Эра, она же Anno Domini). Вспомнили?
А теперь давайте считать. Время, оно ведь не кирпичи. Оно не поштучное, а непрерывное. Вот так его и будем считать.
Итак. Через пять минут после рождения Христа, когда Он лежал в яслях, освещаемый падавшим сквозь прореху в крыше убогого сарая светом Вифлеемской звезды, сколько Ему было от роду?
Правильно, ноль лет и пять минут.
А через месяц, когда, насытившись от груди Марии, радостно агукал, не зная о сужденных Ему Страстях?
Правильно, ноль лет и один месяц.
А через одиннадцать месяцев тридцать дней двадцать три часа и пятьдесят девять минут, когда Мария качала Его, спящего, в колыбели, мысленно поздравляя с первым годом жизни и мечтая о том, как Он вырастет добрым, хорошим сыном, будет счастлив и станет ей опорой в старости, как мечтают все родители от Начала Времен?
Правильно, ноль лет одиннадцать месяцев тридцать дней двадцать три часа и пятьдесят девять минут.
То есть нулевой год входит в жизнь Христа (впрочем, ничем не отличаясь от нулевого года жизни любого другого человека). Следовательно, нулевой год входит и в Нашу Эру, именно с него она начинается.
А в первом (не по счету, а по номеру) году Нашей Эры Христу уже исполнился год, и шел второй. Если этот тезис к данному моменту непонятен, то дальше можно не читать - читатель с автором в этой части общего языка уже не найдет. Это нормально.
Следовательно, первый век Нашей Эры составляли годы 00, 01, 02, 03 ... 99, поскольку в веке, по определению, 100 лет. А 100-й год относился уже, естественно, к следующему веку н.э.
Помаленьку экстраполируя, добираемся 1999 года. Кто не помнит, подсказываю: там был еще такой президент, Ельцин Борис Николаевич. Давно это было, еще в XX веке н.э. А вот 2000-й год - это уже XXI век, потому что за две тысячи лет понятие "век" ничуть не изменилось. Как было в первом веке 100 лет, с 00 по 99, так и осталось в ХХ-м c 1900 по 1999.
Делаем окончательный вывод. 2000-й год принадлежит XXI веку. Кто не понял: мы живем в новом, XXI веке н.э. Поздравим себя, дожили. А ведь могли и не дожить.
Здесь необходимо сделать маленькое пояснение. Все вышесказанное верно с формальной точки зрения. То есть если вы, допустим, настоящий ассемблерщик, и, как всякий настоящий ассемблерщик, ненавидите считать итерации в циклах while, for, do и until, потому что каждый раз нужно лезть в учебник, и все равно на 1 ошибешься, то с вашей точки зрения все сказанное - верно.
А вот если вы, допустим, раннесредневековый монах-богослов, и присутствуете в исторически поворотной точке пространства и времени, когда определяются все последующие воззрения на дату Рождества Христова, и только что вернулись со строительства монастырской стены, и собираетесь поработать с летописями, то все сказанное выше должно быть вам далеко не очевидно. Возьмете с устатку, да и назначите нулевой год жизни Христа первым. И пошло-покатилось. Вплоть до нашего 2000-го года, последнего года XX-го века.
Однако не в наших силах сейчас выяснить, откуда тысячу лет назад вернулся тот монах: с кирпичного мини-завода или из трапезной, где наоборот, созерцал ламинарный процесс перетекания анжуйского из одной емкости в другие. Поэтому давайте останемся на формальных позициях: мы - в XXI веке.
Через public mail мы получаем альтернативные мнения о рассматриваемом в этой статье вопросе. Так, Sergey Chehuta из WhiteTown прислал письмо:
Добрый день! Очень простое и наглядное дидактическое пособие для объяснения того, когда начинается новый век: "Второй ящик водки начинается с двадцать первой бутылки". :)) |
Ну и в заключение - маленькая сенсация. Основываясь на той же методике, порассуждаем не о годах, а о веках.
Первое тысячелетие составляли века: 00, 01, 02, 03, ..., 09.
Второе тысячелетие составляли века: 10, 11, 12, 13, ..., 19.
Еклмн! Братья и сестры, да мы уже сто лет, как живем в третьем тысячелетии! Во бараны, сколько денег в празднование вбухали, колеса по всему миру строили, хрустальные шары спускали, на одни фейерверки штуки три российских годовых бюджета спалили! Хорошо хоть мы, как обычно, умнее всех оказались: не стали транжириться, водкой и оливье обошлись.
Испугались? Шутка. Просто монах, который отвечал за века, точно вернулся с кирпичного завода. Ну не было в Нашей Эре Нулевого века. Его взяли, да и обозвали Первым. Видно, ненастоящими ассеблерщиками были те монахи...
P.S. Не забудьте разобрать елку.
Впечатления от "сегоднячко"
Хотелось бы поделиться впечатлениями от вчерашней (28.03.2000) передачи "Сегоднячко". Там Лев Юрьевич Новоженов вместе с милой Юлианной Шаховой и блистательным Игорем Воеводиным раскручивали народ на предмет поделиться: имел ли кто любовные акты в необычных местах. Не скрою, удивить удалось.
Во-первых, приятно поразили результаты телефонного опроса. Итоговых цифр не помню, но на каком-то этапе "да" было за 1000, а "нет" - меньше 100. Вот и гадай, то ли сограждане у нас такие романтичные, то ли понятие "необычное место" у них включает, допустим, кухонный стол.
Но если судить по звонкам, скорее первое, чем второе. Правда, откровенничали в основном мужики, а они, как известно, подвержены в таких рассказах древнему инстинкту рыболовов.
А вот одна симпатичная, судя по голосу, девушка выступила с рассказом о том, как со своим знакомым пришла на деловую встречу в Белорусское посольство, а там оказалась такая подходящая пожарная лестница.
А все говорят, что распад СССР повлек только негативные последствия! Ничего подобного: посмотрите, сколько новых посольств образовалось, сколько в них пожарных лестниц, и сколько симпатичных девушек имеют теперь возможность небанально ожидать назначенного времени для международной деловой встречи.
Запомнился еще рассказ одного джентльмена, с южным акцентом поведавшего о том, как при входе в самолет (с женой) ему как-то по-особому улыбнулась стюардесса. И в полете, пока жена наслаждалась сервисом первого класса, муж вышел в туалет и там у них с этой стюардессой все и случилось.
Дело происходило в 1998 году. Возможно, это была внучка той самой стюардессы, которая в свое время одолжила свой свитерок Эммануэль Арсан. Приятно, что годы идут, а сервис Аэрофлота по-прежнему на высоте.
Но несомненным победителем, конечно же, стал рассказ инженера-ракетчика. Оказывается, отечественные космические технологии предусматривают по двухчасовой готовности подъем на фермы обслуживания неких девушек, которые должны что-то там космическое пришивать нитками к чему-то тоже, само собой, космическому. А чтобы девушки пришили то, что надо, за ними наблюдают инженеры-ракетчики. (Именно так, во множественном числе, и те и другие в рассказе и упоминались.)
На старте стоял печально памятный проект "Фобос". Ласково дул теплый байконурский ветерок. Вокруг, насколько хватало взгляда, расстилалась бесконечная цветущая степь. Наверное, была весна - самое благодатное время в тех местах. Где-то внизу, метрах в пятидесяти, суетилась стартовая команда.
Девушки быстро справились с установленной циклограммой работой и занялись инженерами. Все участники этой истории до сих пор вспоминают ее как самое необычное романтическое приключение в своей жизни.
Только одно обстоятельство озадачивает их. Когда все закончилось и пора было спускаться, они всей компанией долго, сколько позволяло время, искали трусики одной из девушек, но так и не нашли. То ли их сдуло с фермы ветерком, то ли застряли где-то в конструкциях и потом сгорели в пламени двигателей, то ли завалились куда-то. Спускаясь в продуваемом лифте, девушка ежилась и прижимала юбку (допустим, они были в юбках, а не в комбинезонах) к бедрам руками. Все очень веселились.
Спустя несколько месяцев, при выполнении подлетного маневра к Марсу, связь с "Фобосом" была потеряна. Возможно, как раз в это время там, в холодной неуютной бездне, над неприветливым красным диском, сервопривод антенны честно, добросовестно и безуспешно пытался преодолеть сопротивление изящно обшитой кружевом резинки. Привод визжал и визжал, падал заряд аккумуляторов, но антенна так и не двинулась с места. Через несколько часов все было кончено. Фиолетовое небо Марса неторопливо прочертила блеклая звездочка. Еще двадцать минут - и на красное ложе марсианской пустыни опустился обгорелый кусочек кружевной ткани. Вечный ледяной ветер повлек его по мертвым барханам, загнал в какую-то лощину и быстро занес сыпучим песком.
Во всей этой истории есть две проблемы, которые необходимо обдумать.
Во-первых, при сходных обстоятельствах погиб и второй "Фобос". Неужели наши специалисты по космической технике столь беспечны, что умудрились дважды потерять трусики?
И второе: неужели технология подготовки к пуску Mars Polar Lander тоже предусматривала пришивание чего-то нитками?
Статьи по Assembler
Как изменить способности компьютера
Автор: Бордачев Андрей Юльевич (glareboa@mail.ru)
С другими интересами автора вы можете познакомиться здесь.
Статья была впервые опубликована в журнале Библиотека информационной технологии (БИТ), N 10 за 1994 год.
Огромное количество микросхем от "простеньких", выполняющих логические операции типа И,ИЛИ,НЕ и др., до сверхинтегрированных контроллеров в которые "впихнута" чуть ли не вся машина (ПЭВМ). Всевозможные дополнительные платы (адаптеры, контроллеры), винчестеры и т.д. Все это призвано к жизни и к взаимодействию с целью облегчить существование своим хозяевам (пользователям, программистам).
Что же, картина получается непростая. Но говорить о сложности устройства компьютера, о сложности его частей, о сложности процессов их взаимодействия излишне - это и так понятно.
Если Вы дочитали до этого места то, может быть, подумали: а к чему это автор намекает на всякие сложности, очевидные же вещи. Если появился вопрос - дадим на него ответ. Любой человек, имевший возможность работать с компьютером, и пользователь, и программист, в один прекрасный день думает: а хорошо бы, если бы компьютер ("ящик") умел делать еще и то-то, и так-то. Установить бы дополнительную "платочку" в компьютер и получить желаемое.
"Ну,"- скажет критически настроенный читатель, - "это же надо собирать какие-то контроллеры, разбираться в микросхемах, понимать в управляющих диаграммах, то есть быть, как минимум, схемотехником."
Он прав, но не совсем. Конечно хорошо быть схемотехником (автор по профессии схемотехник и утверждает это обоснованно), но не обязательно, а вот программистом, для того чтобы применить опыт, описываемый далее, быть нужно.
Дело в том, что многие сетевые адаптеры имеют гнездо для установки ПЗУ (постоянного запоминающего устройства, rom, read only memory), позволяющего при наличии локальной сети осуществлять удаленную загрузку операционной системы. Но, как показала практика, в большинстве случаев эта возможность не используется. Если в это гнездо вместо микросхемы со старой ПЗУ (если она там вообще есть) установить новую, со своей программой, то компьютер обретет новые дополнительные свойства. Например, это может быть программа, защищающая компьютер от несанкционированного доступа, или антивирусная защита (монитор, ревизор и т.п.). Так что учиться схемотехнике не придется. Можно сразу приступить к разработке программы для ПЗУ.
Но в чем же здесь преимущество? Одни только сложности. Вынимай микросхему, ищи новою. Программу нужно еще как-то поместить в ПЗУ. Да и вообще, будет ли она выполняться? Кто или что сделает так, чтобы эта программа получила управление?
Вот именно об этом "механизме", заложенном в BIOS и обеспечивающем возможность выполнения программ, "прошитых" (так называют программы, записанные в ПЗУ с помощью программаторов) в ПЗУ, а также о том, каким образом необходимо оформлять эту программу, и хотелось рассказать заинтересованным читателям.
Отметим при этом, что преимущество программы, размещенной в ПЗУ, заключается в том, что она неуничтожаема и отработает еще задолго до того, как начнут свою работу по загрузке операционной системы с диска модули MAIN BOOT и BOOT. И хотя эти части системы наиболее часто подвержены атакам вирусов, мы хозяева положения и можем блокировать любую атаку или же осуществить восстановительные работы.
волшебная возможность bios
Каким же образом машина узнает, что ей необходимо выполнить еще одну дополнительную программу? Задавшись вопросом, начинаем искать ответ. К счастью есть палочка-выручалочка - листинг BIOS, поставляемый в комплекте (за отдельную плату) с "персоналками". В этом листинге содержится информация, раскрывающая тайны функционирования машины. В частности, и ответ на наш вопрос.
Оказывается, что среди прочих важных дел, совершаемых подпрограммами BIOS, есть дело, заключающееся в проверке присутствия ПЗУ в адресном пространстве с С800:0 до E000:0.
Это пространство сканируется с шагом в 2048 байт на предмет наличия "подписи" 0AA55H. Но ведь может быть и совпадение. Чтобы не ошибиться, после того, как найдена "подпись", производится расчет контрольной суммы методом сложения по модулю 100H (сложение побайтно без учета переноса). Результат при этом должен получиться равным нулю. Но сколько же байтов необходимо просуммировать? Эта информация содержится в одном байте, следующем за подписью. Причем чтобы узнать размер ПЗУ в байтах, необходимо умножить это число на 200H.
Если все эти условия выполняются, BIOS считает, что перед ним ПЗУ, оформленное по правилам, и совершает последний шаг - передает управление на смещение +3 (отсчет начинается с нуля) относительно найденного сегмента. Следовательно, там должна располагаться первая выполняемая команда нашей программы. Обычно это команда jmp. Совершив все необходимое, наша программа должна вернуть управление обратно в BIOS с тем, чтобы та продолжила поиск аналогичных ПЗУ. Следовательно, наша программа должна заканчиваться командой retf.
Для того, чтобы было более ясно, о чем шла речь, ниже приводятся фрагменты кода BIOS, реализующие необходимые проверки и передачу управления.
;#################################################################### ; Поиск дополнительной ROM в области памяти C800->E000 в блоках по 2K ; Модуль ROM должен иметь подпись '55AA' в первых двух байтах и ; индикатор размера ((размер в байтах)/512) в третьем байте. ; Исполняемый код должен начинаться с четвертого байта. ;//////////////////////////////////////////////////////////////////// ROM_SCAN: ;начало фрагмента кода BIOS STI ;разрешить прерывания MOV DX,0C800H ;начало сканирования ROM_SCAN2: MOV DS,DX ;ds - сегмент очередного ROM-модуля SUB BX,BX ;bx - указатель в ROM-модуле MOV AX,[BX] ;взять первое слово в модуле CMP AX,0AA55H ;подпись найдена? JNZ NEXT_ROM ; нет - перейти к следующему базовому адресу ROM CALL ROM_CHECK ; да - проверить контрольную сумму JMP ARE_WE_DONE ;перейти к проверке конца области дополнительной ROM NEXT_ROM: ;следующий ROM-модуль ADD DX,0080H ; позиционировать новый модуль через 2K байт (как сегмент) ARE_WE_DONE: ;проверка конца области дополнительной ROM CMP DX,0E000H ;достигнут адрес E0000? JL ROM_SCAN2 ; нет - перейти к новой проверке подписи ;//////////////////////////////////////////////////////////////////// ;Последующий код не относится к теме статьи ;... ;... ;... ;#################################################################### ;Эта подпрограмма вычисляет контрольную сумму дополнительных ;модулей ROM и, если она верна, вызывает программу из модуля ;(При входе регистр ES указывает на сегмент данных BIOS) ;//////////////////////////////////////////////////////////////////// ROM_CHECK PROC NEAR ;вычислить число байт для сканирования SUB AH,AH ;ax - индикатор размера модуля MOV AL,[BX+2] MOV CL,09H ;ax=ax*512 SHL AX,CL MOV CX,AX ;cx - счетчик байт для сканирования ;вычислить указатель на следующий модуль и поместить его в dx PUSH CX MOV CX,4 SHR AX,CL ADD DX,AX POP CX ;вычислить контрольную сумму модуля CALL ROM_CHECKSUM JZ ROM_CHECK_1 CALL ROM_ERR ;контрольная сумма на совпала! JMP ROM_CHECK_END ;---- Вызов программы, находящейся в ПЗУ ---------------- ROM_CHECK_1: PUSH DX ;сохранить текущее значение указателя MOV ES:IO_ROM_INIT,0003H ;подготовить смещение MOV ES:IO_ROM_SEG,DS ;подготовить сегмент CALL DWORD PTR ES:IO_ROM_INIT ;вызвать программу POP DX ;восстановить указатель ;---------------------------------------------------------- ROM_CHECK_END: RET ;завершить работу ROM_CHECK ENDP ;=========================================== ;Подпрограмма вычисления контрольной суммы ;=========================================== ROM_CHECKSUM PROC NEAR XOR AL,AL NEXT_BYTE: ADD AL,[BX] INC BX LOOP NEXT_BYTE OR AL,AL ;сумма равна нулю? RET ROM_CHECKSUM ENDP
Осталось обговорить еще одну тонкость. Каким образом обеспечить равенство нулю контрольной суммы? Ведь очевидно, что само собой это условие не будет выполняться. Идея проста - необходимо дополнить получившуюся сумму до нуля. Делается это размещением числа, равного разнице между 100H и получившейся контрольной суммой в байте (перед расчетом он должен быть равен нулю), следующем за последней командой программы. Отметим также, что расчет контрольной суммы ведется по количеству байт, равных размеру ПЗУ, а не по размеру получившегося кода программы.
После сказанного можно отобразить структуру программы следующим образом:
смещение | код | комментарий |
+00 | db 55h,0AAh | подпись |
+02 | db (?) | индикатор размера модуля |
+03 | db 0EAh,(?),(?) | передача управления коду (metka) |
+06 | ;... | константы программы |
+?? | metka: ;... |
код программы |
+?? | retf | возврат управления BIOS |
+?? | db (?) | дополнение контрольной суммы до 100h |
Если ваша программа должна работать только на этапе старта компьютера, то ее переменные вы можете размещать в любой области conventional ОЗУ выше той, которая отведена под переменные BIOS (то есть в диапазоне сегментных адресов 0050:0000...9000:FFFF) - на этом этапе указанный диапазон свободен. Гораздо сложнее ситуация, когда ваша программа должна работать после того, как операционная система загружена: например, обслуживать прерывания или предоставлять свои процедуры для вызова обычными программами. В этом случае вам придется предусмотреть механизм, исключающий конфликты использования памяти.
В заключение - две программы.
;############################################################ ;Пример программы рассчитывающей контрольную сумму, ;вычисляющей дополняющий байт и формирующей обрабатываемую ;программу в виде файла на диске. ;============================================================ TITLE ComputeCRC INCLUDE MACRO.DEF LENGTHROM EQU 2000H ;Размер ПЗУ в байтах (8192) CODE SEGMENT BYTE PUBLIC ASSUME CS:CODE,DS:CODE ORG 100H START: JMP SHORT BEGIN ;Имя обрабатываемой программы FileName: DB 'FileName.Ext',0 BEGIN: ;Открыть файл для чтения MOV AX,3D02H MOV DX,OFFSET FileName INT 21H JNC M1 JMP ER M1: ;Прочитать файл в конец программы MOV BX,AX MOV AX,3F00H MOV CX,LENGTHROM MOV DX,OFFSET LastByte INT 21H JNC M2 JMP ER M2: ;Запомнить количество прочитанных байт MOV CX,AX ;Установить указатель позиции в файле на начало MOV AX,4200H PUSHR CX,DX ;PUSHR,POPR - макросы описаны в MACRO.DEF MOV CX,0 ;см.статью Макросы First и Second
MOV DX,0 INT 21H POPR CX,DX JC ER PUSHR AX,BX,CX,DX,DI ; Рассчитать контрольную сумму PUSHR CX XOR AX,AX MOV BX,OFFSET LastByte M3: ADD AL,[BX] INC BX LOOP M3 ;Вычислить дополняющий байт MOV CX,100H SUB CX,AX MOV AX,CX POPR CX ;Настроить указатель на начало обрабатываемой программы PUSHR AX MOV DI,CX ADD DI,OFFSET LastByte-1 ;Найти место в обрабатываемой программе для записи вычисленного байта MOV AX,0 STD REPNE SCASB INC DI POPR AX ;Записать его туда MOV [DI],AL POPR AX,BX,CX,DX,DI ;Записать получившийся модуль на диск MOV AX,4000H INT 21H ;Ошибки не обрабатываем т.к. программа проста ER: ;Закрыть файл MOV AX,3E00H INT 21H ;Нормальное завершение программы MOV AX,4C00H INT 21H LastByte: CODE ENDS END START
В качестве примера, реализующего структуру, описанную выше, приведена программа-скелет, способная стать основой для написания ваших программ:
;############################################################ ;Пример "скелета" программы для записи в ПЗУ ;============================================================ TITLE BiosPassword LENGTHROM EQU 2000H ;Размер ПЗУ в байтах (8192) CODE SEGMENT BYTE PUBLIC ASSUME CS:CODE,DS:CODE ORG 0 START: DB 55h DB 0AAh ;Размер ПЗУ по модулю 200H DB LENGTHROM SHR 9 ;Первая выполняемая команда JMP BEGIN ;--------------------------------- Данные ---- CP1 DB 14,'Copyright (C) ' CP2 DB 18,'by Bordachev A.Y. ' CP3 DB 18,'ver. 1.00-93/03/31' UNFACE DB 4,':-( ' FACE DB 4,';-) ' BIOS DB 5,'BIOS ' PROMPT DB 9,'PASSWORD:' ERR1 DB 4,'ERR1' ;----------------------- Начало программы ---- BEGIN: ;Не забудьте настроить и другие регистры если необходимо MOV AX,CS MOV DS,AX ;--------------------------------------------- ;- Здесь располагается код Вашей программы. - ;--------------------------------------------- ;Вернуть управление вызвавшей программе (BIOS) RETF ;Сюда запишем дополняющий байт DB (0) CodeEnd: ;Все что ниже, заполним кодом 0FFH ;так как в чистом ПЗУ обычно содержится ;именно этот код. DB (LENGTHROM-(OFFSET CodeEnd-OFFSET START)) DUP (0FFH) LastByte: CODE ENDS END START
Читайте также другие статьи Андрея Бордачева: О формате PCX и Макросы First и Second.
Макросы first и second
Автор: Бордачев Андрей Юльевич (glareboa@mail.ru)
С другими интересами автора вы можете познакомиться здесь.
Комментарии: assembler.ru
Макросы - это мощный, удобный и гибкий инструмент. По сути дела, это целый язык программирования, имеющий единственную цель - совершенствование языка ассемблера.
И он прекрасно справляется с этой задачей. Возможны и существуют технические решения, построенные исключительно на макросредствах, превращающие язык ассемблера в полноценный структурированный язык (то есть содержащий полностью функциональный набор структурных операторов if-else-endif, while-next, do-while, continue, break и т.д.) или даже в некоторое довольно близкое подобие объектно-ориентированного языка. При этом все достоинства ассемблерного программирования сохраняются.
Здесь приведены два варианта макросов, решающих одну и ту же задачу - групповую загрузку в стек и восстановление из стека регистров и переменных. Основная особенность этих макросов - сохранение очередности упоминания параметров в загружающем и восстанавливающем вызовах. Например:
pushr eax,ecx,edi,vasya,edx,petya;...popr eax,ecx,edi,vasya,edx,petya
Это очень удобно. Во-первых, снижается вероятность ошибок из-за перепутывания очередности загрузки/восстановления параметров. Во-вторых, облегчается набор текста: достаточно скопировать строку и заменить в ней команду pushr на popr. В-третьих, несколько сокращается длина листинга, о чем тайно мечтают, но боятся признаться все ассемблерщики.
Эту же задачу решает пара макросов @push и @pop, описанных в файле @struct.inc для проекта MyCall.
Такое разнообразие демонстрирует нам гибкость макроязыка и гамму возможных приемов, которые он дает.
;#################################################################### ;Вариант FIRST
;//////////////////////////////////////////////////////////////////// ;Макрос pushr
;В процессе макрорасширения (встраивания макроса в тело программы ;во время ее компиляции) проверяется, сколько параметров из 8 ;максимально возможных указал программист, и формируется столько ;последовательных команд push, сколько нужно. Очевидно, что ;максимальное число параметров макроса без труда может быть увеличено ;настолько, насколько нужно. ;==================================================================== pushr MACRO R1,R2,R3,R4,R5,R6,R7,R8 IFNB <R1> push R1 ENDIF IFNB <R2> push R2 ENDIF IFNB <R3> push R3 ENDIF IFNB <R4> push R4 ENDIF IFNB <R5> push R5 ENDIF IFNB <R6> push R6 ENDIF IFNB <R7> push R7 ENDIF IFNB <R8> push R8 ENDIF ENDM ;==================================================================== ;Макрос popr
;Работает так же, как и pushr, за одним исключением: очередность проверки ;обратная. Это позволяет программисту не менять очередности упоминания ;параметров при использовании макроса в программе. ;==================================================================== popr MACRO R1,R2,R3,R4,R5,R6,R7,R8 IFNB <R8> pop R8 ENDIF IFNB <R7> pop R7 ENDIF IFNB <R6> pop R6 ENDIF IFNB <R5> pop R5 ENDIF IFNB <R4> pop R4 ENDIF IFNB <R3> pop R3 ENDIF IFNB <R2> pop R2 ENDIF IFNB <R1> pop R1 ENDIF ENDM ;#################################################################### ;Вариант SECOND
;//////////////////////////////////////////////////////////////////// ;Вспомогательные макросы
;==================================================================== makevar MACRO name,ext,val ;формирует имя операнда &name&ext EQU
ENDM
makevarn MACRO name,ext ;формирует команду push push &name&ext ENDM
makevarm MACRO name,ext ;формирует команду pop pop &name&ext ENDM ;==================================================================== ;Макрос pushr
;В отличие от варианта First, макрос производит опрос параметров в цикле, ;построенном на директиве IRP. Благодаря этому больше не существует ;ограничения на число параметров. ;==================================================================== pushr MACRO args ;синтаксис указания параметров: <eax,ebx,ecx,...> fcnt=0 ;создание списка операндов IRP s,&args fcnt=fcnt+1 makevar t1,%fcnt,s ENDM fcnt=0 ;создание набора команд push операнд
IRP s,&args fcnt=fcnt+1 makevarn t1,%fcnt ENDM ENDM ;==================================================================== ;Макрос popr
;==================================================================== popr MACRO args ;синтаксис указания параметров: <eax,ebx,ecx,...> fcnt=0 ;создание списка операндов IRP s,&args fcnt=fcnt+1 makevar t2,%fcnt,s ENDM IRP s,&args ;создание набора команд pop операнд
makevarm t2,%fcnt fcnt=fcnt-1 ;знак "-" обеспечивает обратный порядок следования команд! ENDM ENDM
Эта статья не ставит задач изучения макроязыка. Если вы хотите узнать, почему в варианте Second параметры надо брать в угловые скобки, что означает амперсанд в записи &args и знак процента в записи %fcnt, каковы возможности директив IFNB и IRP,- воспользуйтесь документацией на ваш компилятор, и немножко поэкспериментируйте. Будьте уверены: ваши усилия многократно окупятся повышением производительности труда.
Читайте также другие статьи Андрея Бордачева: О формате PCX и Как изменить способности компьютера.
обсуждение статьи
Нам прислал письмо Argus (Мельников Василий Юрьевич, vasily@geolog.kmv.ru, http://www.halyava.ru/club477), в котором справедливо напоминает, что макросы в макроассемблере обладают замечательным свойством рекурсии, позволяющим создавать компактные и изящные программные конструкции. В частности, обсуждаемые в этой статье макросы pushr и popr в рекурсивной версии, предложенной Argus'ом, будут выглядеть так:
;#################################################################### ;Вариант THIRD
;//////////////////////////////////////////////////////////////////// ;Макрос pushr
;Рекурсия обеспечивается тем, что в теле макроса pushr присутствует ;вызов этого же макроса, но без первого аргумента. Легко видеть, что ;рекурсивные итерации макрорасширения будут происходить до тех пор, ;пока не исчерпается весь действительный список аргументов. ;==================================================================== pushr MACRO R1,R2,R3,R4,R5,R6,R7,R8 IFNB <R1> push R1 pushr R2,R3,R4,R5,R6,R7,R8 ENDIF endm ;==================================================================== ;Макрос popr
;Видно, что этот макрос также рекурсивный, но количество итераций ;макрорасширения определяется в нем не числом фактических аргументов, ;как в pushr, а числом формальных параметров (здесь - 8), пока все ;они, сдвигаясь вправо, не заменятся заглушкой dummy. При этом ;реальный код команд pop будет сформирован только для параметров, ;которым соответствуют действительные фактические аргументы. ;==================================================================== popr MACRO R1,R2,R3,R4,R5,R6,R7,R8 IFNB <R8> IFIDN <R8>,<dummy> EXITM ENDIF pop R8 ENDIF popr dummy,R1,R2,R3,R4,R5,R6,R7 ENDM
Рекомендуем обратить внимание на суть заглушки dummy. Это - не константа и не переменная, она не требует объявления или описания. Здесь мы наблюдаем прием, характерный в ассемблере исключительно для макросов, поскольку они способны работать с литералами (текстовыми фрагментами), а dummy здесь - именно литерал. (Естественно, вместо слова dummy можно применить любую другую комбинацию символов). Он используется в формировании макровызовов, а не макрорасширений, то есть участвует в формировании исходного текста программы, а не исполняемого кода.
О формате pcx
Автор: Бордачев Андрей Юльевич (glareboa@mail.ru)
С другими интересами автора вы можете познакомиться здесь.
Статья была впервые опубликована в журнале Библиотека информационной технологии (БИТ), N 8 за 1993 год.
Статья сопровождается примером - исходным текстом программы opcx.zip (3588 байт), выполняющей обработку pcx-файла.
Коротко о том, почему возникла эта статья.
О формате файлов PCX написано довольно много. Это совершенно различная по своему характеру и содержанию литература. Краткие описания формата, подробнейшее изложение способов работы с огромным количеством всеохватывающих функций в фирменных пакетах, библиотеках и многое, многое другое. Вся эта немалая по объему информация хранится на тот случай, когда может возникнуть необходимость создать что-нибудь красочное и впечатляющее для глаз пользователя, желающего украсить экран своего дисплея изображениями, схожими по красоте и точности воспроизведения с фотографическим отпечатком.
Надо сказать, что в работе системного программиста такие задачи практически не возникают. Но вот наступил момент... Перечитав всю информацию, наличествавшую в тот момент в личном архиве, стало понятно, что есть готовность задавать вопросы по теме, но отсутствует готовность осуществить поставленную задачу. Связано это было с тем, что с одной стороны, в разных источниках приводилась противоречащая друг другу информация, а с другой - нигде не обсуждались вопросы возможных непринципиальных, но важных с точки зрения дешифрации отличий формирования данных в файле PCX. И поэтому, как и большинству программистов нашего времени, пришлось провести многочисленные эксперименты и приобрести недостающую информацию и опыт. В результате были написаны процедуры обработки файлов PCX на ассемблере, позволившие создать компактную, быструю, легко модифицируемую программу вывода изображения, исходный текст которой будет приведен в конце статьи.
Цель данной статьи - дать достаточное количество информации для того, чтобы, приступая к написанию программ обработки PCX файлов, не испытывать сомнений в принципиальных вопросах.
формат pcx
Не претендуя на полноту описания форматов, обрисуем общую структуру файла, структуру заголовка файла, поля заголовка файла, способ упаковки данных и некоторые тонкости обработки данных.
Формат PCX постоянно совершенствуется, а также в зависимости от программного продукта может быть несколько модифицирован.
Общую структуру файла можно условно разбить на две части: заголовок файла и упакованные данные (рис.1).
В новых, 256-цветных форматах, присутствует третья часть.
раздел файла | размер, байт |
заголовок файла | 128 |
упакованные данные | размер файла-128 |
дополнительные данные для 256-цветных режимов | 769 |
Заголовок файла - это набор структурированных полей фиксированной длины. На рисунке 2 представлена схема заголовка файла:
N | смещение | название | размер | дополнительная информация | |
01 | 00 | 00h | manuf | byte | Изготовитель |
02 | 01 | 01h | hard | byte | Информация о версии |
03 | 02 | 02h | encod | byte | Способ кодирования |
04 | 03 | 03h | bitpx | byte | Бит на точку |
05 | 04 | 04h | x1 | 2 bytes | Размеры образа |
06 | 06 | 06h | y1 | 2 bytes | |
07 | 08 | 08h | x2 | 2 bytes | |
08 | 10 | 0Ah | y2 | 2 bytes | |
09 | 12 | 0Ch | hres | 2 bytes | Разрешение дисплея по горизонтали |
10 | 14 | 0Eh | vres | 2 bytes | Разрешение дисплея по вертикали |
11 | 16 | 0Fh | clrma | 48 bytes | Палитра |
12 | 64 | 40h | vmode | byte | Видео режим |
13 | 65 | 41h | nplanes | byte | Количество слоев |
14 | 66 | 42h | bplin | 2 bytes | Байтов на строку |
15 | 68 | 44h | palinfo | 2 bytes | Тип палитры |
16 | 70 | 46h | shres | 2 bytes | Разрешение сканера по горизонтали |
17 | 72 | 48h | svres | 2 bytes | Разрешение сканера по вертикали верт |
18 | 74 | 4Ah | xtra | 54 bytes | Обычно не используется |
В первой графе указывается порядковый номер поля, который приведен для более легкой ориентации в таблице и более легкого изложения материала. Во второй - смещение до начала поля в десятичном и шестнадцатиричном исчислении. Третья содержит название, которое сохранено таким же, как и в пакете PCX Programmer's Toolkit фирмы Genus Microprogramming.
Рассмотрим подробнее каждое из полей.
Поле 01 (manuf) содержит некоторое число (например 10 для "PC Paintbrush" Zsoft Corp.), говорящее о том, в каком из редакторов создан этот PCX-файл.
Поле 02 (hard) - информация о версии формата.
Поле 03 (encod) позволяет определить, изменился или нет способ сжатия данных. До сих пор большинство редакторов заполняет это поле значением равным 01, свидетельствующим о том, что используется метод кодирования длинными сериями или метод группового кодирования (см. описание ниже).
Эти три поля, как очевидно, не нужны непосредственно при дешифрации данных, но при возникновении проблем с расшифровкой позволят сориентироваться программисту в том, как осуществлять дешифрацию, если есть достаточно подробное описание форматов, или к какой фирме обращаться за разъяснениями.
Поле 04 (bitpx) показывает, сколько бит отводится для сохранения информации о яркости пикселя в слое. Является достаточно удобным признаком определения (в дополнение к другим признакам) содержит ли данный файл 256-цветную палитру. При значении равном 08 - содержит.
Пиксел - минимальный графический объект. Обычно соответствует точке на экране, что в общем случае необязательно.
Слой (plan) - совокупность байтов видео-памяти. Количество слоев зависит от номера установленного видеорежима и, естественно, от физической организации видеопамяти.
Поля 05...08 (x1, y1, x2, y2) определяют геометрические размеры картинки в пикселах. Например, если размер картинки 640 пикселов по горизонтали и 350 по вертикали, то в этих полях будут записаны следующие числа: 0, 0, 639, 349.
Поля 09,10 (hres, vres) позволят узнать разрешающую способность дисплея, при "участии" которого создавалась та или иная картинка.
Поле 11 (clrma) хранит информацию о палитре картинки. Данные хранятся 16-ю триплетами, определяющими значение каждого из 16 регистров палитры:
Рис.3. Формат поля номер 11
Для 256-цветных режимов количество байтов, необходимое для хранения всей палитры, равно 768, и понятно, что в поле 11 не хватает места для размещения этого массива. Поэтому эти триплеты располагаются в конце файла после байта-"маяка", равного 0Ch:
Рис.4. Расположение данных 256 - цветной палитры
Для того, чтобы попасть на это поле, необходимо:
установить указатель в конец файла; передвинуть его на 769 байтов назад; проверить, равен ли адресуемый байт значению 0Сh или 0Ah (зависит от программы, формировавшей pcx-файл).
Делать это, конечно, необходимо в том случае, если вы уверены, что pcx-файл содержит 256-цветную палитру.
Байты RGB поля 11 могут принимать значения в диапазоне от 0 до 255. Но не каждый адаптер дисплея сможет воспроизвести заданное значение. Например, для EGA адаптеров диапазон этих значений лежит в пределах от 0 до 63. Поэтому для правильной интерпретации палитры необходимо учитывать характеристики оборудования, на котором будут воспроизводиться изображения.
Прим.ред.: Не забывайте, что статья была написана в начале 90-х годов. В настоящее время адаптер EGA - в далеком прошлом, и практически весь парк современных компьютеров общего применения свободно воспроизводит 256-цветную палитру.
Кроме того, в настоящее время появились программные продукты (например, PCX Programmer's Toolkit фирмы Genus Microprogramming), в которых значения палитры "нормализованы", т.е. лежат в диапазоне от 0 до 63, и значащими являются только младшие 6 битов каждого байта.
Способ декодирования данных поля 11 в байт для инициализации регистра палитры прост, и потому отошлем читателя к исходному тексту процедуры CPALEGA (см.ниже). Заметим только, что для адаптера VGA имеет смысл использовать другой способ установки необходимой палитры, связанный с инициализацией DAC-регистров.
Поле 12 (vmode) подскажет, какой видеорежим необходимо установить.
Поле 13 (nplanes) позволит определить, сколько слоев видеопамяти в этом режиме, и алгоритм вывода данных на экран.
Подразумевается, что возникает необходимость отслеживания ситуации заполнения строки и переключения вывода на другой слой.
Поле 14(bplin) определяет количество байтов на строку внутри слоя. Под строкой подразумевается последовательность байтов, содержащих графические данные, из которых строится изображение.
Поле 15 (palinfo) интерпретирует палитру. Если байт равен 01, то палитра цветная, если 00 - то передаются градации серого.
Поля 16,17,18 (shres, svres, xtra) могут содержать различного рода дополнительную информацию, которая сильно специфична и, как правило, не нужна для простых программ, выводящих рекламные картинки. Обычно эти поля заполняются нулями.
Как было уже сказано, при упаковке данных изображения используется метод, носящий название "кодирование длинных серий". Суть метода довольно проста. Каждой повторяющейся последовательности байтов можно поставить в соответствие код, состоящий из двух байт. Первый из них является счетчиком повторений байта, стоящего вторым в этом коде. Например, если есть последовательность из 34 (22h) байтов типа 55h, то вместо этих 34(22h) байтов в закодированном файле будут стоять два числа: 22h,55h:
Рис.5. Кодирование длинных серий
В файлах PCX возникает необходимость различать байт-счетчик и байт-эталон. Это связано с тем, что отдельные части изображения могут состоять из неповторяющихся данных и байт-счетчик в этом случае отсутствует. Поэтому он должен быть каким-либо способом помечен. Это можно сделать, установив два старших бита в 01, а оставшиеся 6 битов будут хранить значение счетчика. Следовательно в файле PCX та же последовательность из 34(22h) байтов будет представлена как 0E2h,55h.
Очевиден и способ декодирования данных:
Проверить равны ли оба старших бита считанного байта 01. Если равны, то следующий байт необходимо повторить столько раз, сколько получится из байта-счетчика после обнуления двух его старших битов. В противном случае это - байт-эталон, и его нужно повторить один раз.
Отметим, что в случае, когда байт-эталон имеет установленные стаpшие биты в единицу (напpимеp, чеpточка длиной в 8 пикселей и следом за ней 8 чеpных пикселей пpедставляются в виде двух байтов 0FFh,00h), то из-за этого он похож на байт-счетчик, и его пpедваpяют байтом-повтоpителем, pавным единице. Этим снимается неоднозначность опpеделения типа данных.
Теперь, для завершения обсуждения вопроса о кодировании, покажем, каким образом располагаются в файле данные, хранящие изображение.
Вначале идут байты, относящиеся к нулевому слою, затем - к первому, и так далее до четвертого включительно, после чего все повторяется сначала:
Рис.6. Порядок следования данных
программа обработки файла pcx
В общем случае программы должны обладать возможностью и создавать, и интерпретировать файл этого формата.
Под интерпретацией здесь понимается возможность правильно понимать данные, хранящиеся в заголовке pcx-файлов, и в соответствии с ними (данными заголовка) строить на экране изображение.
Как правило - это мощные графические редакторы или утилиты, им сопутствующие. Но есть задачи, не требующие создания файлов формата PCX. Необходимо только второе - интерпретировать. Как правило, это универсальные программы-вьюеры. Есть задачи и более простые - показать на экране рекламное изображение. Для этого надо совсем мало, так как в связи с неизменностью условий работы программы практически отпадает необходимость подробно анализировать заголовок файла PCX. Такая задача и предлагается вашему вниманию.
Наилучший способ объяснить - это привести пример. Поэтому приступим к изложению задачи, которую необходимо решить и к описанию программы, ее реализующей.
Построение любой программы начинается с четкого уяснения условий, поставленных задачей. Каковы же эти условия?
минимальный размер кода минимально возможный и фиксированный размер занимаемого пространства при выполнении программы быстрота вывода способность "понимать", возможна ли обработка данного pcx-файла разбор палитры и инициализация регистров палитры видеоадаптера независимость от того, каким из графических редакторов создавался pcx-файл (полной независимости конечно, не бывает) режим работы монитора с разрешением 640х350 (режим 10h для адаптеров EGA/VGA) pcx-файл должен находиться отдельно от программы вывода
Первые два условия объясняются желанием не увеличивать "безгранично" размеры программы*), к которой пристыковывается этот модуль, и, во-вторых, быть независимым от размеров pcx-файла и от типа (.com или .exe) основной программы. Предваряя результат, скажем, что размер исполняемого модуля менее одного килобайта. А процедуры, относящиеся непосредственно к декодированию и выводу изображения, занимают около 600 байт.
*) Это ухудшило бы потребительские характеристики программы. Например, если вы хотите использовать какой-либо популярный драйвер или утилиту (с разрешения автора) для рекламы то было бы совершенно неприемлемо увеличивать размер программы на 10 или больше килобайт.
Это объясняется тем,что программа написана на языке ассемблера, и тем, что поставленная задача проста, и поэтому количество процедур мало. Это же обеспечивает выполнение и третьего условия.
Под способностью "понимать" имелась ввиду реализация программного блока, анализирующего необходимые поля заголовка pcx-файла, и, в зависимости от их содержимого, формирующего команды, позволяющие программе ветвиться.
Выполнение пятого условия необходимо для того, чтобы обеспечить некоторую свободу маневра и запас "прочности" при "встрече" с различной техникой с одной стороны, а с другой - возможности более полно использовать палитру.
Говоря о шестом условии, подчеркнем, что существует большое разнообразие нюансов при записи данных в pcx-файл.
Например, автор столкнулся с тем, что достаточно часто графические редакторы или утилиты формируют pcx-файл, считая некоторые характеристики изображения неизменными (например, размер текстовой строки считается величиной постоянной и равной 80 символам в графическом редакторе PMTV, поставляемом совместно с ручным сканером "A4SCAN" фирмы A4TECH CO.ltd.(U.S.A.)).
Это дает определенные преимущества авторам вышеупомянутого программного обеспечения при его создании, так как сокращается контроль разнообразных условий, и по той же причине упрощается работа непосредственно в графическом редакторе.
Поясним это утверждение следующим примером.
Предположим, мы нарисовали линию белого цвета длиной в 35 пикселей. Размер же всего изображения примем равным 67x1 пикселей, для упрощения рисунков и рассуждений:
Рис.7. Структура линии на экране
Данные о 8 точках умещаются в одном байте. Подсчитав количество байтов, видим, что нужно 5 байтов для хранения информации о всех точках линии одного слоя. Причем в пятом байте используются только три бита. Для хранения же информации о всех точках изображения необходимо [67/8]·4=9·4=36 байтов (здесь квадратные скобки означают операцию округления в большую сторону).
Посмотрим теперь, как выглядит закодированное изображение в pcx-файле, формируемом редакторами PC Paintbrush и PMTV A4TECH (рис.8).
Логично предположить, что pcx-файл должен содержать 5·4 байтов (рис.8а) без учета размера заголовка. Линия белого цвета, и поэтому требуется инициализация 4-х слоев видео-памяти. Но практика показывает (рис.8б,в), что оба редактора поступают по-другому и размеры pcx-файла больше, чем ожидалось. За счет чего же происходит увеличение размера?
В файле, созданном редактором PMTV (A4TECH) видим (рис.8в), что для каждого слоя строка содержит (начиная с 4 колонки и до конца) дополнительную информацию, относящуюся к незанятой нашим изображением части экрана. То есть, иными словами, в файле хранится дополнительная информация о всей строке экрана независимо от размеров изображения по горизонтали.
В файле же, созданном PC Paintbrush, мы наблюдаем то же самое, за исключением того, что хранимая информация зависит от размеров изображения по горизонтали и выбирается кратной целому числу.
Казалось бы, во втором случае подход более рационален, так как размер файла меньше. К сожалению, дело омрачается тем обстоятельством, что в байте, расположенном после после байтов с изображением (рис. 8б, колонка 4, выделено жирным), оказывается "мусор", и если не принимать никаких мер, то справа от изображения появится красивая, но ненужная бахрома. "Мусор" образуется из-за того, что буфер с записываемыми данными предварительно не очищается, и неинициализированные байты могут содержать любую информацию.
С4h,FFh,07h,C3h,00H - 0-й слой
С4h,FFh,07h,C3h,00H - 1-й слой
С4h,FFh,07h,C3h,00H - 2-й слой
С4h,FFh,07h,C3h,00H - 3-й слой
а) предполагаемый результат
С4h,FFh,07h,01h,C5h,00H - 0-й слой
С4h,FFh,07h,03h,C5h,00H - 1-й слой
С4h,FFh,07h,21h,C5h,00H - 2-й слой
С4h,FFh,07h,32h,C5h,00H - 3-й слой
б) PC Paintbrush Zsoft Corp.
С4h,FFh,07h,FFh,00H ... - 0-й слой
С4h,FFh,07h,FFh,00H ... - 1-й слой
С4h,FFh,07h,FFh,00H ... - 2-й слой
С4h,FFh,07h,FFh,00H ... - 3-й слой
в) PMTV фирмы A4TECH.
Рис.8. Содержимое pcx-файлов
Значение поля 14 (bplin) в случае PC Paintbrush равно здесь 11 байтам, оно зависимосит от размеров изображения. Для редактора PMTV оно постоянно и всегда равно 80 байтам.
Принятие мер выражается в увеличении программного кода, что конечно же пустяки для PC Paintbrush или другой большой по размеру программы, но что плохо для задач типа той, которую решал автор (см. второе условие в приведенном выше списке требований к программе).
Автору кажется, что в этом смысле подход, реализованный в PMTV (A4TECH) более рационален. Во-первых, потому, что алгоритм кодирования информации, принятый для pcx-файлов, далек от совершенства и выигрыш так мал, что его можно и не заметить. Во-вторых, сокращается размер кода программы и упрощается обработка pcx-файла.
Основная цель кодирования - сжатие информации. Метод кодирования в файлах PCX дает результат намного худший, чем например метод, принятый в файлах типа GIF, TIFF и других.
На этом завершим комментарии к условиям задачи и перейдем к составлению и обсуждению блок-схемы:
первое, что необходимо сделать - это проверить, передается ли имя файла, и если да, то проверить, существует ли такой файл. при положительном результате проверки прочитать в буфер программы заголовок pcx-файла. затем посмотреть поле 03 (encode) и убедиться, что это известный нам способ кодирования. Далее прочитать поле 12 (vmode) и проверить, сможем ли мы обслужить обозначенный видео-режим. в завершение проверить поля 01 и 02 и убедиться, что это известные нам фирма и номер версии. После этого можно приступить к подготовке данных, необходимых для дальнейшей работы.
В исходном тексте нашей программы отсутствует такой подробный разбор, так как для данной задачи вышеописанные условия известны заранее. Поэтому после подготовки данных можно установить необходимый видеорежим дисплея, вывести изображение и остановиться в ожидании команды пользователя. По команде восстановить исходный режим и завершить программу (см. блок-схемы на рис.9).
Основная программа OPCX#4. Процедура EGAP
Рис.9. Блок-схемы
Рассмотрим теперь, что происходит в процедуре EGAP.
Поскольку к данному моменту заголовок файла PCX прочитан, мы приступаем к подготовке данных.
Определяем количество байтов, отведенных на строку. Это позволит определить, когда заканчивается строка и нужно ли переключать слой видеопамяти. Формируем маску для очистки "мусора". Неизбежность этого связана с тем, что "мусор" может присутствовать и в последнем байте, относящемся к изображению, а нам необходимо очистить только "загрязненные" биты. Например, для байтов в колонке номер 7 белой линии длинною в 75 пикселов необходима маска "07h":
1 2 3 4 5 6 7
С4h,FFh,С4h,FFh,C1h,FFh,17h - 0-й слой
С4h,FFh,С4h,FFh,C1h,FFh,37H - 1-й слой
С4h,FFh,С4h,FFh,C1h,FFh,07H - 2-й слой
С4h,FFh,С4h,FFh,C1h,FFh,47H - 3-й слой
Рис.10
Преобразовываем и устанавливаем палитру. "Сообщаем" адаптеру дисплея о том, что вывод изображения будет происходить в послойном режиме. И начинаем ...
Вывод изображения
Блок-схема вывода изображения, представленная на рисунке 11, достаточно подробна и не требует пояснений. Следует только сказать, что в этой процедуре есть дополнительные проверки, связанные с необходимостью отслеживать количество прочитанных и выведенных байтов. Это необходимо для того, чтобы правильно осуществлять постепенную подкачку данных из файла PCX.
Внимание не заострялось на этом моменте, так как это не являлось основной темой.
Рис.11. Процедура SETSCR
На этом можно закончить описание блок-схем программы, а читателю посоветовать приступить к изучению исходного текста программы и экспериментам с ним: opcx.zip (3588 байт).
Чтобы упростить читателю знакомство с исходным текстом программы, он снабжен комментариями и оформлен в виде программы типа .COM с возможностью передачи программе имени обрабатываемого pcx-файла через командную строку, и полностью готов к ассемблированию.
Литература:
1. Описание пакета PCX Programmer's Toolkit Genus Microprogramming, February 1, 1989.
Читайте также другие статьи Андрея Бордачева: Как изменить способности компьютера и Макросы First и Second.
Статьи
function hide(id){id.style.display="none";} if(dhtml){document.write("Все комментарии: [+][-] Открывать: [несколько]");}
win32asm
[+] ms developer studio - среда разработки для asm | |
Каждый программист, как хомячок, любовно обустраивает среду своего обитания. Developer Studio, конечно, нельзя назвать идеальным домиком для бедного маленького одинокого ассемблерщика. Где-то мокро, где-то поддувает. Но в принципе жить можно. | |
[+] browse info для ассемблера | |
Но есть в MS Developer Studio и свои маленькие прелести. Имеется в виду, конечно, не подвисающий время от времени процесс компоновки, а замечательное средство browse info, обеспечивающее мгновенный вызов на экран любого идентификатора в проекте, где бы он ни находился. Чуть-чуть поднатужившись, browse info можно приспособить к ассемблерным проектам, и тогда жизнь ассемблерщика становится совсем безоблачной и счастливой. | |
[+] компиляция файлов .asm | |
Для того, чтобы убедиться, что большинство опций командной строки компилятора ml.exe из пакета MASM совершенно не нужны при разработке ассемблерных приложений, надо перебрать их все. Что мы и сделали в этой справочной статье. | |
[+] минимальная stub-программа | |
Маниакальное стремление ассемблерщика к оптимальности доводит его иногда до крайностей. В самом деле, фраза "This program cannot be run in DOS mode" просто-таки неприлично длинна. Оптимально в ней должно быть 0 байт. Именно этого мы и добились, сократив stub-программу до 64 байт (ну, кто меньше?) | |
[+] зачем он нужен, этот ассемблер? | |
То есть, в нашем контексте, имеет ли смысл писать прикладной софт на ассемблере? Чем сотрясать воздух разными умозрительными аргументами, лучше сделаем вот что. Возьмем задачку, несложную, но реальную. Допустим, сделаем RAS-звонилку (каких уже висит на download'ах миллион, от примитивных до самых навороченных). И напишем ее два раза: на C++ и на ассемблере, применяя одинаковые программные решения. А потом сравним, что получилось, и сделаем выводы. | |
Читайте также:
обсуждение этой статьи с MemoBreaker'ом дополнение Геннадия Майко. | |
[+] минимальное приложение | |
Минимальное приложение имеет множество достоинств: очень быстро пишется, занимает минимум ресурсов, не требует сопровождения, работает с такой скоростью, что его не видно. Недостаток у него один: оно совершенно никому не нужно. Именно этим оно и интересно настоящему ассемблерщику. | |
[+] шаблон оконного приложения | |
В отличие от минимального приложения, рассматривавемый в этой статье шаблон оконного приложения - чрезвычайно полезная вещь. Любой программист может спокойно взять его и, немного доработав, превратить, например, в MS Word, или в 3d Studio Max. | |
[+] параметры функции WinMain | |
Название этой статьи не совсем удачно. Надо бы назвать ее так: "Как обойтись без параметров функции WinMain, сэкономив на этом кучу ресурсов." | |
[+] старт и завершение приложений | |
Эта статья - чисто познавательная. Все дело в том, что старт и завершение работы приложения обслуживает операционная система, так что от программиста требуется только две вещи: (1)решить, а надо ли вообще позориться, стартуя приложение, и (2)как можно скорее завершить его работу. | |
[+] вызов функций api | |
В принципе, это единственная статья, которая действительно необходима для обучения программированию под Windows на ассемблере. Как только программист узнает, как вызвать API, все остальное он станет способен делать самостоятельно, без учебников и подсказок. Потребуется только справочник Platform SDK, да знание двух языков: C и английского (оба - в объеме церковно-приходской школы). | |
[+] ошибки при вызове функций api | |
Самая большая ошибка - в том, что вы вообще захотели вызвать функцию API из ассемблерного приложения. Все остальные в сравнении с этой - мелочь. В том числе и те, о которых идет речь в маленьком топике из одной конференции, который вы сможете прочитать здесь. | |
[+] взаимодействие экземпляров приложения | |
Конечно, приятно, когда написанное вами приложение пользуется популярностью. Но только не на одном компьютере. В этом случае обычно бывает достаточно иметь его в единственном экземпляре. Как этого добиться - читайте здесь. И как говорится, "ноу проблем" лучше, чем "нихт ферштеен". | |
[+] взаимодействие экземпляров приложения (вариант) | |
Еще один вариант взаимодействия экземпляров приложения, предложенный Геннадием Майко. Просто, элегантно и функционально. |
ассемблер
[+] настоящий ли вы ассемблерщик? (психологический тест) |
Без сомнения, это - ключевой документ на сайте assembler.ru. Именно с него следует начинать обучение программированию на ассемблере. В настоящее время нами рассматривается вопрос о включении этого теста во все сертификационные экзамены Microsoft. Предполагается, что успешная сдача этого теста должна автоматически приводить к отказу в выдаче сертификата. |
[+] лептонный стиль программирования |
Стиль программирования - такая же неувядающая тема, как прогноз погоды. Как Атлантика посылает нам один за другим свои циклоны и антициклоны, подгадывая с первыми к походу на шашлык и со вторыми - к авралу на работе, так роддома и факультеты прикладной математики бескрайней Родины посылают нам поколения программистов, кладущих все свои молодые силы на написание программ, которые не способен понять не только автор, но и компьютер. Статья предлагает еще одно решение этой принципиально неразрешимой проблемы, за которое, конечно же, опять придется заплатить оптимальностью программы. |
[+] как писать на masm в строчку |
Повторяю еще и еще раз: в слове "писать" в названии статьи ударение падает на второй слог! И речь в статье идет совсем не о том, что TASM лучше MASMа, а о том, как записывать команды в исходнике в одну строку, формируя из них законченные мысли и избавляя себя от излишнего вертикального скроллинга. |
[+] о формате pcx |
Формат PCX - один из старейших графических форматов. В силу этого у него много недостатков: ограниченная палитра, малая степень сжатия, невозможность анимации и пр. Но у него есть одно неоспоримое преимущество: простота. И поэтому он хорош для изучения принципов организации графических форматов. Эта статья даст вам стартовый импульс. Имеется исходный текст программы-примера, выполняющей разбор pcx-файла. Автор статьи - Андрей Бордачев. |
[+] как изменить способности компьютера |
Обычным пользователем BIOS компьютера воспринимается как данность: обеспечивает старт компьютера, предоставляет интерфейс для изменения настроек CMOS, обслуживает несколько прерываний, используемых DOS-программами, - вот, пожалуй, и все. Однако совсем несложно расширить возможности BIOS. Если вам нужно разместить программу в ПЗУ и исполнять ее до старта операционной системы - эта статья для вас. Статья сопровождена исходными текстами необходимых программ. Автор - Андрей Бордачев. |
[+] макросы first и second |
Рассматриваются макросы, решающие задачу групповой загрузки в стек и восстановления из стека регистров и переменных. Хороши как начальная точка и набор идей для обустраивания рабочей среды собственными макросами. Автор - Андрей Бордачев. |
разное
[+] как смотреть assembler.ru локально |
Технический прогресс достиг невидинных высот. Пятый Explorer научился-таки сохранять страницы вместе с рисунками, внешними таблицами стилей, апплетами и прочей дребеденью, которая сегодня берет на себя 90% дизайна сайта. Даже страницы assembler.ru,будучи сохранены с помощью этой функции, почти похожи на самих себя. Глядишь, еще немного - и Explorer научится понимать содержимое документа настолько, что мы, грешные, ему больше не понадобимся. Но до тех пор мы все-таки оставляем на сайте эту статью. Тем более что она почему-то очень нравится поисковым машинам. |
[+] рабочее место настоящего ассемблерщика |
Если вы подумали, что на этой странице будет нарисована филейная часть организма, то, будучи в принципе правы, в данном конкретном случае ошиблись. Здесь вы увидите интерьер, а в нем - владельца assembler.ru. Знающие люди говорят, что похож. Выполнено в 3D Studio Max. |
[+] можно ли зарабатывать на жизнь shareware? |
Можно, конечно, но хлебушек этот (и маслице к нему) достается не легче других. Если вы чувствуете в себе талант разработчика и ненависть к начальникам - вы прирожденный шароварщик. Только вот сочетается ли все это с вашим талантом настоящего ассемблерщика? |
[+] сколько зарабатывают системные программисты? |
Топик из одной Usenet-конференции. Народ из разных стран делится информацией о своих доходах. Все, естественно, кончается небольшим флеймом. На самом же деле топик кончился тем, что один из участников пожалел другого и предложил ему работу, но это сообщение мы сюда не включили, так как хэппи-энд - это не наш стиль. |
[+] так в каком же веке мы живем? |
Статья писалась в марте 2000-го года, и тогда все лодки плавали, все башни стояли и ни одного подземного перехода взорвано не было. Поэтому мы опрометчиво решили, что 2000-й год - это первый год XXI-го века. А теперь, убоявшись поговорки "Как встретишь - так проведешь", мы так уже не думаем. Впрочем, и 2001 год вряд ли будет более подходящ в качестве первого года нового века. В любом случае, как клали по 20 человек в месяц в Чечне (и это одних только федералов!) - так и будем класть. |
[+] о пользе монополий |
Полемическая статья о всемирно-исторической роли Microsoft и о неотъемлемом свойстве любого государства - лицемерии. |
[+] как починить hewlett-packard |
Сам-то HP чинить, конечно, не надо, у него все в порядке. По крайней мере, при взгляде с этого берега Берингова пролива. Но вот железки его время от времени ржавеют. В этой статье мы будем тренироваться их чинить с помощью добрых самаритян из сервисного центра HP, что расположен в г.Москве. |
[+] догадка гольдбаха |
О-о-о, это отдельная песня! Она заунывно звучит уже 258 лет, и достала многих. Assembler.ru тоже не избежал ее неброского очарования. Если в вашей памяти все еще свежо детское воспоминание о наборе головоломок - детище славного завода Машполимерстройконструкция им.тов.Лациса (г.Жданов), эта песня звучит и для вас. Только ради бога, береги голову, Сеня! |
[+] догадка гольдбаха (версия 2.1) |
Еще одно доказательство Догадки Гольдбаха. А вообще-то этих доказательств столько, что пора бы уже принять международный закон о том, что при наличии определенного критического числа доказательств любую теорему следует считать доказанной. |
[+] догадка гольдбаха (версия тима туманного) |
Вклад Тима Туманного в достижение критического числа доказательств. Возможно, более весомый, чем наш. Нобелевский комитет рассудит. |
[+] впечатления от "cегоднячко" |
Была когда-то такая передача на НТВ. Как, вы не знаете, что такое НТВ? Это же телевизионный канал, принадлежит на паях Газпрому, фирме "Видео-Интернешнл", ну и, конечно, Петру I, куда ж без него. Поэтому так и называется - Нукабыстроденьгинабочкуатопосадим ТВ. |
[+] правильная история компьютера |
Кому как, а нам неприятно, что весь мир считает американцев изобретателями компьютера. Это прямая ложь и фальсификация. Как это так: радио, лампочку, паровоз и самолет видите ли мы изобрели, а компьютер - не мы? Эта статья восстанавливает историческую справедливость и самое главное - приводит в порядок компьютерную терминологию. |
[+] классификация информации |
Честно говоря, сам не понял, чего написал. |
[+] что такое фашизм |
Наш скромный вклад в решение второй по трудности (после Догадки Гольдбаха) проблемы, стоящей перед человечеством: определении понятия "фашизм". Как сказал великий: "Я готов убить тебя за твои убеждения, но при этом готов отдать жизнь за то, чтобы ты мог убить меня за мои убеждения". |
[+] гимны россии |
Вместе со всей страной неожиданно обнаружив, что нашим спортсменам нечего петь, assembler.ru взял на себя историческую ответственность сочинить для них Гимн России. На ум пришел какой-то знакомый мотивчик, то ли Леннона, то ли Modern Talking, а за словами мы вообще никогда в карман не лазим. Получилось аж два варианта. |
[+] cardiotonic pill |
Этот материал находится в разительном контрасте со всем предыдущим. Не читайте его никогда! И дай вам бог здоровья. |