Java: Kompiler og kjør, direkte fra Notepad++
Kompiler og kjør Java-kode direkte fra Notepad++! Ingen grunn til å bytte til en IDE nå lengre!
Kompiler og kjør Java-kode direkte fra Notepad++! Ingen grunn til å bytte til en IDE nå lengre!
Sliter du med store CSS- og JavaScript-filer? Føler du at det drar opp lastetiden din? Jeg skriver om en god metode for å korte ned filstørrelsene, og dermed redusere lastetiden.
I en verden med rundt 25 ulike tidssoner, kan datoer og klokkeslett bli et mareritt. Hvordan skal vi lagre datoene, og hvordan skal vi vise dem? Følg med, og lær om PHPs nye DateTime-bibliotek!
Hva er det som er så viktig med sikkerhetskopier? Hvordan kan man ta sikkerhetskopi uten noe stress? I dette innlegget viser jeg deg hvordan du kan ta sikkerhetskopi av MySQL ved å bruke PHP, og automatisere det med en planlagt oppgave i Windows.
I mange ulike sammenhenger kan det være nyttig med Cron jobs på Linux, som skal gjøre en bestemt oppgave til et bestemt tidspunkt. Som webutvikler bruker jeg dette verktøyet jevnt og trutt, for eksempel dersom jeg ønsker å kjøre en PHP-fil hver midnatt. Men hva med Windows? På Windows har vi noe som heter «Planlagte [...]
I disse «sene» juledager har jeg fått oppgradert serveren min, deriblant PHP, MySQL og Apache til aller siste versjon. Mest hyggelig er det jo med en etterlengtet MySQL-oppgradering, som såvidt har blitt oppdatert Oracle kjøpte dem opp.
Anbefaler også at du gjør det samme, og da spesielt MySQL 5.5-oppgraderingen hvor InnoDB endelig er satt som standard og som kan skiltes som 540 % mer effektiv (Windows)!
Så nå kjører jeg altså PHP 5.3.4, MySQL 5.5 og Apache 2.2.17, på en Windows 7-maskin, som tok meg i underkant av 15 minutter å gjøre.
PS:
I fjor arrangerte fysikk-, matematikk- og samfunnsøkonomistudentene ved avgangsklassene på skolen min tur til det internasjonale forskningssenteret CERN. Turen gikk over circa én uke, inkludert en busstur frem/tilbake til Frankrike.
Dette har vi — avgangselevene 2010/2011 — også svært lyst til å gjennomføre. Uheldigvis for oss, har det kommet nye strenge regler som gjør turen svært vanskelig for oss økonomisk sett. Vi får blant annet ikke lov til å samle inn penger til en felles pott, siden «skolen skal være gratis».
Men da vi oppdaget konkurransen Klassekassen, såg vi et glimt av håp. For at vi skal være blant de som kan vinne konkurransen, er vi avhengige av å være blant topp 10. Selv om denne konkurransen trekker til seg endel useriøse bidrag, håper vi at formålet vårt er såpass bra at folk vil stemme oss frem.
Førstepremien er 50,000 NOK, mens andre- og tredjeplass for hver sine 25,000. Uansett hvilke summer vi vinner så kommer dette godt med. Turen er tross alt ikke billig…
Klikk deg innom vårt bidrag på Klassekassen og stem via din Facebook-konto. Du kan også stemme per e-post.
Ved å gjøre dette enkle bidraget, så kan du faktisk sørge for at vi kommer oss på tur!
Med tanke på forskningen som utføres på CERN innebærer, bidrar dette i stor grad til inspirasjon for videre utdanning. Siden vi er en gruppe realfagstudenter, så kommer flesteparten til å gå videre på universitet på en-eller-en-annen ingeniørlinje. Vi har tidligere vært innom blant annet Universitet i Bergen ved Fysisk Institutt, og det er klart at slike turer bidrar faglig!
Når du bygger applikasjoner for nettet, vil du komme til et punkt hvor enkelte komponenter kan dra ned ytelsen eller lastetiden. Dette kan for eksempel være krevende PHP-kode som store løkker, behandling av store mengder data, eller krevende MySQL-spørringer.
Du tenker da kanskje å implementere et mellomlager. Dette kan du gjøre på applikasjonsnivå og på servernivå.
La oss si at du har bygget deg en RSS-leser, som henter XML-data fra nyhetsstrømmer fra nettet. Over tid vil serveren bruke mye ressurser på å laste disse ned fra nettet hele tiden, og som mottiltak kan du lagre XML-dataene på din egen server (som blir oppdatert jevnlig). På den måten har du implementert et mellomlager på applikasjonsnivå, hvor du lagrer data i en gitt periode før du oppdaterer mellomlageret med ny data (for eksempel hver 30. minutt).
Du kan også implementere løsninger på servernivå, som kan bedre ytelsen til PHP ved at den kompilerer koden og lagrer den på RAM. Her har du eksempler som PHP-Accelerator, eAccelerator og Zend Optimizer.
Men hva når det kommer til MySQL-spørringer?
Her kan du også implementere et mellomlager på applikasjonsnivå, men da må du sette opp dine egne metoder som kjører spørringer etc. Du følger da samme tankegangen som med RSS-leseren:
Men dette kan være uønskelig i flere tilfeller:
Typisk implementering ville vært noe slik:
class MySQL
{
public function query ($query)
{
$cache = 'cache/' . md5 ($query) . '.mysql';
if ( file_exists ($cache))
{
$data = unserialize (file_get_contents ($cache));
}
else
{
$query = mysql_query ($query);
$data = array ();
while ($row = mysql_fetch_assoc ($data))
{
$data[] = $row;
}
file_put_contents ($cache, $data);
}
return $data;
}
}
$mysql = new MySQL ('localhost', 'user', 'pw', 'db');
$data = $mysql->query ('SELECT foo FROM bar');
Men en bedre løsning vil være å dra nytte av MySQLs egen Query Cacher. Denne returnerer mellomlagret data dersom det er forblitt uforandret, og oppdaterer så snart det er ny data. I tillegg blir spørringene utført på tilnærmet 0 sekunder. Altså en veldig grei sak, dette her!
I de fleste tilfeller er Cache-muligheten skrudd av som standard, og du kan sjekke dette ved å kjøre følgende kommando til MySQL:
mysql> show variables like 'query%'; +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 0 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+
Her ser vi at query_cache_size er satt til 0, noe som fører til at Cache-funksjonaliteten er skrudd av. For å aktivere denne, kjør følgende kommando:
mysql> set global query_cache_size=50000000;
Det er i bunn og grunn alt du trenger å gjøre! Og dette fungerer flott som fjell.
Lykke til!
I dag — 25. november — var dagen for min aller siste eksamen i IT-programfaget! På mandag hadde jeg skriftlig eksamen og i dag var det tur for muntlig-praktisk i Bergen
Oppgaven fikk jeg tilsendt per e-post på tirsdag klokken 1500, da det skulle være 48 timer forberedelse.
PDF kan lastes ned her [53 KB]
Det var oppgitt totalt 3 oppgaver, én til hver hoveddel i faget. Disse er da Multimediautvikling, Programmering og Dokumentasjon.
Jeg hadde fått i oppdrag av et nytt togselskap (Noash) å
Siste oppgaven handlet om dokumentasjon, og her skulle jeg egentlig bare sørge for at koden min var kommentert godt og at jeg forklarte applikasjonen min for sensor og eksaminator.
Det første jeg gjorde var å designe banneret til den fiktive nettsiden. Størrelsen jeg valgte var 768×150 piksler, som er en uformell standardisert størrelse for banner. Jeg laget meg en liten logo for togselskapet, og tegnet et enkelt vinterlandskap.
Jeg tok meg også friheten til å slenge på noen togskinner, slik at jeg kunne animere et tog som kjørte på dem (i Flash).
Når det kommer til oppgave 2, så løste jeg denne ganske slavisk. Jeg la inn banneret på toppen av applikasjonen, og laget meg en liten innholdsdel under.
Innholdet var et eget MovieClip med to nøkkelbilder:
Når jeg hadde fått designet mitt på plass, så gikk jeg løs på programmeringen. Stasjonene hadde jeg lagret i en matrise, og skrev dem til Comboboxene med DataProvider. Videre så la jeg en lytter på Bestill-knappen, slik at jeg kunne behandle bestillingen.
Jeg ønsker ikke å gå i så utrolig stor detalj, men kan påpeke at jeg la stor vekt på programmeringen og god kommentering (om det er ønskelig kan jeg laste opp eksamensbesvarelsen min).
Jeg hadde 15 minutt til presentasjon av besvarelsen min, og gikk rett på hvorfor jeg valgte den størrelsen på banneret jeg gjorde og hvordan denne ble designet. Den delen gikk rimelig fort unna, da banneret egentlig ble laget på 10 minutter.
Deretter åpnet jeg opp flashprosjektet, og viste frem designet på applikasjonen. Dette var bare for å forberede sensor og eksaminator på det neste jeg skulle ta opp, nemlig kildekoden.
Jeg gikk trinnvis gjennom programmeringen, og forklarte hva den spesifikke koden gjorde og hvorfor jeg hadde valgt en slik fremgangsmåte. Jeg snakket også litt om hvorfor jeg hadde valgt de datatypene jeg gjorde.
Som et siste steg, tok jeg opp applikasjonen og demonstrerte hvordan den fungerte.
Deretter var det tid til spørsmål, og jeg skulle blant annet si noen ord om lytterfunksjoner og hvordan disse fungerte; og utviklingsmodeller og hvordan jeg tilpasset meg dem når jeg jobbet.
Det var faktisk de samme personene som eksaminerte meg i dag som det var under privatisteksamen i IT-1.
Til slutt ble jeg bedt om å gå ut på gangen, mens de bestemte seg for hvilken karakter de skulle gi meg.
Det gikk ikke lange tiden før jeg ble kalt tilbake, hvor jeg fikk beskjed om at dersom de ikke hadde gitt meg toppkarakter, så burde de blitt innlagt på mentalsykehus. Dette betydde altså at jeg hadde fått en sekser, og jeg kunne fornøyd snu nesen min hjemover!
Her kan du se den endelige besvarelsen min.
Om det er noe du lurer på, så skriv i kommentarfeltet! Jeg besvarer mer enn gjerne!
22. november var datoen da jeg hadde skriftlig eksamen i Informasjonsteknologi 2, og i den sammenheng har jeg noen erfaringer å dele.
Siden jeg tok Informasjonsteknologi 2 som privatist, innebærte dette at jeg måtte opp i både skriftlig og munnlig-praktisk eksamen. Jeg har tidligere skrevet om privatisteksamen jeg hadde i IT-1, og hvorfor jeg valgte akkurat denne «stien».
Faget har tre hovedemner: Planlegging og dokumentasjon, Programmering og Multimedieutvikling. Det er i hovedsak enten ActionScript og Flash eller C++ og Visual Basic en bruker. De fleste velger ActionScript, men det er også enkelte som heller mer mot C++. Dette valget er helt opp til deg, da faget er bygget opp slik at det tar høyde for begge.
Jeg har tidligere ønsket å lære meg ActionScript 3, men har ikke funnet noe insentiv til hvorfor. Derfor valgte jeg Flash og Actionscript som fagfelt, og bestilte bøkene IT-2: Multimedieutvikling i Flash og AS3 og IT-2: programmering i Actionscript 3.0 : Flash CS3 professional.
Bøkene er skrevet på en god måte, slik at du kan lære deg Flash og ActionScript ganske greit ved å lese deg gjennom kapitelene. Selv hadde jeg aldri vært borti ActionScript på forhånd, men etter å ha lest bøkene og produsert endel øvinger, kan jeg skrive ganske mye utenat.
22. november hadde jeg som nevnt skriftlig eksamen, hvor jeg fikk utdelt et oppgavesett med totalt 4 oppgaver. Jeg fikk også utdelt et elektronisk vedlegg, som inneholdt én lydfil og et par bilder.
Forberedelsesdelen ligger som PDF her [PDF, 43 KB]
Eksamen ligger nå også ute på Udir [PDF, 82 KB]
Oppgave 1 hadde tre deloppgaver, hvor jeg skulle behandle fem bilder (nedskalere dem til 250 piksler i bredden) i tillegg til å redigere et lydklipp ned til 10 sekund. I den siste deloppgaven skulle jeg bruke lyden og bildene jeg hadde behandlet til å lage en bildeviser i Flash. Denne skulle rullere gjennom alle bildene kontinuerlig, og skulle ha en lyd som ble spilt av i bakgrunnen.
I oppgave 2 fikk jeg oppgitt en tabell over temperaturer for 5 ulike hoteller over en periode på 6 dager. Oppgaven min var først å lage en applikasjon hvor bruker skulle velge et hotell fra en nedtrekksliste, for så og få opp kontaktinformasjon (telefon, e-post) til hotellet.
Senere skulle applikasjonen utvides til at den også tok med temperaturene for de 6 dagene for hotellet. Disse lagret jeg i en XML-fil som jeg importerte via ActionScript, da et krav var at temperaturene skulle kunne endres i etterkant. I den siste deloppgaven skulle applikasjonen utvides ytterligere, men nå skulle den vise temperaturene som grafikk i form av søyler.
Oppgave 3 handlet om dokumentasjon, og her måtte jeg dokumentere applikasjonen jeg laget i forrige oppgave. Her måtte jeg ha med alt fra kravspesifikasjon til testingen.
Siste oppgaven kan ikke kalles en oppgave, men her skulle jeg enkelt og greit legge alle oppgavefilene mine i et ZIP-arkiv.
Selv om det var kun tre reelle oppgaver, satt jeg likevel tiden ut. Hovedproblemet mitt var at eksamensansvarlig ikke fant frem til det elektroniske vedlegget før det hadde gått 30 minutt siden eksamen hadde startet, i tillegg til at jeg var litt rusten på XML-arbeid i ActionScript. Jeg løste likevel alle oppgavene, og venter spent på fellessensuren 4. januar!
I boken IT-2: programmering i Actionscript 3.0 : Flash CS3 professional er det endel «valgfrie emner» mot slutten. Disse tar opp blant annet objektorientert programmering og XML. Disse anbefaler jeg deg sterkt å lese.
Du bør også sette deg et krav om å kunne skrive mest mulig utenat. Lag deg selv noen oppgaver, og løs dem på egenhånd. Min øvingsmappe teller per i dag over 36 oppgaver jeg har laget, og går helt fra «basic events» til «math quiz«.
Det skal nevnes at boken ikke tar opp alle emner. Et godt tips er derfor at du undersøker ting på egenhånd, og da kan det være godt med noen nettsider å lete på:
Denne artikkelen er 1 av 2, og i neste del skriver jeg litt om munnlig-praktisk eksamen. Jeg skal faktisk ha denne i morgen, så dere får ønske meg lykke til!