Успехи с турником

На одной руке (47.81КиБ)

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

Зато подтягиваюсь «чисто» — без рывков и прыжков.

16 комментариев

666

Одно из чисел, несущих для христиан сакральный смысл — 666, «Число Зверя». Оно знакомо многим, но мало кто знает, что «666» не единственный вариант, а просто самый известный.

В рукописях встречаются и другие варианты, как например в папирусе ниже.

616 (55.29КиБ)

Тут вместо 666 («ΧΞϚ») записано 616 («ΧΙϚ»). Это, кстати, один из древнейших отрыков «Апокалипсиса», его датировка — конец третьего—начало четвёртого века.

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

Интересно, что когда-то в Москве ходил автобус с номером 666 и под давлением верующих его переименовали. Новым номером, по совпадению, стал 616, то есть переименовали из одного варианта «Числа Зверя» в другой.

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

В Ереване не без происшествий

Мы сегодня вылетам из Еревана через Москву домой, в Казань. Впечатлён действиями ереванской полиции.

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

Сегодня утром выяснилось, что Диана что-то не поделила с гидом и его у нас не будет, будет только машина с водителем. Причём деньги она возвращать не собирается, так как гид ей денег не вернул и так далее. Я ей пытался объяснить, что деньги я отдал и остальное меня не волнует, хочу получить услуги или деньги, но в ответ только слышал, что ничем помочь мне не могут.

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

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

Причём, как оказалось, решение этих проблем — вовсе не дело полиции, они должны были только взять заявление, с остальным разбирался бы суд. Но из уважения к гостям из России они доработали ситуацию до конца.

В остальном, нам всё понравилось. В Ереване всё очень дёшево по нашим меркам, красивая природа, очень вкусная еда и прекрасные памятники старины, возраст которых впечатляет. Мы посетили за два дня (сегодняшний у нас, фактически пропал) Гарни, Гегард (с гидом Дианы), Аштарак, Ошакан, Сагмосаванк, Ованаванк, Амберд (с «Тревел Клаб Армениа»), погуляли по Еревану.

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

Арарат (129.28КиБ)

Огромное спасибо очаровательной Հասմիկ (читается как «Асмик», с лёгким «х» впереди), сотруднице хостела, которая помогала нам в этой сложной ситуации и была временами нашим поводырём в лингвистических тупиках — полиция говорит на русском, но определённые трудности были.

Огромное спасибо и сотрудникам полиции, которые очень тщательно, корректно и с большим участием разбирались в этом деле! К сожалению, не запомнил их имена, очень уж непривычны для нашего уха.

Кстати, для экскурсий могу рекомендовать (личный опыт) гида Арэка («Тревел Клаб Армениа»), мы с женой много где были, но человека, который с таки́м жаром и любовью рассказывал бы о своей стране ещё не встречали.

Прекрасная страна, надеемся приехать ещё!

11 комментариев

Goto

Нередко в разговорах программистов всплывает тема оператора «goto». Например, сообщество крупно побурлило после появления его в ПХП. Многие считают, что оператор вредный, его появление в языке «понижает» язык в классе до Бейсика (хотя современные Бейсики — очень мощные языки) и он несёт только вред.

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

Попробую возразить.

Во-первых, если считать, что присутствие упомянутого оператора ставит язык в один ряд с худшими Бейсиками, то туда же низбежно попадают Ассемблеры и Си — языки, программировать на которых никогда зазорно не было (в Ассемблере goto называется иначе, но суть абсолютно та же).

Во-вторых, во многих языках goto уже есть. Только у него разные названия для разных целей, обычно это break и continue. Они всегда были в ПХП, есть они и в Перле, ПХП, Пайтоне, Джаве и многих других языках.

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

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

Так вот, всего этого современный оператор просто не умеет. Современный goto — тёзка того старого, плохого, сейчас он умеет переходить на метку, но не на всякую, а с огромным количеством ограничений и его использование не более вредно или стыдно, чем использование break или continue.

19 комментариев

Свёртка в вебе

Я как-то пропустил момент, когда фильтры SVG стало можно накладывать на обычный тег IMG, а не на изображения внутри SVG же. Любопытные эффекты можно делать, например, можно наложить свёртку для выделения краёв и это будет работать:

<style>
    .edge {
        -webkit-filter: url(#edge);
        filter: url(#edge);
    }
</style>

<svg style="width: 0; height: 0">
<filter id="edge">
<feConvolveMatrix kernelMatrix="-1 -1 -1 -1  9  -1 -1  -1  -1" />
</filter>
</svg>

<image src="sample.jpg" class="edge">

Магические числа в матрице — специальное ядро.

Впрочем, и раньше можно было внедрить в ХТМЛ СВГ-картинку и наложить сверху фильтр, ничего особенного, но мороки чуть больше. При желании этот фильтр можно унести прямо в ЦСС при помощи data URI, но тогда он продублируется два раза — для префиксной и безпрефиксной формы (несмотря на уверения «Кэнайюз», «Хром» и «Сафари» отказались работать без префикса).

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

var arr = document.getElementById('edge').childNodes;

for (var i = 0; i < arr.length; i++) {
    if (arr[i].kernelMatrix) {
        arr[i].kernelMatrix.baseVal.getItem(4).value = newvalue;
        break;
    }
}

Осталось только соединить этот код с «крутилкой» и готов онлайн-фильтр «выделение краёв».

10 комментариев

И и И (логические выражения в PHP)

В ПХП есть два набора команд булевой логики — многим более привычные «&&» и «||», но кроме них — напоминающие о Бейсике и Эскюэле «and» и «or». Даже программирующие на языке годами часто не знают чем они отличаются, между тем употребление второго набора может привести к трудноуловимым багам, потому что ведут они себя чуть иначе.

Вся разница заключается в приоритетах выполнения, большинство языков, разбирая выражение, опирается на приоритеты выполнения, например, умножение приоритетней сложения, этому нас учат в школе, в ПХП и многих других языках — так же: 2 + 2 × 2 = 6, а не 8.

Так вот. Набор «and» и «or» — чуть ли не самые низкоприоритетные из всего, что может встретиться, а «&&» и «||» находятся где-то посередине. Поясню примером. Команда присваивания выше «по табелю о рангах», чем «or», но ниже, чем «||»:

// какая-то переменная, значение которой в коде,
// к этому моменту, стало true
$check = true;

// а это другая контрольная переменная, где-то в коде
// она приобрела значение false
$criteria = false;

// и вот мы подходим к главному
$ret_bool = $criteria ||  $check;
$ret_logic = $criteria or $check;

var_dump($ret_bool, $ret_logic);

Будут ли отличаться значения переменных ret_bool и ret_logic после выполнения программы? Конечно будут, иначе я бы не писал этут статью, неправда ли? Значение первой будет true, второй — false.

Почему так? Приоритеты! ПХП, исполняя предпоследние две строчки кода видит их как-то так:

$ret_bool = ($criteria || $check);
($ret_logic = $criteria) or $check;

Исполнение идёт строго по приоритетам, так как во втором случае операция присваивания имеет больший приоритет, чем «or», первым выполняется именно она, а проверка переменной check осуществляется, но её результат отбрасывается.

Это отлично подходит для программировая в «хакерском» стиле:

$ret_logic = $criteria or CheckSomething();

Функция CheckSomething() вызовется только в том случае, если criteria будет равна false или эквиваленту, но зато результат функции никак не повлияет на значение ret_logic.

Впрочем, я такой способ программирования крайне не рекомендую — для современных программистов он сложен.

28 комментариев

Колумб, который Христофор, хороший был моряк…

Завтра вступает в силу вторая часть запретов из прошлогоднего антитабачного закона. Станет запрещено курить в торговых центрах, поездах дальнего следования, гостиницах, ресторанах, кафе и барах.

Штраф за курение в неположенном месте — до полутора тысяч рублей.

41 комментарий

← сюда туда →