«Go»: два новых метода в gd-go: SmoothArc и SmoothEllipse

Добавил в свой проект gd-go (биндинг GD для Go) два новых метода: SmoothArc и SmoothEllipse. Оба рисуют соответствующие залитые фигуры с антиалиасингом. Используется алгоритм Ульриха Мерендорфа, который я портировал из PHP.

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

DOOM на JavaScript

Ребята из Mozilla портировали DOOM на JavaScript. Скомпилировав DOOM в байт-код виртуальной машины LLVM при помощи llvm-gcc они перевели получившееся в JavaScript при помощи Emscripted (это транслятор байт-кода LLVM в JavaScript).

Запускается не во всех браузерах (последний «Хром» просто завис), но в «Опере» и «Файрфоксе» у меня запустилось. Для запуска необходима поддержка Canvas. На скриншоте видно, что FPS приличный, на моём «Маке» в FireFox4 держится на уровне 20—35.

DOOM в браузере (65.10КиБ)

Чит-коды работают! Кстати, кроме IDDQD и IDKFA есть ещё много других.

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

Tanks JS1K

Кстати о JavaScript. Может быть кто-то из читатей помнит, под Новый год мы с LO развлекались тем, что уменьшали мою игру про танк, воюющий с ракетами, чтобы она занимала как можно меньше места.

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

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

Идея заключается в том, чтобы пройтись по списку методов и присвоить объекту их же, но под другими, короткими именами. Самый простой способ, до которого я додумался — это взять пятую букву названия метода (правда, кажется a[i] для строк не везде будет работать, вариант с charAt занимает на 7 байт больше).

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

for(i in a)a[i[V=4]]=a[i]

Переменная «V» со значением «четыре» используется дальше как счётчик оставшихся жизней, в переменной «a» ссылка на объект контекста канваса. В итоге, если мне надо вызывать метод «a.putImageData», я могу вызвать его как «a.m», вместо «a.createImageData» можно вызывать «a.t» и так далее (отчёт с нуля начинается).

Чем больше таких вызовов, тем больше экономия. Единственное, свойства (например «fillStyle») так сократить не получится.

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

Браузер в Windows Phone 7.0

У нас в компании появились первые смартфоны на Windows Phone 7.0. Естественно, очень интересно посмотреть что поддерживает тамошний браузер.

Пишу по мотивам одного из отзывов внутри компании.

HTML5Test — 15 баллов, ни одного бонусного (нет canvas, svg, video/audio, тегов HTML5, Geo API, SSE/WebSocket, localStorage), тест modernizr показывает отсутствие border-radius, rgba, box-shadow, opacity, gradients, transforms, transitions, flexbox, border-image, text-shadow и ещё многого другого.

Нет touch events, отсутствует Array.forEach, Object.defineProperty и ещё по мелочи.

Код юзер-агента выглядит вот так:

Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; HTC; 7 Mozart T8698)

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

Пушкин — собачья кличка?

Пушкин — очень популярное американское собачье имя: красивое, звучное и намекает на приверженность хозяина мультикультурализму. Лично я встречал как минимум четырех Пушкиных: бульдога, двух золотых ретриверов и одного очень крупного сенбернара.

Цитата из рецензии на книгу Эми Чуа «Боевой гимн матери-тигрицы». Пушкин — собачья кличка в Америке? Звучит как-то обидно. Из читателей кто-нибудь живёт в Америке?

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

Страусиная ферма «Русский страус»

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

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

Так что ферма, скорее, верблюжья, а не страусиная.

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

На территории есть кафе, а так же продаются яйца страусов (на одном из снимков видно два яйца, зелёное — это яйцо страуса эму). Цена за яйцо великовата, на мой взгляд — 2100 рублей за штуку.

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

Экономия трафика для мобильных

Идея такая: экраны мобильных относительно небольшие. Самое здоровое, что я встречал — 5″ на моём предыдущем телефоне (HTC X7500). Это значит, что нет нужды показывать на этих дисплеях столь же большие картинки, как и на ноутах и десктопах.

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

Единственное, что я пока не продумал — как автоматически подставлять разные изображения. Из CSS нельзя управлять атрибутом SRC картинки, а то можно было бы воспользовать media queries; можно было бы использовать background-image, но это сломает мои галереи картинок и изменит порядок загрузки фото.

Хотелось бы использовать SVG, но WebKit на «Андроидах» и iOS (в iOS поддерживается с 2.1) не понимает SVG (в SVG можно сунуть ссылки на несколько картинок и выбрать нужную через те же media queries).

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

Остаётся JavaScript, что грустно. Надо подумать ещё.

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

Газета «Комсомолец Татарии»

Комсомолец Татарии (73.88КиБ)

В последний мой приезд к родителям мы разбирали с мамой фотоальбом моей бабушки (со стороны папы), который остался после того как её не стало. В фотоальбоме нашлась аккуратно сложенная газета «Комсомолец Татарии» от 17 июня 1964, 47 лет газете, а выглядит так, как будто года три прошло (см. снимок).

Я уже никогда не узна́ю почему бабушка её хранила, бегло прочитав всю газету, не встретил ни одной знакомой фамилии. Буду хранить дальше, мне нравится держать в руках такие вещи.

Вот вам цитата с первой страницы:

Н. С. Хрущёв прибыл в Данию

16 июня в столицу Дании — Копенгаген с официальным визитом на теплоходе «Башкирия» прибыли Председатель Совета Министров СССР Н. С. Хрущёв и сопровождающие его лица.

Тысячи датчан пришли в Копенгагенский порт, чтобы поприветствовать главу Советского правительства — посланца великой советской страны, с которой Дания поддерживает традиционные дружественные отношения. Н. С. Хрущёва и сопровождающих его лиц, сошедших с борта теплохода «Башкире» в порту, тепло приветствовал от имени правительства и датского народа премьер-министр Е. О. Краг.

Е. О. Краг и Н. С. Хрущёв обменялись речами.

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

Петрушка теперь наркотик

Федеральная служба по надзору в сфере защиты прав потребителей и благополучия человека (классно звучит, да?) и главный государственный санитарный врач России 11 апреля 2011 года постановили внести в перечень растений, содержащие сильнодействующие, наркотические или ядовитые вещества огородную петрушку в комментариях указали, что речь идёт всё-таки о петрушке кудрявой, она тоже разводится в огородах, но выглядит попышнее (номер 352 в списке).

Семена этой разновидности петрушки богаты ядовитым эфирным маслом, содержащим наркотические вещества. Кстати, учительница по биологии в школе (Тамара Потаповна, чему вы нас учили?) рассказывала, что отвар петрушки раньше использовали, чтобы спровоцировать выкидыш.

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

Как сообщил «Росбалту» источник в Управлении федеральной службы по контролю за незаконным оборотом наркотиков по Санкт-Петербургу, список растений и препаратов, содержащих наркотические вещества, периодически расширяется, однако специалист затруднился сказать, какие кары могут ожидать бабушку, выращивающую подобную запрещенную петрушку на своем дачном участке.

Впрочем, в том списке так же и ландыш (№137) с пометкой «все виды, все части», а я вчера у метро, под носом полиционера купил четыре букетика в подарок жене.

Так что сильно пугаться не стоит, но держать ухо востро нужно — у нас закон, что дышло.

Добавлено позже: в комментариях разобрались. Речь идёт о семенах петрушки кудрявой, постановлением запрещено употреблять их в пищу, добавлять в БАД и т. п. Петрушку этого вида выращивают в огородах наряду с петрушкой огородной, отличить их просто, кудрявая выглядит действительно выглядит более кудрявой. Я много раз видел на рынке разницу.

Но всё-таки я опасаюсь как бы у нас не начались «петрушечные рейды». Семена без растений не появляются, а ЖЖ, в постах на тему запрета, я уже начитался откровений доморощенных наркоманов, которые жевали семена петрушки кудрявой.

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

Nahui

Дмитрий Быков (журнал «Собеседник») как-то раз съездил Nahui:

На одном из поворотов раскисшего серпантина я оглянулся на поселок Nahui в последний раз. Белел молитвенный дом, возвышалась колокольня, и глиняный домик бабушки Мельчоры был почти не виден за пеленой дождя. Но ясно было, что он выстоит. Ведь пойти Nahui — это всего лишь оказаться вне истории, и тогда тебе уже не страшно ничто, потому что из общей жизни ты как бы выпал. Никто в поселке Nahui не знает, как зовут президента Перу, и никого там не интересует инфляция. Там с XIV века живут добрые люди, готовые накормить путника, работают на полях, растят внуков. И с ними никогда ничего не происходит, потому что бог грома в благодарность спас их, выключив из общего бытия. Теперь с ними никогда ничего не будет — потому что они будут всегда. Все остальные умрут — потому что живут, только в счастливо спасенном поселке Nahui жизнь остановилась навеки, свелась даже не в круг, а в точку. Мы думаем, что послать туда — обидеть или уязвить. А послать туда — это, может, значит как раз спасти, подарить вечность… хотя nahui такая вечность?

Ради того, чтобы это понять, стоило съездить Nahui.

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

Приокско-Террасный государственный природный биосферный заповедник

Не доезжая минут 20 до реки Оки, находится вход в Приокско-Террасный заповедник. Неделю назад, в субботу мы были там на экскурсии.

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

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

Было время, когда поголовье зубров было почти истреблено, животных репродуктивного возраста сохранилось в тот момент всего 19. Благодаря усилиям учёных, в том числе учёных Приокско-Террасного заповедника сейчас численность зубров достигла уже 3,5 тысяч.

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

На территории заповедника есть кафе (правда, шашлыка из мяса бизонов и зубров не предлагают, это не ферма), сувенирная лавка и касса, где можно оплатить экскурсию. Без экскурсовода к животным не пускают. Кстати, осторожнее. Я в одном месте подошёл слишком быстро (хотел сделать фотографию получше) и мне пришлось отпрыгивать назад, так как бизону не понравилось такое нарушение личного пространства.

Остальные фотографии в фотоальбоме на «Яндекс.Фотках».

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

Выставка гигантских матрёшек

Три гигантские матрёшки с народными росписями и кружевным узором стоят в просторном зале с металлическим куполом, рядом с посетителями и декоративными растениями.
Гигантские матрёшки с росписью в стиле русских сказок и орнаментов стоят в просторном зале с металлическим куполом и стеклянной крышей, рядом с посетителями и вывеской «АФИМОЛЛ».
Три гигантские матрёшки с традиционными узорами стоят под стеклянным куполом в торговом центре «Афинополис».
Три гигантские матрёнки в стеклянном павильоне: слева — с белым кружевом, в центре — с яркой сценой, справа — с розовыми цветами; посетители осматривают экспозицию.
Внутри просторного зала с высоким стеклянным куполом стоят гигантские матрёшки с росписью в стиле хохломы и сказочными сюжетами, посетители осматривают экспозицию.
Красочная фреска с фигурами людей и деревьями на стене под стеклянным куполом с металлической решеткой, за которым виден современный небоскреб.

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

Сам «Афимолл» понравился. Наверное он не особо-то раскручен, здесь очень мало народу, хорошие пустые заведения (мы сидим в «Варенье»), куча сетей WiFi (есть и открытые, в «Варенье» собственная сеть с паролем), в центре «Афимолла» находится красивый фонтан.

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

MakeCorner: теперь уголки мне нравятся

Наконец-то мне стали нравится уголки, которые генерирует моя программа MakeCorner, переписанная на Go. Несколько последних постов с фотографиями обработаны именно этой программой. Теперь осталось сделать сохранение EXIF и весь функционал из версии на PHP будет перенесён.

Программа, кстати, автоматически должна стать мультплатформенной. Я не пробовал, но компилятор Go есть для MacOS, FreeBSD, Linux и Windows (и трёх типов архитектур — ARM, i386 и x86-64/amd64).

Правда, для работы требуется библиотека GD, а она вряд ли скомпилируется на ARM.

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

«Go»: недостатки

Я уже успел написать на «Go» пару тысяч строк (не считая удалённого кода) и должен сказать, что этот язык мне нравится. Этакий «Си» с человеческим лицом. Правда обработка ошибок через panic/defer мне до сих пор кажется сомнительным удовольствем.

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

Самая главная — язык до сих пор не стабилизировался. К пример, пятого мая этого года вышел релиз №57), где кардинально изменился способ которым можно проверить закрылся ли канал. Вместо функции closed канал просто возвращает два значения. Из других примеров могу вспомнить как после очередного обновления компилятора мне пришлось везде в коде заменить вызов Open на OpenFile.

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

Третья причина менее очевидна, чем предыдущая. Я называю «Go» языком «Си» с человеческим лицом, при это «Go» отстаёт от «Си» отсутствием предпроцессора. Когда я делал MakeCorner мне хотелось сделать кроссплатформенное определение количества процессоров (сейчас этот код удалён), для этого пришлось использовать вызовы, которые есть на одно системе, но отстутствуют на другой.

В «Go» это означает ошибку при компиляции. Нет никакого внутреннего средства для того, чтобы сообщить компилятору «не смотри сюда, если это freeBSD». Эту ситуацию мне пришлось разрешать при помощи файла make.

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

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

У меня уже есть задумка что писать на «Go» дальше. Правда я в сомнениях. «Go» настолько непопулярен, что выгоднее делать следующий проект на каком-нибудь PHP или Пайтоне.

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

Контекстная реклама

Могилы (62.56КиБ)

А реклама на «Ютьюбе» как-то контекст учитывает? А то мне на просмотре детского мультика про Машеньку предложили могилу после зимы почистить. На экране в этот момент, между прочим, домик медведя, занесённый снегом, куда Машенька скоро прибудет на снежном оползне.

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

FatBooth

FatBooth (6.93КиБ)

Программа «FatBooth» (есть версия под «Андроид» и iOS) — отличный генератор юзерпиков. А так же напоминание о том, что не надо есть что попало. Прибавить себе килограммов можно, сфотографировав себя камерой или используя уже готовый фотоснимок. Программа попробует самостоятельно расставить ключевые точки (глаза, рот, подбородок), после чего даст возможность их скорректировать и покажет к чему может привести «двойная порция с большой колой» через несколько лет.

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

Россия-2020

Для тех, кто читает блог через RSS: тут видео есть.

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

Что это было?

Поднимаюсь сегодня на эскалаторе в метро, а рядом спускается дедушка, лет уже за 70. Когда мы почти поровнялись, он неожиданно поворачивается ко мне весь и говорит:

— Здравствуйте! — Здравствуйте… — я несколько опешил, но мало ли в метро одиноких дедушек и бабушек, которым не с кем поговорить?

Совсем было проезжая мимо меня, он вдруг ещё раз поворачивается ко мне:

— Вы же Болк, да? — Да… — Тогда, здра́вствуйте! — с нажимом, не меняя нейтрального выражения лица.

Я так и застыл, глядя ему в спину.

Ребята, что это было? Сослуживцы считают, что это был читатель.

Уважаемый, если вы меня читаете, напишите мне что-нибудь в комментарии, а то я в недоумении!

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

Toshiba AC100-116

Скриншот рабочего стола Android с иконками приложений, виджетами даты (9 июня, четверг) и погоды (+15°C, Москва), а также строкой состояния с Wi-Fi, Bluetooth, 3G и временем 10:24.
Toshiba AC100-116

Купил жене смартбук Toshiba AC100-116. Он называется «смартбук», потому что на борту установлена система «Андроид» (текущая версия — 2.2, обещают 3.0).

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

Вернёмся к смартбуку. Это десятидюймовый нетбук с двумя процессорорами Тегра 250 (1ГГц), памятью в 512МБ, полноцветным экраном 1024×600, SSD-диском на 32ГБ (есть карт-ридер для SD и SDHC, это ещё 64ГБ).

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

Для подключения к внешнему миру на борту есть комбинированный разъём наушников и микрофона, два разъёма USB (одни из них — miniUSB типа B), выход HDMI, модем 3G, поддержка WiFi (есть возможность получить категорию «n») и Bluetooth 2.1 EDR. Модем 3G, несмотря на своё название, поддерживает и сети GSM.

Общеизвестно, на свои изделия мало кто ставит голый «Андроид», фирма «Тошиба» не исключение. На системе установлена их собственная оболочка, вырезаны сервисы «Гугла», в том числе магазин приложений, предустановлены различные приложения, как полезные (читалка FBReader), так и сомнительной полезности, на мой взгляд (проигрыватель Toshiba Media Player).

Так что, для начала я сменил прошивку на «Андроид» 2.2 сборку silver-alx’s v4b, которая возвращает сервисы «Гугла», разблокирует некоторые возможности системы. Устройство можно не бояться испортить во время прошивки — в худшем случае при включении нужно будет нажать Ctrl+Esc+Power и оно загрузится в специальном режиме обновления через USB.

Оправдывая название нетбука, устройство нормально видит внешнюю мышь, клавиатуру, внешний жёсткий USB-диск (нужна файловая система FAT32, а альтернативную прошивку silver-alx включена поддержка NTFS, но диск нужно монтировать руками и только на чтение), GPS, а так же принтер (только в альтернативной прошивке). Кроме того, есть успешные эксперименты подключения модема Anydata ADU-310A (это SkyLink).

В качестве дальнейшей софтварной модификации, я скачал и перенастроил оболочку ADW Launcher EX с темой Honeycomb ADW, установил свежие Opera Mobile и FireFox, виджеты ExtDateWidget, Яндекс.Погоду и встроенный виджет «Управление питанием», поставил «Яндекс.Карты», «Яндекс.Метро», «Яндекс.Почту», TuneIn Radio, Adobe Reader, AndroZIP (чтобы работать с ZIP-архивами), AdFree (для блокировки рекламы) и Root Explorer (чтобы работать с файловой системой из-под рута), VitalPlayer (который умеет софтварно проигрывать то, что устройство не умеет проигрывать хардварно) и QuickOffice (чтобы работать с документами MS Office).

Из-за большого разрешения и особенностей (например, наличие клавиатуры, отсутствие экрана с мультитачем) в некоторые игрушки играть сложно или невозможно (вплоть до падений), я пока отобрал несколько, которые хорошо завелись и в которые удобно играть — Angry Birds, Ghost Wars Pro, Impossible, Infernus: 1, Madness Shooter, Majestry, Raging Thunder Lite и Stupid Zombies.

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

А теперь трудности, с которыми я столкнулся, пока конфигурировал устройство.

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

Что-то сбойнуло при штатном (!) обновлении системы до 2.2 (с устройством идёт «Андроид» 2.1) и я остался с устройством, которое не включается. Хорошо, что есть добрые люди, которые уже разобрались как оно перепрошивается и выложили это в сеть, иначе я бы собирал утилиты до морковкина заговенья.

Первая альтернативная прошивка, которую я поставил, была версии 3a. На следующий день она начала сбоить, всё время выдавала на экран сообщение о падении какого-то внутреннего процесса. Удаление виджетов (как советуют в сети) не помогло, прошил на 4b.

«Скайп» не поддерживает видеозвонки. Причина неизвестна. Есть замена — Fring и Oovoo, они видеозвонки поддерживают, но не в «Скайп».

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

Добавлено позднее: ещё Toshiba, похоже, сломала встроенное в «Андроид» хранилище сертификатов, поэтому всё, что требует авторизации по сертификату (например, сети WiFi с сертификатами) не работает.

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

Ирония судьбы

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

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

Так вот. На фотографии он в очках.

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

Dolphin HD: браузер для «Андроида»

Dolphin HD (51.45КиБ)

За пару лет владения телефоном на «Андроиде», я как-то незаслуженно обходил вниманием браузер Dolphin («Дельфин»). Вчера попробовал его на смартбук от безнадёги и остался более чем доволен.

Почему от безнадёги? Потому что браузер, который встроен в систему, хуже, чем «Опера Мобайл», но «Опера Мобайл» не понимает, что её запустили на полноэкранном устройстве с клавиатурой и мышкой (пытается подставить кучу костылей и они только мешают), а браузер FireFox Mobile (и стабильный, и бета-версия) почему-то ничего не загружает.

И вот «Дельфин» очень хорош, особенно версия HD (для больших экранов). Правда, он всё равно не понимает, что я тыкаю мышкой, а не пальцем, поэтому в некоторых местах он менее удобен, чем можно было бы сделать.

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

Кстати, говоря, у «Дельфина» есть встроенный speeddial, правда, без preview. Для жены эта функция необходима, ей так удобно (а смартбук для неё был куплен).

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

Усадьба Братцево

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

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

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

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

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

Цветы артистам

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

Из журнала «Аэрофлот» за июнь 2011, страница 20, статья «В Россию с любовью» (это интервью с Рудольфом Шенкером, лидером группы «Скорпионс»).

Про VIP-места мне не так интересно, как про цветы на сцену. Мне интересно, это только российская (советская) традиция или где-то ещё так делают? Если нет, то почему? Если делали где-то ещё и прекратили, то почему прекратили?

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

Мне с каждым днём страшнее тут жить

Самолет компании «Аэрофлот» прибыл из Иркутска в Москву с часовой задержкой: один из пассажиров опоздал к вылету. В обычных случаях опоздавших не ждут, но в этот раз все было по-другому. Непунктуальным пассажиром оказался губернатор области Дмитрий Мезенцев. Наземные службы аэропорта связались с экипажем и велели подождать, пока первое лицо региона поднимется на борт. Пилоты пытались сопротивляться. Записи эти переговоров стали достоянием общественности.

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

Цитата с сайта «Эха Москвы».

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

Перевёл свой сайт на PHP 5.3.4

Решил поднять свои старые проекты на PHP под MacOS, чтобы на ноуте их нормально разрабатывать. В том числе, перетащил свой сайт. У меня движок сплошной эксперимент, так что используются различные тонкие вещи (например, ленивые вычисления при помощи __toString), которые в PHP 5.3 (который у меня на «Маке») как-то поломали. На хостинге у меня 5.2.x, убил около часа, чтобы всё портировать.

Мелочи вспоминать не хочется, из того что запомнилось — PHP 5.3 нервно, с какой-то невнятной ошибкой, среагировал на «&new», оставшиеся в коде со времён PHP4 (там объекты не передавались по ссылке и объект, порождаемый через «new» копировался при присваивании, если явно не указать, что его надо передать по ссылке), помимо этого, вызов метода объекта через call_user_func работает теперь как-то иначе (не выяснял как именно), но пришлось менять на явный вызов через $object->$method.

С веткой PHP 5.3 я почти не работал, когда эта версия стала появляться в пакетах стабильных версий систем, я уже перешёл на «Пайтон».

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

Нетбук на солнечной батарее

Фирма «Самсунг» объявила о выпуске нетбука NC215S, первого в мире нетбука на солнечных батареях. Обещают, что два часа пребывания на солнце обеспечивает час работы. В итоге, солнце, плюс аккумулятор должны обеспечивать до 14,5 часов непрерывной работы.

В нетбуке будет применяться процессор Интел Атом Н570 или Н455, 1ГБ памяти и дисплеем 10,1 дюймов с разрешением 1024×600 и 250 или 320ГБ жёсткого диска, вес 1,3 килограмма.

Замечательно, на мой взгляд. Надеюсь, другие производители последуют примеру.

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

Рисунки Tavilla

Рыба Григорий (34.48КиБ)

Давненько не рекомендовал комиксы. Впрочем, эти скорее парадоксальные и остроумные рисунки, чем комиксы. Наверное так должен выглядеть ЖЖ Ромы Воронежского, если бы он свои высказывания зарисовывал, а не записывал.

Рекомендую — ЖЖ Тани из Зеленограда.

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

Человекоподобные роботы и майор Богдамир

У Леонида Каганова в книгах есть такой персонаж — майор Хома Богдамир, отечественный супергерой с суперспособностями, которым, если правильно помню, он обязан э… родителям (удержался от спойлеров), те поколдовали над генным кодом Богдамира ещё до рождения.

Одна из суперспособностей — майор умеет пускать лазерные лучи из глаз:

Хо еще раз беспомощно моргнул веками, и вдруг понял, что надо сделать! Ведь у него было то, что он всю жизнь скрывал! То, чем он никогда еще не пользовался! Хо напрягся, и его костяные зрачки закатились. А вместо них из глазниц высунулись вперед тугие цилиндры лазерных пушек. Напряглись железы электрического ската. От страшного напряжения зажглись в глазницах алым огнем светящиеся клетки медузы. Зашевелились, фокусируя пучок, линзы, сотканные кремниевыми бактериями. И вот из глазниц ударили два лазерных луча!

Чистая фантастика, конечно.

А вчера я у «Кулера» читаю следующее:

Ученые смогли получить функционирующий лазер из живой клетки. Была использована клетка печени человека. Для этого, два исследователя из Веллмановского центра фотомедицины Главного госпиталя Массачусетса генетически создали клетку, которая производит особый зеленый флуоресцентный протеин (GFP).

Каганов, которому я кинул эту ссылку, ответил «круто» с тремя восклицательными знаками. Я его понимаю, ещё бы.

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

Кунг-фу панда дерево лежак конфета самолёт аптека…

Мне нравится фильм «Кунг-фу панда» и «Кунг-фу панда-2», но объясните мне кто-нибудь, что значит этот набор слов: «Кунг-фу панда». Тут запятая пропущена или что?

Кстати, руководитель «Дрим воркс энимейшн» рассказал о планах снять пять или шесть фильмов про этого панду.

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

Айти-палочка

Нанотехнологии (58.41КиБ)

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

Судя по всему, уже долго сидит. А в трёх шагах от него стоит семиэтажное здание, битком набитое информационными технологиями и лучшим в стране поиском. Меня почему-то этот контраст так поразил, что я до сих пор про это думаю.

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

Способ борьбы с мигалкиными

Короче говоря, с некоторых пор я с успехом применяю новую, эффективную и прогрессивную технику обращения с Синим ведерком.

Ведерко это всегда лежит у меня под рукой, на полу в салоне. И как только я слышу сзади знакомое покрякивание или повизгивание, вижу в зеркало машину БЕЗ СПЕЦИАЛЬНОЙ РАСКРАСКИ, но с сияющим синим фонарем во лбу, — реагирую немедленно.

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

Действует этот прием безотказно. Еще ни разу не было случая, чтобы и сирена, и мигалка в членовозе, который уперся мне в зад, моментально не были выключены. Намек этот теперь понимает водитель любого членовоза. И подчиняются молчаливому, но решительному требованию мигалковладельцы незамедлительно.

Делится в ЖЖ Сергей Пахоменко, активист движения «Синих ведёрок» (члены которого ездят с прикреплённым к крыше синим детским ведёрком, что не запрещено правилами ПДД).

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

Татарстан, Лаишевский район, село Бима

Гравийная дорожка вьётся через зелёный лес с высокой травой, молодыми деревьями и деревянным навесом слева; на заднем плане видна синяя скамейка среди густой листвы.
Деревянная беседка с синим столом и скамьями стоит на высокой траве среди зелёных деревьев и кустарников.
Женщина в белой куртке стоит у белого кирпичного часовни с голубым куполом и крестом, осматривая иконы в нишах на фоне зелёного леса.
Белый кирпичный киот с иконой Христа Спасителя, украшенный красным кирпичным арочным сводом и несколькими маленькими иконами на подоконнике, на фоне зелёных деревьев.
Человек в красном капюшоне стоит под деревянным навесом с иконой на стене, рядом с ручьём в зелёном лесу.
Затопленная грунтовая дорога в лесу, окружённая зелёной растительностью и деревьями; слева видна часть деревянного строения и перила, через дорогу протянута белая верёвка.
Разрушенный каменный мостик через ручей в лесу, окружённый зелёной растительностью и каменистым берегом.
Деревянный домик с коричневой черепичной крышей и крыльцом, окружённый зелёными деревьями и кустарниками, с деревянным забором на переднем плане и лестницей справа.
Маленькая деревянная часовня с крестом на крыше и дверью, окружённая зелёным лесом и растущая прямо из-под земли у дороги.

В понедельник мы с женой прилетели из Казани, навестили родителей, ещё не скоро выдастся такая возможность. Планировали также поездить по окресностям Казани, но замотались и съездили в субботу только в небольшое (208 жителей на 2000 год) село Би́ма Лаи́шевского района.

Мне неизвестно происхождение названия, более того, оно не очень-то похоже на тюркский топоним, впрочем, может я и ошибаюсь: в Татарстане есть ещё и река с тем же названием, а так же село Бима в Агры́зском районе.

В поиске нашлось слово «בִּימָה» («бима́», с ударением на последний слог) переводится как «возвышенное место», так называется возвышение в синагоге, на котором стоит стол для чтения Торы. Правда, я почти уверен, что связи тут быть не может.

Село примечательно святым источником, в котором, по легенде, в XVII веке была найдена икона великомученицы Параскевы Пятницы, с тех пор источник носит её имя. Икона хранилась в часовне, которая была выстроена на месте находки, а после того как часовню в 1960-х годах разрушили, икону передали на хранение в село Кабаны, в Преображенскую церковь (возможно речь идёт о Спасо-Преображенской церкви села Большие Кабаны, я эту историю записал с таблички).

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

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

Не хочу я выключать ноут в самолёте

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

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

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

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

Кроме того, если масса устройств, которые излучают, преимущественно, в видимом свете, а то и (как элекронные читалки или плееры без экрана) не делают и этого. Они-то как могут помешать работе самолёта? Это уж совсем какое-то суеверие чистой воды.

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

Ничего подобного.

Когда одна из компаний стала разворачивать сеть WiFi внутри «Боинга-737» нового поколения, обнаружилось, что «в ходе испытаний дисплей одного из приборов, используемых пилотами, периодически мигал и выключался из-за помех, вызываемых Wi-Fi оборудованием».

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

Дефект обещают устранить, а самое важное в цитате я выделил.

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

網站.縮.jp — японская сокращалка урлов

Согласен с ДиБРом, это реально круто выглядит. 縮.jp — японская сокращалка урлов («縮» переводится как «сокращение»). Вот, например, ссылка на мой сайт: 網站.縮.jp, а вот на эту заметку: 進入.縮.jp.

Правда я всё равно считаю, что сокращалки урлов должны умереть.

P.S. Кстати, кто-нибудь помнит ещё, что первой «сокращалкой урлов» был сервис da.ru? В 1998 году был открыт. Правда, он не столько сокращал урл, сколько скрывал длинный и уродливый путь до какого-нибудь бесплатного хостинга. Но суть похожа.

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

Тема? Оклад!

Сегодня услышал в Оружейной палате Кремля прекрасное слово «оклад», в выражении «оклад иконы». Я слышал его раньше, но как-то не обращал на него внимания.

Подумалось, что «темы операционной системы» (или программы), скорее не «темы», а «оклады».

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

На «Групоне» продают китайский пылесос втридорога?

На «Групоне» (это один из многочисленных сайтов, где продают товары и услуги со скидкой для разового привлечения клиентов), появилась акция — робот-пылесос «Dust Robot Premium Cleaner 2011» за 7890 рублей, вместо 22900 рублей.

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

Ну с чего бы продавцу продавать технику со скидкой 65% на «Групоне», чтобы что? Привлечь покупателей, чтобы они и дальше покупали в их магазине? Но в магазине ничего больше не продаётся, а люди редко покупают потом ещё и второй пылесос, да ещё и на 65% дороже чем первый. Или что, я порекомендую магазин знакомым? Много ли у меня знакомых, готовых купить пылесос за восемь тысяч? А за 23, когда акция кончится? Ну не могут же организаторы всерьёз на это расчитывать?

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

Решил посмотреть что думает на эту тему всемогущий Фдд (какое я слово вспомнил!).

Открытая коробка с набором для ухода за волосами: круглая плойка с красным декором, фен, щетка и другие аксессуары в прозрачной упаковке
Iintelligent robot vacuum cleaner suppliers

Оказалось я не зря подозревал неладное. За названием «Dust Robot Premium Cleaner 2011» скрывается «Intelligent robot vacuum cleaner suppliers» китайского производства, стоимостью от $45 до $120.

В данный момент (до окончания акции осталось два часа), пылесос купили уже 1327 человек и их количество быстро растёт.

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

Добавлено позднее: всё ещё круче. Оказывается, этот пылесос пытаются продать не только в России, а по всему миру, где только есть сайты «Групона». Но что самое интересное, утверждается, что по меньшей мере один из сайтов, где продают пылесос (а именно — roboduster.de) зарегистрирован на одного из аккаунт-менеджера «Групона». Выводы сделайте сами.

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

Поддержку UTF-7 уберут из браузеров?

Мало кто вообще знает, что есть такая кодировка как UTF-7, я как-то о ней рассказывал. Вкратце, кодировка нужна, чтобы передавать символы Unicode там, где канали передачи семибитные. Такое сейчас, наверное, мало где есть, но UTF-7 используется и в других местах — в почтовом протоколе IMAP4 названия папок кодируются модифицированным UTF-7.

Вот как выглядит «Hello! Привет, ребята!» в UTF-7: «Hello+ACE- +BB8EQAQ4BDIENQRC-, +BEAENQQxBE8EQgQwACE-».

В общем, бесполезная штука. Эту кодировку поддерживают некоторые браузеры (например, IE или FF) и при использовании автоопределения кодировки она несёт в себе потенциальную угрозу: можно этой кодировкой закодировать какую-нибудь вредную последовательность, вроде тегов SCRIPT, его пропустят фильтры, а «умный» браузер, если подумает, что текст в кодировке UTF-7 (например, на англоязычной странице), расшифрует закодированное и выполнит вредоносное.

Фильтровать её трудно: плюсы, минусы, буквы, цифры, иногда за UTF-7 можно принять обыкновенные математические формулы.

И вот WHATWG решила выпилить UTF-7 из браузеров:

User agents must not support the CESU-8, UTF-7, BOCU-1 and SCSU encodings.

А вышедший недавно FireFox 5, уже убрал у себя поддержку этой кодировки. Туда ей и дорога!

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

Сокращалки урлов должны умереть

В комментариях у меня спросили почему сокращалки урлов должны умереть. Отвечаю. Потому что они наносят кучу вреда при почти полном отсутствии пользы.

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

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

Во-вторых, я не вижу куда эта ссылка ведёт. Отсылает ли меня автор ссылки в поиск «Яндекса», в «Википедию», на «Хабр» или на какой-то мусорный сайт? По виду ссылки я иногда могу сказать хочется ли мне на неё нажимать. Не скрывается ли за ней PDF, которые я в принципе не люблю читать с экрана ноута, или EXE, который мне на «Маке» не запустить?

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

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

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

99 бутылок: Go

48. Go — язык программирования, придуманный в «Гугле». Я на нём программирую, время от времени, и довольно неплохо его уже знаю. Замечательный, на мой взгляд, язык. Этакий «Си с человеческим лицом». Особенно интересно добавлено туда ООП, да и параллельные вычисления сделаны хорошо. Единственно — не нравится реализация обработки ошибок через panic/defer.

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

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

package main
import "strconv"

func main() {
    for i := 99; i>0; i-- {
        b := bottles(i) + " of beer"

        println(b + " on the wall, " + b + ".")
        println("Take one down and pass it around, " + bottles(i-1) + " of beer on the wall.\n")
    }

    println("No more bottles of beer on the wall, no more bottles of beer.")
    println("Go to the store and buy some more, 99 bottles of beer on the wall.")
}

func bottles(beer int) string {
    switch (beer) {
        case 0:
            return "no bottles"
        case 1:
            return "1 bottle"
    }

    return strconv.Itoa(beer) + " bottles"
}

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

Черновики у меня в комментариях

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

В том числе сделал то, что давно просили — черновики в комментариях. Работает только в современных браузерах — IE 8.0+, FF 3.5+, Safari 4.0+, Chrome 4.0+, Opera 10.5+, а так же iOS 2.0+ и Андроид 2.0+. Только такой список, так как сохранение происходит в localStorage.

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

Кстати, я делал библиотеку эмуляции localStorage для IE 6 и 7 (используется behavior userData), но у себя использовать не буду, ни к чему поощрять некрофилию.

Работает всё следующим образом (детально можно посмотреть в исходниках любой страницы с комментариями): когда пользователь делает паузу в наборе комментария, мой JS вызывает localStorage.setItem, где ключём является URL страницы плюс имя поля (у меня их три — имя пользователя, сам комментарий и кому этот комментарий был адресова).

После отправки комментария в теле полученной страницы приходят вызовы localStorage.removeItem, которые удаляют сохранённые значения.

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

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

Код, с использованием JQuery, получился вот такой:

// globalStorage — это для FF 2.0, но я не уверен, что это правда работает
var storage = window.localStorage || window.globalStorage && window.globalStorage[location.hostname] || null;

if (storage) {
    var savedraft = function s() {
         if (s.hnd) {
             clearTimeout(s.hnd);
         }
        	
         var o = $(this);
        	
         s.hnd = setTimeout(function() {
             try { // если не хватит места, будет исключение
                 var prefix = location.pathname + '#';
                 storage.setItem(prefix + o.attr('name'), o.val());
                 storage.setItem(prefix + '?', +new Date()); // сохраняю время, возможно в будущем буду подчищать старые черновики
             } catch (o) {}
        }, 500);
    }
    
    // каждый элемент, который надо сохранять, имеет класс draft	
    $.each($('.draft'), function(_, value) {
        var o = $(value),
              key = location.pathname + '#' + o.attr('name'),
              v = storage.getItem(key);

    if (savedsuccessfully) { // внешний флаг, что черновик больше не нужен — всё сохранено на сервере		
                  storage.removeItem(key);
              } else if (v !== null) {
                  o.val(v);
              }
              o.keypress(savedraft).change(savedraft);
        })
    }

localStorage не резиновое, у разных браузеров значения различаются, но в целом, там около 5МБ на домен, да и диск пользователя забивать жалко. Поэтому я сохраняю время записи, возможно когда-нибудь буду вычищать очень уж старые черновики.

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

почемужеонинеговорятпорусски

RFC 3492 «Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)» описывает punycode, это такой способ кодирования национальных доменов, вроде «президент.рф» или «http://مركز-التسجيل.السعودية». На самом деле браузер идёт по кодированному адресу, который выглядит например так: «xn-​-d1abbgf6aiiy.xn-​-p1ai».

Так вот, в этом RFC есть примеры кодирования фраз на разных языках в punycode, есть и русский:

(I) Russian (Cyrillic):
       U+043F u+043E u+0447 u+0435 u+043C u+0443 u+0436 u+0435 u+043E
       u+043D u+0438 u+043D u+0435 u+0433 u+043E u+0432 u+043E u+0440
       u+044F u+0442 u+043F u+043E u+0440 u+0443 u+0441 u+0441 u+043A
       u+0438
       Punycode: b1abfaaepdrnnbgefbaDotcwatmq2g4l

А вот что там написано:

bolk-osx:~ bolk$ python -c 'print "xn--b1abfaaepdrnnbgefbaDotcwatmq2g4l".decode("idna")'
почемужеонинеговорятпорусски

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

JS CSS в одном файле у меня на сайте

Я как-то писал о технике, которая позволяет совместить JS и CSS в одном файле, чтобы ускорить загрузку сайта. Написал два месяца назад, а руки реализовать то же на моём сайте дошли только сегодня ночью.

Особых трудностей не встретил, только убрал все комментарии из файлов с JavaScript руками и добавил удаление BOM из файлов, браузеры как-то нервно реагируют на них, встретив их не в начале файла, а мой редактор кода зачем-то их вставляет.

Схема, в общем-то, не изменилась — если файл .cssjs есть на диске, отдаём его средствами веб-сервера, если нет, собираем необходимое, кладём на диск и отдаём браузеру.

Вот ещё тонкость, обязательно нужно добавить новый mime-тип:

AddType */* .cssjs

Я-то думал, что он нужен только для FF 2.xx, ничего подобного, последние «Опера» и FF так же отказались работать без этого заголовка.

Оказалось, что последний «Хром» ни в какую не хочет рендерить CSS с таким типом, пришлось заменить на «text/css,*/*» на «text/css», предыдущий вариант не работал в IE9.

Надо посмотреть как отнесётся к этому второй FF, а пока, если у вас «Хром» или IE9 и показывает неправильно, обновите, пожалуйста, страницу, чтобы она не из кеша взялась, всё должно нормально отрендериться.

Посмотрим «в поле» насколько это стабильно работает.

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

Walking frog fish

Мне этот ролик напоминает какое-нибудь аниме, вроде «Навсикаи из Долины ветров» или «Рыбки Поньо на утёсе», тем не менее, это настоящая, реально существующая рыба, правда я не знаю как она называется по-русски, по-английски её название Frogfish.

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

Работа — резиновый шарик

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

Эти шарики — работа, семья, здоровье, друзья и душа, и вам необходимо, чтобы все они постоянно находились в воздухе.

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

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

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

Ценность ценна только если её ЦЕНЯТ.

Брайан Дайсон (ex-CEО «Кока-колы»)

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

Google Go vs. Си

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

Я подключился и написал пример на Google Go:

package main

import "fmt"

func main() {
    x := []int{2}

    for i := 3; i < 200000; i += 2 {
        simple := true

        for _, j := range x {
            if i % j == 0 {
                simple = false
                break
            }
        }

        if simple {
            x = append(x, i)
        }
    }

    fmt.Println(x)
}

Запускалось всё на каком-то ноутбуке MacBook Pro. Результаты несколько неожиданные:

Python — 25,95 секунды Perl — 22,96 секунды PHP — 21 секунда Objective C — 9,40 секунды JavaScript (V8) — 4,73 секунды Java — 1,94 секунды Си — 0.95 секунды Google Go — 0,71 секунды.

Особенно меня поразили «Гоу» и JavaScript.

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

Арсентьич

Арсентьич (40.15КиБ)

Хорошим ты был мужиком, Арсентьич, да вот, затянуло в мясорубку.

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

Лада на улицах Владивостока

Лада (73.37КиБ)

xxx: Я себе новую «непроходимую» игрушку нашел.
yyy: Какую?
xxx: Пытаюсь найти на яндекс.панорамах Владивостока хоть одну «Ладу»…

Цитата с «Башорга». Минут 15 играл, нашёл. Я не очень-то разбираюсь, но похоже, что это «Лада 1600».

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

Joby Gorillapod SLR-ZOOM

Joby Gorillapod SLR-ZOOM (34.02КиБ)

У меня же список желаний есть, там всё непрактичное, ты-с-ума-сошёл-чайник-за-15-тысяч, то что я, наверное, сам не куплю, но хочется иметь. Жена вчера сделала сюрприз —  подарила штатив Joby Gorillapod SLR-ZOOM.

Спасибо!

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

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

«Почему папа даёт 700 рублей в день»

Почему (59.61КиБ)

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

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

Torschlusspanik

«Лента.ру» пишет:

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

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

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

Это что-то новенькое. Кто-нибудь припоминает такие «мирные» методы борьбы с неудобными людьми в нашей стране? Не зря Навальный переключился на борьбу с курением. Как чувствовал!

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

Текстовые ссылки в графике

Графическая ссылка (115.73КиБ)

Читая последнюю, на настоящий момент, статью в Ководстве Лебедева «Правила оформления ссылок» обратил внимание, что Студия в этом месте, вроде как, не всегда следует своим же советам.

В правом верхнем углу располагается логотип Студии, являющийся ссылкой, где текстом написано «Студия Артемия Лебедева». Я понимаю, что это картинка, но простой пользователь этого не поймёт, да и какая разница — текст есть текст, прорендерен ли он заранее в графике или это сделала операционная система позже.

Написал письмо Артемию, посмотрим что ответит.

Технических трудностей, между тем, в подчёркивании таких ссылок никаких — прочертил линию в графике и всё, ссылка подчёркнута. Другое дело в подствечивании при наведении, кажется что это невозможно. Но это только на первый взгляд. Я уже демонстировал (неоднократно), что это делается очень просто.

Такие опыты я производил четыре года назад, так даже постоянные читатели вряд ли помнят. В GIF или PNG под ссылкой «прорезается» (прочерчивается прозрачным) полоска, которая будет имитировать наше подчёркивание. Картинке в CSS ставится фон ссылки (например, синий), при наведении фон меняется, схематически:

img {
    background: blue;
}

img:hover, img:visited {
    background: red;
}

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

«Самая первая помощь: 10 опасных заблуждений»

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

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

ГОСТ 11261-75

Внезапно узнал, что существует «ГОСТ 11261-75. Шкурки кошки домашней невыделанные. Технические условия».

Подготовлен к уверждению Всесоюзным научно-исследовательским институтом стандартизаци (ВНИИС) и утверждён и введён в действие Постановлением Государственного комитета стандартов Совета Министров СССР от 13 мая 1975 года.

Шкурки меховой домашней кошки характеризуются густым волосяным покровом с частой упругой блестящей остью и густым пухом…

Площадь шкурки определяют умножением результатов измерений её длины от середины междуглазья до корня хвоста на ширину посередине шкурки…

Шкурки поставляют партиями. Партией считают количество шкурок, сдаваемых одновременно и оформленных одним документом о приёмке.

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

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

Часы без JavaScript

Часы без JavaScript

Сделал крошечные аналоговые часы, которые работают без JavaScript. Кто первый догадается как они работают, тот молодец.

Правда я их ускорил в 60 раз (а то очень уж скучно смотреть), поэтому это скорее секундомер, но стартуют они с текущего времени.

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

Часы без JavaScript: фильм о фильме

Как уже догадались все, кому это было хоть каплю интересно, часы без JavaScript сделаны анимированным GIF. Сделал я всё очень просто: скачал найденный где-то на FTP шрифт «clock.ttf», внутри которого вместо букв нарисованы стрелки в разных положениях и сгенерировал с его помощью 720 картинок.

Шрифт clock (27.08КиБ)

Оказалось, что проще всего сгенерировать картинки при помощи Go. В Пайтоне на «Маке» у меня нет PIL и я его плохо знаю, во встроенном PHP нет поддержки TTF, так что Go:

package main

import "gd"
import "os"
import "fmt"

func main() {
    im := gd.CreateTrueColor(21, 21)
    white := im.ColorAllocate(255, 255, 255)
    black := im.ColorAllocate(0, 0, 0)
    
    // стрелки: 64 → 123 (m) и 192 → 251 (h)

    defer im.Destroy()
        
    for i := 0; i < 720; i++ {
        im.FilledRectangle(0, 0, 20, 20, white)
        
        min  := i % 60
        hour := (i / 60) * 5 + min / 12
        
        im.StringFT(black, "./clock.ttf", 10, 0, 0, 16, "1")
        im.StringFT(black, "./clock.ttf", 10, 0, 0, 16, string(hour + 192))
        im.StringFT(black, "./clock.ttf", 10, 0, 0, 16, string(min + 64))

        name := fmt.Sprintf("gifs/%02d%02d.gif", i/60, i%60)
        im.Gif(name)
        
    }
    
}

После запуска получилось 720 картинок с ноль часов ноль минут до 11:59 (я не зря выбрал часы со стрелками, это позволило сократить размер анимированных часов вдвое).

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

<?
    include "clock.inc.php";
    
    list($h, $m) = explode(':', date('H:i'));
    if ($h > 12) $h -= 12;
    $name = sprintf("%02d%02d.gif", $h, $m);
    
    if (!file_exists($name)) {	
        @array_map('unlink', glob('*.gif'));
    
        $frames_tail = $frames = $framed = array();
        $frames_name = 'frames_tail';
    
        for ($H = 0; $H<12; $H++) {
            for ($M = 0; $M<60; $M++) {
                if ($h == $H && $m == $M) {
                    $frames_name = 'frames';
                }
            
                ${$frames_name}[] = sprintf("gifs/%02d%02d.gif", $H, $M);
                $framed[] = 100;
            }
        }
    
        $frames = array_merge($frames, $frames_tail);
    
        $gif = new GIFAnimator($frames, $framed, 0, 2, -1, -1, -1, 'url');
    
        fwrite(fopen($name, 'wb'), $gif->GetAnimation());
    }
    
    header("Location: $name");

Для генерации анимированных GIF применяется какой-то первый попавшийся в интернете класс, предназначенный для этого. Работает шустро.

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

Re: Господи, неужели это произошло с моим мальчиком?

Помните статью «Господи, неужели это произошло с моим мальчиком?» в которой одна жижистка обвиняет сотрудников и медицинскую службу «Шереметьева» в бездействии, когда руку её ребёнка сломала дверь лифта?

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

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

Рабочая задача: карта + объекты

Ничего экстраординарного, просто задача по работе попалась.

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

Текущее решение тормозит, а надо сделать так, чтобы не тормозило.

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

В общем-то, похоже, подтвердилось. Я взял CANVAS 2000×2000 точек, накидал на него 4000 квадратов случайного цвета и в случайных координатах, CANVAS положил в DIV, растянутый 100% на 100% и скрыл у него скроллеры.

Муляж карты (38.97КиБ)

При клике происходит поиск объекта по списку (безо всякой оптимизации пока), если объект найден, то выводит информацию по цвету, если зажать кнопку мыши, срабатывает флаг «пользователь желает тащить», если пошевелить в этот момент мышью, координаты CANVAS будут меняться вслед за мышью.

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

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

Комьют — время для чтения

Илья переживает за «комьют» (commute).

«Комьют», согласно словарю, это время на езду из пригорода на работу в город.

По-русски, вероятно, это называется «дорога». У нас в офисе, где много иногородних, мы иногда спрашиваем друг друга «сколько ты тратишь на дорогу», иногда «за сколько добираешься». По контексту понятно, что «тратишь» — это время, а «дорога» ведёт из дома на работу и обратно.

Всего на дорогу трачу меньше двух часов. В лучшем случае, в одну сторону, от двери до двери дорога занимает 40 минут.

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

Сегодня, например, я с утра эксперементировал с SSE (Server Side Events), чтобы решить, пригодны ли они в одном внутреннем проекта «Яндекса», где критична быстрая реакция сервиса или нет.

А сейчас я собираюсь на работу.

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

Мне всё время работать дома просто не нравится, мне проще, когда я вижу человека «в объёме». Илья знает как я неохотно пользовался скайпом раньше и как охотно встречаюсь вживую, если есть возможность.

При этом необходимости постоянно торчать в офисе у меня нет. Возможно, я вообще не приходил бы в офис, если бы вместо одной из стен комнаты у меня был бы большой видеоэкран. Я бы поставил к нему стол, на стол ноутбук. Когда мне нужно было бы «выйти в офис», я бы одевался, садился за стол, открывал ноутбук, а большой экран отображал бы виртуальный офис с объёмом (в 3D), где за своими столами, не выходя из дома, сидели мои коллеги.

Можно даже «сесть поближе», достаточно изменить виртуальную планировку, так, что человек окажется, вроде как, в расстоянии вытянутой руки. Мечты, да.

А пока поеду я в офис, выберу какую из трёх книг я всё-таки хочу дочитать и поеду.

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

Дверь в небо

Дверь в небо (47.03КиБ)

Снято в Москве, недалеко от улицы Льва Толстого, точнее не помню.

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

Лечить vs. предупреждать

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

На самом деле, это просто несбыточная мечта, идеал, вроде безбедной старости. Жизнь куда богаче, конечно, есть масса случаев, когда тебе приходится лечить то, что запустил кто-то другой.

«Не самый здоровый режим, но здоровье не моя юрисдикция, как меня уберечь, пусть парятся: минздрав, ноль-один и милиция» — как поёт Михалок. Минздрав, конечно, проводит разъяснительную работу и предупреждает что «курение приводит к импотенции», но отдельный индивид волен положить на эту пропаганду свой вялый болтик, что часто и происходит.

Так что противопоставление «лечить versus предупреждать» звучит примерно как «лучше выспаться, чем поесть». Болеешь — лечись, не болеешь — предупреждайся.

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

Ох…

Шёл от метро, навстречу девочка лет шести, кружащаяся зелёным платьем в горошек вокруг отстранённой мамаши в танце радостных маленьких девочек. Девочка напевает что-то незатейливое, что-то вроде «Ранеток» или кто там сегодня вместо них. Напевает в собственную культю на месте правого запястья…

У меня сердце встало…

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

← сюда туда →