Tuesday, September 10, 2013
Python Tip: Thanking People is Important
Tuesday, September 3, 2013
Sunsetting Mach-II
Rather than leave things in an uncertain state, we feel it is best to announce that the current team behind Mach-II will no longer be working on or supporting Mach-II moving forward.
Peter, Matt, and Kurt have all moved away from CFML to other technologies: Peter and Matt to Python and Django, Kurt to C#. Since we are no longer doing CFML development and our time will be filled working in and contributing to projects in our new primary languages, we are no longer able to effectively develop and support Mach-II.
Mach-II is a stable, mature framework and is used -- and will continue to be used -- by a large number of organizations for their most mission-critical CFML applications. Current Mach-II applications will continue to run just fine of course, and if Mach-II does everything you need it to do there’s no reason to stop using it. The code will remain in its current state on GitHub (https://github.com/Mach-II/Mach-II-Framework) permanently, so it will always be available for you to use.
The beauty of free and open source software is that just because the current team supporting Mach-II is stepping away from the project, that doesn’t necessarily mean Mach-II dies. In addition to being able to continue to use Mach-II, you are also free to fork Mach-II and improve and evolve it as you see fit. Since we will no longer be maintaining Mach-II we will not be responding to pull requests back to the main repository, but if anyone is interested in taking over active maintenance of Mach-II please feel free to contact us.
Finally, we would like to express our extreme gratitude to everyone who contributed to Mach-II over the years. Contributions large and small -- from minor edits to documentation, to helping by testing your applications on new versions of Mach-II, to major code contributions -- were all vital to the success of Mach-II over the years. To all Mach-II users and contributors, our deepest and sincerest thanks.
Happy Hacking!
Peter, Kurt, and Matt
Installing VPython (Visual Python) on Linux
Edit (Nov. 2013):
The pull request mentioned above has been merged into the main VPython git repo. However the installation instructions have changed due to the addition of the Numpy package and on my system I needed to install a newer WxPython (which much have been installed on my old system and why it wasn't on the original instructions).
Here's how I installed WxPython 2.9.4 on Ubuntu 13.10 (saucy -- no deb was available yet). I couldn't get 2.9.5 to build on my system - it kept failing in the make process at random places. You do need GTK2 dev package (as indicated as the first command) if you do not have that installed yet and the gstreamer base dev package (second command). If you get errors about missing .h files, then your system is missing a -dev version of some package that is indicated.
sudo apt-get install g++ libgtk2.0-dev freeglut3-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev python-dev libgtkglextmm-x11-1.2-dev libboost-python-dev libboost-signals-dev libboost-python-dev libboost-thread-dev tk
wget http://downloads.sourceforge.net/project/wxpython/wxPython/2.9.4.0/wxPython-src-2.9.4.0.tar.bz2
tar -xvf wxPython-src-2.9.4.0.tar.bz2
cd wxPython-src-2.9.4.0/wxPython
python build-wxpython.py --build_dir=../bld
Note the output that say something like -- we will need this later:
To run the wxPython demo you may need to:
- set your PYTHONPATH variable to /home/peter/wxPython-src-2.9.4.0/wxPython
- set your LD_LIBRARY_PATH to /home/peter/wxPython-src-2.9.4.0/bld/lib
Note that Numpy will take some time compiling all the C code on your system. I have an i7 with 8 cores it took a few minutes -- may look like it hangs, but be patient. Also, it may take some time for PIP to download the tarball depending on your internet connection speed -- it may look like it hangs downloading, but again be patient.
sudo pip install numpy
sudo pip install https://github.com/BruceSherwood/vpython-wx/archive/master.zip
At this point, we need to create .sh executable to run vidle. Create a file named vidle.sh with the following text (replace paths with the stuff we noted above) and ensure this file is executable (chmod 777 vidle.sh).
export PYTHONPATH="/home/peter/wxPython-src-2.9.4.0/wxPython"
export LD_LIBRARY_PATH="/home/peter/wxPython-src-2.9.4.0/bld/lib"
python /usr/local/lib/python2.7/dist-packages/VPython-6.03-py2.7-linux-x86_64.egg/vidle/idle.py
Wednesday, April 24, 2013
Twitter Bootstrap JS: Using ButtonGroup (radio type) selected button in a form
Using it is as simple as adding this to your document ready of your page. The first argument of the function call is the id of the `buttonGroup` and the second argument is the id of the hidden input where the function will store the values of the activated buttons:
$(document).ready(function() {
watchButtonsRadio('#utilitiesLocatedBtnGroup', '#utilities_located');
});Add this function to the general or utility JS file that is loaded on every page:
function watchButtonsRadio(buttonGroup, hiddenInput) {
$('button', $(buttonGroup)).each(function() {
var originalValue = $(hiddenInput).val();
//Convert booleans to numeric
if (originalValue == 'true') {
originalValue = 1;
} else if (originalValue == 'false') {
originalValue = 0;
}
if ($(this).val() == originalValue) {
$(this).trigger('click');
}
$(this).live('click', function() {
// Hidden by default doesn't trigger the change event so manually fire it
$(hiddenInput).val($(this).val()).change();
console.log(hiddenInput + ': ' + $(hiddenInput).val());
});
});
}
Tuesday, April 23, 2013
Tomcat7 Service Start/Stop Script
I'm posting this because I forget the script I used because I setup systems so infrequently. Place this in a file called tomcat7 in /etc/init.d/ Be sure to sudo chmod 777 tomcat7 so it will run.
#!/bin/bash # # tomcat7 This shell script takes care of starting and stopping Tomcat
# Description: This shell script takes care of starting and stopping Tomcat
# chkconfig: - 80 20
#
## Source function library.
#. /etc/rc.d/init.d/functions
TOMCAT_HOME=/home/peter/tomcat
SHUTDOWN_WAIT=20
tomcat_pid() {
echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
}
start() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo "Tomcat is already running (pid: $pid)"
else
# Start tomcat
echo "Starting tomcat"
ulimit -n 100000
umask 007
/bin/su -p -s /bin/sh root $TOMCAT_HOME/bin/startup.sh
fi
return 0
}
stop() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo "Stoping Tomcat"
/bin/su -p -s /bin/sh root $TOMCAT_HOME/bin/shutdown.sh
let kwait=$SHUTDOWN_WAIT
count=0;
until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]
do
echo -n -e "\nwaiting for processes to exit";
sleep 1
let count=$count+1;
done
if [ $count -gt $kwait ]; then
echo -n -e "\nkilling processes which didn't stop after $SHUTDOWN_WAIT seconds"
kill -9 $pid
fi
else
echo "Tomcat is not running"
fi
return 0
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo "Tomcat is running with pid: $pid"
else
echo "Tomcat is not running"
fi
;;
esac
exit 0
Yet another reason Twitter needs Two Factor Authentication
AP Hack Highlights Two Crucial Features Twitter Needs - Forbes
I swear they haven't added support for Google Authenticator or Yubikey because any publicity about Twitter is good publicity about Twitter, right?
Get with the program Twitter -- you need two factor authentication now more than ever. It's not surprising I blogged about it just in February about the hacking of Burger King's Twitter account.