mirror of
https://github.com/skoelle/buildbroken-blog-archive.git
synced 2026-09-17 18:30:25 +00:00
1306 lines
173 KiB
HTML
1306 lines
173 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<!-- saved from url=(0073)https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/ -->
|
||
<html xmlns="http://www.w3.org/1999/xhtml" class=" biigxqw idc0_350"><head profile="http://gmpg.org/xfn/11"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><script src="./blog_files/athena.js.Download" type="text/javascript"></script>
|
||
<script type="text/javascript">window.addEventListener('DOMContentLoaded',function(){var v=archive_analytics.values;v.service='wb';v.server_name='wwwb-app215.us.archive.org';v.server_ms=336;archive_analytics.send_pageview({});});</script>
|
||
<script type="text/javascript" src="./blog_files/bundle-playback.js.Download" charset="utf-8"></script>
|
||
<script type="text/javascript" src="./blog_files/wombat.js.Download" charset="utf-8"></script>
|
||
<script>window.RufflePlayer=window.RufflePlayer||{};window.RufflePlayer.config={"autoplay":"on","unmuteOverlay":"hidden"};</script>
|
||
<script type="text/javascript" src="./blog_files/ruffle.js.Download"></script>
|
||
<script type="text/javascript">
|
||
__wm.init("https://web.archive.org/web");
|
||
__wm.wombat("http://blog.aztec-project.org:80/","20111228070830","https://web.archive.org/","web","/_static/",
|
||
"1325056110");
|
||
</script>
|
||
<link rel="stylesheet" type="text/css" href="./blog_files/banner-styles.css">
|
||
<link rel="stylesheet" type="text/css" href="./blog_files/iconochive.css">
|
||
<!-- End Wayback Rewrite JS Include -->
|
||
|
||
|
||
|
||
<title>build broken - but we can fix it! Sometimes :)</title>
|
||
|
||
<meta name="generator" content="WordPress 3.0.4">
|
||
<meta name="theme" content="Mandigo 1.41">
|
||
|
||
<link rel="stylesheet" href="./blog_files/style.css" type="text/css" media="screen">
|
||
<style type="text/css">
|
||
|
||
body {
|
||
font-family: Arial, Sans-Serif;
|
||
background-color: #44484F;
|
||
}
|
||
|
||
a {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.narrowcolumn .entry, .widecolumn .entry {
|
||
line-height: 1.4em;
|
||
}
|
||
|
||
.inline-widgets #wp-calendar caption, .blogname, .blogdesc {
|
||
font-family: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
|
||
}
|
||
|
||
.blogname {
|
||
font-size: 4em;
|
||
margin-top: 15px;
|
||
}
|
||
|
||
.posttitle, #comments, #respond .title, #respond.pre27, #trackbacks {
|
||
font-family: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
|
||
}
|
||
|
||
.commentlist li, #commentform input, #commentform textarea {
|
||
font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
|
||
}
|
||
|
||
#commentform p {
|
||
font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
|
||
}
|
||
|
||
.sidebars {
|
||
font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
|
||
}
|
||
|
||
|
||
#page {
|
||
width: 987px;
|
||
}
|
||
|
||
#header {
|
||
background: url(https://web.archive.org/web/20111228070830im_/http://blog.aztec-project.org/wp-content/themes/mandigo/images/header-1024.png);
|
||
height: 243px;
|
||
width: 987px;
|
||
}
|
||
|
||
#headerimg {
|
||
height: 226px;
|
||
width: 961px;
|
||
background: url(https://web.archive.org/web/20111228070830im_/http://blog.aztec-project.org/wp-content/themes/mandigo/schemes/orange/images/head-1024.jpg) bottom center no-repeat;
|
||
}
|
||
|
||
#main {
|
||
background: url(https://web.archive.org/web/20111228070830im_/http://blog.aztec-project.org/wp-content/themes/mandigo/images/bg-1024.png);
|
||
width: 957px;
|
||
}
|
||
|
||
#footer {
|
||
background: url(https://web.archive.org/web/20111228070830im_/http://blog.aztec-project.org/wp-content/themes/mandigo/images/foot-1024.png);
|
||
}
|
||
|
||
.post {
|
||
text-align: justify;
|
||
background: #FAFAFA;
|
||
border: 1px solid #EEEEEE;
|
||
}
|
||
|
||
|
||
#footer {
|
||
width: 987px;
|
||
}
|
||
|
||
|
||
.sidebars {
|
||
background: #EEEEEE;
|
||
border: 1px solid #DDDDDD;
|
||
}
|
||
|
||
#sidebar1 .sidebars {
|
||
width: 210px;
|
||
}
|
||
|
||
#sidebar2 .sidebars {
|
||
width: 210px;
|
||
}
|
||
|
||
|
||
.entry img {
|
||
float: none;
|
||
}
|
||
|
||
.sidebars li {
|
||
list-style-image: url(https://web.archive.org/web/20111228070830im_/http://blog.aztec-project.org/wp-content/themes/mandigo/schemes/orange/images/star.gif);
|
||
}
|
||
|
||
.commentlist {
|
||
}
|
||
|
||
.commentlist li {
|
||
list-style: none;
|
||
}
|
||
|
||
#wp-calendar {
|
||
margin: 0 !important; margin-top: -1.5em;
|
||
}
|
||
|
||
#wp-calendar caption {
|
||
margin-top: -1.4em;
|
||
}
|
||
|
||
/* dirty fix for the event calendar plugin */
|
||
div#wp-calendar .nav {
|
||
margin: 0;
|
||
}
|
||
/* end dirty fix */
|
||
|
||
.datestamp div {
|
||
font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, Sans-Serif;
|
||
}
|
||
|
||
.cal3 {
|
||
}
|
||
|
||
.pages {
|
||
text-align: right;
|
||
}
|
||
|
||
.pages ul li.has_sub {
|
||
background: url(https://web.archive.org/web/20111228070830im_/http://blog.aztec-project.org/wp-content/themes/mandigo/images/icons/bullet_arrow_right.png) no-repeat center right;
|
||
}
|
||
|
||
.head_overlay {
|
||
background: url(https://web.archive.org/web/20111228070830im_/http://blog.aztec-project.org/wp-content/themes/mandigo/images/head_overlay.png);
|
||
}
|
||
|
||
|
||
|
||
|
||
</style>
|
||
<link rel="stylesheet" href="./blog_files/scheme.css" type="text/css" media="screen">
|
||
<link rel="alternate" type="application/rss+xml" title="build broken RSS Feed" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/feed/">
|
||
<link rel="pingback" href="https://blog.aztec-project.org/xmlrpc.php">
|
||
|
||
<link rel="stylesheet" id="A2A_SHARE_SAVE-css" href="./blog_files/addtoany.min.css" type="text/css" media="all">
|
||
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://blog.aztec-project.org/xmlrpc.php?rsd">
|
||
<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://blog.aztec-project.org/wp-includes/wlwmanifest.xml">
|
||
<link rel="index" title="build broken" href="https://blog.aztec-project.org/">
|
||
<meta property="og:site_name" content="build broken"><meta property="og:url" content="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/"><meta property="og:type" content="blog"><!--[if IE]>
|
||
<style type="text/css">
|
||
.addtoany_list a img{filter:alpha(opacity=70)}
|
||
.addtoany_list a:hover img,.addtoany_list a.addtoany_share_save img{filter:alpha(opacity=100)}
|
||
</style>
|
||
<![endif]-->
|
||
|
||
<script type="text/javascript" src="./blog_files/jquery.js.Download"></script>
|
||
<script type="text/javascript" src="./blog_files/jquery.ifixpng.js.Download"></script>
|
||
<script type="text/javascript">jQuery.noConflict();</script>
|
||
|
||
<style type="text/css">
|
||
.entry img, .entry embed, .entry object { max-width: 658px; width: expression(this.clientWidth > 658 ? 658 : true); }
|
||
.entry img { height: auto; }</style>
|
||
|
||
<meta property="fb:admins" content="1109299946">
|
||
<meta property="fb:app_id" content="134622216554391"><script charset="UTF-8" src="./blog_files/de.js.Download"></script><style type="text/css">.a2a_menu, .a2a_menu *{float:none;margin:0;padding:0;height:auto;width:auto;}.a2a_menu{width: 300px;}.a2a_menu table{border-collapse:collapse;border-spacing:0;width:auto}.a2a_menu table,.a2a_menu tbody,.a2a_menu td,.a2a_menu tr{border:0;margin:0;padding:0;background-color:#FAFAFA} .a2a_menu td{vertical-align:top}.a2a_menu,.a2a_menu_inside{border-radius:16px;-webkit-border-radius:16px;-moz-border-radius:16px}.a2a_menu{display:none;z-index:9999999;position:absolute;direction:ltr;min-width:200px;background:#FAFAFA;background:rgba(250,250,250,.6);font:12px Arial,Helvetica,sans-serif;color:#000;line-height:12px;border:1px solid transparent;_border:1px solid #FAFAFA;padding:7px;vertical-align:baseline;overflow:hidden}.a2a_menu_inside{background-color:#FAFAFA;border: 1px solid #AECADB;padding:8px}.a2a_menu a span, .a2a_tabs .a2a_tab_selected span{color:#FF9B2A}.a2a_menu a:hover span, .a2a_tabs div span, .a2a_tabs a span{color:#FF9B2A}.a2a_menu a,#a2a_hist_list a,.a2a_tabs div{color:#FF9B2A;text-decoration:none;font:12px Arial,Helvetica,sans-serif;line-height:12px;height:auto;width:auto;outline:none;-moz-outline:none;border-radius:8px;-webkit-border-radius:8px;-moz-border-radius:8px}.a2a_menu a:visited,#a2a_hist_list a:visited{color:#FF9B2A}.a2a_menu a:hover,.a2a_menu a:active,.a2a_menu a.a2a_i:focus,.a2a_tabs div:hover{color:#FF9B2A;border:1px solid #AECADB;background-color:#FAFAFA;text-decoration:none}.a2a_menu span,.a2a_img{background:url(https://web.archive.org/web/20111228073144/http://static.addtoany.com/menu/icons_20.png) no-repeat;border:0;display:block;line-height:16px}.a2a_menu span.a2a_i_find{height:16px;left:5px;position:absolute;top:2px;width:16px}#a2a_menu_container{display:inline-block} #a2a_menu_container{_display:inline} .a2a_menu_title_container{margin-bottom:2px;padding:6px}.a2a_menu_find_container{position:relative;text-align:left;margin:4px 1px;padding:1px 24px 1px 0;border:1px solid #FF9B2A;border-radius:8px;-webkit-border-radius:8px;-moz-border-radius:8px}.a2a_cols_container{border-bottom-right-radius:8px;border-top-right-radius:8px}.a2a_cols_container .a2a_col1{overflow-x:hidden;overflow-y:auto;}.a2a_menu input, .a2a_menu input[type="text"]{display:block;background-image:none;box-shadow:none;line-height:100%;margin:0;overflow:hidden;padding:0;-moz-box-shadow:none;-webkit-box-shadow:none;-webkit-appearance:none} .a2a_menu_title_container input.a2a_menu_title{color:#FF9B2A;background-color:#FAFAFA;border:0;margin:0;padding:0;width:99%}.a2a_menu_find_container input.a2a_menu_find{position:relative;left:24px;color:#FF9B2A;font-size:12px;padding:2px 0;outline:0;border:0;background-color:transparent;_background-color:#FAFAFA;width:99%} .a2a_clear{clear:both} .a2a_default_style a{float:left;line-height:16px;padding:0 2px}.a2a_default_style .a2a_img{display:block;height:16px;line-height:16px;overflow:hidden;width:16px}.a2a_default_style .a2a_img, .a2a_default_style .a2a_dd{float:left}.a2a_default_style .a2a_img_text{margin-right:4px}.a2a_default_style .a2a_divider{border-left:1px solid #000;display:inline;float:left;height:16px;line-height:16px;margin:0 5px}.a2a_kit a{cursor:pointer}.a2a_nowrap{white-space:nowrap}.a2a_note{margin:0 auto;padding:9px;font-size:11px;text-align:center}.a2a_note .a2a_note_note{margin:0;color:#FF9B2A}.a2a_wide a{display:block;margin-top:3px;border:1px solid #FAFAFA;padding:3px;text-align:center}.a2a_tabs{float:left;margin:0 0 3px} .a2a_tabs a,.a2a_tabs div{margin:1px;background-color:#FAFAFA;border:1px solid #FAFAFA;font-size:11px;padding:6px 12px;white-space:nowrap} .a2a_tabs a span, .a2a_tabs div span{display:inline-block;height:16px;width:16px} .a2a_tabs_default a span, .a2a_tabs_default div span{height:auto;max-width:99px;overflow:hidden;padding-left:20px;width:auto;_width:expression(this.clientWidth > 99? "97px" : "auto");}.a2a_tabs a, .a2a_tabs a:visited, .a2a_tabs a:hover, .a2a_tabs div, .a2a_tabs div:hover{cursor:pointer;border-bottom:1px solid #FAFAFA;color:#FF9B2A;border-bottom-left-radius:0;-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomleft:0;border-bottom-right-radius:0;-webkit-border-bottom-right-radius:0;-moz-border-radius-bottomright:0}a.a2a_tab_selected, a.a2a_tab_selected:visited,a.a2a_tab_selected:hover,a.a2a_tab_selected:active,a.a2a_tab_selected:focus, div.a2a_tab_selected,div.a2a_tab_selected:hover{color:#FF9B2A;background-color:#FAFAFA;border:1px solid #AECADB;border-bottom:1px solid #FAFAFA}a.a2a_i{display:block;float:left;border:1px solid #FAFAFA;padding:4px 6px;text-align:left;white-space:nowrap;width:126px;}a.a2a_i span{padding-left:20px}.a2a_x_shorten a.a2a_i{width:116px}a.a2a_sss{font-weight:700}a.a2a_ind{display:inline;margin:0;padding:0} a.a2a_email_client span{display:inline-block;height:16px;line-height:16px;margin:0 2px;padding-left:0;width:16px;}a.a2a_menu_show_more_less{margin:4px 0 8px;padding:0}a.a2a_menu_show_more_less span{display:inline-block;height:14px;margin:0 auto;vertical-align:baseline;width:16px} div.a2a_menu_powered_by{background-color:#FAFAFA;font-size:9px;color:#FF9B2A;text-align:center;margin-top:4px;padding:3px;border-radius:8px;-webkit-border-radius:8px;-moz-border-radius:8px}div.a2a_menu_powered_by a,div.a2a_menu_powered_by a:visited{display:inline;font-size:9px;color:#FF9B2A}div.a2a_menu_powered_by a:hover{border:0;text-decoration:underline}iframe.a2a_shim{border:0;position:absolute;z-index:999999;}.a2a_dd img{border:0;}.a2a_i_a2a{background-position:0 0!important}.a2a_i_agregator{background-position:0 -17px!important}.a2a_i_aiderss{background-position:0 -34px!important}.a2a_i_aim{background-position:0 -51px!important}.a2a_i_allvoices{background-position:0 -68px!important}.a2a_i_amazon{background-position:0 -85px!important}.a2a_i_aol{background-position:0 -102px!important}.a2a_i_apple_mail{background-position:0 -119px!important}.a2a_i_arto{background-position:0 -136px!important}.a2a_i_ask{background-position:0 -153px!important}.a2a_i_backflip{background-position:0 -170px!important}.a2a_i_bebo{background-position:0 -187px!important}.a2a_i_bibsonomy{background-position:0 -204px!important}.a2a_i_bitty{background-position:0 -221px!important}.a2a_i_blinklist{background-position:0 -238px!important}.a2a_i_blogger{background-position:0 -255px!important}.a2a_i_bloglines{background-position:0 -272px!important}.a2a_i_blogmarks{background-position:0 -289px!important}.a2a_i_bookmark{background-position:0 -306px!important}.a2a_i_bookmarks_fr{background-position:0 -323px!important}.a2a_i_box{background-position:0 -340px!important}.a2a_i_buddymarks{background-position:0 -357px!important}.a2a_i_business_exchange{background-position:0 -374px!important}.a2a_i_buzz{background-position:0 -391px!important}.a2a_i_care2{background-position:0 -408px!important}.a2a_i_chrome{background-position:0 -425px!important}.a2a_i_citeulike{background-position:0 -442px!important}.a2a_i_clear{background-position:0 -459px!important}.a2a_i_connotea{background-position:0 -476px!important}.a2a_i_current{background-position:0 -493px!important}.a2a_i_dailyme{background-position:0 -510px!important}.a2a_i_dailyrotation{background-position:0 -527px!important}.a2a_i_darr{background-position:0 -544px!important}.a2a_i_darr_wt{background-position:0 -561px!important}.a2a_i_default{background-position:0 -578px!important}.a2a_i_delicious{background-position:0 -595px!important}.a2a_i_designfloat{background-position:0 -612px!important}.a2a_i_digg{background-position:0 -629px!important}.a2a_i_diglog{background-position:0 -646px!important}.a2a_i_diigo{background-position:0 -663px!important}.a2a_i_dzone{background-position:0 -680px!important}.a2a_i_email{background-position:0 -697px!important}.a2a_i_evernote{background-position:0 -714px!important}.a2a_i_expression{background-position:0 -731px!important}.a2a_i_facebook{background-position:0 -748px!important}.a2a_i_fark{background-position:0 -765px!important}.a2a_i_faves{background-position:0 -782px!important}.a2a_i_feed{background-position:0 -799px!important}.a2a_i_feedblitz{background-position:0 -816px!important}.a2a_i_feedbucket{background-position:0 -833px!important}.a2a_i_feedmailer{background-position:0 -850px!important}.a2a_i_feedshow{background-position:0 -867px!important}.a2a_i_find{background-position:0 -884px!important}.a2a_i_fireant{background-position:0 -901px!important}.a2a_i_firefox{background-position:0 -918px!important}.a2a_i_folkd{background-position:0 -935px!important}.a2a_i_formspring{background-position:0 -952px!important}.a2a_i_friendfeed{background-position:0 -969px!important}.a2a_i_funp{background-position:0 -986px!important}.a2a_i_furl{background-position:0 -1003px!important}.a2a_i_fwicki{background-position:0 -1019px!important}.a2a_i_gabbr{background-position:0 -1036px!important}.a2a_i_global_grind{background-position:0 -1053px!important}.a2a_i_gmail{background-position:0 -1070px!important}.a2a_i_google{background-position:0 -1087px!important}.a2a_i_google_buzz{background-position:0 -1104px!important}.a2a_i_healthranker{background-position:0 -1121px!important}.a2a_i_hellotxt{background-position:0 -1138px!important}.a2a_i_hemidemi{background-position:0 -1155px!important}.a2a_i_hubdog{background-position:0 -1172px!important}.a2a_i_hugg{background-position:0 -1189px!important}.a2a_i_hyves{background-position:0 -1206px!important}.a2a_i_identica{background-position:0 -1223px!important}.a2a_i_imera{background-position:0 -1240px!important}.a2a_i_instapaper{background-position:0 -1257px!important}.a2a_i_itunes{background-position:0 -1274px!important}.a2a_i_jamespot{background-position:0 -1291px!important}.a2a_i_jots{background-position:0 -1308px!important}.a2a_i_jumptags{background-position:0 -1325px!important}.a2a_i_khabbr{background-position:0 -1342px!important}.a2a_i_kledy{background-position:0 -1359px!important}.a2a_i_klipfolio{background-position:0 -1376px!important}.a2a_i_linkagogo{background-position:0 -1393px!important}.a2a_i_linkatopia{background-position:0 -1410px!important}.a2a_i_linkedin{background-position:0 -1427px!important}.a2a_i_live{background-position:0 -1444px!important}.a2a_i_livejournal{background-position:0 -1461px!important}.a2a_i_lockerz{background-position:0 -1478px!important}.a2a_i_ma_gnolia{background-position:0 -1495px!important}.a2a_i_maple{background-position:0 -1512px!important}.a2a_i_meneame{background-position:0 -1529px!important}.a2a_i_messenger{background-position:0 -1546px!important}.a2a_i_mindbodygreen{background-position:0 -1563px!important}.a2a_i_miro{background-position:0 -1580px!important}.a2a_i_mister-wong{background-position:0 -1597px!important}.a2a_i_mixx{background-position:0 -1614px!important}.a2a_i_mobile{background-position:0 -1631px!important}.a2a_i_mozillaca{background-position:0 -1648px!important}.a2a_i_msdn{background-position:0 -1665px!important}.a2a_i_multiply{background-position:0 -1682px!important}.a2a_i_my_msn{background-position:0 -1699px!important}.a2a_i_mylinkvault{background-position:0 -1716px!important}.a2a_i_myspace{background-position:0 -1733px!important}.a2a_i_netimechannel{background-position:0 -1750px!important}.a2a_i_netlog{background-position:0 -1767px!important}.a2a_i_netvibes{background-position:0 -1784px!important}.a2a_i_netvouz{background-position:0 -1801px!important}.a2a_i_newsalloy{background-position:0 -1818px!important}.a2a_i_newscabby{background-position:0 -1835px!important}.a2a_i_newsgator{background-position:0 -1852px!important}.a2a_i_newshutch{background-position:0 -1869px!important}.a2a_i_newsisfree{background-position:0 -1886px!important}.a2a_i_newstrust{background-position:0 -1903px!important}.a2a_i_newsvine{background-position:0 -1920px!important}.a2a_i_nowpublic{background-position:0 -1937px!important}.a2a_i_oneview{background-position:0 -1954px!important}.a2a_i_openbm{background-position:0 -1971px!important}.a2a_i_orkut{background-position:0 -1988px!important}.a2a_i_outlook{background-position:0 -2005px!important}.a2a_i_pageflakes{background-position:0 -2022px!important}.a2a_i_pdf{background-position:0 -2039px!important}.a2a_i_phonefavs{background-position:0 -2056px!important}.a2a_i_ping{background-position:0 -2073px!important}.a2a_i_plaxo{background-position:0 -2090px!important}.a2a_i_plurk{background-position:0 -2107px!important}.a2a_i_podnova{background-position:0 -2124px!important}.a2a_i_posterous{background-position:0 -2141px!important}.a2a_i_print{background-position:0 -2158px!important}.a2a_i_printfriendly{background-position:0 -2175px!important}.a2a_i_protopage{background-position:0 -2192px!important}.a2a_i_pusha{background-position:0 -2209px!important}.a2a_i_rapidfeeds{background-position:0 -2226px!important}.a2a_i_read_it_later{background-position:0 -2243px!important}.a2a_i_reader{background-position:0 -2260px!important}.a2a_i_reddit{background-position:0 -2277px!important}.a2a_i_rediff{background-position:0 -2294px!important}.a2a_i_rssfwd{background-position:0 -2311px!important}.a2a_i_segnalo{background-position:0 -2328px!important}.a2a_i_share{background-position:0 -2345px!important}.a2a_i_shoutwire{background-position:0 -2362px!important}.a2a_i_simpy{background-position:0 -2379px!important}.a2a_i_sina_weibo{background-position:0 -2396px!important}.a2a_i_sitejot{background-position:0 -2413px!important}.a2a_i_skimbit{background-position:0 -2430px!important}.a2a_i_slashdot{background-position:0 -2447px!important}.a2a_i_smaknews{background-position:0 -2464px!important}.a2a_i_sodahead{background-position:0 -2481px!important}.a2a_i_sofomo{background-position:0 -2498px!important}.a2a_i_spaces{background-position:0 -2515px!important}.a2a_i_sphere{background-position:0 -2532px!important}.a2a_i_sphinn{background-position:0 -2548px!important}.a2a_i_spurl{background-position:0 -2565px!important}.a2a_i_squidoo{background-position:0 -2582px!important}.a2a_i_startaid{background-position:0 -2599px!important}.a2a_i_strands{background-position:0 -2616px!important}.a2a_i_stumbleupon{background-position:0 -2633px!important}.a2a_i_stumpedia{background-position:0 -2650px!important}.a2a_i_symbaloo{background-position:0 -2667px!important}.a2a_i_taggly{background-position:0 -2684px!important}.a2a_i_tagza{background-position:0 -2701px!important}.a2a_i_tailrank{background-position:0 -2718px!important}.a2a_i_technet{background-position:0 -2735px!important}.a2a_i_technorati{background-position:0 -2752px!important}.a2a_i_technotizie{background-position:0 -2769px!important}.a2a_i_thefreedictionary{background-position:0 -2786px!important}.a2a_i_thefreelibrary{background-position:0 -2803px!important}.a2a_i_thunderbird{background-position:0 -2820px!important}.a2a_i_tipd{background-position:0 -2837px!important}.a2a_i_toolbar_google{background-position:0 -2854px!important}.a2a_i_tuenti{background-position:0 -2871px!important}.a2a_i_tumblr{background-position:0 -2888px!important}.a2a_i_twiddla{background-position:0 -2905px!important}.a2a_i_twine{background-position:0 -2922px!important}.a2a_i_twitter{background-position:0 -2939px!important}.a2a_i_txtvox{background-position:0 -2956px!important}.a2a_i_typepad{background-position:0 -2973px!important}.a2a_i_uarr{background-position:0 -2990px!important}.a2a_i_uarr_wt{background-position:0 -3007px!important}.a2a_i_unalog{background-position:0 -3024px!important}.a2a_i_viadeo{background-position:0 -3041px!important}.a2a_i_vk{background-position:0 -3058px!important}.a2a_i_vodpod{background-position:0 -3075px!important}.a2a_i_webnews{background-position:0 -3092px!important}.a2a_i_webwag{background-position:0 -3110px!important}.a2a_i_wikio{background-position:0 -3127px!important}.a2a_i_windows_mail{background-position:0 -3144px!important}.a2a_i_wink{background-position:0 -3161px!important}.a2a_i_winksite{background-position:0 -3178px!important}.a2a_i_wists{background-position:0 -3195px!important}.a2a_i_wordpress{background-position:0 -3212px!important}.a2a_i_xerpi{background-position:0 -3229px!important}.a2a_i_xianguo{background-position:0 -3246px!important}.a2a_i_xing{background-position:0 -3263px!important}.a2a_i_yahoo{background-position:0 -3280px!important}.a2a_i_yample{background-position:0 -3297px!important}.a2a_i_yigg{background-position:0 -3314px!important}.a2a_i_yim{background-position:0 -3331px!important}.a2a_i_yoolink{background-position:0 -3348px!important}.a2a_i_youmob{background-position:0 -3365px!important}.a2a_i_zhuaxia{background-position:0 -3382px!important}.a2a_i_zune{background-position:0 -3399px!important}</style></head>
|
||
|
||
<body><iframe id="a2apage_sm_ifr" height="1" width="1" transparency="true" allowtransparency="true" frameborder="0" src="./blog_files/sm7.html" style="border: 0px; left: 0px; top: 0px; position: absolute; z-index: 100000;" allow="autoplay 'self'; fullscreen 'self'" data-ruffle-polyfilled=""></iframe><div style="position: static;"><div id="a2apage_dropdown" class="a2a_menu" onmouseover="a2a.onMouseOver_stay()" onmouseout="a2a.onMouseOut_delay()"><div class="a2a_menu_inside"><div id="a2apage_title_container" class="a2a_menu_title_container" style="display:none"><input id="a2apage_title" class="a2a_menu_title"></div><div class="a2apage_wide a2a_wide"><div class="a2a_tabs a2a_tabs_default"><div id="a2apage_DEFAULT" class="a2a_tab_selected" style="margin-right:1px" onclick="return a2a.tabs.open('DEFAULT')"><span class="a2a_i_share">Empfehlen</span></div></div><div class="a2a_tabs"><div title="per E-Mail empfehlen" id="a2apage_EMAIL" style="margin-right:1px" onclick="return a2a.tabs.open('EMAIL')"><span class="a2a_i_email"></span></div></div><div class="a2a_tabs"><div onclick="a2a.bmBrowser()" title="Seite den Bookmarks hinzufügen" id="a2apage_BROWSER" style="margin-left:1px"><span class="a2a_i_bookmark"></span></div></div></div><div class="a2a_clear"></div><div id="a2apage_find_container" class="a2a_menu_find_container"><input id="a2apage_find" class="a2a_menu_find" type="text" onclick="a2a.focus_find()" onkeyup="a2a.do_find()" autocomplete="off" onfocus="a2a['page'].find_focused=true;a2a.onMouseOver_stay()" title="Um weitere Dienste ergänzen"><span id="a2apage_find_icon" class="a2a_i_find" onclick="a2a.focus_find()"></span></div><div id="a2apage_cols_container" class="a2a_cols_container"><div class="a2a_col1" id="a2apage_col1"><a id="a2apage_facebook" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_facebook">Facebook</span></a><a id="a2apage_twitter" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_twitter">Twitter</span></a><a id="a2apage_google_plus" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_google">Google+</span></a><a id="a2apage_delicious" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_delicious">Delicious</span></a><a id="a2apage_digg" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_digg">Digg</span></a><a id="a2apage_google_bookmarks" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_google">Google Bookmarks</span></a><a id="a2apage_myspace" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_myspace">MySpace</span></a><a id="a2apage_stumbleupon" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_stumbleupon">StumbleUpon</span></a><a id="a2apage_reddit" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_reddit">Reddit</span></a><a id="a2apage_live" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_live">Messenger</span></a><a id="a2apage_vodpod" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_vodpod">Vodpod</span></a><a id="a2apage_yahoo_bookmarks" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_yahoo">Yahoo Bookmarks</span></a><a id="a2apage_bebo" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_bebo">Bebo</span></a><a id="a2apage_mister_wong" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_mister-wong">Mister-Wong</span></a><a id="a2apage_wordpress" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_wordpress">WordPress</span></a><a id="a2apage_google_reader" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_reader">Google Reader</span></a><a id="a2apage_orkut" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_orkut">Orkut</span></a><a id="a2apage_xing" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_xing">XING</span></a><a id="a2apage_evernote" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_evernote">Evernote</span></a><a id="a2apage_netvibes_share" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_netvibes">Netvibes Share</span></a><a id="a2apage_strands" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_strands">Strands</span></a><a id="a2apage_posterous" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_posterous">Posterous</span></a><a id="a2apage_business_exchange" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_business_exchange">Business Exchange</span></a><a id="a2apage_arto" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_arto">Arto</span></a><a id="a2apage_tipd" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_tipd">Tipd</span></a><a id="a2apage_smaknews" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_smaknews">SmakNews</span></a><a id="a2apage_plurk" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_plurk">Plurk</span></a><a id="a2apage_aim" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_aim">AIM</span></a><a id="a2apage_yahoo_messenger" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_yim">Yahoo Messenger</span></a><a id="a2apage_identi_ca" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_identica">Identi.ca</span></a><a id="a2apage_mozillaca" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_mozillaca">Mozillaca</span></a><a id="a2apage_blogger_post" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_blogger">Blogger Post</span></a><a id="a2apage_typepad_post" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_typepad">TypePad Post</span></a><a id="a2apage_box_net" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_box">Box.net</span></a><a id="a2apage_netlog" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_netlog">Netlog</span></a><a id="a2apage_technorati_favorites" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_technorati">Technorati Favorites</span></a><a id="a2apage_citeulike" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_citeulike">CiteULike</span></a><a id="a2apage_jumptags" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_jumptags">Jumptags</span></a><a id="a2apage_hemidemi" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_hemidemi">Hemidemi</span></a><a id="a2apage_funp" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_funp">FunP</span></a><a id="a2apage_instapaper" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_instapaper">Instapaper</span></a><a id="a2apage_phonefavs" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_phonefavs">PhoneFavs</span></a><a id="a2apage_xerpi" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_xerpi">Xerpi</span></a><a id="a2apage_netvouz" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_netvouz">Netvouz</span></a><a id="a2apage_wink" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_wink">Wink</span></a><a id="a2apage_diigo" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_diigo">Diigo</span></a><a id="a2apage_bibsonomy" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_bibsonomy">BibSonomy</span></a><a id="a2apage_blogmarks" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_blogmarks">BlogMarks</span></a><a id="a2apage_tailrank" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_tailrank">Tailrank</span></a><a id="a2apage_startaid" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_startaid">StartAid</span></a><a id="a2apage_kledy" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_kledy">Kledy</span></a><a id="a2apage_khabbr" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_khabbr">Khabbr</span></a><a id="a2apage_meneame" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_meneame">Meneame</span></a><a id="a2apage_yoolink" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_yoolink">Yoolink</span></a><a id="a2apage_bookmarks_fr" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_bookmarks_fr">Bookmarks.fr</span></a><a id="a2apage_technotizie" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_technotizie">Technotizie</span></a><a id="a2apage_newsvine" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_newsvine">NewsVine</span></a><a id="a2apage_multiply" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_multiply">Multiply</span></a><a id="a2apage_friendfeed" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_friendfeed">FriendFeed</span></a><a id="a2apage_plaxo_pulse" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_plaxo">Plaxo Pulse</span></a><a id="a2apage_ping" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_ping">Ping</span></a><a id="a2apage_squidoo" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_squidoo">Squidoo</span></a><a id="a2apage_protopage_bookmarks" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_protopage">Protopage Bookmarks</span></a><a id="a2apage_blinklist" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_blinklist">Blinklist</span></a><a id="a2apage_faves" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_faves">Faves</span></a><a id="a2apage_yigg" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_yigg">YiGG</span></a><a id="a2apage_webnews" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_webnews">Webnews</span></a><a id="a2apage_segnalo" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_segnalo">Segnalo</span></a><a id="a2apage_pusha" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_pusha">Pusha</span></a><a id="a2apage_youmob" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_youmob">YouMob</span></a><a id="a2apage_slashdot" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_slashdot">Slashdot</span></a><a id="a2apage_fark" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_fark">Fark</span></a><a id="a2apage_allvoices" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_allvoices">Allvoices</span></a><a id="a2apage_jamespot" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_jamespot">Jamespot</span></a><a id="a2apage_imera_brazil" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_imera">Imera Brazil</span></a><a id="a2apage_twiddla" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_twiddla">Twiddla</span></a><a id="a2apage_linkagogo" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_linkagogo">LinkaGoGo</span></a><a id="a2apage_unalog" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_unalog">unalog</span></a><a id="a2apage_hugg" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_hugg">Hugg</span></a><a id="a2apage_diglog" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_diglog">Diglog</span></a><a id="a2apage_nowpublic" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_nowpublic">NowPublic</span></a><a id="a2apage_tumblr" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_tumblr">Tumblr</span></a><a id="a2apage_livejournal" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_livejournal">LiveJournal</span></a><a id="a2apage_current" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_current">Current</span></a><a id="a2apage_hellotxt" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_hellotxt">HelloTxt</span></a><a id="a2apage_spurl" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_spurl">Spurl</span></a><a id="a2apage_yample" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_yample">Yample</span></a><a id="a2apage_oneview" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_oneview">Oneview</span></a><a id="a2apage_linkatopia" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_linkatopia">Linkatopia</span></a><a id="a2apage_simpy" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_simpy">Simpy</span></a><a id="a2apage_linkedin" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_linkedin">LinkedIn</span></a><a id="a2apage_buddymarks" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_buddymarks">BuddyMarks</span></a><a id="a2apage_ask_com_mystuff" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_ask">Ask.com MyStuff</span></a><a id="a2apage_viadeo" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_viadeo">Viadeo</span></a><a id="a2apage_maple" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_maple">Maple</span></a><a id="a2apage_wists" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_wists">Wists</span></a><a id="a2apage_connotea" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_connotea">Connotea</span></a><a id="a2apage_backflip" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_backflip">Backflip</span></a><a id="a2apage_mylinkvault" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_mylinkvault">MyLinkVault</span></a><a id="a2apage_sitejot" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_sitejot">SiteJot</span></a><a id="a2apage_sphinn" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_sphinn">Sphinn</span></a><a id="a2apage_dzone" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_dzone">DZone</span></a><a id="a2apage_care2_news" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_care2">Care2 News</span></a><a id="a2apage_hyves" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_hyves">Hyves</span></a><a id="a2apage_sphere" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_sphere">Sphere</span></a><a id="a2apage_bitty_browser" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_bitty">Bitty Browser</span></a><a id="a2apage_gabbr" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_gabbr">Gabbr</span></a><a id="a2apage_symbaloo_feeds" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_symbaloo">Symbaloo Feeds</span></a><a id="a2apage_tagza" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_tagza">Tagza</span></a><a id="a2apage_folkd" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_folkd">Folkd</span></a><a id="a2apage_newstrust" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_newstrust">NewsTrust</span></a><a id="a2apage_amazon_wish_list" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_amazon">Amazon Wish List</span></a><a id="a2apage_printfriendly" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_printfriendly">PrintFriendly</span></a><a id="a2apage_read_it_later" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_read_it_later">Read It Later</span></a><a id="a2apage_tuenti" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_tuenti">Tuenti</span></a><a id="a2apage_email" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_email">Email</span></a><a id="a2apage_rediff" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank" style="display: none;"><span class="a2a_i_rediff">Rediff MyPage</span></a></div><div id="a2apage_2_col1" style="display:none"><a id="a2apage_google_gmail" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_gmail">Google Gmail</span></a><a id="a2apage_yahoo_mail" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_yahoo">Yahoo Mail</span></a><a id="a2apage_hotmail" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_live">Hotmail</span></a><a id="a2apage_aol_mail" rel="nofollow" class="a2a_i" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_aol">AOL Mail</span></a><a id="a2apage_any_email" rel="nofollow" class="a2a_i a2a_emailer" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target="_blank"><span class="a2a_i_email">Any email</span></a><a id="a2apage_email_client" rel="nofollow" class="a2a_i a2a_emailer a2a_email_client" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/" target=""><span class="a2a_i_outlook"> </span><span class="a2a_i_windows_mail"> </span><span class="a2a_i_apple_mail"> </span><span class="a2a_i_thunderbird"> </span></a></div><div class="a2a_clear"></div></div><div id="a2apage_note_BROWSER" class="a2a_note" style="display:none"></div><div class="a2apage_wide a2a_wide"><a href="javascript:void(0)" id="a2apage_show_more_less" class="a2a_menu_show_more_less" onclick="return a2a.show_more_less(0)" onmouseover="img=this.firstChild;if(a2a.c.color_arrow_hover=='fff'){if(img.className.indexOf('_wt')==-1)img.className+='_wt'}else img.className=img.className.replace(/_wt/,'')" onmouseout="img=this.firstChild;if(a2a.c.color_arrow=='fff'){if(img.className.indexOf('_wt')==-1)img.className+='_wt'}else img.className=img.className.replace(/_wt/,'')" title="zeige alle"><span class="a2a_i_darr"></span></a></div><div class="a2a_menu_powered_by" id="a2apage_powered_by" onmouseover="if(this.innerHTML!=this.orig&&!window.opera)this.innerHTML=this.orig;this.style.textAlign='center'">By <a href="https://web.archive.org/web/20111228073144/http://share.lockerz.com/" target="_blank" title="Share Buttons">Lockerz</a></div></div></div></div><!-- BEGIN WAYBACK TOOLBAR INSERT -->
|
||
<script>__wm.rw(0);</script>
|
||
<div id="wm-ipp-base" lang="en" style="display: block; direction: ltr;"><template shadowrootmode="closed"><div id="wm-ipp" style="position:fixed;left:0;top:0;right:0;" class="">
|
||
<div id="donato" style="position:relative;width:100%;">
|
||
<div id="donato-base">
|
||
<iframe id="donato-if" src="https://archive.org/includes/donate.php?as_page=1&platform=wb&referer=https%3A//web.archive.org/web/20111228070830/http%3A//blog.aztec-project.org/" scrolling="no" frameborder="0" style="width:100%; height:100%">
|
||
</iframe>
|
||
</div>
|
||
</div><div id="wm-ipp-inside">
|
||
<div id="wm-toolbar" style="position:relative;display:flex;flex-flow:row nowrap;justify-content:space-between;">
|
||
<div id="wm-logo" style="/*width:110px;*/padding-top:12px;">
|
||
<a href="https://web.archive.org/web/" title="Wayback Machine home page"><img src="https://web.archive.org/_static/images/toolbar/wayback-toolbar-logo-200.png" srcset="/_static/images/toolbar/wayback-toolbar-logo-100.png, /_static/images/toolbar/wayback-toolbar-logo-150.png 1.5x, /_static/images/toolbar/wayback-toolbar-logo-200.png 2x" alt="Wayback Machine" style="width:100px" border="0"></a>
|
||
</div>
|
||
<div class="c" style="display:flex;flex-flow:column nowrap;justify-content:space-between;flex:1;">
|
||
<form class="u" style="display:flex;flex-direction:row;flex-wrap:nowrap;" target="_top" method="get" action="https://web.archive.org/web/submit" name="wmtb" id="wmtb"><input type="text" name="url" id="wmtbURL" value="http://blog.aztec-project.org/" onfocus="this.focus();this.select();" style="flex:1;" autocomplete="off"><input type="hidden" name="type" value="replay"><input type="hidden" name="date" value="20111228070830"><input type="submit" value="Go">
|
||
</form>
|
||
<div style="display:flex;flex-flow:row nowrap;align-items:flex-end;">
|
||
<div class="s" id="wm-nav-captures" style="flex:1;"><a class="t" href="https://web.archive.org/web/*/http://blog.aztec-project.org/" title="See a list of every capture for this URL">45 captures</a><div class="r" title="Timespan for captures of this URL">12 Jun 2009 - 16 Jan 2022</div></div>
|
||
<div class="k">
|
||
<a href="https://web.archive.org/web/20101101000000/http://blog.aztec-project.org/" id="wm-graph-anchor">
|
||
<div id="wm-ipp-sparkline" title="Explore captures for this URL" style="position: relative">
|
||
<canvas id="wm-sparkline-canvas" width="750" height="27" border="0"></canvas>
|
||
<div class="yt" style="display: none; width: 25px; height: 27px; left: 350px;"></div><div class="mt" style="display: none; width: 2px; height: 27px; left: 371px;"></div></div>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="n">
|
||
<table>
|
||
<tbody>
|
||
<!-- NEXT/PREV MONTH NAV AND MONTH INDICATOR -->
|
||
<tr class="m">
|
||
<td class="b" nowrap="nowrap"><a href="https://web.archive.org/web/20111126230407/http://blog.aztec-project.org:80/" title="26 Nov 2011"><strong>Nov</strong></a></td>
|
||
<td class="c" id="displayMonthEl" title="You are here: 07:08:30 Dec 28, 2011">Dec</td>
|
||
<td class="f" nowrap="nowrap"><a href="https://web.archive.org/web/20130213010843/http://blog.aztec-project.org:80/" title="13 Feb 2013"><strong>Feb</strong></a></td>
|
||
</tr>
|
||
<!-- NEXT/PREV CAPTURE NAV AND DAY OF MONTH INDICATOR -->
|
||
<tr class="d">
|
||
<td class="b" nowrap="nowrap"><a href="https://web.archive.org/web/20111126230407/http://blog.aztec-project.org:80/" title="23:04:07 Nov 26, 2011"><img src="https://web.archive.org/_static/images/toolbar/wm_tb_prv_on.png" alt="Previous capture" width="14" height="16" border="0"></a></td>
|
||
<td class="c" id="displayDayEl" style="width:34px;font-size:22px;white-space:nowrap;" title="You are here: 07:08:30 Dec 28, 2011">28</td>
|
||
<td class="f" nowrap="nowrap"><a href="https://web.archive.org/web/20130213010843/http://blog.aztec-project.org:80/" title="01:08:43 Feb 13, 2013"><img src="https://web.archive.org/_static/images/toolbar/wm_tb_nxt_on.png" alt="Next capture" width="14" height="16" border="0"></a></td>
|
||
</tr>
|
||
<!-- NEXT/PREV YEAR NAV AND YEAR INDICATOR -->
|
||
<tr class="y">
|
||
<td class="b" nowrap="nowrap"><a href="https://web.archive.org/web/20100620230542/http://blog.aztec-project.org:80/" title="20 Jun 2010"><strong>2010</strong></a></td>
|
||
<td class="c" id="displayYearEl" title="You are here: 07:08:30 Dec 28, 2011">2011</td>
|
||
<td class="f" nowrap="nowrap"><a href="https://web.archive.org/web/20130213010843/http://blog.aztec-project.org:80/" title="13 Feb 2013"><strong>2013</strong></a></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="r" style="display:flex;flex-flow:column nowrap;align-items:flex-end;justify-content:space-between;">
|
||
<div id="wm-btns" style="text-align:right;height:23px;">
|
||
<span class="xxs">
|
||
<div id="wm-save-snapshot-success">success</div>
|
||
<div id="wm-save-snapshot-fail">fail</div>
|
||
<a id="wm-save-snapshot-open" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/#" title="Share via My Web Archive" style="display: inline-block;">
|
||
<span class="iconochive-web"></span>
|
||
</a>
|
||
<a href="https://archive.org/account/login.php" title="Sign In" id="wm-sign-in" style="display: none;">
|
||
<span class="iconochive-person"></span>
|
||
</a>
|
||
<span id="wm-save-snapshot-in-progress" class="iconochive-web"></span>
|
||
</span>
|
||
<a class="xxs" href="http://faq.web.archive.org/" title="Get some help using the Wayback Machine" style="top:-6px;"><span class="iconochive-question" style="color:rgb(87,186,244);font-size:160%;"></span></a>
|
||
<a id="wm-tb-close" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/#close" style="top:-2px;" title="Close the toolbar"><span class="iconochive-remove-circle" style="color:#888888;font-size:240%;"></span></a>
|
||
</div>
|
||
<div id="wm-share" class="xxs">
|
||
<a href="https://web.archive.org/web/20111228070830/http://web.archive.org/screenshot/http://blog.aztec-project.org/" id="wm-screenshot" title="screenshot" style="visibility: hidden;">
|
||
<span class="wm-icon-screen-shot"></span>
|
||
</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/#" id="wm-video" title="video">
|
||
<span class="iconochive-movies"></span>
|
||
</a>
|
||
<a id="wm-share-facebook" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/#" data-url="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org:80/" title="Share on Facebook" style="margin-right:5px;" target="_blank"><span class="iconochive-facebook" style="color:#3b5998;font-size:160%;"></span></a>
|
||
<a id="wm-share-twitter" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/#" data-url="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org:80/" title="Share on Twitter" style="margin-right:5px;" target="_blank"><span class="iconochive-twitter" style="color:#1dcaff;font-size:160%;"></span></a>
|
||
</div>
|
||
<div style="padding-right:2px;text-align:right;white-space:nowrap;">
|
||
<a id="wm-expand" class="wm-btn wm-closed" href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/#expand"><span id="wm-expand-icon" class="iconochive-down-solid"></span> <span class="xxs" style="font-size:80%;">About this capture</span></a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="wm-capinfo" style="border-top:1px solid #777;display:none; overflow: hidden">
|
||
<div id="wm-capinfo-notice" source="api"></div>
|
||
<div id="wm-capinfo-collected-by">
|
||
<div style="background-color:#666;color:#fff;font-weight:bold;text-align:center">COLLECTED BY</div>
|
||
<div style="padding:3px;position:relative" id="wm-collected-by-content">
|
||
<div style="display:inline-block;vertical-align:top;width:50%;">
|
||
<span class="c-logo" style="background-image:url(https://archive.org/services/img/alexacrawls);"></span>
|
||
Organization: <a style="color:#33f;" href="https://archive.org/details/alexacrawls" target="_new"><span class="wm-title">Alexa Crawls</span></a>
|
||
<div style="max-height:75px;overflow:hidden;position:relative;">
|
||
<div style="position:absolute;top:0;left:0;width:100%;height:75px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0%,rgba(255,255,255,0) 90%,rgba(255,255,255,255) 100%);"></div>
|
||
Starting in 1996, <a href="http://www.alexa.com/">Alexa Internet</a> has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the <a href="http://web.archive.org/">Wayback Machine</a> after an embargo period.
|
||
</div>
|
||
</div>
|
||
<div style="display:inline-block;vertical-align:top;width:49%;">
|
||
<span class="c-logo" style="background-image:url(https://archive.org/services/img/alexacrawls)"></span>
|
||
<div>Collection: <a style="color:#33f;" href="https://archive.org/details/alexacrawls" target="_new"><span class="wm-title">Alexa Crawls</span></a></div>
|
||
<div style="max-height:75px;overflow:hidden;position:relative;">
|
||
<div style="position:absolute;top:0;left:0;width:100%;height:75px;background:linear-gradient(to bottom,rgba(255,255,255,0) 0%,rgba(255,255,255,0) 90%,rgba(255,255,255,255) 100%);"></div>
|
||
Starting in 1996, <a href="http://www.alexa.com/">Alexa Internet</a> has been donating their crawl data to the Internet Archive. Flowing in every day, these data are added to the <a href="http://web.archive.org/">Wayback Machine</a> after an embargo period.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="wm-capinfo-timestamps">
|
||
<div style="background-color:#666;color:#fff;font-weight:bold;text-align:center" title="Timestamps for the elements of this page">TIMESTAMPS</div>
|
||
<div>
|
||
<div id="wm-capresources" style="margin:0 5px 5px 5px;max-height:250px;overflow-y:scroll !important"></div>
|
||
<div id="wm-capresources-loading" style="text-align:left;margin:0 20px 5px 5px;display:none"><img src="https://web.archive.org/_static/images/loading.gif" alt="loading"></div>
|
||
</div>
|
||
</div>
|
||
</div></div></div><link rel="stylesheet" type="text/css" href="./blog_files/banner-styles.css"><link rel="stylesheet" type="text/css" href="./blog_files/iconochive.css"><div class="wb-autocomplete-suggestions "></div></template>
|
||
</div><div id="wm-ipp-print">The Wayback Machine - https://web.archive.org/web/20111228070830/http://blog.aztec-project.org:80/</div>
|
||
<script type="text/javascript">//<![CDATA[
|
||
__wm.bt(750,27,25,2,"web","http://blog.aztec-project.org/","20111228070830",1996,"/_static/",["/_static/css/banner-styles.css?v=S1zqJCYt","/_static/css/iconochive.css?v=3PDvdIFv"], false);
|
||
__wm.rw(1);
|
||
//]]></script>
|
||
<!-- END WAYBACK TOOLBAR INSERT -->
|
||
|
||
|
||
<div id="page">
|
||
|
||
<div id="header" class="png">
|
||
<div id="headerimg">
|
||
<h1 class="blogname" id="blogname"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/">build broken</a></h1><span class="blogname text-stroke-br">build broken</span><span class="blogname text-stroke-bl">build broken</span><span class="blogname text-stroke-tr">build broken</span><span class="blogname text-stroke-tl">build broken</span>
|
||
<h6 class="blogdesc" id="blogdesc">but we can fix it! Sometimes :)</h6><span class="blogdesc text-stroke-br">but we can fix it! Sometimes :)</span><span class="blogdesc text-stroke-bl">but we can fix it! Sometimes :)</span><span class="blogdesc text-stroke-tr">but we can fix it! Sometimes :)</span><span class="blogdesc text-stroke-tl">but we can fix it! Sometimes :)</span>
|
||
|
||
<ul class="pages png head_overlay">
|
||
<li class="page_item"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/">Home</a></li>
|
||
<li class="page_item page-item-2"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/about/" title="About">About</a></li>
|
||
</ul>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div id="main" class="png">
|
||
<table>
|
||
<tbody><tr>
|
||
<td id="content" class="narrowcolumn">
|
||
|
||
<div class="post" id="post-1065">
|
||
<div class="postinfo">
|
||
|
||
<div class="datestamp">
|
||
<div>
|
||
<span class="cal1 cal1x">Jun</span>
|
||
<span class="cal2">11</span>
|
||
<span class="cal3">2010</span>
|
||
</div>
|
||
</div>
|
||
<span class="switch-post">
|
||
<a href="javascript:toggleSidebars();" class="switch-sidebars"><img src="./blog_files/bullet_sidebars_hide.png" alt="" class="png"></a><a href="javascript:togglePost(1065);" id="switch-post-1065"><img src="./blog_files/bullet_toggle_minus.png" alt="" class="png"></a>
|
||
</span>
|
||
|
||
<h3 class="posttitle"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/06/11/webcamps-muenchen/" rel="bookmark" title="Permanenter Link zu Webcamps München">Webcamps München</a></h3>
|
||
<small>
|
||
Geschrieben von <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/author/ase/" title="Artikel von Andreas Seebauer">Andreas Seebauer</a> in <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/veranstaltung/" title="Alle Artikel in Veranstaltung ansehen" rel="category tag">Veranstaltung</a>, tags: <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/html/" rel="tag">HTML</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/mvc/" rel="tag">MVC</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/webcamp/" rel="tag">webcamp</a> </small>
|
||
|
||
</div>
|
||
|
||
<div class="entry">
|
||
<div>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://www.webcamps.ms/#munich_panel" target="_blank"><img class="size-full wp-image-1067 alignleft" style="margin-left: 4px; margin-right: 8px;" title="camps" src="./blog_files/camps.png" alt="" width="122" height="120"></a></p>
|
||
<p><img class="alignright size-medium wp-image-1068" title="IMG_0165" src="./blog_files/IMG_0165-225x300.jpg" alt="" width="135" height="180">Um unsere ASP.NET-MVC2-Kenntnisse mal wieder etwas aufzufrischen, haben ein paar von uns das zweitägige <a href="https://web.archive.org/web/20111228070830/http://www.webcamps.ms/#munich_panel" target="_blank">Webcamp</a> von Microsoft in München/Unterschleißheim besucht, an dem man unter den Teilnehmern auch ein paar bekannte Gesichter wie <a href="https://web.archive.org/web/20111228070830/http://blog.sacchet.de/" target="_blank">Pete Sacchet</a>, <a href="https://web.archive.org/web/20111228070830/http://www.deger-it.de/" target="_blank">Christian Deger</a> und <a href="https://web.archive.org/web/20111228070830/http://www.goloroden.de/" target="_blank">Golo Roden</a> angetroffen hat.</p>
|
||
<p>Am ersten Tag wurden die Grundlagen von MVC2, Entity Framework, JQuery und IIS vermittelt. Dabei wurde anhand einer Rich Web Application gezeigt, wie MVC2, das Entity Framework und JQuery zusammenspielen können. Am zweiten Tag mussten die am Vortag zusammengestellte Teams ein Projekt auf diesen Themengebieten basteln und vorstellen.</p>
|
||
<p>Moderiert wurde das Ganze von <a href="https://web.archive.org/web/20111228070830/http://www.webcamps.ms/Speaker/jongalloway" target="_blank">Jon Galloway</a> und <a href="https://web.archive.org/web/20111228070830/http://www.webcamps.ms/Speaker/christianwenz" target="_blank">Christian Wenz</a>, die am zweiten Tag bei Problemen mit Rat und Tat zur Seite standen.</p>
|
||
</div>
|
||
<div>Erhofft hatten wir uns von den zwei Tagen, einiges über MVC2 und JQuery zu erfahren. Enttäuscht wurden wir nicht, da uns noch unbekannte HtmlHelper, Validierungsmethoden sowie ein paar Tricks im Umgang mit Visual Studio gezeigt wurden. Das Entity Framework einmal im Einsatz zu sehen, war ganz nett, aber für uns nicht allzu interessant, da wir im Moment mit NHibernate arbeiten und damit ganz gut fahren.</div>
|
||
<div>
|
||
<p><img class="size-medium wp-image-1074 alignnone" title="IMG_0157" src="./blog_files/IMG_0157-225x300.jpg" alt="" width="203" height="270"><img class="size-medium wp-image-1071 alignnone" title="IMG_0158" src="./blog_files/IMG_0158-225x300.jpg" alt="" width="203" height="270"><img class="size-medium wp-image-1072 alignnone" title="IMG_0159" src="./blog_files/IMG_0159-225x300.jpg" alt="" width="203" height="270"></p>
|
||
<p>Ja, zu essen gab es auch was. War lecker, wie man sieht. <img src="./blog_files/icon_razz.gif" alt=":P" class="wp-smiley"> </p>
|
||
</div>
|
||
<div>Als Projekt am zweiten Tag haben wir uns für ein Buchungssystem von Ferienwohnungen entschieden. Wir waren leider nicht offiziell dabei, da uns diese Idee erst nach den Pitches eingefallen ist.<br>
|
||
Das einzig Negative an der ganzen Veranstaltung war das Netz im Hotel Dolce Munich. 100 Leute, die gleichzeitig versuchen, über eine gefühlte DSL-Leitung zu saugen, saugt einfach. Der Proxy des Hotels setzte noch einen drauf und leitete Aufrufe auf localhost um, was den Start der Applikation in der Entwicklungsumgebung sehr schwer machte :>.</div>
|
||
<div>
|
||
<p>Nachdem man dann das WLAN deaktiviert hatte, konnte es dann auch losgehen.</p>
|
||
</div>
|
||
<div><img class="size-medium wp-image-1076" title="IMG_0161" src="./blog_files/IMG_0161-300x225.jpg" alt="" width="300" height="225"><img class="size-medium wp-image-1077" title="IMG_0162" src="./blog_files/IMG_0162-300x225.jpg" alt="" width="300" height="225"><img class="size-medium wp-image-1078" title="IMG_0163" src="./blog_files/IMG_0163-300x225.jpg" alt="" width="300" height="225"><img class="size-medium wp-image-1079" title="IMG_0164" src="./blog_files/IMG_0164-300x225.jpg" alt="" width="300" height="225"></div>
|
||
<div>
|
||
<p>Um uns möglichst nah an den Projekten in der Arbeit zu orientieren, haben wir erstmal Folgendes gemacht: SVN angelegt, Features, die wir aufnehmen wollten, erörtert, Architektur gezeichnet, Komponenten herausgearbeitet, Contracts erstellt, Komponenten angelegt, Komponenten implementiert. Und schwupps war die Zeit um. :> Wir sind leider nicht mit unserem Projekt fertig geworden, haben aber trotzdem in den zwei Tagen einiges gelernt.</p>
|
||
</div>
|
||
<p>Glückwunsch nochmal an die Gewinner des Wettbewerbs (Schiffe versenken).</p>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://dotnet-kicks.de/kick/?url=http://blog.aztec-project.org/2010/06/11/webcamps-muenchen/"><img src="./blog_files/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de" border="0"></a></p>
|
||
<div class="addtoany_share_save_container"><div class="a2a_kit addtoany_list"><a class="a2a_dd addtoany_share_save" href="https://web.archive.org/web/20111228073144/http://www.addtoany.com/share_save#url=https%3A%2F%2Fweb.archive.org%2Fweb%2F20111228070830%2Fhttp%3A%2F%2Fblog.aztec-project.org%2F2010%2F06%2F11%2Fwebcamps-muenchen%2F&title=Webcamps%20M%C3%BCnchen&description="><img src="./blog_files/share_save_171_16.png" width="171" height="16" alt="Share"></a></div>
|
||
<script type="text/javascript"><!--
|
||
var a2a_config = a2a_config || {};
|
||
a2a_localize = {
|
||
Share: "Empfehlen",
|
||
Save: "Speichern",
|
||
Subscribe: "Abonnieren",
|
||
Email: "E-Mail",
|
||
Bookmark: "Bookmark",
|
||
ShowAll: "zeige alle",
|
||
ShowLess: "Zeige weniger",
|
||
FindServices: "Finden Dienstleistung(en)",
|
||
FindAnyServiceToAddTo: "Um weitere Dienste ergänzen",
|
||
PoweredBy: "Powered by",
|
||
ShareViaEmail: "per E-Mail empfehlen",
|
||
SubscribeViaEmail: "per E-Mail abonnieren",
|
||
BookmarkInYourBrowser: "Seite den Bookmarks hinzufügen",
|
||
BookmarkInstructions: "Drücken Sie Strg + D oder ⌘ + D, um diese Seite den Bookmarks hinzuzufügen",
|
||
AddToYourFavorites: "Zu Ihren Favoriten hinzufügen",
|
||
SendFromWebOrProgram: "Von E-Mail-Adresse oder E-Mail-Programm senden",
|
||
EmailProgram: "E-Mail-Programm"
|
||
};
|
||
a2a_config.linkname="Webcamps München";
|
||
a2a_config.linkurl="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/06/11/webcamps-muenchen/";
|
||
a2a_color_main="FAFAFA";a2a_color_border="AECADB";a2a_color_link_text="FF9B2A";a2a_color_link_text_hover="FF9B2A";a2a_color_bg="FAFAFA";
|
||
//--></script><script type="text/javascript" src="./blog_files/page.js.Download"></script>
|
||
|
||
</div><fb:like href="http://blog.aztec-project.org/2010/06/11/webcamps-muenchen/" layout="standard" show_faces="true" width="450" action="like" colorscheme="light" style="margin-top:5px;" class="fb_edge_widget_with_comment fb_iframe_widget"></fb:like> </div>
|
||
|
||
<p class="clear">
|
||
<img src="./blog_files/comments.gif" alt="Comments">
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/06/11/webcamps-muenchen/#comments" title="Kommentiere Webcamps München">2 Kommentare »</a> </p>
|
||
</div>
|
||
|
||
|
||
<div class="post" id="post-1055">
|
||
<div class="postinfo">
|
||
|
||
<div class="datestamp">
|
||
<div>
|
||
<span class="cal1 cal1x">Jun</span>
|
||
<span class="cal2">06</span>
|
||
<span class="cal3">2010</span>
|
||
</div>
|
||
</div>
|
||
<span class="switch-post">
|
||
<a href="javascript:toggleSidebars();" class="switch-sidebars"><img src="./blog_files/bullet_sidebars_hide.png" alt="" class="png"></a><a href="javascript:togglePost(1055);" id="switch-post-1055"><img src="./blog_files/bullet_toggle_minus.png" alt="" class="png"></a>
|
||
</span>
|
||
|
||
<h3 class="posttitle"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/06/06/barcamp-bodensee-2010/" rel="bookmark" title="Permanenter Link zu BarCamp Bodensee 2010">BarCamp Bodensee 2010</a></h3>
|
||
<small>
|
||
Geschrieben von <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/author/sko/" title="Artikel von Stefan Kölle">Stefan Kölle</a> in <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/barcamp/" title="Alle Artikel in BarCamp ansehen" rel="category tag">BarCamp</a>, tags: <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/datenschutz/" rel="tag">datenschutz</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/facebook/" rel="tag">facebook</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/socialweb/" rel="tag">socialweb</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/sonne/" rel="tag">sonne</a> </small>
|
||
|
||
</div>
|
||
|
||
<div class="entry">
|
||
<p>Dieses Wochenende findet das <a href="https://web.archive.org/web/20111228070830/http://barcampbodensee.mixxt.eu/">BarCamp Bodensee 2010</a> statt. Ich war gestern dort und habe interessante Sessions besucht.</p>
|
||
<p>Sehr gut fand ich die Session “Decentralized Social Web”, nachdem ich schon lange selbst über das Thema nachgedacht habe. In der Session wurde gut herausgearbeitet, Grundgedanke ist ein Protokoll wie IP zu schaffen, also ein Konzept zu entwickeln um die Daten seiner Friends und sozialen Kontakte selbst zu besitzen und diese bei sozialen Netzwerken dann zu verwenden. Der Betreiber eines sozialen Netzwerks selbst soll die Daten nicht besitzen bzw. nur in verschlüsselter Form auf sie zugreifen können. Ändert man selbst die Zugriffsrechte, besitzt die Plattform zwar noch die Daten, kann auf diese jedoch nicht mehr zugreifen.</p>
|
||
<p>Noch verstehen Nutzer den Mehrwert nicht und die Lösungen sind zu komplex, um dem Normaluser hier den Einstieg zu erleichtern. Ein Nutzer von sozialen Netzwerken möchte einen Service und den bekommt er derzeit bei Facebook. Diese Entwicklung ist gefährlich, da sich Facebook zur allgemeinen Datensammelstelle entwickelt, die alles kontrolliert. “My data belongs to me”. Nur sind wir technisch affinen Menschen hier zu paranoid? Der Normaluser bekommt im Moment genau das, was er möchte: eine gesicherte, schnelle Dienstleistung. Auf die Frage, wer für Facebook zu zahlen bereit wäre, kamen erstaunlich viele Meldungen, man sieht Facebook also als einen Dienstleister.</p>
|
||
<p>Gut jedoch zu sehen, dass sich bereits Projekte aufgetan haben das decentralized social web zu erkunden: </p>
|
||
<p><strong>Movim</strong><br>
|
||
Ziel des MOVIM-Projekts (für My Open Virtual Identity Manager), ist eine vollständige und total dezentrale soziale Platform zu entwickeln, die ihre User einfach respektiert.<br>
|
||
<a href="https://web.archive.org/web/20111228070830/http://www.movim.eu/" target="_blank">http://www.movim.eu/</a></p>
|
||
<p><strong>Diaspora</strong><br>
|
||
The privacy aware, personally controlled, do-it-all, open source social network.<br>
|
||
<a href="https://web.archive.org/web/20111228070830/http://joindiaspora.com/">http://joindiaspora.com/</a></p>
|
||
<p><strong>Web Finger</strong><br>
|
||
Personal Web Discovery, making email addresses readable again<br>
|
||
<a href="https://web.archive.org/web/20111228070830/http://code.google.com/p/webfinger/" target="_blank">http://code.google.com/p/webfinger/</a></p>
|
||
<p>Es gab noch viele weitere gute Sessions, das Wetter hat gestern gut mitgespielt und viele Teilnehmer haben sich gerne in der Sonne aufgehalten und dort genetzwerkt. </p>
|
||
<p>Die <a href="https://web.archive.org/web/20111228070830/http://www.be2.de/blog/" target="_blank">love coaches von be2</a> waren auch wieder dabei und <a href="https://web.archive.org/web/20111228070830/http://www.be2.de/blog/barcamp/" target="_blank">verlosen heute eine faltbare Sitzcouch</a>, die Flexible Love Bank von myfab.</p>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/wp-content/uploads/2010/06/IMG_0247.jpg"><img src="./blog_files/IMG_0247-300x225.jpg" alt="" title="be2 Verlosung" width="300" height="225" class="alignnone size-medium wp-image-1056"></a></p>
|
||
<div class="addtoany_share_save_container"><div class="a2a_kit addtoany_list"><a class="a2a_dd addtoany_share_save" href="https://web.archive.org/web/20111228073144/http://www.addtoany.com/share_save#url=https%3A%2F%2Fweb.archive.org%2Fweb%2F20111228070830%2Fhttp%3A%2F%2Fblog.aztec-project.org%2F2010%2F06%2F06%2Fbarcamp-bodensee-2010%2F&title=BarCamp%20Bodensee%202010&description="><img src="./blog_files/share_save_171_16.png" width="171" height="16" alt="Share"></a></div>
|
||
<script type="text/javascript"><!--
|
||
a2a_config.linkname="BarCamp Bodensee 2010";
|
||
a2a_config.linkurl="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/06/06/barcamp-bodensee-2010/";
|
||
a2a.init('page');
|
||
//--></script>
|
||
|
||
</div><fb:like href="http://blog.aztec-project.org/2010/06/06/barcamp-bodensee-2010/" layout="standard" show_faces="true" width="450" action="like" colorscheme="light" style="margin-top:5px;" class="fb_edge_widget_with_comment fb_iframe_widget"></fb:like> </div>
|
||
|
||
<p class="clear">
|
||
<img src="./blog_files/comments.gif" alt="Comments">
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/06/06/barcamp-bodensee-2010/#comments" title="Kommentiere BarCamp Bodensee 2010">3 Kommentare »</a> </p>
|
||
</div>
|
||
|
||
|
||
<div class="post" id="post-1027">
|
||
<div class="postinfo">
|
||
|
||
<div class="datestamp">
|
||
<div>
|
||
<span class="cal1 cal1x">Mai</span>
|
||
<span class="cal2">06</span>
|
||
<span class="cal3">2010</span>
|
||
</div>
|
||
</div>
|
||
<span class="switch-post">
|
||
<a href="javascript:toggleSidebars();" class="switch-sidebars"><img src="./blog_files/bullet_sidebars_hide.png" alt="" class="png"></a><a href="javascript:togglePost(1027);" id="switch-post-1027"><img src="./blog_files/bullet_toggle_minus.png" alt="" class="png"></a>
|
||
</span>
|
||
|
||
<h3 class="posttitle"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/05/06/asynchrone-kommunikation-mit-dem-async-pattern-refactored/" rel="bookmark" title="Permanenter Link zu Asynchrone Kommunikation mit dem Async-Pattern (Refactored)">Asynchrone Kommunikation mit dem Async-Pattern (Refactored)</a></h3>
|
||
<small>
|
||
Geschrieben von <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/author/tch/" title="Artikel von Thomas Christian">Thomas Christian</a> in <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/architektur/" title="Alle Artikel in Architektur ansehen" rel="category tag">Architektur</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/pattern/" title="Alle Artikel in Pattern ansehen" rel="category tag">Pattern</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/tipps/" title="Alle Artikel in Tipps ansehen" rel="category tag">Tipps</a> </small>
|
||
|
||
</div>
|
||
|
||
<div class="entry">
|
||
<p>Nach dem ich meinen vorherigen Artikel zum Thema <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/05/05/asynchrone-kommunikation-mit-dem-async-pattern/">“Asynchrone Kommunikation mit dem Async-Pattern”</a> vorgestellt hatte, hat Ralf Westphal auf seinem Blog <a href="https://web.archive.org/web/20111228070830/http://ralfw.blogspot.com/2010/05/asynchrone-kommunikation-mit-ebcs-statt.html">“One Man Think Tank Gedanken”</a> das Vorgehen zur Implementierung einer asynchronen Kommunikation mit Hilfe von Event-Based-Components vorgestellt, welches eine sehr gute Alternative zum Async-Pattern ist. Seinen Eintrag nehme ich zum Anlass, um meine Beispiel-Implementierung des Async-Pattern zu refaktorisieren, um eine bessere Trennung der Verantwortlichkeiten und somit eine bessere Lesbarkeit zu erreichen.</p>
|
||
<p>In das Form wird die Abhängigkeit “CalcProxy” injected.</p>
|
||
<style type="text/css">
|
||
.cf { font-family: Courier New; font-size: 10pt; color: black; background: white; }
|
||
.cl { margin: 0px; }
|
||
.cb1 { color: blue; }
|
||
.cb2 { color: #2b91af; }
|
||
</style>
|
||
<div class="cf">
|
||
<p class="cl"><span class="cb1">static</span> <span class="cb1">void</span> Main()</p>
|
||
<p class="cl">{</p>
|
||
<p class="cl"> <span class="cb2">CalcProxy</span> calcProxy = <span class="cb1">new</span> <span class="cb2">CalcProxy</span>(<span class="cb1">new</span> <span class="cb2">Calculator</span>());</p>
|
||
<p class="cl"> <span class="cb2">Application</span>.EnableVisualStyles();</p>
|
||
<p class="cl"> <span class="cb2">Application</span>.SetCompatibleTextRenderingDefault(<span class="cb1">false</span>);</p>
|
||
<p class="cl"> <span class="cb2">Application</span>.Run(<span class="cb1">new</span> <span class="cb2">Form1</span>(calcProxy));</p>
|
||
<p class="cl">}</p>
|
||
</div>
|
||
<p> </p>
|
||
<p>Im Gegensatz zur vorherigen Version wird in der Form nun nicht mehr der Calculator direkt erzeugt und verwendet, sondern auf den injekteten CalcProxy zugegriffen.</p>
|
||
<style type="text/css">
|
||
.cf { font-family: Courier New; font-size: 10pt; color: black; background: white; }
|
||
.cl { margin: 0px; }
|
||
.cb1 { color: blue; }
|
||
.cb2 { color: #2b91af; }
|
||
</style>
|
||
<div class="cf">
|
||
<p class="cl"><span class="cb1">public</span> <span class="cb1">partial</span> <span class="cb1">class</span> <span class="cb2">Form1</span> : <span class="cb2">Form</span> {</p>
|
||
<p class="cl"> <span class="cb1">private</span> <span class="cb1">readonly</span> <span class="cb2">ICalcProxy</span> m_calcProxy;</p>
|
||
<p class="cl"> <span class="cb1">public</span> Form1(<span class="cb2">ICalcProxy</span> calcProxy) {</p>
|
||
<p class="cl"> InitializeComponent();</p>
|
||
<p class="cl"> m_calcProxy = calcProxy;</p>
|
||
<p class="cl"> m_calcProxy.CalcCompleted += CalculatorCalcCompleted;</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl"> </p>
|
||
<p class="cl"> <span class="cb1">private</span> <span class="cb1">void</span> Run_Click(<span class="cb1">object</span> sender, <span class="cb2">EventArgs</span> e) {</p>
|
||
<p class="cl"> <span class="cb1">int</span> number;</p>
|
||
<p class="cl"> <span class="cb1">if</span> (<span class="cb2">Int32</span>.TryParse(txbEingabe.Text, <span class="cb1">out</span> number)) {</p>
|
||
<p class="cl"> m_calcProxy.CalcAsync(number, number);</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl"> </p>
|
||
<p class="cl"> <span class="cb1">void</span> CalculatorCalcCompleted(<span class="cb1">object</span> sender, <span class="cb2">CalcEventArgs</span> eventArgs) {</p>
|
||
<p class="cl"> lblCounter.Text = eventArgs.UserState.ToString();</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl">}</p>
|
||
</div>
|
||
<p> </p>
|
||
<p>Der CalcProxy wiederum bekommt die Abhängigkeit zum Calculator injected und stellt für die Calculator.Calc-Methode sowohl eine synchrone als auch eine asynchrone Methode zur Verfügung.</p>
|
||
<style type="text/css">
|
||
.cf { font-family: Courier New; font-size: 10pt; color: black; background: white; }
|
||
.cl { margin: 0px; }
|
||
.cb1 { color: blue; }
|
||
.cb2 { color: #2b91af; }
|
||
.cb3 { color: #a31515; }
|
||
</style>
|
||
<div class="cf">
|
||
<p class="cl"><span class="cb1">public</span> <span class="cb1">class</span> <span class="cb2">CalcProxy</span> : <span class="cb2">ICalcProxy</span> {</p>
|
||
<p class="cl"> <span class="cb1">private</span> <span class="cb1">readonly</span> <span class="cb2">ICalculator</span> m_calculator;</p>
|
||
<p class="cl"> <span class="cb1">public</span> <span class="cb1">event</span> <span class="cb2">CalcCompletedEventHandler</span> CalcCompleted;</p>
|
||
<p class="cl"> <span class="cb1">private</span> <span class="cb2">AsyncOperation</span> m_asyncOperation;</p>
|
||
<p class="cl"> <span class="cb1">private</span> <span class="cb1">bool</span> m_isRunning;</p>
|
||
<p class="cl"> </p>
|
||
<p class="cl"> <span class="cb1">public</span> CalcProxy(<span class="cb2">ICalculator</span> calculator) {</p>
|
||
<p class="cl"> m_calculator = calculator;</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl"> </p>
|
||
<p class="cl"> <span class="cb1">public</span> <span class="cb1">int</span> Calc(<span class="cb1">int</span> number) {</p>
|
||
<p class="cl"> <span class="cb1">return</span> m_calculator.Calc(number);</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl"> </p>
|
||
<p class="cl"> <span class="cb1">public</span> <span class="cb1">void</span> CalcAsync(<span class="cb1">int</span> number, <span class="cb1">object</span> userState) {</p>
|
||
<p class="cl"> <span class="cb1">lock</span> (<span class="cb1">this</span>) {</p>
|
||
<p class="cl"> <span class="cb1">if</span> (m_isRunning) {</p>
|
||
<p class="cl"> <span class="cb1">throw</span> <span class="cb1">new</span> <span class="cb2">InvalidOperationException</span>(<span class="cb3">"Diese Operation wird bereits ausgeführt"</span>);</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl"> m_isRunning = <span class="cb1">true</span>;</p>
|
||
<p class="cl"> m_asyncOperation = <span class="cb2">AsyncOperationManager</span>.CreateOperation(userState);</p>
|
||
<p class="cl"> <span class="cb2">ThreadPool</span>.QueueUserWorkItem(ExecuteCalc, number);</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl"> </p>
|
||
<p class="cl"> <span class="cb1">private</span> <span class="cb1">void</span> ExecuteCalc(<span class="cb1">object</span> state) {</p>
|
||
<p class="cl"> <span class="cb1">var</span> result = Calc((<span class="cb1">int</span>)state);</p>
|
||
<p class="cl"> m_asyncOperation.PostOperationCompleted(CalcCompletedSuccessful, result);</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl"> </p>
|
||
<p class="cl"> <span class="cb1">private</span> <span class="cb1">void</span> CalcCompletedSuccessful(<span class="cb1">object</span> result) {</p>
|
||
<p class="cl"> <span class="cb1">if</span> (CalcCompleted != <span class="cb1">null</span>) {</p>
|
||
<p class="cl"> CalcCompleted(<span class="cb1">this</span>, <span class="cb1">new</span> <span class="cb2">CalcEventArgs</span>(<span class="cb1">null</span>, <span class="cb1">false</span>, (<span class="cb1">int</span>)result, result));</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl">}</p>
|
||
</div>
|
||
<p> </p>
|
||
<p>Nun enthält der Calculator nur noch die Methode die für den Calculator notwendig ist, nämlich die Calc-Methode.</p>
|
||
<style type="text/css">
|
||
.cf { font-family: Courier New; font-size: 10pt; color: black; background: white; }
|
||
.cl { margin: 0px; }
|
||
.cb1 { color: blue; }
|
||
.cb2 { color: #2b91af; }
|
||
</style>
|
||
<div class="cf">
|
||
<p class="cl"><span class="cb1">public</span> <span class="cb1">class</span> <span class="cb2">Calculator</span> : <span class="cb2">ICalculator</span> {</p>
|
||
<p class="cl"> <span class="cb1">public</span> <span class="cb1">int</span> Calc(<span class="cb1">int</span> number) {</p>
|
||
<p class="cl"> <span class="cb2">Thread</span>.Sleep(10000);</p>
|
||
<p class="cl"> <span class="cb1">return</span> number * number;</p>
|
||
<p class="cl"> }</p>
|
||
<p class="cl">}</p>
|
||
</div>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://dotnet-kicks.de/kick/?url=http%3a%2f%2fblog.aztec-project.org%2f2010%2f05%2f06%2fasynchrone-kommunikation-mit-dem-async-pattern-refactored%2f"><img src="./blog_files/KickItImageGenerator(1).ashx" alt="kick it on dotnet-kicks.de" border="0"></a></p>
|
||
<div class="addtoany_share_save_container"><div class="a2a_kit addtoany_list"><a class="a2a_dd addtoany_share_save" href="https://web.archive.org/web/20111228073144/http://www.addtoany.com/share_save#url=https%3A%2F%2Fweb.archive.org%2Fweb%2F20111228070830%2Fhttp%3A%2F%2Fblog.aztec-project.org%2F2010%2F05%2F06%2Fasynchrone-kommunikation-mit-dem-async-pattern-refactored%2F&title=Asynchrone%20Kommunikation%20mit%20dem%20Async-Pattern%20(Refactored)&description="><img src="./blog_files/share_save_171_16.png" width="171" height="16" alt="Share"></a></div>
|
||
<script type="text/javascript"><!--
|
||
a2a_config.linkname="Asynchrone Kommunikation mit dem Async-Pattern (Refactored)";
|
||
a2a_config.linkurl="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/05/06/asynchrone-kommunikation-mit-dem-async-pattern-refactored/";
|
||
a2a.init('page');
|
||
//--></script>
|
||
|
||
</div><fb:like href="http://blog.aztec-project.org/2010/05/06/asynchrone-kommunikation-mit-dem-async-pattern-refactored/" layout="standard" show_faces="true" width="450" action="like" colorscheme="light" style="margin-top:5px;" class="fb_edge_widget_with_comment fb_iframe_widget"></fb:like> </div>
|
||
|
||
<p class="clear">
|
||
<img src="./blog_files/comments.gif" alt="Comments">
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/05/06/asynchrone-kommunikation-mit-dem-async-pattern-refactored/#comments" title="Kommentiere Asynchrone Kommunikation mit dem Async-Pattern (Refactored)">4 Kommentare »</a> </p>
|
||
</div>
|
||
|
||
|
||
<div class="post" id="post-961">
|
||
<div class="postinfo">
|
||
|
||
<div class="datestamp">
|
||
<div>
|
||
<span class="cal1 cal1x">Mai</span>
|
||
<span class="cal2">05</span>
|
||
<span class="cal3">2010</span>
|
||
</div>
|
||
</div>
|
||
<span class="switch-post">
|
||
<a href="javascript:toggleSidebars();" class="switch-sidebars"><img src="./blog_files/bullet_sidebars_hide.png" alt="" class="png"></a><a href="javascript:togglePost(961);" id="switch-post-961"><img src="./blog_files/bullet_toggle_minus.png" alt="" class="png"></a>
|
||
</span>
|
||
|
||
<h3 class="posttitle"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/05/05/asynchrone-kommunikation-mit-dem-async-pattern/" rel="bookmark" title="Permanenter Link zu Asynchrone Kommunikation mit dem Async-Pattern">Asynchrone Kommunikation mit dem Async-Pattern</a></h3>
|
||
<small>
|
||
Geschrieben von <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/author/tch/" title="Artikel von Thomas Christian">Thomas Christian</a> in <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/architektur/" title="Alle Artikel in Architektur ansehen" rel="category tag">Architektur</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/pattern/" title="Alle Artikel in Pattern ansehen" rel="category tag">Pattern</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/tipps/" title="Alle Artikel in Tipps ansehen" rel="category tag">Tipps</a> </small>
|
||
|
||
</div>
|
||
|
||
<div class="entry">
|
||
<p class="MsoNormal" style="text-align: justify;">Bevor ich anhand eines Beispiels zeige, wie man mit Hilfe des Async-Pattern ein asynchrone Kommunikation implementieren kann, möchte ich kurz beschreiben, wo der Unterschied zwischen der synchronen und der asynchronen Kommunikation liegt und wofür die asynchrone Kommunikation nützlich ist.</p>
|
||
<p class="MsoListParagraphCxSpFirst" style="margin-left: 35.45pt; text-align: justify;">
|
||
</p><p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;"><strong><span style="font-size: 12pt; line-height: 115%;">Synchrone Kommunikation</span></strong></p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">Bei der synchronen Kommunikation handelt es sich um eine Echtzeit-Kommunikation. Das bedeutet, dass Anfragen und Antworten jeweils vollständig nacheinander abgearbeitet werden. Kommuniziert ein Prozess mit einem Webserver synchron, so ist der Prozess solange blockiert, bis er die vollständige Antwort vom Webserver erhalten hat.</p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">
|
||
</p><p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;"><strong><span style="font-size: 12pt; line-height: 115%;">Asynchrone Kommunikation</span></strong></p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">Im Gegensatz zur synchronen Kommunikation handelt es sich bei der asynchronen Kommunikation nicht um eine Echtzeit-Kommunikation. Das bedeutet, dass bei der Kommunikation eines Prozesses mit einem Webserver der Prozess nicht blockiert. Der Prozess verschickt lediglich die Anfrage an den Webserver und kehrt danach sofort zur weiteren Prozessausführung zurück. Der Prozess geht dabei davon aus, dass die Anfrage an den Webservice korrekt gestellt wurde. Die Antwort wird dann zu einem unbestimmten Zeitpunkt vom Webservice geliefert, und zwar dann, wenn dieser mit der Abarbeitung der Anfrage fertig ist.</p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">
|
||
</p><p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;"><strong><span style="font-size: 12pt; line-height: 115%;">Warum Asynchrone Kommunikation</span></strong></p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">Asynchrone Kommunikation bietet sich in unterschiedlichsten Situationen an. So ist es z.B. sinnvoll, dass eine WinForms-Anwendung asynchron mit einem Webservice kommuniziert, da der Haupt-Thread der WinForm-Anwendung sonst so lange blockiert wäre, bis der Webservice die Antwort auf die Anfrage liefert. Die Folge wäre, dass im Titel der Anwendung stehen würde, dass die Anwendung nicht antwortet (s. Abbildung 1). Viele Benutzer denken dass es sich bei dieser Meldung um einen Fehler im Programm handelt und beenden das Programm fix über den Task-Manager. Dabei lag es nur an der etwas länger dauernden Kommunikation zwischen der WinForm-Anwendung und dem Webservice.</p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">
|
||
</p><p class="MsoListParagraphCxSpMiddle" style="margin-left: 35.45pt; text-align: center; page-break-after: avoid;"><span></span></p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 35.45pt; text-align: center; page-break-after: avoid;"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/wp-content/uploads/2010/05/keineRueckmeldung.png"><img class="aligncenter size-full wp-image-973" title="keineRueckmeldung" src="./blog_files/keineRueckmeldung.png" alt="" width="308" height="53"></a> Abbildung 1</p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 35.45pt; text-align: justify;">
|
||
</p><p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">Ein weiterer Grund für eine asynchrone Kommunikation wäre, wenn eine Anwendung nur Nachrichten verschicken möchte und es im Grunde keine Rolle spielt, ob diese Nachricht korrekt verarbeitet wurde. Vorstellbar wäre hier Loggen von Aktionen. Mir wäre es jetzt egal, ob die Nachricht korrekt gespeichert wurde oder nicht. Ich will nur nicht, dass meine Anwendung, nur weil Daten geloggt werden müssen,<span> </span>langsamer wird. Es handelt sich ja bei den Log-Daten nicht um Informationen die für die Abarbeitung notwendig sind.</p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">
|
||
</p><p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">Ein weiterer Fall wäre z. B. das Skalieren von Datenbankabfragen. So könnten mehrere Threads gleichzeitig Daten von gleichen oder unterschiedlichen Datenbeständen abfragen um schnellere Antwortzeiten zu erhalten.</p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;"><strong><span style="font-size: 12pt; line-height: 115%;">Beispiel</span></strong></p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">
|
||
Um die asynchrone Kommunikation zu realisieren gibt es unterschiedliche Möglichkeiten. Ich habe mich allerdings für eine Event-Based-Variante entschieden. Der große Vorteil von einem Event-Based Async-Pattern liegt in meinen Augen darin, dass der Nutzer von asynchrone Methoden sich nicht wirklich mit Multithread-Umgebungen auskennen muss. Für den Nutzer ist es völlig transparent wie die Threads im Hintergrund erzeugt werden und wie die Synchronisation der einzelnen Thread funktioniert. Für den Nutzer ist es nur wichtig zu wissen, dass er eine Methode aufrufen kann die asynchron abläuft und somit nicht den erwarteten Rückgabewert besitzt wie die synchrone Methode und dass ein Event ausgelöst wird, wenn die Methode komplett abgearbeitet wurde und der erwartete Rückgabewert zur Verfügung steht.</p>
|
||
<p>Nun aber genug geredet, jetzt wird programmiert. Für das Beispiel habe ich mich für eine WinForm-Anwendung entschieden, die nichts anderes tut, als die eingegebene Zahl zu quadrieren. Diese Berechnung dauert aufgrund eines Thread.Sleep() zehn Sekunden, um eine verzögerte Ausführung zu simulieren. Die Berechnung habe ich dabei in eine extra Komponente ausgelagert, die eine Schnittstelle zur asynchronen Kommunikation bereitstellt. Dabei gilt es eine gewisse Namenskonvention einzuhalten. Neben der synchronen Methode „Calc“, wird die asynchrone Methode mit dem Zusatz „Async“ bezeichnet („CalcAsync“). Da das Async-Pattern Event-Based ist, muss ein Event bereitgestellt werden, welches ausgelöst wird, wenn die asynchrone Verarbeitung beendet wurde. Laut Namenskonvention muss solch ein Event „<Methodenname>Completed“ heißen. Mein Event heißt somit „CalcCompleted“.</p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">
|
||
</p><p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">Die Abbildung 2 zeigt die UI der Anwendung. Bei dem Drücken des „Run“-Buttons, soll die eingegebene Zahl asynchron quadriert werden und im Anschluss in das Feld „Ergebnis“ ausgegeben werden.</p>
|
||
<p class="MsoListParagraphCxSpMiddle" style="margin-left: 0cm; text-align: justify;">
|
||
</p><p class="MsoListParagraphCxSpLast" style="margin-left: 0cm; text-align: center; page-break-after: avoid;"><span></span></p>
|
||
<p class="MsoNormal" style="text-align: center;"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/wp-content/uploads/2010/05/Form1.png"><img class="aligncenter size-full wp-image-980" title="Form1" src="./blog_files/Form1.png" alt="" width="300" height="200"></a>Abbildung 2</p>
|
||
<p class="MsoNormal">Der Code hinter der UI sieht folgendermaßen aus. Beim instanziieren des Forms, wird eine Instanz des Calculators erstellt und ein Delegate auf das „CalcCompleted“-Event registriert. Dieses Event wird aufgerufen sobald der Calculator mit der Berechnung fertig ist.</p>
|
||
<p class="MsoNormal">Bei dem Drücken des „Run“-Buttons, wird die Methode Calculator.CalcAsync(…) aufgerufen.</p>
|
||
<p class="MsoNormal">
|
||
</p><div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
|
||
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
|
||
<p style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">partial</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Form1</span> : <span style="color: #2b91af;">Form</span> {</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">private</span> <span style="color: #2b91af;">ICalculator</span> m_calculator;</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">public</span> Form1() {</p>
|
||
<p style="margin: 0px;"> InitializeComponent();</p>
|
||
<p style="margin: 0px;"> m_calculator = <span style="color: blue;">new</span> <span style="color: #2b91af;">Calculator</span>();</p>
|
||
<p style="margin: 0px;"> m_calculator.CalcCompleted += Calculator_CalcCompleted;</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> </p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">private</span> <span style="color: blue;">void</span> Run_Click(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">EventArgs</span> e) {</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">int</span> number;</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">if</span> (<span style="color: #2b91af;">Int32</span>.TryParse(txbEingabe.Text, <span style="color: blue;">out</span> number)) {</p>
|
||
<p style="margin: 0px;"> m_calculator.CalcAsync(number, number);</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> </p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">void</span> Calculator_CalcCompleted(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">CalcEventArgs</span> eventArgs) {</p>
|
||
<p style="margin: 0px;"> lblCounter.Text = eventArgs.Result.ToString();</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
</div>
|
||
</div>
|
||
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">
|
||
</p><p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">
|
||
</p><p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">Sobald die Berechnung fertig ist, wird das CalcCompleted-Event ausgelöst und somit die Calculator_CalcComplete-Methode aufgerufen und das Ergebnis der Berechnung in ein Label geschrieben. Der große Vorteil ist, dass man sich an dieser Stelle nicht mehr um die Synchronisierung der Threads kümmern muss, sodass man direkt auf das Label schreiben darf und es nicht zu einem threadübergreifenden Zugriff kommt.</p>
|
||
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">
|
||
</p><p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">Der Calculator sieht wie folgt aus:</p>
|
||
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
|
||
<p style="margin: 0px;"> </p>
|
||
<p style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">interface</span> <span style="color: #2b91af;">ICalculator</span> {</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">event</span> <span style="color: #2b91af;">Calculator</span>.<span style="color: #2b91af;">CalcCompletedEventHandler</span> CalcCompleted;</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">int</span> Calc(<span style="color: blue;">int</span> number);</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">void</span> CalcAsync(<span style="color: blue;">int</span> number, <span style="color: blue;">object</span> userState);</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> </p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Calculator</span> : <span style="color: #2b91af;">ICalculator</span> {</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">public</span> <span style="color: blue;">delegate</span> <span style="color: blue;">void</span> <span style="color: #2b91af;">CalcCompletedEventHandler</span>(<span style="color: blue;">object</span> sender, <span style="color: #2b91af;">CalcEventArgs</span> eventArgs);</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">public</span> <span style="color: blue;">event</span> <span style="color: #2b91af;">CalcCompletedEventHandler</span> CalcCompleted;</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">private</span> <span style="color: #2b91af;">AsyncOperation</span> m_asyncOperation;</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">private</span> <span style="color: blue;">bool</span> m_isRunning;</p>
|
||
<p style="margin: 0px;"> </p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">public</span> <span style="color: blue;">int</span> Calc(<span style="color: blue;">int</span> number) {</p>
|
||
<p style="margin: 0px;"> <span style="color: #2b91af;">Thread</span>.Sleep(10000);</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">return</span> number * number;</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> </p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">public</span> <span style="color: blue;">void</span> CalcAsync(<span style="color: blue;">int</span> number, <span style="color: blue;">object</span> userState) {</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">lock</span> (<span style="color: blue;">this</span>) {</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">if</span> (m_isRunning) {</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">throw</span> <span style="color: blue;">new</span> <span style="color: #2b91af;">InvalidOperationException</span>(<span style="color: #a31515;">"Diese Operation wird bereits ausgeführt"</span>);</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> m_isRunning = <span style="color: blue;">true</span>;</p>
|
||
<p style="margin: 0px;"> m_asyncOperation = <span style="color: #2b91af;">AsyncOperationManager</span>.CreateOperation(userState);</p>
|
||
<p style="margin: 0px;"> <span style="color: #2b91af;">ThreadPool</span>.QueueUserWorkItem(ExecuteCalc, number);</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> .</p>
|
||
<p style="margin: 0px;"> .</p>
|
||
<p style="margin: 0px;"> .</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
</div>
|
||
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">
|
||
</p><p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">Wie man im Interface des Calculator sieht, gibt es eine synchrone und eine asynchrone Methode für die Berechnung.<span> </span>Uns interessiert allerdings nur die asynchrone Methode. Das lock und die Prüfung auf m_isRunning verhindern lediglich, dass die asynchrone Methode während ihrer Ausführung öfter aufgerufen wird. Das Wesentliche an dieser Methode ist der Aufruf von AsyncOperationManager.CreateOperation, denn dieser Aufruf stellt einen Synchronisationskontext bereit, der die Threads miteinander synchronisiert. <span> </span>Für die eigentliche Berechnung wird sich über den ThreadPool ein neuer Thread besorgt, der sich dann um die Abarbeitung der ExecuteCalc in einem eigenen Thread kümmert.</p>
|
||
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">
|
||
</p><div style="font-family: Courier New; font-size: 10pt; color: black; background: none repeat scroll 0% 0% white;">
|
||
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
|
||
<p style="margin: 0px;"><span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Calculator</span> : <span style="color: #2b91af;">ICalculator</span> {</p>
|
||
<p style="margin: 0px;"> .</p>
|
||
<p style="margin: 0px;"> .</p>
|
||
<p style="margin: 0px;"> .</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">private</span> <span style="color: blue;">void</span> ExecuteCalc(<span style="color: blue;">object</span> state) {</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">int</span> result = Calc((<span style="color: blue;">int</span>)state);</p>
|
||
<p style="margin: 0px;"> m_asyncOperation.PostOperationCompleted(CalcCompletedSuccessful, result);</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> </p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">private</span> <span style="color: blue;">void</span> CalcCompletedSuccessful(<span style="color: blue;">object</span> result) {</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">if</span> (CalcCompleted != <span style="color: blue;">null</span>) {</p>
|
||
<p style="margin: 0px;"> CalcCompleted(<span style="color: blue;">this</span>, <span style="color: blue;">new</span> <span style="color: #2b91af;">CalcEventArgs</span>(<span style="color: blue;">null</span>, <span style="color: blue;">false</span>, (<span style="color: blue;">int</span>)result, result));</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">CalcEventArgs</span> : <span style="color: #2b91af;">AsyncCompletedEventArgs</span> {</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">public</span> CalcEventArgs(<span style="color: #2b91af;">Exception</span> error, <span style="color: blue;">bool</span> cancelled, <span style="color: blue;">int</span> result, <span style="color: blue;">object</span> userState)</p>
|
||
<p style="margin: 0px;"> : <span style="color: blue;">base</span>(error, cancelled, userState) {</p>
|
||
<p style="margin: 0px;"> Result = result;</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
<p style="margin: 0px;"> <span style="color: blue;">public</span> <span style="color: blue;">int</span> Result { <span style="color: blue;">get</span>; <span style="color: blue;">private</span> <span style="color: blue;">set</span>; }</p>
|
||
<p style="margin: 0px;"> }</p>
|
||
</div>
|
||
</div>
|
||
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;"><span style="font-size: 10pt; font-family: &amp;amp;"> </span></p>
|
||
<p class="MsoNormal" style="margin-bottom: 0.0001pt; line-height: normal;">Sobald die Berechnung abgeschlossen ist, wird der Thread mit dem MainThread über den Aufruf von PostOperationCompleted synchronisiert und das CalcCompleted-Event ausgelöst und das Ergebnis in das Label geschrieben (s. o.).</p>
|
||
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 1799px; width: 1px; height: 1px; overflow: hidden;">
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US">6</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">public</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">partial</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">class</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US">Form1</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> : </span><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US">Form</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> {</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 7</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">private</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US">ICalculator</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> m_calculator;</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 8</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">public</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> Form1() {</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 9</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> InitializeComponent();</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 10</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> m_calculator = </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">new</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US">Calculator</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US">();</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 11</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> m_calculator.CalcCompleted += Calculator_CalcCompleted;</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 12</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> }</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 13</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 14</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">private</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">void</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> Run_Click(</span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">object</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> sender, </span><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US">EventArgs</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> e) {</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 15</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">int</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> number;</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 16</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">if</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> (</span><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US">Int32</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US">.TryParse(txbEingabe.Text, </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">out</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> number)) {</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 17</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> m_calculator.CalcAsync(number, number);</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 18</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> }</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 19</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> }</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 20</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 21</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">void</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> Calculator_CalcCompleted(</span><span style="font-size: 10pt; font-family: &amp;amp; color: blue;" lang="EN-US">object</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> sender, </span><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US">CalcEventArgs</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> eventArgs) {</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> 22</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;" lang="EN-US"> lblCounter.Text = eventArgs.UserState.ToString();</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;" lang="EN-US"> </span><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;">23</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;"> }</span></p>
|
||
<p style="margin: 0cm 0cm 0.0001pt; background: none repeat scroll 0% 0% white;"><span style="font-size: 10pt; font-family: &amp;amp; color: #2b91af;"> 24</span><span style="font-size: 10pt; font-family: &amp;amp; color: black;"> }</span></p>
|
||
</div>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://dotnet-kicks.de/kick/?url=http%3a%2f%2fblog.aztec-project.org%2f2010%2f05%2f05%2fasynchrone-kommunikation-mit-dem-async-pattern%2f"><img src="./blog_files/KickItImageGenerator(2).ashx" alt="kick it on dotnet-kicks.de" border="0"></a></p><a href="https://web.archive.org/web/20111228070830/http://dotnet-kicks.de/kick/?url=http%3a%2f%2fblog.aztec-project.org%2f2010%2f05%2f05%2fasynchrone-kommunikation-mit-dem-async-pattern%2f">
|
||
</a><div class="addtoany_share_save_container"><a href="https://web.archive.org/web/20111228070830/http://dotnet-kicks.de/kick/?url=http%3a%2f%2fblog.aztec-project.org%2f2010%2f05%2f05%2fasynchrone-kommunikation-mit-dem-async-pattern%2f"></a><div class="a2a_kit addtoany_list"><a href="https://web.archive.org/web/20111228070830/http://dotnet-kicks.de/kick/?url=http%3a%2f%2fblog.aztec-project.org%2f2010%2f05%2f05%2fasynchrone-kommunikation-mit-dem-async-pattern%2f"></a><a class="a2a_dd addtoany_share_save" href="https://web.archive.org/web/20111228073144/http://www.addtoany.com/share_save#url=https%3A%2F%2Fweb.archive.org%2Fweb%2F20111228070830%2Fhttp%3A%2F%2Fblog.aztec-project.org%2F2010%2F05%2F05%2Fasynchrone-kommunikation-mit-dem-async-pattern%2F&title=Asynchrone%20Kommunikation%20mit%20dem%20Async-Pattern&description="><img src="./blog_files/share_save_171_16.png" width="171" height="16" alt="Share"></a></div>
|
||
<script type="text/javascript"><!--
|
||
a2a_config.linkname="Asynchrone Kommunikation mit dem Async-Pattern";
|
||
a2a_config.linkurl="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/05/05/asynchrone-kommunikation-mit-dem-async-pattern/";
|
||
a2a.init('page');
|
||
//--></script>
|
||
|
||
</div><fb:like href="http://blog.aztec-project.org/2010/05/05/asynchrone-kommunikation-mit-dem-async-pattern/" layout="standard" show_faces="true" width="450" action="like" colorscheme="light" style="margin-top:5px;" class="fb_edge_widget_with_comment fb_iframe_widget"></fb:like> </div>
|
||
|
||
<p class="clear">
|
||
<img src="./blog_files/comments.gif" alt="Comments">
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/05/05/asynchrone-kommunikation-mit-dem-async-pattern/#comments" title="Kommentiere Asynchrone Kommunikation mit dem Async-Pattern">3 Kommentare »</a> </p>
|
||
</div>
|
||
|
||
|
||
<div class="post" id="post-935">
|
||
<div class="postinfo">
|
||
|
||
<div class="datestamp">
|
||
<div>
|
||
<span class="cal1 cal1x">Mrz</span>
|
||
<span class="cal2">14</span>
|
||
<span class="cal3">2010</span>
|
||
</div>
|
||
</div>
|
||
<span class="switch-post">
|
||
<a href="javascript:toggleSidebars();" class="switch-sidebars"><img src="./blog_files/bullet_sidebars_hide.png" alt="" class="png"></a><a href="javascript:togglePost(935);" id="switch-post-935"><img src="./blog_files/bullet_toggle_minus.png" alt="" class="png"></a>
|
||
</span>
|
||
|
||
<h3 class="posttitle"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/03/14/spreu-weizen-selectprogrammierer/" rel="bookmark" title="Permanenter Link zu (Spreu + Weizen).Select(Programmierer)">(Spreu + Weizen).Select(Programmierer)</a></h3>
|
||
<small>
|
||
Geschrieben von <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/author/chi/" title="Artikel von Christina Hirth">Christina Hirth</a> in <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/clean-code-developing/" title="Alle Artikel in Clean Code Developing ansehen" rel="category tag">Clean Code Developing</a>, tags: <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/clean-code/" rel="tag">Clean Code</a> </small>
|
||
|
||
</div>
|
||
|
||
<div class="entry">
|
||
<p>Obwohl wir <a href="https://web.archive.org/web/20111228070830/http://www.codinghorror.com/blog/" target="_blank">Jeff Atwood</a> schon vor Monaten von unseren Bloggerliste gestrichen haben, ich habe ihn noch nicht aus meinem Googlereader entfernt. Er ist ein Typ, der liebt viel Wirbel zu verursachen (<a href="https://web.archive.org/web/20111228070830/http://www.hanselman.com/blog/" target="_blank">Scott Hanselmann</a> nennt ihn aus den Wörtern <em>friend</em> und <em>enemy</em> “my friendemy” <img src="./blog_files/icon_wink.gif" alt=";)" class="wp-smiley"> ) aber manchmal trifft er den Nagel auf den Kopf. So auch in seinem letzten Artikel <a href="https://web.archive.org/web/20111228070830/http://www.codinghorror.com/blog/2010/02/the-nonprogramming-programmer.html" target="_blank">“The Non-Programming Programmer”</a>.</p>
|
||
<blockquote><p>…<br>
|
||
I wrote that article in 2007, and I am stunned, but not entirely surprised, to hear that three years later “the vast majority” of so-called programmers who apply for a programming job interview are unable to write the smallest of programs. To be clear, hard is a relative term — we’re not talking about complicated, Google-style graduate computer science interview problems. This is extremely simple stuff we’re asking candidates to do. And they can’t. <strong>It’s the equivalent of attempting to hire a truck driver and finding out that 90 percent of the job applicants can’t find the gas pedal or the gear shift.</strong></p></blockquote>
|
||
<p>Aus den Unmengen von Kommentaren zu urteilen, ist das ein Problem, mit dem sehr viele zu kämpfen haben. Sein Artikel beschäftigt sich mit der Arbeit von Personen, die Einstellungsgespräche führen, und er versucht ein paar Tipps zu geben, wie man dieses Verfahren führen soll.</p>
|
||
<p>Ich musste allerdings beim Lesen ständig auf die Situation “danach” denken, wenn diese NPPs (sprich Non- Programming Programmers) bereits aus irgendeinem Grund eingestellt wurden. Aus Erfahrung weiß ich genau, was mir viel über jemanden verraten würde: weiß er/sie etwas über Clean Code, kennt er die Folgen vom Creepy Code und wie ist die persönliche Einstellung dazu? Also zusammengefasst: geht es um einen <strong>professionellen Softwareentwickler</strong>? Dafür würden auch ein Code-Review oder ein paar Fragen reichen.</p>
|
||
<p>Was haltet ihr von Coding bei der Einstellung? Ist das auch in Europa üblich? Würde das die unpassenden Personen ausfiltern? Oder soll man sich die Zeit nehmen und dem Kandidaten “ungesehen” die Probezeit anbieten? Würde das vielleicht zu viele Personen ausfiltern? Kann man sich das überhaupt erlauben in der heutigen Zeit der Fachkräftemangel? (Gut, man fragt sich natürlich, ob wir hier über “Fachkraft” sprechen dürfen…)</p>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://dotnet-kicks.de/kick/?url=http%3a%2f%2fblog.aztec-project.org%2f2010%2f03%2f14%2fspreu-weizen-selectprogrammierer%2f"><img src="./blog_files/KickItImageGenerator(3).ashx" border="0" alt="kick it on dotnet-kicks.de"></a></p>
|
||
<div class="addtoany_share_save_container"><div class="a2a_kit addtoany_list"><a class="a2a_dd addtoany_share_save" href="https://web.archive.org/web/20111228073144/http://www.addtoany.com/share_save#url=https%3A%2F%2Fweb.archive.org%2Fweb%2F20111228070830%2Fhttp%3A%2F%2Fblog.aztec-project.org%2F2010%2F03%2F14%2Fspreu-weizen-selectprogrammierer%2F&title=(Spreu%20%2B%20Weizen).Select(Programmierer)&description="><img src="./blog_files/share_save_171_16.png" width="171" height="16" alt="Share"></a></div>
|
||
<script type="text/javascript"><!--
|
||
a2a_config.linkname="(Spreu + Weizen).Select(Programmierer)";
|
||
a2a_config.linkurl="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/03/14/spreu-weizen-selectprogrammierer/";
|
||
a2a.init('page');
|
||
//--></script>
|
||
|
||
</div><fb:like href="http://blog.aztec-project.org/2010/03/14/spreu-weizen-selectprogrammierer/" layout="standard" show_faces="true" width="450" action="like" colorscheme="light" style="margin-top:5px;" class="fb_edge_widget_with_comment fb_iframe_widget"></fb:like> </div>
|
||
|
||
<p class="clear">
|
||
<img src="./blog_files/comments.gif" alt="Comments">
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/03/14/spreu-weizen-selectprogrammierer/#comments" title="Kommentiere (Spreu + Weizen).Select(Programmierer)">14 Kommentare »</a> </p>
|
||
</div>
|
||
|
||
|
||
<div class="post" id="post-916">
|
||
<div class="postinfo">
|
||
|
||
<div class="datestamp">
|
||
<div>
|
||
<span class="cal1 cal1x">Feb</span>
|
||
<span class="cal2">22</span>
|
||
<span class="cal3">2010</span>
|
||
</div>
|
||
</div>
|
||
<span class="switch-post">
|
||
<a href="javascript:toggleSidebars();" class="switch-sidebars"><img src="./blog_files/bullet_sidebars_hide.png" alt="" class="png"></a><a href="javascript:togglePost(916);" id="switch-post-916"><img src="./blog_files/bullet_toggle_minus.png" alt="" class="png"></a>
|
||
</span>
|
||
|
||
<h3 class="posttitle"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/02/22/nosql-mit-stupiddb/" rel="bookmark" title="Permanenter Link zu NoSQL mit StupidDB">NoSQL mit StupidDB</a></h3>
|
||
<small>
|
||
Geschrieben von <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/author/sko/" title="Artikel von Stefan Kölle">Stefan Kölle</a> in <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/stupiddb/" title="Alle Artikel in StupidDB ansehen" rel="category tag">StupidDB</a>, tags: <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/datenbank/" rel="tag">Datenbank</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/nosql/" rel="tag">NoSQL</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/schemalos/" rel="tag">Schemalos</a> </small>
|
||
|
||
</div>
|
||
|
||
<div class="entry">
|
||
<p>Seit ein paar Monaten wird der Begriff <a href="https://web.archive.org/web/20111228070830/http://www.computerworld.com/s/article/9135086/No_to_SQL_Anti_database_movement_gains_steam" target="_blank">NoSQL (Not only SQL)</a> immer häufiger verwendet. Wir sind mit unserer schemalosen Datenbank <a href="https://web.archive.org/web/20111228070830/http://sourceforge.net/projects/stupiddb/" target="_blank">StupidDB</a> vor eineinhalb Jahren bereits auf diesen Zug aufgesprungen und jetzt hat sie einen Überbegriff bekommen: auch StupidDB ist NoSQL!</p>
|
||
<p>Auf dem <a href="https://web.archive.org/web/20111228070830/http://www.bcnue2.de/" target="_blank">BarCamp in Nürnberg</a> war NoSQL auch ein Thema und <a href="https://web.archive.org/web/20111228070830/http://twitter.com/jweiss" target="_blank">Jonathan Weiss</a> hat in seiner Session gut dargestellt, dass relationale Datenbanken nicht immer die Lösung für alle Probleme sind. NoSQL Datenbanken speichern meist dokumentenorientiert und sind dadurch nicht an ein festes Schema gebunden. Relationale Datenbanken haben ein fixes Schema und erlauben dynamische Abfragen der Daten, bei NoSQL ist dies umgekehrt. Weitere Informationen zu <a href="https://web.archive.org/web/20111228070830/http://en.wikipedia.org/wiki/NoSQL" target="_blank">NoSQL bei Wikipedia</a>.</p>
|
||
<p>Im <a href="https://web.archive.org/web/20111228070830/http://www.dotnetpro.de/articles/onlinearticle3220.aspx" target="_blank">März Heft der dotnetpro</a> stelle ich ausführlich den Einsatz von StupidDB vor. Das Heft ist am 18.2.2010 erschienen und sollte jetzt in jedem gut sortierten Kiosk erhältlich sein.</p>
|
||
<p>Für alle, die sich Heft nicht griffbereit haben, ich habe bereits Mitte letzten Jahres in einem Blogpost den <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2009/07/13/stupiddb-object-persistence-framework/" target="_blank">Einsatz von StupidDB</a> beschrieben. Hier sieht man zumindest die Grundzüge der StupidDB. Das aktuelle dotnetpro Heft lohnt sich jedoch trotzdem, da hier noch weitere Artikel zum Thema NoSQL zu finden sind. Unter anderem das <a href="https://web.archive.org/web/20111228070830/http://loungerepo.codeplex.com/" target="_blank">Lounge Repository</a> von <a href="https://web.archive.org/web/20111228070830/http://www.ralfw.de/default.html" target="_blank">Ralf Westphal</a> und auch CouchDB.</p>
|
||
<p>Als neuester Vertreter in der NoSQL Bewegung gilt MongoDB. Eine Opensource Implementierung die nun auch Sourceforge einsetzt. Auch dafür gibt es schon <a href="https://web.archive.org/web/20111228070830/http://odetocode.com/Blogs/scott/archive/2009/10/13/experimenting-with-mongodb-from-c.aspx" target="_blank">Blogposts</a> und Tests mit .NET.</p>
|
||
<p>Zudem hat <a href="https://web.archive.org/web/20111228070830/http://ayende.com/Blog/Default.aspx" target="_blank">Ayende Rahien</a> im Herbst letzten Jahres auch seine <a href="https://web.archive.org/web/20111228070830/http://odetocode.com/Blogs/scott/archive/2009/10/13/experimenting-with-mongodb-from-c.aspx" target="_blank">Rhino Divan DB</a> vorgestellt. Interessant klingt auch <a href="https://web.archive.org/web/20111228070830/http://blog.technewlogic.de/StaticContent/Pages/ObjectLounge_Main.aspx" target="_blank">Object Lounge</a>.</p>
|
||
<p>Es scheint also ein Bedarf an alternativer Datenpersistenz zu bestehen, wird sich zeigen wohin dieses Jahr die Reise bei NoSQL geht.</p>
|
||
<p>Wer sich den aktuellen Code einmal ansehen möchte, kann dies gerne unter folgendem Link ansehen:<br>
|
||
<a href="https://web.archive.org/web/20111228070830/https://stupiddb.svn.sourceforge.net/svnroot/stupiddb/trunk" target="_blank">https://stupiddb.svn.sourceforge.net/svnroot/stupiddb/trunk</a></p>
|
||
<p>Als DLL haben wir StupidDB auf <a href="https://web.archive.org/web/20111228070830/http://www.aztec-project.org/" target="_blank">www.aztec-project.org</a> bereitgestellt.</p>
|
||
<p>Verwendet ihr schon NoSQL?</p>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://dotnet-kicks.de/kick/?url=http%3a%2f%2fblog.aztec-project.org%2f2010%2f02%2f22%2fnosql-mit-stupiddb%2f"><img src="./blog_files/KickItImageGenerator(4).ashx" border="0" alt="kick it on dotnet-kicks.de"></a></p>
|
||
<div class="addtoany_share_save_container"><div class="a2a_kit addtoany_list"><a class="a2a_dd addtoany_share_save" href="https://web.archive.org/web/20111228073144/http://www.addtoany.com/share_save#url=https%3A%2F%2Fweb.archive.org%2Fweb%2F20111228070830%2Fhttp%3A%2F%2Fblog.aztec-project.org%2F2010%2F02%2F22%2Fnosql-mit-stupiddb%2F&title=NoSQL%20mit%20StupidDB&description="><img src="./blog_files/share_save_171_16.png" width="171" height="16" alt="Share"></a></div>
|
||
<script type="text/javascript"><!--
|
||
a2a_config.linkname="NoSQL mit StupidDB";
|
||
a2a_config.linkurl="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/02/22/nosql-mit-stupiddb/";
|
||
a2a.init('page');
|
||
//--></script>
|
||
|
||
</div><fb:like href="http://blog.aztec-project.org/2010/02/22/nosql-mit-stupiddb/" layout="standard" show_faces="true" width="450" action="like" colorscheme="light" style="margin-top:5px;" class="fb_edge_widget_with_comment fb_iframe_widget"></fb:like> </div>
|
||
|
||
<p class="clear">
|
||
<img src="./blog_files/comments.gif" alt="Comments">
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/02/22/nosql-mit-stupiddb/#comments" title="Kommentiere NoSQL mit StupidDB">8 Kommentare »</a> </p>
|
||
</div>
|
||
|
||
|
||
<div class="post" id="post-888">
|
||
<div class="postinfo">
|
||
|
||
<div class="datestamp">
|
||
<div>
|
||
<span class="cal1 cal1x">Feb</span>
|
||
<span class="cal2">16</span>
|
||
<span class="cal3">2010</span>
|
||
</div>
|
||
</div>
|
||
<span class="switch-post">
|
||
<a href="javascript:toggleSidebars();" class="switch-sidebars"><img src="./blog_files/bullet_sidebars_hide.png" alt="" class="png"></a><a href="javascript:togglePost(888);" id="switch-post-888"><img src="./blog_files/bullet_toggle_minus.png" alt="" class="png"></a>
|
||
</span>
|
||
|
||
<h3 class="posttitle"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/02/16/beispiel-model-view-presenter-winforms/" rel="bookmark" title="Permanenter Link zu Beispiel Model-View-Presenter mit WinForms">Beispiel Model-View-Presenter mit WinForms</a></h3>
|
||
<small>
|
||
Geschrieben von <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/author/sko/" title="Artikel von Stefan Kölle">Stefan Kölle</a> in <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/how-to/" title="Alle Artikel in How-To ansehen" rel="category tag">How-To</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/mvc/" title="Alle Artikel in MVC ansehen" rel="category tag">MVC</a>, tags: <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/contract-first/" rel="tag">Contract-First</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/mvp/" rel="tag">MVP</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/winforms/" rel="tag">WinForms</a> </small>
|
||
|
||
</div>
|
||
|
||
<div class="entry">
|
||
<p>Im Teil 1 (<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2009/12/02/mvp-mit-WinForms-model-view-presenter/">MVP mit WinForms</a>) habe ich die Grundgedanken zur Implementierung von MVP in WinForms vorgestellt, mit der man WinForm-Anwendungen mit UnitTests abdecken kann. In einer komplexeren WinForm-Anwendung gibt es neben dem Startform auch mehrere Unterforms, die durch das Hauptform aufgerufen werden müssen.</p>
|
||
<p><strong>Das Beispielprojekt<br>
|
||
</strong><br>
|
||
Zur Demonstration habe ich ein Beispielprogramm mit MVP entwickelt, welches einen sehr einfachen Twitterclient darstellt. Das Beispiel wurde nach Contract-First komponentenorientiert gebaut und besteht neben der MVP-Komponente aus weiteren Komponenten.</p>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/wp-content/uploads/2010/02/Foto1.jpg"><img class="alignnone size-full wp-image-900" title="TwitterClient Architektur" src="./blog_files/Foto1.jpg" alt="" width="200" height="159"></a></p>
|
||
<p>Die weiteren Komponenten haben nichts mit MVP zu tun, sondern sollen nur zeigen, wie man MVP in diesem Umfeld integriert. -> <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/wp-content/uploads/2010/02/TwitterClient.zip">Den kompletten Sourcecode downloaden</a></p>
|
||
<p>Die Funktionen des Twitter-Clients sollen sein:<br>
|
||
1. Anzeige der 20 neuesten Meldungen aus der Timeline im Hauptfenster<br>
|
||
2. Der Benutzer soll Status-Updates bei Twitter posten können<br>
|
||
3. Die Zugangsdaten des Twitter-Accounts sollen gespeichert werden können</p>
|
||
<p><strong>Die WinForm-Komponente<br>
|
||
</strong></p>
|
||
<p>Um die Funktionen abzubilden, sind 3 Screens notwendig:<br>
|
||
1. Hauptbildschirm mit der Timeline des Twitter-Accounts<br>
|
||
2. Form für das Absenden eines Twitter-Status-Updates<br>
|
||
3. Konfigurationsbildschirm für den Twitter-Account</p>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/wp-content/uploads/2010/02/Foto2.jpg"><img class="alignnone size-medium wp-image-901" title="TwitterClient UI" src="./blog_files/Foto2-300x143.jpg" alt="" width="300" height="143"></a></p>
|
||
<p>Jedes WinForm besteht aus einer View-Klasse (dem WinForm), einem Model, welches als Singleton im IoC-Container konfiguriert wird und einem Presenter. Die einzelnen Funktionen in den Views sind im Beispielprojekt durch Tests abgedeckt und zeigen die notwendigen Tests für diese Art der Implementierung. Gerade durch geringen Funktionsumfang kann man das Muster der Verwendung gut erkennen.</p>
|
||
<p>In der MVP-Komponente befindet sich auch der “Inversion of Control”-Container, der die einzelnen Komponenten zusammenfügt. Dies könnte auch in einer extra Runner-Komponente ausgelagert sein.</p>
|
||
<p><strong>Aufrufen eines weiteren WinForms<br>
|
||
</strong><br>
|
||
Alle Abhängigkeiten werden per Dependency-Injection-Container an den Presenter übergeben. Da das Hauptform alle weiteren Views und Presenter instanziert, müssten diese alle bereits beim Programmstart instanziert werden. Um dies zu verhindern, habe ich eine IPresenterFactory eingeführt, die zur Laufzeit weitere Presenter nachinstanzieren kann. Die Factory selbst hält eine Referenz auf den Container und wird bei Programmstart im Container hinzugefügt. Um sicherzustellen, dass weiterhin alle anderen Abhängigkeiten über den Konstruktor definiert werden, können aus dieser Factory nur Klassen instanziert werden, die IPresenter implementieren.</p>
|
||
<p><strong>Fazit</strong><br>
|
||
Mit dieser Beispielanwendung kann man eine mögliche Implementierung von Model View Presenter in der Variante Supervising Controller sehen. Es ist also auch mit WinForms eine voll getestete MVP-Implementierung zu erstellen.</p>
|
||
<p>Anhang:<br>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/wp-content/uploads/2010/02/TwitterClient.zip">Kompletter Sourcecode der Beispielanwendung als ZIP</a></p>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://dotnet-kicks.de/kick/?url=http%3a%2f%2fblog.aztec-project.org%2f2010%2f02%2f16%2fbeispiel-model-view-presenter-winforms%2f"><img src="./blog_files/KickItImageGenerator(5).ashx" border="0" alt="kick it on dotnet-kicks.de"></a></p>
|
||
<div class="addtoany_share_save_container"><div class="a2a_kit addtoany_list"><a class="a2a_dd addtoany_share_save" href="https://web.archive.org/web/20111228073144/http://www.addtoany.com/share_save#url=https%3A%2F%2Fweb.archive.org%2Fweb%2F20111228070830%2Fhttp%3A%2F%2Fblog.aztec-project.org%2F2010%2F02%2F16%2Fbeispiel-model-view-presenter-winforms%2F&title=Beispiel%20Model-View-Presenter%20mit%20WinForms&description="><img src="./blog_files/share_save_171_16.png" width="171" height="16" alt="Share"></a></div>
|
||
<script type="text/javascript"><!--
|
||
a2a_config.linkname="Beispiel Model-View-Presenter mit WinForms";
|
||
a2a_config.linkurl="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/02/16/beispiel-model-view-presenter-winforms/";
|
||
a2a.init('page');
|
||
//--></script>
|
||
|
||
</div><fb:like href="http://blog.aztec-project.org/2010/02/16/beispiel-model-view-presenter-winforms/" layout="standard" show_faces="true" width="450" action="like" colorscheme="light" style="margin-top:5px;" class="fb_edge_widget_with_comment fb_iframe_widget"></fb:like> </div>
|
||
|
||
<p class="clear">
|
||
<img src="./blog_files/comments.gif" alt="Comments">
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/02/16/beispiel-model-view-presenter-winforms/#comments" title="Kommentiere Beispiel Model-View-Presenter mit WinForms">3 Kommentare »</a> </p>
|
||
</div>
|
||
|
||
|
||
<div class="post" id="post-866">
|
||
<div class="postinfo">
|
||
|
||
<div class="datestamp">
|
||
<div>
|
||
<span class="cal1 cal1x">Jan</span>
|
||
<span class="cal2">27</span>
|
||
<span class="cal3">2010</span>
|
||
</div>
|
||
</div>
|
||
<span class="switch-post">
|
||
<a href="javascript:toggleSidebars();" class="switch-sidebars"><img src="./blog_files/bullet_sidebars_hide.png" alt="" class="png"></a><a href="javascript:togglePost(866);" id="switch-post-866"><img src="./blog_files/bullet_toggle_minus.png" alt="" class="png"></a>
|
||
</span>
|
||
|
||
<h3 class="posttitle"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/01/27/softwarezellen-eine-losung-um-die-komplexitat-zu-beherrschen/" rel="bookmark" title="Permanenter Link zu Softwarezellen – eine Lösung um die Komplexität zu beherrschen">Softwarezellen – eine Lösung um die Komplexität zu beherrschen</a></h3>
|
||
<small>
|
||
Geschrieben von <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/author/chi/" title="Artikel von Christina Hirth">Christina Hirth</a> in <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/architektur/" title="Alle Artikel in Architektur ansehen" rel="category tag">Architektur</a>, <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/clean-code-developing/" title="Alle Artikel in Clean Code Developing ansehen" rel="category tag">Clean Code Developing</a>, tags: <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/architektur/" rel="tag">Architektur</a> </small>
|
||
|
||
</div>
|
||
|
||
<div class="entry">
|
||
<p>Wir haben wie viele von uns in der Webentwicklung vor vielen Jahren mit Scriptsprachen und mit prozeduralen – Spaghetti-Code <img src="./blog_files/icon_wink.gif" alt=";)" class="wp-smiley"> – angefangen. Mit der Zeit wuchs unsere Webpräsenz zu einer unüberschaubaren Anwendung mit manchen Seiten, die keiner von uns mehr anfassen wollte – aus Angst vor den Konsequenzen.</p>
|
||
<p>Um etwas Ordnung in die Webanwendungen zu bringen, haben wir also vor 4 Jahren angefangen, nach einem 3-Schichten-Modell zu entwickeln. Wir haben neue Funktionalitäten und neue Anwendungen nur noch so gebaut und wir waren für eine kurze Zeit zufrieden. Alles lief gut. Als wir den Umstieg auf .NET begonnen haben, haben wir weiterhin nach einem Mehr-Schichten-Modell gearbeitet, wir haben nur die Anzahl der Schichten erhöht.</p>
|
||
<p>Die Anwendungen wuchsen weiter, wir haben immer mehr Bereiche ausgelagert und diese hauptsächlich mit Webservices angesprochen. Währenddessen waren wir daran, unser Hauptprodukt, ein Portal für unseren Kunden mit der neuen Technologie entsprechend der alten Anforderung neu zu bauen. Und dann ist es passiert: ehe wir uns versahen, hatten wir ein riesiges Projekt, das alle mögliche Anwendungen eingebunden bzw. durch Webservices angesprochen hat. Die Grenzen waren fließend, eventuelle Änderungen an anderen Anwendungen konnten das Projekt unbuildbar machen, also ein ähnlicher Zustand wie vor paar Jahren zuvor.</p>
|
||
<p>Die Weiterentwicklung hat nicht nur in unserer Art zu Programmieren stattgefunden, wir selbst haben uns auch weiterentwickelt, wir haben die Community kennen gelernt. Bei den Open Space-Veranstaltungen haben wir <a href="https://web.archive.org/web/20111228070830/http://lieser-online.de/" target="_blank">Stefan</a> und <a href="https://web.archive.org/web/20111228070830/http://ralfw.de/default.html" target="_blank">Ralf</a> kennengelernt und durch sie eine andere Sichtweise der Dinge: die <a href="https://web.archive.org/web/20111228070830/http://weblogs.asp.net/ralfw/archive/tags/Software+Cells/default.aspx" target="_blank">Modellierung einer Lösung durch Softwarezellen</a>.</p>
|
||
<p>Wir haben sie zu uns eingeladen und uns die Idee erklären lassen. Das Stichwort heißt <a href="https://web.archive.org/web/20111228070830/http://de.wikipedia.org/wiki/Holon" target="_blank">Holon</a>. Wikipedia definiert ein Holon folgendermaßen:</p>
|
||
<blockquote><p>Der Begriff Holon (von griech. ὅλος, hólos und ὀν, on „ganzes Seiendes“) wurde von Arthur Koestler geprägt und bedeutet ein Ganzes, das Teil eines anderen Ganzen ist. Es wird auch als “Ganzes/Teil” umschrieben.</p></blockquote>
|
||
<p>Jede Anwendung ist ein Ganzes, die aus Teilen besteht, die ihrerseits auch als Ganze zu betrachten sind.</p>
|
||
<p>Seit dem Besuch von Ralf und Stefan haben wir uns die Artikelserie von Ralf von <a href="https://web.archive.org/web/20111228070830/http://dotnetpro.de/" target="_blank">dotnetpro</a> durchgelesen, die Webcasts (<a href="https://web.archive.org/web/20111228070830/https://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032298692" target="_blank">Teil 1</a>, <a href="https://web.archive.org/web/20111228070830/https://www.microsoft.com/germany/msdn/webcasts/library.aspx?id=1032298700" target="_blank">Teil 2</a>) angeschaut und wir haben angefangen, diese Modellierung auszuprobieren. </p>
|
||
<p>Wir haben noch einen langen und interessanten Weg vor uns, aber eins ist jetzt schon sicher: wir werden versuchen unsere nächste Projekte durch Softzellen modellieren.</p>
|
||
<p>Solange die Komplexität nicht wieder die Überhand gewinnt <img src="./blog_files/icon_wink.gif" alt=";)" class="wp-smiley"> </p>
|
||
<p><a href="https://web.archive.org/web/20111228070830/http://dotnet-kicks.de/kick/?url=http%3a%2f%2fblog.aztec-project.org%2f2010%2f01%2f27%2fsoftwarezellen-eine-losung-um-die-komplexitat-zu-beherrschen%2f" target="_blank"><img src="./blog_files/KickItImageGenerator(6).ashx" alt="kick it on dotnet-kicks.de" border="0"></a></p>
|
||
<div class="addtoany_share_save_container"><div class="a2a_kit addtoany_list"><a class="a2a_dd addtoany_share_save" href="https://web.archive.org/web/20111228073144/http://www.addtoany.com/share_save#url=https%3A%2F%2Fweb.archive.org%2Fweb%2F20111228070830%2Fhttp%3A%2F%2Fblog.aztec-project.org%2F2010%2F01%2F27%2Fsoftwarezellen-eine-losung-um-die-komplexitat-zu-beherrschen%2F&title=Softwarezellen%20%E2%80%93%20eine%20L%C3%B6sung%20um%20die%20Komplexit%C3%A4t%20zu%20beherrschen&description="><img src="./blog_files/share_save_171_16.png" width="171" height="16" alt="Share"></a></div>
|
||
<script type="text/javascript"><!--
|
||
a2a_config.linkname="Softwarezellen – eine Lösung um die Komplexität zu beherrschen";
|
||
a2a_config.linkurl="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/01/27/softwarezellen-eine-losung-um-die-komplexitat-zu-beherrschen/";
|
||
a2a.init('page');
|
||
//--></script>
|
||
|
||
</div><fb:like href="http://blog.aztec-project.org/2010/01/27/softwarezellen-eine-losung-um-die-komplexitat-zu-beherrschen/" layout="standard" show_faces="true" width="450" action="like" colorscheme="light" style="margin-top:5px;" class="fb_edge_widget_with_comment fb_iframe_widget"></fb:like> </div>
|
||
|
||
<p class="clear">
|
||
<img src="./blog_files/comments.gif" alt="Comments">
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/01/27/softwarezellen-eine-losung-um-die-komplexitat-zu-beherrschen/#comments" title="Kommentiere Softwarezellen – eine Lösung um die Komplexität zu beherrschen">2 Kommentare »</a> </p>
|
||
</div>
|
||
|
||
|
||
<div class="navigation">
|
||
<div class="alignleft"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/page/2/">« Ältere Einträge</a></div>
|
||
<div class="alignright"></div>
|
||
</div>
|
||
|
||
</td>
|
||
|
||
<td id="sidebar1">
|
||
<ul class="sidebars">
|
||
<li><h4 class="widgettitle" style="cursor: n-resize;">Suche</h4>
|
||
<form method="get" id="searchform" action="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/">
|
||
<div><input type="text" value="" name="s" id="s">
|
||
<input type="image" id="searchsubmit" src="./blog_files/search.gif">
|
||
</div>
|
||
</form>
|
||
</li>
|
||
<li><h4 class="widgettitle" style="cursor: n-resize;"> </h4>
|
||
<table id="wp-calendar" summary="Kalender">
|
||
<caption>Dezember 2011</caption>
|
||
<thead>
|
||
<tr>
|
||
<th scope="col" title="Montag">M</th>
|
||
<th scope="col" title="Dienstag">D</th>
|
||
<th scope="col" title="Mittwoch">M</th>
|
||
<th scope="col" title="Donnerstag">D</th>
|
||
<th scope="col" title="Freitag">F</th>
|
||
<th scope="col" title="Samstag">S</th>
|
||
<th scope="col" title="Sonntag">S</th>
|
||
</tr>
|
||
</thead>
|
||
|
||
<tfoot>
|
||
<tr>
|
||
<td colspan="3" id="prev"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/2010/06/" title="Zeige Artikel für Juni 2010">« Jun</a></td>
|
||
<td class="pad"> </td>
|
||
<td colspan="3" id="next" class="pad"> </td>
|
||
</tr>
|
||
</tfoot>
|
||
|
||
<tbody>
|
||
<tr>
|
||
<td colspan="3" class="pad"> </td><td>1</td><td>2</td><td>3</td><td>4</td>
|
||
</tr>
|
||
<tr>
|
||
<td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td>
|
||
</tr>
|
||
<tr>
|
||
<td>12</td><td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td>
|
||
</tr>
|
||
<tr>
|
||
<td>19</td><td>20</td><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td>
|
||
</tr>
|
||
<tr>
|
||
<td>26</td><td>27</td><td id="today">28</td><td>29</td><td>30</td><td>31</td>
|
||
<td class="pad" colspan="1"> </td>
|
||
</tr>
|
||
</tbody>
|
||
</table> </li>
|
||
<li class="pagenav"><h4 class="widgettitle" style="cursor: n-resize;">Seiten</h4><ul><li class="page_item page-item-2"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/about/" title="About">About</a></li>
|
||
</ul></li>
|
||
<li><h4 class="widgettitle" style="cursor: n-resize;">Kategorien</h4>
|
||
<ul>
|
||
<li class="cat-item cat-item-7"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/architektur/" title="Alle unter Architektur abgelegten Artikel ansehen">Architektur</a> (5)
|
||
</li>
|
||
<li class="cat-item cat-item-62"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/barcamp/" title="Alle unter BarCamp abgelegten Artikel ansehen">BarCamp</a> (1)
|
||
</li>
|
||
<li class="cat-item cat-item-34"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/clean-code-developing/" title="Alle unter Clean Code Developing abgelegten Artikel ansehen">Clean Code Developing</a> (10)
|
||
</li>
|
||
<li class="cat-item cat-item-8"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/how-to/" title="Alle unter How-To abgelegten Artikel ansehen">How-To</a> (8)
|
||
</li>
|
||
<li class="cat-item cat-item-49"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/mvc/" title="Alle unter MVC abgelegten Artikel ansehen">MVC</a> (3)
|
||
</li>
|
||
<li class="cat-item cat-item-31"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/open-space/" title="Alle unter Open Space abgelegten Artikel ansehen">Open Space</a> (5)
|
||
</li>
|
||
<li class="cat-item cat-item-60"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/pattern/" title="Alle unter Pattern abgelegten Artikel ansehen">Pattern</a> (2)
|
||
</li>
|
||
<li class="cat-item cat-item-50"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/prio-conference/" title="Alle unter prio.conference abgelegten Artikel ansehen">prio.conference</a> (1)
|
||
</li>
|
||
<li class="cat-item cat-item-32"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/release/" title="Alle unter Release abgelegten Artikel ansehen">Release</a> (1)
|
||
</li>
|
||
<li class="cat-item cat-item-4"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/scrum/" title="Alle unter SCRUM abgelegten Artikel ansehen">SCRUM</a> (1)
|
||
</li>
|
||
<li class="cat-item cat-item-33"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/stupiddb/" title="Alle unter StupidDB abgelegten Artikel ansehen">StupidDB</a> (3)
|
||
</li>
|
||
<li class="cat-item cat-item-21"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/tipps/" title="Alle unter Tipps abgelegten Artikel ansehen">Tipps</a> (4)
|
||
</li>
|
||
<li class="cat-item cat-item-1"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/uncategorized/" title="Alle unter Uncategorized abgelegten Artikel ansehen">Uncategorized</a> (0)
|
||
</li>
|
||
<li class="cat-item cat-item-38"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/unit-testing/" title="Alle unter Unit Testing abgelegten Artikel ansehen">Unit Testing</a> (2)
|
||
</li>
|
||
<li class="cat-item cat-item-30"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/veranstaltung/" title="Alle unter Veranstaltung abgelegten Artikel ansehen">Veranstaltung</a> (1)
|
||
</li>
|
||
<li class="cat-item cat-item-12"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/visual-studio-addins/" title="Alle unter Visual Studio Addins abgelegten Artikel ansehen">Visual Studio Addins</a> (1)
|
||
</li>
|
||
<li class="cat-item cat-item-46"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/webanwendungen/" title="Alle unter Webanwendungen abgelegten Artikel ansehen">Webanwendungen</a> (1)
|
||
</li>
|
||
<li class="cat-item cat-item-67"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/webcamps/" title="Alle unter Webcamps abgelegten Artikel ansehen">Webcamps</a> (0)
|
||
</li>
|
||
<li class="cat-item cat-item-24"><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/category/webervice/" title="Alle unter Webservice abgelegten Artikel ansehen">Webservice</a> (1)
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
|
||
<li><h4 class="widgettitle" style="cursor: n-resize;">Tags</h4>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/dot-net/" class="tag-link-27" title="3 Themen" style="font-size: 15.6363636364pt;">.NET</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/addin/" class="tag-link-14" title="1 Thema" style="font-size: 8pt;">Addin</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/architektur/" class="tag-link-7" title="5 Themen" style="font-size: 20.2181818182pt;">Architektur</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/asp-classic/" class="tag-link-25" title="1 Thema" style="font-size: 8pt;">ASP-Classic</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/assemblies/" class="tag-link-29" title="1 Thema" style="font-size: 8pt;">Assemblies</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/assembly/" class="tag-link-9" title="2 Themen" style="font-size: 12.5818181818pt;">Assembly</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/basics/" class="tag-link-45" title="1 Thema" style="font-size: 8pt;">Basics</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/buch/" class="tag-link-37" title="2 Themen" style="font-size: 12.5818181818pt;">Buch</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/buchempfehlung/" class="tag-link-53" title="1 Thema" style="font-size: 8pt;">Buchempfehlung</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/c/" class="tag-link-5" title="4 Themen" style="font-size: 18.1818181818pt;">C#</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/ccd/" class="tag-link-35" title="3 Themen" style="font-size: 15.6363636364pt;">CCD</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/clean-code/" class="tag-link-43" title="6 Themen" style="font-size: 22pt;">Clean Code</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/coding/" class="tag-link-44" title="2 Themen" style="font-size: 12.5818181818pt;">Coding</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/community/" class="tag-link-36" title="4 Themen" style="font-size: 18.1818181818pt;">Community</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/contract-first/" class="tag-link-55" title="1 Thema" style="font-size: 8pt;">Contract-First</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/datenbank/" class="tag-link-58" title="1 Thema" style="font-size: 8pt;">Datenbank</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/datenschutz/" class="tag-link-64" title="1 Thema" style="font-size: 8pt;">datenschutz</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/facebook/" class="tag-link-63" title="1 Thema" style="font-size: 8pt;">facebook</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/howto/" class="tag-link-11" title="3 Themen" style="font-size: 15.6363636364pt;">HowTo</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/html/" class="tag-link-15" title="2 Themen" style="font-size: 12.5818181818pt;">HTML</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/mvc/" class="tag-link-49" title="2 Themen" style="font-size: 12.5818181818pt;">MVC</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/mvp/" class="tag-link-54" title="1 Thema" style="font-size: 8pt;">MVP</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/nosql/" class="tag-link-57" title="1 Thema" style="font-size: 8pt;">NoSQL</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/open-space/" class="tag-link-31" title="4 Themen" style="font-size: 18.1818181818pt;">Open Space</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/patterns/" class="tag-link-23" title="1 Thema" style="font-size: 8pt;">Patterns</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/plug-in/" class="tag-link-6" title="1 Thema" style="font-size: 8pt;">Plug-In</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/prio-conference/" class="tag-link-50" title="1 Thema" style="font-size: 8pt;">prio.conference</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/refaktorisierung/" class="tag-link-26" title="2 Themen" style="font-size: 12.5818181818pt;">Refaktorisierung</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/reflection/" class="tag-link-10" title="2 Themen" style="font-size: 12.5818181818pt;">Reflection</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/schemalos/" class="tag-link-59" title="1 Thema" style="font-size: 8pt;">Schemalos</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/scrum/" class="tag-link-4" title="1 Thema" style="font-size: 8pt;">SCRUM</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/socialweb/" class="tag-link-65" title="1 Thema" style="font-size: 8pt;">socialweb</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/sonne/" class="tag-link-66" title="1 Thema" style="font-size: 8pt;">sonne</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/sourcecode/" class="tag-link-16" title="1 Thema" style="font-size: 8pt;">Sourcecode</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/stupiddb/" class="tag-link-33" title="1 Thema" style="font-size: 8pt;">StupidDB</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/unit-tests/" class="tag-link-48" title="2 Themen" style="font-size: 12.5818181818pt;">Unit-Tests</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/veranstaltung/" class="tag-link-30" title="5 Themen" style="font-size: 20.2181818182pt;">Veranstaltung</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/visual-studio/" class="tag-link-13" title="1 Thema" style="font-size: 8pt;">Visual Studio</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/webapplication/" class="tag-link-47" title="1 Thema" style="font-size: 8pt;">Webapplication</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/webcamp/" class="tag-link-68" title="1 Thema" style="font-size: 8pt;">webcamp</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/webcast/" class="tag-link-22" title="1 Thema" style="font-size: 8pt;">WebCast</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/webervice/" class="tag-link-24" title="1 Thema" style="font-size: 8pt;">Webservice</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/winforms/" class="tag-link-56" title="1 Thema" style="font-size: 8pt;">WinForms</a>
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/tag/wordpress/" class="tag-link-17" title="1 Thema" style="font-size: 8pt;">Wordpress</a> </li>
|
||
<li id="linkcat-2" class="linkcat"><h2 style="cursor: n-resize;">Blogroll</h2>
|
||
<ul>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://ayende.com/Blog/" target="_blank">Ayende Rahien</a></li>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://codebetter.com/" target="_blank">CodeBetter</a></li>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://www.hanselman.com/blog/" target="_blank">Hanselman</a></li>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://www.aspnetzone.de/blogs/peterbucher/" target="_blank">Peter Bucher</a></li>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://ralfw.blogspot.com/" target="_blank">Ralf Westphal</a></li>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://weblog.drescher-hackel.de/" target="_blank">Rene Drescher-Hackel</a></li>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://www.lieser-online.de/blog/" target="_blank">Stefan Lieser</a></li>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://www.yellow-brick-code.org/" target="_blank">Yellow-Brick-Code</a></li>
|
||
|
||
</ul>
|
||
</li>
|
||
<li id="linkcat-61" class="linkcat"><h2>Links</h2>
|
||
<ul>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://www.stoffknoten.de/" target="_blank">stoffknoten.de nie wieder etwas vergessen</a></li>
|
||
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<h4 class="widgettitle" style="cursor: n-resize;">Meta</h4>
|
||
|
||
<span id="rss">
|
||
<a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/feed/" title="RSS feed for build broken"><img src="./blog_files/rss_l.gif" alt="Entries (RSS)" id="rssicon"></a>
|
||
</span>
|
||
|
||
<ul>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/wp-login.php">Anmelden</a></li>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://wordpress.org/" title="Powered by WordPress, state-of-the-art semantic personal publishing platform.">WordPress</a></li>
|
||
<li><a href="https://web.archive.org/web/20111228070830/http://www.onehertz.com/portfolio/wordpress/" title="More Free WordPress themes by the same author" target="_blank">Mandigo theme</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</td>
|
||
<script src="./blog_files/Loader_37820.js.Download" type="text/javascript"></script></tr>
|
||
</tbody></table>
|
||
</div>
|
||
|
||
<div id="footer" class="png">
|
||
<p>
|
||
Unterstützt von <a href="https://web.archive.org/web/20111228070830/http://wordpress.org/">WordPress</a>, <a href="https://web.archive.org/web/20111228070830/http://www.onehertz.com/portfolio/wordpress/" target="_blank" title="WordPress themes">Mandigo theme</a> by tom.
|
||
|
||
<br><a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/feed/"><img src="./blog_files/rss_s.gif" alt=""> Einträge (RSS)</a>
|
||
und <a href="https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/comments/feed/"><img src="./blog_files/rss_s.gif" alt=""> Kommentare (RSS)</a>.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
<div id="fb-root"><script src="./blog_files/all.js.Download" async=""></script></div>
|
||
<script>
|
||
window.fbAsyncInit = function() {
|
||
FB.init({
|
||
appId : '',
|
||
status : true,
|
||
cookie : true,
|
||
xfbml : true
|
||
});
|
||
};
|
||
|
||
(function() {
|
||
var e = document.createElement('script');
|
||
e.src = document.location.protocol + '//web.archive.org/web/20111228070830/http://connect.facebook.net/en_US/all.js';
|
||
e.async = true;
|
||
document.getElementById('fb-root').appendChild(e);
|
||
}());
|
||
</script>
|
||
|
||
<script type="text/javascript">
|
||
<!-- // <![CDATA[
|
||
|
||
jQuery(document).ready(function() {
|
||
jQuery('#rssicon, #searchsubmit').hover(
|
||
function() { this.src = this.src.replace('.gif','_hover.gif'); },
|
||
function() { this.src = this.src.replace('_hover.gif','.gif'); }
|
||
);
|
||
|
||
jQuery('.entry img[align=left]' ).addClass('alignleft' );
|
||
jQuery('.entry img[align=right]').addClass('alignright');
|
||
|
||
if (jQuery.browser.msie) {
|
||
if (/^[56]/.test(jQuery.browser.version)) {
|
||
jQuery.ifixpng('https://web.archive.org/web/20111228070830/http://blog.aztec-project.org/wp-content/themes/mandigo/images/1x1.gif');
|
||
jQuery('body, .png').ifixpng();
|
||
jQuery('.commentlist.pre27 .avatar').height(36);
|
||
}
|
||
|
||
}
|
||
|
||
jQuery('p:has(.dropcap)').append('<br class="clear"/>');
|
||
|
||
togglePost = function(id) {
|
||
if (!id) return;
|
||
icon = jQuery('#switch-post-'+ id +' img');
|
||
icon.attr('src', /minus/.test(icon.attr('src')) ? icon.attr('src').replace('minus', 'plus') : icon.attr('src').replace('plus', 'minus'));
|
||
jQuery('#post-'+ id +' .entry').animate({ height: 'toggle', opacity: 'toggle' }, 1000);
|
||
}
|
||
|
||
jQuery('.switch-post img').bind('click', function() {
|
||
id = jQuery(this).parents('li').attr('id').replace(/[^\d]+-/, '');
|
||
icon = jQuery('#comment-'+ id +' .switch-post img');
|
||
src = icon.attr('src');
|
||
icon.attr('src', /minus/.test(src) ? src.replace('minus', 'plus') : src.replace('plus', 'minus'));
|
||
jQuery('#comment-'+ id +' div.comment').animate({ height: 'toggle', opacity: 'toggle' }, 1000);
|
||
return false;
|
||
});
|
||
|
||
toggleSidebars = function() {
|
||
icon = jQuery('.switch-sidebars img');
|
||
icon.attr('src', /hide/.test(icon.attr('src')) ? icon.attr('src').replace('hide', 'show') : icon.attr('src').replace('show', 'hide'));
|
||
jQuery('.sidebars').animate({ width: 'toggle', height: 'toggle', padding: 'toggle', border: 'toggle' }, 1000);
|
||
}
|
||
|
||
jQuery('.widgettitle, .linkcat *:first, .wpg2blockwidget h3').click(function() {
|
||
jQuery(this).siblings().animate({ height: 'toggle', opacity: 'toggle' }, 1000);
|
||
}).css({cursor: 'n-resize'});
|
||
|
||
jQuery.each(['tl','tr','bl','br'],function() {
|
||
jQuery('#blogname').after('<span class="blogname text-stroke-'+ this +'">'+ jQuery('#blogname a').html() +'<\/span>');
|
||
jQuery('#blogdesc').after('<span class="blogdesc text-stroke-'+ this +'">'+ jQuery('#blogdesc' ).html() +'<\/span>');
|
||
});
|
||
|
||
jQuery('#header .page_item:has(ul)').addClass('has_sub, png');
|
||
|
||
jQuery('#header .page_item').hover(
|
||
function() {
|
||
ul = jQuery(this).find('>ul');
|
||
if (ul.hasClass('sliding')) return;
|
||
a = jQuery(this).find('>a');
|
||
if (jQuery(this).parent().hasClass('pages')) {
|
||
y = a.position().top + a.height();
|
||
x = a.position().left + a.width() - ul.width();
|
||
}
|
||
else {
|
||
y = jQuery(this).position().top - 5;
|
||
x = jQuery(this).parent().width();
|
||
}
|
||
jQuery(this)
|
||
.find('>ul')
|
||
.css({left:x, top:y})
|
||
.addClass('sliding')
|
||
.slideDown(300, function() { jQuery(this).removeClass('sliding'); });
|
||
},
|
||
function() {
|
||
jQuery(this)
|
||
.find('>ul')
|
||
.addClass('sliding')
|
||
.slideUp(800, function() { jQuery(this).removeClass('sliding').hide(); });
|
||
}
|
||
);
|
||
|
||
jQuery('.commentlist li:even').addClass('alt');
|
||
});
|
||
// ]]> -->
|
||
</script>
|
||
<script type="text/javascript">
|
||
var gaJsHost = (("https:" == document.location.protocol) ? "https://web.archive.org/web/20111228070830/https://ssl." : "https://web.archive.org/web/20111228070830/http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
||
</script><script src="./blog_files/ga.js.Download" type="text/javascript"></script>
|
||
<script type="text/javascript">
|
||
try {
|
||
var pageTracker = _gat._getTracker("UA-9511047-1"); pageTracker._trackPageview(); } catch(err) {}</script>
|
||
|
||
|
||
|
||
</body></html> |