Этот день 2.0
Выпустил обновление приложения Этот день. Передизайнил под iOS 7 (что примерно равно тому, чтобы убрать вообще почти всё оформление). Стало, по-моему, приятнее и лаконичнее.
Заюзал стандартный UIActivityViewController для шаринга через Facebook, Twitter и другие встроенные вещи, типа отправки по email, sms/iMessage и т.д., плюс прикрутил для шаринга в ВК Vkontakte-iOS-SDK вместо самописной хрени, что была раньше. Правда, визуальных отличий особо для пользователя нет, да и пока у меня руки дошли всё наконец допилить, появился уже официальный SDK для iOS от ВК, но ковырять его, чтобы заменить то, что уже работает, не стал.
Попутно избавился от уже ненужного SBJson для работы с JSON, т.к. можно смело пользоваться уже встроенным в iOS NSJSONSerialization. Решил встроить в приложение мобильную Яндекс.Метрику, чтобы считать нормально пользователей и смотреть - кто, например, какой версия iOS пользуется и на каком девайсе. Пока наблюдаю за цифрами, познавательно.
Такое вот продолжение маленького проекта-хобби. Буду думать, чего бы в нём ещё запилить, и буду писать следующее приложение. А пока - качаем/обновляемся:
Отличия CouchDB от Couchbase
Перевод ответа на stackoverflow.com на вопрос об отличиях CouchDB от Couchbase.
Я думаю есть несколько существенных отличий между CouchDB и Couchbase Server, которые необходимо отметить.
Я не буду писать о преимуществах перехода с CouchDB на Couchbase Server, потому, что они хорошо описаны везде (см. The Future of CouchDB by Damien Katz или Couchbase vs. Apache CouchDB by Couchbase). Вместо этого я постараюсь перечислить фичи CouchDB, которые вы не найдёте в Couchbase Server.
Итоги года 2013
Решил написать итоги, но до НГ было как-то не до того, а на праздниках нормального интернета не было.
2013-й был как шторм, бросало туда-сюда.
Из приятного - 3 новые страны за год: Тайланд, Франция и Швеция. Францию, правда, кроме Парижа, я не видел, да и там я только по центру перемещался, а вот Тайланд и Швецию посмотрел пристально и в нескольких местах.
Буду так же, как обычно, иллюстрировать год.
Проблемы компиляции C++-приложений у Homebrew в OS X 10.9 Mavericks
Есть проблема с Homebrew в OS X 10.9 Mavericks - некоторые пакеты не компилятся из исходных кодов. Касается это программ, написанных на C++. Вчера пришлось потратить некоторое количество времени на её решение.
Судя по гуглению, проблема касается только тех, кто обновлялся в 10.8 на 10.9. У тех, кто ставил систему с нуля - вроде бы всё хорошо.
Вчера получил вот такое:
$ brew update
Updated Homebrew from f949b212 to 9d10c43e.
==> Updated Formulae
gfortran
$ brew install spidermonkey
==> Downloading http://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz
Already downloaded: /Library/Caches/Homebrew/spidermonkey-1.8.5.tar.gz
==> ../js/src/configure --prefix=/usr/local/Cellar/spidermonkey/1.8.5 --enable-readline --enable-threadsafe --with-system-nspr --enable-macos-target=10.9
==> make
==> make install
Error: spidermonkey dependency readline was built with the following
C++ standard library: libstdc++ (from clang)
This is incompatible with the standard library being used
to build spidermonkey: libc++ (from clang)
Please reinstall readline using a compatible compiler.
hint: Check https://github.com/mxcl/homebrew/wiki/C++-Standard-Libraries
Погуглив и потыкавшись в issues на github'е, пошёл по ссылке, которая в консоли была в последней строчке. Там было:
Есть две стандартные C++ библиотеки, которые поддерживают компиляторы Apple.
По умолчанию в 10.8 и более ранних использовалась libstdc++, она поддерживалась компиляторами Apple GCC, GNU GCC и clang.
В 10.9 по умолчанию используется libc++, она же по умолчанию в clang на более старых платформах при билдинге кода C++11.
Существуют некоторые несовместимости между несколькими стандартными C++ библиотеками, поэтому Homebrew отбраковывает установку софта если его зависимость была собрана с несовместимой C++ библиотекой. Он рекомендует вам собирать дерево зависимостей используя совместимый компилятор.
Если вы обновились до 10.9 с более ранней версии - потому, что по умолчанию теперь как C++ библиотека используется libc++, возможно вы не сможете собрать из исходных кодов программы, чьи зависимости были собраны в 10.8 или более ранних. Если вы читаете это потому, что были направлены сюда ошибкой компиляции, вы можете исправить всё переустановив зависимости пакета, который вы пытаетесь собрать.
Вот, собственно, и решение проблемы. Если вы ставите какой-то пакет (в данном случае spidermonkey) и видите ошибку вроде:
Error: spidermonkey dependency readline was built with the following
C++ standard library: libstdc++ (from clang)
то нужно просто переустановить зависимость, на которую ругается компилятор. В данном случае readline. Просто выполнив команду:
brew reinstall -v readline
После того, как зависимость будет пересобрана - сам пакет установится.
Собственно, я с этим столкнулся, когда пытался установить новую версию CouchDB. Она тянет за собой spidermonkey, которая тянет за собой readline. Обе зависимости пришлось просто переустановить.
Надеюсь, заметка кому-нибудь сэкономит время.
Как обновить хакинтош с Mac OS X Mountain Lion до Mavericks
Обновил сегодня рабочий хакинтош до 10.9. Всё довольно странно, но реализуемо.
До этого стояла 10.8.5 Mountain Lion. Через Mac App Store скачал обновление Mavericks. Запустил - установщик попросил перезагрузку. После перезагрузки ничего не произошло - просто загрузилась Mountain Lion снова.
Для установки обновления нужно следующее:
Впечатления от Windows Phone 8
Пользуюсь 4-й день Lumia 625. Наконец-то очень близко познакомился с Windows Phone 8. Всё оказалось гораздо приятнее, чем я думал.
Синхронизация папки с Яндекс.Диском, находящейся в другом месте
Пока что Яндекс.Диск синхронизирует только файлы и папки, находящиеся внутри её папки и не даёт добавить папку извне, например, с другого жёсткого диска. Если не хочется пихать папку, которую нужно синхронизировать, в папку Яндекс.Диска - то в макоси можно создать symlink, например:
ln -s /Volumes/MyDisk/FolderToSync /Users/user/Яндекс.Диск/FolderToSync
В Windows, по идее, тоже можно использовать символическую ссылку.