У̶д̶о̶б̶н̶о̶е̶ новое цитирование в блоге

Долго думал как упростить цитирование у себя в блоге, наконец придумал. Ещё остались кое-какие шероховатости, но в целом должно стать лучше.

Сделал две вещи.

Во-первых, когда вы вставляете какой-то кусок текста в поле для комментариев, движок пытается догадаться не вставляете ли вы цитату и, если вставляете, расставляет значки цитирования („>“) перед каждой строкой.

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

О последнем расскажу немного подробнее. Устроено всё несложно, разберём на примере выделения полужирным.

Сохранённые звёздочки

Чтобы звёздочки скопировались вместе с остальным текстом, они должны в этом тексте присутствовать. И они там есть. Вокруг слова, выделенного жирным находятся звёздочки, написанные нулевым шрифтом и прозрачным цветом. Поэтому в тексте и при выделении их не видно, но в буфер обмена они попадают. Так же устроено сохранение остальной разметки — вырезанных частей ссылок, исходных УРЛов картинок.

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

Л…ениногорск и голуби

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

Голуби (85.70КиБ)

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

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

4 комментария

Всякая мелочь одним постом-3

Немецкий физик Томас Зенкель собрал пилотируемый летательный аппарат с 16 пропеллерами от обычных игрушечных самолётов. Правда держится аппарат в воздухе всего от 10 до 30 минут, но это неплохо. В случае неполадок пилот может воспользоваться парашютом.

На «Хабре» недавно вышла статья сравнивающая лампы накаливания, люминесцентные и, появившиеся недавно, светодиодные бытовые лампы.

Подсказали два «пасхальных яйца» в Гугле, правда работают не во всех браузерах: Гугл делает «бочку» и Гугл перекосило.

Приказ Министерства связи и массовых коммуникаций Российской Федерации (Минкомсвязь России) от 3 мая 2011 г. N 92 г. Москва «Об определении видов технических средств и систем, подлежащих оснащению аппаратурой спутниковой навигации ГЛОНАСС или ГЛОНАСС/GPS» обязывает оснастить аппаратурой спутниковой навигации ГЛОНАСС или ГЛОНАСС/ГПС оборудование радиодоступа для беспроводной передачи данных. Точка доступа WiFi относится к оборудованию радиодоступа для беспроводной передачи данных. На что будет это похоже, а главное зачем это делать?

Полюбопытсвуйте на «Брачную газету», выпуск от 13 августа 1917 года. «Жениться желаетъ и ищетъ невѣсту съ большими средствами, не старше 35 лѣтъ…».

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

Давно хотел написать на эту тему, а тут статья подвернулась — «Романтизм головного мозга», о том как искажают картину мира плохие фильмы и романы.

А это для программистов — приложение «D» стандарта Си 99 разрешает использование в качестве имён переменных и функций некоторые символы из Юникода. То есть уже 10 лет можно называть русскими (или арабскими) буквами переменные в Си. Чуть подробнее — у Анатолия Воробья в ЖЖ.

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

Забавная книжка

Забавная книжка (125.48КиБ)

Всё забываю рассказать. Купили эту книжку, когда в Финляндии с друзьями были. Продавалась в Хельсинки, в Музее современного искусства. Мне кажется, незаменима для развлечения маленьких детей, даром, что на финском.

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

Книга называется «Täyttä laukkaa!» («Во весь опор!», английское название — «Gallop!»), автор, насколько я понимаю — Rufus Butler Seder (Руфус Батлер Сидер). На каждом развороте справа картинка, с какой-то несложной надписью, например под лошадью — «hoppoti-koppoti-kop» («цок-цок-цок»), слева — маленькое интро животного, у кошки — «vaanii hiipii ponkaisee ja loikkaa» («киса подкрадывается и прыгает»).

Уважаемые читатели, скажите пожалуйста, а на русском вы такие книги не видели?

22 комментария

Цвета из CSS, названия которых короче их номеров

Кстати, если вдруг кому-нибудь для оптимизации CSS нужна таблица цветов, названия которых короче их номеров, то я вчера для конвертора сделал скрипт, который все такие цвета нашёл. Наверняка её кто-то составлял и раньше, но мне было быстрее программу написать. Список в виде массива есть в конверторе, а вот список их названий строкой: navy, green, teal, indigo, maroon, purple, olive, gray, grey, sienna, brown, silver, peru, tan, orchid, plum, violet, khaki, azure, wheat, beige, salmon, linen, red, tomato, coral, orange, pink, gold, bisque, snow, ivory.

Например, «silver» короче своего числового эквивалента «#c0c0c0» на один символ, а «tan» короче «#d2b48c» на четыре.

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

Картинка на чистом CSS

Картинка на чистом CSS (130.69КиБ)

Сейчас CSS позволяет делать всё более интересные вещи. Раз уж сегодня короткий день, за 20 минут из «сэкономленного» часа накидал программу, которая конвертирует любую картинку (в форматах PNG, JPEG или GIF) в чистый CSS (без использования dataURI). Каждая точка кодируется через одну конструкцию radial-gradient. Очень расточительно, сделал для иллюстрации принципа.

Если заморачиваться серьёзно, то можно выявлять в картинке области с градиентом (так делается в формате PNG для упаковки) и покрывать их целиком одной конструкцией, а так же оптимизировать наложением линейных градиентных областей с прозрачностью (через rgba или hsla). Достаточно интересная программисткая задача, кстати.

Самую очевидную оптимизацию я сделал в пробке по работе домой — выделил самый частый цвет и пустил его на фон, выиграл примерно 11,5КБ на картинке в примере.

За 20 минут я только успел сделать небольшой конвертор (результат работы можно посмотреть в разделе «Храню», только для «Хрома»). Так как синтаксис завязан на префиксы, то я в генераторе сделал указание браузера под который нужно сгенерировать код (поддерживаются: IE, Opera, Firefox и Chrome). Всё это весьма расточительно, картинка 75×75 занимает 164КБ.

У меня заработало для «Хрома» и «Файэрфокса», под «Оперой» не завелось, лень проверять что она не поддерживает, IE попробовать не могу — его не бывает на «Маках».

Код конвертора

// Конвертор картинки в чистый CSS, / ноябрь 2011 

<?
// ffccbb → fcb
// ff0000 → red
// abcdef → abcdef
function Bo_shortcolor($color) {
    static $shortnames = array(
        "#000080" => "navy",
        "#008000" => "green",
        "#008080" => "teal",
        "#4b0082" => "indigo",
        "#800000" => "maroon",
        "#800080" => "purple",
        "#808000" => "olive",
        //"#808080" => "gray",
        "#808080" => "grey",
        "#a0522d" => "sienna",
        "#a52a2a" => "brown",
        "#c0c0c0" => "silver",
        "#cd853f" => "peru",
        "#d2b48c" => "tan",
        "#da70d6" => "orchid",
        "#dda0dd" => "plum",
        "#ee82ee" => "violet",
        "#f0e68c" => "khaki",
        "#f0ffff" => "azure",
        "#f5deb3" => "wheat",
        "#f5f5dc" => "beige",
        "#fa8072" => "salmon",
        "#faf0e6" => "linen",
        "#ff0000" => "red",
        "#ff6347" => "tomato",
        "#ff7f50" => "coral",
        "#ffa500" => "orange",
        "#ffc0cb" => "pink",
        "#ffd700" => "gold",
        "#ffe4c4" => "bisque",
        "#fffafa" => "snow",
        "#fffff0" => "ivory",
    );

    $c = strtolower($color);
    if (isset($shortnames[$c])) {
        return $shortnames[$c];
    }

    if ($c[0] == $c[1] && $c[2] == $c[3] && $c[4] == $c[5]) {
        return '#' . $c[1] . $c[3] . $c[5];
    }

    return '#' . $c;
}

function Bo_convert($filename, $prefix = '') {
    if (!file_exists($filename) && !is_readable($filename)) {
        throw new Exception('File not found.');
    }

    $types = array(
        IMAGETYPE_JPG => 'jpeg',
        IMAGETYPE_PNG => 'png',
        IMAGETYPE_GIF => 'gif',
    );

    $imagedata = @getimagesize($filename);
    if (!is_array($imagedata) || !isset($imagedata[2]) || !isset($types[$imagedata[2]])) {
        throw new Exception('Unknown image format');
    }

    $im = call_user_func("imagecreatefrom" . $types[$imagedata[2]], $filename);
    $w  = imagesx($im);
    $h  = imagesy($im);

    // Самый частый цвет идёт на background-color
    $colorfreq = array();
    for ($x = 0; $x<$w; $x++) for ($y = 0; $y<$h; $y++) @$colorfreq[imagecolorat($im, $x, $y)]++;

    $bg = array_search(max($colorfreq), $colorfreq);

    for ($x = 0; $x<$w; $x++)
    for ($y = 0; $y<$h; $y++) {
        $pixel = imagecolorat($im, $x, $y);
        if ($pixel != $bg) {
            $color = Bo_shortcolor(sprintf('%06x', $pixel));

            $dots[] = "{$prefix}radial-gradient($color,$color) {$x}px {$y}px";
        }
    }

    $dots = join(',', $dots);
    $bg   = Bo_shortcolor(sprintf('%06x', $bg));

    return <<<HTML
<head>
<title>$filename converted in background by Evgeny Stepanischev //bolknote.ru</title>
<style text="text/css">
    div {
        background: $dots;
        background-repeat: no-repeat;
        {$prefix}background-size: 1px 1px;
        background-color: $bg;
        background-size: 1px 1px;
        width: {$w}; height: {$h};
    }
</style>
<body>
<div></div>
</body>
HTML;
}

if ($_SERVER['argc'] < 2) {
    echo <<<HELP
Image to background CSS convertor by Evgeny Stepanischev. //bolknote.ru Nov 2011

Usage: {$_SERVER['argv'][0]} filename [prefix]

filename  - image file name (PNG, JPEG or GIF)
prefix    - your browser name (Opera, IE, FF, Safari, Chrome)
HELP;
exit;
}

$browsers = array(
    'ie'     => '-ms-',
    'opera'  => '-o-',
    'safari' => '-webkit-',
    'chrome' => '-webkit-',
    'chromium' => '-webkit-',
    'ff' => '-moz-',
    'firefox' => '-moz-',
);

if (isset($_SERVER['argv'][2])) {
    $type = strtolower($_SERVER['argv'][2]);
    $prefix = isset($browsers[$type]) ? $browsers[$type] : '-' . $type . '-';
} else {
    $prefix = '';
}

try {
    echo Bo_convert($_SERVER['argv'][1], $prefix);
} catch (Exception $e) {
    echo "Error: ", $e->getMessage(), "\n";
};

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

Крестики-нолики на HTML CSS и прокрастинация

Крестики-нолики (38.95КиБ)

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

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

У меня с моими «Крестиками-ноликами» на HTML и CSS такое произошло — не хотелось заканчивать, искать ошибки и так далее. Вроде как проект-то уже сделан, проехали, кому-он-нужен-зачем-баги-править. Но какая-то неудовлетволённость осталась, хотелось доделать. В итоге я около недели по полчаса тщательно искал ошибку и вносил улучшения.

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

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

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

«Неловкая пауза»

Неловкая пауза (24.35КиБ)

Художница Таня из ЖЖ, рисует очень забавные картинки, в основном обыгрывающие неоднозначность языка. Я про неё уже упоминал.

Несколько дней назад попросил её нарисовать неловкую паузу и вот! Спасибо, Таня!

Вопрос на засыпку — Перемотка в какую сторону изображена на картинке? А если приглядеться?

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

Паранормальное

Большинство людей как-то смешивает в одну кучу «всё паранормальное», принимая или отвергая всё сразу, скопом.

Для меня достаточно очевидно, что эту кучу нужно делить на два чётких класса: на то, что противоречит современным научным взглядам (телекинез, телепатия, гороскопы, суеверия, аура и прочее), как бы это наукообразно не звучало (структурированная вода, нуль-транспортировка и т. п.) и то, что может существовать в рамках современной науки. Последнее можно считать фантазиями или гипотезами, как угодно, но ничего мистического в этом нет.

Про первую группу говорить не хочется, про вторую приведу два примера.

Лох-несское чудовище благополучно разоблачено, насколько я знаю (на известной фотографии муляж), а вот с йети («снежным человеком», бигфутом) пока ничего не понятно. С точки зрения науки этот вид вполне может существовать, почему нет, десяток чудом выживших в горах больших белых обезьян могут тысячелетиями там прятаться, попробуй найди. Каждый год учёные открывают несколько новых видов животных, например, три года назад был найден новый вид пингвинов в Новой Зеландии. Так что удивительного в том, что в каких-то лесах или горах, которые просто так не прочесать, есть какие-то достаточно крупные животные, ещё и не особо желающие быть найденными?

Другая тема — инопланетяне. В этой теме традиционно серьёзные исследования никому не интересны, потому что не содержат ничего сенсационного, а громче всех высказываются люди далёкие от науки. Поэтому первые ассоциации у нас всех — «зелёные человечки» и «летающие тарелочки». Тем не менее, в возможном существовании разумной жизни с других планет нет ничего ненаучного. Количество звёзд во Вселенной оценивается в 1,5×10¹¹, а недавно астрономы заявили, что их может быть в три раза больше. Вокруг такого гигантского количества звёзд громадное количество планет. Что мешает зародится жизни на какой-то из них? Науке это не противоречит.

Другое дело — посещение Земли инопланетянами. Ближайшая к нам звезда находится на расстоянии 4,22 световых года. Современная физика утверждает, что добраться за приемлемое время из такого замкадья к нам невозможно. Наверное, может быть и что-то поближе, ещё не обнаруженное или (см.: паранойя) тщательно скрываемое, но более научные гипотезы такие: Землю инопланетяне не посещали или у нас в Солнечной системе есть соседи, ну или были.

Например, на Марсе могла бы быть какая-то цивилизация, почему нет? Например, их Рейган с Горбачёвым не договорились и цивилизация погибла, мы едва-едва не вляпались в ядерную войну, если бы не случайность.

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

62 комментария

Ёперный театр :-(

«Опера» после очередного падения невосстановимо потеряла все мои 70 открытых вкладок, чем меня расстроила до такой степени, что я решил куда-нибудь перейти. Вариантов, в общем-то, немного — «Хром» или «Сафари». «Хром» — потому что быстрый и часто обновляется, «Сафари» — потому что хорошо интегрирован с системой.

Сначала попробую первый. Посоветуйте плагины? Это не «Опера», тут надо всё обвешать плагинами, чтобы начать работать.

Как группировать вкладки (у меня их бывает много, хорошо бы сворачивать в группы), есть ли нормальный «Спиддил» (в идеале — с горячими клавишами), чем блокировать «Флеш» и рекламу? Как из строки адреса искать в разных поисковых машинах? Я уже смирился с тем, что киллер-фича «Оперы» — «уместить страницу в ширину браузера» недоступна где-либо ещё.

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

Написание названий на русском

У меня в комментариях к заметке про отмену перехода на зимнее время внезапно началось рубилово на тему написания иноязычных марок на русском. Нужно ли писать «Дивчина» или «Дівчина» про сеть украинских магазинов женской одежды (сеть выдуманная, я реальных марок не знаю), нужно ли писать «Хёндай» или «현대», нужно писать «Майкрософт» или «Microsoft», «Бахетле» или «Бәхетле»?

Будем писать только на латинице и русском или затронем всё, что мы умеет потенциально читать — французский, немецкий, казахский, татарский, монгольский, украинский, белорусский и так далее? Если в Татарстане слово по-татарски может прочитать гораздо больше людей, чем слово на английском, должен ли я татарские марки и имена писать на татарском? Тут это второй государственный язык.

Должен ли я писать «Exchange», потому что «Эксчендж» режет глаз и режет ли глаз «Ястремжемский» и «Ястржембовский»? Нужно ли мне писать по-польски — «Jastrzębowski»?

Как писать марки российского происхождения, но маскирующиеся под зарубежные? Должен ли я знать их историю? Что если я вижу два варианта написания — латиницей и кирилицей? Могу выбрать любой? Встретив новую марку мне следует исследовать нет ли у неё второго написания? Как мне написать марку о которой я только слышал, но ни разу не видел написания?

С айтишниками вообще сложно спорить на эту тему, они уверены, что все вокруг знают английский и умеют читать эти буквы, хотя сами читают «character» как «чарактер», а «xeno» как «ксено».

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

Всякая мелочь одним постом-2

А не завести ли мне традицию каждую субботу сбрасывать в блог закладки, накопившиеся за неделю? Попробую этот формат.

На Григория Чхартишвили (более известного как Борис Акунин) некий бдительный человека написал заявление, Григорий обвиняется в оскорблении национального достоинства за фразу «Маса возражал, что русские таких тонкостей не заметят, они неспособны даже отличить удон от собы. Он, конечно, был прав» из книги «Весь мир — театр».

Александр Фингерут рекомендует ознакомиться с некоторыми полезными персональными блогами в ЖЖ, которые ведут врачи разных специализаций, многим покажется полезной статья про энергетические напитки из блога Андрея Гулды, главы медицинской службы в компании «Шлюмберже» в СНГ и председателя Национального Общества Промышленной Медицины.

Два перекликающихся поста про ксенофобию. Про полезную ксенофобию внутри нас Стелазина и размышения о ксенофобии в литературе и кино Леонида Каганова.

Для ностальгирующих по «старому доброму Спектруму» наш соотечественник открыл проект «ЗетИкс-Арт», посвящённый авторской графике, созданной на «Спектруме» и его клонах. Если кто-то ещё знает как там кодировались картинки, наверное будет интересно вспомнить, что такое «флеш-эффект», узнать что такое «гигаскрин» и «мультиколор».

В Казани появился свой Хатико, собака уже второй месяц каждый день в восемь утра ждёт своего хозяина у дверей станции «Проспект Победы».

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

Перехода на зимнее время не будет

Все помнят, что перехода на зимнее время в ночь с этой субботы на воскресенье не будет? Переход отменён Федеральным законом Российской Федерации от 3 июня 2011 г. N 107-ФЗ «Об исчислении времени».

В этой связи нужно аккуратно проверить, что все ваши сервера, устройства и так далее, не перейдут на это время и не создадут путаницу. Если вы регулярно обновляете систему, то в большой вероятностью вам ничего не грозит, на «Хабре» есть довольно развёрнутая статья о том до какой версии нужно обновлять различные системы или какие обновления ставить (например, для всех актуальных версий «Виндоус», включая ЭксПи, существует обновление №2570791, проверить его установку можно, например, через «ПауэрШел», для «Мак ОС Икс» требуется обновиться до 10.7.2).

Всё плохо у «Андроидов», в большинстве устройств переход состоится даже в последних прошивках (2.3.6, 3.2.1, CyanogenMod-7.1), придётся исправлять это вручную. Например, мой «Нексус Уан» к переходу не готов, несмотря на «Андроид» 2.3.6, сам проверил. Я поэкспериментировал и переставил телефон на часовой пояс «Дубай, GMT+04:00», должно помочь.

Так же пострадают джейлбрейкнутые устройства на «айОС», версия 4 не имеет необходимого обновления (а пятая пока не поддаётся джейбрейку), но есть способ обновить зоны вручную, ну или выставить всё тот же «Дубай».

Смартфоны на «Симбиане», автоматические будильники, сотовые телефоны, скорее всего вас подведут, ищите где у них «Дубай» или галочку, контролирующую автоматический переход на летнее и зимнее. Подумайте какое сетевое оборудовние у вас имеет внутренние часы, нужно ли обновиться или скорректировать зоны вручную (например, у «Цисок» такая возможность есть).

Кстати, некоторые программы и языки программирования имеют собственные базы временны́х зон. Например, серверу почты «Эксченч» требуется отдельное обновление, а интерпретатору ПХП лучше выставить настройку зоны на что-нибудь нейтральное без сезонных поясов (я выставил те же «Asia/Dubai»), а ещё лучше, если есть возможность — обновить пакет временны́х зон.

82 комментария

Время «актуальности» телефонов под «Андроид»

По статистике с Мишеля ДеГуста, который записывает дату выхода всех основных смартфонов на «Андроиде» и даты выхода прошивок для них, получается следующее:

  • 7 из 18 смартфонов никогда не имели актуальной (т. е. последней) версии «Андроида»;
  • 12 из 18 имели актуальную версию «Андроида» всего несколько недель или меньше;
  • 10 из 18 отставали на две версии системы к тому моменту, когда подходил срок окончания их двухгодичного контракта с сотовым оператором;
  • 11 из 18 телефон перестали получать обновления менее чем через год после выхода;
  • 13 из 18 перестали получать поддержку еще в том момент, когда они еще продавались, или сразу же после;
  • 15 из 18 не получили обновления до версии 2.3 (Gingerbread), хотя она была выпущена в декабре 2010-го;
  • в течение нескольких недель после выхода «Андроида» 4.0 (Ice Cream Sandwic), все рассмотренные аппараты получат по минус одной версии ОС;
  • по крайней мере 16 из 18 рассмотренных аппаратов никогда не получат Ice Cream Sandwich официально.

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

Хитрость

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

А вот если в это отверстие засунуть палец, то работает за милую душу. Проверил уже в туалетах Домодедова и Шереметьева.

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

Октябрь…

Стив Джобс — «Эпл», «Пиксар», «Некст». 24 феврая 1955 — 5 октября 2011.  Денис Ритчи — один из авторов «Би», «Си», «ЮНИКС». 9 сентября 1941 — 8-12 октября 2011.  Джон Маккарти — изобретатель «ЛИСПа», основоположник функционального программирования, исследователь ИИ. 4 сентября 1927 — 23 октября 2011.

R. I. P.

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

«Крестики-нолики» на HTML и CSS

Давно хотел попробовать сделать «крестики-нолики» только на HTML и CSS, без использования скриптов, вот — сделал.

HTML+CSS only tic-tac-toe (24.29КиБ)

Играет на уровне мастера, то есть пытается либо выиграть, либо свести к ничьей. Вычисления позиций проводил через реализацию «крестиков-ноликов» Стефена Остермиллера. Там на ДжаваСкрипте, я написал обвязку для перебора и запускал через «Ви8». Поскольку мне хотелось придать игре налёт винтажности, добавил лёгкий фон конца девяностых, шрифт курсивом и тень. Всё как в старые добрые девяностые, возможно только анимированного ГИФа какого-нибудь нехватает.

Кстати, несмотря на всю винтажность, от браузера требуется поддержка CSS3, включая трансформации.

Я сильно не тестировал, спать уже надо ложиться. Если будут ошибки, пишите, постараюсь поправить, если только они не относятся к недостаткам алгоритма Остермиллера. Всё-таки это скорее концепт, чем полноценная игра.

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

Всякая мелочь одним постом

Девушка Лена, живущая в Японии три года описывает один свой день с утра до вечера. Много фото.

Дима Ромахин рассказывает всем полуночникам сказку о том, почему грифы лысые.

Некие ребята 20 дней ехали на джипах по Волге и делали пробы воды. Результаты можно посмотреть на специальной карте. В Казанке очень жёсткая вода и фторидов выше нормы.

У Татьяны Тихомировой, профессионального аллерголога-иммунолога и к.м.н в ЖЖ, в разделе «Санпросвет» куча интересных статей по медицине, написанных понятным языком. Некоторые из её постов стали основой для статей в «Комсомольской правде», с них можно начать знакомство.

На форуме «Города мастеров» есть подборка законов на тему нарушения тишины и покоя в ночное время, законы по республикам и областям (Татарстан и Москва присутствуют).

Казанский активист Олеся Балтусова в своём ЖЖ пригласила президента Татарстана прогуляться по Казани, чтобы наглядно показать в какой упадок приходят исторические памятники нашего города. Президент предложение принял, по результатам прогулки (которые уже стали регулярными) проведена масса разбирательств, остановлено незаконное строительство в центре города, а Олеся стала помощником президента республики Татарстан.

Оказывается в стандарте «Долби Диджитал» звуковая дорожка оптически кодируется прямо на ленту, с краю и туда где перфорация. В основном, такое кодирование напоминает гипертрофированный QR-код.

На сайте Вадима Макеева выложена презентация «Прокрустовы окна» к его докладу на самарской конференции «404», прошедшей в этом году. Конечно, по слайдам далеко не всё понятно, но кое-какие ключевые слова и начальное понимание о проблеме выудить можно.

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