===
Тридцать лет назад о существовании этой планеты узнал человек. Спустя пять лет ее первооткрыватель Николай Черных решил дать астероиду имя - Ирпедина. Так выпускник Иркутского педагогического института выразил свою признательность альма-матер. Сегодня вузу вручили официальное свидетельство о присвоении названия.
===
Search in the blog:
2008-11-28
2008-11-24
Про книгу о вождении автомобиля
Отсканированный вариант упомянутой вчера книги про вождение автомобилей высокой проходимости есть, например, на Уазбуке: http://www.uazbuka.ru/lib/driving.zip
В формате DOC (MS Word), но читать можно.
В формате DOC (MS Word), но читать можно.
Листаем пожелтевшие страницы: советы по вождению
Вслед за правилами попалась забавная книга 1974 года. В. Б. ЛАВРЕНТЬЕВ. ВОЖДЕНИЕ АВТОМОБИЛЕЙ ВЫСОКОЙ ПРОХОДИМОСТИ (В ПОМОЩЬ СТРОИТЕЛЯМ БАМ).
Книга построена по типичным тогда правилам. Без даже малой части теории и основ физики никуда. Но есть и куча чисто практических советов.
Есть и такие советы (фактически сейчас это советы для автомобилей с АКПП):
Красота!
Книга построена по типичным тогда правилам. Без даже малой части теории и основ физики никуда. Но есть и куча чисто практических советов.
Многие опытные водители при встрече с разбитыми участками шоссе съезжают на обочину или полевую дорогу, которая идет параллельно шоссе — это обычно позволяет повысить среднюю скорость и снизить утомляемость от тряски.
При быстром течении двигаться следует под углом к берегу по течению. Это уменьшит волну перед автомобилем. Необходимо избегать крутых уступов на выходе из воды, а при отсутствии лучших участков срезать их лопатой. При входе в воду дверь кабины водителя необходимо открыть, чтобы вода быстро заполнила ее и не происходило всплывания передней части автомобиля. При выходе следует также открыть дверь, чтобы вода быстро вылилась.
В процессе преодоления участков бездорожья иногда складывается обстановка, при которой единственной возможностью объезда препятствия или разъезда является движение через участок мелколесья.
Для валки буфером сосновых деревьев ориентировочно необходимы следующие усилия тяги, кгс:
Диаметр ствола 100 мм 720
...
Для валки деревьев диаметром более 100—150 мм подъезжать к ним необходимо так, чтобы ствол приходился на стык продольной балки рамы с буфером. В противном случае буфер может быть погнут.
На выходе с крутого спуска может иметь место утыкание буфером в грунт. Однако грунт перед буфером, если он нескальный, обычно сдвигается легко и не оказывает большого сопротивления.
Есть и такие советы (фактически сейчас это советы для автомобилей с АКПП):
ОСОБЕННОСТИ ВОЖДЕНИЯ АВТОМОБИЛЕЙ ВЫСОКОЙ ПРОХОДИМОСТИ, ИМЕЮЩИХ ГИДРОТРАНСФОРМАТОР В ТРАНСМИССИИ
Гидротрансформатор облегчает преодоление таких препятствий, как уступ, облегчает валку деревьев при необходимости движения через мелколесье. Он позволяет подойти вплотную к препятствию и без удара, плавно начать преодоление его
Для этого после упора в препятствие достаточно увеличить обороты двигателя для получения достаточного уровня тяги на колесах. Остальные фазы прохода препятствий не отличаются от рассмотренных выше.
Наличие гидротрансформатора, позволяющее автомобилю двигаться на очень малых скоростях, порядка 0,5 км/ч, с успехом может быть использовано при необходимости ограничить уровень тяги на колесах при движении по участкам со слабым грунтом.
Преодоление сложных профильных препятствий, а также маневрирование в особо узких местах, например при погрузке автомобилей на другие виды транспорта, очень удобно выполнять при наличии в трансмиссии гидротрансформатора. В этом случае водитель, установив постоянную малую частоту вращения коленчатого вала двигателя и включив низшие передачи в коробке передач и раздаточной коробке, оперирует только педалью тормоза, регулируя степень притормаживания. Это позволяет двигаться с любой минимальной скоростью за счет проскальзывания гидротрансформатора.
Красота!
Еще по этой теме:
- В. Б. Лаврентьев. Вождение автомобилей высокой проходимости (2010-02-25)
- Про книгу о вождении автомобиля (2008-11-24)
2008-11-22
ПДД 1953
http://dima23390.narod.ru/pdd/index.htm#g37 - душевное описание правил дорожного движения (ПДД) 1953 года.
Радует терминология, стиль изложения, затронутые вопросы, особенно специфика тогдашнего транспорта. Интересно выглядят и ссылки на ситуацию в отдельных городах (Москва и Ленинград).
"Если при запуске двигателя в радиусе 15 м от заправочной станции происходят "выстрелы" или "чихание", двигатель нужно немедленно заглушить, а автомобиль следует откатить при неработающем двигателе в безопасную зону."
"Чтобы двигатель не заглох и автомобиль не остановился, запрещается переключать передачи и выключать сцепление, пересекая железнодорожные пути."
"В некоторых больших городах (например, в Москве и Ленинграде) движение в одном направлении ограничивается четырьмя рядами. В некоторых городах движение допускается только в один ряд."
"Нельзя автомобиль, проехавший внешнюю линию пешеходного перехода, подавать назад, даже в том случае, если в светофоре появился красный сигнал."
И еще море подобного. Рекомендую.
Радует терминология, стиль изложения, затронутые вопросы, особенно специфика тогдашнего транспорта. Интересно выглядят и ссылки на ситуацию в отдельных городах (Москва и Ленинград).
"Если при запуске двигателя в радиусе 15 м от заправочной станции происходят "выстрелы" или "чихание", двигатель нужно немедленно заглушить, а автомобиль следует откатить при неработающем двигателе в безопасную зону."
"Чтобы двигатель не заглох и автомобиль не остановился, запрещается переключать передачи и выключать сцепление, пересекая железнодорожные пути."
"В некоторых больших городах (например, в Москве и Ленинграде) движение в одном направлении ограничивается четырьмя рядами. В некоторых городах движение допускается только в один ряд."
"Нельзя автомобиль, проехавший внешнюю линию пешеходного перехода, подавать назад, даже в том случае, если в светофоре появился красный сигнал."
И еще море подобного. Рекомендую.
2008-11-18
2008-11-17
AlcorMP и безопасное извлечение флешек в XP
В том, что пропадает безопасное извлечение для флэшек в Windows XP, виновата программа AlcorMP. Это точно. Но способ лечения пока не узнал.
2008-11-14
Поддельные пельмени
В местных новостях показали сюжет про поддельные пельмени, внутри которых вместо мяса содержится вата. Самая обыкновенная вата.
2008-11-12
Линейки Canon IXUS и A-серии
Немного запутавшись в обозначениях линейки фотомыльниц Canon IXUS, полез на сайт производителя и стал делать табличку с интересующими данными (размер матрицы, объектив и т.п.).
Уже проделав эту работу, понял что зря. "Все придумано до нас". Такая таблица есть и в довольно ожидаемом месте: http://en.wikipedia.org/wiki/Canon_Digital_IXUS
Там же есть по A-серии: http://en.wikipedia.org/wiki/Canon_PowerShot_A
Уже проделав эту работу, понял что зря. "Все придумано до нас". Такая таблица есть и в довольно ожидаемом месте: http://en.wikipedia.org/wiki/Canon_Digital_IXUS
Там же есть по A-серии: http://en.wikipedia.org/wiki/Canon_PowerShot_A
2008-10-31
GoogleMaps Location API: общий принцип работы
Просто резюмирую доступную информацию относительно определения положения в мобильной версии GoogleMaps без GPS.
Определение заключается в получении координат по значениям MCC, MNC, LAC и CellID через сервер http://www.google.com/glm/mmap.
MCC - код страны (для России - 250).
MNC - код сети (МТС - 01, Мегафон - 02, Билайн - 99 и т.п.)
LAC - код локальной зоны (т.е. совокупности базовых станций, обслуживаемым одним контроллером)
CellID (CID) - идентификатор, состоит из номеров базовой станции и сектора.
База на сервере динамическая, реально строится и модифицируется по данным, которые предоставляют пользователи мобильной версии GoogleMaps с GPS.
Протокол взаимодействия с сервером Google не разглашает, но его вскрыли. Примеры работы с сервером через этот протокол:
На Python: http://forum.netmonitor.ru/about4470-0-asc-15.html#37336
На Python для S60: http://blog.jebu.net/2008/07/google-cell-tower-mapping-with-python-on-s60/
На C#: http://maps.alphadex.de/datafiles/fct0e1b11782832f02.cs
На Java для Android OS: http://davanum.wordpress.com/2007/12/01/android-much-better-geo-location-from-just-cellidlac/
Этого достаточно для написания собственного кода работы с сервером.
Да, стоит отметить, что ключевыми являются значения LAC и CellID. MCC/MNC важны только при наличии в базе на сервере нескольких значений пар LAC, CellID.
Для проверки я накидал программку, посмотрел на реальных значениях и сравнил с показаниями мобильной версии GoogleMaps. Все совпало.
Для получения реальных значений поставил на Nokia S60 FieldTest (хакерски довольно). Хотя можно и без этого. Если мобильная версия GoogleMaps умеет на телефоне определять положение без GPS, то можно пойти в "Справку", там вызвать "Общие сведения" и в самом конце информации будет строка вида myl:MCC:MNC:LAC:CellID
Определение заключается в получении координат по значениям MCC, MNC, LAC и CellID через сервер http://www.google.com/glm/mmap.
MCC - код страны (для России - 250).
MNC - код сети (МТС - 01, Мегафон - 02, Билайн - 99 и т.п.)
LAC - код локальной зоны (т.е. совокупности базовых станций, обслуживаемым одним контроллером)
CellID (CID) - идентификатор, состоит из номеров базовой станции и сектора.
База на сервере динамическая, реально строится и модифицируется по данным, которые предоставляют пользователи мобильной версии GoogleMaps с GPS.
Протокол взаимодействия с сервером Google не разглашает, но его вскрыли. Примеры работы с сервером через этот протокол:
На Python: http://forum.netmonitor.ru/about4470-0-asc-15.html#37336
На Python для S60: http://blog.jebu.net/2008/07/google-cell-tower-mapping-with-python-on-s60/
На C#: http://maps.alphadex.de/datafiles/fct0e1b11782832f02.cs
На Java для Android OS: http://davanum.wordpress.com/2007/12/01/android-much-better-geo-location-from-just-cellidlac/
Этого достаточно для написания собственного кода работы с сервером.
Да, стоит отметить, что ключевыми являются значения LAC и CellID. MCC/MNC важны только при наличии в базе на сервере нескольких значений пар LAC, CellID.
Для проверки я накидал программку, посмотрел на реальных значениях и сравнил с показаниями мобильной версии GoogleMaps. Все совпало.
Для получения реальных значений поставил на Nokia S60 FieldTest (хакерски довольно). Хотя можно и без этого. Если мобильная версия GoogleMaps умеет на телефоне определять положение без GPS, то можно пойти в "Справку", там вызвать "Общие сведения" и в самом конце информации будет строка вида myl:MCC:MNC:LAC:CellID
2008-10-29
2008-10-27
Эзотерический язык программирования Oroogu
Эзотерических языков программирования существует весьма много. Некоторые из них известны, а некоторые - совсем нет. Один из достаточно полных списков эзотерических языков программирования расположен здесь: http://esolangs.org/wiki/Language_list, там же есть краткие описания.
Просмотр описаний показал, что большая часть языков не представляет особого интереса: либо они вторичны, либо идея в них скучная и банальная. Но есть и достаточно интересные языки, конечно, с учетом, что основная цель их создания - это вовсе не программирование на них.
Среди всех языков мне показались интересными языки, построенные на концепции очереди. Основных их нашлось два: Q-BAL и Oroogu. Q-BAL более сложный, а вот Oroogu имеет весьма простой синтаксис. Но Oroogu настолько малоизвестный, что описание пришлось добывать через http://web.archive.org. Там же были добыты примеры и даже исходные тексты (на Си) компилятора. Идея, заложенная в Oroogu мне понравилась, поэтому я решил вкратце рассказать об основных особенностях этого языка.
Итак, язык программирования Oroogu. Автором языка является Georg Kraml, цель создания языка неизвестна. Основными типом данных в Oroogu является очередь. Работа с очередью происходит в обычной манере: можно добавлять элементы в конец очереди, можно извлекать из начала. При этом механизма доступа по индексу к произвольному элементу очереди нет.
Очереди могут включать в себя только целые числа. Точнее говоря, специально для реализации Ninety-Nine Bottles of Beer была добавлена поддержка строк, но в ограниченном виде (нельзя манипулировать содержимым строк).
Конструктор очереди выглядит просто: (1, 3, 5) создает очередь с элементами 1, 3 и 5. Возможно использование оператора .. для заполнения промежуточных значений. Так, например, (1, 3, 5 .. 7) будет содержать целые числа: 1, 3, 5, 6, 7. Этот оператор работает и в сторону уменьшения: (10 .. 1) будет содержать числа в убывающем порядке от 10 до 1 включительно.
В Oroogu есть переменные, но они могут содержать только очереди. Имена переменных не могут начинаться с цифры, длина их не может быть больше 8 символов. Переменные, начинающиеся с букв d и e, имеют особенность: после окончания работы программы их значения будут выданы в stdout и в stderr, соответственно. Переменные не нуждаются в определении.
Выражений в Oroogu не очень много.
Выражение присваивания d = c полностью копирует очередь c и присваивает d. Справа могут быть как переменные, так и конструкторы очереди. Слева допускается указание нескольких переменных через запятую:
var = (1, 2, 3)
i = var
k, m = i
После выполнения все упомянутые переменные (а именно var, i, k, m) будут содержать очереди (1, 2, 3).
Выражение объединения d / c объединяет очереди d и c и результат присваивается d.
var1 = (1, 2, 3)
var2 = (4 .. 6)
var1 / var2
В результате var1 будет содержать (1, 2, 3, 4, 5, 6)
Аналогично оператору присваиванию слева допускается указание нескольких переменных.
Выражение пересечения d \ c удаляет из d элементы c, если они есть.
v \ (2) удаляет 2 из очереди v, если 2 там есть
v \ v полностью очищает очередь v
Доступ к данным очереди и арифметика могут осуществляться только в конструкторе очереди. Доступ к значению из начала очереди осуществляется по имени переменной, в которой эта очередь находится. Запись var извлекает значение из начала очереди var и подставляет его в конструкторе. Запись <var просто подставляет значение из var, не извлекая его из очереди. Из арифметических операций поддерживаются традиционные +, -, /, * и оператор возведения в степень ** и оператор остатка от деления (либо %, либо mod - в разных документацих Oroogu указаны разные варианты).
(1, 2, 1 + 2) определяет очередь со значениям 1, 2, 3.
var = (1, 2, 3)
i = (var - 1, <var, var)
В результате var будет (3), а i - (0, 2, 2).
Стоит отметить, что выражения var = f и var = (f) имеют разный смысл. Первое выражение создает полную копию f, а второе выражение - извлекает из f первый элемент, который будет единственным значением очереди i.
В Oroogu нет оператора if в явном виде, но есть условный цикл. Он состоит из двух выражений, записанных подряд. Первое выражение - это заголовок цикла, а второе выражение - это тело цикло, причем тело цикла пишется обязательно в скобках, но может включать в себя несколько выражений.
Первым шагом выполняется заголовок цикла. Получаемая в результате выполнения заголовка очередь просматривается на предмет наличия элементов. Если есть хотя бы один элемент, то выполняется тело цикла. Затем опять идет просмотр очереди заголовка, и цикл повторяется до тех пор, пока в этой очереди есть хотя бы один элемент.
Стоит отметить, что при пустом теле цикла будет происходить зацикливание. Так же понятно, что тело цикла должно тем или иным способом уменьшать очередь заголовка, иначе тоже будет зацикливание.
Пример: i = (1..100) (dump / (<i * i)) собирает в переменной dump квадраты чисел от 1 до 100 включительно, после завершения программы dump (поскольку начинается с буквы d) будет выведен в stdout.
Заголовок цикла i = (1..100) присваивает переменной i очередь, содержащую значения от 1 до 100 включительно. Эта же очередь и будет очередью заголовка цикла. Поскольку первоначально она содержит элементы, то выполняется тело цикла: (dump / (<i * i)). В теле цикла (<i * i) берется значение из начала i, но без извлечения его из очереди, затем берется опять это же значение, но с извлечением. Эти значения (а они равны) перемножаются. Затем dump объединяется с получившейся очередью из одного элемента. Поскольку в теле цикла есть извлечение из очереди i, то цикл конечный. Он пройдет по всем значениям i от 1 до 100, после чего завершится.
Таковы вкратце основные конструкции. Еще стоит отметить, что в Oroogu нет функций, но есть возможность включать куски кода на стадии компиляции из файла.
Важным является то, что язык Oroogu является полным по Тьюрингу. Автор языка доказывает это неформально через сравнение с Т-полным языкомFloop.
Еще примеры.
Вывод Hello, world!:
d / ("Hello, world!")
К очереди d добавляется строка "Hello, world!", после завершения работы значение очереди d выводится в stdout, поскольку имя начинается с буквы d.
Вывод первых 10 чисел Фибоначчи:
buf = (0, 1)
i = (1 .. 10) (d, buf / (buf + <buf) null = (i))
Первоначально buf содержит очередь (0, 1). Затем организуется цикл. В заголовке цикла определяется очередь i, которая первоначально будет содержать значения от 1 до 10 включительно.
В теле цикла конструкция (buf + <buf) извлекает из buf значение и прибавляет к нему следующее значение из buf (но уже не извлекая его). Получившаяся очередь из одного элемента добавляется к очередям d и buf. Выражение null = (i) служит для простого извлечения значения из очереди i (тем самым исключая зацикливание и организуя 10-кратное выполнение тела цикла).
Таким образом, в d накапливается результат (все подсчитанные числа Фибоначчи), а в buf всегда держатся два значения, второе из которых - это последнее подсчитанное на данной итерации число Фибоначчи, а первое - предыдущее значение, точнее значение, которое будет использовано для вычисления следующего числа Фибоначчи.
Не совсем корректный вариант "Ninety-nine Bottles of Beer":
b = (99 .. 1)
(
d / (<b, "bottles of beer on the wall, ")
d / (<b, "bottles of beer.\n")
d / ("Take one down and pass it around, ")
d / (b - 1, "bottles of beer.\n\n")
)
Простой пример, в котором организуется цикл по перебору значений от 99 до 1 включительно. В теле цикла несколько раз используется первое значение из b без извлечения (конструкция <b), а затем под завершение тела цикла первое значение извлекается для организации последовательного прохождения по всем значениям b. Особенностью этого примера является разве что использование строк.
Таков, в общем, язык программирования Oroogu. Не стоит относится к нему как к языку, который может быть большим, чем простая игрушка или демонстрация идеи. Но мне он показался забавным.
Просмотр описаний показал, что большая часть языков не представляет особого интереса: либо они вторичны, либо идея в них скучная и банальная. Но есть и достаточно интересные языки, конечно, с учетом, что основная цель их создания - это вовсе не программирование на них.
Среди всех языков мне показались интересными языки, построенные на концепции очереди. Основных их нашлось два: Q-BAL и Oroogu. Q-BAL более сложный, а вот Oroogu имеет весьма простой синтаксис. Но Oroogu настолько малоизвестный, что описание пришлось добывать через http://web.archive.org. Там же были добыты примеры и даже исходные тексты (на Си) компилятора. Идея, заложенная в Oroogu мне понравилась, поэтому я решил вкратце рассказать об основных особенностях этого языка.
Очереди могут включать в себя только целые числа. Точнее говоря, специально для реализации Ninety-Nine Bottles of Beer была добавлена поддержка строк, но в ограниченном виде (нельзя манипулировать содержимым строк).
Конструктор очереди выглядит просто: (1, 3, 5) создает очередь с элементами 1, 3 и 5. Возможно использование оператора .. для заполнения промежуточных значений. Так, например, (1, 3, 5 .. 7) будет содержать целые числа: 1, 3, 5, 6, 7. Этот оператор работает и в сторону уменьшения: (10 .. 1) будет содержать числа в убывающем порядке от 10 до 1 включительно.
В Oroogu есть переменные, но они могут содержать только очереди. Имена переменных не могут начинаться с цифры, длина их не может быть больше 8 символов. Переменные, начинающиеся с букв d и e, имеют особенность: после окончания работы программы их значения будут выданы в stdout и в stderr, соответственно. Переменные не нуждаются в определении.
Выражений в Oroogu не очень много.
Выражение присваивания d = c полностью копирует очередь c и присваивает d. Справа могут быть как переменные, так и конструкторы очереди. Слева допускается указание нескольких переменных через запятую:
var = (1, 2, 3)
i = var
k, m = i
После выполнения все упомянутые переменные (а именно var, i, k, m) будут содержать очереди (1, 2, 3).
Выражение объединения d / c объединяет очереди d и c и результат присваивается d.
var1 = (1, 2, 3)
var2 = (4 .. 6)
var1 / var2
В результате var1 будет содержать (1, 2, 3, 4, 5, 6)
Аналогично оператору присваиванию слева допускается указание нескольких переменных.
Выражение пересечения d \ c удаляет из d элементы c, если они есть.
v \ (2) удаляет 2 из очереди v, если 2 там есть
v \ v полностью очищает очередь v
Доступ к данным очереди и арифметика могут осуществляться только в конструкторе очереди. Доступ к значению из начала очереди осуществляется по имени переменной, в которой эта очередь находится. Запись var извлекает значение из начала очереди var и подставляет его в конструкторе. Запись <var просто подставляет значение из var, не извлекая его из очереди. Из арифметических операций поддерживаются традиционные +, -, /, * и оператор возведения в степень ** и оператор остатка от деления (либо %, либо mod - в разных документацих Oroogu указаны разные варианты).
(1, 2, 1 + 2) определяет очередь со значениям 1, 2, 3.
var = (1, 2, 3)
i = (var - 1, <var, var)
В результате var будет (3), а i - (0, 2, 2).
Стоит отметить, что выражения var = f и var = (f) имеют разный смысл. Первое выражение создает полную копию f, а второе выражение - извлекает из f первый элемент, который будет единственным значением очереди i.
В Oroogu нет оператора if в явном виде, но есть условный цикл. Он состоит из двух выражений, записанных подряд. Первое выражение - это заголовок цикла, а второе выражение - это тело цикло, причем тело цикла пишется обязательно в скобках, но может включать в себя несколько выражений.
Первым шагом выполняется заголовок цикла. Получаемая в результате выполнения заголовка очередь просматривается на предмет наличия элементов. Если есть хотя бы один элемент, то выполняется тело цикла. Затем опять идет просмотр очереди заголовка, и цикл повторяется до тех пор, пока в этой очереди есть хотя бы один элемент.
Стоит отметить, что при пустом теле цикла будет происходить зацикливание. Так же понятно, что тело цикла должно тем или иным способом уменьшать очередь заголовка, иначе тоже будет зацикливание.
Пример: i = (1..100) (dump / (<i * i)) собирает в переменной dump квадраты чисел от 1 до 100 включительно, после завершения программы dump (поскольку начинается с буквы d) будет выведен в stdout.
Заголовок цикла i = (1..100) присваивает переменной i очередь, содержащую значения от 1 до 100 включительно. Эта же очередь и будет очередью заголовка цикла. Поскольку первоначально она содержит элементы, то выполняется тело цикла: (dump / (<i * i)). В теле цикла (<i * i) берется значение из начала i, но без извлечения его из очереди, затем берется опять это же значение, но с извлечением. Эти значения (а они равны) перемножаются. Затем dump объединяется с получившейся очередью из одного элемента. Поскольку в теле цикла есть извлечение из очереди i, то цикл конечный. Он пройдет по всем значениям i от 1 до 100, после чего завершится.
Таковы вкратце основные конструкции. Еще стоит отметить, что в Oroogu нет функций, но есть возможность включать куски кода на стадии компиляции из файла.
Важным является то, что язык Oroogu является полным по Тьюрингу. Автор языка доказывает это неформально через сравнение с Т-полным языкомFloop.
Еще примеры.
Вывод Hello, world!:
d / ("Hello, world!")
К очереди d добавляется строка "Hello, world!", после завершения работы значение очереди d выводится в stdout, поскольку имя начинается с буквы d.
Вывод первых 10 чисел Фибоначчи:
buf = (0, 1)
i = (1 .. 10) (d, buf / (buf + <buf) null = (i))
Первоначально buf содержит очередь (0, 1). Затем организуется цикл. В заголовке цикла определяется очередь i, которая первоначально будет содержать значения от 1 до 10 включительно.
В теле цикла конструкция (buf + <buf) извлекает из buf значение и прибавляет к нему следующее значение из buf (но уже не извлекая его). Получившаяся очередь из одного элемента добавляется к очередям d и buf. Выражение null = (i) служит для простого извлечения значения из очереди i (тем самым исключая зацикливание и организуя 10-кратное выполнение тела цикла).
Таким образом, в d накапливается результат (все подсчитанные числа Фибоначчи), а в buf всегда держатся два значения, второе из которых - это последнее подсчитанное на данной итерации число Фибоначчи, а первое - предыдущее значение, точнее значение, которое будет использовано для вычисления следующего числа Фибоначчи.
Не совсем корректный вариант "Ninety-nine Bottles of Beer":
b = (99 .. 1)
(
d / (<b, "bottles of beer on the wall, ")
d / (<b, "bottles of beer.\n")
d / ("Take one down and pass it around, ")
d / (b - 1, "bottles of beer.\n\n")
)
Простой пример, в котором организуется цикл по перебору значений от 99 до 1 включительно. В теле цикла несколько раз используется первое значение из b без извлечения (конструкция <b), а затем под завершение тела цикла первое значение извлекается для организации последовательного прохождения по всем значениям b. Особенностью этого примера является разве что использование строк.
Таков, в общем, язык программирования Oroogu. Не стоит относится к нему как к языку, который может быть большим, чем простая игрушка или демонстрация идеи. Но мне он показался забавным.
2008-10-26
Народное творчество: Бу Гага
Сегодня видел, как ушлая молодежь из дорожного знака "Бульвар Гагарина" путем замазывания букв сделала надпись "Бу Гага".
2008-10-23
Путепровод на M55 (станция "Глубокая")
Хорошая новость: на федеральной дороге М55 открыли путепровод через Ж/д пути в районе станции "Глубокая" взамен старого переезда.
Во-первых, старый переезд располагался в низине, и к нему вел довольно резкий спуск, а потом подъем, которые даже летом опасны, не говоря уж о гололеде. Во-вторых, движение поездов там весьма активное, потому приходилось довольно часто стоять на переезде. Да и вообще, не раз там происходили аварии.
Теперь дорога стала быстрее и безопаснее, чем я рад.
Во-первых, старый переезд располагался в низине, и к нему вел довольно резкий спуск, а потом подъем, которые даже летом опасны, не говоря уж о гололеде. Во-вторых, движение поездов там весьма активное, потому приходилось довольно часто стоять на переезде. Да и вообще, не раз там происходили аварии.
Теперь дорога стала быстрее и безопаснее, чем я рад.
2008-10-22
Восстановление флешки Transcend V10 на 16ГБ
Флэшка Transcend V10 на 16ГБ сказал привет и отказалась работать.
Попытки реанимировать при помощи AlcorMP приводили к ошибке 30700. Пришлось задать в настройках AlcorMP руками одноканальный режим. Низкоуровневый формат прошел, но, естественно, осталось только 8ГБ.
Но хоть это, ибо гарантийный талон валяется неизвестно где.
Попытки реанимировать при помощи AlcorMP приводили к ошибке 30700. Пришлось задать в настройках AlcorMP руками одноканальный режим. Низкоуровневый формат прошел, но, естественно, осталось только 8ГБ.
Но хоть это, ибо гарантийный талон валяется неизвестно где.
2008-10-19
Гугл замахивается на форумы?
Заметил, что в результатах поиска google стал для ссылок, ведущих на форумы, показывать дополнительную информацию.
Например: "Сообщений: <количество>", "Авторов: <количество>", "Последнее сообщение: <дата>". Возможно такое уже давно, но заметил только сейчас.
Т.е. явно идет обработка информации с форумов с учетом структуры сообщений. Увидим, чем это грозит в дальнейшем. Как для ищущих, так и для владельцев форумов.
Например: "Сообщений: <количество>", "Авторов: <количество>", "Последнее сообщение: <дата>". Возможно такое уже давно, но заметил только сейчас.
Т.е. явно идет обработка информации с форумов с учетом структуры сообщений. Увидим, чем это грозит в дальнейшем. Как для ищущих, так и для владельцев форумов.
2008-10-18
Немного историческое (цены сотовых телефонов 2000-2001)
2008-10-17
Устаревший термин "Автомагнитола"
Вообще, конечно, автомагнитол (т.е. умеющих работать с аудиокассетами) сейчас конечно осталось не так много, а среди новых - совсем мало. Но по привычке все равно хочется называть эти агрегаты автомагнитолами. Можно называть их более правильно или общим термином "головное устройство". Или уточненным "CD/DVD/MP3-ресивер", но, как говорится, "привычка - не рукавичка..."
2008-10-16
Магнитола Sanyo: установка времени (через кнопку DISP)
Просто памятка: на некоторых двухдиновых "автомагнитолах" Sanyo время настраивается через DISP+"громкость вверх" и DISP+"громкость вниз". Кое-как нашел комбинацию без документации.
2008-10-15
Effective Java, Second Edition
Книга "Effective Java, Second Edition" от Joshua Bloch. Оформлена в виде набора советов, объединенных по темам. Отражает современное состояние Java, т.е. используются enum, аннотации, generics. Ни в кое мере не является заменителем документации: бОльший упор на концепцию использования тех или иных конструкций.
Книга полезная, хотя и написана несколько занудновато. Чайникам читать будет сложновато, поскольку требует наличия определенного опыта. Профессионалам читать будет скучно, поскольку многие вещи покажется банальными, хотя, скорее всего, полезные вещи они для себя найдут. Наиболее полезно, как мне, кажется, людям, которые уже накопили опыт, но пока еще не имеют четко установившегося стиля программирования на Java.
В целом книга хорошая.
Книга полезная, хотя и написана несколько занудновато. Чайникам читать будет сложновато, поскольку требует наличия определенного опыта. Профессионалам читать будет скучно, поскольку многие вещи покажется банальными, хотя, скорее всего, полезные вещи они для себя найдут. Наиболее полезно, как мне, кажется, людям, которые уже накопили опыт, но пока еще не имеют четко установившегося стиля программирования на Java.
В целом книга хорошая.
2008-10-14
"Конструкторы": пошлина на кузов
==
Постановление от 10 октября 2008 г. N 745 О временной ставке ввозной таможенной пошлины в отношении кузовов отдельных видов транспортных средств
Правительство Российской Федерации постановляет:
1. Утвердить сроком на 9 месяцев ставку ввозной таможенной пошлины на кузова для транспортных средств товарной позиции 8703, прочие (код ТН ВЭД России 8707 10 900 0), содержащиеся в Товарной номенклатуре внешнеэкономической деятельности Российской Федерации, утвержденной постановлением Правительства Российской Федерации от 27 ноября 2006 г. # 718 "О Таможенном тарифе Российской Федерации и товарной номенклатуре, применяемой при осуществлении внешнеэкономической деятельности", в размере, равном 15 процентам таможенной стоимости, но не менее 5000 евро за 1 штуку.
Для целей применения ставки ввозной таможенной пошлины товары определяются исключительно кодом ТН ВЭД России, наименование товаров приведено только для удобства пользования.
2. Установить, что действие пункта 2 постановления Правительства Российской Федерации от 22 октября 1997 г. # 1347 "Вопросы таможенно-тарифной политики" не распространяется на ставку ввозной таможенной пошлины, утвержденную настоящим постановлением.
3. Настоящее постановление вступает в силу по истечении одного месяца со дня его официального опубликования.
http://www.government.ru/content/governmentactivity/rfgovernmentdecisions/archive/2008/10/10/6345332.htm
===
"Конструкторам" привет!
Постановление от 10 октября 2008 г. N 745 О временной ставке ввозной таможенной пошлины в отношении кузовов отдельных видов транспортных средств
Правительство Российской Федерации постановляет:
1. Утвердить сроком на 9 месяцев ставку ввозной таможенной пошлины на кузова для транспортных средств товарной позиции 8703, прочие (код ТН ВЭД России 8707 10 900 0), содержащиеся в Товарной номенклатуре внешнеэкономической деятельности Российской Федерации, утвержденной постановлением Правительства Российской Федерации от 27 ноября 2006 г. # 718 "О Таможенном тарифе Российской Федерации и товарной номенклатуре, применяемой при осуществлении внешнеэкономической деятельности", в размере, равном 15 процентам таможенной стоимости, но не менее 5000 евро за 1 штуку.
Для целей применения ставки ввозной таможенной пошлины товары определяются исключительно кодом ТН ВЭД России, наименование товаров приведено только для удобства пользования.
2. Установить, что действие пункта 2 постановления Правительства Российской Федерации от 22 октября 1997 г. # 1347 "Вопросы таможенно-тарифной политики" не распространяется на ставку ввозной таможенной пошлины, утвержденную настоящим постановлением.
3. Настоящее постановление вступает в силу по истечении одного месяца со дня его официального опубликования.
http://www.government.ru/content/governmentactivity/rfgovernmentdecisions/archive/2008/10/10/6345332.htm
===
"Конструкторам" привет!
Subscribe to:
Comments (Atom)


