IE9 и таблицы

В продукте, которым я занимаюсь, минимальная версия Эксплорера, которую я решил поддерживать — девятая. В будущем я хочу поднять это требование до десятой, а пока приходится жить с тем, что есть — клиенты не готовы к резким переменам и я их понимаю.
Наткнулись на странную проблему в этой версии Эксплорера — некоторые таблицы выглядят как на снимке выше — ячейки в строках иногда выпирают вправо безо всякой видимой причины.
Дело оказалось в пробелах между ячейками — верстальщик отформатировал шаблон, чтобы он лучше читался, и все браузеры всё показали правильно, один девятый Эксплорер сошёл с ума. Лечится проблема запросто — либо убираем форматирование в шаблоне, либо убираем его прямо в браузере.
Я выбрал второй путь. Пусть лучше шаблон выглядит читаемо, а костыль для девятого Эксплорера всегда можно будет убрать лёгким движением руки. Выглядит он вот так, кстати (используется jQuery, само собой):
$("table tr").contents().filter(function() {
return this.nodeType == 3;
}).remove();Купил велосипед

Раньше я иногда арендовал велосипед, чтобы просто покататься с друзьями, а в этом году решил неожиданно купить собственный. Купил ЖиТи Аваланч Элит 2014 года. Приобрёл в среду на прошлой неделе, с тех пор катаюсь почти каждый день.
Попробовал приезжать на нём на работу и оказалось, что это удобнее и интереснее такси — появилось
Ребята, которые узнают, что я сейчас езжу на велике, всё спрашивают потею ли я. Потею — там, где рюкзак прилегает к спине. Решается проблема просто (душа у нас нет) — в офис берётся запасная футболка, переодеваешься и идёшь работать.
Казань ✈ Баку ✈ Казань
На приближающихся праздниках решили с женой побывать в Баку.
Гобустан
Мы тут сегодня из Азербайджана вернулись, очень насыщенная программа получилась, масса впечатлений. Совершенно случайно исполнилась детская мечта, не мечта даже… не знаю как выразиться.
Словом, когда я в детстве разглядывал в книжках фотографии с рисунков пещерных людей и я мечтать не мог к ним прикоснуться в жизни. Это казалось совершенно нереальным, что я и не мечтал — зачем мечтать
Во взрослом возрасте мечта уже оформилась — хотелось увидеть эти рисунки, потрогать их, правда я понятия не имел как к этой мечте подступиться — мне всё казалось, что в открытом доступе таких мест быть не может, всё найденное должно быть обнесено забором с колючей проволокой, но вдруг посчастливится наткнутся

И вот — Гобустан, заповедник в Азербайджане, шесть тысяч наскальных рисунков, среди которых можно бродить вечность!
Вечности у меня не было, но около часа я со светящимися глазами разглядывал рисунки, датированные 3—2 тысячелетием (не годом!) до нашей эры.
На рисунке выше изображена плоскодонная лодка с солнцем в носовой части, а так же несколько людей с луками, перекинутыми через плечо и стрелами в руках. Зигзаги над головой одного из них означают дождь и облака.
Детализация у рисунков, кстати, абсолютно разная — от простых схематичных, по которым иногда и не понять что изображено, до неплохо выполненных силуэтов, вероятно
Тематика тоже разная — много рисунков животных, с ритуальным, как считается, предназначением (потыкать копьём в рисунок — хорошая примета перед охотой), но есть и чисто бытовые сцены — религиозные обряды, танцы и так далее. Комикс, которому несколько тысячелетий.
CSS variables
Константы в ЦСС (которые
Идея замечательная — если у вас есть
:root {
--bgcolor: #000;
}
body {
background-color: var(--bgcolor);
}Как видите, префикс «var» сменился на два минуса в полном соответствии с изменениями в стандарте. Чем не устроил предыдущий синтаксис мне не интересно, но этот префикс набирать определённо быстрее —
Что почитать перед выходными
Алекс Экслер выложил у себя в блоге историю Максима Баталина о разблокировке Айфона, заблокированного
В блоге Архивариуса появилась статья о краске «Мумия», которая
Разоблачение «Шестидесяти фактов о Николае Втором» — очень проработанная статья в историческом сообществе Живого Журнала.
И напоследок — небольшая презентация об интерпретаторе ПХП нового поколения — ПХПНГ, несмотря на краткость, самая суть передана.
Чудно́е в PHP
На работе сейчас с любопытным багом в ПХП разбирались. Разобрались, вот выжимка:
interface I {}
var_dump(class_exists('cI')); // false
var_dump(class_exists('C')); // true
class cI implements I {}
class C {}
var_dump(class_exists('cI')); // true
var_dump(class_exists('C')); // trueВыходит, если класс реализует интерфейс, то его не существует выше строки, где он декларируется, класс без реализации интерфейса виден в любом месте. Версия ПХП — 5.5.11. Я для интереса попробовал на 5.6а1 (есть под рукой собранный) — работает так же.
Что почитать в выходной
«25 лет: счастье и разочарование» — история условной Люси, представительницы поколения, воспитанного в завышенных ожиданиях. Трансформация «ты сможешь стать кем угодно» в «ты станешь кем захочешь» как причина кажущейся неудачи в жизни Люси.
Питерский мастер Юрий Хвтисишвили сделал потрясающую копию мотоцикла
«Инвалиды не хотят никого вдохновлять» — перевод выступления Стеллы Ёнг, участницы сообщества людей с ограниченными возможностями. На её взгляд (по всей видимости в Америке) инвалидам фактически вменили в обязанность вдохновлять своим примером всех остальных, от них ждут жизненного урока несмирения, мотивационных речей и всего такого. Стелла Ёнг с таким отношением несогласна.
Я вижу в этом знак того, что инвалидам в Америке живётся уже хорошо или хотя бы сносно. Публичные выступления, мотивационные речи — всё это, на мой взгляд, попытки привлечь общественное внимание
«Эволюция „зиги“» — версия, откуда появился жест, знакомый нам с детства по фильмам про войну — так называемая «зига», жест, которым приветствовали Гитлера. А так же трансформация этого жеста в другой — «рука на сердце», который сейчас широко используют политики.
«Как наши предки спали по два раза за ночь и проблема „шока настоящего“» — в статье утверждается, что буквально до недавнего времени (по историческим часам) люди в Европе спали дважды за ночь. Примерно в половине третьего они просыпались, час или два бодрствовали, потом засыпали ещё раз, до утра.
Случайные числа в Sed
После шахмат на «Седе» я, похоже, в глазах общественности стал
В основном, задачи очень простые и даже рутинные, ничего интересного, но вот вчера прислали действительно интересный вопрос. Вопрос в том можно ли командами «Седа» получить случайное число?
Уж не знаю что именно такого спросивший собирается с ним потом делать, надеюсь,
Итак, что же можно сделать? Команды жёстко заданы и менять их нельзя, возможно
Я
Тогда я не обратил на это должного внимания, а когда получил упомянутое письмо — вспомнил. Общая идея оформилась быстро: нужно очистить экран, скрыть курсор, выставить цвет фона и шрифта одинаковыми (чтобы скрыть прочитанный из файла мусор — ведь sed выведет прочитанное на экран), прочитать файл случайных чисел, потом сосчитать позицию в которой оказался курсор, восстановить параметры экрана и вывести позицию курсора.
В манипуляциях с экраном ничего сложного нет — существуют специальные управляющие последовательности при помощи которых это делается, даже координаты курсора можно получить ими же.
Получившийся код вполне уверенно работает, разве что у чисел, которые выводятся, распределение далековато от равномерного, но алгоритмы, исправляющие этот недостаток, в изобилии есть в интернете. Да и сам алгоритм получения случайного числа можно изменить: например не считывать позицию курсора,
В общем, у меня вышел вот такой код:
#!/usr/local/bin/gsed -n -f
# Очищаем экран, выставляем цвет чёрное на чёрном, убираем курсор
1i\\x1B[2J\x1B[f\x1B[30;40m\x1B[?25l
# Читаем файл случайных чисел, пока не встретим перевод строки
1R /dev/urandom
# Запрашиваем текущие координаты курсора
1a\\x1B[6n
2{
# Смотрим чему равна первая (Y) координата, оставляем только её
s/.*\x1B\[\([0-9]*\);1R.*/Random number: \1/
# Убираем текущий текст в буфер
h
# Очищаем экран, восстанавливаем цвет и курсор
i\\x1B[2J\x1B[f\x1B[0m\x1B[?25h
# Вынимаем из буфера сохранённое
g
# Печатаем сохранённое на экран
p
# Выходим
q
}У него есть и недостаток — так как «Сед» всегда совершает действия только после того как получит данные снаружи, вам придётся дважды нажать «Энтер», чтобы получить ожидаемое. Но от этого уже никуда не денешься, разве что можно сократить количество нажатий до одного — если отказаться от считывания координат.