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 [...]
Flere ganger har jeg skrevet om Notepad++ og hvordan du enkelt kan utvide funksjonaliteten til programmet. Forrige gang skrev jeg om hvordan du kunne kompilere og kjøre Java-applikasjoner.
Denne gangen handler det om LaTeX og hvordan du kan skrive LaTeX-dokumenter i Notepad++, samt hvordan du får dem over til PDF- eller PostScript-format.
For at ting skal gå knirkefritt for deg så bør du helst leste artikkelen jeg skrev om kompilering av Java i Notepad++, spesielt om hvordan du installerer NppExec.
Deretter må du sørge for at du har installert MiKTeX, som er nødvendig for å kunne kompilere LaTeX.
Innstikket NppExec gir oss muligheten til å kjøre kommandoer direkte i Notepad++, og gjerne med en hurtigtast. Vi skal bruke dette innstikket til å kjøre to forskjellige batch-filer, som skal stå for å kompilere LaTeX til PDF eller PostScript.
Opprett en batch-fil med navnet «latex-pdflatex.bat». I denne filen skriver du inn følgende kode:
cd %1 pdflatex.exe %2
Denne batch-filen har som oppgave å kompilere et TeX-dokument direkte til PDF.
Deretter må du opprette en ny batch-fil med navnet «latex-postscript.bat». Denne filen skal brukes dersom LaTeX-dokumentet inneholder vektorgrafikk, for da må dokumentet gjøres om til PostScript først (PostScript-filer kan enkelt konverteres til PDF senere).
Filen må inneholde følgende kode:
cd %1 latex.exe -src-specials %2.tex dvips.exe %2
Dette programmet sørger for at LaTeX-dokumentet blir gjort om til en .dvi-fil, for så til PostScript.
For å finne ut hvordan du oppretter makroer i Notepad++, anbefaler jeg deg å lese forrige artikkel jeg skrev om emnet. Du følger samme prosedyre som beskrevet der, bare du bytter ut navnet på makroen samt kommandoen. Det er også beskrevet hvordan du kan tilegne tastatursnarveier til makroene.
LaTeX: til PDF
latex-pdflatex.bat "$(CURRENT_DIRECTORY)" $(NAME_PART)"
LaTeX: til PDF (grafikk)
latex-postscript.bat "$(CURRENT_DIRECTORY)" $(NAME_PART)"
Dersom du har fått alt på plass, så er det bare til å begynne å skrive!
Hvordan kan man finne alle primtall mindre enn k? Hvordan sjekke om et gitt heltall n er primtall? Hvordan kan vi primtallsfaktorisere ethvert tall?
Vi kan nå begynne å skrive Java-koden vår, og en kan for eksempel ende opp med noe slikt:
public boolean isPrime (int n)
{
int q = (int) Math.sqrt (n);
boolean isPrime = true;
for (int i = 2; i < q; i++)
{
if (n % i == 0)
{
return false;
}
}
return true;
}
Det første vi gjør er å ta kvadratrota til heltallet vårt. Deretter kjører vi gjennom alle heltall . Dersom tallet skulle være delelig med et annet, da er det ikke et primtall. Når løkken er gjennomført, vet vi at ingen tall er delelige og at heltallet vårt er primtall.
Ved aritmetikkens fundamentalteorem vet vi at et heltall større enn 1 er enten et primtall, eller et produkt av ett eller flere primtall.
For eksempel er:
public Integer[] primeFactorization (int a)
{
ArrayList factors = new ArrayList();
// fetch primes less than or equal to sqrt(a).
// if no primes are returned, the number itself is a prime.
Integer[] primes = primes ((int)Math.sqrt(a));
int i = 0;
while (i < primes.length)
{
int p = primes[i];
if (Arrays.asList (primes).contains(a) || isPrime (a))
{
// the remaining number is now a prime.
break;
}
if (a % p == 0)
{
// add the prime to our list, and execute the division
factors.add (p);
a = a / p;
}
else
{
// Continue to next prime, if the current one does not
// divide
i++;
}
}
// The number than remains should be a prime itself.
if (a > 1)
{
factors.add (a);
}
return (Integer[]) factors.toArray(new Integer[factors.size()]);
}
Her ble det kanskje litt komplisert med det første, men prosessen er igrunn ganske enkel:
Om vi bruker tallet 7007 om igjen, så vil vi i Java-funksjonen få følgende primtall:
. Det er alle primtall som er mindre enn kvadratroten til 7007.
Deretter tester vi først om 2 er delelig med 7007. Det er det ikke, så vi går videre til neste primtall. Det er først når vi kommer til 7 at vi finner et primtall som er delelig med 7007.
Vi legger da til tallet 7 i listen vår, og utfører divisjonen . I neste runde tester vi tallet 7 en gang til, og igjen så er det delelig. Vi utfører da
.
Når vi i påfølgende runde tester 7 igjen, finner vi ut at det ikke lengre er delelig. Men det er primtallet 11! Det siste primtallet vil da være 13.
Dette gir oss følgende i resultat: som forteller oss hvilke primtallsfaktorer som gir 7007.
Da jeg startet på Informasjonsteknologi ved HiOA, ble mange anbefalt å skrive Java i en IDE som Eclipse eller Netbeans fremfor teksteditor. Dette ble nok godtatt av de fleste, men for de av oss som har sverget troskap til Notepad++ er det vanskeligere å godta.
Etter litt søking rundt om, fant jeg frem til en løsning som lar deg kompilere og kjøre Java-kode direkte i fra Notepad++ med et par tastetrykk!
NppExec er en plugin til Notepad++ som lar deg kjøre kommandoer, og du vil finne denne i Plugin Manager. Gå til: Plugins → Plugin Manager → Show Plugin Manager.
I denne listen vil du finne NppExec. Huk av i avkryssningsboksen og trykk Install.
For å kunne kjøre Java-applikasjoner måtte jeg opprette en egen batch-fil for dette. Lag en fil som heter RunJava.bat, og lim inn dette:
cd %1 java -cp . %2 pause

Makroer er små miniprogrammer egnet for å utføre små oppgaver, som du kan lage med NppExec.
Trykk F6, lim inn følgende kommando:
D:\bin\JavaRun.bat "$(CURRENT_DIRECTORY)" $(NAME_PART)
Trykk så Save, og kall makroen for Java Run.
For å kompilere Java-kode behøver du ingen batch-filer, bare en spesiell kommando.
Trykk F6, velg <temporary script> fra nedtrekksmenyen, og lim inn kommandoen:
cd $(CURRENT_DIRECTORY) javac "$(FILE_NAME)"
Lagre den som Java Compile.

Gå til Plugins → NppExec → Advanced Options
I listen under «Associated Script» velger du Java Run. I boksen inder «Item name» skriver du: Java Run Application. Trykk så på Add/modify.
Gjenta samme prosedyre én gang til, bare denne gangen velger du Java Compile og skriver inn Java Compile Application under «Item name».
Trykk OK, og finn frem Macro i hovedmenyen. Du vil nå se dine makroer i listen nederst.
Det er greit å kunne ha en tastatursnarvei for disse makroene, spesielt fordi de vil bli benyttet ofte.
I hovedmenyen velg Run → Modify Shortcut/Delete Command. Deretter velger du «Plugin Commands», og finn frem til Java Run Application og Java Compile Application. Dobbeltklikk på hver av dem, og du vil få mulighet om å tilegne makroen en tastatursnarvei.
OBS! Pass på at det ikke oppstår konflikt med andre snarveier. Notepad++ håndterer slikt dårlig, og du vil derfor måtte fjerne en eksisterende snarvei før du kan bruke den på ny.
Gå til
Her følger en liten kodesnutt som viser en feilmelding i ca. fem sekunder før den fjernes igjen. I dét feilmeldingen vises, blir bakgrunnsfargen forsterket for å få en «se her!»-opplevelse. Dersom musen blir holdt over feilmeldingen, blir den ikke fjernet før etter musepekeren er fjernet fra den.
For å få koden til å fungere trenger du jQuery og jQuery UI.
$(function ()
{
$('div.message').hide().effect ('highlight', {
color:'#ff8a8a'
}, 2000).delay(3000).animate({
height: 'toggle',
opacity: 'toggle'
}, 'slow').hover (function ()
{
$(this).stop(true, true);
}, function ()
{
$(this).delay(2000).animate({ height: 'toggle', opacity: 'toggle' }, 'slow');
});
});
Om du studerer JavaScript-koden, vil du se at vi bruker effekten «Highlight». Effekten angir feilmeldingsboksen med angitt bakgrunnsfarge, før den fader tilbake til bakgrunnsfargen som er satt i CSS. Alternativt kan en benytte seg av «pulsate», som også gir en ganske behagelig animasjon:
$(function() {
$('div.message').hide().effect('pulsate', {
times: 2
}, 450).delay(4000).animate({
height: 'toggle',
opacity: 'toggle'
}, 'slow').hover(function() {
$(this).stop(true, true);
}, function() {
$(this).delay(2000).animate({
height: 'toggle',
opacity: 'toggle'
}, 'slow');
});
});
Pulsate-effekten her veksler mellom å skjule/vise feilmeldingsboksen iløpet av 450 millisekunder.
div.message
{
display:none;
border:1px solid;
padding:10px;
color: #D8000C;
background-color:#FFBABA;
}
div.message h4
{
font-weight:bold;
font-size:14px;
}
div.message p
{
padding:5px 0;
font-size:12px;
}
<div class="message">
<h4>An Error has Occured!</h4>
<p>
There was a problem while editing the article. Your data has been saved, and you can go <a href="#">back</a> to continue editing.
</p>
<p>
Error ID: #1337
</p>
</div>
Klikk på «Result» i vinduet under.
Eget vindu
Jeg har laget et løsningsforslag til R2 eksamen våren 2011 som du kan laste ned her:
Løsningsforslag V11 [PDF, 391 KB]
Eksamen V11 [PDF, 198 KB]
Ta forbehold om feil: trykk- og regnefeil kan forekomme den beste …