CINXE.COM
Keeping server uptime and data security - Wikidot.com blog
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Keeping server uptime and data security - Wikidot.com blog</title> <script type="text/javascript" src="http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--javascript/init.combined.js"></script> <script type="text/javascript"> var URL_HOST = 'www.wikidot.com'; var URL_DOMAIN = 'wikidot.com'; var USE_SSL = true ; var URL_STATIC = 'http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327'; // global request information var WIKIREQUEST = {}; WIKIREQUEST.info = {}; WIKIREQUEST.info.domain = "blog.wikidot.com"; WIKIREQUEST.info.siteId = 56993; WIKIREQUEST.info.siteUnixName = "blog"; WIKIREQUEST.info.categoryId = 643856; WIKIREQUEST.info.themeId = 192074; WIKIREQUEST.info.requestPageName = "blog:keeping-server-uptime-and-data-security"; OZONE.request.timestamp = 1732523910; OZONE.request.date = new Date(); WIKIREQUEST.info.lang = 'en'; WIKIREQUEST.info.pageUnixName = "blog:keeping-server-uptime-and-data-security"; WIKIREQUEST.info.pageId = 6623196; WIKIREQUEST.info.lang = "en"; OZONE.lang = "en"; var isUAMobile = !!/Android|webOS|iPhone|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); </script> <script type="text/javascript"> require.config({ baseUrl: URL_STATIC + '/common--javascript', paths: { 'jquery.ui': 'jquery-ui.min', 'jquery.form': 'jquery.form' } }); </script> <meta http-equiv="content-type" content="text/html;charset=UTF-8"/> <meta http-equiv="content-language" content="en"/> <script type="text/javascript" src="http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--javascript/WIKIDOT.combined.js"></script> <script type="text/javascript" src="http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--bootstrap/3.0.0/bootstrap.min.js"></script> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> <link href="http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--fonts/awesome/3.2.1/font-awesome.min.css" rel="stylesheet"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style type="text/css" id="internal-style"> /* modules */ @import url(http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--modules/css/list/PageCalendarModule.css); /* bootstrap */ @import url(http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--bootstrap/3.0.0/bootstrap.min.css); /* theme */ @import url(http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--theme/bootstrap-base/css/style.css); @import url(http://blog.wdfiles.com/local--theme/wikidot-3-0-content-theme/style.css); </style> <!-- HTML5 shim, for IE6-8 support of HTML5 elements --> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <script type="text/javascript" src="http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--javascript/skrollr.min.js"></script> <link rel="shortcut icon" href="/local--favicon/favicon.gif"/> <link rel="icon" type="image/gif" href="/local--favicon/favicon.gif"/> <link rel="apple-touch-icon" href="/common--images/apple-touch-icon-57x57.png" /> <link rel="apple-touch-icon" sizes="72x72" href="/common--images/apple-touch-icon-72x72.png" /> <link rel="apple-touch-icon" sizes="114x114" href="/common--images/apple-touch-icon-114x114.png" /> <link rel="alternate" type="application/wiki" title="Edit this page" href="javascript:WIKIDOT.page.listeners.editClick()"/> <script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-18234656-1']); _gaq.push(['_setDomainName', 'none']); _gaq.push(['_setAllowLinker', true]); _gaq.push(['_trackPageview']); _gaq.push(['old._setAccount', 'UA-68540-5']); _gaq.push(['old._setDomainName', 'none']); _gaq.push(['old._setAllowLinker', true]); _gaq.push(['old._trackPageview']); </script> <script type="text/javascript"> window.google_analytics_uacct = 'UA-18234656-1'; window.google_analytics_domain_name = 'none'; </script> <link rel="manifest" href="/onesignal/manifest.json" /> <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" acync=""></script> <script> var OneSignal = window.OneSignal || []; OneSignal.push(function() { OneSignal.init({ appId: null, }); }); </script> <style> .forum-mini-stat .title { display: none; } </style> <script data-cfasync="false">window.nitroAds=window.nitroAds||{createAd:function(){return new Promise(e=>{window.nitroAds.queue.push(["createAd",arguments,e])})},addUserToken:function(){window.nitroAds.queue.push(["addUserToken",arguments])},queue:[]};</script> <script data-cfasync="false" async src="https://s.nitropay.com/ads-143.js"></script> <link rel="alternate" type="application/rss+xml" title="Comments for the page "Keeping server uptime and data security"" href="/feed/page/comments-6623196.xml"/><script type="text/javascript" src="http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--modules/js/forum/ForumCommentsModule.js"></script> <script type="text/javascript" src="http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--modules/js/forum/ForumViewThreadModule.js"></script> <script type="text/javascript" src="http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--modules/js/forum/ForumViewThreadPostsModule.js"></script> <script type="text/javascript" src="http://d3g0gp89917ko0.cloudfront.net/v--4b961b7cc327/common--modules/js/forum/sub/ForumNewPostFormModule.js"></script> </head> <body id="html-body"> <div id="skrollr-body"> <script type="text/javascript"> jQuery(document).ready(function() { if(!(/Android|iPhone|iPad|iPod|BlackBerry|Windows Phone/i).test(navigator.userAgent || navigator.vendor || window.opera)) { var s = skrollr.init(); } }); </script> <div class="topbar"> <nav class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".wikidot-menu-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <div class="site-name"> <a class="navbar-brand" href="/">Wikidot.com blog</a> </div> <div class="site-subtitle"> Official Wikidot.com Blog </div> <div class="loginStatus"> <a href="javascript:;" onclick="WIKIDOT.page.listeners.createAccount(event)" class="login-status-create-account btn">Create account</a> <span>or</span> <a href="javascript:;" onclick="WIKIDOT.page.listeners.loginClick(event)" class="login-status-sign-in btn btn-primary">Sign in</a> </div> </div> <div class="collapse navbar-collapse wikidot-menu-collapse"> </div> </div> <div class="horizontal-scrollbar" data-start="width: 0%;" data-end="width: 100%"></div> </nav> </div> <dic class="content-wrap"> <div class="container"> <div class="row"> <div class="col-md-3"> <div class="search-box"> <div id="search-top-box" class="form-search"> <form id="search-top-box-form" action="dummy" class="input-append"> <input id="search-top-box-input" class="text empty search-query" type="text" size="15" name="query" value="Search this site" onfocus="if(YAHOO.util.Dom.hasClass(this, 'empty')){YAHOO.util.Dom.removeClass(this,'empty'); this.value='';}"/><input class="button btn" type="submit" name="search" value="Search"/> </form> </div> </div> <nav role="navigation"> <div class="container"> <div class="navbar-header docs-navigation"> <a type="button" class="btn btn-default navbar-toggle docs-navigation-toggle" data-toggle="collapse" data-target=".doc-menu-collapse"> <i class="icon-chevron-sign-down"></i> Menu </a> </div> <div class="collapse navbar-collapse doc-menu-collapse doc-navigation-sidebar"> <div class="page-calendar-box"> <ul> <li > <a href="/blog:_start/date/2022">2022 (1)</a> <ul> <li > <a href="/blog:_start/date/2022.5">May (1)</a> </li> </ul> </li> <li > <a href="/blog:_start/date/2018">2018 (1)</a> <ul> <li > <a href="/blog:_start/date/2018.11">November (1)</a> </li> </ul> </li> <li > <a href="/blog:_start/date/2017">2017 (2)</a> <ul> <li > <a href="/blog:_start/date/2017.11">November (1)</a> </li> <li > <a href="/blog:_start/date/2017.3">March (1)</a> </li> </ul> </li> <li > <a href="/blog:_start/date/2016">2016 (5)</a> <ul> <li > <a href="/blog:_start/date/2016.12">December (1)</a> </li> <li > <a href="/blog:_start/date/2016.11">November (1)</a> </li> <li > <a href="/blog:_start/date/2016.10">October (1)</a> </li> <li > <a href="/blog:_start/date/2016.5">May (1)</a> </li> <li > <a href="/blog:_start/date/2016.1">January (1)</a> </li> </ul> </li> <li > <a href="/blog:_start/date/2015">2015 (6)</a> <ul> <li > <a href="/blog:_start/date/2015.11">November (1)</a> </li> <li > <a href="/blog:_start/date/2015.10">October (1)</a> </li> <li > <a href="/blog:_start/date/2015.6">June (1)</a> </li> <li > <a href="/blog:_start/date/2015.3">March (1)</a> </li> <li > <a href="/blog:_start/date/2015.1">January (2)</a> </li> </ul> </li> <li > <a href="/blog:_start/date/2014">2014 (11)</a> <ul> <li > <a href="/blog:_start/date/2014.12">December (1)</a> </li> <li > <a href="/blog:_start/date/2014.11">November (3)</a> </li> <li > <a href="/blog:_start/date/2014.10">October (3)</a> </li> <li > <a href="/blog:_start/date/2014.8">August (1)</a> </li> <li > <a href="/blog:_start/date/2014.4">April (1)</a> </li> <li > <a href="/blog:_start/date/2014.3">March (1)</a> </li> <li > <a href="/blog:_start/date/2014.1">January (1)</a> </li> </ul> </li> <li > <a href="/blog:_start/date/2013">2013 (16)</a> <ul> <li > <a href="/blog:_start/date/2013.12">December (1)</a> </li> <li > <a href="/blog:_start/date/2013.11">November (2)</a> </li> <li > <a href="/blog:_start/date/2013.9">September (2)</a> </li> <li > <a href="/blog:_start/date/2013.7">July (1)</a> </li> <li > <a href="/blog:_start/date/2013.6">June (1)</a> </li> <li > <a href="/blog:_start/date/2013.5">May (3)</a> </li> <li > <a href="/blog:_start/date/2013.4">April (2)</a> </li> <li > <a href="/blog:_start/date/2013.3">March (1)</a> </li> <li > <a href="/blog:_start/date/2013.2">February (1)</a> </li> <li > <a href="/blog:_start/date/2013.1">January (2)</a> </li> </ul> </li> <li > <a href="/blog:_start/date/2012">2012 (23)</a> <ul> <li > <a href="/blog:_start/date/2012.12">December (2)</a> </li> <li > <a href="/blog:_start/date/2012.11">November (1)</a> </li> <li > <a href="/blog:_start/date/2012.10">October (3)</a> </li> <li > <a href="/blog:_start/date/2012.9">September (1)</a> </li> <li > <a href="/blog:_start/date/2012.8">August (1)</a> </li> <li > <a href="/blog:_start/date/2012.7">July (2)</a> </li> <li > <a href="/blog:_start/date/2012.6">June (3)</a> </li> <li > <a href="/blog:_start/date/2012.5">May (1)</a> </li> <li > <a href="/blog:_start/date/2012.4">April (3)</a> </li> <li > <a href="/blog:_start/date/2012.3">March (2)</a> </li> <li > <a href="/blog:_start/date/2012.2">February (3)</a> </li> <li > <a href="/blog:_start/date/2012.1">January (1)</a> </li> </ul> </li> <li > <a href="/blog:_start/date/2011">2011 (36)</a> <ul> <li > <a href="/blog:_start/date/2011.12">December (5)</a> </li> <li > <a href="/blog:_start/date/2011.11">November (2)</a> </li> <li > <a href="/blog:_start/date/2011.10">October (2)</a> </li> <li > <a href="/blog:_start/date/2011.9">September (4)</a> </li> <li > <a href="/blog:_start/date/2011.8">August (1)</a> </li> <li > <a href="/blog:_start/date/2011.7">July (4)</a> </li> <li > <a href="/blog:_start/date/2011.6">June (2)</a> </li> <li > <a href="/blog:_start/date/2011.5">May (3)</a> </li> <li > <a href="/blog:_start/date/2011.4">April (2)</a> </li> <li > <a href="/blog:_start/date/2011.3">March (4)</a> </li> <li > <a href="/blog:_start/date/2011.2">February (3)</a> </li> <li > <a href="/blog:_start/date/2011.1">January (4)</a> </li> </ul> </li> <li > <a href="/blog:_start/date/2010">2010 (60)</a> <ul> <li > <a href="/blog:_start/date/2010.12">December (4)</a> </li> <li > <a href="/blog:_start/date/2010.11">November (5)</a> </li> <li > <a href="/blog:_start/date/2010.10">October (4)</a> </li> <li > <a href="/blog:_start/date/2010.9">September (5)</a> </li> <li > <a href="/blog:_start/date/2010.8">August (1)</a> </li> <li > <a href="/blog:_start/date/2010.7">July (1)</a> </li> <li > <a href="/blog:_start/date/2010.6">June (4)</a> </li> <li > <a href="/blog:_start/date/2010.5">May (2)</a> </li> <li > <a href="/blog:_start/date/2010.4">April (6)</a> </li> <li > <a href="/blog:_start/date/2010.3">March (8)</a> </li> <li > <a href="/blog:_start/date/2010.2">February (12)</a> </li> <li > <a href="/blog:_start/date/2010.1">January (8)</a> </li> </ul> </li> <li > <a href="/blog:_start/date/2009">2009 (161)</a> <ul> <li > <a href="/blog:_start/date/2009.12">December (12)</a> </li> <li > <a href="/blog:_start/date/2009.11">November (15)</a> </li> <li > <a href="/blog:_start/date/2009.10">October (37)</a> </li> <li > <a href="/blog:_start/date/2009.9">September (36)</a> </li> <li > <a href="/blog:_start/date/2009.8">August (25)</a> </li> <li > <a href="/blog:_start/date/2009.7">July (35)</a> </li> <li > <a href="/blog:_start/date/2009.6">June (1)</a> </li> </ul> </li> </ul> </div> <p><span style="font-size:smaller;"><a href="http://blog.wikidot.com/feed/pages/category/blog/t/Wikidot+Blog">RSS feed, postings only</a></span></p> </div> </div> </nav> </div> <div class="col-md-9"> <div class="page-title"> Keeping server uptime and data security </div> <!-- wikidot_top_728x90 --> <div id="wad-tier3-above-content" class="wd-adunit wd-ad-np wd-adunit-above_content"></div> <script> window['nitroAds'].createAd('wad-tier3-above-content', { "refreshLimit": 10, "refreshTime": 94, "renderVisibleOnly": false, "refreshVisibleOnly": true, "sizes": [ [ 728, 90 ] ], "report": { "enabled": true, "wording": "Report Ad", "position": "bottom-right" } }); </script> <div id="page-content"> <div class="blogpost-author" style="float: left; width: 500px;"> <p>by TeRq <span style="color: gray">on <span class="odate time_1292249351 format_%25e%20%25B%20%25Y%2C%20%25H%3A%25M">13 Dec 2010 14:09</span></span></p> </div> <div style="clear:both; height: 0px; font-size: 1px"></div> <div class="blogpost-content"> <div class="image-container floatright"><a href="https://www.flickr.com/photos/torkildr/3462606643/"><img src="https://farm4.static.flickr.com/3563/3462606643_fd5d1e350d_m.jpg" alt="flickr:3462606643" class="image" /></a></div> <p>About a year ago in one of our <a href="/blog:wikidot-uptime">December blog posts</a> we were aiming to keep downtime under 5 minutes per month and we have finally achieved it. To keep our reliability so high we are still improving our code, infrastructure and monitoring services.</p> <p>During the last year we used many techniques and involved a few software solutions that together made our service more reliable, available and stable for both anonymous and logged-in users.</p> <p>As <a href="/blog:additional-level-of-caching-added-to-wikidot">we described just after introducing the solution</a>, we let Varnish cache pages for anonymous users. This means the application servers do less work and the service is less loaded overall.</p> <div class="content-separator" style="display: none:"></div> <p>Application server is the heart of our infrastructure. It processes all our user requests and responses to them so it is very important to keep its performance high. This is why we regurarly extend our server inventory with new dedicated multi-threaded multiprocessor servers with lots of memory and CPU power to allow more requests to be processed by PHP scripts and to make it run faster. We can sleep well because the processing power we have is way more than we need.</p> <p>As fetching data from database takes some time (even when keeping the files on <a href="/blog:database-upgrade">super-fast solid-state disks</a>), we do a lot of caching in our code. Recently we reviewed parts of the code that generate the biggest number of queries to the database and applied robust <a href="http://memcached.org/">Memcached-based</a> caching to it. This keeps lower server response time.</p> <p>Usually before a problem appears, there is some sign of it coming up, like improved resource usage, high traffic comming on or just CPU on servers using all their power to generate the pages for users. Usually there's time to react before the problem affects users sites. This we improved and extended monitoring services.</p> <div class="image-container aligncenter"><img src="http://share.pingdom.com/banners/79ab38b3" alt="79ab38b3" class="image" /></div> <p>We're monitoring not only server resourses, but also Wikidot actions, like number of accounts creates, files uploaded or pages edited. Having any of those values dropped to 0 means a serious problem. Having them way too high usually means we have some spammers trying to abuse Wikidot. In any of these cases monitoring helps to keep the service available for legitimate (and paying) users.</p> <p>We are also planning to change database server around February to a faster machine with new database software: <a href="http://en.wikipedia.org/wiki/PostgreSQL">PostgreSQL 9</a> which greatly simplify and improve database replication.</p> </div> <div style="overflow:hidden; height: 30px;"> <div style="float: left; width: 100px"> <p><iframe src="http://www.facebook.com/plugins/like.php?app_id=144309642316380&href=http://blog.wikidot.com/blog:keeping-server-uptime-and-data-security&send=false&layout=button_count&width=200&show_faces=false&action=like&colorscheme=light&font&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:100px; height:21px;" allowtransparency="true"></iframe></p> </div> <div style="float: left; width: 110px"> <p><iframe src="/blog:keeping-server-uptime-and-data-security/html/d69652e1c3e818a4da1d99cccb4bfeb6557e6e0e-10401508342069351310" allowtransparency="true" frameborder="0" class="html-block-iframe"></iframe></p> </div> <div style="float: left; width: 100px"> <p><iframe src="/blog:keeping-server-uptime-and-data-security/html/9652557be714203e7985b5500333959bedf8fea4-8719547921293243954" allowtransparency="true" frameborder="0" class="html-block-iframe"></iframe></p> </div> </div> <h2 id="toc0"><span><strong>Comments:</strong> 8</span></h2> <div class="comments-box"> <div class="options" id="comments-options-hidden" style="display: none"> <a href="javascript:;" onclick="WIKIDOT.modules.ForumCommentsModule.listeners.showComments(event)">Show Comments</a> </div> <div id="thread-container" class="thread-container" style="margin-top: 1em"> <script type="text/javascript"> WIKIDOT.forumThreadId = 291379; </script> <div class="options" id="comments-options-shown"> <a href="javascript:;" onclick="WIKIDOT.modules.ForumCommentsModule.listeners.hideComments(event)" class="btn btn-default btn-small btn-sm">Hide All Comments</a> <a href="javascript:;" onclick="WIKIDOT.modules.ForumViewThreadModule.listeners.unfoldAll(event)" class="btn btn-default btn-small btn-sm">Unfold All</a> <a href="javascript:;" onclick="WIKIDOT.modules.ForumViewThreadModule.listeners.foldAll(event)" class="btn btn-default btn-small btn-sm">Fold All</a> </div> <div id="thread-container-posts" style="display: none"> <div class="post-container" id="fpc-950505"> <div class="post" id="post-950505"> <div class="long"> <div class="head"> <div class="options"> <a href="javascript:;" onclick="togglePostFold(event,950505)" class="btn btn-default btn-small btn-sm">Fold</a> </div> <div class="title" id="post-title-950505"> </div> <div class="info"> <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/leiger" onclick="WIKIDOT.page.listeners.userInfo(32953); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=32953&amp;size=small&amp;timestamp=1732523909" alt="leiger" style="background-image:url(http://www.wikidot.com/userkarma.php?u=32953)"/></a><a href="http://www.wikidot.com/user:info/leiger" onclick="WIKIDOT.page.listeners.userInfo(32953); return false;" >leiger</a></span> <span class="odate time_1292298326 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 03:45</span> </div> </div> <div class="content" id="post-content-950505"> <p>Good to know. With the large number of business and gaming sites hosted on your servers, I'm sure plenty of people appreciate the time and effort you all put in to keeping things running.</p> <p>Thanks :)</p> </div> <div class="signature"> <hr class="signature-separator"/> <p><span style="font-size:115%;"><strong><span style="color: #1982cd">~ Leiger</span></strong> - Wikidot Community Admin - Volunteer<br /> <strong>Wikidot:</strong> <a href="https://www.wikidot.com/doc:start">Official Documentation</a> | <a href="https://discord.gg/qfyY7bPjfC">Wikidot Discord server</a> | <strong><span style="color: red">NEW:</span> <a href="https://wikiroo.com">Wikiroo</a></strong><span style="color: gray">, backup tool (in development)</span><br /></span></p> </div> <div class="options"> <strong><a href="javascript:;" onclick="postReply(event,950505)" class="btn btn-primary btn-small btn-sm">Reply</a></strong> <a href="javascript:;" onclick="togglePostOptions(event,950505)" class="btn btn-default btn-small btn-sm">Options</a> </div> <div id="post-options-950505" class="options" style="display: none"> </div> </div> <div class="short"> <a class="options btn btn-default btn-mini btn-xs" href="javascript:;" onclick="togglePostFold(event,950505)" c>Unfold</a> <a class="title" href="javascript:;" onclick="togglePostFold(event,950505)"></a> by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/leiger" onclick="WIKIDOT.page.listeners.userInfo(32953); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=32953&amp;size=small&amp;timestamp=1732523909" alt="leiger" style="background-image:url(http://www.wikidot.com/userkarma.php?u=32953)"/></a><a href="http://www.wikidot.com/user:info/leiger" onclick="WIKIDOT.page.listeners.userInfo(32953); return false;" >leiger</a></span>, <span class="odate time_1292298326 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 03:45</span> </div> </div> </div> <div class="post-container" id="fpc-950681"> <div class="post" id="post-950681"> <div class="long"> <div class="head"> <div class="options"> <a href="javascript:;" onclick="togglePostFold(event,950681)" class="btn btn-default btn-small btn-sm">Fold</a> </div> <div class="title" id="post-title-950681"> </div> <div class="info"> <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/tsangk" onclick="WIKIDOT.page.listeners.userInfo(47197); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=47197&amp;size=small&amp;timestamp=1732523909" alt="tsangk" style="background-image:url(http://www.wikidot.com/userkarma.php?u=47197)"/></a><a href="http://www.wikidot.com/user:info/tsangk" onclick="WIKIDOT.page.listeners.userInfo(47197); return false;" >tsangk</a></span> <span class="odate time_1292326099 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 11:28</span> </div> </div> <div class="content" id="post-content-950681"> <p>So recently, I developed a way to nest modules (such as ListPages module) within each other. I used a new technique with a "hybrid module" (as named by Wikidot).</p> <p>A few days ago, I fell with despair when Wikidot decided to "fix" a bug which allowed me to nest modules. My hours of work went down the drain. I was planning on releasing a Social Networking platform using Wikidot coding ONLY this weekend. I have also started on building an easy blogging platform for Wikidot too - but all my work got destroyed when the "bug fix" occurred.</p> <p>Now - several wikis have been broken. My hours of work (and many other's work) have gone down the drain. Without any additional programming by Wikidot - we could create nestable modules. This was a remarkable discovery and removes all limitations of modules!</p> <p>The Nestable ListPages itself has enabled us to do many things never done before!</p> <ul> <li>Allowed us to show threads from a No-Comment Forum on the main page.</li> <li>Allows us to build and show complex family trees and connections like in <a href="http://family-trees.wikidot.com/">James' Family Tree app</a>.</li> <li>Allows us to show the current user's recent activities on a wiki. i.e. the recent pages they have created</li> </ul> <p>Those are just some of the possibilities for the NLP. I can imagine many complex apps achievable using pure Wikidot syntax!</p> <p>I really wish Wikidot reconsider the removal of the ability for users to nest ListPages. This will open doors to a whole range of apps and tools! PLEASE PLEASE!!!!</p> </div> <div class="signature"> <hr class="signature-separator"/> <p>Kenneth Tsang (<a href="http://twitter.com/jxeeno">@jxeeno</a>)</p> </div> <div class="options"> <strong><a href="javascript:;" onclick="postReply(event,950681)" class="btn btn-primary btn-small btn-sm">Reply</a></strong> <a href="javascript:;" onclick="togglePostOptions(event,950681)" class="btn btn-default btn-small btn-sm">Options</a> </div> <div id="post-options-950681" class="options" style="display: none"> </div> </div> <div class="short"> <a class="options btn btn-default btn-mini btn-xs" href="javascript:;" onclick="togglePostFold(event,950681)" c>Unfold</a> <a class="title" href="javascript:;" onclick="togglePostFold(event,950681)"></a> by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/tsangk" onclick="WIKIDOT.page.listeners.userInfo(47197); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=47197&amp;size=small&amp;timestamp=1732523909" alt="tsangk" style="background-image:url(http://www.wikidot.com/userkarma.php?u=47197)"/></a><a href="http://www.wikidot.com/user:info/tsangk" onclick="WIKIDOT.page.listeners.userInfo(47197); return false;" >tsangk</a></span>, <span class="odate time_1292326099 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 11:28</span> </div> </div> <div class="post-container" id="fpc-950711"> <div class="post" id="post-950711"> <div class="long"> <div class="head"> <div class="options"> <a href="javascript:;" onclick="togglePostFold(event,950711)" class="btn btn-default btn-small btn-sm">Fold</a> </div> <div class="title" id="post-title-950711"> Bring back nesting </div> <div class="info"> <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/govegan" onclick="WIKIDOT.page.listeners.userInfo(35113); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1732523909" alt="GoVegan" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)"/></a><a href="http://www.wikidot.com/user:info/govegan" onclick="WIKIDOT.page.listeners.userInfo(35113); return false;" >GoVegan</a></span> <span class="odate time_1292330102 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 12:35</span> </div> </div> <div class="content" id="post-content-950711"> <p>Yes, this new change in the Wikidot engine has also limited some exciting app developments I had on the way. Just to name a few of them:</p> <ul> <li>Family Tree Application</li> <li>Student-Pairing Application</li> <li>Financial Budgeting Application</li> <li>Spreadsheet Application</li> <li>Significant chatroom application improvements</li> <li>Significant calendar application improvements</li> <li>Streamlined application installations</li> </ul> <p>Please undo the recent change made! It will only enhance Wikidot in ways that were previously unimagined.</p> </div> <div class="options"> <strong><a href="javascript:;" onclick="postReply(event,950711)" class="btn btn-primary btn-small btn-sm">Reply</a></strong> <a href="javascript:;" onclick="togglePostOptions(event,950711)" class="btn btn-default btn-small btn-sm">Options</a> </div> <div id="post-options-950711" class="options" style="display: none"> </div> </div> <div class="short"> <a class="options btn btn-default btn-mini btn-xs" href="javascript:;" onclick="togglePostFold(event,950711)" c>Unfold</a> <a class="title" href="javascript:;" onclick="togglePostFold(event,950711)">Bring back nesting</a> by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/govegan" onclick="WIKIDOT.page.listeners.userInfo(35113); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1732523909" alt="GoVegan" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)"/></a><a href="http://www.wikidot.com/user:info/govegan" onclick="WIKIDOT.page.listeners.userInfo(35113); return false;" >GoVegan</a></span>, <span class="odate time_1292330102 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 12:35</span> </div> </div> </div> <div class="post-container" id="fpc-950762"> <div class="post" id="post-950762"> <div class="long"> <div class="head"> <div class="options"> <a href="javascript:;" onclick="togglePostFold(event,950762)" class="btn btn-default btn-small btn-sm">Fold</a> </div> <div class="title" id="post-title-950762"> </div> <div class="info"> <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/gabrys" onclick="WIKIDOT.page.listeners.userInfo(2462); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=2462&amp;size=small&amp;timestamp=1732523909" alt="Gabrys" style="background-image:url(http://www.wikidot.com/userkarma.php?u=2462)"/></a><a href="http://www.wikidot.com/user:info/gabrys" onclick="WIKIDOT.page.listeners.userInfo(2462); return false;" >Gabrys</a></span> <span class="odate time_1292336108 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 14:15</span> </div> </div> <div class="content" id="post-content-950762"> <p>Hybrid module is internal way of smoothing up users experience (and cutting down response time). Using this feature by users was not documented, never meant to work and worked only by accident.</p> </div> <div class="signature"> <hr class="signature-separator"/> <p>Piotr Gabryjeluk<br /> visit <a href="http://piotr.gabryjeluk.pl/blog">my blog</a></p> </div> <div class="changes"> Last edited on <span class="odate time_1292336308 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 14:18</span> by <span class="printuser"><a href="http://www.wikidot.com/user:info/gabrys" onclick="WIKIDOT.page.listeners.userInfo(2462); return false;" >Gabrys</a></span> <a href="javascript:;" onclick="WIKIDOT.modules.ForumViewThreadModule.listeners.showHistory(event,950762)"><i class="icon-plus"></i> Show more</a> </div> <div class="revisions" style="display: none"></div> <div class="options"> <strong><a href="javascript:;" onclick="postReply(event,950762)" class="btn btn-primary btn-small btn-sm">Reply</a></strong> <a href="javascript:;" onclick="togglePostOptions(event,950762)" class="btn btn-default btn-small btn-sm">Options</a> </div> <div id="post-options-950762" class="options" style="display: none"> </div> </div> <div class="short"> <a class="options btn btn-default btn-mini btn-xs" href="javascript:;" onclick="togglePostFold(event,950762)" c>Unfold</a> <a class="title" href="javascript:;" onclick="togglePostFold(event,950762)"></a> by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/gabrys" onclick="WIKIDOT.page.listeners.userInfo(2462); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=2462&amp;size=small&amp;timestamp=1732523909" alt="Gabrys" style="background-image:url(http://www.wikidot.com/userkarma.php?u=2462)"/></a><a href="http://www.wikidot.com/user:info/gabrys" onclick="WIKIDOT.page.listeners.userInfo(2462); return false;" >Gabrys</a></span>, <span class="odate time_1292336108 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 14:15</span> </div> </div> <div class="post-container" id="fpc-950935"> <div class="post" id="post-950935"> <div class="long"> <div class="head"> <div class="options"> <a href="javascript:;" onclick="togglePostFold(event,950935)" class="btn btn-default btn-small btn-sm">Fold</a> </div> <div class="title" id="post-title-950935"> </div> <div class="info"> <span class="printuser deleted" data-id="38854"><img class="small" src="http://www.wikidot.com/common--images/avatars/default/a16.png" alt=""/>(account deleted)</span> <span class="odate time_1292349789 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 18:03</span> </div> </div> <div class="content" id="post-content-950935"> <p>So how about documenting it and allowing it to work on purpose? It seems that tsangk and James have some pretty good ideas brewing here.</p> </div> <div class="signature"> <hr class="signature-separator"/> <p><span style="font-size:85%;"><a href="http://community.wikidot.com" target="_blank">Community Admin</a></span></p> </div> <div class="options"> <a href="javascript:;" onclick="togglePostOptions(event,950935)" class="btn btn-default btn-small btn-sm">Options</a> </div> <div id="post-options-950935" class="options" style="display: none"> </div> </div> <div class="short"> <a class="options btn btn-default btn-mini btn-xs" href="javascript:;" onclick="togglePostFold(event,950935)" c>Unfold</a> <a class="title" href="javascript:;" onclick="togglePostFold(event,950935)"></a> by <span class="printuser deleted" data-id="38854"><img class="small" src="http://www.wikidot.com/common--images/avatars/default/a16.png" alt=""/>(account deleted)</span>, <span class="odate time_1292349789 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 18:03</span> </div> </div> </div> <div class="post-container" id="fpc-950949"> <div class="post" id="post-950949"> <div class="long"> <div class="head"> <div class="options"> <a href="javascript:;" onclick="togglePostFold(event,950949)" class="btn btn-default btn-small btn-sm">Fold</a> </div> <div class="title" id="post-title-950949"> </div> <div class="info"> <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/gabrys" onclick="WIKIDOT.page.listeners.userInfo(2462); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=2462&amp;size=small&amp;timestamp=1732523909" alt="Gabrys" style="background-image:url(http://www.wikidot.com/userkarma.php?u=2462)"/></a><a href="http://www.wikidot.com/user:info/gabrys" onclick="WIKIDOT.page.listeners.userInfo(2462); return false;" >Gabrys</a></span> <span class="odate time_1292350583 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 18:16</span> </div> </div> <div class="content" id="post-content-950949"> <p>It could be a security issue and therefore a pain to maintain.</p> </div> <div class="signature"> <hr class="signature-separator"/> <p>Piotr Gabryjeluk<br /> visit <a href="http://piotr.gabryjeluk.pl/blog">my blog</a></p> </div> <div class="options"> <strong><a href="javascript:;" onclick="postReply(event,950949)" class="btn btn-primary btn-small btn-sm">Reply</a></strong> <a href="javascript:;" onclick="togglePostOptions(event,950949)" class="btn btn-default btn-small btn-sm">Options</a> </div> <div id="post-options-950949" class="options" style="display: none"> </div> </div> <div class="short"> <a class="options btn btn-default btn-mini btn-xs" href="javascript:;" onclick="togglePostFold(event,950949)" c>Unfold</a> <a class="title" href="javascript:;" onclick="togglePostFold(event,950949)"></a> by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/gabrys" onclick="WIKIDOT.page.listeners.userInfo(2462); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=2462&amp;size=small&amp;timestamp=1732523909" alt="Gabrys" style="background-image:url(http://www.wikidot.com/userkarma.php?u=2462)"/></a><a href="http://www.wikidot.com/user:info/gabrys" onclick="WIKIDOT.page.listeners.userInfo(2462); return false;" >Gabrys</a></span>, <span class="odate time_1292350583 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">14 Dec 2010 18:16</span> </div> </div> </div> </div> </div> <div class="post-container" id="fpc-951377"> <div class="post" id="post-951377"> <div class="long"> <div class="head"> <div class="options"> <a href="javascript:;" onclick="togglePostFold(event,951377)" class="btn btn-default btn-small btn-sm">Fold</a> </div> <div class="title" id="post-title-951377"> </div> <div class="info"> <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/tsangk" onclick="WIKIDOT.page.listeners.userInfo(47197); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=47197&amp;size=small&amp;timestamp=1732523909" alt="tsangk" style="background-image:url(http://www.wikidot.com/userkarma.php?u=47197)"/></a><a href="http://www.wikidot.com/user:info/tsangk" onclick="WIKIDOT.page.listeners.userInfo(47197); return false;" >tsangk</a></span> <span class="odate time_1292390095 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">15 Dec 2010 05:14</span> </div> </div> <div class="content" id="post-content-951377"> <p>Well, can I propose a a new WIKI syntax for the hybrid module. Something like this:</p> <div class="code"> <pre><code>[[hybrid]] {"module":"list/ListPagesModule","params":{"limit":"10","category":"*","module_body":"* %%linked_title%%"}} [[/hybrid]]</code></pre></div> <p>You can restrict the modules and the parameters for the module. I don't want to write a whole wish and have it immediately rejected!</p> <p>And I think the possibilities of a hybrid module outweighs all of the other issues you may put forward.</p> </div> <div class="signature"> <hr class="signature-separator"/> <p>Kenneth Tsang (<a href="http://twitter.com/jxeeno">@jxeeno</a>)</p> </div> <div class="options"> <strong><a href="javascript:;" onclick="postReply(event,951377)" class="btn btn-primary btn-small btn-sm">Reply</a></strong> <a href="javascript:;" onclick="togglePostOptions(event,951377)" class="btn btn-default btn-small btn-sm">Options</a> </div> <div id="post-options-951377" class="options" style="display: none"> </div> </div> <div class="short"> <a class="options btn btn-default btn-mini btn-xs" href="javascript:;" onclick="togglePostFold(event,951377)" c>Unfold</a> <a class="title" href="javascript:;" onclick="togglePostFold(event,951377)"></a> by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/tsangk" onclick="WIKIDOT.page.listeners.userInfo(47197); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=47197&amp;size=small&amp;timestamp=1732523909" alt="tsangk" style="background-image:url(http://www.wikidot.com/userkarma.php?u=47197)"/></a><a href="http://www.wikidot.com/user:info/tsangk" onclick="WIKIDOT.page.listeners.userInfo(47197); return false;" >tsangk</a></span>, <span class="odate time_1292390095 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">15 Dec 2010 05:14</span> </div> </div> </div> <div class="post-container" id="fpc-951574"> <div class="post" id="post-951574"> <div class="long"> <div class="head"> <div class="options"> <a href="javascript:;" onclick="togglePostFold(event,951574)" class="btn btn-default btn-small btn-sm">Fold</a> </div> <div class="title" id="post-title-951574"> </div> <div class="info"> <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/govegan" onclick="WIKIDOT.page.listeners.userInfo(35113); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1732523909" alt="GoVegan" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)"/></a><a href="http://www.wikidot.com/user:info/govegan" onclick="WIKIDOT.page.listeners.userInfo(35113); return false;" >GoVegan</a></span> <span class="odate time_1292405787 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">15 Dec 2010 09:36</span> </div> </div> <div class="content" id="post-content-951574"> <blockquote> <p>And I think the possibilities of a hybrid module outweighs all of the other issues you may put forward.</p> </blockquote> <p>I second this notion.</p> </div> <div class="options"> <strong><a href="javascript:;" onclick="postReply(event,951574)" class="btn btn-primary btn-small btn-sm">Reply</a></strong> <a href="javascript:;" onclick="togglePostOptions(event,951574)" class="btn btn-default btn-small btn-sm">Options</a> </div> <div id="post-options-951574" class="options" style="display: none"> </div> </div> <div class="short"> <a class="options btn btn-default btn-mini btn-xs" href="javascript:;" onclick="togglePostFold(event,951574)" c>Unfold</a> <a class="title" href="javascript:;" onclick="togglePostFold(event,951574)"></a> by <span class="printuser avatarhover"><a href="http://www.wikidot.com/user:info/govegan" onclick="WIKIDOT.page.listeners.userInfo(35113); return false;" ><img class="small" src="http://www.wikidot.com/avatar.php?userid=35113&amp;size=small&amp;timestamp=1732523909" alt="GoVegan" style="background-image:url(http://www.wikidot.com/userkarma.php?u=35113)"/></a><a href="http://www.wikidot.com/user:info/govegan" onclick="WIKIDOT.page.listeners.userInfo(35113); return false;" >GoVegan</a></span>, <span class="odate time_1292405787 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%7Cagohover">15 Dec 2010 09:36</span> </div> </div> </div> </div> <a href="javascript:;" id="new-post-button" onclick="WIKIDOT.modules.ForumViewThreadModule.listeners.newPost(event,null)" style="display: block ; margin-bottom:1em" >Add a New Comment</a> <div style="display:none" id="post-options-template"> <a href="javascript:;" onclick="WIKIDOT.modules.ForumViewThreadModule.listeners.showPermalink(event,'%POST_ID%')" class="btn btn-default btn-small btn-sm">Permanent Link</a> <a href="javascript:;" onclick="WIKIDOT.modules.ForumViewThreadModule.listeners.editPost(event,'%POST_ID%')" class="btn btn-default btn-small btn-sm">Edit</a> <a href="javascript:;" onclick="WIKIDOT.modules.ForumViewThreadModule.listeners.deletePost(event,'%POST_ID%')" class="btn btn-danger btn-small btn-sm">Delete</a> </div> </div> </div> <hr /> </div><div id="action-area" style="display: none;"></div> <!-- mobile bottom 320x50 --> <script> $j( function(){ if(isUAMobile && screen.width < 400 && screen.height > 600) { var $o = $j('<div id="wad-tier3-mobile-anchor" class="wd-adunit wd-ad-np wd-adunit-mobile_anchor"></div>'); $j('body').append($o); $j('body').css('margin-bottom', '200px'); var res = function(){ $o = $j('#wad-tier3-mobile-anchor'); if($o.length > 0){ $o.show(); var $w = $j(window); var scale = $w.width() / 320; $o.css('transform', 'scale('+scale+')'); } else { $o.hide(); } } res(); setInterval(res, 1000); window['nitroAds'].createAd('wad-tier3-mobile-anchor', { "refreshLimit": 1, "refreshTime": 90, "renderVisibleOnly": false, "refreshVisibleOnly": true, "format": "display", "sizes": [ [ 320, 50 ] ], "report": { "enabled": true, "wording": "Report Ad", "position": "bottom-right" } }); } }); </script> <!-- wikidot_bottom_300x250 --> <div id="wad-tier3-below-content" class="wd-adunit wd-ad-np wd-adunit-below_content"></div> <script> window['nitroAds'].createAd('wad-tier3-below-content', { "refreshLimit": 10, "refreshTime": 83, "renderVisibleOnly": false, "refreshVisibleOnly": true, "sizes": [ [ 300, 250 ] ], "report": { "enabled": true, "wording": "Report Ad", "position": "bottom-right" } }); </script> </div> </div> </div> <div class="page-options-container container"> <div id="page-info">page revision: 2, last edited: <span class="odate time_1292298279 format_%25e%20%25b%20%25Y%2C%20%25H%3A%25M%20%28%25O%20ago%29">14 Dec 2010 03:44</span></div> <div id="page-options-bottom" class="page-options-bottom"> <a href="javascript:;" class="btn btn-default" id="edit-button">Edit</a> <a href="javascript:;" class="btn btn-default" id="tags-button">Tags</a> <a href="/forum/t-291379/blog:keeping-server-uptime-and-data-security" class="btn btn-default" id="discuss-button">Discuss (8)</a> <a href="javascript:;" class="btn btn-default" id="history-button">History</a> <a href="javascript:;" class="btn btn-default" id="files-button">Files</a> <a href="javascript:;" class="btn btn-default" id="print-button">Print</a> <a href="javascript:;" class="btn btn-default" id="site-tools-button">Site tools</a> <a href="javascript:;" class="btn btn-default" id="more-options-button">+ Options</a> </div> <div id="page-options-bottom-2" class="page-options-bottom form-actions" style="display:none"> <a href="javascript:;" class="btn btn-default" id="edit-sections-button">Edit Sections</a> <a href="javascript:;" class="btn btn-default" id="edit-append-button">Append</a> <a href="javascript:;" class="btn btn-default" id="edit-meta-button">Edit Meta</a> <a href="javascript:;" class="btn btn-default" id="watchers-button">Watchers</a> <a href="javascript:;" class="btn btn-default" id="backlinks-button">Backlinks</a> <a href="javascript:;" class="btn btn-default" id="view-source-button">Page Source</a> <a href="javascript:;" class="btn btn-default" id="parent-page-button">Parent</a> <a href="javascript:;" class="btn btn-default" id="page-block-button">Lock Page</a> <a href="javascript:;" class="btn btn-default" id="rename-move-button">Rename</a> <a href="javascript:;" class="btn btn-default" id="delete-button">Delete</a> </div> <div id="page-options-area-bottom"> </div> </div> </div> <div class="footer"> <div class="container"> <div class="options" style="display: block; visibility: visible;"> <a href="http://www.wikidot.com/doc" id="wikidot-help-button">Help</a> | <a href="http://www.wikidot.com/legal:terms-of-service" id="wikidot-tos-button">Terms of Service</a> | <a href="http://www.wikidot.com/legal:privacy-policy" id="wikidot-privacy-button">Privacy</a> | <a href="javascript:;" id="bug-report-button" onclick="WIKIDOT.page.listeners.pageBugReport(event)">Report a bug</a> | <a href="javascript:;" id="abuse-report-button" onclick="WIKIDOT.page.listeners.flagPageObjectionable(event)">Flag as objectionable</a> </div> Powered by <a href="http://www.wikidot.com">Wikidot.com</a> </div> <div class="container license-area"> Unless otherwise stated, the content of this page is licensed under <a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike 3.0 License</a> </div> </div> </div> <div id="dummy-ondomready-block" style="display: none;" ></div> <!-- Google Analytics load --> <script type="text/javascript"> (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'stats.g.doubleclick.net/dc.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> <div id="page-options-bottom-tips" style="display: none;"> <div id="edit-button-hovertip"> Click here to edit contents of this page. </div> </div> <div id="page-options-bottom-2-tips" style="display: none;"> <div id="edit-sections-button-hovertip"> Click here to toggle editing of individual sections of the page (if possible). Watch headings for an "edit" link when available. </div> <div id="edit-append-button-hovertip"> Append content without editing the whole page source. </div> <div id="history-button-hovertip"> Check out how this page has evolved in the past. </div> <div id="discuss-button-hovertip"> If you want to discuss contents of this page - this is the easiest way to do it. </div> <div id="files-button-hovertip"> View and manage file attachments for this page. </div> <div id="site-tools-button-hovertip"> A few useful tools to manage this Site. </div> <div id="backlinks-button-hovertip"> See pages that link to and include this page. </div> <div id="rename-move-button-hovertip"> Change the name (also URL address, possibly the category) of the page. </div> <div id="view-source-button-hovertip"> View wiki source for this page without editing. </div> <div id="parent-page-button-hovertip"> View/set parent page (used for creating breadcrumbs and structured layout). </div> <div id="abuse-report-button-hovertip"> Notify administrators if there is objectionable content in this page. </div> <div id="bug-report-button-hovertip"> Something does not work as expected? Find out what you can do. </div> <div id="wikidot-help-button-hovertip"> General Wikidot.com documentation and help section. </div> <div id="wikidot-tos-button-hovertip"> Wikidot.com Terms of Service - what you can, what you should not etc. </div> <div id="wikidot-privacy-button-hovertip"> Wikidot.com Privacy Policy. </div> </div> </body> </html>