Что нового в ПХП 5.4
Илья Альшанетский (это один из разработчиков ПХП) подготовил презентацию в формате ПДФ о том о самых важных нововведениях ПХП 5.4.
Каррирование и частичное применение
Я, оказывается, путал раньше каррирование и частичное применение. Даже не то чтобы путал, просто не пытался разобраться в чём разница между терминами, применяя то и другое по мере надобности. Недавно на «Хабре» в комментариях мне на моё незнание указали и я уяснил, наконец, что конкретно стоит за каждым термином.
Каррирование — преобразование функции от двух аргументов в функцию от первого аргумента, возвращающую функцию, результат вызова которой со вторым агрументом эквивалентен вызову первоначальной функции с упомянутыми аргументами. Немного запутанно, с примерами станет всё яснее. Я буду объяснять на примере Джаваскрипта, его больше народу знает, а на ПХП очень уж многословно получается. Кстати, в соответствующую статью в «Википедии» я добавил пример на «Гугл Гоу».
// функция, суммирующая два числа
function sum(x, y) {
return x+y;
}
alert(sum(2, 8)); // вернёт 10
function sum(x) {
return function (y) {
return x+y;
}
}
alert(sum(2)(8)); // тоже вернёт 10При вызове второй функции sum создаётся функция, в которую
Частичное применение функции (Partial function) — создание некой функции на базе указанной, где некоторые агрументы заменены конкретными значениями. Например:
function partial_one_arg(f, a) {
return function(b) {
return f(a, b);
}
}
min0 = partial_one_arg(Math.min, 0);
min1 = partial_one_arg(Math.min, 1);
alert([min0(-5), min0(5)]); // вернёт [-5, 0]
alert([min1(-5), min1(5)]); // вернёт [-5, 1]В примере я заменил один из агрументов фунции нахождения минимального значения на конкретное значение, теперь при вызове функции «min0» сравнение будет идти с нулём, при вызове «min1» — с единицей.
Очень простые штуки, часто встречающиеся в функциональном программировании.
Смените это немедленно!
Ещё банк помнит последние несколько паролей, так что менять два пароля по кругу тоже не получается.
Меня не устраивает метод, которым пользуются некоторые ребята — менять в конце пароля цифру. Я уже пару раз запутывался. Кстати, когдя я работал в «Яндексе», там тоже действовала похожая схема с регулярной схемой и запоминанием пароля.
Банк меня «защитил», я пользуюсь тем же паролем.
Интересно, что все три
Максимум — посмотреть на что я трачу деньги. «Альфа» присылает мне одноразовый пароль платежа через СМС, «Райффайзен» разрешал платить только с использованием клиентского сертификата, «Ак барс» просит ввести одноразовый циферный код со специальной карточки.
Я выше писал, что банки сбрасывают мне пароль при обращении в техподдержку. Как же они узнают что я это я?
Самое смешное, что любые банки определяют мою личность по телефону, по данным, которые легко узнать в интернете, плюс некое ключевое слово, которое, внимание, никогда не меняется в отличие от пароля. Хотите меня ограбить? Узнайте ключевое слово, зачем вам пароль?
Вопрос по организации переписки
Ребята, как вы выходите из ситуации, когда необходимо проконтролировать, чтобы на ваши письма в течение ближайших пары дней была реакция? У меня таких писем становится всё больше и я начинаю забывать проконтролировать это. Я пробовал вести списки, оказалось очень неудобно потом по ним искать письма в почтовике, да и вообще — хочется автоматизации
Е́жи

Сделал жене сюрприз — подарил на восьмое марта котёнка породы
Спасибо, Ирек и Зухра, за помощь в подготовке сюрприза!
К концу дня котёнок уже освоился и сейчас вовсю бегает через меня по кровати за игрушкой, которую из ленточек соорудила жена. Фотографировать его очень тяжело, из более чем сорока снимков получились только четыре. Котёнку четыре месяца всего, а выглядит уже как молодой кот. К году
И у меня полноценный блог теперь! С фотографиями кошки!
Как работает свойство vertical-align в ЦСС
На сайте
Надеюсь «Пепси» с человечиной будет только выдумкой газетчиков
Отметим, что накануне Федеральная комиссия США по ценным бумагам и биржам (SEC) фактически разрешила компании PepsiCo выпустить новую газировку с усилителем вкуса на основе клеток человеческих эмбрионов, полученных при абортах.
Пищевому гиганту будет позволено заключить контракт со специализирующей на биотехнологиях компанией Senomyx, которая использует клетки почек мертвых эмбрионов (HEK 293 — Human Embryonic Kedney) при разработке усилителей вкуса.
В соответствии с решением SEC от 28 февраля, договоренность PepsiCo с Senomyx для производителя прохладительных напитков подпадает под определение «обычные деловые операции».
Цитата из статьи на сайте «РБК. Общество». Богатая идея, жду
Добавлено позднее: в ЖЖ есть подсказанная читателем заметка «К теме каннибализма», которая рассказывает о том, что вышеприведённая процитированное выше не соответствует действительности.
Блог жизни
Таскаю ящики с вещами дома — ремонт продолжается, надо освобождать ещё две комнаты. В одном из ящиков нашли восемь тетрадок — мои «дневники жизни», так раньше назывались закрытые блоги.
В моём первая запись
Некоторые записи вполне в формате твиттера. Например:
9/V-90 г. Ничего такого нет всё обычно, сделал схема, а она „не пашет“.
22/I-91 г. Проснулся, сейчас пойду в школу.
18/II-91 г. Сегодня Наиля опять запутывала следы: ей зададут вопрос, а она на него сто слов никак не относящихся к вопросу.
Правда, большинство записей куда более длинные, множество — на несколько страниц.
Пролистал, чего только нет. Надо будет его в электронный вид переводить потихоньку. Там есть вырезанные куски обоев в квартире родителей (вся история как клеили и в каком порядке), исследование почерков моих родственников, планы всех перестановок мебели, приклеенные билеты от автобуса, рисунки схем, листинги первых программ, рассуждения на тему строения мира, изобретение собственных «смайликов» и так далее. Надо заканчивать чтение, а то залипну на часы.
По дневнику выяснилось, что нехватает по меньшей мере несколько фотографий в альбоме покойной бабушки со стороны мамы. Я, например, нашёл копию почерка родственницы, которая у меня нигде не записана, но родство её устанавливается элементарно из написанного. Все записи почерков я, помню, делал как раз
А когда у вас появился первый «блог»?
Сцеплер
От мамы услышал слово «сцеплер», так у них в отделе степлер называют.
Кстати говоря, вспомнилось. Кажется я в школе ещё учился, когда услышал от мамы распространённое тогда слово «отэрить», в те годы «Ксероксов» было мало, чаще встречались отечественные копировальные машины «ЭР», оттуда и глагол. Сами машины я не видел, только результат их работы — фиолетовую (или синюю, точно не вспомню) кальку
Перемена мест слагаемых
Если помещение отапливается электричеством, то ставить туда «энергосберегающие»(люминесцентные) лампы для экономии энергии нет смысла вообще, придется на столько же больше энергии потратить для дополнительного отопления, или будет просто холоднее.
Цитата из одного известного закрытого блога.
Кстати, да, логично же. У лампы накаливания куча энергии уходит на нагрев, то есть на отопление окружающего пространства. Если сменить лампы накаливания на энергосберегающие, отопительные элементы просто будут больше работать.
Апач vs. Энжиникс
Меня
Я поставил и настроил ngnix для отдачи статического контента. Это снизило нагрузку в 2 раза…
Речь идёт о сайте president2012.ru. Версия Апача —
Магические методы
Что мне никогда не нравилось в Пайтоне, так это «магические» методы и свойства. Сейчас их существует за сотню:
bolk@Bolk ~ $ wget -O- http://docs.python.org/reference/datamodel.html 2>&- | egrep -o '__(\w+)__' | sort -u | wc -l
108Я, даже если очень постараюсь, вряд ли вспомню хотя бы половину. Всё «магическое» в Пайтоне начинается и заканчивается двумя подчёркиваниями, например, если сменить знак у объекта (сделать
Запомнить все эти методы, наверное, реально при помощи тщательной зубрёжки, но сделать это естетственно, во время изучения языка, нереально, по моему мнению. Причина — неинтуитивность. Я давно высказывался на тему, почему хотя бы не расширить синтаксис и некоторые методы не разрешить называть как операции, то есть «/», «+», «[]» и так далее, смутно вспоминая, что в Си++, кажется, так и сделано.
Оказывается, так в точности сделано в языке «Скала»:
trait Ord{
def < (that:Any):Boolean
def<=(that:Any):Boolean = (this < that) || (this == that)
def> (that:Any):Boolean = !(this <= that)
def>=(that:Any):Boolean = !(this < that)
}Это гораздо проще выучить, изучая язык, чем «__lt__», «__le__», «__gt__», «__ge__» (впрочем, когда перечисляешь в ряд несколько конструкций, кажется что ничего страшного в этом нет, но надо держать в голове, что их больше сотни).
У некоторых методов название упрощать не нужно, например «__unicode__» (преобразование к юникодной строке) всё равно дёргается стоит вызвать unicode(something) или «__del__» (деструктор) вызывается, в частности, если сделать «del something» (если ссылок больше нет). Они уже содержат название операции, просто оно буквенное. Есть методы, которые вряд ли вообще можно
Наверняка есть часть, которую понятнее не назовёшь. На ум сразу приходит метод «__hash__», думаю есть и ещё.
Но, бо́льшую часть, мне бы хотелось именовать
Перевод картинки в серый средствами CSS

Экспериментировал в рамках прототипа для рабочего проекта с преобразованием изображения в серую гамму. Вообще, конечно, есть тег CANVAS, там это запросто, но интересно посмотреть появилось ли
.gray {
filter: gray; /* IE 5+ */
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)"; /* new IE */
}Я всё ждал когда же W3C «переизобретёт» микрософтские фильтры. Свершилось. Недавно появилась спецификация Filter Effects, которая, конечно, гораздо шире того, что
«Хром» включил в готовящуяся
.gray {
-webkit-filter: grayscale(1); /* Chrome 18+ */
}В «Опере» и «Файрфоксе» поддержки этих фильтров пока нет, но есть поддержка других — фильтров SVG. Можно, например, засунуть растровое изображение внутрь SVG и применить к нему нужный фильтр:
<svg style="width: 0; height: 0">
<filter id="gray">
<feColorMatrix type="saturate" values="0"/>
</filter>
</svg>
<!-- тут какой-то HTML код и вдруг понадобилась серая картика -->
<svg style="width:400px; height: 431px"><image xlink:href="/imgs/2008.11.27.jpg" width="100%" height="100%" filter="gray" /></svg>Хорошие новости — SVG можно мешать с HTML. С версии 3.5 в «Файерфоксе» есть способ лучше — можно применять фильры SVG прямо к тегам HTML (и делать всякие другие чудесные штуки), правда все описания в документации
<style>
.gray {
filter: url(#gray); /* Firefox 4+ */
}
</style>
<svg style="width: 0; height: 0">
<filter id="gray">
<feColorMatrix type="saturate" values="0"/>
</filter>
</svg>
<body><img src="/imgs/2008.11.27.jpg" class="gray" /></body>Добавлено позднее: в ходе дальнейших экспериментов оказалось, что в более ранних «Хромах» (нижнюю границу я пока не выяснил, но в моём
<style>
.gray {
-webkit-filter: url(#gray); /* Chrome ?? */
-webkit-filter: grayscale(1); /* Chrome 18+
}
</style>
<svg style="width: 0; height: 0">
<filter id="gray">
<feColorMatrix type="saturate" values="0"/>
</filter>
</svg>
<!-- тут HTML и внезапно понадобилась серая картинка -->
<svg style="width:400px; height: 431px"><image xlink:href="/imgs/2008.11.27.jpg" width="400" height="431" class="gray" /></svg>При этом «Хром» требует, чтобы ширина и высота картинки были заданы в абсолютных единицах (остальные браузеры прекрасно понимают проценты).
Если собрать всё вместе, получается нижеприведённый код. Я поставил рядом два изображения: слева обычный элемент HTML img, справа — растр в SVG, по ссылке можно протестировать что поддерживает ваш браузер. Мне негде потестировать IE и тем более десятую версию, но я Посмотреть код.
<html>
<meta http-equiv="X-UA-Compatible" content="IE=9" />
<style>
.gray {
cursor: pointer;
filter: url(#gray); /* Firefox 4+ */
filter: gray; /* IE 5+ */
-webkit-filter: url(#gray); /* Chrome ?? */
-webkit-filter: grayscale(1); /* Chrome 18+ */
-ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(grayscale=1)"; /* new IE */
}
.gray:hover {
filter: none;
-webkit-filter: none;
-ms-filter: none;
}
</style>
<svg style="width: 0; height: 0">
<filter id="gray">
<feColorMatrix type="saturate" values="0"/>
</filter>
</svg>
<body>
<img src="/imgs/2008.11.27.jpg" class="gray" />
<svg style="width:400px; height: 431px"><image xlink:href="/imgs/2008.11.27.jpg" width="400" height="431" class="gray" /></svg>
</body>
</html>
libjpeg-turbo
Сегодня от нашего системного администратора узнал о библиотеке
Авторами утверждается, что библиотека превосходит оригинальную по скорости в несколько раз.
Самое интересное, что библиотека бинарно соместима с оригиналом, то есть простой заменой одной на другую в системе можно добиться прироста производительности всех утилит, которые её используют.
Я погонял тесты у себя на ноутбуке с «МакОС», результаты получились следующие:
bolk@Bolk ~ $ otool -L `which jpegtran` | fgrep libjpeg
/usr/local/Cellar/jpeg/8d/lib/libjpeg.8.dylib (compatibility version 13.0.0, current version 13.0.0)
bolk@Bolk ~ $ time for _ in {1..100}; do jpegtran -optimize -crop 4000x3000+2+2 ex.jpg > /dev/null; done
real 1m28.244s
user 1m20.063s
sys 0m7.705
bolk@Bolk ~ $ otool -L /opt/libjpeg-turbo/bin/jpegtran | fgrep libjpeg
/opt/libjpeg-turbo/bin/jpegtran:
/opt/libjpeg-turbo/lib/libjpeg.62.dylib (compatibility version 63.0.0, current version 63.0.0)
bolk@Bolk ~ $ time for _ in {1..100}; do /opt/libjpeg-turbo/bin/jpegtran -optimize -crop 4000x3000+2+2 ex.jpg > /dev/null; done
real 0m59.433s
user 0m50.509s
sys 0m7.728sВ моём случае прирост порядка 30%. Для теста я взял случайную картинку из фотоальбомов с разрешением 5184×3456 и при помощи утилиты jpegtran вырезал оттуда кусок изображения. Каждый тест повторялся сто раз.
6/9/20
С этим дробными номерами домов всю жизнь путаница.
Я всю жизнь считал, что дробный номер дома означает, что дом стоит более чем по одной улице и через косую черту перечисляются номера дома на улицах, на которых он стоит. Например, в Москве есть
Но я знаю ребят, которые считают, что «30/1» означает «дом 30 корпус 1». Я с ними всегда спорил.
Оказывается в разных городах косая черта означает разные вещи. В Москве и Казани — как раз это номера по улицам на которых дом стоит, в Тюмени — номер корпуса, а в Саратове, если здание построено на месте снесённых «(например, с номерами 7, 9, 11), то иногда такому дому дают номер по первому и последнему снесённым через дробь (7/11)».
«Мой IP» на клиентской стороне
Бывает, что на стороне клиента надо узнать свой
<!-- pure JS my IP -->
<script>
!function(callback) {
var old = document.write;
document.write = function (str) {
var re = /(\d{1,3}\.){3}\d{1,3}/;
callback(re.exec(str)[0]);
document.write = old;
}
}(alert);
</script>
<script src="http://en.dnstools.ch/out/4.js"></script>Вместо «alert» можно передавать любую функцию, ей первым параметром будет передан искомый
О разнице в восприятии
Утром наш кот сходил на кухню, принёс под кровать пакетик с кормом и, уютно чавкая полиэтиленом, начал его поедать. Я, услышав звуки кошачьей идилии, пакет отобрал, по ушам надавал. Воровство плохо для кармы, жрать полиэтилен с кормом — для желудка.
Думаю, с точки зрения кота это выглядело совсем иначе. Хитро прокравшись на кухню, ловко минуя все утренние подозрительные шорохи, он нашёл по еле уловимому запаху добычу, принёс в нору и сел завтракать. Возможно подумав, когда наестся, поделиться добычей со мной. А я встал, добычу отобрал,
И, главное, даже умей кот говорить, я бы не смог ему объяснить свою точку зрения, хотя я думаю, что понимаю его взгляд на вещи. Слава богу, у меня нет даже шанса предпринять эту глупую попытку объяснения.
Жёны агёнтов спёцслужб, или Ещё раз о важности «ё»
А вот свежая цитата с «Баша»:
Агентов спецслужб, которых поймали на неверности их жены, выгоняют с работы по профнепригодности.
Интересна она тем, что совершенно неясно есть там «ё» в слове «жены» или нет. В зависимости от этого смысл меняется, но фраза всё равно остаётся непротиворечивой.
Если агентов ловят на неверности жены, то их выгоняют за то, что неумело следили за жёнами, если их ловят на неверности жёны, то выгоняют за то, что неумело скрывались.
Я ♥ яблоки?
Скоро уже год как я используют только «Мак», но до сих пор помню, что в тот же день, когда я на него пересел, меня тут же записали в фанаты техники «Эпл». Сейчас у нас дома два «Мака» (у меня и жены) и один «Айпад 2», но я до сих пор не считаю, что я фанат.
Ну в самом деле, я каждый день пью чай, но это не делает меня автоматически фанатом чая, более того, это не делает меня даже любителем чая. Бо́льшей частью я его пью, потому что в нашем климате нужно время от времени пить
Это
Точно так же как у меня бо́льшая часть одежды фирмы «Коламбия» — куртки, свитера, кроссовки, футболки, при этом, когда я захожу в магазин, я не бегу к стенду с этой маркой, я часто выбираю всё подряд, просто в конце часто (но не всегда) оказывается, что одежда этой фирмы сидит на мне лучше и носить её удобнее. То есть она мне подходит.
Если мне подходит
При этом на столе «Мак», в сумке «Айпад», но в руке «Гугл Нексус Уан», смартфон на «Андроиде».
Челябинск
Я уже два раза был в Челябинске, но ещё ни разу о нём не написал. Надо исправляться, тем более, что я обещал Илье Бирману это сделать.
Основная ассоциация с Челябинском у того, кто в этом городе не был — Челябинск суровый. Мем, рождённый, кажется «Нашей Рашей» и подхваченный в интернетах надёжно закрепился и в моей голове. Суров ли Челябинск? А то!
— Нечего дурью маяться, — считают суровые челябинские сотрудники Бюро Занятости, — проходи в тоннель, начинай подметать!
Суровые челябинцы паркуют на улицах танки и БМП. Танк — серьёзная машина, не чета вашим «хаммерам». Один из них стоит около «МакАвто».


В Челябинске светофоры нуждаются в защите. Челябинец способен его разбить одним суровым взглядом.
Суровые челябинские дворники скалывают ломом айсберги с асфальта.
В Челябинске даже дышится



Суровый челябинский паб как бы спрашивает у вас…
Суровый челябинский панк идёт без шапки и волос. На улице суровый мороз.
В центральном парке Челябинска запрещён выпас скота!
PHP 5.4
Поставил себе на ноут ПХП 5.4, смотрю как работает. Трейты, конечно, приятная штука, но гораздо важнее, что синтаксис в порядок стали приводить. К сожалению, с первой попытке порядок навести не удалось, но стало гораздо логичнее.
class B {
function arr() {
return [
'i' => 0b101,
'f' => function () {
return ['i' => 1];
}
];
}
}
var_dump((new b)->arr()['i']); // works!
var_dump(call_user_func((new b)->arr()['f'])['i']); // still works…
var_dump((new b)->arr()['f']()); // don't :(В примере дан класс «B», метод «arr» которого возвращает массив из двух элементов. По индексу «i» там число, по «f» — анонимная функция, которая так же возвращает массив. В новом (5.4) ПХП есть возможность получить элемент массива, возвращаемый функцией, не присваивая его переменной (и, кстати, вызвать метод объекта сразу после его создания).
Но увы, пока нельзя так же вольно обращаться с функциями, приходится их оборачивать в «call_user_func». Но я рад, что ПХП постепенно избавляется от своих болезней.
Обратите внимание на более короткий синтаксис массивов. Это начинает походить на своеобразный стандарт уже.
Был ли Альберт Эйнштейн троечником в школе
Опубликовали оцифрованный персональный архив Эйнштейна. В частности, есть копия его школьного аттестата (выданный высшей технической школой Цюриха). То есть можно теперь доподлинно узнать правдиво ли распространнёное мнение, что Эйнштейн был троечником в школе.

Итак список оценок (шесть — максимальный балл):
Немецкий — 5 Французский — 3 Английский — не аттестован Итальянский — 5 История — 6 География — 4 Алгебра — 6 Геометрия — 6 Начертательная геометрия — 6 Физика — 6 Химия — 5 Естественная история — 5 Художественный рисунок — 4 Технический рисунок — 4
Как видите, да, Эйнштейн чисто технически троешник, хотя его «тройка» выше нашей, отечественной (насколько я понял систему оценок в Швейцарии, в тех случаях, когда у нас ставят «кол», у них ставят «ноль», так что их система вообще семибалльная).
Но троечник троечнику рознь, глядя на оценки, можно сказать, что он блестяще учился, а с французским могло не сложиться — язык не нравился или с преподавателем не сложилось.
Кабинетный портрет
Я
На фотографии никаких надписей, но на картонке, на которую она наклеена, написано «Cabinet Portrait». Я надеялся, что это название ателье, оказалось всё проще.
«Cabinet Portrait» («кабинетный портрет») — распространённый
Кабинетные портреты впервые появились в Англии, в 1866 году, затем в США и постепенно распространились по всему миру.
Лого на картонке, как правило, относилось к её производителю. Впрочем иногда там бывали и реквизиты ателье, а некоторые известные фотографы клеили фотографии на именные паспарту.

Мне повезло меньше — у меня стандартное паспарту
Шутки про технологии
abeshkov: Знаю отличную шутку про UDP, но не факт что она до вас дойдет. :) n1313: про технологии шутим, да? Ну вот я знаю того, кто знает отличную шутку про DNS. bolk: n1313, но ты не уверен, правильно ли помнишь? n1313: чем дальше, тем сильнее, да. Но если что, я переспрошу.
«Не держите его так»
В фирме, которая выпускает программный продукт «ВИПнет» (сертифицированный, защищённый VPN, с алгоритмами ГОСТ) рассказали, что пытались договориться с «Эпл», чтобы встроить свой продукт в «Айпад» или распространять его для корпоративного сектора
Думаю, никому не надо рассказывать о важности защищённых каналов связи, о том, что корпоративному сектору нужно защищать свою информацию (а «ВИПнет» очень хорош как продукт с любой точки зрения).
Но в «Эпле» решили, что у клиентов необходимости в этой реализации VPN для «Айпада» нет.
Ребус
Вот, ребус придумался. Поймёт
Гоу вышел
Today marks a major milestone in the development of the Go programming language. We’re announcing Go version 1, or Go 1 for short, which defines a language and a set of core libraries to provide a stable foundation for creating reliable products, projects, and publications.
Появился релиз языка «Гоу». Это означает, что язык стабилизировался и обратную совместимость ломать больше не будут.
Лингвистические открытия
Вчера услышал в аэропорту «договариваться надо на берегу, а на середине реки веслами махать». Не подозревал, что у этой фразы есть продолжение.
— Так же и пропащая душа, Саша Антипов, — сказала Сусанна. — Надеюсь, вы не имеете ничего против друг друга? Или, как теперь говорят, вы монтируетесь?
Из книги «Время и место» Юрия Трифонова, книга 1981 года. Не уверен, кто
Открытие старое, но запишу сюда тоже. Оказывается «байховый» не означает «взятый с бахчи», как думают многие (и как я думал):
Слово pekoe происходит от тайваньского слова 白毫,
пѐк-хо (бай хао), — «белый пух». Отсюда и русское слово «байховый». Таким образом, «пекой» — это чай из почек и листьев, на которых есть эти ворсинки.
Что это было вообще?
После представления в самом большом , концертном зале Цюриха — «Корсо» о нем говорил весь город. Ассистент втыкал ему в грудь и спину кинжалы и рапиры, а он абсолютно не реагировал на это…
Вот как описал его выступление перед
студентами-медиками один из очевидцев: «Мирин Дажо, голый по пояс, молча стоит в центре комнаты. Ассистент очень быстро подходит сзади и вонзает в него80-сантиметровую рапирукуда-то в область почек. Гробовая тишина. Студенты и преподаватели сидят с раскрытыми ртами, не в силах поверить своим глазам.Сомнений нет: клинок прошел через тело, кончик торчит спереди. Самое удивительное — даже не невозмутимость Дажо, а то, что на его теле нет ни капли крови…»
Это цитата из описания другого ролика на «Ютубе» про него же.
Мой прапрадед
У меня есть пока единственная фотография моего прапрадеда — Никанора Ивановича Литвинова. Судя по дате рождения его дочери, моей прабабушки, он родился
Фотография подписана им собственноручно (если я правильно понимаю) и я знаю, что
Согласно «Статистическому ежегоднику Россіи» за 1913 год, показатель грамотности для мужчин в России на 1897 год был 29,3. Это те, кто умели читать. Писать должно было уметь меньшее количество. Правда в крупных городах этот показатель был сильно выше, например в Питере аж 65,2%, но мой предок жил, судя по тому что я знаю,
Тем более вызывает уважение, что мой прапрадед умел писать, причём не каракулями, а нормальным почерком, то есть имел к этому привычку.