Kompilere og kjøre Java i 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.
Behøver du en database med alle Norges postnummer? Bruker du et kart på nettsiden din? Har du behov for å sjekke hvilket sted postnummeret peker mot? Jeg har samlet alle dataene, i tillegg til koordinater til hvert eneste postnummer!
Jeg har i en stund brukt bloggen som en plattform for å bidra til det «åpne samfunnet», men nå blir det meste av kodesnutter, eksempler og andre kildekoder publisert via Github-repoene mine.
Så for å følge med i tidene som kommer, så er du mer enn velkommen til å følge noen av mine repoer:

I februar skrev jeg et innlegg om hvordan du kunne sette opp et register i Java, som inneholdt for eksempel datastrukturen din, og som sørget for at dataen ble lagret ved programslutt. I dag tenkte jeg å utvide denne klassen litt, med generiske metoder.
import java.util.Map;
import java.util.HashMap;
public class Registry implements Serializable
{
private static final long serialVersionUID = 7422025143560909873L;
private static Map registry = new HashMap<>();
public static void addObject (String k, Object v)
{
this.registry.put (k, v);
}
public static T getObject (String key)
{
return (T) this.registry.get(key);
}
}
Her har jeg gjort følgende endringer:
I praksis, så vil klassen fungere slik:
public class Main
{
public static void main (String[] args)
{
Registry.addObject ( "node", new Node("someName"));
// begge disse er like:
Node n = Registry.getObject ("node");
Node n2 = Registry.getObject ("node");
}
}

I PHP 5.4 har det kommet en ny SERVER-variabel som heter REQUEST_TIME_FLOAT og gir oss tiden da nettsiden begynner å laste (i millisekunder). Denne muliggjør at vi slipper å definere en konstant helt i begynnelsen av koden vår, som inneholder verdien av microtime(true). Nå kan vi i stedet for gjøre hele prosessen slik:
register_shutdown_function (function ()
{
$s = $_SERVER['REQUEST_TIME_FLOAT'];
$e = microtime (true);
echo "\n\nPage Rendered: ", sprintf ("%0.5f", ($e - $s)), " seconds";
});
Koden kan ligge hvor som helst i koden din (men legg den helst litt langt oppe …). Poenget med å dra nytte av register_shutdown_function() er at metoden blir kalt selv om nettsiden avslutter uventet, for eksempel via exit og die.
Jeg har gått igjennom hele databasen på nytt, og lagt inn alle endringer gjort av posten pr. 9. februar 2012.
For mer informasjon, går innom det originale blogginnlegget.
Cron er et ganske nyttig verktøy som gjør deg istand til å utføre spesielle oppgaver på et gitt tidspunkt, men er uheldigvis kun tilgjengelig på UNIX-systemer. I Windows har man noe som heter planlagte oppgaver, som også går an å anvende.
Men hva er dette godt for, når mange webhotell-tilbydere ikke engang har funksjonen(e) aktivert?
Det eneste alternativ som står igjen, er å lage en cron-emulator med PHP (eller lignende). Vi ønsker altså å lage et system som selv kan utføre oppgaver på gitte tidspunkt.
Ved et par Google-søk er det mulig å finne utallige slike eksempler, men personlig har jeg alltid følt de har manglet noe. Jeg ønsker det skal være enkelt og lett forståelig, samt enkelt å integrere i andre systemer.
I stedet for å bruke mye tid på å finne «det perfekte scriptet», så satte jeg av en liten time til å utvikle noe slikt selv.
Jeg endte opp med noe jeg selv mener er ganske enkelt å forstår seg på, samtidig som det er ganske enkelt å utvide også.
Totalt inneholder applikasjonen tre klasser:
Scheduler tar i bruk Singleton-mønsteret, slik at du kan få tak i klasseinstansen hvor som helst, uten å miste data som objektet lagrer.
Jeg har benyttet meg av et par ukjente triks for å oppnå ønsket resultat:
Koden under legger til en handling, som bestemmer at filen cron_scripts/my_file.php skal kjøres hver time. En gyldig URL må gis.
$scheduler = Scheduler::getInstance ();
$event = new SchedulerEvent ("http://example.com/cron_scripts/my_file.php",
new SchedulerInterval (SchedulerInterval::HOURLY));
$scheduler->addEvent ($event);
Koden for å kjøre handlinger er nødt til å ligge i en fil som blir kjørt på hver sidevisning, eksempelvis index.php.
Dette gjør vi for å være sikker på å utføre handlingene med best mulig presisjon.
// Sørger for at koden under blir utført uansett.
ignore_user_abort(true);
include_once 'class.scheduler.php';
include_once 'class.schedulerevent.php';
include_once 'class.schedulerinterval.php';
// sørger for at objektene blir lagret til neste sidevisning.
register_shutdown_function ('Scheduler::shutdown');
$scheduler = Scheduler::getInstance ();
foreach ($scheduler->getEvents() as $event)
{
// utfører handlinger som ennå ikke har blitt utført,
// eller som skal utføres basert på tiden gitt av metoden
if ($event->getNextRunTime() <= new DateTime() )
{
$event->run ();
}
}
Når en handling skal utføres, blir det sendt et separat POST-request til den valgte filen. Dette er for å unngå at handlingen ikke skal trekke ned hastigheten på siden.
PHP Scheduler (169 nedlastninger) (krever PHP >= 5.2.2)