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
|