Мысли вслух

 

Давно я сюда уже ничего постоянно не писал, видимо стоит возобновить практику. В последнее время по долгу службы приходится работать с языком Java в области Enterprise приложений. Можно говорить много слов об этом, но я сейчас не об этом. Для Java есть замечательный Spring Framework, который позволяет сосредоточиться на проблеме, а не на вспомогательных вещах, которые кочуют из проекта в проект.

Так как я сам лично люблю С++, то попытался я поискать чего нибудь подобного для этого языка. И не нашел. Причем по отдельности, по разной функциональности есть готовые разработки и библиотеки, есть даже в Open Source, однако чего-то целостного я не нашел. Может быть кто в курсе? Или С++ настолько непопулярен для разработки такого рода приложений?…

Впрочем, увидим…

Устанавливаем C++ драйвер для MongoDB на Mac OS X Mountain Lion

 
 

Потребовался мне вдруг С++ драйвер для MongoDB на Mac OS X, так как писать для FreeBSD софт на С++ лучше всего под Mac OS X в xCode, вот такой уж винегрет.

Поэтому, первое что делаем, качаем вот отсюдова вот файлик с названием cxx-driver/mongodb-linux-x86_64-latest.tgz пофигу что linux – скомпиляем и так, ведь для Mac OS X специально нету :( а жаль.

Распаковываем, и идем в распакованную папку, пытаемся сделать

$ scons

Но вот блин, scons’а нет на маке, увы :(

Ладно, качаем его отсюдова вот

и дальше

$ python setup.py install

Возвращаемся в папку с распакованным драйвером MongoDB, и пытаемся снова сделать

$ scons

Веселье продолжается – на маке не установлен Boost, отлично идем и качаем исходники отсюдова вот

Как скачалось распаковываем и идем в распакованную папку и делаем

$ ./bootstrap.sh
$ ./b2
$ sudo ./b2 install

Алилуйя! Возвращаемся в папку с распакованным драйвером и снова делаем

$ scons
$ sudo scons install

И вуаля – теперь у нас есть MongoDB C++ драйвер для Mac OS X Mountain Lion

Комментарии со старой версии блога

Артем: 18.07.2013 в 20:33 Спасибо большое. Установить получилось ) но tutorial.cpp так и не получилось запустить. Выдает:

tutorial.cpp:3:35: error: mongo/client/dbclient.h: No such file or directory

Может подскажете, почему такое получается ?


MrDekk: 18.07.2013 в 20:37 Добрый день! Попробую подсказать. Компилируете чем? Если xcode, то надо в настройках проекта установить Header Search Paths туда где у вас стоит mongo (у меня например такой путь получился – /usr/local/include). Также не забудьте прописать в Other Linker Flags параметр -lmongoclient чтобы после компиляции у Вас все слинковалось.

Ежели компиляете руками (make, gmake и иже с ними), то -I/usr/local/include -lmongoclient

Ежели не получится – отпишитесь по симптомам.


Артем: 18.07.2013 в 21:11 Решил переустановить драйвер. При запуске:

$ scons

в конце получил вот такое:

In file included from src/mongo/logger/ramlog.cpp:20:
src/mongo/logger/ramlog.h:154: error: ISO C++ forbids declaration of ‘lock_guard’ with no type
src/mongo/logger/ramlog.h:154: error: invalid use of ‘::’
src/mongo/logger/ramlog.h:154: error: expected ‘;’ before » token
src/mongo/logger/ramlog.cpp:49: error: ‘lk’ was not declared in this scope
src/mongo/logger/ramlog.cpp: In constructor ‘mongo::RamLog::LineIterator::LineIterator(mongo::RamLog*)’:
src/mongo/logger/ramlog.cpp:174: error: class ‘mongo::RamLog::LineIterator’ does not have any field named ‘_lock’
scons: *** [build/mongo/logger/ramlog.o] Error 1
scons: building terminated because of errors.

p.s. В /usr/local/include пусто (


Артем: 18.07.2013 в 21:39 Нашел mongo в /opt/local/include/ Подключил так как вы описали. Теперь получаю вот такое:

/opt/local/include/mongo/pch.h:48:10: ‘boost/shared_ptr.hpp’ file not found

этот путь тоже нужно подключить так ?


MrDekk: 18.07.2013 в 22:26 ну boost тоже надо подключать, тем же способом


Артем: 19.07.2013 в 14:01 Добавил вот такое:

/opt/local/include/** /usr/local/include/boost/** /usr/local/include/boost/tr1/detail/**

Но по прежнему ругается на

/usr/local/include/boost/tr1/tr1/iostream:16:12: ‘boost/tr1/detail/config_all.hpp’ file not found

MrDekk: 21.07.2013 в 13:43 А можно iostream этот в студию? Может быть вместо

/usr/local/include/boost/tr1/detail

надо указать

/usr/local/include/boost/tr1

Поиск подстроки в файлах на сервере FreeBSD

Ок, чтобы долго не бегать, сразу дам ответ на вопрос «Как найти строку во всех файлах в текущей папке»:

$ find $PWD -name '*.*' -exec grep -l "TEST" {} \;

Использовать по протоколу ssh, $PWD указывает на текущую директорию (можно посмотреть путь командой pwd).

Параметр -name ‘.’ указывает что идёт поиск всех файлов по маске .. К этим файлам выполняем (-exec) команду grep, которая ищет строку TEST в списке файлов и (можете изменять на свою, не забывайте только экранировать некоторые символы, например кавычки) и выводит список всех файлов (-l).

Взято отсюда

Получения хэша ключа для Facebook

   

Для реализации интеграции с Facebook необходим хэш ключа, чтобы его сделать, надо пойти туда, где этот ключ лежит и сделать

$ keytool -exportcert -keystore mygame.keystore | openssl sha1 -binary | openssl base64

Аз буки веди

az buki vedi

Азбука: послание к славянам. Ярослав Кеслер

Азъ буки веде. Глаголъ добро есте. Живите зело, земляне, и, иже како люди, мыслите нашъ онъ покои. Рцы слово твердо – укъ фъретъ херъ. Цы, черве, шта ъра юсъ яти!

Я знаю буквы: Письмо – это достояние. Трудитесь усердно, земляне, как подобает разумным людям – постигайте мироздание! Несите слово убежденно – Знание – дар Божий! Дерзайте, вникайте, чтобы Сущего свет постичь!