September 21, 2012, 12:30 pm
Couple of Bresenham’s line drawing implementations in C and Go. They will need hacking to suit your application.
void display_draw_line(int start_x,int start_y,int end_x,int end_y,uint16_t color) {
// Bresenham's
int cx = start_x;
int cy = start_y;
int dx = end_x - cx;
int dy = end_y - cy;
if(dx<0) dx = 0-dx;
if(dy<0) dy = 0-dy;
int sx=0; int sy=0;
if(cx < end_x) sx = 1; else sx = -1;
if(cy < end_y) sy = 1; else sy = -1;
int err = dx-dy;
for(int n=0;n<1000;n++) {
display_draw_point(cx,cy,color);
if((cx==end_x) && (cy==end_y)) return;
int e2 = 2*err;
if(e2 > (0-dy)) { err = err - dy; cx = cx + sx; }
if(e2 < dx ) { err = err + dx; cy = cy + sy; }
}
}
And golang:
func draw_line(start_x int32,start_y int32,end_x int32,end_y int32,color uint32,screen* sdl.Surface) {
// Bresenham's
var cx int32 = start_x;
var cy int32 = start_y;
var dx int32 = end_x - cx;
var dy int32 = end_y - cy;
if dx<0 { dx = 0-dx; }
if dy<0 { dy = 0-dy; }
var sx int32;
var sy int32;
if cx < end_x { sx = 1; } else { sx = -1; }
if cy < end_y { sy = 1; } else { sy = -1; }
var err int32 = dx-dy;
var n int32;
for n=0;n<1000;n++ {
draw_point(cx,cy,color,screen);
if((cx==end_x) && (cy==end_y)) {return;}
var e2 int32 = 2*err;
if e2 > (0-dy) { err = err - dy; cx = cx + sx; }
if e2 < dx { err = err + dx; cy = cy + sy; }
}
}
September 21, 2012, 12:11 pm
First install golang, SDL and the golang SDL package. The following is for Ubuntu 12.04:
sudo apt-get install golang-go
Install SDL libraries:
sudo apt-get install libsdl1.2-dev
sudo apt-get install libsdl-mixer*
sudo apt-get install libsdl-image*
sudo apt-get install libsdl-ttf*
sudo go get -v github.com/0xe2-0x9a-0x9b/Go-SDL/...
Then create the following go program. This write random pixel data to the screen directly. If you save it to main.go you can execute it with:
go run main.go
Here’s the code (please note there’s probably a lot wrong with it, it’s my first go program):
package main
import (
"github.com/0xe2-0x9a-0x9b/Go-SDL/sdl"
"log"
"unsafe"
"math/rand"
)
func draw_point(x int32,y int32,value uint32,screen* sdl.Surface) {
var pix = uintptr(screen.Pixels);
pix += (uintptr)((y*screen.W)+x)*unsafe.Sizeof(value);
var pu = unsafe.Pointer(pix);
var pp *uint32;
pp = (*uint32)(pu);
*pp = value;
}
func main() {
var screen = sdl.SetVideoMode(640, 480, 32, sdl.RESIZABLE)
if screen == nil {
log.Fatal(sdl.GetError())
}
var n int32;
for n=0;n<1000000;n++ {
var y int32 =rand.Int31()%480;
var x int32 =rand.Int31()%640;
var value uint32 = rand.Uint32();
draw_point(x,y,value,screen);
screen.Flip();
}
}
September 21, 2012, 6:25 am
apt-get install apache2
apt-get install libapache2-mod-perl2
apt-get install perl-debug
apt-get install libapache2-mod-perl2-dev
apt-get install libapache2-request-perl libdatetime-perl
Edit /etc/apache2/sites-available/default, add:
<Location /perl/>
SetHandler perl-script
PerlHandler ModPerl::PerlRun
Options ExecCGI
PerlSendHeader On
allow from all
</Location>
Install the CGI module:
cpan install CGI
Create a directory /var/www/perl. Add a script, for example:
#!/usr/bin/perl
use CGI; # load CGI routines
$q = CGI->new; # create new CGI object
print $q->header, # create the HTTP header
$q->start_html('hello world'), # start the HTML
$q->h1('hello world'), # level 1 header
$q->end_html; # end the HTML
Call it something like hello.pl. Try to access http://server/perl/hello.pl, everything should work correctly.
July 4, 2012, 5:54 am
echo 'deb http://linux.dell.com/repo/community/deb/latest /' | sudo tee -a /etc/apt/sources.list.d/linux.dell.com.sources.list
gpg --keyserver pool.sks-keyservers.net --recv-key 1285491434D8786F
gpg -a --export 1285491434D8786F | sudo apt-key add -
apt-get update
apt-get install srvadmin-base srvadmin-storageservices
#may not be required:
modprobe ipmi_msghandler
modprobe ipmi_si
modprobe ipmi_devintf
/etc/init.d/dataeng start
#reporting, system alerts:
/opt/dell/srvadmin/bin/omreport system alertlog
#reporting, e.g. fans:
/opt/dell/srvadmin/bin/omreport chassis fans
#reporting on controllers
/opt/dell/srvadmin/bin/omreport storage controller
#reporting on drives:
/opt/dell/srvadmin/bin/omreport storage pdisk controller=0
#virtual disks
/opt/dell/srvadmin/bin/omreport storage vdisk