Проблема: Windows 7 и Samba (Linux)

secpol.msc (54.78КиБ)

Взял на работе другой ноутбук — Dell Latitude E4200, он идёт у нас с Windows 7. Всё хорошо (наконец-то оценил быстродействие SSD-диска), но вот беда — Samba на Ubunta не дружит в Windows 7. Не удаётся подсоединить мою разработческую машину по «Самбе» к ноуту.

Проблема решается следующим образом: либо нужно поставить последнюю превью Samba 3.5 и включить в настройках «max protocol = smb2», либо запустить под Windows 7 «secpol.msc» (Win+R, secpol.msc, Enter) и в «Local Policies» («Локальные политики») → «Security Options» («Параметры безопасности») → «Network security: LAN Manager authentication level» («Параметры безопасности: уровень подлинности LAN Manager») поменять значение на «Send LM & NTLM use NTLMv2 session security if negotiated» («Отправлять LM и NTML — использовать сеансовую безопаcность NTLMv2 при согласовании»).

Я ещё менял кое-что в реестре, но, возможно, это и не обязательно.

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

«Эпл» делает очень плохой софт под Windows

Софт фирмы «Эпл» под Windows всегда меня удивляет своей неуместностью, как дворецкий в невесомости. Он сразу лишается своей чопорности, изящества и только бессмысленно размахивает руками и делает глупое лицо.

QuickTime ведёт переговоры (11.07КиБ)
QuickTime делает глупое лицо (10.70КиБ)

Это скриншоты свежескачанного QuickTime, который в «Опере» пытается проиграть видеоролик. Сначала он «вёл переговоры», потом огласил мне их результат. С акцентом. Ролик так и не проиграл, кстати.

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

HTML5 test

Автор теста HTML5 обновил свой тест, теперь максимальное количество очков, которое может набрать браузер — 300, а не 160. Кроме того, теперь поддержка браузером кодеков для тегов VIDEO/AUDIO не влияет на основные очки, а даёт бонусные. Это правильно, так как стандартном HTML5 кодек так и не выбран.

Результаты по браузерам выглядят так:

«Сафари» 5 — 208 (ночная сборка — 220) «Хром» 5 — 197 (ночная сборка — 217) FireFox 3.6 — 139 (ночная сборка — 176) «Опера» 10.50 — 129 (10.60a 3422 — 159) Internet Explorer 8 — 27 (IE9PP2 — 32)

То есть лидером, по результатам этого теста, является пока пятый «Сафари», при этом тот же пятый «Сафари» под Windows набирает только 165 очков.

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

«Опера» — ещё больше вещей из HTML5

Пока я тут ною, что «Опера» не поддерживает CSS1 в полном объёме, новый билд «Оперы» (10.60а build 3419) стал поддерживать кодек WebM для тега VIDEO (у которого есть все шансы стать стандартом), HTML5 offline web applications, Geolocation API (что давно было известно), Web Workers и Cross-Document Messaging.

Круто, ребята, очень круто. Но сделайте поддержку CSS1 уже наконец.

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

Идея: кнопка добавления в Google Reader

В комментариях к одному из постов, меня попросили сделать кнопку добавления RSS комментариев в «Google Reader» (если я правильно помню суть просьбы).

Мне эта идея не нравится, потому что я не знаю какое количество моих читателей пользуется «Google Reader», остальным, понятно, эта кнопка ни к чему. Я тут подумал — хорошо было бы ставить эту кнопку тем, что этим сервисом «Гугла» пользуется. Но как узнать кто пользуется, а кто нет?

Сейчас меня осенило (впрочем, скоро это не будет работать в Firefox, когда выйдет версия 3.7). Всё просто — надо найти URL по которому заходит только авторизованный пользователь «Google Reader», причём URL этот должен быть инвариантен пользователю, может это какая-то картинка или CSS/JS. Далее, на моей странице делается ссылка на этот URL и через псевдоселектор «:visited» ей ставится какое-то свойство CSS, которое я смогу проконтролировать через JavaScript.

Далее всё просто — у данной ссылки есть то свойство, значит пользователь недавно логинился в «Google Reader», если нет, не логинился. На основании этого можно ставить или убирать кнопку добавления RSS в этот сервис. Можно ещё выставить куку, чтобы в дальнейшем основываться уже на её наличии (если есть — пользователь пользуется «Google Reader», нет — ничего не значит).

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

Гимн России и гики

Забыли гимн России? Не беда!

Мой вариант для Windows CMD (в одну строку):

@echo off & (for /l %z in (200,1,223) do
for /f "usebackq skip=3 tokens=2 delims=:" %a in (`nslookup 62.76.96.%z`) do
set y=%a & echo %y:.= % | findstr /RV "[0-9]") & echo on

Вариант для Unix/Linux/Mac (bash):

dig -t ptr +short {200..225}.96.76.62.in-addr.arpa

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

Выяснил группу крови

На 32-м году жизни выяснил свою группу крови. У меня 2-я (A), резус отрицательный, у жены — 4-я (AB), резус положительный. Отличное сочетание, кстати, в смысле планирования ребёнка.

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

IE, непрямоугольные блоки и тени

IE крутой (20.16КиБ)

Что я хочу сказать по поводу статьи «Хитрая тень» в блоге Олега Мохова?

<html>
<head>
<xml:namespace ns="urn:schemas-microsoft-com:vml" prefix="v"/>
<style type="text/css">
.vml {
    behavior: url(#default#VML);
    -ms-behavior: url(#default#VML);
    font: 12px Tahoma, sans-serif;
}
#bar1 {
    width: 400px;
    height: 60px;
    color: white;
    padding: 12px;
    display: block;
}

#bar2 {
    width: 20px;
    height: 22px;
    padding: 12px;
    color: white;
    position:absolute;
}
</style>
</head>

<body>

  <v:roundrect class="vml" id="bar1" fillcolor="navy" strokecolor="navy" strokeweight="1px" arcsize="0.1">
  Привет, ребята из W3C! Отсталый Internet Explorer уже много-много лет умеет смешивать векторный язык и
  HTML, а в 2010 году не все продвинутые браузеры так умеют.
  <v:shadow class="vml" on="true" opacity="0.3" color="navy" offset="7px,5px" />
  </v:roundrect>

   <v:shape class="vml" id="bar2"
   fillcolor="red" strokecolor="red"
   coordorigin="0 0" coordsize="200 200"
   path="m 1,1 l 800,1, 800,400, 1800,400, 1800,1500, 1,1500, x e">
   <v:shadow class="vml" on="true" opacity="0.3" color="red" offset="7px,5px"  />
    <p>Привет<br />ещё раз!</p>
    <p>Вы знаете, уже Internet Explorer 5.0 умеет делать непрямоугольные блоки.</p>
    <p>Причём, делает это непринуждённо.</p>
   </v:shape>
</body>

</html>

Что IE умеет круче ещё с пятой версии.

Добавлено позднее: в комментариях мне подсказывают, что в IE8/9 надо либо включать режим эмуляции, либо использовать «-ms-behavior» и позиционировать элементы абсолютно.

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

Браузеры и стандарты: Ахиллес и черепаха

На «Хабре» кто-то в очередной раз кто-то наткнулся на статью полугодовой давности и понеслось — сделаны далекоидущие выводы.

Упомянутая статья за полгода не обновлялась (о чём говорит отсутствие упоминания об SVG в IE9), так что предпосылки неверные. Предпосылки неверные, но вывод, впрочем, правильный. В плане стандартов будущее крайне далеко.

Должен сказать, что любые тесты браузеров — это сферические кони в вакууме. Какие, нахрен, ACID3, какие SunSpider? «Опера» до сих пор не поддерживает CSS1! Ибо сказано:

The format of a percentage value is an optional sign character (’+’ or ’-’, with ’+’ being the default) immediately followed by a number (with or without a decimal point) immediately followed by ’%’.

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

CSS3-селекторы. Уже все основные браузеры хвастаются их поддержкой. На сайте CSS3.info есть даже специальный тест, на который часто ссылаются. Ну, хорошо «Хром» этот тест проходит. И начал проходить едва ли не раньше всех.

Если этот браузер заявляется поддержку селекторов CSS3, то для меня, как разработчика, это должно, видимо, означать, что работает и любая их комбинация, не так ли? Иначе, что толку от поддержки селекторов по одному в строке?

И вот реальная задача — делал я галереи на сайте без использования JavaScript, на голом CSS (спасибо селектору «:target», это самое крутое, что появилось в CSS за последние годы). Простая задача — если «:target» не указывает ни на один из тегов в текущей галерее, нужно указать, что выбрано первое изображение.

Да, пожалуйста (у меня первое изображение это последний элемент списка):

.gallery li:not(:target) ~ li:last-child a {
    background: #fff;
    color: #000;
}

.gallery li:target ~ li:last-child a {
    background: #aaa;
    background: rgba(170, 170, 170, 0.5);
    color: #fff;
}

Несложно же. «Опера» и «Файерфокс» чудесно с этим справляются, почему бы и нет, все селекторы им знакомы. Но это не работает в «Хроме» и «Сафари» (5-й «Сафари» я ещё не тестировал), точнее, это работает, но глючит — срабатывает только на следующем элементе, а не каждом. Чтобы исправить проблему, мне пришлось изобрести CSS hack для «Safari» и Chrome.

Так повсюду, в блоге IE авторы как-то показывали, что «border-radius» и «box-shadow» поддерживаются браузерами с глюками или имеют серьёзные различия в рендере. Всюду так — заявлена поддержка SVG1.1, но чего-то нехватает, Canvas, но текстом писать нельзя, тег VIDEO, но нельзя открывать на весь экран.

Конечно, тут ещё сказывается тот факт, что большинство этих спецификаций находятся в стадии черновика, вот реализовала «Опера» четыре года назад в браузере Server-sent Events, а черновик изменился и тег «event-source» теперь оказался не нужен.

В общем, к этим стандартам нам ещё всем идти и идти, много лет. Это основной вывод. А теперь другие мысли.

Селектор «:target» хоть и самое чудесное, но, в то же время, почти самое недодуманное в CSS за последние годы. Это уже ощутили мои читатели. Конечно, «:target» добавляет интерактива в CSS, но хотелось бы, чтобы этот интерактив не касался напрямую HTML, т. е. был какой-то флаг, указал его и страница не прокручивается к целевому тегу. Придётся переделать галерею на JavaScript.

Предыдущая моя заметка о conditional comments. Я уже когда-то говорил и ещё раз скажу — W3C делает большую ошибку, что не включает их в стандарт, причём на уровне и HTML, и CSS. W3C заявляет, что конечная цель — стандартное счастье у всех браузеров. Увы, в свете сказанного, туда идти ещё очень долго, учитывая все баги, недоделки, несделанное и просто ещё не дописанное самим W3C. А сейчас-то что делать? Как мне для «Сафари» и «Хрома» такой-то версии что-то выключить? Использовать CSS-хаки?

И ещё, как я уже писал W3C вряд ли когда-нибудь вообще остановится. Будут всё новые и новые стандарты, улучшения существующих. Это значит, что браузеры никогда не достигнут всего, что описано. И поэтому тоже нам нужны conditional comments.

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

Четыре малоизвестных факта о conditional comments (условных комментариях) в Internet Explorer

Во-первых, при помощи условных комментарие в IE можно определять не только версию IE. Например, можно узнать есть ли поддержка VML. Подозреваю, что эту поддержку из Internet Explorer когда-то удалят, так как сейчас удаляют expression. Так что проверять поддержку VML, правильнее так:

<!--[if VML]> Код VML <![endif]-->

Во-вторых, начиная с Windows 7, в браузере условными комментариями можно проверить версию операционной системы, так же как это делается с версией браузера, константы для проверки перечислены в таблице на сайте «Микрософт».

Можно, например, проверить запущен ли браузер на Windows 7. «Семёрка» и Vista вообще сильно отличаются по возможностям по XP, так что это иногда может быть полезно. Например, в Vista/7 поддерживается TLS SNI или аппаратное 2D-ускорение в Internet Explorer 9.

<!--[if WindowsEdition]> Это Windows 7 или старше <![endif] -->

В-третьих, если вы автор какого-то плагина, можно добавить возможность проверки версии плагина и его наличия в условные комментарии. Для этого нужно поместить его версию и название в ветку реестра HKEY_LOCAL_MACHINE → Software → Microsoft → Internet Explorer → Version Vector → MyPlugin = 0.5.

<!--[if gte MyPlugn 1.2]> Мой плагин версии 1.2 и выше <![endif] -->

Этот же способ позволяет изменить версию IE для проверки в conditional comments на любую — достаточно исправить значение «IE» в указанной ветки реестра и перезапустить браузер.

В-четвёртых, удивительно, но не все знают, что в conditional comments доступны операторы «И», «ИЛИ» и группировка. Что полезно, чаще всего, для указания диапазона версий браузера.

<!--[if (IE 7) | (WindowsEdition)]> Это IE7 или любой IE на Windows 7 и выше <![endif] -->
<!--[if (gte IE 6) & (lt IE 9)]> Это IE6-8 <![endif] -->

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

Обнаружение версии IE в режиме эмуляции через условную компиляцию JavaScript

В свежей статье в блоге IE есть ответ на вопрос как обнаружить версию браузера Internet Explorer в любом режиме (например, в режиме эмуляции другой версии):

@_jscript_version statement is actually an indicator of which version of JScript is in use by the browser as a whole. In ALL document modes of IE9, this statement currently equates to “9”. In ALL document modes of IE8 it equates to “5.8” and in IE7 it is “5.7”

Отсюда вывод:

/*@cc_on
    @if( @_jscript_version == 5.8 )
        // Это полюбому IE 8
        ...
    @end
@*/

То есть (перевожу) «@_jscript_version» в IE8 всегда равно «5.8», в IE7 — «5.7» , а в IE9 — «9».

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

Билеты на аэроэкспресс через интернет

Билет (25.04КиБ)

Оказывается, билеты на аэроэкспресс от и до московских аэропортов (Внукова, Домодедова, Шереметьева) можно купить через интернет, причём, если покупать более, чем за месяц, скидка почти 17%, иначе — 10.

Сегодня купил билет за 270 (на вокзале он стоит 300).

А ещё номер билета приходит на почту и телефон. То есть, если вы билет не распечатали, а телефон у вас с собой, то ничего страшного, номер у вас есть.

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

Караби-яйла

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

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

Зелёный склон холма, покрытый множеством красных цветов и камнями, под облачным небом; на вершине виднеется одинокое дерево.
Три ярко-красных пиона с жёлтыми тычинками цветут среди зелёных перистых листьев, серых камней и мелких жёлтых полевых цветов на фоне сухой травы.
Группа лошадей разных окрасов стоит и ходит по зелёному лугу под облачным небом.
Кустик белых цветов с розовыми центрами растёт среди серых камней и зелёной растительности на каменистой почве.
Крупный план розово-белых цветков с тёмно-розовым центром, растущих среди серых камней и зелёных листьев на каменистой почве.
Группа лошадей разных окрасов пасётся на зелёном холме с белыми скальными выходами, на фоне густого леса.
Цветущий куст с белыми цветами растёт среди серых скал и зелёных кустарников на фоне пасмурного неба.

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

Группа людей стоит у обветшалого светло-голубого здания с облупившейся краской; на крыше сидит человек, на стене — информационная табличка «КАРАБИ-ЯЙЛА» и синяя вывеска.
Зелёный внедорожник «Скорой помощи» с надписью «ГОРНО-СПАСАТЕЛЬНАЯ СЛУЖБА» и эмблемой «MOUNTAIN RESCUE OF CRIMEA» стоит на зелёном поле под облачным небом.
Два белых дома с красной и белой крышами, синими дверями и окнами, стоящие на фоне туманных холмов; перед ними — мокрый дворик с дорожкой и зелёной травой.
Ржавый зелёный трактор стоит на крыше бетонного здания с синей дверцей, на фоне зелёных холмов и облачного неба.

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

Металлическая квадратная табличка с центральным отверстием, прикреплённая к скале; на ней читаются надписи «СНАЙКА», «15», «0001» и «709-9».
Влажные сталактиты и сталагмиты коричневого и бежевого оттенков в пещере, с крупными нависающими образованиями на потолке и бугристыми выступами на полу.
Спелеолог в оранжевой куртке и синих брюках поднимается по каменистой стене пещеры, используя верёвку и страховочное снаряжение, освещённый светом из отверстия в потолке.
Белая перчатка указывает на крупного чёрного жука с металлическим блеском, ползущего по влажной каменистой поверхности с зелёным мхом.

«Сказка», конечно, очень небольшая пещера, если ничего не путаю, всего два небольших зала. В «Виоле» (другое название — «Эгиз-Тинах-3») места побольше, в 2007-м году там играли в футбол. Внутри огромный, красивый зал, к сожалению, даже наши четыре «Феникса» по 225 люмен не смогли осветить пещеру настолько, чтобы на фотографиях можно было бы показать насколько это было красиво.

Металлическая табличка с надписью «ЭГИЗ-ТИНАХ 3», номером «710-2» и годом «1999», установленная на тёмной каменной поверхности.
Спелеолог в синем шлеме с фонарём и красной страховочной системе устанавливает страховочный узел на скале в пещере, держа карабин в перчатке.
Спелеолог в синем шлеме спускается по верёвке в тёмную пещеру с грубыми каменными стенами, вид сверху вниз.
Крупный план сталактитов и сталагмитов в пещере: длинные коричневые и бежевые известняковые образования свисают с потолка и поднимаются со дна, создавая причудливые формы.
Крупный план сталагмитов в пещере: вертикальные известковые наросты бежево-коричневых оттенков с влажной текстурой и неровной поверхностью.
Коллаж из двух фотографий сталактитов и сталагмитов в пещере, демонстрирующий разнообразие форм и оттенков известковых отложений.

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

Спускаться в пещеры трудно, иногда — очень страшно, а одна-единственная ошибка может привести к смерти, да и не к одной.

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

В «200 лет Симферополя» на довольно длинной перестёжке (порядка 30 метров) меня хорошо «резинило» на верёвке, на мне висел транс (транспортный мешок) с верёвкой, что добавляло веса; когда я наверху этой перестёжки проходил по перилам, пот лил ручьём, нервное напряжение от «резины» и неудобного перехода.

Человек в оранжево-синей спецодежде и каске с фонарём лежит на траве ночью, в полном снаряжении для альпинизма или спасательных работ, с карабинами и стропами.

На следующий день мы пошли в пещеру «Дублянского» (88 метров), делал навеску я, снимал тоже я, есть чем похвастаться — хорошо навесил. Пещера по площади много больше «Виолы», думаю, мы прошли лишь небольшой кусок, хотя в пещере провели, вместе со спуском и подъёмом, около 6…7 часов. Огромный трёхмерный лабиринт, образованным гиганскими сталактитами, упавшими с потолка пещеры.

Металлическая геодезическая марка на камне с надписью «ДУБЛЯНСКОГО», высотой 709,7 м и годом 1999.
Без рубашки мужчина сидит на траве в горах, пьёт из кружки, рядом термос и рюкзак, вокруг — зелёная трава с жёлтыми цветами.
Спелеолог в красном шлеме и снаряжении стоит на каменистом склоне среди деревьев, работая с верёвкой.
Два снимка альпиниста в красном шлеме, спускающегося по скальному склону с верёвкой, среди деревьев и камней.
Спелеолог в белой каске и зелено-желтом костюме спускается по веревке в темную пещеру с влажными скальными стенами.
Спелеолог в каске и снаряжении стоит на скалистом дне пещеры, освещённый фонарём, среди тёмных стен и выступов породы.
Двое спелеологов в защитной экипировке и касках со светом на голове стоят в тёмной пещере рядом с крупным сталагмитом и скальными образованиями.

Новый день, пещера «Крубера», 62 метра. Два зала, внутри не фотографировались и пещера как-то не запомнилась.

Металлическая геодезическая марка на розовато-серой скале с надписью «КРУБЕРА», датой «1999», координатами «7.12.4» и знаком «-62».
Крупный план скалистого обрыва с трещиной, среди которого растут зелёные кустарники и трава.
Зелёные ветви и белые цветы растут в трещине серой скалы, покрытой лишайниками.

В тот же день сходили в «Большой Бузулук», 88 метров, в основном горизонтальная пещера, обледенелая (оттаивает только осенью), холодная, в дальнем конце, в центре, если спуститься по ледяному склону, есть карман в 19 метров, куда спустились только мы втроём — я, Гарыня, который был нашим старшим в походе и пришлый парень из Харькова, Роман, который на пару дней присоединился к нашей группе. Внутри кармана ещё холоднее, есть небольшой гротик, где спят летучие мыши.

Металлическая табличка на скале с надписью «БОЛЬШОЙ БУЗУЛУК», высотой 713,16 м и координатами 58°16′ с.ш., 68°28′ в.д.
Девушка в светлой толстовке стоит у входа в большую пещеру в скале, рядом с зелёными деревьями и каменистой тропой.
Вид внутри пещеры с шероховатыми коричневыми стенами, трещинами и небольшими сталактитами на потолке.
Двое в защитных костюмах и шлемах с фонарями стоят рядом на чёрном фоне; один в оранжевом, другой в зелёном, оба с забралами, обнимают друг друга.
Две фотографии спелеолога в оранжевом костюме и белом шлеме: слева — на скале с верёвкой, справа — у ледяного водопада в пещере.
Четыре спелеолога в касках и снаряжении у входа в пещеру: один стоит, двое сидят, один работает с верёвкой на фоне скал и зелени.

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

Металлическая геодезическая марка на камне с надписью «КАСТЕРЕ», номером «709-15» и координатами «67°» и «1999».
Вид вглубь тёмной пещеры или расщелины, обрамлённой покрытыми мхом скалами и папоротниками на светлом краю.
Крупный план сталактитов и сталагмитов в пещере: коричневые известняковые образования свисают с потолка и растут со дна на фоне темноты.
Спелеолог в красном шлеме и снаряжении спускается по верёвке в пещере с мхом; справа — другой спелеолог в тесном коридоре с фонарём на голове, протягивающий руку.

Кажется, потом мы с женой два дня просто отдыхали и гуляли по плато, а ребята сходили к Чёрному морю. Мы тоже сходили на точку, с которой видно море, но до него было несколько километров по горам.

Цветущий кустарник с розовыми цветами на фоне скалистого горного склона с зелёной травой и жёлтыми цветами под пасмурным небом.
Три человека на скалистом обрыве: двое стоят, глядя на зелёные холмы и озеро вдали, третий сидит, спиной к зрителю.
Девушка в оранжевой куртке бережно держит в руках маленькую ящерицу на фоне скал и голубого неба.
Мужчина в туристической одежде с большим синим рюкзаком стоит на скале на фоне обширного зелёного горного леса и облачного неба.
Маленький ручей с мутной водой течёт среди густой зелёной травы и сухих стеблей, образуя извилистую протоку на болотистой местности.

Последняя пещера, в которой мы побывали — «200 лет Симферополя», 102 метра. Справедливости ради надо отметить, что я сходил ещё в одну — «Мамина» (мама тут не причём, её открыл Аби Усеинович Мамин), это неинтересная горизонталка с тремя залами, протяжённостью в 76 метров и глубиной в 27. Неинтересна пещера, прежде всего, потому, что основательно загажена туристами — при наличии навыков спуститься в неё можно без снаряжения.

Вернёмся к «200 лет». Вход в пещеру найти довольно трудно — небольшая дыра в земле, куда с трудом протискивается человек, внутри — извилистый лаз, с кучей перестёжек, потом огромная зала метров 30 высотой и ещё спуск. Мы обнаружили, что можно спуститься ещё дальше, метров на 15, но потом начинался очень узкий колодец, который мы штурмовать не стали — опасно, снаряжение проходит с трудом.

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

Так что поверьте на слово, это жутко и красиво.

Металлическая табличка на камне: «200 ЛЕТ СИМФЕРОПОЛЯ», годы 1802–2002, высота 712,25 м.
Вход в пещеру в скалистом склоне с верёвкой и карабином для страховки, металлическая табличка с номером на камне, растительность среди камней.

Расставаться с Караби было жалко. Красиво, спокойно, никакой суеты, в пещерах — (часто) нет звуков и света. Мы даже специально выключали фонарики и молчали, чтобы почувствовать как это — когда темно и тихо по-настоящему.

Несмотря на каждодневную усталость, это было безумно интересно и необычно, спасибо Гарыне, что он втянул нас в спелеологию. Я не знаю, буду ли я заниматься этим в дальнейшем, но эту поездку не забуду.

P.S. Больше снимков можно увидеть в моём альбоме на «Яндекс.Фотках» (там же есть фотографии, которые снимал Денис).

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

КГУ → КФУ

Вот так живёшь, а то, что родной Казанский Государственный Университет имени Ульянова-Ленина переименован в Казанский (Приволжский) Федеральный Университет узнаёшь из графы «Образование» «вкантактике» бывшего одногруппника.

У меня военник СССР и диплом об окончании КГУ, а ещё я прожил всё детство на улице Свердлова в родном городе. Последняя теперь проспект Пятидесятилетия Победы.

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

Scalar type hinting в PHP 5.4.X или 6.X

Ну и раз уж я решил перед сном пописáть о PHP, то продолжу. Ещё новость из мира PHP — в PHP будет scalar type hinting. Илья Альшанетский добился включения своего патча в код.

Сейчас type hinting в PHP есть, я могу указать явно, что параметр будет объектом определённого класса или массивом:

function test1(MyClass $var) {}

function test2(array $var) {}

Скоро можно будет указать, что передаваемый аргумент должен быть скаляром. Жаль только, что появилась только возможность указать определённый тип. Если «object» указать можно, то «scalar», к сожалению, нет. Это странно. Придётся указывать явно:

function test3(string $var) {}

Что поможет снизить количество ошибок в отдельных случаях, но как быть, если мне такая жёсткость ни к чему, если я хочу оставить возможность преобразования типов, там где это сделано хорошо (преобразование типа «array» в «string» в PHP сделано бессмысленно, посмотрите на Perl, там это имеет смысл)? Да и как мне указать, что мне всё равно — придёт int или float? Видимо, только явным приведением типа при вызове, а про возврат значения по ссылке, в этом случае, придётся забыть.

В отдельных случаях, хотелось бы, чтобы передав объект в такой типизированный параметр, у объекта дёрнулся метод __toString, а то и __toNumber, если указано, что должен быть передан числовой скаляр.

Надеюсь, не одному мне этого хочется и Илья продолжит работу над патчем.

Добавлено через несколько минут: прочитал комментарии, оказывается идут дискуссии о добавлении ключевых слов «scalar» и «numeric». Кроме того, Илья рассуждает и о преобразованиях типов в рамках type hinting. Ура.

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

PHP-FPM будет входить в состав PHP 5.3.x

Отличная новость PHP-FPM (это патч к PHP, который делается Андреем Нигматуллиным и Майклом Шадлом, улучшает в PHP поддержку FastCGI) наконец-то будет входить в состав PHP 5.3.X.

Если вы не знакомы с этим патчем, то перечислю основные отличиями PHP-FPM от того, что входит в PHP по-умолчанию: умеет демонизироваться, умеет останавливать процессы без потери запросов, адаптивное к нагрузке количество процессов, возможность запуска с указанным gid/uid, chroot и различными опциями php.ini для каждого демона, возможность писать лог stdout и stderr, возможность рестартовать процессы без порчи кеша opcode в разделяемой памяти (при использовании eaccelerator), насильное завершение процесса по времени выполнения (как известно, set_time_limit не всегда это делает).

А так же возможность задавать заговолок ответа при фатальных ошибках PHP, поддержка возможности nginx 0.5.9+ передавать большие POST-запросы (например, загрузку файла) без сброса на диск, новая функция PHP fastcgi_finish_request, которая позволяет выполнять код после того как контент был отдан клиенту и веб-сервер и освободился для следующего запроса и slowlog, позволяющий контролировать какие скрипты выполняются медленнее указанного лимита.

В общем, исключительно полезный патч. Жаль, что в ветку PHP 5.2.X его почему-то не включат. Я не знаю причины, в сообщении на «Гугл-группах» по этому поводу написано « no way to add it to 5.2, sorry». Для PHP 5.2.X патч по-прежнему придётся накладывать руками, жаль.

На ветку 5.3.X вряд ли пока переходит много народу. Я попробовал мигрировать пару проектов, неудачно. Один завис (из-за использования crypt), второй заработал только частично. Очевидно, что обратная совместимость серьёзно поломана. При этом я не использую ничего, что перечисленно в официальном списке несовместимости.

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

Регулятор громкости в плеере для IE

Я недавно делал плеер для Internet Explorer по функциональности похожий на VideoJS. Как я уже упоминал, там ни одной картинки — всё VML. Регулятор громкости и кнопочки — UTF-арт.

Попробую описать как сделан регулятор громкости, но писать буду под стандартные браузеры, так что код будет несколько отличаться.

В UTF-8 есть такой символ «❚», им у меня сделана кнопка «Пауза» и им же нарисован регулятор громкости. Нарисовать нужно что-то подобное вот этому:

Регулятор громкости (0.48КиБ)

На рисунке мы видим прямоугольник со скруглёнными углами, это сумеет сделать даже моя бабуля (в IE для этой цели я использовал VML):

#video_volume {
    width: 34px;
    height: 20px;
    font: 14px Arial;
    color: white;
    background: gray;
    -webkit-border-radius: 0.5em;
    -moz-border-radius: 0.5em;
    -khtml-border-radius: 0.5em;
    border-radius: 0.5em;
}

У нас получается пустой скруглённый прямоугольник. Теперь надо нарисовать уменьшающиеся прямоугольники. Как? Первая идея, которой я и воспользовался — вложить теги внутрь друг друга и сделать что-то, чтобы каждый потомок был ниже своего родителя:

<span>❚<span>❚<span>❚<span>❚<span>❚</span></span></span></span></span>

В стиле прописываем абсолютную позицию и margin-top, чтобы сделать отступ от родительского элемента:

#video_volume span {
    position: absolute;
    margin-top: 1px;
}

Получилась этакая рекурсия стилей. Уже близко к тому, что хочется получить.

Некрасивый регулятор громкости (0.41КиБ)

Теперь надо снизу обрезать лишнее. В IE я просто ограничил размеры и выставил overflow-y в hidden, тут я поступлю иначе — воспользуюсь crop.

#video_volume div {
    clip: rect(auto, auto, 14px, auto);
    position: absolute; /* crop работает только у абсолютно позиционированных элементов */
    /* кстати, ребята из W3C, почему вы забыли про crop? почему только прямоугольник, зачем position? */
}

Почти то что нужно, но повёрнуто в другую сторону:

Почти такой какой нужно (0.49КиБ)

Что делать? Всё просто, это текст, значит, его можно просто развернуть в другую сторону, указав ему direction, правда при указании direction элементы регулятора прилипают к правому краю, для того, что это исправить, укажем отступ справа.

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

Годный регулятор (0.48КиБ)

Получился такой код:

<head>
<style type="text/css">
#video_volume, #video_volume div {
    width: 34px;
    height: 20px;
    font: 14px Arial;
    color: white;
    background: gray;
    padding-right: 5px;
    -webkit-border-radius: 0.5em;
    -moz-border-radius: 0.5em;
    -khtml-border-radius: 0.5em;
    border-radius: 0.5em;
}

#video_volume div {
    clip: rect(auto, auto, 14px, auto);
    position: absolute;
    direction: rtl;
}

#video_volume span {
    position: absolute;
    margin-top: 1px;
}

</style>
</head>
<body>
<div id="video_volume">
<div>
<span>❚<span>❚<span>❚<span>❚<span>❚</span></span></span></span></span>
</div>
</div>
</body>

Кстати, «Опере» rtl правильно не работает (по крайней мере в моей 10.60 alpha), нужно расставлять margin, но я этого делать не буду. В конце-концов, это пример, демонстрирующий идею.

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

Аппаратное ускорение в пятом «Сафари»

Safari5 vs IE9P2 (44.31КиБ)

На «Хабре» сравнили вышедший вчера Safari 5 и Internet Explorer 9 Preview 2. Оба браузера обладают аппаратным ускорением (на скриншоте — результаты теста «Flying Images»).

Видно крайне низкий показатель FPS у «Сафари». Странно, но под «Мак» таких проблем нет, похоже под Windows аппаратное ускорение неполное, если оно вообще там есть.

У меня на машине «Сафари» 5 показывает в том же тесте 1…2 fps, тогда как «Опера» 10.60a — около 35. Заметьте, у «Оперы» аппаратное ускорение не заявлено.

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