<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7415077</id><updated>2012-01-10T13:36:45.789-08:00</updated><title type='text'>Dathan's Notes of the Day</title><subtitle type='html'>Various notes if I have time to write about.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7415077.post-2674638041244629508</id><published>2007-01-16T12:17:00.000-08:00</published><updated>2007-01-16T12:24:10.761-08:00</updated><title type='text'>Speaking at the mySQL conference 2007</title><content type='html'>I'll be giving a talk at mysqluc2007. The talk will be entitled, Federation at Flickr: Doing Billions of Queries per day. Personally I think it's a pretty catchy title, and full of info that might be helpful for many other organizations.&lt;br /&gt;&lt;br /&gt;Hope to see you there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-2674638041244629508?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/2674638041244629508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=2674638041244629508' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/2674638041244629508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/2674638041244629508'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2007/01/speaking-at-mysql-conference-2007.html' title='Speaking at the mySQL conference 2007'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-1996004801168891000</id><published>2007-01-04T11:07:00.001-08:00</published><updated>2007-01-04T11:07:06.860-08:00</updated><title type='text'>Flickr</title><content type='html'>This is a test post from &lt;a href="http://www.flickr.com/r/testpost"&gt;&lt;img alt="flickr" src="http://www.flickr.com/images/flickr_logo_blog.gif" width="41" height="18" border="0" align="absmiddle" /&gt;&lt;/a&gt;, a fancy photo sharing thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-1996004801168891000?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/1996004801168891000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=1996004801168891000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/1996004801168891000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/1996004801168891000'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2007/01/flickr_04.html' title='Flickr'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-115376859274235075</id><published>2006-07-24T12:06:00.000-07:00</published><updated>2006-07-24T12:16:32.763-07:00</updated><title type='text'>Yahoo Music Problems</title><content type='html'>So, I have this really crappy laptop that looses it's harddrive every few months. I can always recover because I constantly backup the laptop. But, restoring messes things up with Yahoo! Music, and Yahoo! music doesn't inform the user what's going on.&lt;br /&gt;&lt;br /&gt;Here where my symptoms, all my subscription music was transferred yet again from Yahoo music to the restored laptop. I click on the track:&lt;br /&gt;Connecting&lt;br /&gt;Playing&lt;br /&gt;Proceed to the end of the track&lt;br /&gt;No music&lt;br /&gt;Obviously an error, yet no error message.&lt;br /&gt;&lt;br /&gt;Click on my launch cast radio station. No music, no error message, in fact a constant skip of music while still downloading tracks. Really this is taxing on the Yahoo Radio Unlimited stations bandwidth because one is downloading all songs as fast as it can, possibly causing a DOS if many clients do this at the same time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, why did this problem occur? You need to be astute enough to look at the download manager where the Error is reported, since the application doesn't let you know what the problem is: So, here it is.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;License Request Error 0xc00D2751 (A problem has occured in the Digital Rights Management component....&lt;br /&gt;&lt;br /&gt;Basically on restoring from backup the old DRM license was restored as well. This is not good even though this is the same computer, the license has changed. Why? well I do know but to fix it go here.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;810422"&gt; Solution to fix it&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In summary remove the hidden DRM folder, YME will then recreate it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-115376859274235075?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/115376859274235075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=115376859274235075' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/115376859274235075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/115376859274235075'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2006/07/yahoo-music-problems.html' title='Yahoo Music Problems'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-115274309284008773</id><published>2006-07-12T15:21:00.000-07:00</published><updated>2006-07-12T15:24:52.853-07:00</updated><title type='text'>My .vimrc file</title><content type='html'>&lt;code&gt;&lt;br /&gt;set background=dark&lt;br /&gt;autocmd BufEnter *.pl,*.cgi,*.pm,*.html,*.inc,*.php,*.gne set  formatoptions=croql comments=n:#&lt;br /&gt;autocmd BufEnter *.pl,*.pm set  comments=n:# cinoptions=&gt;4,(0,)5,*15&lt;br /&gt;autocmd BufEnter *.java set fo=crql cin ai&lt;br /&gt;if !exists("autocommands_filetypetabs")&lt;br /&gt;let autocommands_filetypetabs = 1&lt;br /&gt;augroup filetypetabs&lt;br /&gt;"autocmd FileReadPost,BufReadPost *.css set tabstop=2&lt;br /&gt;"autocmd FileReadPost,BufReadPost *.css set shiftwidth=2&lt;br /&gt;"autocmd FileReadPost,BufReadPost *.xsl set tabstop=2&lt;br /&gt;"autocmd FileReadPost,BufReadPost *.xsl set shiftwidth=2&lt;br /&gt;augroup END&lt;br /&gt;endif&lt;br /&gt;&lt;br /&gt;au BufEnter,BufNewFile,BufReadPost,TermChanged, *.php,*.inc,*.html,*.php,*.gne,*.txt source $VIMRUNTIME/syntax/php.vim&lt;br /&gt;au BufNewFile,BufReadPost,TermChanged, *.pl,*.cgi,*.pm so $VIMRUNTIME/syntax/perl.vim&lt;br /&gt;set nottybuiltin&lt;br /&gt;set nocompatible&lt;br /&gt;set backspace=2     " backspace can join lines&lt;br /&gt;set ruler       " show cursor position&lt;br /&gt;set laststatus=2    " show nice ruler&lt;br /&gt;" set number        " show number by default&lt;br /&gt;&lt;br /&gt;set errorformat=%f:%l:%m,\"%f\"\\,\ line\ %l\:\ %m&lt;br /&gt;set magic&lt;br /&gt;set nobackup&lt;br /&gt;set writebackup     " keep a backup copy during the edit session&lt;br /&gt;set incsearch       " Incremental search.&lt;br /&gt;set nowrap          " Do not wrap lines automatically&lt;br /&gt;set autoindent&lt;br /&gt;set smartindent&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"set list&lt;br /&gt;"set listchars=tab:&gt;-,trail:-&lt;br /&gt;&lt;br /&gt;set joinspaces      " Join adds two spaces after a period.&lt;br /&gt;set noexpandtab&lt;br /&gt;" softtabstop number of spaces a &lt;TAB&gt; counts for usefull to make it look &lt;br /&gt;" like u want when ts is set to 8&lt;br /&gt;set softtabstop=4&lt;br /&gt;set tabstop=8&lt;br /&gt;set shiftwidth=8&lt;br /&gt;" Line width to endless&lt;br /&gt;set textwidth=0&lt;br /&gt;&lt;br /&gt;"c auto-wrap comments&lt;br /&gt;"r automatically insert the current comment leader after hitting &lt;enter&gt;&lt;br /&gt;"o automatically insert comment leader after hitting o&lt;br /&gt;"q format commens with gq&lt;br /&gt;"l longlines are not broken when textwidth is reached&lt;br /&gt;set formatoptions=croq cindent sw=8 ts=8&lt;br /&gt;" The completion dictionary is provided by Rasmus:&lt;br /&gt;" http://lerdorf.com/funclist.txt&lt;br /&gt;set dictionary-=/home/dathanp/vim/funclist.txt dictionary+=/home/dathanp/vim/funclist.txt&lt;br /&gt;" Use the dictionary completion&lt;br /&gt;set complete-=k complete+=k&lt;br /&gt;" {{{ Autocompletion using the TAB key&lt;br /&gt;&lt;br /&gt;" This function determines, wether we are on the start of the line text (then tab indents) or&lt;br /&gt;" if we want to try autocompletion&lt;br /&gt;func! InsertTabWrapper()&lt;br /&gt;    let col = col('.') - 1&lt;br /&gt; if !col || getline('.')[col - 1] !~ '\k'&lt;br /&gt;        return "\&lt;tab&gt;"&lt;br /&gt;    else&lt;br /&gt;        return "\&lt;c-p&gt;"&lt;br /&gt;    endif&lt;br /&gt;endfunction&lt;br /&gt;&lt;br /&gt;" Remap the tab key to select action with InsertTabWrapper&lt;br /&gt;inoremap &lt;tab&gt; &lt;c-r&gt;=InsertTabWrapper()&lt;cr&gt;&lt;br /&gt;&lt;br /&gt;" }}} Autocompletion using the TAB key&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"*N - searches for unclosed comments&lt;br /&gt;"(N - indent N characters from the live with the unclosed parentheses&lt;br /&gt;")N - searches for unclosed parentheses N lines away&lt;br /&gt;"&gt;N indentation&lt;br /&gt;"set cinoptions=(0,)5,*15&lt;br /&gt;set keywordprg=webster&lt;br /&gt;set shortmess=mrnto&lt;br /&gt;set showmatch&lt;br /&gt;set nostartofline&lt;br /&gt;set   showcmd&lt;br /&gt;set   showmatch&lt;br /&gt;if has("terminfo")&lt;br /&gt;  set t_Co=8&lt;br /&gt;  set t_Sf=&lt;Esc&gt;[3%p1%dm&lt;br /&gt;  set t_Sb=&lt;Esc&gt;[4%p1%dm&lt;br /&gt;else&lt;br /&gt;  set t_Co=8&lt;br /&gt;  set t_Sf=&lt;Esc&gt;[3%dm&lt;br /&gt;  set t_Sb=&lt;Esc&gt;[4%dm&lt;br /&gt;endif&lt;br /&gt;set   showmode&lt;br /&gt;set   statusline=%1*[%Y]%F\%(\ %m%r%H%)%=%3P&lt;%l,%c&gt;&lt;br /&gt;map &lt;F12&gt; :so $VIMRUNTIME/syntax/php.vim&lt;br /&gt;map &lt;F11&gt; :set syntax=php&lt;br /&gt;&lt;br /&gt;if has("syntax")&lt;br /&gt;    source $VIMRUNTIME/syntax/syntax.vim&lt;br /&gt;    hi User1 term=inverse,bold cterm=bold ctermfg=yellow ctermbg=blue&lt;br /&gt;    highlight Comment   term=bold ctermbg=4 cterm=bold ctermfg=7&lt;br /&gt;endif&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-115274309284008773?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/115274309284008773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=115274309284008773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/115274309284008773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/115274309284008773'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2006/07/my-vimrc-file.html' title='My .vimrc file'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-115030842305852411</id><published>2006-06-14T11:03:00.000-07:00</published><updated>2006-07-12T15:31:39.993-07:00</updated><title type='text'>Debugging Locking issues that may be related to INNODB AUTO_INC Locks</title><content type='html'>&lt;a href="http://www.innodb.com/ibmanold.php#InnoDB.auto.inc"&gt;How innodb handles auto increment&lt;/a&gt; over there states that "When accessing the auto-increment counter InnoDB uses a special table level lock AUTO-INC lock which it keeps to the end of the current SQL statement, not to the end of the transaction."&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;&lt;li&gt; Does this mean that If the SQL statement take a long time to execute that a lock on the table is exists for that period of time &lt;/li&gt;&lt;br /&gt;&lt;li&gt; Does this mean that no other statement can grab info since this is a mutex lock? &lt;/li&gt;&lt;br /&gt;&lt;/UL&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; Update &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So what tweaking of variables might make a difference.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;4.1+ innodb_safe_binlog - sync's the binlog on ever update to innodb to make sure that if a crash occurs the chances on loosing slave events is very small.&lt;p&gt;&lt;br /&gt;&lt;br /&gt;thread_cache: - this keeps open treads open for frequest connections.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;I reduced thread_cache to 45 from 300 and turned off innodb_safe_binlog to see if thread contention sould stop. I know I could mess with innodb_concurrent_threads but this is a different issue outside of that thread scope.&lt;br /&gt;&lt;br /&gt;&lt;b&gt; Update 2 &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt; Haha I'm such a n00b. Basically the issue was there wasn't a key on a table that just grew very large but still in memory. So disk io was low but CPU was very very high!! The reason even though a table with 150K rows is in memory processing all these rows is CPU IO intensive at high concurrency. Adding a index is all that was needed to fix the porblem.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt; Note: use top, vmstat, iostat -x 5 &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-115030842305852411?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/115030842305852411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=115030842305852411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/115030842305852411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/115030842305852411'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2006/06/debugging-locking-issues-that-may-be.html' title='Debugging Locking issues that may be related to INNODB AUTO_INC Locks'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-114964967650068622</id><published>2006-06-06T20:04:00.000-07:00</published><updated>2006-06-06T20:07:56.550-07:00</updated><title type='text'>southpark</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/dathan/161159627/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/69/161159627_facfaa4fd7_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/dathan/161159627/"&gt;southpark&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/dathan/"&gt;Dathan&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;This is my "Avatar" @ flickr.com&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-114964967650068622?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/114964967650068622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=114964967650068622' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/114964967650068622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/114964967650068622'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2006/06/southpark.html' title='southpark'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-114348732976399776</id><published>2006-03-27T11:22:00.000-08:00</published><updated>2006-03-27T11:22:09.790-08:00</updated><title type='text'>dathan</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://dathan-mud.flickr.com/photos/dathan/62261061/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/24/62261061_4d7e0a2c67_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://dathan-mud.flickr.com/photos/dathan/62261061/"&gt;dathan&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://dathan-mud.flickr.com/people/dathan/"&gt;Dathan&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;Prounciation of these 2 characters should be "Da Shan". "Da" means ground, great, big; "Shan" means China fir.&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-114348732976399776?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/114348732976399776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=114348732976399776' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/114348732976399776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/114348732976399776'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2006/03/dathan.html' title='dathan'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-113994737550607640</id><published>2006-02-14T11:58:00.000-08:00</published><updated>2006-07-12T15:26:41.030-07:00</updated><title type='text'>Setting up the config.ini file for NDB</title><content type='html'>The config.ini file is the ndb_mgm NDB management process directive. There are Global settins and specific settings for the various components of NDB.&lt;br /&gt;&lt;br /&gt;Here are my settings&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[NDBD DEFAULT]&lt;br /&gt;&lt;br /&gt;NoOfReplicas=2# Number of Replicas: This defines what Node groups contain the &lt;br /&gt;              # same data for HA.&lt;br /&gt;              # So, say we have 8 Data notes with ids 2,3,4,5,6,7,8,9&lt;br /&gt;              # Node Group 1: 2,3 Node Group 2: 4,5 Node Group 3: 6,7 &lt;br /&gt;              # Node Group 4: 8,9&lt;br /&gt;              # To make sure you don't loose data don't stick a Node Group on &lt;br /&gt;              # the Same box: i.e. ID 2,3&lt;br /&gt;              # should not be the same box.&lt;br /&gt;&lt;br /&gt;DataMemory=6G # How much memory to allocate for database records and indexes&lt;br /&gt;              # All data is stored in FIX size, so a VARCHAR(255) will take 255 bytes&lt;br /&gt;              # Each record also has some overhead. 16-bytes since each record is&lt;br /&gt;              # stored in a&lt;br /&gt;              # 32 KB page with 128 byte page overhead.&lt;br /&gt;              # CREATE TABLE test (&lt;br /&gt;              # a INT NOT NULL,&lt;br /&gt;              # b INT NOT NULL,&lt;br /&gt;              # c INT NOT NULL,&lt;br /&gt;              # PRIMARY KEY (a),&lt;br /&gt;              # UNIQUE KEY  (b)&lt;br /&gt;              # )&lt;br /&gt;              #&lt;br /&gt;              # 3 * 4 = 12 bytes + fixed overhead 12 bytes &lt;br /&gt;              # (4 bytes are saved from fixed since no null columns)&lt;br /&gt;              # == 24 byte Record size&lt;br /&gt;              # DataMemory also stores Index Data, it's called ordered data; &lt;br /&gt;              # 10 bytes to be exact a(4)+1byte + b(4)+1byte = 10 byte overhead &lt;br /&gt;              # per record.&lt;br /&gt;              # 34 byte Record Size&lt;br /&gt;              # so 963 Data records fits in a single page&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;               #&lt;br /&gt;IndexMemory=5G # How much memory to allocate for index storage, this is really &lt;br /&gt;               # mis labled it should be HashIndexMemory&lt;br /&gt;               # The primary key and unique key are hash indexes and they are&lt;br /&gt;               # implemented in a way&lt;br /&gt;               # where each key has a 25 byte overhead + size of the column&lt;br /&gt;               # In our example it's 29 bytes for the Primary Key&lt;br /&gt;               # 29 bytes for the Unique Key + 8 bytes for b+a + 12 bytes of &lt;br /&gt;               # overhead (4 bytes saved)&lt;br /&gt;               # since the Unique key is translated into an internal table with b as the PRIMARY and a as a column.&lt;br /&gt;               #&lt;br /&gt;&lt;br /&gt;# Management process options:&lt;br /&gt;[NDB_MGMD]&lt;br /&gt;hostname=66.94.XXX.XXX          # Hostname or IP address of MGM node&lt;br /&gt;datadir=/local1/mysql-cluster   # Directory for MGM node logfiles&lt;br /&gt;&lt;br /&gt;[NDBD]&lt;br /&gt;hostname=66.94.XXX.XXX&lt;br /&gt;datadir=/local1/mysql/data&lt;br /&gt;&lt;br /&gt;[NDBD]&lt;br /&gt;hostname=66.94.XXX.XXX&lt;br /&gt;datadir=/local1/mysql/data&lt;br /&gt;&lt;br /&gt;[NDBD]&lt;br /&gt;hostname=66.94.XXX.XXX&lt;br /&gt;datadir=/local1/mysql/data&lt;br /&gt;[NDBD]&lt;br /&gt;hostname=66.94.XXX.XXX&lt;br /&gt;datadir=/local1/mysql/data&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[MYSQLD]&lt;br /&gt;[MYSQLD]&lt;br /&gt;[MYSQLD]&lt;br /&gt;[MYSQLD]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;my my.cnf settings&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# -*- sh -*-&lt;br /&gt;# my.cnf&lt;br /&gt;#&lt;br /&gt;[mysqld]&lt;br /&gt;port            = 3306&lt;br /&gt;socket          = /var/lib/mysql/mysql.sock&lt;br /&gt;user            = mysql&lt;br /&gt;skip-locking&lt;br /&gt;default_table_type      =       innodb&lt;br /&gt;server-id               =       12&lt;br /&gt;slave-skip-errors       =       1062&lt;br /&gt;#&lt;br /&gt;# used for myISAM table buffers and temp tables which are myISAM tables&lt;br /&gt;#&lt;br /&gt;key_buffer      =       32M&lt;br /&gt;#&lt;br /&gt;#If any database uses text or blob types raise this on the master&lt;br /&gt;#&lt;br /&gt;max_allowed_packet      =       16M&lt;br /&gt;#&lt;br /&gt;# this is used in part for setting the unlimit and it's only good with myISAM&lt;br /&gt;#&lt;br /&gt;table_cache=256&lt;br /&gt;#&lt;br /&gt;# sort_buffer is used for GROUP BY and ORDER BY. &lt;br /&gt;# It's a thread specfic buffer so it allocates up to the setting max when needed&lt;br /&gt;# Set to 512K if lots of simultaneous connections&lt;br /&gt;sort_buffer_size        =       2M&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# read_buffer_size is used for sequential scan. Nice for limit through the list&lt;br /&gt;#&lt;br /&gt;read_buffer_size        =       1M&lt;br /&gt;&lt;br /&gt;#expected length of queries. The communication buffer &lt;br /&gt;# is reset to this size between queires&lt;br /&gt;net_buffer_length=8K&lt;br /&gt;#&lt;br /&gt;# max_seeks_for_key - tell mysql to prefer indexes over &lt;br /&gt;# table scans when it thinks that a table scan is better&lt;br /&gt;#&lt;br /&gt;max_seeks_for_key       =       100&lt;br /&gt;&lt;br /&gt;myisam_sort_buffer_size=16M&lt;br /&gt;max_connect_errors=999999999&lt;br /&gt;max_connections=400&lt;br /&gt;&lt;br /&gt;thread_cache=30&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# this is the amount of memory used before a tmp_file goes to disk. &lt;br /&gt;# Its also used for internal data structures&lt;br /&gt;#&lt;br /&gt;tmp_table_size  = 64M&lt;br /&gt;&lt;br /&gt;datadir         = /var/lib/mysql&lt;br /&gt;&lt;br /&gt;tmpdir          = /local1/mysql&lt;br /&gt;&lt;br /&gt;interactive_timeout     = 60&lt;br /&gt;wait_timeout            = 60&lt;br /&gt;&lt;br /&gt;## avoid DNS problems&lt;br /&gt;skip-name-resolve&lt;br /&gt;&lt;br /&gt;## Slow Query Log&lt;br /&gt;&lt;br /&gt;long_query_time=3&lt;br /&gt;# cluster-specific settings&lt;br /&gt;ndbcluster&lt;br /&gt;ndb-connectstring=66.94.XXX.XXX:1186&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-113994737550607640?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/113994737550607640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=113994737550607640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/113994737550607640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/113994737550607640'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2006/02/setting-up-configini-file-for-ndb.html' title='Setting up the config.ini file for NDB'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-113942440609943747</id><published>2006-02-08T10:39:00.000-08:00</published><updated>2006-02-27T11:02:44.513-08:00</updated><title type='text'>Setting up NDB - Installing from RPM SRC</title><content type='html'>So, since many of the pre-compiled provided by dev.mysql.com/downloads are not what I'm looking for I decided to make my own  RPM packages.&lt;br /&gt;&lt;br /&gt;Here is my install script&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;!/bin/bash&lt;br /&gt;&lt;br /&gt;export CC=/usr/bin/gcc32&lt;br /&gt;export CXX=/usr/bin/gcc32&lt;br /&gt;export LD_LIBARY_PATH=$LD_LIBARY_PATH:/lib64:/usr/lib64&lt;br /&gt;export CFLAGS="-O3 -static -fomit-frame-pointer -ffixed-ebp"&lt;br /&gt;export CXXFLAGS="-03 -felide-constructors -fno-exceptions -fno-rtti"&lt;br /&gt;&lt;br /&gt;rpmbuild -ba mysql-5.0.18.spec&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This is on a RHAS-4.0 .6.9-22.12.y1-64 #5 SMP Fri Nov 4 13:39:56 PST 2005 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;Using&lt;br /&gt;&lt;br /&gt;libtool-libs-1.5.6-4.EL4.1&lt;br /&gt;libtool-1.5.6-4.EL4.1&lt;br /&gt;autoconf-2.59-5&lt;br /&gt;automake17-1.7.9-5&lt;br /&gt;automake-1.9.2-3&lt;br /&gt;&lt;br /&gt;I also changed some of the spec options as well, I like static builds, dynamic builds do not provide as much performance and are subject to failure when a lib changes.&lt;br /&gt;#&lt;br /&gt;BuildMySQL "--disable-shared %if %{STATIC_BUILD}&lt;br /&gt;               --with-mysqld-ldflags='-all-static'                 --with-client-ldflags='-all-static'                 $USE_OTHER_LIBC_DIR %else&lt;br /&gt;               --with-zlib-dir=bundled %endif&lt;br /&gt;               --with-comment=\"MySQL Community Edition - Flickr\"                 --with-server-suffix='%{server_suffix}'                 --with-archive-storage-engine                 --with-innodb                 --with-big-tables                 --with-ndbcluster                 --with-federated-storage-engine                 --with-big-tables"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;compile time takes about 30 min now the next step is to set NDB up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-113942440609943747?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/113942440609943747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=113942440609943747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/113942440609943747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/113942440609943747'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2006/02/setting-up-ndb-installing-from-rpm-src.html' title='Setting up NDB - Installing from RPM SRC'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-113942170530940864</id><published>2006-02-08T09:53:00.000-08:00</published><updated>2006-02-08T10:02:52.620-08:00</updated><title type='text'>Evaluating MySQL cluster (NDB)</title><content type='html'>Well, I've introduced a new Architecture to Flickr.com, called Federation. Federation is the idea that data is better to manage if it where spread across many servers instead of duplicated from a single master to many slaves. More on this later.&lt;br /&gt;&lt;br /&gt;Now for NDB, mySQL's cluster Database, I'm evaluating it to see if it can provide a HA solution for a component of Federation. Federation in itself is HA, yet how do you know how to get to a particular shard?&lt;br /&gt;&lt;br /&gt;Well there is a global lookup table to tell the requester where to go. This global lookup table needs to be HA, and here is where NDB comes in. NDB is very slow for range type queries so it doesn't make sense to use it for the entire federated arch, but it's reportedly good for primary key lookups, and this fits perfect for our lookup table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;More to come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-113942170530940864?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/113942170530940864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=113942170530940864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/113942170530940864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/113942170530940864'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2006/02/evaluating-mysql-cluster-ndb.html' title='Evaluating MySQL cluster (NDB)'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-113762456490705356</id><published>2006-01-18T14:44:00.000-08:00</published><updated>2006-01-18T14:49:24.920-08:00</updated><title type='text'>Challenge: Come up with an idea to change the internet as we know it today</title><content type='html'>Think of this challenge at a high level, meaning don't create a protocol to transfer data better then TCP/IP.&lt;br /&gt;&lt;br /&gt;Think of an idea to change how grandma and grandpa will use as a staple of their lives.&lt;br /&gt;&lt;br /&gt;Now what is it?&lt;br /&gt;What do you call it?&lt;br /&gt;Why is it so revolutionary?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-113762456490705356?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/113762456490705356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=113762456490705356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/113762456490705356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/113762456490705356'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2006/01/challenge-come-up-with-idea-to-change.html' title='Challenge: Come up with an idea to change the internet as we know it today'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-112784453002864814</id><published>2005-09-27T11:04:00.000-07:00</published><updated>2005-09-27T11:08:50.033-07:00</updated><title type='text'>mySQL + Linux and kswapd</title><content type='html'>A few months ago we were told to turn off swap on our mysql servers. I just didn't feel right doing it, and I complained but I didn't come up with a compelling argument.&lt;br /&gt;Now here it is&lt;br /&gt;&lt;br /&gt;http://jeremy.zawodny.com/blog/archives/000132.html&lt;br /&gt;&lt;br /&gt;Linux VM sucks, even in 2.6 from RHEL 4. It just needs swap.&lt;br /&gt;&lt;br /&gt;SO: put swap on the box and do.&lt;br /&gt;&lt;br /&gt; echo 0 &gt; /proc/sys/vm/swappiness&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-112784453002864814?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/112784453002864814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=112784453002864814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112784453002864814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112784453002864814'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/09/mysql-linux-and-kswapd.html' title='mySQL + Linux and kswapd'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-112683611021621459</id><published>2005-09-15T19:01:00.000-07:00</published><updated>2005-09-15T19:01:50.243-07:00</updated><title type='text'>Flickr Love</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://dathan-mud.flickr.com/photos/allspaw/43623626/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/28/43623626_64420c8049_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://dathan-mud.flickr.com/photos/allspaw/43623626/"&gt;A Picture Share!&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://dathan-mud.flickr.com/people/allspaw/"&gt;jspaw&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;Love from the Flickr Fans&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-112683611021621459?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/112683611021621459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=112683611021621459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112683611021621459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112683611021621459'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/09/flickr-love.html' title='Flickr Love'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-112656900501991273</id><published>2005-09-12T16:37:00.000-07:00</published><updated>2005-09-12T16:50:05.026-07:00</updated><title type='text'>WOW Mage Info</title><content type='html'>Sticky post on Mage Guide&lt;br /&gt;http://forums.worldofwarcraft.com/thread.aspx?fn=wow-mage&amp;t=23&amp;amp;p=1&amp;tmp=1#post23&lt;br /&gt;&lt;br /&gt;Post on AOE&lt;br /&gt;http://forums.worldofwarcraft.com/thread.aspx?FN=wow-mage&amp;amp;T=48467&amp;P=1&lt;br /&gt;&lt;br /&gt;I have a level 45 Mage so I think I am going to go to:&lt;br /&gt;&lt;span class="gray"&gt; woodpaws in Feralas&lt;br /&gt;&lt;br /&gt;But Post 36 Here seems to be the best place for quick XP:&lt;br /&gt;&lt;br /&gt;http://forums.worldofwarcraft.com/thread.aspx?FN=wow-mage&amp;amp;T=48467&amp;amp;P=2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-112656900501991273?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/112656900501991273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=112656900501991273' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112656900501991273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112656900501991273'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/09/wow-mage-info.html' title='WOW Mage Info'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-112621349464074951</id><published>2005-09-08T14:04:00.000-07:00</published><updated>2005-09-08T14:04:54.663-07:00</updated><title type='text'>空 47</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/sandroiovine/15924525/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/10/15924525_165c228af7_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/sandroiovine/15924525/"&gt;空 47&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/sandroiovine/"&gt;サンドロ の写真&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;amsterdam is a tag that is very popular. Using intrestingness I was able to find a striking image.&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-112621349464074951?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/112621349464074951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=112621349464074951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112621349464074951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112621349464074951'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/09/47.html' title='空 47'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-112562194117328994</id><published>2005-09-01T17:45:00.000-07:00</published><updated>2005-09-01T17:45:41.206-07:00</updated><title type='text'>Hurricane Katrina Eye viewed from Hurricane Hunter</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/tingmen/39035501/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/23/39035501_24d4d345a4_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/tingmen/39035501/"&gt;Hurricane Katrina Eye viewed from Hurricane Hunter&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/tingmen/"&gt;敏&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;Hurricane Katrina eye. Human ingenuity in action.&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-112562194117328994?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/112562194117328994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=112562194117328994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112562194117328994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112562194117328994'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/09/hurricane-katrina-eye-viewed-from.html' title='Hurricane Katrina Eye viewed from Hurricane Hunter'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-112560319922142449</id><published>2005-09-01T12:33:00.000-07:00</published><updated>2005-09-01T12:33:19.250-07:00</updated><title type='text'>I have a GOLD STAR!</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/dathan/26182955/" title="photo sharing"&gt;&lt;img src="http://static.flickr.com/22/26182955_d0aa4d4ccb_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/dathan/26182955/"&gt;I have a GOLD STAR!&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/dathan/"&gt;Dathan&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;Yes I work at Yahoo now. I have a Gold Star. I remember that in 1st grade my racist teach who use to hit me, Mrs. Oil, from my new jersey public elem. school said I would never amount to anything and will NEVER get a gold Star! Mrs Oil Up-Yours, Your WRONG Bitch!&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-112560319922142449?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/112560319922142449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=112560319922142449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112560319922142449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112560319922142449'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/09/i-have-gold-star.html' title='I have a GOLD STAR!'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-112508836956922748</id><published>2005-08-26T13:32:00.000-07:00</published><updated>2005-08-26T13:32:49.603-07:00</updated><title type='text'>IMG_1795</title><content type='html'>&lt;div style="float: right; margin-left: 10px; margin-bottom: 10px;"&gt; &lt;a href="http://www.flickr.com/photos/epyonzero/37424613/" title="photo sharing"&gt;&lt;img src="http://photos27.flickr.com/37424613_8d4df2f26d_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;  &lt;a href="http://www.flickr.com/photos/epyonzero/37424613/"&gt;IMG_1795&lt;/a&gt;  &lt;br /&gt;  Originally uploaded by &lt;a href="http://www.flickr.com/people/epyonzero/"&gt;EpyonZero&lt;/a&gt;. &lt;/span&gt;&lt;/div&gt;Look at the detail! This is a great photo&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-112508836956922748?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/112508836956922748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=112508836956922748' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112508836956922748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112508836956922748'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/08/img1795.html' title='IMG_1795'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-112257258503240914</id><published>2005-07-28T10:42:00.000-07:00</published><updated>2005-07-28T10:43:13.220-07:00</updated><title type='text'>More C++ Notes</title><content type='html'>Started to relearn C++ again:&lt;br /&gt;&lt;br /&gt;Here are some things I wish to note:&lt;br /&gt;&lt;br /&gt;using namespace FRN_MAIN&lt;br /&gt;- using software components from the FRN_MAIN libaries&lt;br /&gt;- makes the libaries + functions unique from other libs. Good for libs that have the same method / function names--&gt; so qualifiy the name space.&lt;br /&gt;- Each namespace defines a scope where global ident + global variables are place&lt;br /&gt;&lt;br /&gt;You can also explicitly use the name space in the manor of&lt;br /&gt;namespace _name::member&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;Note on Extern&lt;br /&gt;&lt;br /&gt;extern "C" function prototype&lt;br /&gt;extern "C" function { blocks }&lt;br /&gt;- tell the compiler do not compile the extern in C++ do it at the linker level.&lt;br /&gt;&lt;br /&gt;Polymorphism / Dynamic allocated Objects&lt;br /&gt;virtual&lt;br /&gt;-Destructors&lt;br /&gt;- in an inherited situation calling delete on an object will use the base class destructor use virtual to get around this issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-112257258503240914?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/112257258503240914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=112257258503240914' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112257258503240914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112257258503240914'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/07/more-c-notes.html' title='More C++ Notes'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-112257253329418974</id><published>2005-07-28T10:41:00.000-07:00</published><updated>2005-07-28T10:42:13.296-07:00</updated><title type='text'>Intresting subquery</title><content type='html'>&lt;table id="posts" class="posts"&gt; &lt;tbody&gt;&lt;tr id="snippet-focused" class="snippet"&gt;&lt;td colspan="2"&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;         &lt;p&gt; Intresting query to make a sub select.&lt;br /&gt;&lt;br /&gt;For 4.0.x you'd need a temporary table instead of the subselect:&lt;br /&gt;&lt;br /&gt; CREATE TEMPORARY TABLE tmp AS&lt;br /&gt; SELECT x1.category, x1.itemid, COUNT(x2.category) AS rank&lt;br /&gt; FROM mytbl x1&lt;br /&gt; LEFT JOIN mytbl x2 ON x2.category = x1.category&lt;br /&gt;                   AND x2.itemid = x1.itemid&lt;br /&gt;                   AND x2.timemodified &lt; x1.timemodified&lt;br /&gt; GROUP BY x1.category, x1.itemid;&lt;br /&gt;&lt;br /&gt; SELECT r1.*&lt;br /&gt; FROM mytbl r1&lt;br /&gt; JOIN tmp r2 ON r2.category = r1.category AND r2.itemid = r1.itemid&lt;br /&gt; ORDER BY r1.category, r2.rank DESC, r1.timemodified DESC; &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-112257253329418974?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/112257253329418974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=112257253329418974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112257253329418974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/112257253329418974'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/07/intresting-subquery.html' title='Intresting subquery'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-110816146269432500</id><published>2005-02-11T14:37:00.000-08:00</published><updated>2005-02-14T15:28:04.540-08:00</updated><title type='text'>I'm a super friend</title><content type='html'>super.friendster.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-110816146269432500?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/110816146269432500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=110816146269432500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/110816146269432500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/110816146269432500'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/02/im-super-friend.html' title='I&apos;m a super friend'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-110685756610804744</id><published>2005-01-27T13:18:00.000-08:00</published><updated>2005-02-02T11:07:08.566-08:00</updated><title type='text'>Yea I've been accepted as a speaker for the mySQL Users Conference</title><content type='html'>April 19th Tuesday Afternoon 2005 I will be giving a Presentation at mysql user conf.&lt;br /&gt;&lt;br /&gt;- I'm getting help from the company to kick ass in this presentation!&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-110685756610804744?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/110685756610804744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=110685756610804744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/110685756610804744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/110685756610804744'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/01/yea-ive-been-accepted-as-speaker-for.html' title='Yea I&apos;ve been accepted as a speaker for the mySQL Users Conference'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-110556361048098756</id><published>2005-01-12T13:44:00.000-08:00</published><updated>2005-01-12T13:00:10.480-08:00</updated><title type='text'>How to write an Abstract</title><content type='html'>Quick notes taken from &lt;span style="font-style: italic;"&gt;How to Write an Abstract &lt;/span&gt;by Phil Koopman&lt;br /&gt;&lt;br /&gt;Shouldn't be more then 200 words.&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Get to the point&lt;/li&gt;   &lt;li&gt;State the problem&lt;/li&gt;   &lt;li&gt;Modivation for solving the problem&lt;/li&gt;   &lt;li&gt;Approach (Solution)&lt;/li&gt;   &lt;li&gt;Results&lt;/li&gt;   &lt;li&gt;Conclusion&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;Look at  How to Write an Abstract &lt;a href="http://www.ece.cmu.edu/%7Ekoopman/essays/abstract.html"&gt;here&lt;/a&gt; for the original document.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-110556361048098756?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/110556361048098756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=110556361048098756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/110556361048098756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/110556361048098756'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2005/01/how-to-write-abstract.html' title='How to write an Abstract'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-108811423944634238</id><published>2004-06-23T17:06:00.001-07:00</published><updated>2005-01-12T13:01:33.176-08:00</updated><title type='text'>Relearning C++ and Random Thoughts 2</title><content type='html'>&lt;strong&gt;inline&lt;/strong&gt;&lt;br /&gt;- geared toward performance.&lt;br /&gt;function calls involve execution-time overhead. C++ provies inline functions to help reduce function-call overhead--especially for small functions. The qualifier inline "advises" the compiler to generate a copy of the function's code in place (when appropriate) to avoid a function call.&lt;br /&gt;&lt;br /&gt;--side effect it can increase the program size.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;class ha_example: public handler { }&lt;/strong&gt;&lt;br /&gt;An example of Polymorphisam-the principle of inheritance. Classes are related by inheritance but respond differently to the same message better known as member function calls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-108811423944634238?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/108811423944634238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=108811423944634238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/108811423944634238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/108811423944634238'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2004/06/relearning-c-and-random-thoughts-2.html' title='Relearning C++ and Random Thoughts 2'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7415077.post-108803627563612690</id><published>2004-06-23T17:06:00.000-07:00</published><updated>2005-01-12T13:01:09.676-08:00</updated><title type='text'>Relearning C++ and Random Thoughts</title><content type='html'>As I read some code at work today, code written in C++ I find myself at a bit of a loss. So, what I'm learning I will write down and hopefully I will start coding soon.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;namespace&lt;/strong&gt;&lt;br /&gt;using namespace MAIN&lt;br /&gt;using software components from the MAIN Libaries&lt;br /&gt;- make libiries unique from one another&lt;br /&gt;- if 2 libs have the same methods qualify the namespace&lt;br /&gt;- each namespace defines a scope where a global identifier and global variables are placed.&lt;br /&gt;&lt;br /&gt;fully qualify namespace calls&lt;br /&gt;namespace MAIN::member&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;extern&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;extern "C" function prototype&lt;br /&gt;extern "C" { BLOCK }&lt;br /&gt;- tell the compiler don't do the above in C++ do it at linker time&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;virtual&lt;/strong&gt; - Polymorphism / Dynamic allocaed objects - keywords&lt;br /&gt;-Destructors&lt;br /&gt;in use with destructors in an inherited situation calling delete on an object will use the BASE CLASS destructor. This is not good. Use virtual ~class to get around calling the base class destructor and its own.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;const (PRINCIPLE OF LEAST PRIVILEGES) functions&lt;br /&gt;declaired const by both in its prototype and its definition by inserting the keyword after the functions parameter list.&lt;br /&gt;OBJECT function const { BLOCK }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;Object Pointers&lt;br /&gt;Object *objectPTR, object, objectref;&lt;br /&gt;&lt;br /&gt;objectPTR = &amp;amp;object&lt;br /&gt;(*objectPTR).member == objectPTR-&gt;member. This syntax is needed because the dot operator has higher precense then the above 2 versions of the syntax.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7415077-108803627563612690?l=dathan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dathan.blogspot.com/feeds/108803627563612690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7415077&amp;postID=108803627563612690' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/108803627563612690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7415077/posts/default/108803627563612690'/><link rel='alternate' type='text/html' href='http://dathan.blogspot.com/2004/06/relearning-c-and-random-thoughts.html' title='Relearning C++ and Random Thoughts'/><author><name>Dathan Pattishall</name><uri>https://profiles.google.com/113910139807841637853</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-1obZojJYwaU/AAAAAAAAAAI/AAAAAAAAAD0/a4sMfVpQybQ/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
