<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Jonathan Bond-Caron - Ideas &amp; Experiments - FreeBSD</title>
    <link>http://jbondc.openmv.com/</link>
    <description>Jonathan Bond-Caron - Ideas &amp; Experiments</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.1.3 - http://www.s9y.org/</generator>
    <pubDate>Thu, 15 Oct 2009 01:14:11 GMT</pubDate>

    <image>
        <url>http://jbondc.openmv.com/templates/mv/img/s9y_banner_small.png</url>
        <title>RSS: Jonathan Bond-Caron - Ideas &amp; Experiments - FreeBSD - Jonathan Bond-Caron - Ideas &amp; Experiments</title>
        <link>http://jbondc.openmv.com/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Connect PHP5 to SQL Azure</title>
    <link>http://jbondc.openmv.com/archives/20-Connect-PHP5-to-SQL-Azure.html</link>
            <category>FreeBSD</category>
            <category>PHP</category>
    
    <comments>http://jbondc.openmv.com/archives/20-Connect-PHP5-to-SQL-Azure.html#comments</comments>
    <wfw:comment>http://jbondc.openmv.com/wfwcomment.php?cid=20</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jbondc.openmv.com/rss.php?version=2.0&amp;type=comments&amp;cid=20</wfw:commentRss>
    

    <author>nospam@example.com (Jonathan Bond-Caron)</author>
    <content:encoded>
    With SQL Azure right around the corner (expected to go live in November 2009), I had to evaluate if we could migrate some databases &#039;into the microsoft cloud&#039;. &lt;br /&gt;
&lt;br /&gt;
The pitch from &lt;a href=&quot;http://blogs.msdn.com/ssds/archive/2009/08/18/9874133.aspx&quot;  title=&quot;Blog Post&quot;&gt;Microsoft senior program manager David Robinson&lt;/a&gt; is &quot;With SQL Azure, developers building Web 2.0, ASP.Net and PHP applications can use familiar tools and data models to develop on a pay-as-you-grow, secure, scalable and highly available database service at minimal infrastructure cost,&quot;.&lt;br /&gt;
&lt;br /&gt;
First, there are &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ee336245.aspx&quot;  title=&quot;SQL Azure limitations&quot;&gt;limitations&lt;/a&gt;, but essentially microsoft is offering a subset of SQL server 2008 running on their infrastructure.&lt;br /&gt;
&lt;br /&gt;
SQL Azure is the first hosted database product with good support for Transact-SQL. This means that any application using nearly standards compliant SQL queries could easily be migrated to use SQL Azure.&lt;br /&gt;
&lt;br /&gt;
For example, using the &lt;a href=&quot;http://www.openmv.com&quot;  title=&quot;OpenMV&quot;&gt;MV framework&lt;/a&gt;, it could be as simple as changing your connection &lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;PostgreSQL:&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
$db = MV_Database_Connection::create(&#039;pgsql://user:pass@localhost/database&#039;);&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;SQL Azure:&lt;/strong&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
// Windows&lt;br /&gt;
$db = MV_Database_Connection::create(&#039;odbc_mssql://user:pass@DRIVER=Driver={SQL Server Native Client 10.0};Server=serverName.database.windows.net;Port=1433;Database=database;UID=user@serverName;PWD=pass;&#039;);&lt;br /&gt;
&lt;br /&gt;
// Unix&lt;br /&gt;
$db = MV_Database_Connection::create(&#039;odbc_mssql://user:pass@DRIVER={FreeTDS};Server=serverName.database.windows.net;Port=1433;Database=database;UID=user@serverName;PWD=pass;TDS_Version=8.0;&#039;);&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Since Microsoft has made it relatively easy to connect to SQL Azure from Windows (SQL Server Native Client), this post looks at connecting php5 on unix to SQL Azure. &lt;br /&gt;
&lt;br /&gt;
There are two methods to connect to SQL Azure from UNIX.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;a) Using mssql_connect()&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
// Install php5-mssql&lt;br /&gt;
// Check freetds version, v0.64 compiled with openssl or gnutls works with Azure&lt;br /&gt;
&lt;br /&gt;
[root@dev] $ tsql -C&lt;br /&gt;
Compile-time settings (established with the &quot;configure&quot; script):&lt;br /&gt;
                           Version: freetds v0.64&lt;br /&gt;
    MS db-lib source compatibility: no&lt;br /&gt;
       Sybase binary compatibility: unknown&lt;br /&gt;
                     Thread safety: yes&lt;br /&gt;
                     iconv library: yes&lt;br /&gt;
                       TDS version: 5.0&lt;br /&gt;
                             iODBC: no&lt;br /&gt;
                          unixodbc: yes&lt;br /&gt;
&lt;br /&gt;
// Add .conf entry so you can mssql_connect(&#039;AZURE&#039;, &#039;username&#039;, &#039;password&#039;);&lt;br /&gt;
// http://www.freetds.org/userguide/freetdsconf.htm#FREETDSCONFFORMAT&lt;br /&gt;
&lt;br /&gt;
[root@dev] cat /usr/local/etc/freetds.conf &lt;br /&gt;
dump file = /tmp/freetds.log&lt;br /&gt;
debug level = 10&lt;br /&gt;
[AZURE]&lt;br /&gt;
        host = serverName.database.windows.net&lt;br /&gt;
        port = 1433&lt;br /&gt;
        tds version = 8.0&lt;br /&gt;
        client charset = UTF-8&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;b) Using odbc_connect()&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
// Install php5-obdc&lt;br /&gt;
// Check unixODBC version, 2.2.12 works well with PHP&lt;br /&gt;
[root@dev] $ isql --version                             &lt;br /&gt;
unixODBC 2.2.12&lt;br /&gt;
&lt;br /&gt;
// Add the &#039;FreeTDS driver&#039; so that unix obdc can use it&lt;br /&gt;
[root@dev] $ cat /usr/local/etc/odbcinst.ini&lt;br /&gt;
[FreeTDS]&lt;br /&gt;
Description     = v0.64 with protocol v8.0&lt;br /&gt;
Driver          = /usr/local/lib/libtdsodbc.so&lt;br /&gt;
&lt;br /&gt;
// Add dsn entry that obdc can use, point to FreeTDS name...&lt;br /&gt;
// http://www.freetds.org/userguide/odbcconnattr.htm&lt;br /&gt;
[root@dev] $ cat /usr/local/etc/odbc.ini&lt;br /&gt;
[TestServer]&lt;br /&gt;
Driver          = FreeTDS&lt;br /&gt;
Description     = Azure test with FreeTDS&lt;br /&gt;
ServerName      = AZURE&lt;br /&gt;
Database        = gol&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
Once your unix server is properly configured, you can go ahead and test php connections.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
// SQL Azure supports tabular data stream (TDS) protocol client version 7.3 or later&lt;br /&gt;
// @see http://msdn.microsoft.com/en-us/library/ee336245.aspx&lt;br /&gt;
&lt;br /&gt;
// On unix, we can connect using open-source FreeTDS (http://www.freetds.org/).&lt;br /&gt;
// Replace XXX with your database information.&lt;br /&gt;
$serverName = &#039;XXXXXXXXXX&#039;;&lt;br /&gt;
$user = &#039;XXX@&#039; . $serverName;&lt;br /&gt;
$pass = &#039;XXXXXX&#039;;&lt;br /&gt;
&lt;br /&gt;
if(function_exists(&#039;mssql_connect&#039;)) {&lt;br /&gt;
	// Using DSN name &#039;AZURE&#039; (specified in /usr/local/etc/freetds.conf)&lt;br /&gt;
	$c = mssql_connect(&#039;AZURE&#039;, $user, $pass);&lt;br /&gt;
	echo &quot;mssql_connect(&#039;AZURE&#039;, $user, $pass): &quot;. ($c ? &#039;Success&#039; : &#039;Error&#039;) . &quot;&lt;br /&gt;&quot;;&lt;br /&gt;
	mssql_close($c);&lt;br /&gt;
	sleep(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if(function_exists(&#039;odbc_connect&#039;)) {&lt;br /&gt;
&lt;br /&gt;
	// All examples require entry in /usr/local/etc/odbcinst.ini:&lt;br /&gt;
	// [FreeTDS]  &lt;br /&gt;
	// Driver          = /usr/local/lib/libtdsodbc.so&lt;br /&gt;
&lt;br /&gt;
	// Using DSN name &#039;TestServer&#039; (specified in /usr/local/etc/odbc.ini)&lt;br /&gt;
	$c = odbc_connect(&#039;TestServer&#039;, $user, $pass);&lt;br /&gt;
	echo &quot;odbc_connect(&#039;TestServer&#039;, $user, $pass): &quot;. ($c ? &#039;Success&#039; : &#039;Error&#039;) . &quot;&lt;br /&gt;&quot;;&lt;br /&gt;
	odbc_close($c);&lt;br /&gt;
	sleep(1);&lt;br /&gt;
&lt;br /&gt;
	// Using DSN name &#039;$serverName&#039; (specified in /usr/local/etc/freetds.conf)&lt;br /&gt;
	$dsn = &quot;DRIVER={FreeTDS};ServerName=$serverName;UID=$user;PWD=$pass;Database=test;&quot;;&lt;br /&gt;
	$c = odbc_connect($dsn, $user, $pass);&lt;br /&gt;
	echo &quot;odbc_connect($dsn, $user, $pass): &quot;. ($c ? &#039;Success&#039; : &#039;Error&#039; ) . &quot;&lt;br /&gt;&quot;;&lt;br /&gt;
	odbc_close($c);&lt;br /&gt;
	sleep(1);&lt;br /&gt;
	&lt;br /&gt;
	// DSN-less connection (more portable / recommended)&lt;br /&gt;
	$dsn = &quot;DRIVER={FreeTDS};Server=$serverName.database.windows.net;Port=1433;Database=test;UID=$user;PWD=$pass;TDS_Version=8.0&quot;;&lt;br /&gt;
	$c = odbc_connect($dsn, $user, $pass);&lt;br /&gt;
	echo &quot;odbc_connect($dsn, $user, $pass): &quot;. ($c ? &#039;Success&#039; : &#039;Error&#039;) . &quot;&lt;br /&gt;&quot;;&lt;br /&gt;
	odbc_close($c);&lt;br /&gt;
	sleep(1);&lt;br /&gt;
	&lt;br /&gt;
	// **Note: Driver= must be uppercase!? Find out where the bug comes from!&lt;br /&gt;
	// $dsn=&quot;Driver={FreeTDS};ServerName=AZURE;Database=gol;UID=$user;PWD=$pass;&quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
If all went well, you should see &#039;Success&#039; everywhere. &lt;br /&gt;
&lt;br /&gt;
Be sure to check the version of FreeTDS and unixODBC you are using! If you run into bugs with these tools, well report them or write a patch!&lt;br /&gt;
&lt;br /&gt;
My conclusion, although FreeTDS works, it is not enterprise ready and needs some corporate backing. Naturally, this brings the question, &lt;a href=&quot;http://www.phpclasses.org/blog/post/85-What-is-Microsoft-up-to-with-PHP.html&quot; &gt;what Microsoft is up to&lt;/a&gt;?&lt;br /&gt;
&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 14 Oct 2009 19:34:53 -0400</pubDate>
    <guid isPermaLink="false">http://jbondc.openmv.com/archives/20-guid.html</guid>
    
</item>
<item>
    <title>FreeBSD 7.0 current - stable</title>
    <link>http://jbondc.openmv.com/archives/16-FreeBSD-7.0-current-stable.html</link>
            <category>FreeBSD</category>
    
    <comments>http://jbondc.openmv.com/archives/16-FreeBSD-7.0-current-stable.html#comments</comments>
    <wfw:comment>http://jbondc.openmv.com/wfwcomment.php?cid=16</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://jbondc.openmv.com/rss.php?version=2.0&amp;type=comments&amp;cid=16</wfw:commentRss>
    

    <author>nospam@example.com (Jonathan Bond-Caron)</author>
    <content:encoded>
    Was trying to make a custom kernel for a test machine that was previously running FreeBSD 7.0 CURRENT. &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;cd /usr/src&lt;br /&gt;
make buildkernel KERNCONF=GDE_LB&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The end result was something like this:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&gt;&gt;&gt; stage 3.1: making dependencies&lt;br /&gt;
--------------------------------------------------------------&lt;br /&gt;
cd /usr/obj/usr/src/sys/GDE_LB; MAKEOBJDIRPREFIX=/usr/obj  MACHINE_ARCH=i386  MACHINE=i386  CPUTYPE= GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin  GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font  GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac  _SHLIBDIRPREFIX=/usr/obj/usr/src/tmp  INSTALL=&quot;sh /usr/src/tools/install.sh&quot;  PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:...: make KERNEL=kernel depend -DNO_MODULES_OBJ&lt;br /&gt;
machine -&gt; /usr/src/sys/i386/include&lt;br /&gt;
cc -c -O2 -pipe -fno-strict-aliasing -std=c99 -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -nostdinc -I. -I/usr/src/sys -I/usr/src/sys/contrib/altq -I/usr/src/sys/contrib/ipfilter -I/usr/src/sys/contrib/pf -I/usr/src/sys/dev/ath -I/usr/src/sys/contrib/ngatm -I/usr/src/sys/dev/twa -I/usr/src/sys/gnu/fs/xfs/FreeBSD -I/usr/src/sys/gnu/fs/xfs/FreeBSD/support -I/usr/src/sys/gnu/fs/xfs -D_KERNEL -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -mno-align-long-strings -mpreferred-stack-boundary=2 -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 -ffreestanding /usr/src/sys/i386/i386/genassym.c&lt;br /&gt;
&lt;strong&gt;cc1: error: unrecognized command line option &quot;-Wno-pointer-sign&quot;&lt;/strong&gt;&lt;br /&gt;
*** Error code 1&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
After some hair pulling, it turns out that &lt;strong&gt;make clean&lt;/strong&gt; is not always enough:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
rm -rf /usr/obj&lt;br /&gt;
&lt;br /&gt;
cd /usr/src&lt;br /&gt;
make buildworld&lt;br /&gt;
make buildkernel KERNCONF=GDE_LB&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
And voila! Hope it helps someone. 
    </content:encoded>

    <pubDate>Mon, 08 Sep 2008 22:21:19 -0400</pubDate>
    <guid isPermaLink="false">http://jbondc.openmv.com/archives/16-guid.html</guid>
    
</item>

</channel>
</rss>