One Unified Global Perspective
Communications with a Global Perspective
Home
Intro
Contact Us
Voice over IP
PBX Solutions
Services
Support
Glossary
Open Source
Blog
Forum

WebMail





2007 Oct 03 - Wed

Image Maps with CSS, Plus 20 CSS Tools, Plus other Free Tools

Marketing Technology Blog has a How To: Build An Image Map with CSS entry. Pretty simple and straightforward.

In CSS TOOLBOX: 20+ Tools For Working With CSS, there are links to a bunch of sites offering up quite a number of tips, tricks, and techniques for working with CSS.

This site isn't necessarily CSS, but I thought I'd include it here anyway. Emma Alvarez Blog has an entry called Top best 50 free tools for your website. She references:

  • Color Selectors
  • Logo Makers
  • Button Generators
  • Rounded Corner Generators
  • Background Makers
  • Custom Games for Blogs
  • Avatars
  • Free Scripts
  • Visitor Maps
  • Public Domain Photos
  • Free Fonts
  • Widgets
  • Statistics
  • Firefox Extensions
  • Inspiration
  • Optimization Tools
  • Image Tools

[/Personal/SoftwareDevelopment/HTML/css] permanent link


A Link to an Article regarding SQL Injection

Many web sites use a back end SQL engine for serving up data. Some Credit Card number thefts can be attributed to poor protection of web page interactions with a back end SQL server through injecting SQL statements into web requests.

A well written article called The Unexpected SQL Injection goes into detail on how SQL Injection happens, and how to prevent it.

Spend some time on the site. There are many other documents providing valuable information regarding the protection of internet based activity.

[/Personal/SoftwareDevelopment] permanent link


Free Tools: CD ISO Create and Burning, Notepad++

CDBurnerXP is a great tool for assembling ISO's and burning them to CD. It isn't bloated like other pay-for stuff out there. This is a good, streamlined, free tool to ... burn CDs and DVDs.

Notepad++ is a is a free source code editor (and Notepad replacement), which supports several programming languages, running under the MS Windows environment. It has a very large feature set, with some being cold-folding, syntax highlighting, and macro-recording. It is a valuable Windows Notepad replacement, and is as fast or faster, and absolutely better.

[/Personal/Technology] permanent link


GSL - GNU Scientific Library

I'm coming across all sorts of interesting things today. Another C++ library I've encountered is the GSL - GNU Scientific Library. From the web-site, it is:

a numerical library for C and C++ programmers. It is free software under the GNU General Public License.

The library provides a wide range of mathematical routines such as random number generators, special functions and least-squares fitting. There are over 1000 functions in total with an extensive test suite.

Some of the subject areas covered include:

Complex Numbers Roots of Polynomials Special Functions
Vectors and Matrices Permutations Sorting
BLAS Support Linear Algebra Eigensystems
Fast Fourier Transforms Quadrature Random Numbers
Quasi-Random Sequences Random Distributions Statistics
Histograms N-Tuples Monte Carlo Integration
Simulated Annealing Differential Equations Interpolation
Numerical Differentiation Chebyshev Approximation Series Acceleration
Discrete Hankel Transforms Root-Finding Minimization
Least-Squares Fitting Physical Constants IEEE Floating-Point
Discrete Wavelet Transforms

[/Personal/SoftwareDevelopment/CPP] permanent link


Cryptographic Library for C++

ergo offers up some explanation and examples of using the CryptoPP - The cryptographic library for C++. He also refers to something else that may be of interest, a SSL++: C++ Headers for OpenSSL. But I think most just compile and link directly with the headers from OpenSSL.

[/Personal/SoftwareDevelopment/CPP] permanent link


More Code Coloring Capability for HTML

Google Code Colorizer is one to add to the list.

[/Personal/SoftwareDevelopment/HTML] permanent link


Life, Judgement and Experience

The Tired Architect talks about second systems, and refers to one of my favorite books: The Mythical Man Month by Frederick Brooks.

Anyway, The Tired Architect has a good quote:

As they say, good judgement comes from experience, and experience from bad judgement. It makes you a better architect, like how pain makes you appreciate health better.

[/Personal/TagLines] permanent link


Debian Installation on a Dell Laptop

Here is a page discussing the Installation of Debian 3.1 on a Dell Laptop. There were some key commands I learned from that article:

  • lspci -v # to list adaptors on pci buss
  • dmesg # to show boot log
  • lsmod # to show installed kernel modules
  • fdisk -l # to show drive partitions

Even though it is an older site, it does have some useful tidbits of information.

Other pages on the site provide notes one wireless war driving and such, plus other stuff.

[/OpenSource/Debian/ArticleLinks] permanent link


Installing And Configuring Wt, a C++ Web Toolkit

I mentioned in another article about doing web page development with C++. I came across Wt: a C++ Web Toolkit. It has been a bear to configure with the ASIO library. I'll layout what I've done below. I'm stuck with an SSL initialization problem. I'm probably going to have to move to FastCGI to see how well that works.

Based upon the forums, there are supposed to be some Debian Packages already available to make this work. Packages seem to be a bit behind the latest versions of stuff, so in this case, I wanted to be able to have a build system where I could incorporate the latest of Boost (which is supposed to have time-series avaliable shortly), and with Wt (which has an active CVS feed).

Anyway, here is my installation process so far. There are a couple of Kludges due to platform differences (a prefix of lib is needed on some stuff, which I should do a SED with at some time) and I can't figure out how the header file include stuff works properly (in order to keep it in a separate directory).

I started by downloading asio-0.3.7.tar.gz from asio.sf.net and boost_1_34_1.tar.tz from www.boost.org, and expanding them out to their directories in /usr/src.

apt-get install gcc
apt-get install zlib1g
apt-get install zlib1g-dev
apt-get install libbz2-dev
apt-get install libgd-dev
apt-get install cmake
apt-get install libfcgi-dev
apt-get install libapache2-mod-fastcgi
apt-get install libssl-dev

cd /usr/src/boost_1_34_1
./configure --without-icu --without-libraries=python,wave,test --libdir=/usr/lib/boost_34_1
make install
ln -s /usr/lib/boost_1_34_1/ /usr/lib/boost
ln -s /usr/include/boost-1_34_1/boost /usr/include/boost

Before proceeding, a patch needs to be applied to one of the ASIO files:

@@ -45,13 +45,13 @@
       {
         ::SSL_library_init();
         ::SSL_load_error_strings();        
+        ::OpenSSL_add_ssl_algorithms();
 
         mutexes_.resize(::CRYPTO_num_locks());
         for (size_t i = 0; i < mutexes_.size(); ++i)
           mutexes_[i].reset(new asio::detail::mutex);
         ::CRYPTO_set_locking_callback(&do_init::openssl_locking_func);
 
-        ::OpenSSL_add_ssl_algorithms();
       }
     }

It basically moves the location of '::OpenSSL_add_ssl_algorithms();'. Without it, an error such as the following may occur during runtime:

__gnu_cxx::recursive_init'
  what():  N9__gnu_cxx14recursive_initE
Aborted

ASIO can then be built:

cd /usr/src/asio-0.3.7
./configure --with-boost=/usr/include/boost --libdir=/usr/lib/ --includedir=/usr/include/
make
make install

After that fixup, Wt can be built.

cd /usr/src
cvs -d:pserver:anonymous@witty.cvs.sourceforge.net:/cvsroot/witty login
cvs -z3 -d:pserver:anonymous@witty.cvs.sourceforge.net:/cvsroot/witty co -P wt
cd wt
nano src/CMakeLists.txt
# prefix boost file entries with lib to get libboost
cmake -D DEPLOYROOT=/var/www/wt -D WEBUSER=www-data -D WEBGROUP=www-data \
-D BOOST_DIR=/usr/include/boost/ \
-D BOOST_COMPILER=gcc41 \
-D BOOST_VERSION=1_34_1 \
-D BOOST_INCLUDE_DIR=/usr/include/boost \
-D BOOST_LIB_DIR=/usr/lib/boost/  \
-D BOOST_DT_LIB_MT=/usr/lib/boost \
-D BOOST_DT_LIB=/usr/lib/boost \
-D BOOST_FS_LIB=/usr/lib/boost \
-D BOOST_FS_LIB_MT=/usr/lib/boost \
-D BOOST_PO_LIB_MT=/usr/lib/boost \
-D BOOST_REGEX_LIB_MT=/usr/lib/boost \
-D BOOST_SIGNALS_LIB_MT=/usr/lib/boost \
-D BOOST_THREAD_LIB=/usr/lib/boost \
-D BOOST_ASIO_INCLUDE_DIR=/usr/include/asio/  \
-D CMAKE_INSTALL_PREFIX=/ \
-D LIB_INSTALL_DIR=/usr/lib/wt/  \
-D LIBRARY_OUTPUT_PATH=/usr/lib/wt \
-D SHARED_LIBS=ON \
-D CONNECTOR_FCGI=ON \
-D CONNECTOR_HTTP=OFF \
.
# FCGI ON for FastCGI (production), HTTP ON for ASIO library (development)

make

# on error:
nano src/Ext/cmake_install.cmake
#  comment out cmakefiles line
rm /include/Ext/CMakeFiles
mkdir /include/Ext/CMakeFiles
cp /usr/src/wt/src/Ext/CMakeFiles/* /include/Ext/CMakeFiles

make install
mkdir /usr/include/wt
mv  /include/* /usr/include/wt/
rmdir /include

nano /etc/ld.so.conf
#  put in:
#   /usr/lib/wt
#   /usr/lib/boost_1_34_1
# ldconfig needs to be run if the fcgi or http libraries get switched or added
ldconfig

Back in Eclipse, I created C++ ANSI project, and then placed the content from examples/hello/hello.cpp into the .cpp file of the new project. The directories '/usr/include/boost-1_34_1' and '/usr/include/wt' need to be entered as 'include' paths. For GCC C++ Linker, the following are -L library search paths:

  • /usr/lib/wt
  • /usr/lib/boost_1_34_1

The following are -l libraries:

  • boost_signals-gcc41-mt-d
  • boost_filesystem-gcc41-mt-d
  • boost_program_options-gcc41-mt-d
  • boost_thread-gcc41-mt-d
  • boost_regex-gcc41-mt-d
  • wt
  • wthttp or wtfcgi
  • wtext

So... with some recompiling, I was able to get the hello sample up and running with FastCGI and then with the ASIO library.

When using FCGI, I renamed the compiled file to hello.wt, and placed it into /var/www/wt/, added the line 'FastCgiServer /var/www/wt/hello.wt' into /etc/apache2/mods-enabled/fastcgi.conf, and restarted Apache. Then by browsing to localhost/wt/hello.wt, I was able to get the demonstration.

When using ASIO, set the folloing for run-time command-line arguments in Eclipse to successfully start the application: '--doc-root=/var/www/wt --http-address=0.0.0.0 --http-port=8080'. Browsing to localhost:8080 will get the web page.

[/OpenSource/Debian/Development] permanent link



Blog Content ©2008
Ray Burkholder
All Rights Reserved
ray@oneunified.net
(441) 505 7293
Available for Contract Work
Resume

RSS: Click to see the XML version of this web page.

View Ray 
Burkholder's profile on LinkedIn
technorati
Add to Technorati Favorites



October
Su Mo Tu We Th Fr Sa
  3
     


Main Links:
Monitoring Server
SSH Tools
QuantDeveloper Code

Special Links:
Frink

Blog Links:
Sergey Solyanik
Marc Andreessen
HotGigs
Micro Persuasion
... Reasonable ...
Chris Donnan
BeyondVC
lifehacker
Trader Mike
Ticker Sense
HeadRush
TraderFeed
Stock Bandit
The Daily WTF
Guy Kawaski
J. Brant Arseneau
Steve Pavlina
Matt Cutts
Kevin Scaldeferri
Joel On Software
Quant Recruiter
Blosxom User Group
Wesner Moise
Julian Dunn
Steve Yegge

2007
Months
Oct




Mason HQ

Disclaimer: This site may include market analysis. All ideas, opinions, and/or forecasts, expressed or implied herein, are for informational purposes only and should not be construed as a recommendation to invest, trade, and/or speculate in the markets. Any investments, trades, and/or speculations made in light of the ideas, opinions, and/or forecasts, expressed or implied herein, are committed at your own risk, financial or otherwise.