Gå til innhold

quantum

Medlemmer
  • Innlegg

    3 389
  • Ble med

  • Besøkte siden sist

Hjelpsomme svar

  1. quantum's innlegg in Tilbakemelding på ny Airbnb konkurrent ble markert som svaret   
    Siden ser jo helt smashing ut, men det koker ned til det samme spørsmålet som sist; hvorfor bruke en liten markedsplass med lite utvalg istedenfor en stor med godt utvalg? Tror ikke det vil fly, men lykke til. Edit: Og husk at det som kjennetegner de som har lykkes er at de først har mislykkes mange ganger, uten å gi opp.
  2. quantum's innlegg in Android studio vs java enterprise studio ble markert som svaret   
    Java har if-then-else hvis det der det du lurer på. Og case-switch. 
     
    "Vinduer" også, og en hel del andre avanserte greier. Skal du lage programmer med grafisk brukergrensesnitt har du flere alternativer. Først Awt, som vel er utdatert i dag. Deretter Swing som du kan bruke til å lage plattformnøytrale gui, dvs. de ser "like" ut uansett om du kjører på Windows, X11 eller noe annet. Netbeans og IntelliJ bruker Swing, til sitt eget GUI. Eclipse bruker sitt eget system, kalt SWT, som baserer seg mer på å bruke det underliggende grafikksystemet. SWT kan du også bruke til dine egne applikasjoner. Da er en knapp en Windows-knapp i Windows og en X11-knapp i X11 og ser ut deretter. Siste tilskudd på stammen heter JavaFX, og er ment å ta over for Swing. FX er markup-basert, slik at du kan utforme selve gui i et xml-basert språk (a'la html). De fleste java-programmer har webgrensesnitt i dag, så man skal tenke seg om to ganger før man bestemmer hva man vil bruke. Standarden for webgrensesnitt heter JSF, men det fins mange gode alternativer, f.eks. Vaadin. Trenden peker dog mot javascript-baserte løsninger, som React og AngularJS.
     
    Bibliotekfiler har java mange av. Java har noe vi kaller et "økosystem", som består av alle biblioteker, rammeverk, applikasjonstjenere, JVM-baserte alternative programmeringsspråk mv. som kan brukes på JVM. Det er grenseløst vanskelig å holde orden på alt dette uten hjelp, og det er der dette med prosjekthåndtering kommer inn. Industristandarden i dag kalles Maven. Veldig kort fortalt bygger maven på en prosjektfil kalt pom.xml (Project Object Model), og i tillegg en god del predefinert kunnskap om hvordan forskjellige java-programmer skal bygges opp, kompileres og pakkes sammen. Her er det mye automatikk inne i bildet, f.eks. blir alle biblioteker automatisk lastet ned for deg, inklusive andre biblioteker de bibliotekene du vil bruke, avhenger av.
     
    Maven er som nevnt godt integrert med de tre mest brukte ide'ene for Java, og kan også brukes fra kommandolinja. IntelliJ har til og med sin egen Maven integrert, men den er ofte litt utdatert. Du kan installere nyere versjon fra maven.apache.org eller installere via Homebrew (siden jeg tror du bruker Mac). Det kan være lurt, siden det ofte er praktisk å kjøre Maven fra kommandolinja (f.eks. når du vil klippe og lime inn kommandoer som nedenfor ... da er det knotete å måtte oppgi stiveien til IntelliJ's egen Maven hver gang, selv om det går an).
     
    Installer først Homebrew:
    $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"  Deretter installerer du Maven:
    $ brew install maven Du kan installere jdk og veldig, veldig mange andre programmer også på denne måten (inklusiver Oracle Java). Når du har gjort dette har du en Maven home-katalog i
    /usr/local/Cellar/maven/3.3.9/libexec og en eksekverbar link i
    /usr/local/bin/mvn Maven har en konstruksjon kalt arketyper som gjør det enkelt å sette opp et prosjekt basert på en prosjektmal. For å lage og kjøre en enkel web-app prøv:
    $ mvn -B archetype:generate -DarchetypeGroupId=com.vaadin -DarchetypeArtifactId=vaadin-archetype-application -DarchetypeVersion=7.7.1 -DgroupId=org.test -DartifactId=vaadin-app -Dversion=1.0-SNAPSHOT $ cd vaadin-app $ mvn package jetty:run Ta så en titt i browseren på
    http://localhost:8080/ I katalogen vaadin-app vil det ligge en fil kalt pom.xml. Denne kan du åpne med IntelliJ og titte på. Den er _nesten_ selvforklarende. 
     
    Du kan stoppe det hele med Crtl-C.
     
    Alt i alt er det litt hårete å begynne å lage web-applikasjoner når man er helt fersk, så dette var bare ment å illustrere fordelen med Maven. Hvis du vil lagen en enkel hello-world-applikasjon med maven kan du bruke kommandoen
    $ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false $ cd my-app bygg
    $ mvn package og kjør
    $ java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App Pom-fila som blir generert i dette tilfellet ser sånn ut
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">   <modelVersion>4.0.0</modelVersion>   <groupId>com.mycompany.app</groupId>   <artifactId>my-app</artifactId>   <packaging>jar</packaging>   <version>1.0-SNAPSHOT</version>   <name>my-app</name>   <url>http://maven.apache.org</url>   <dependencies>     <dependency>       <groupId>junit</groupId>       <artifactId>junit</artifactId>       <version>3.8.1</version>       <scope>test</scope>     </dependency>   </dependencies> </project> Pom-filer kan man godt skrive for hånd, kopiere fra ett prosjekt til et annet osv. Avhengigheten til noe som kalles junit linker inn et testrammeverk. Å kjøre tester er en integrert del av maven-byggeprosessen, men det er helt frivillig å ha med testrammeverk og tester. Når du brukte quickstart-arketypen fikk du med en test på kjøpet. Den kan kjøres med kommandoen
    $ mvn test Mer info på
    https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html
  3. quantum's innlegg in Tråden om Golang (Go) ble markert som svaret   
    men har det noe med golang å gjøre? mjæ ...
  4. quantum's innlegg in Firefox ekstremt tregt på Macbook Air ble markert som svaret   
    Kan ikke si at det er min erfaring. Til tider har jeg brukt mye Firefox men uten de problemene du beskriver. Har desverre ikke noe forslag utover å re-installere firefox og disable/avinstallere diverse plugins, hvis du har noen.
     
    Slett også $HOME/Library/Application Support/Firefox  hvis du reinstallerer.
  5. quantum's innlegg in [Løst] Får ikke overtført filer til ekstern harddisk. ble markert som svaret   
    Kan du ikke formatere den med HFS (fortrinnsvis journaled, Apples filsystem) da?
     
    Evt. kan fuse/ntfs 3g fra macports eller fink muligens gjøre susen. Ikke prøvd, og nå kjører jeg en beta som macports ikke vil snakke med...
  6. quantum's innlegg in [Løst] Primtallutregning ved hjelp av tråder ble markert som svaret   
    Problemet ditt er at til og fra-variablene er static, alle tråd-instansene deler dermed samme intervall.
     
    Trådinstansene deler derimot ikke primliste, så denne trenger du ikke synkronisere på, trådene kan bare rase ivei uten å løpe i beina på hverandre.
     
    Det er også som du sier korrekt å implementere Runnable, men det hjelper - som du har funnet ut - ikke på resultatet her.
     
    Til slutt putter du de tre resultatlistene i en ny liste-liste, det er unødvendig komplisert. Her er en lettere modda variant ... tillot meg å endre klassenavnene også, en tråd som heter Tråd sier oss fint lite...
    package primecalculation; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class PrimeCalculation { private static class PrimeCalculationThread implements Runnable { private ArrayList<Integer> primliste = new ArrayList<>(); private int fra; private int til; public PrimeCalculationThread(int fra, int til) { this.fra = fra; this.til = til; } public ArrayList<Integer> getPrimliste() { return primliste; } public static boolean erPrimtall(int n) { return !new String(new char[n]).matches(".?|(..+?)\\1+"); } public static ArrayList<Integer> primtall(int f, int t) { ArrayList<Integer> tall = new ArrayList<Integer>(); System.out.println("F: " + f + " T: " + t); for (int i = f; i < t; i++) { if (erPrimtall(i)) { tall.add(i); } } return tall; } public void run() { primliste = primtall(fra, til); try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } /** * @param args the command line arguments */ public static void main(String[] args) { ArrayList<Integer> sum = new ArrayList<Integer>(); //Oppretter tråder og starter de PrimeCalculationThread pct1 = new PrimeCalculationThread(0, 10); PrimeCalculationThread pct2 = new PrimeCalculationThread(11, 20); PrimeCalculationThread pct3 = new PrimeCalculationThread(21, 30); Thread tr1 = new Thread(pct1); tr1.start(); Thread tr2 = new Thread(pct2); tr2.start(); Thread tr3 = new Thread(pct3); tr3.start(); try { tr1.join(); tr2.join(); tr3.join(); } catch (InterruptedException e) { e.printStackTrace(); } //Legger til primtallene i en ArrayList sum.addAll(pct1.getPrimliste()); sum.addAll(pct2.getPrimliste()); sum.addAll(pct3.getPrimliste()); Collections.sort(sum); for (Integer ai : sum) { System.out.print(ai + " "); } } } Utskrift:
    F: 11 T: 20 F: 21 T: 30 F: 0 T: 10 2 3 5 7 11 13 17 19 23 29 Legg merke til at utskriften av de tre intervallene kommer i "tilfeldig" rekkefølge.
  7. quantum's innlegg in MacBook Air 13" 2013 krasjer ble markert som svaret   
    Har ikke vært borti den der, og det kan vel nesten høres ut som en generell bug siden det er den andre maskinen du har med samme problem. Kanskje du kan gå til appleforhandleren din og se om det kanskje gjelder utstillingsmodellene også? I såfall ville jeg bare satt opp strømsparingen slik at den ikke går i dvale før den klappes sammen, eventuelt holdt fingra fra fatet mens den holder på å sovne inn?
×
×
  • Opprett ny...