Блог #old-site

Мальта, март 2014. Вид со стены Мдины
Весна 2012. Германия — Франция — Италия. Швейцария
Тайланд, Индонезия, Сингапур (зима 2010). В Сингапурском зоопарке. Я и белый тигр :)
Москва-Берлин 2021. Я с Ольчуном в аэропорту на пути в Берлин
Ирландия, март 2015. Протест против взымания платы за воду
Исландия 2023.
Мальта, март 2014. Вид на Мдину
Март 2017. Берлин — Роттердам — Дюссельдорф. Вид на мост Эразма aka Erasmusbrug
Новый год 2008 (Норвегия, Швеция, Дания). Спальный район Осло
Берлин, Люббенау, Потсдам. Май 2018. Клумба-зонт
Перу и Боливия. Зима-весна 2011. Железная дорога
Берлин, Люббенау, Потсдам. Май 2018. Лодка в Люббенау
Зимний Берлин.
Лето 2008 (Куба). И еще раз я возле автописты
Тойфельсберг. %!s(<nil>)
Март 2017. Берлин — Роттердам — Дюссельдорф. Дюссельдорф
Прага, май 2017. Дорога со ступеньками
Новый Год 2009 (Амстердам). Знак
Первый Россиийский семинар по CMS Drupal. Друпликон и моя тень
Лето 2008 (Куба). "Пляж" у отеля
Новый Год 2009 (Амстердам). Амстердам, улица Дамрак, уличный артист
Ещё немного майского Берлина. %!s(<nil>)
Весна 2012. Германия — Франция — Италия. Страсбург. Наше посольство
Хорватия, Млини 2017. Млини, море
Лавандовые поля. %!s(<nil>)
Тенерифе.
Берлин, Люббенау, Потсдам. Май 2018. Ольчик в Потсдаме
Мальта, март 2014. Мдина
Весна 2012. Германия — Франция — Италия. Митинг в Берлине
Весна 2012. Германия — Франция — Италия. Я, Джульетта и мельница
Лавандовые поля. %!s(<nil>)

Ubuntu 14.04 не загружается после установки на ноутбук Sony Vaio с UEFI и предустановелнной Windows 7

Проблема: Ubuntu 14.04 корректно устанавливается на ноутбук Sony Vaio с UEFI и предустановленной Windows 7, но загрузки ОС не происходит, по прежнему грузится только Windows без возможности выбрать другую ОС. Использование из-под Ubuntu (live cd/usb) boot-repair и с дефолтными, и с кастомными настройками не помогают:

sudo add-apt-repository -y ppa:yannubuntu/boot-repair && sudo apt-get update    
sudo apt-get install -y boot-repair && boot-repair

Выполнение из-под Windows команды:

bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi

не помогает.

Нагуглил тут: http://askubuntu.com/questions/150174/sony-vaio-with-insyde-h2o-efi-bios-will-not-boot-into-grub-efi/150640#150640 и тут: http://askubuntu.com/questions/159918/cant-dual-boot-ubuntu-12-04-and-windows-7-on-sony-vaio-s-15-2012, что проблема может быть в том, что виндовый лоадер захардкожен в прошивке ноутбука. По этому проблема решилась заменой виндового .efi файла аналогичным убунтовским (из-под Ubuntu live cd и с предварительным бэкапом первого файла, конечно):

sudo su
mkdir -p /mnt/efi_partition
mount -t vfat /dev/sda3  /mnt/efi_partition
cd /mnt/efi_partion/EFI/Microsoft/Boot
cp bootmgfw.efi bootmgfw.efi.old
cp /mnt/efi_partition/EFI/ubuntu/grubx64.efi bootmgfw.efi
update-grub
reboot

В моем случае больше ничего не понадобилось, но, возможно, потребуется добавить Windows в настройки Grub, для этого в файл /etc/grub.d/40_custom надо добавить:

menuentry "Windows 7" {
    set root='(hd0,gpt3)'
    chainloader /EFI/Boot/bootx64.efi
}

И обновить настройки:

update-grub

Ну и, напоследок, может захотеться поменять порядок загрузки ОС, для этого в /etc/default/grub параметру GRUB_DEFAULT нужно присвоить номер ОС в списке систем, который появляется при загрузке компьютера (и опять не забыть выполнить update-grub).

Update

После установки очередного апдейта винда затерла лоадер своим дефотным и Убунту перестала грузиться, а флешки с Убунтой, для того чтобы проделать описанные выше действия не оказалось, поэтому я нашел способ восстановить лоадер из-под винды:

mountvol K: /S

(вместо K: можно подставить любую неиспользуюмую в именах дисков букву). Далее из-под админа копируем файл grubx64.efi на место bootmgfw.efi как это указано в примере с Убунту.

Новые впечатления о Чехии

Пишу продолжение поста Первые впечатления о Праге.

Обмен валюты

С честными обменными пнуктами в центре Праги туго. Все обменники можно разделить на 3 типа. Первый тип обменников берет комиссию с операций от 5 до 20 (!!!) процентов. Второй тип предлагает сильно заниженный курс обмена: при реальной цене примерно в 27,60 крон за евро такие обменники предлагают по 19-20 крон за евро. При этом такие обменники часто завлекают большой надписью типа “комиссия 0%”. И только третий, честный, тип предлагает более или менее адекватный курс (около 27,20 крон за евро) и нулевую комиссию.

Такими драконовскими тарифами на обмен валюты могут похвастаться и обменные пункты под вывеской с громким брендом типа Western Union. Поэтому всегда важно уточнять у кассира сколько крон он даст в обмен на вашу валюту.

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

Читать дальше ➠
csp_shield_logo_cover.jpg

Введение в Content Security Policy (CSP)

Перевод статьи Майка Веста An Introduction to Content Security Policy от 15 июня 2012 года. Несмотря на то, что статье уже больше 2 лет, информация все еще актуальна и полезна. Об интересном опыте внедрения CSP в Яндексе можно почитать в этой статье.


Модель безопасности в вебе базируется на политике одинакового источника (same origin policy). Только код сайта https://mybank.com должен иметь доступ к данным https://mybank.com, а https://evil.example.com ни при каких условиях не должен получить такого доступа. Каждый источник остается изолированным от остального веба, что дает разработчикам безопасную песочницу, в которой можно разрабатывать и экспериментровать. Теоретически, это бриллиант без изъяна, но на практике, злоумышленники могут найти способы обойти эту систему.

Например, такие атаки как межсайтовый скриптинг (Cross-site scripting, XSS) позволяют обойти политику одного источника, обманным путем заставив сайт доставить вредоносный код вместе легитимным контентом. Это большая проблема, так как браузеры доверяют всему коду, который показывается на странице, так как он является частью страницы доставленной из доверенного источника. XSS Cheat Sheet — это старый, но весьма актуальный список методов, которые могут быть использованы злоумышленниками для внедрения зловредного кода. Если злоумышленнику успешно удается внедрить любой код в страницу, то игру можно считать оконченной: данные сессии пользователя становятся скомпроментированными и информация, которая должна оставаться в секрете, попадает в руки к Плохим Парням™. Мы, конечно же, хотим предотвратить такую возможность.

Этот туториал освящает один многообещающий механизм защиты, который может значительно снизить риск и вред от XSS-атак в современных браузерах — Content Security Policy (CSP).

Читать дальше ➠

Мифический человеко-месяц

Прочитал книгу Фредерика Брукса “Мифический человеко-месяц” и хочу поделиться выдержками из книги, которые показались мне наиболее значимыми.

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


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

Читать дальше ➠

Первые впечатления о Праге

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

Читать дальше ➠

Перевод книги "PHP Internals Book"

Взялся за перевод на русский язык книги “PHP Internals Book”. Книга посвящена внутренней логике работы интерпретатора PHP и в первую очередь будет интересна разработчикам на языке C, которые хотят научиться писать расширения для PHP, но и PHP-разработчики, думаю, найдут для себя немало полезной информации.

Перевод является неофициальным (хотя и сделан с разрешения авторов), так что все камни о качестве перевода кидать в меня.

Почитать книгу онлайн можно тут: http://romka.gitbooks.io/php-internals-book-ru/, скачать в формате для читалок тут: https://www.gitbook.io/book/romka/php-internals-book-ru, помочь с переводом тут: https://github.com/romka/phpinternalsbook-ru.

На данный момент переведена только одна глава, но я продолжаю работу.

Важно учитывать, что структуры данных, описанные в книге, актуальны для современных версий PHP (на данный момент это PHP 5.5). Если один из следующих релизов будет слит с веткой phpng, то часть структур и алгоритмов, описанных в текущей версии книги, устареют.

Об области видимости переменных

Цитата из книги Стива Макконелла “Совершенный код”:

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

Путешествие на Мальту, март 2014

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

Полный фотоотчет о поездке можно посмотреть в фотогалерее.

Читать дальше ➠
ill_roma_003_middle_0_cover.jpg

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

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

Читать дальше ➠

Опубликовал в Google Play свою первую Android-игрушку Tetcolor

Tetcolor

Tetcolor — это ремейк классического Tetris color для OS Android (и в ближайшее время для iOS, так как игра построена на кроссплатформенном движке Gideros). В игре реализовано несколько режимов, локальные и глобальные таблицы рекордов и удобное управление (пара слов об этом ниже).

Сайт игры с подробным описанием правил и таблицами рекордов: http://tetcolor.net/. Прямая ссылка на Google Play: https://play.google.com/store/apps/details?id=eu.romka.tetcolor.

Это мой первый опыт разработки игры по мобильные платформы в целом и с использованием Gideros Mobile в частности, по этому начать решил с максимально простого проекта, чтобы параллельно с разработкой освоить базовые API движка. В отличии от десятка подобных игр уже опубликованных в Google Play в моей версии игры управление основано не на кнопках (в которые сложно попасть не глядя), а на жестах, которые можно использовать в любой части экрана.

Гидерос оказался достаточно функциональным движком (заточенным только по 2D-приложения!), практически все мои потребности были покрыты или стандартным его функционалом, или готовыми сторонними библиотеками. Из недостатков могу пока назвать только отсутствие возможности использовать native UI компоненты, по этому мне не удалось реализовать полноценный сервис рекордов с регистрацией пользователей, но разработчики, судя по roadmap, активно над этим работают.

Обновление от 01.12.2013 Теперь игра доступна и в Apple AppStore.