Warning: Undefined array key "HTTP_REFERER" in /var/www/html/blogg/include/common.php on line 149

Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /var/www/html/blogg/include/common.php on line 149

Warning: Undefined array key "module_gallery_main_page" in /var/www/html/blogg/modules/gallery/init.php on line 6
root@circe.se

Programmering

Borde egentligen sova...


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Borde egentligen sova nu men jag fick en idé... Som ni alla vet är det helt omöjligt att skjuta upp en bra idé tills dagen efter. Man måste fixa det med en gång. Det jag har fixat nu är stöd för rubriker bland länkarna. Man skriver helt enkelt "header" där man ska skriva länkens mål så skapas en rubrik istället för en länk. Mycket stiligt. Ska nog fixa in stöd för "spacers" i morgon, kommer antagligen att renderas som <hr />. Eller något liknande.

Mixtrade om lite i stilmallen här också, så att det skulle bli lite snyggare. Lite ihoptryckt blir det men jag tycker det är lite bättre.

Nu är det sängen som väntar.

Lätt att glömma det uppenbara


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Trodde jag var klar med länkfunktionen, men som vanligt när man börjar använda den "skarpt" hittar man små problem. I detta fallet var det en en saknad, mycket viktig, funktion: möjlighet att ta bort länkar. I alla min iver så hade jag glömt att skriva en funktion för det. Inget svårfixat, tog kanske fem minuter att lägga till. Men jag tycker att jag borde ha tänkt på något så uppenbart från början.

Funderar på att skrota min vanliga site. Kör den på mitt, rätt dåligt, ihophackade CMS. Ett väldigt basic system som kör PunBB i botten. Kanske skulle kunna bli något av det om jag skrev om det från början. Med bättre CSS och XHTML i grunden skulle det kunna bli något. Samt självklart bygga det mot PunBB 1.2 istället för mot 1.1 som det nuvarande är byggt mot. Ska bli intressant och se vad man kan åstakomma. Ska försöka integrera forumet med bloggdesignen. Det ska gå, tror jag, men jag måste nog lägga bloggen och forumet i samma databas. Får tänka lite på det. Skulle vara rätt coolt :) Men jag tror det blir för mycket att fixa, så det får nog gå på en egen sida. Men det ska i alla fall uppdateras till senaste versionen. Ett alternativ är ju också att köra det i en iframe, men jag är emot frames i alla dess former så det kommer nog inte att användas.

Nu börjar det dra sig mot tolv och bli dags att sova.

Let sandman enter your room and close your eyes.

Feature list


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313


Warning: Undefined array key 1 in /var/www/html/blogg/include/parser.php on line 314
Det börjar närma sig release, lite justerande kvar sen ska det nog vara redo. Det är fortfarande ett par saker jag inte vet hur jag ska handskas med än. T.ex. uppladdning av avatars. Lutar åt att låta användaren ladda upp en avatar manuellt till servern nu i första versionen. Det är ju ändå bara en alpha och är inte gjort för skarpt användande av den stora massan. Måste bara skriva lite docs på eländet  ;)

Implementerade features

code:

* Postning av inlägg
* Redigering av inlägg
* Borttagning av inlägg
* Postning av kommentarer
* Borttagning av kommentarer
* Besöksstatistik (webbläsare, OS, språk etc)
* Arkivfunktion
* RSS 2.0 Feeds
* Grundläggande systeminställningar
* Användarinställningar
* Presentationssida
* bbCode i inlägg, kommentarer och presentation
* Valid XHTML 1.1
* Valid CSS

Något utöver detta man måste ha?

Valid XHTML 1.1


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Då var man klar med pulandet då, bloggmjukvaran validerar helt och hållet enligt XHTML 1.1 nu! Det har varit en del småbitar som inte har validerat innan men nu är de tillrättade. Nu är jag positiv, det är stor risk att en första alpha kommer ut denna veckan. Det som måste göras är att utöka användarinställningarna lite mer samt lite fler systeminsällningar sen är saken biff. Ett installscript behövs också, men det borde gå fort att fixa, med lite tur. Behöver ju inte vara något som är grafiskt tilltalande ens ;)

Lite krasslig fortfarande, huvudet känns helt konstigt, men jag orkar förhoppningsvis koda lite till. Dock inte långa stunder utan vila.

Cheers.

Sökmotorer utestängda


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Har nu gjort att bloggmjukvaran inte räknar besök från kända sökmotorer. Jag tror att detta var ett bra beslut, man är ändå mest intresserad av statistik från vanliga användare.

Däremot kom jag på en annan sak, man kanske ska lägga alla hits från sökmotorer i en egen tabell. Då kan man enkelt få fram statistik på vilka sökmotorer som indexerar sidan och hur många gånger de har gjort det. Just nu är jag lite sugen på detta.

Jag har också pulat ihop ett script här på morgonen som räknar nedladdningar, ska nog använda det för att se om någon laddar ner mina projekt ;) Ska nog bygga ut det lite så att det har ett fint webbinterface för administration (tilläggning/borttagning av filer), just nu är det hardcore SQL som gäller för att ändra något. Som det är nu fungerar det tillräckligt bra för tillfället, men när det kommer inte fler filer i systemet så börjar det bli intressant med smidigare administration. Det borde inte vara så hemskt svårt att ordna, eller ens ta lång tid egentligen.

Jag ska nog också börja bygga på "projekt"-delen av siten, så jag enkelt kan lägga upp information av mina projekt och lite annat kul. Kanske integrera detta med download-scriptet. Aja, framtiden får utvisa hur det blir.

Tre timmar kvar tills avfärden till jobbet, ussa.

Cheers.

Designdilemma: besöksräkning


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Har börjat fundera lite på hur besöksräkningen ska gå till i bloggsystemet. Det jag tänker på är om sökbotar ska räknas med i statistiken. Mjukvaran klarar med hjälp av truncate_url("http://artemis.mine.nu/projects/sniffer", "browser sniffern") att identifiera de vanligaste sökbotar/crawlers. Men frågan är om systemet ska strunta i att räkna dessa som besök eller som nu, räkna dem. Jag är lite splittrad, men det lutar åt att sluta räkna dem. Skulle leda till mer städad statistik också. Däremot kanske det är kul att ändå ha med dessa botar i statistiken för att se vilka som indexerar sidan.

Får tänka lite mer på detta, men det blir nog till att låta bli att räkna dem.

Implementationen av besöksstatistiksidorna i bloggsystemet går bra, med lite tur kan det bli en första alpharelease redan nästa vecka. Allt verkar fungera ok, bara upplägget som kanske måste ändras lite på en del punkter. Men det kan man ändra vid ett senare tillfälle. Utöver detta så ska det in lite fler inställningsmöjligheter och sedan är det nog redo för en första release.

Release: Browser/OS-sniffer


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Har finslipat Browser/OS-sniffern nu och jag är nöjd. Den har stöd för identifiering av webbläsare, sökrobotar, OS, internetleverantör (baserad på reverse lookup av IP-nummer) och språk. Sniffern är skriven i PHP och är fri att använda och att modifiera, truncate_url("http://people.freebsd.org/~phk/", "beerware-license").

Tack än en gång till Skogga för att jag har fått använda hans "databaser" för identifieringen. Dock har jag konverterat dem till ett annat format, som passar mig bättre.

Nedladdning:
truncate_url("http://artemis.mine.nu/projects/download.php?id=1", "sniffer-1.0.zip")
truncate_url("http://artemis.mine.nu/projects/download.php?id=2", "sniffer-1.0.tar.gz")

Have fun ;)

Edit: Sniffern i funktion:" ".truncate_url("http://artemis.mine.nu/projects/sniffer/test_sniffer.php" )

Webbläsardetection


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313


Warning: Undefined array key 1 in /var/www/html/blogg/include/parser.php on line 314
Har pillat ett par timmar med webbläsardetection idag. Det hela går ut på att man har HTTP_USER_AGENT, vilket är den sträng webbläsaren identifierar sig med. Ur denna sträng lyfter man sedan ur operativsystemet (ibland även version), webbläsarnamn och webbläsarversion. Det jag har pillat med idag är en implementation i PHP som gör just det. Jag kan ärligt säga att jag har lånat regexpen för en hög olika webbläsare och operativsystem från truncate_url("http://www.skoglind.se/myip/", "skoglinds MyIP"). Skoglinds kod finns att truncate_url("http://www.skoglind.se/programmering/info_sniffer.asp", "ladda ner"), dock är den skriven i ASP och jag behövde en PHP-version. Så jag skrev en. Dock tog jag mig friheten att använda hans databaser över webbläsare och operativsystem. Med tanke på att det står "Denna sniffer får hämtas hem och användas hur som helst." längst ner på nedladdningssidan tolkar jag det som tillåtet.

EDIT (2006-01-20 15:35): Har pratat med Skogga och bett om lov att använda hans regexp för detection (vilket man bör göra tycker jag, även om det står att det är fritt att använda). Han hade inga invändningar mot detta. Jag kommer också att släppa min PHP-version för nedlandning så snart jag är nöjd med den eftersom många har efterfrågat en PHP-version av Skoggas script.

Jag skulle visserligen kunna samla ihop all data som behövs själv, men det känns onödigt när det redan är gjort. Det sparade mycket tid. Och om jag skulle samla ihop datan och skriva all regexp själv skulle den ändå se precis lika dan ut ;)

Det som återstår nu är att integrera det i bloggmjukvaran, sen ska man kunna få fina rapporter om vilka OS och webbläsare besökarna använder. När det är gjort och det finns möjligthet att ändra lite personliga inställningar och skriva en presentation så känns det moget för en första publik Alpha. Inte för att någon kommer att ladda ner det :)

Och i sann opensourceanda bifogar jag PHP-sourcen till sniffern, alla operativsystem och webbläsare är inte inlagda än och det finns inte en enda kommentar. Den fungerar, men det krävs en del modifikation om man vill använda den till något mer än att bara skriva ut informationen på sidan.

code:

<?php
// Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7
// Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)
// Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050927 Epiphany/1.4.8 (Debian)

$browsers = array(
'Firefox' => array('name' => 'Firefox', 'version' => 'Firefox/(.*?)(s|$)'),
'MSIE' => array('name' => 'Internet Explorer', 'version' => 'MSIEs(.*?)(;|s|))'),
'Epiphany' => array('name' => 'Epiphany', 'version' => 'Epiphany/(.*?)(;|s|))'),
'AM Browser' => array('name' => '(IE) AM Browser', 'version' => 'AM Browsers(.*?);'),
'Maxthon' => array('name' => '(IE) Maxthon', 'version' => ''),
'MSN/' => array('name' => '(IE) MSN', 'version' => 'MSNs(.*?);'),
'Opera Mini' => array('name' => 'Opera Mini', 'version' => 'Opera/(.*?)s'),
'Opera/' => array('name' => 'Opera', 'version' => 'Opera/(.*?)s'),
'Opera' => array('name' => 'Opera', 'version' => 'Operas(.*?)s'),
'SEMC-Browser/' => array('name' => 'SEMC Browser', 'version' => 'SEMC-Browser/(.*?)s')
);


echo '<pre>';
//print_r($browsers);
$oses = array(
'Debian' => array('name' => 'Debian GNU/Linux', 'version' => ''),
'gentoo' => array('name' => 'Gentoo Linux', 'version' => ''),
'Ubuntu' => array('name' => 'Ubuntu Linux', 'version' => ''),
'Fedora' => array('name' => 'Fedora Core', 'version' => ''),
'OpenBSD' => array('name' => 'OpenBSD', 'version' => ''),
'FreeBSD' => array('name' => 'FreeBSD', 'version' => ''),
'GNUTLS' => array('name' => 'Debian GNU/Linux', 'version' => ''),
'SunOS' => array('name' => 'Sun Solaris', 'version' => ''),
'Mac OS X' => array('name' => 'MacOS X', 'version' => ''),
'MacOS' => array('name' => 'MacOS X', 'version' => ''),
'Mac_PowerPC' => array('name' => 'MacOS X', 'version' => ''),
'Windows NT 5.2' => array('name' => 'Windows 2003/XP x64', 'version' => ''),
'SonyEricsson' => array('name' => 'Sony Ericsson', 'version' => ':SonyEricsson(.*?)(/|s)'),
'Linux' => array('name' => 'Linux', 'version' => 'Linuxs(.*?)(;|-)')
);

echo $_SERVER['HTTP_USER_AGENT'].'<br />';

$os = 'N/A';
$browser = 'N/A';
foreach ($browsers as $search => $data)
{
	//echo htmlspecialchars($data).': ';
	if(preg_match('/'.$search.'/', $_SERVER['HTTP_USER_AGENT']))
	{
		$browser = $data['name'];
		if($data['version'] != '')
		{
			if(preg_match('/'.$data['version'].'/', $_SERVER['HTTP_USER_AGENT'], $matches))
			{
				//print_r($matches);
				$browser = $browser.' ('.$matches[1].')';
			}
		}
		break;
	}
}

foreach ($oses as $search => $data)
{
	//echo htmlspecialchars($data).': ';
	if(preg_match('/'.$search.'/', $_SERVER['HTTP_USER_AGENT']))
	{
		$os = $data['name'];
		if($data['version'] != '')
		{
			if(preg_match('/'.$data['version'].'/', $_SERVER['HTTP_USER_AGENT'], $matches))
			{
				print_r($matches);
				$os = $os.' ('.$matches[1].')';
			}
		}
		break;
	}
}

echo $browser.'<br />'.$os;
?>

En arbetsdag kvar, sen är det helg.

Cheers.

Backup


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313


Warning: Undefined array key 1 in /var/www/html/blogg/include/parser.php on line 314
Äntligen har jag pillat klart på mitt backupscript för mina MySQL-databaser. Det blev en hel del större än jag tänkt mig, men jag är nöjd och tror att det ska täcka mina behov.

Scriptet har några få inställningar, användarnamn och lösen till databasen, array med databaser som ska backupas, vilka kataloger som datan ska sparas till samt vilken komprimering som ska användas. Scriptet loopar sedan igenom arrayen med databaser och använder mysqldump pipat till komprimeringskommandot för skapandet av själva backupen. Sedan flyttas filen till från tempmappen till backupmappen och en symlänk skapas till senaste backupfilen. Den nya backupfilen replikeras sedan till alla andra valda backupmappar. Som vi alla vet bör man spara backupen på minst två ställen och de två ställerna bör inte vara på samma disk ;)

Själv har jag ställt in det som så att primär backupmappen är min hemmapp på servern och sedan replikeras datan till skrivarservern. Kanske fixar funktioner så att datan kan FTPas till en annan site någon gång i framtiden. Men för tillfället får detta räcka.

Det finns även funktionalltiet för att ta bort gamla backupfiler, dock är det inte 100% tillförlitligt eftersom det kollar mot datumet som finns i filnamnet istället för datumet filen skapades. Dock bör det fungera om man låter systemet arbeta ifred. Filnamnen har detta möster: <databasnamn>.<år>.<månad>.<dag>[.eventuellt sufix].gz. Suffixet läggs på om det redan finns en fil med namnet scriptet vill spara som, suffixet är ett heltal som ökas tills det finns ett namn som inte existerar ;)

Scriptet tar emot två parametrar, -q och -v. -q ges om man vill att det ska hålla helt tyst, bra för cronkörning. -v ges om man vill se så mycket info som möjligt, bra om man vill se exakt vilka kommandon som körs. Notera att databaslösenord kommer att skrivas ut i terminalen om -v används.

Glömde nästan, scriptet är skrivet i perl, använder Digest::MD5 och är enbart testkört på min egna server som kör Debian GNU/Linux 3.1. Det borde fungera att köra det på de flesta andra *nixar, samt på Windows om man har mysqldump, gzip, mv, ln och cp i sin path ;) Visst ja, Windows har ju inte det och kommer inte att ha det (finns ju inget som motsvarar symlänkar i Windows) :D Så det blir till att modifiera om man vill köra det under Windows. Hela alltet är licensierat under truncate_url("http://people.freebsd.org/~phk/", "Beerware-licensen") ;)

MD5-funktion finns för att inte backupa en databas om den inte har ändrats, dock fungerar den inte. Verkar som att gzip spottar ur sig olika data varje körning trots samma indata. Beror kanske på att ett timestamp sparas? Ska läsa igenom mansidan en gång till och se om det finns någon paramter för att motverka detta.

Without further ado, here's the script:

code:

#!/usr/bin/perl

# /*
#  * ----------------------------------------------------------------------------
#  * "THE BEER-WARE LICENSE" (Revision 42):
#  * <dr.slizer@gmail.com> wrote this file. As long as you retain this notice you
#  * can do whatever you want with this stuff. If we meet some day, and you think
#  * this stuff is worth it, you can buy me a beer in return dr slizer
#  * ----------------------------------------------------------------------------
#  */

# How it all works:
# You define the username and password for the database and a set of databases to backup. The script then uses mysqldump to dump
# the contents of all databases. The output from mysqldump is piped through gzip for compression. A symlink is made in the
# backup directory pointing to the latest backed up file.
# 
# There is an MD5 check for checking if the new file is the same as the latest backup, however this doesn't seem to work: gzip seems
# to output different data every time.
# 
# There is functions to replicate the backup to several different dirs, which ofcourse should be on other devices than the primary backup dir ;)
# 
# If you want to se exactly what the script does, use the -v argument, use -q if you want to run it as a cronjob.

# Pass -q as first parameter to the script for no output, e.g. ./backup -q
# Pass -v as first parameter to the script for extra output, e.g. ./backup -v

#--Settings--#
$username = 'username';			#Username to the database server
$password = 'password';			#Password the the database server
@databases = ('db1', 'db2');		#An array with databases to backup
$backupdir = '/var/dbbackup';		#The directory where the backups should be stored
@copydirs = ('/mnt/othermachine');	#An array with directories where the backup files should be copied to, for extra security
$tempdir = '/tmp';			#Temp dir where temp files should be stored during the scrip execution
$maxage = '60';				#The number of days old files should be stored, files older than this will be deleted

$compression = 'gzip -cfqn9';		#The command used to compress the files, the output from mysqldump is piped through this command and the output is written to file

#--Beginning of script--##

use Digest::MD5;

$maxage = $maxage*86400;

$quiet = 0;
$verbose = 0;

if(@ARGV[0] eq '-q'){$quiet = 1;}
if(@ARGV[0] eq '-v'){$verbose = 1;}

foreach $current (@databases)
{
	my($done) = 0;
	
	println('Backing up '.$current.'...', 0);
	my($command) = 'mysqldump -u '.$username.' -p'.$password.' '.$current.' | '.$compression.' > '.$tempdir.'/'.$current.'.tmp.gz';
	println('~$ '.$command, 1);
	system($command);
	
	#Checking if there is a previous backup of this file, if there is we check the md5 sum
	if(-e $backupdir.'/'.$current.'.gz')
	{
		println($backupdir.'/'.$current.'.gz exists', 1);
		
		open(OLDFILE, '<'.$backupdir.'/'.$current.'.gz') || die("Couldn't open $backupdir/$current.gzn");
		binmode(OLDFILE);
		$md5 = Digest::MD5->new;
		$md5->addfile(*OLDFILE);
		my($oldfile_md5) = $md5->b64digest;
		close(OLDFILE);
		
		open(NEWFILE, '<'.$tempdir.'/'.$current.'.tmp.gz') || die("Couldn't open $tempdir/$current.tmp.gzn");
		binmode(NEWFILE);
		$md5->new;
		$md5->addfile(*NEWFILE);
		my($newfile_md5) = $md5->b64digest;
		close(NEWFILE);
		
		println($backupdir.'/'.$current.'.gz MD5: '.$oldfile_md5, 1);
		println($tempdir.'/'.$current.'.tmp.gz MD5: '.$newfile_md5, 1);
		if($newfile_md5 eq $oldfile_md5)
		{
			println('~$ rm '.$tempdir.'/'.$current.'.tmp.gz', 1);
			system('rm '.$tempdir.'/'.$current.'.tmp.gz');
			$done = 1;
		}
		else
		{
			println('~$ rm '.$backupdir.'/'.$current.'.gz', 1);
			system('rm '.$backupdir.'/'.$current.'.gz');
		}
	}
	
	if(!$done)
	{
		#Checking what filename to use
		$filename = $current;
		
		my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
		$mon++;
		if($mon<10) { $mon = '0'.$mon; }
		if($mday<10) { $mday = '0'.$mday; }	
		my($date) = (1900+$year).'.'.$mon.'.'.$mday;
		
		$filename = $filename.'.'.$date;
		
		my($suffix) = 0;
		if(-e $backupdir.'/'.$filename.'.gz')
		{
			$suffix++;
			while(-e $backupdir.'/'.$filename.'.'.$suffix.'.gz')
			{
				$suffix++;
			}
			$filename = $filename.'.'.$suffix;
		}
		println('~$ mv '.$tempdir.'/'.$current.'.tmp.gz '.$backupdir.'/'.$filename.'.gz', 1);
		system('mv '.$tempdir.'/'.$current.'.tmp.gz '.$backupdir.'/'.$filename.'.gz');
		println('~$ ln -s '.$filename.'.gz '.$backupdir.'/'.$current.'.gz', 1);
		system('ln -s '.$backupdir.'/'.$filename.'.gz '.$backupdir.'/'.$current.'.gz');
		
		#Deleting files older than $maxage days
		$olddate = time-$maxage;
		my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($olddate);
		$mon++;
		if($mon<10) { $mon = '0'.$mon; }
		if($mday<10) { $mday = '0'.$mday; }	
		$olddate = (1900+$year).'.'.$mon.'.'.$mday;
		if(-e $backupdir.'/'.$current.'.'.$olddate.'.gz')
		{
			println('~$ rm '.$backupdir.'/'.$current.'.'.$olddate.'.*', 1);
			system('rm '.$backupdir.'/'.$current.'.'.$olddate.'.*');
		}
		
		#Copying the file to all @copydirs
 		foreach $curdir (@copydirs)
 		{
 			println('~$ cp '.$backupdir.'/'.$filename.'.gz '.$curdir.'/'.$filename.'.gz' , 1);
			system('cp '.$backupdir.'/'.$filename.'.gz '.$curdir.'/'.$filename.'.gz');
			
			#Deleting files older than $maxage days
			if(-e $curdir.'/'.$current.'.'.$olddate.'.gz')
			{
				println('~$ rm '.$curdir.'/'.$current.'.'.$olddate.'.*', 1);
				system('rm '.$curdir.'/'.$current.'.'.$olddate.'.*');
			}
		}
	}
	println($current.' backed up to '.$filename.'.gz.');
}

sub println
{
	my($string, $level) = @_;
	if(!$quiet)
	{
		if($verbose)
		{
			print($string."n");
		}
		elsif($level == 0)
		{
			print($string."n");
		}
	}
}

edit: Visst var det timestamp som ställde till det med MD5-checken, scriptet är nu uppdaterat så det skickar -n som paramter till gzip. Det verkar fungera i mina testkörningar.

Cheers.

Gammalt program


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Fick lite rolig respons på ett gammal program jag skrev för kanske ett år sedan. Programmet har det finurliga namnet "Wärch Lister" och används för att lista originalreleaser. Listan kan man sedan spara i en textfil om man har lust. Releaserna sorteras i datumordning och det går att sortera både efter fallande och stigande datum. Tänkte att jag lika gärna kan lägga upp en länk till det om fler än intresserade av det.

Länk:" ".truncate_url("http://artemis.mine.nu/stash/Warch.Lister.v0.8.rar" )

Arkivfunktion fixad


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Fick lite tid över så jag fixade arkivfunktionen också. Åtminstone en första version, den förbättras antagligen lite i framtiden. Fortfarande en hel del att göra på bloggsystemet innan det blir riktigt användbart och en publik alpha kan släppas. Systemet kommer att licensieras under GPL, så det kommer vara fritt och opensource.

Snart dags att jobba, kväll denna veckan vilket betyder fyra dagar. Hoppas veckan går fort och vi har något att köra så vi slipper stå att packa hela tiden.

Lite ringrostig


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Håller just på att skriva på den nya bloggen. Det känns verkligen att det var länge sedan man skrev PHP. Det smyger sig in småfel lite här och där som jag har mycket svårt att hitta, något som inte brukar inträffa när jag är van vid språket. Har just kirrat inloggningen på nya bloggen. Det tog en hel del längre tid än vad det borde ha gjort. Men nu hoppas jag att jag kommit in i språket lite bättre så att fortsättningen går lättare, eller åtminstone fortare.

Well, back to the coding :-)

Arbetet rullar på :)


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Har kommit igång med bloggskrivandet nu :) Håller på att fila på designen just nu och jag är faktiskt riktigt nöjd, är visserligen en hel del mer att göra men jag tror ändå att jag ska lämna det som det är just nu och gå på PHP-kodandet. Det blir lättare att fixa det sista i designen när man har något "vettigt" att visa :)

Om någon är nyfiken på hur det hela ser ut så kan ni kolla truncate_url("http://artemis.mine.nu/~macke/blogg", "här"). Den ska valid XHTML 1.1, om den inte är det beror det på att jag håller på att pula :)

Dags att göra något!


Warning: Undefined array key "votes" in /var/www/html/blogg/index.php on line 313

Arbetsveckan är slut och jag har inget speciellt att göra idag. Så jag tror att jag ska börja skriva på en blogg, har funderat länge på detta och nu tror jag att jag har tänkt tillräckligt långt för att kunna lyckas :) Kanske till och med får till någon användbar kod redan ikväll så att jag kan byta ut den här fulhackade varianten. Denna uppfyller ju egentligen inte grundkraven för bloggar, man ska ju kunna ge kommentarer :) Måste bara fila ihop en design jag är nöjd med sen blir det till att damma av PHP-kunskaperna, vilket förhoppningsvis inte kommer bli något problem även om det var länge sen man rörde språket sist :)

Blir nog till att låna vissa delar från truncate_url("http://www.punbb.org", "PunBB") i detta projektet. Thank god for truncate_url("http://en.wikipedia.org/wiki/Open_source", "Open Source") ;)

Förresten börjar jag bli väldigt irreterad på BRL nu, nästan två veckor sedan jag beställde och de har inte skickat paketet än. Vill ju få in ljudet i bilen! :)