Expat-IT Tech Bits

Home

Contact

Links

Search this site:

Categories:

/ (287)
  Admin/ (122)
    Apache/ (10)
      HTTPS-SSL/ (4)
      PHP/ (3)
      performance/ (2)
    Cherokee/ (1)
    LAN/ (4)
    LVM/ (6)
    Monitoring/ (2)
      munin/ (2)
    SSH/ (6)
    SSL/ (1)
    Samba/ (1)
    VPN-options/ (6)
      OpenVPN/ (1)
      SSH-Proxy/ (3)
      Tinc/ (1)
      sshuttle/ (1)
    backups/ (17)
      SpiderOak/ (1)
      backuppc/ (5)
      dirvish/ (1)
      misc/ (6)
      rdiff-backup/ (1)
      rsync/ (1)
      unison/ (2)
    commandLine/ (24)
      files/ (8)
      misc/ (10)
      network/ (6)
    crontab/ (1)
    databases/ (15)
      MSSQL/ (2)
      MySQL/ (8)
      Oracle/ (3)
      PostgreSQL/ (1)
    dynamicDNS/ (2)
    email/ (11)
      Dovecot/ (1)
      deliverability/ (1)
      misc/ (1)
      postfix/ (7)
      puppet/ (1)
    iptables/ (3)
    tripwire/ (1)
    virtualization/ (9)
      VMware/ (1)
      virtualBox/ (8)
  Coding/ (14)
    bash/ (1)
    gdb/ (1)
    git/ (3)
    php/ (5)
    python/ (4)
      Django/ (2)
  Education/ (1)
  Hosting/ (27)
    Amazon/ (18)
      EBS/ (3)
      EC2/ (10)
      S3/ (1)
      commandline/ (4)
    Godaddy/ (2)
    NearlyFreeSpeech/ (3)
    Rackspace/ (1)
    vpslink/ (3)
  Linux/ (30)
    Android/ (1)
    Awesome/ (3)
    CPUfreq/ (1)
    China/ (2)
    Debian/ (8)
      APT/ (3)
      WPA/ (1)
    audio/ (1)
    encryption/ (3)
    fonts/ (1)
    misc/ (6)
    remoteDesktop/ (1)
    router-bridge/ (3)
  SW/ (45)
    Micro$soft/ (1)
    browser/ (2)
      Chrome/ (1)
      Firefox/ (1)
    business/ (28)
      Drupal/ (9)
      KnowledgeTree/ (6)
      Redmine/ (2)
      SugarCRM/ (7)
      WebERP/ (2)
      WordPress/ (1)
      eGroupware/ (1)
    chat/ (1)
    email/ (1)
    fileSharing/ (2)
      btsync/ (1)
      mldonkey/ (1)
    graphics/ (2)
    research/ (2)
    website/ (6)
      blog/ (6)
        blosxom/ (3)
        rss2email/ (1)
        webgen/ (1)
  Security/ (15)
    IMchat/ (2)
    circumvention/ (2)
    cryptoCurrency/ (1)
    e-mail/ (4)
    greatFirewall/ (1)
    hacking/ (1)
    password/ (1)
    privacy/ (2)
    skype/ (1)
  Services/ (1)
    fileSharing/ (1)
  TechWriting/ (1)
  xHW/ (14)
    Lenovo/ (1)
    Motorola_A1200/ (2)
    Thinkpad_600e/ (1)
    Thinkpad_a21m/ (3)
    Thinkpad_i1300/ (1)
    Thinkpad_x24/ (1)
    USB_audio/ (1)
    scanner/ (1)
    wirelessCards/ (2)
  xLife/ (17)
    China/ (9)
      Beijing/ (5)
        OpenSource/ (3)
    Expatriation/ (1)
    Vietnam/ (7)

Archives:

  • 2016/07
  • 2016/05
  • 2016/02
  • 2016/01
  • 2015/12
  • 2015/11
  • 2015/06
  • 2015/01
  • 2014/12
  • 2014/11
  • 2014/10
  • 2014/09
  • 2014/07
  • 2014/04
  • 2014/02
  • 2014/01
  • 2013/12
  • 2013/10
  • 2013/08
  • 2013/07
  • 2013/06
  • 2013/05
  • 2013/04
  • 2013/02
  • 2013/01
  • 2012/12
  • 2012/10
  • 2012/09
  • 2012/08
  • 2012/07
  • 2012/06
  • 2012/05
  • 2012/04
  • 2012/03
  • 2012/01
  • 2011/12
  • 2011/11
  • 2011/10
  • 2011/09
  • 2011/08
  • 2011/07
  • 2011/06
  • 2011/05
  • 2011/04
  • 2011/02
  • 2010/12
  • 2010/11
  • 2010/10
  • 2010/09
  • 2010/08
  • 2010/07
  • 2010/06
  • 2010/05
  • 2010/04
  • 2010/03
  • 2010/02
  • 2010/01
  • 2009/12
  • 2009/11
  • 2009/10
  • 2009/09
  • 2009/08
  • 2009/07
  • 2009/06
  • 2009/05
  • 2009/04
  • 2009/03
  • 2009/02
  • 2009/01
  • 2008/12
  • 2008/11
  • 2008/10
  • 2008/09
  • Subscribe XML RSS Feed

    Creative Commons License
    This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
    PyBlosxom

    This site has no ads. To help with hosting, crypto donations are accepted:
    Bitcoin: 1JErV8ga9UY7wE8Bbf1KYsA5bkdh8n1Bxc
    Zcash: zcLYqtXYFEWHFtEfM6wg5eCV8frxWtZYkT8WyxvevzNC6SBgmqPS3tkg6nBarmzRzWYAurgs4ThkpkD5QgiSwxqoB7xrCxs

    Fri, 19 Sep 2008


    /SW/website/blog/blosxom: Moving from Blosxom to pyBlosxom

    The most fundamental difference between the two is that Blosxom[1] is written in the Perl language, and pyBlosxom[2] is written in the Python language. Blosxom came first, then it was cloned to pyBlosxom, so the two are still exceedingly similar in look and feel and configuration.

    I probably would have stuck with Blosxom out of inertia, but was unable to talk Blosxom into rendering Chinese characters, no matter what I tried. Chinese characters worked instantly with pyBlosxom[3].

    Moving from Blosxom to pyBlosxom was quite easy, as layout is done almost exactly the same using a handful of "flavor" template files (head.html, foot.html, story.html, etc.) and my CSS layout worked right out of the box. I just had to adapt to the differences in plugins and other minor behavior.

    I can immediately say that pyBlosxom does several things better, like moving configuration out of the cgi file and into a config.py file. The base url seems to be deployed more consistently, as my problems[4] with hard-coded menu links not working on my desktop have gone away. Website resources seem to be better organized, and generally the project seems to be more active then the Blosxom project

    [1] http://blosxom.sourceforge.net/
    [2] http://pyblosxom.sourceforge.net/
    [3] http://blog.langex.net/index.cgi/China/links.html
    [4] http://blog.langex.net/index.cgi/SW/blog/blosxom_desktop_and_server.html

    posted at: 09:39 | path: /SW/website/blog/blosxom | permanent link to this entry

    Sun, 07 Sep 2008


    /SW/website/blog/blosxom: Running a Blosxom Site on Both Desktop and Server

    The goal, obviously, is to edit the site locally on my desktop where everything is very fast and convenient, and then periodically sync with the copy of my site on the server. This also has the advantage of automatically enforcing backups.

    Of course, one needs Apache installed on the desktop to see what is going on with the site as you edit. I started by installing the (Debian) libapache2-mod-fastcgi and libapache2-mod-perl2 modules. Then copied my whole blosxom site into a sub-directory of ~/public_html.

    Then, when I pointed my browser at the blosxom directory, all it would do would display the blosxom.cgi script without executing it. If I executed the script from the command line, ie "./blosxom.cgi", it would actually generate the home page html nicely. So there was clearly something wrong with the Apache configuration.

    As it turns out, Debian installs Apache with cgi scripts restricted to one system directory. Apache refuses to execute them anywhere else, like in /home, for instance. The Apache website[1] turned out to be the best source for a solution. I added the following code:

    <Directory /home/*/public_html>
         Options +ExecCGI
         AddHandler cgi-script .cgi
    </Directory>
    

    to /etc/apache2/sites-available/default, and it was fixed! Onto the next problem....

    The path to my blosxom site is different on my desktop and on my server, which gives me problems in a couple of different places.

    The easy one is the link to my CSS style sheet in head.html. I made this link absolute to the copy on my server, ie.

    <link rel="stylesheet" type="text/css"
    href="http://blog.langex.net/bloxsom/2c-lc-static-layout.css">
    

    So now both copies of the site pull the style sheet off the server.

    Slightly harder are the several paths hard-coded into blosxom.cgi. To work around this, I settled for two versions of the script. I use unison-gtk[2] to synchronize between desktop and server, so that after forking the two copies of the file I just tell unison to "ignore" the difference in the future (ie. it does not sync that file). Furthermore, to ensure the server copy gets backed up, I hard linked it to another file name, ie.

    ln blosxom.cgi blosxom.cgi.server

    which unison then dutifully keeps a copy of on my desktop.

    I have some hard-coded menu links in head.html that now just work on the server, not on the desktop, but I consider that to be a minor issue....

    [1] http://httpd.apache.org/docs/2.0/howto/cgi.html
    [2] http://www.cis.upenn.edu/~bcpierce/unison/

    posted at: 11:48 | path: /SW/website/blog/blosxom | permanent link to this entry

    Sat, 06 Sep 2008


    /SW/website/blog/blosxom: Blosxom Layout: Headers, Footers, and Multiple Columns with CSS

    This is my second Blosxom[1][2][3] site in as many weeks. This was the first:

    http://www.doesharleysuck.com/blosxom.cgi/site-news/#bloxsom

    I used to use Typo3[1] for my notes. Typo3 is a real HEAVY, truly an enterprise piece of software. A little tricky to setup the first time, but a real pleasure to work with after setup. BUT. Typo3 is a PHP app that needs MySQL on the backend, ie. it depends on Apache/PHP and MySQL, with some quite substantial memory requirements as well. Not a light-weight app. And all your data is tied up in a MySQL database, which is great if the amount of data involved is truly huge.

    I think Blosxom is a much more appropriate solution for this kind of site. Fast and simple. The only tricky part is the CSS, if you want a multi-column website and you are not familiar with the CSS way of site layout.

    For reference, here is the CSS style sheet that lays out this site:

    /* Layout Stylesheet */ 
    
    body{
     margin: 0px;
     padding:0;
     background: #ffffff;
     color: #333333;
     /* http://www.sitepoint.com/article/anatomy-web-fonts */
     font-family: verdana, "trebuchet MS", helvetica, sans-serif; 
     }
    
    #head-box{
     height: 45px;
     border: 2px solid #000000;
     background: #000000;
     color: #ffffff;
     padding: 5px;
     }
    
    #lh-col{
     float: left;
     width: 200px;
     border: 2px solid #000000;
     background: #c0c0c0;
     color: #333333;
     margin: 0px;
     padding: 10px;
     font-size: 10pt;
     }
    
    #rh-col{
     margin: 20px 20px 20px 240px;
     background: #ffffff;
     color: #000000;
     padding: 20px;
     }
    

    "head-box" defines the black banner at the very top of the page. "lh-col" defines the vertical menu column with the bluish-gray background on the left side. "rh-col" defines the content column on the right, where you are reading this.

    To use these CSS definitions, you must import them into the page header (see "head.html" below) and tag the HTML associated with each area (banner, menu, content) with div tags, for example:

    
    <!-- left column -->
    <div id="lh-col">
    
         /* left column HTML content here */
    
    </div>
    <!-- end of left column -->
    

    To be more concrete, blosxom uses several template files to define layout. One of these is "head.html". Here is mine for this site:

    
    <html>
    <head>
     <title>$blog_description</title>
    
    <!-- this is where the CSS style sheet above is imported -->
    <link rel="stylesheet" type="text/css"
    href="/blog/bloxsom/2c-lc-static-layout.css">
    
    </head>
    
    <body bgcolor="#ffffcc">
    
    <!-- header -->
    <div id="head-box">
    <strong><font size="6"><div align="right">$blog_title</div></font></strong>
    </div>
    <!-- end of header -->
    <p>
    
    <!-- left column -->
    <div id="lh-col"><br>
    
    <h4><a href="/blog/blosxom.cgi">Home</a></h4>
    <h4><a href="/blog/blosxom.cgi/contact-us/">Contact</a></h4>
    <h4><a href="/blog/blosxom.cgi/links/">Links</a></h4>
    
    Search this site:
    /* Google search box code here */
    
    <h3>Categories:</h3>
    $categorylist::display
    
    <h3>Archives:</h3>
    $archives::archives
    
    <h4><a href="/blosxom.cgi/index.atom">Subscribe Atom Feed</a><br>
    <a href="/blosxom.cgi/index.rss">Subscribe RSS Feed</a></h4>
    
    <center>
    <a href="http://www.blosxom.com/"><img src="http://www.blosxom.com/images/pb_blo
    sxom.gif" border="0"></center>
    <p>
    
    </div>
    <!-- end of left column -->
    <!-- right column -->
    <div id="rh-col">
    
    <div style="padding: 10px; float: right;">
    /* Google vertical banner code goes here */
    </div>
    
    $breadcrumbs::breadcrumbs
    

    Its not as scary as it looks. Just start with the simple bare-bones template files from the installation guide[5]. Link my CSS file into head.html. Tag the appropriate areas of the template files with the desired CSS area definitions (header, left column, right column). Adjust the CSS bit by bit, checking every step in your browser until you have the layout you want. Add content to the template files, piece by piece, again checking every step in your browser. No sweat

    If anyone tries to use this and finds it to confusing, let me know and I will try to make it more simple and specific. Right now I am just throwing my own configuration files at you, ie. the lazy expedient approach to documentation. :-)

    [1] http://blosxom.sourceforge.net/
    [2] http://www.blosxom.com/
    [3] http://blosxom.ookee.com/
    [4] http://typo3.org/
    [5] http://blosxom.sourceforge.net/documentation/users/flavour.html

    posted at: 03:08 | path: /SW/website/blog/blosxom | permanent link to this entry