<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Виталий Иванов &#187; c++</title>
	<atom:link href="http://wicharek.name/tags/c/feed" rel="self" type="application/rss+xml" />
	<link>http://wicharek.name</link>
	<description>Разработчик игр и мобильных приложений</description>
	<lastBuildDate>Wed, 01 Feb 2012 08:47:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MySQL C++ Connector Fail</title>
		<link>http://wicharek.name/blog/mysql-cpp-connector-fail</link>
		<comments>http://wicharek.name/blog/mysql-cpp-connector-fail#comments</comments>
		<pubDate>Sun, 27 Dec 2009 10:19:19 +0000</pubDate>
		<dc:creator>wicharek</dc:creator>
				<category><![CDATA[Информационные технологии]]></category>
		<category><![CDATA[Планета Developers.org.ua]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[провал]]></category>
		<category><![CDATA[программирование]]></category>

		<guid isPermaLink="false">http://wicharek.name/?p=649</guid>
		<description><![CDATA[В текущем проекте возникла необходимость работать с MySQL базой данных из C++. Кроме базового API на «чистом»  C, разработчики MySQL (кому она там сейчас принадлежит?) предоставляют надстройки для различных языков программирования, называя их connector&#39;ами. В их числе имеется и красивая &#8230; <a href="http://wicharek.name/blog/mysql-cpp-connector-fail">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>В текущем проекте возникла необходимость работать с MySQL базой данных из C++. Кроме базового API на «чистом»  C, разработчики MySQL (кому она там сейчас принадлежит?) предоставляют надстройки для различных языков программирования, называя их connector&#39;ами. В их числе имеется и красивая высокоуровневая обвязка для C++. Хорошая альтернатива слабо предназначенному для непосредственного использования libmysqlclient, казалось бы.</p>
<p>Вскоре начались проблемы. Случайные вылеты, причинами которых были баги самого мерзкого характера: какая-то дрянь портила чужие области памяти. Потратив предварительно несколько часов, я так и не сумел сходу решить проблему. Уже тогда я подошёл вплотную к MySQL коннектору, но решил что столь явной проблемы (на максимально простом тест-кейсе) в официальной библиотеке быть просто не может, а значит проблема где-то раньше в моём коде. Потому решено было временно отложить решение (вылеты были регулярными, но не столь частыми) и сначала дописать функционал до определённого уровня, что и было проделано.</p>
<p>Пришло время второго захода. В ход пошли хитроизощрённые отладочные техники с hardware watchpoint&#39;ами и утилитами для отслеживания выделения памяти. Снова несколько часов и снова вижу проблему в connector&#39;е. Тут-то я наконец сосредоточенно погуглил и <a href="http://lists.mysql.com/connector-cplusplus/32">нагуглил письмо в mailing list MySQL</a>, где описывалась похожая проблема. Автор письма потрудился залезть в исходники коннектора (что я уже было собирался делать) и обнаружил там серьёзные проблемы. Кому интересно, подробно могут почитать по ссылке, но суть в том, что там просто элементарная ошибка (и не одна) с освобождением памяти, которая приводит к самым неприятным последствиям.</p>
<p>В итоге, код работы с базой (благо, ещё не разросшийся) был переориентирован на использование сишной libmysqlclient и счастье наступило.</p>
<p>Мораль:</p>
<ol>
<li>Не используйте MySQL C++ Connector. Это какой-то вообще слабо поддерживаемый проект. Мало ли что там ещё за проблемы найдутся.</li>
<li>Нельзя доверять третьесторонним библиотекам даже если они часть хорошо зарекомендовавших себя продуктов. Если бы не моё слепое доверие, времени на починку было бы потрачено в разы меньше.</li>
</ol>
<p><strong>UPD.</strong> Кстати, существует ещё <a href="http://tangentsoft.net/mysql++/">mysql++</a>. Не пробовал, но должно быть ок.</p>
<p> <img src="http://wicharek.name/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=649" width="1" height="1" style="display: none;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://wicharek.name/blog/mysql-cpp-connector-fail/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Визуализаторы в Microsoft Visual C++</title>
		<link>http://wicharek.name/blog/msvc-visualizers</link>
		<comments>http://wicharek.name/blog/msvc-visualizers#comments</comments>
		<pubDate>Sat, 10 Jan 2009 22:00:15 +0000</pubDate>
		<dc:creator>wicharek</dc:creator>
				<category><![CDATA[Информационные технологии]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[msvc]]></category>

		<guid isPermaLink="false">http://wicharek.name/?p=15</guid>
		<description><![CDATA[Microsoft Visual Studio я считаю лучшей из доступных IDE для разработки C++, которой в основном и занимаюсь. И это при том, что я являюсь идеологическим противником корпорации из Редмонда. Просто IDE для Линукса слабы. Вообще все решения в этой области, &#8230; <a href="http://wicharek.name/blog/msvc-visualizers">Читать далее <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Microsoft Visual Studio я считаю лучшей из доступных IDE для разработки C++, которой в основном и занимаюсь. И это при том, что я являюсь идеологическим противником корпорации из Редмонда. Просто IDE для Линукса слабы. Вообще все решения в этой области, основанные на GCC провальны из-за дебаггера. Не знаю, то ли GDB настолько плох, то ли никто не в состоянии нормально встроить его в IDE, то ли он просто идеологически для этого не предназначен. Eclipse c CDT монструозен и тормознут. Vi или emacs с командной строкой и make, которое сразу же посоветует какой-нибудь Линукс-джедай, я лично осилить до того уровня производительности, что имею в MSVS, не в состоянии (а в состоянии ли вообще кто-то?). Впрочем, справедливости ради отмечу, что не сильно-то я и старался.</p>
<p>Альтернативные среды вроде Code::Blocks и Dev-Cpp, когда я последний раз смотрел, были в очень зачаточном состоянии. Вот сегодня скачал первую, собираюсь пересмотреть ещё раз — вдруг что-то изменилось.  Но всё это тема для отдельного долгого разговора, перерастающего в холивар. А этот пост именно о Visual C++ и одной её полезной и практически не документированной фиче, на которую я недавно набрёл. Это — кастом визуализаторы (custom visualizers) для переменных — то, что разработчик видит в панельке Watch во время отладки программы. Вещь очень удобная и сильно облегчающая жизнь, если вы, например, как и я, любите писать «велосипеды» в виде собственных библиотек, или вообще часто используете какую-нибудь стабильную библиотеку/фреймворк/движок со своими, сложными для быстрого понимания as is в отладчике, типами данных.</p>
<p><br/><br/><a href="http://wicharek.name/blog/msvc-visualizers">дальше</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wicharek.name/blog/msvc-visualizers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

