19 december, 2008

Webbdesign: Skapa egna hemsidor enkelt

Häromdagen upptäckte jag en ny webbsida som heter Hemsida24 - en sida där man kan skapa egna professionella webbsidor enligt dem själva. Jag fann den genom min lärare jag hade under mitt första år på högskolan i Halmstad i kursen Web System Fundamentals.

Det visade sig att det var min lärare som hade gjort webbsidan tillsammans med ett par andra som arbetar i hans företag Lumik Enterprise.

Jag är riktigt imponerad av webbsidan och när jag testade direkt om det verkligen stämde som de säger att det är enkelt, så satt jag bara framför min skärm och gapade - wow!

Jag har själv redan gjort en webbsida (gratis förstås) och sedan använt koden på min egna webbserver. Tjänsten är så mycket bättre än Googles tjänst Googlepages som jag har använt (och fortfarande lite då och då) men den är faktiskt lite krånglig. Därför blev jag glad när jag såg att det verkligen stämde med Hemsida24's mål.

Jag är också väldigt glad att få ha haft en så duktig utvecklare som lärare i webbdesign, php och mysql. Det är mestadels därför jag ville skriva om detta.

Deras projekt är även ett jättebra exempel för de som undrar hur Ajax fungerar på webben. Grymt!

Källa
www.hemsida24.se

17 december, 2008

Nätverk: GNS3 v0.6 Test

Jag har precis laddat ner den senaste versionen av GNS3 vilken är v0.6. Det märks att GUI gränssnittet har förbättrats lite om man ser på verktygsraden. Textstorleken har även förstorats lite i några fönster för konfiguration.

När jag satte mig ner igår för att göra färdigt laboration 5.1 i Cisco ONT-kursen som handlar om QoS tänkte jag göra den i GNS3. Jag har ju en pagent-IOS så det är inga problem. Jag har även en router med en switchmodul för att simulera en switch med VLAN (den inbyggda switchen i GNS3 gillar jag inte).

Topologin har snyggats till litegrann och nu känns det mera proffsigt att arbeta i GNS3 gränssnittet. Jag bifogar även en bild för att visa ett exempel på hur det kan se ut.


(Klicka på bilden för att förstora)

* Notera även att länken mellan router TrafGen och router ALS1 har två nätverkskablar anslutna och att båda kablarna inte överlappar varandra, vilket de gjorde i tidigare versioner (t.o.m v0.5).

På bilden visas även alla värdnamnen på routrarna och deras gränssnitt (portar). Utvecklarna bakom GNS3 har lagt till en knapp som visar namnen på gränssnitten (till vänster om knappen för visning av värdnamn).

Referens
www.gns3.net

16 december, 2008

Nätverk: GNS3 i ny version v0.6

Wow! Äntligen har GNS3 släppts i ny version. Programmet börjar mer och mer likna Packet Tracer för de som vet vad det är.

I den senaste versionen av GNS3 finns möjlighet att:
  • Visa namnen på gränssnitten.
  • Visa multi-link kopplingar utan att kablarna överlappar varandra.
  • Måla ovaler och rektanglar vilket är jättebra om man vill designa områden med specifika routing protokoll (t.ex EIGRP, OSPF, RIP etc).
  • Enklare att identifiera gränssnitten i Windows för Ethernet NIO-valen.
  • + buggfixar
  • + övrigt
Gå till webbsidan www.gns3.net nu direkt och ladda ner den nya versionen.

Om ni vill kan ni även ta en titt på "Cisco Image Unpacker" på fliken "Downloads" på GNS3's webbsida.

05 december, 2008

Skolan: Strul i Cisco labbsalen

-- Detta blogginlägg har raderats --

Ni får ursäkta mig men jag har valt att radera detta blogginlägg eftersom jag tycker att det inte passar in på bloggen. För er som undrar vad jag hade skrivit kan jag berätta lite. Vi arbetade med Cisco i skolan under en laboration och helt plötsligt slutar allt att fungera. En student råkade dra ur kabeln för all utrustning i hela salen. Vi blev jättesura men vi lyckades återskapa vårt arbete efter några minuter igen.

- Waschman

25 november, 2008

Cisco: Om Pagent (Paket Generator) i Dynamips

Förord
Den här artikeln kommer gå igenom lite om verktyget Pagent som används i Cisco routrar i labbmiljö för att simulera olika typer av nätverkstrafik genom nätverket. Du kommer inte kunna läsa om funktionerna som Pagent erbjuder, utan kommer istället att få reda på alternativ som går att använda istället. Det kan hända att jag skriver en senare artikel om hur man använder Pagent men jag är inte helt säker.

QoS - Quality of Service
De som läser Cisco CCNP och har kommit till delen om "Optimizing Converged Cisco Networks" (ONT) använder utrustning som ska klara av Quality of Service "Qos". Jag tänker inte gå igenom vad QoS är för något på djupet men jag kan beskriva det lite som att man prioriterar olika typer av trafik.

T.ex så kan man prioritera Voice-over IP "VoIP", alltså röstmeddelanden/röstsamtal/iptelefoni, högre än trafik som bara innehåller chattkonversationer, torrentnedladdningar m.fl. Detta gör man för att inte ett iptelefoni-samtal skall bli brusigt, att paketen ska komma i rätt följd, och att det inte ska bli några fördröjningar.

QoS har många användsningsområden men enkelt beskrivet kan man säga att QoS ger mer bandbredd åt högprioriterad nätverkstrafik för att man skall få en så bra tjänst (eng. service) som möjligt.

Lite om laborationer med QoS och Pagent
När man då skall laborera med QoS så skriver man kommandon som skickas till routrarna för konfiguration, men hur skall man testa att trafik verkligen prioriteras på rätt sätt? Man vill ju inte direkt laborera i en verklig produktionsmiljö så vad kan man göra istället?

Pagent är ett egetutvecklat verktyg, tillverkat av Cisco för internt bruk, för paket generering och test av nätverk och implementerade QoS lösningar. Pagent är en specialdesignad version av ett Cisco IOS och kan bara aktiveras med hjälp av ett "machine id" och en "license key", alltså ett id och en unik nyckel. Man kan alltså inte ta en Pagent IOS från sin skola/arbete och licensnyckel med sig hem och sedan testa i Dynamips. För då krävs en annan licensnyckel.

Låst till hårdvara
En Pagent licens är låst till den specifika hårdvaran och man måste fråga Cisco efter en giltig licensnyckel för att kunna gå vidare. Det är endast anställda inom Cisco, CCIE, samt vissa skolor/universitet som undervisar CCNP som har fått tillåtelse att använda Cisco Pagent IOS utanför Ciscoföretaget.

Andra lösningar istället för Pagent
En lösning för de som inte får Pagent att fungera kan istället skaffa en mjukvara som installeras lokalt på er dator och som genererar paket genom ett Microsoft Loopback gränssnitt via Dynamips.

Ett program som är Shareware är "Network Traffic Generator and Monitor" [1] som kan generera IP/TCP/UDP/ICMP från klienter till servrar för att testa bandbredd, policys, brandväggar mm i sitt nätverk. Man kan allstå stresstesta nätverket.

En annan lösning är att använda Cisco SLA som endast stöds av nyare versioner av IOS (v12.4+). Mer om det kan ni läsa om på Ciscos webbsida i pdf-format "sla_cr_book.pdf" [2]. Det jag kan berätta lite kort om SLA är att man konfigurerar responder och transmitter på Cisco routrar. En transmitter konfigureras till att skicka en viss typ av trafik till en responder (sv. svarare) som sedan skickar tillbaks trafiken. Sedan kan man gruppera flera transmitters (sv. sändare) och ställa in tid samt hur ofta man vill att paket skall skickas. Med hjälp av detta kan man då skicka flera typer av trafik mellan två Cisco routrar.

Sedan i Dynamips kan man då implementera de flesta QoS reglerna och identifiera om det lyckas eller inte. En viktig sak man ska tänka på i Dynamips är att hastigheten går inte att styra med clockrate på seriella gränssnitt. Dynamips kan inte emulera lager 1 i OSI-modellen (det fysiska lagret). Så därför kan det uppstå problem när man ska testa köer (eng. queue).

Pagent i Dynamips fungerar
Jag vill tillägga att om man får tag i en Pagent IOS samt en giltig licensnyckel så kommer det att fungera i Dynamips. Jag har nämligen fått tag i en giltig licens för modell c2611 som kan köras utan problem i Dynamips. Själv använder jag det grafiska verktyget GNS3 för hanteringen av Dynamips relaterade funktioner och det fungerar hur fint som helst.

Jag tänker aboslut inte dela med mig av "machine id" och "license key". Det får ni försöka få tag på själva. Så snälla kontakta inte mig via kommentarer eller epost angående detta.

Referenser
[1] http://www.topshareware.com/Network-Traffic-Generator-and-Monitor-download-51163.htm
[2] http://www.cisco.com/en/US/docs/ios/ipsla/command/reference/sla_cr_book.pdf (10MB)

22 november, 2008

WebbTips: Läs om verklighetens Minority Report

Det här är nog ett av det häftigaste jag någonsin har sett. Killen som var med under inspelningen av framtidsfilmen Minority Report har skapat ett gränssnitt som användes i filmen. Man använder händerna för att utföra saker i systemet. Jag har själv sett filmen och när jag såg detta kunde jag inte släppa blicken ifrån videon.

Jag läste om detta på Metros webbsida och här är länken till det coolaste jag har sett på länge. Läs artikeln "Minority Report" har blivit verklighet (Metro) I artikeln finns även en länkad Flashvideo som visar när systemet g-speak används av grundarna.

Det är verkligen ett teknikens under om man frågar mig. Wow!

21 november, 2008

WebbTips: Googles epost Gmail har fått snygga teman

Idag när jag skulle kolla min epost upptäckte jag att Gmail har fått en ny inställning som låter användarna ändra webb-tema, alltså ändra utseende på sin inkorg med mera. Jag gillar verkligen att de flesta av de nya temavalen är väldigt stilrena. Sedan fanns det ju ett tema som skilde sig markant med de andra - grön, svart och totalt förskräcklig är "Terminal". Visst att det är lite coolt med grönt och svart om man är datorintresserad men det temat är bara för mycket.

Mina fyra favoriter i nuläget är:
  • Minimalistiskt
  • Silverkant
  • Havsdröm (röd)
  • Planeter
Temat "Grafitti" var annars väldigt snyggt gjort men det var inget jag fastnade för.

Sammanfattningsvis kan jag säga att om ni har Gmail så tycker jag ni ska testa ändra ert tema till något snyggt, gulligt eller häftigt eller liknande som ni tycker om. Snyggt jobbat Google!

19 november, 2008

Webbdesign: Färgtips

Idag har jag tittat lite på Adobe Air och upptäckte en väldigt smidig applikation som heter Kuler [1]. Det är ett slags verktyg för att leta efter färgkombinationer som matchar, eller som helt enkelt har skapats av användarna som är registrerade.


(Klicka på bilden för att förstora)

Källor
[1] http://kuler.adobe.com/

07 november, 2008

Java: Bra tips för java programmerare

Förord
(090122) Först skall jag berätta att jag har bytt namn på inlägget samt ändrat innehållet. Inlägget riktar inte sig längre till nybörjare utan istället för de som lärt sig grunderna i Java.

Jag läser just nu (081107) Java Programmering Fortsättning på högskolan i Halmstad och nu är det lite svårare att hålla koll på allt man har lärt sig. Jag kan grunderna i Java men ibland får man hjärnsläpp eller så söker man efter lösningar på problem som verkar svåra men som egentligen har en smidig och enkel lösning.

Men vad ska då det här inlägget handla om?
Jo jag hade tänkt publicera lite Java tips under tiden som jag går utbildningen för att hjälpa mig själv och andra som har liknande problem. Tipsen lämpar sig väl för programmerare som redan känner till Java men som fortfarande inte riktigt känner sig som hemma. Inlägget är även till för de som vill fräscha upp minnet lite. Nybörjare får gärna göra ett försök att hänga men det är inget jag rekommenderar.

Själv använder jag detta inlägg som uppslagsverk för det jag inte kan i huvudet (i viss mån).

Viktigt att observera för er läsare
Detta inlägg kommer att uppdateras och redigeras allt eftersom när jag väljer att lägga till eller ta bort tips från listan. Ni själva får gärna skriva en kommentar och tipsa om era smidiga Java lösningar. Men tänk på att hålla det på en mycket grundläggande nivå.

Lista med Java tips
x Omvandla från int till String:
// Det snabbaste sättet att omvandla från heltal till textform
int tal = 5;
String text = ""+ tal;

x Använda reguljära uttryck (regular expressions) - Bra att använda om man t.ex vill matcha en text mot endast gemener, versaler och siffror (eng. alphanumeric) eller andra kombinationer:
import java.util.regex.*; // importera biblioteket

String s = "84peon68"; // Exempel på användarnamn som skall kontrolleras
Pattern p = Pattern.compile("^[A-Za-z0-9]+$");// Sök efter Versaler, gemener, siffror
if ( p.matcher(s).matches() ) {
// Träff
}

x Skapa en konstant (eng. constant) variabel:
// Notera att man måste initiera ett värde direkt vid deklarationen.
// Ett bra användningsområde är att man slipper ändra data överallt i koden och
// kan istället ändra på ett enda ställe.
final int MAX_ANTAL = 7;
final float RANTA = 0.25;

x Statiska metoder:
// Klassen Math är statisk (eng. static) för den kan
// användas för att anropa metoderna direkt:
double pi = Math.PI;
int power = Math.pow(2, 8);

x ...

Slutord
Så! Det här var en del av de tips jag kan ge till Java programmerare som precis lärt sig grunderna och vill ha lite tips. Tveka inte att titta tillbaks vid ett senare tillfälle för att se efter om listan med tips har blivit utökad.

Troligen kommer listan att utökas när jag nu (090122) läser kursen Algoritmer och Datastrukturer (Java).

Jag hoppas ni fick svar på några funderingar och att ni löste ert problem (ni som nu hade något). Om ni undrar över något och om ni är nybörjare inom Java får ni gärna skriva en kommentar och fråga om jag kan skriva om det. Jag hoppas att jag skall kunna ge er svar, men kan inte garantera något svar.


Referenser och källor
http://www.regular-expressions.info/

01 november, 2008

Javascript: Ändra bakgrundsbild dynamiskt på en webbsida

Javascript är ett smidigt skriptspråk när man vill ändra saker på en webbsida. Eftersom allt som visas på sidan är objekt så kan man komma åt dessa och ändra egenskaperna via Javascript. Det vi ska göra nu är att ändra en bild dynamiskt till vad vi vill.

Varför vill man göra detta?
Tänk dig att du t.ex har en webbsida som använder en CSS stilmall för att sköta design och layout. På sidan finns följande div-tagg innanför <body>:

filnamn: index.html
<div id="pageHeader">Titel här</div>

som innehåller en bakgrundsbild med följande kod inkluderad i stilmallen:

filnamn: styles.css
#pageHeader {
background-image: url(/images/headers/bigblue.png);
}

Då har alla undersidor med det div-ID samma bakgrundsbild och det kan vara lite krångligt att ändra manuellt. Då kom jag på att man kan ange i koden för den aktuella webbsidan en sökväg till den bild man vill ha som bakgrundsbild som då används istället för originalbilden.

Detta är användbart i följande exempel: Du har t.ex en webbsida om ett populärt resmål men vill även ha en undersida som innehåller historia om resmålet. Då tycker du att det hade passat med en annan bild som visar hur området såg ut förr.

Hur Javascriptet fungerar
Skriptet fungerar som så att det söker igenom den aktuella webbsidan efter ett unikt ID som innehåller en sökväg till en bild som ska byta ut den som redan visas på sidan. Om inget ID hittas så lämnas originalet oförändrad.

Placera följande kod som inkluderar skriptet innan taggen :
<script type="text/javascript" src="changeheader.js"></script>

Här är koden för skriptet:

filnamn: changeheader.js

//
// cross browser getElementById()
// -- väldigt smidigt sätt men det finns andra implementeringar --
function getObject(id) {
var object = null;
if( document.layers ) {
object = document.layers[id];
} else if( document.all ) {
object = document.all[id];
} else if( document.getElementById ) {
object = document.getElementById(id);
}
return object;
}

/**
* En funktion för cross-browser kompatiblititet när vi lägger till
* events på sidan.
* Den stödjer endast javascript funktioner som har 'on'
* framför (t.ex onLoad).
*/
function addEvent(element, evType, func, useCapture)
{
// Firefox?
if (element.addEventListener)
{
element.addEventListener(evType, func, useCapture);
return true;
}
// Internet Explorer?
else if (element.attachEvent)
{
var ret = element.attachEvent("on"+evType, func);
return ret;
}
else
{
// Visa ett meddelande för besökaren att webbläsaren
// måste uppgraderas för att stödja javascript
// funktionalitetet fullt ut.
var msg = "Your webbrowser doesn't support the Javascript used on this page.\n";
msg += "Please upgrade to be able to use full functionality.\n\n";
msg += "//Staff";
alert(msg);
}
}

//
// Change the headerbackground image
// -- Här är den specifika koden som ändrar bakgrunden --
//
// Copyright &copy 2008 - Waschman
// License: Open Source
//
function changeHeader()
{
// The div-header
headerBox = getObject("headerBox");
// The div that contains the path
headerPlaceholder = getObject("dynamicHeaderImage");

// Did we fint the right object?
if (headerPlaceholder == null) {
/*alert("Skriptet vet inte vilken bild som ska användas som sidhuvud!\nVar vänlig kontakta support");*/
return false;
}

// Get the path
pathToImage = headerPlaceholder.innerHTML;

// uncomment to hide placeholder if no inline-css is used
//headerPlaceholder.style.display = "none";

// change image
headerBox.style.backgroundImage = "url("+ pathToImage +")";
}

//
// Body onload
// -- Denna kod kör funktionen “changeHeader” vid body onLoad --
addEvent(window, "load", changeHeader);

Så, det var koden och nu återstår bara att lägga in följande kodsnutt innanför <body> som aktiverar ändringen. Tänk på att bara lägga in denna kod på de sidor som du vill ska ha en specifik bakgrundsbild som "header".

filnamn: historia.html
<div id="dynamicHeaderImage" style="display: none">/images/headers/new_header_red.png</div>

Det är här ni anger vilken ny bild ni vill använda. För att se ett exempel kan ni ladda ner ett komprimerat zip-paket med några testfiler.


(Tillägg 25/7-09) Flytande ramar - IFrame
Om man vill kunna komma åt dynamicHeaderImage som är placerad i en iframe, från huvudsidan, kan man använda följande changeheader.js istället.

Varning!
Observera att koden inte riktigt fungerar som den ska. Allt fungerar förutom att man måste ladda om index sidan manuellt för att bakgrundsbilden ska visas. Detta för att changeHeader() körs vid body onload(). Om något vet hur man fixar detta så skriv gärna en kommentar.

Filnamn: changeheader.js
Beskrivning: Används endast för de som använder iframes. Inte testad med vanliga ramar.
//
// cross browser getElementById()
// -- väldigt smidigt sätt men det finns andra implementeringar --
function getObject(id) {
var object = null;
if( document.layers ) {
object = document.layers[id];
} else if( document.all ) {
object = document.all[id];
} else if( document.getElementById ) {
object = document.getElementById(id);
}
return object;
}

function getIframeObject(oIframe, id) {

var newIframe = getObject(oIframe);
var innerDoc = newIframe.contentDocument || newIframe.contentWindow.document;

if( innerDoc.layers ) {
object = innerDoc.layers[id];
} else if( innerDoc.all ) {
object = innerDoc.all[id];
} else if( innerDoc.getElementById ) {
object = innerDoc.getElementById(id);
}
return object;
}

/**
* En funktion för cross-browser kompatiblititet när vi lägger till
* events på sidan.
* Den stödjer endast javascript funktioner som har 'on'
* framför (t.ex onLoad).
*/
function addEvent(element, evType, func, useCapture)
{
// Firefox?
if (element.addEventListener)
{
element.addEventListener(evType, func, useCapture);
return true;
}
// Internet Explorer?
else if (element.attachEvent)
{
var ret = element.attachEvent("on"+evType, func);
return ret;
}
else
{
// Visa ett meddelande för besökaren att webbläsaren
// måste uppgraderas för att stödja javascript
// funktionalitetet fullt ut.
var msg = "Your webbrowser doesn't support the Javascript used on this page.\n";
msg += "Please upgrade to be able to use full functionality.\n\n";
msg += "//Staff";
alert(msg);
}
}

//
// Change the headerbackground image
// -- Här är den specifika koden som ändrar bakgrunden --
//
// Copyright © 2008 - Waschman
// License: Open Source
//
function changeHeader()
{
// The div-header
headerBox = getObject('headerBox');
// The div that contains the path
headerPlaceholder = getIframeObject('iframeContent', 'dynamicHeaderImage');

// Did we fint the right object?
if (headerPlaceholder == null) {
//alert("Skriptet vet inte vilken bild som ska användas som sidhuvud!\nVar vänlig kontakta support");
return false;
}

// Get the path
pathToImage = headerPlaceholder.innerHTML;

// uncomment to hide placeholder if no inline-css is used
//headerPlaceholder.style.display = "none";

// change image
headerBox.style.backgroundImage = "url("+ pathToImage +")";
}

//
// Body onload
// -- Denna kod kör funktionen “changeHeader” vid body onLoad --
addEvent(window, "load", changeHeader);

Använd denna kod för att visa iframe:
<iframe id="iframeContent" name="iframeContent"></iframe>

Koden är nästan likadan som den förra men funktionen 'changeHeader' har modifierats och en ny funktion 'getIframeObject' har lagts till.

Lycka till!

31 oktober, 2008

Cisco: ISCW Utvärdering

Förord
Jag har precis gått färdigt kursen Cisco CCNP2 ISCW - Implementing Secure Converged Wide-area cisco networks och här kommer en liten utvärdering. Det kan vara kul att läsa för er som tänker läsa Cisco CCNP och vill veta lite i förväg vad kursen kommer gå igenom.

Introduktion
Igår hade jag tentamen i den praktiska Cisco delen samt ett teoretiskt prov som instruktören själv hade gjort. Det gick jättebra men jag var lite osäker på nån fråga i den teoretiska delen. Instruktörerna är verkligen jätteduktiga och de visar verkligen vad de kan. Även om det kan vara lite svårt ibland att hänga med på några av föreläsningarna p.g.a. jobbigt engelskt uttal.

Kursen har pågått nu i några veckor sedan skolan började efter sommarens slut i början av höstterminen. Det har varit hektiskt och så otroligt mycket material att läsa. Det känns som långt över tusen sidor med text och bilder och det går även åt mycket tid att anteckna ner viktiga delar, punkter och moment.

Vad vi har gått igenom
Teleworker
I kursen har vi gått igenom hur man kan expandera företaget bortom kontorsväggarna och hem till personalen, eller om man är på resande fot. Vi har läst om teknologier som uppringdaanslutnignar (modem, isdn) när personalen är ute och reser (t.ex sitter på tåget), ADSL, VDSL, IDSL med flera om man vill ha en fast bredbandsanslutning där man ständigt är uppkopplad till Internet.

Secure VPN
Den viktigaste delen vi har läst om är hur man upprättar säkra anslutningar över ett publikt oskyddat nätverk (t.ex komma åt företagets nätverk hemifrån via din ISP exv. Telia, Bredbandsbolaget, Comhem m.fl.) Detta kallas även för ett Virtuellt Privat Nätverk "VPN" och är en teknik som använder krypterade tunnlar med Internet Protocol Security "IPSec". Vi har testat sätta upp s.k. "Site-to-Site VPN", "Easy VPN" och "Secure GRE Tunnels". Detta är helt fantastiska teknologier och funktioner som underlättar åtkomst, ökad produktivitet samt säkerhet för företagen.

MPLS
Multi Protocol Label Switching "MPLS" är en hyfsat ny teknik som Internetleverantörerna har börjat implementera och detta är en teknik som ökar hastigheten avsevärt när man utför paket-växling med routrarnas cache och etiketter. Men det är även en teknik som har anpassats för företag som vill ha en snabbare kärna (eng. Core) i sitt nätverk. Tekniken är som sagt hyfsat ny och den kommer mycket troligtvis vara åtråvärd hos dagens företag inom en snar framtid.

Device hardening + Cisco IOS Threat Defence features
Och nu till den roligaste biten... kombinera allt man lärt sig och applicera brandväggar (Cisco IOS, PIX, ASA), DeMilitarized Zone "DMZ" zoner, paketfiltrering, nya typer av Access Control Lists "ACL", Intrusion Detection System "IDS", Intrusion Prevention System "IPS" och användarkonto kontroller m.h.a. Authentication Authorization and Accounting "AAA". I detta ingår även att skydda sin router och inte bara sitt nätverk mot attacker och intrång.

I materialet har vi fått läsa om diverse verktyg man kan använda för att bryta sig in i ett nätverk, och för att skydda sitt nätverk mot just dessa attacker. En genomgång av virus, trojanska maskar och bakdörrar har också gåtts igenom och det var även det mycket intressant läsning.

Kursen i stort
Jag har lärt mig mycket nytt och inget har varit tråkigt. Vi har kombinerat teori med praktik och arbetet samt laborationerna har flytit på bra. Jag har speciellt satsat på att bli klar så fort som möjligt med alla uppgifter genom att anlända tidigare till skolan och försöka hinna bli klar innan resten av klasskompisarna anländer. På så vis kan jag hjälpa till mer om någon i klassen undrar över något och då lär jag mig så mycket mer.

Cisco är inte bara att sitta ner och lösa problem på egen hand eller fråga instruktören vid minsta lilla problem. Jag vill gärna försöka lösa problemen tillsammans med någon och då kommer jag ihåg allt mycket lättare. Kunskapen fastnar på ett annat sätt och det tycker jag är en bra blandning av teori, praktik och samarbete vid problemlösning.

Instruktörerna är väldigt duktiga och man känner att om man ställer en fråga som brukar man få ett bra svar tillbaka.

Tentamen
Den första tentan jag hade var Cisco Final Exam som man gör på Internet via Cisco Academys hemsida med sin inloggning. Provet var bra i sig men jag har några viktiga synpunkter:
  • Snälla ta bort frågorna om SDM för det är helt onödigt att veta vilka steg som kommer efter vilka. SDM är "point-n-click" och det ska inte komma på provet. Helt onödigt!
  • För mycket frågor om ADSL teknik. Visst att det kanske är bra men inte så många. Tycker att de borde satsa mer på den lite nyare tekniken.
  • Det är jobbigt när de nästan luras i frågorna och man måste lägga ner tid på att försöka tolka frågan. Man ska inte behöva gissa vad frågan är. Satsa mer istället på kluriga påståenden.
Den andra tentan jag hade var den igår som var praktiskt och lite skriftlig teori. Där blev jag lite besviken eftersom den efterliknande Case Study 1 på nästan alla punkter utom sista som kom från Case Study 2. Visst att instruktörerna sade att man skulle klara av provet bra om man hade lagt ner tid på Case Study-uppgifterna men hallå... provet borde vara lite tuffare för det var ju för enkelt. Jag kände att jag kunde provet nästan utantill eftersom det är de uppgifter jag har övat på mest av allt och som jag kan bäst.

Till sist hade vi den skriftliga delen och där fanns det några få kluriga frågor men det kändes utmärkt för jag har ganska gott självförtroende.

Slutord
Det är jättehärligt att vara färdig med CCNP 2 ISCW kursen och på tisdag väntar nästa föreläsning i nästa och sista delen i Cisco CCNP. Studierna gick bra, tentamen gick bra, det känns bra. Det var allt!

Om du planerar att läsa Cisco CCNP och har läst den här utvärderingen så kanske du fått lite mer klart för dig vad den kommer gå igenom.

WebbTips: De bästa antivirusprogrammen

Härom dagen fick jag ett nyhetsbrev som tipsade om några av de bästa antivirusprogrammen samt en liten beskrivning om varje. Det är en lista som har publicerats på bloggen Tommy K Johanssons [1] och jag tycker att den är väldigt bra för personer som inte har så mycket kunskap om virusskydd och vad som är bra och dåligt.

Själv rekommenderar jag Eset Nod32 för det segar inte ner din dator, det uppdateras ofta och det är snyggt designat med många avancerade funktioner. Jag använder det själv och tänker inte byta på ett bra tag. Kan även tipsa om Norton Antivirus / Internet Security för den vanliga hemanvändaren. Det använder mycket datorresurser men det har ett bra skydd som räcker.

Källor
[1] http://blogg.tkj.se/antivirus/

27 oktober, 2008

Tentamen i full gång

Hej! Det var ett tag sedan jag skrev men det är bara för att vi har kommit till den del i terminen då vi har tentamen på högskolan. Jag läser Programmering (Java) och Cisco CCNP2 (ISCW) och har precis haft två tentor av tre. Jag har haft fullt upp kan man väl säga och idag har mest varit en vilodag efter tentan jag hade tidigare på morgonen i kursen Programmering.

Nästa och sista tenta är andra delen i Cisco som är ett praktiskt prov plus en teoridel som innehåller frågor som instruktören själv har skrivit. Vi kommer ha prov på hur man sätter upp ett VPN nätverk för företag (vi ska bygga ett eget Hamachi nätverk om man ska beskriva det enkelt) med starka krypteringar, logiska GRE tunnlar, MPLS, Cisco IOS Firewall med mera.

Tips! För er som inte känner till Hamachi kan jag berätta att det är nästan det samma som att ha ett lokalt nätverk "LAN" i hemmet eller på företaget fast man kopplar upp sig till varandra via Internet. Det använder en stark kryptering och med långa lösenord är man säkrad mot objudna gäster. Väldigt smidigt och enkelt!

Aja, det var lite utanför ämnet men i alla fall. Jag har fortfarande en tenta kvar så jag måste lägga ner lite mer tid på att studera innan jag kan ta mig tiden att skriva om något nytt och intressant här på bloggen.

Det har gått bra hittills och hoppas verkligen att det kommer gå bra på torsdag med Cisco. Jag känner mig väldigt säker men man kan aldrig veta vad man får för provuppgifter.

Jag önskar mig själv ett gott lycka till och till er säger jag att jag snart är tillbaks. Ha de gött - haj!

12 oktober, 2008

Programmering: Java program för restid mellan två datum

Nu är det första gången som jag publicerar ett Java-program här på bloggen. Innan har det bara varit lite Javascript men nu kommer det riktiga.

Det är ett litet program för att räkna ut en restid mellan två datum. Det var en uppgift i kursen Programmering på högskolan i Halmstad.

Tänk på att det inte går att räkna ut restider som överlappar i veckor. T.ex går det inte att räkna ut restiden mellan Sat 05:47 och Tue 14:15!

Den smarta uträkningen är att jag först omvandlar skillnaden mellan de två tiderna till sekunder. När man sedan har antalet sekunder kan man formatera och beräkna resultatet nästan hur man vill för att få det snyggt. Jag kände att jag ville dela med mig av detta.


//***************************************
// TravelTime.java
// Name: Waschman
// Hemsida: http://waschman.blogspot.com
// Licens: OpenSource
//
// Beräkna tiden mellan två tidpunkter
//***************************************

import java.util.Scanner;

public class TravelTime
{

public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String startTime, stopTime;
int dayA, dayB;
int minA, hourA, minB, hourB;

// Hämta tiderna från användaren
System.out.println("Trive time, please use Mon,Tue,Wen,Thu,Fri,Sat,Sun");
System.out.print("Enter start time (e.g. Mon 06:55): ");
startTime = scan.nextLine();
System.out.print("Enter stop time (e.g. Wen 08:55): ");
stopTime = scan.nextLine();

// Fixa fram specificerade data

// Hämta dagnr för vald textdag
dayA = getDayTextToInt( startTime.substring(0, 3) );
hourA = Integer.parseInt( startTime.substring(4, 6) );
minA =Integer.parseInt( startTime.substring(7, 9) );

dayB = getDayTextToInt( stopTime.substring(0, 3) );
hourB = Integer.parseInt( stopTime.substring(4, 6) );
minB = Integer.parseInt( stopTime.substring(7, 9) );

// Felkontroll
if (dayA == 0 || dayB == 0) {
System.out.println("Please enter data in correct format!");
}
else {
// Beräkna antalet sekunder som skiljer
int secDiff = ( (dayB*24)*3600 + hourB*3600 + minB*60 ) -
( (dayA*24)*3600 + hourA*3600 + minA*60 );

// Visa en snygg tid
int dd,hh,mm,rest;
dd = secDiff / 3600 / 24;// Räkna ut antalet dagar
hh = secDiff / 3600 - dd * 24;// Timmar
rest = secDiff % 3600;
mm = rest / 60;// Minuter

// Visa resultatet
System.out.println("The traveltime is "+ dd +" days, "+ hh +" hours and "+ mm +
" minutes between "+ startTime +" and "+ stopTime);
}
}


//--------------------------------------
// Convert a string representation of a
// day in the week to integer
// Return: int
//--------------------------------------
public static int getDayTextToInt(String day)
{
day = day.toUpperCase();
if (day.equals("MON")) {
return 1;
}
else if (day.equals("TUE")) {
return 2;
}
else if (day.equals("WEN")) {
return 3;
}
else if (day.equals("THU")) {
return 4;
}
else if (day.equals("FRI")) {
return 5;
}
else if (day.equals("SAT")) {
return 6;
}
else if (day.equals("SUN")) {
return 7;
}
else {
return 0;// Fel format
}
}

}

För att testa koden måste ni först kompilera den till en *.class fil.

11 oktober, 2008

Övrigt: Jag har 30/10Mbit bredband

Nu tänker jag skryta lite. Efter att jag flyttat ned till Halmstad så har jag fixat en ny Internetleverantör "Bahnhof" och är nu inkopplad i Halmstad Hitnet stadsnät. Hastigheten? 30Mbit ner och 10Mbit upp. Äntligen slipper man vänta på stora paket som laddas ner när man exempelvis hyr film via bittorrent.

Det är otroliga hastigheter om man jämför med mitt första "bredband" med hastigheten 0.25Mbit upp och ner. Egentligen heter det bara bredband om man har en hastighet lika med 2Mbit eller mer. Men i alla fall... jag är jättenöjd och det är till och med billigare än mitt 8Mbit jag hade tidigare med bredbandsbolaget. De e najs!

Nu lite rolig matematik som kanske är helt ointressant för Er
Om man har 30Mbit ner och vill veta hur stor teoretisk nerladdningshastighet man kan få ska man först omvandla från Mbit till kbps. Då får man kB/s.
1 Byte = 8 bitar
30Mbit = 30000kbps
kB/s = kbps / 8bit
= 3750 kB/s

3750 / 1024 = 3,5 MB/s (cirka)
Vilket betyder att ska man hyra en film på nätet som är i DVD kvalitet, cirka 4,7GB, så tar det:
4700MB / 3,5MB/s / 60s  = 22 min
Detta är då det maximala teoretiska cirka-värdet för hur lång tid det tar med 30Mbit ner.

Om man har en egen server hemma (t.ex HTTP eller FTP) med stora egen-inspelade filmer på cirka 700MB som man vill ladda ner från servern, och om man har 10Mbit upp, så kan servern ladda upp data i teoretisk maximal hastighet: 
10000kbps / 8bit / 1024 = 1,22MB/s
Att ladda upp en hel sådan film skulle då ta minst:
700MB / 1,22MB/s / 60s = 9,5min

Blev det lite för rörigt för Er eller förstod ni allt? I alla fall, jag ville bara skryta lite med mitt bredband och visa er hur man enkelt kan räkna ut sina bredbandshastiheter.

Att notera!
Det finns även 100/30, 30/30 uppkoppling hos Bahnhof som är bättre än min uppkoppling så jag är inte ensam där ute.

Referenser
Bredbandskollen.se - Testa din bredbandshastighet

Välkomna till bloggen

Välkomna ska ni vara kära besökare. Jag skriver om IT för att det är kul och för att jag vill dela med mig av information och kunskap. Jag försöker hålla bloggen så kategoriserad som möjligt för att ni enklare ska hitta intressanta länkar och artiklar.