Summering av Jfokus 2015

Inte heller 2015 blir ett sannolikt år för robotarnas övertagande. I sessionen Creating Our Robot Overlords: Autonomous Drone Development vi fick konstaterat att en AR Drone 2.0 inte klarar att bära en Raspberry Pi med batteri och därmed får fortsätta att flyga ointelligent, eftersom att hjärnan fått lämnats kvar på marken. Men inte bara därför – den intelligenta programvaran saknades också.

IMG_20150203_090941

Läs mer ›

Publicerad i Continuous Delivery, DevOps, Java, Uncategorized

Den sista MacBook:en i sitt slag

Mitt MacBook-liv började år 2011. Året därpå hade jag sönder den mekaniska hårddisken, så jag monterade istället en pirat-SSD och ominstallerade OS:et. Året efter det tog utrymmet på den disken slut (500GB) och jag ersatte den sedan länge oanvända och meningslösa optiska enheten med ytterligare en SSD på 1TB. Med 16GB RAM och 1.5TB disk gjorde den sedan susen under lång tid.

Efter att MacBook:en gjort tjänst varje dag i 4 år, började först grafiken spraka till och gjorde så oftare och oftare till dess hela skärmen blev randig och datorn låste sig. Till slut gick den inte ens att starta om.

IMG_20150118_193842

 

Läs mer ›

Publicerad i Java, OS X

Blue Green Deployment

Samarbetet kring vår open source Continuous Delivery Build Pipeline fortsätter i mobbprogrammeringsform. Den här gången bjöd Mikael Sennerholm in till Avega-kontoret på Östermalm eftersom det ryktades att någon en gång hade sett att man minsann kunde locka fram riktigt bra fart i det nätverket.

Vägen till DevOps-nirvanat visade sig gå genom att gräva fram det gamla sladdnätverket igen och plocka upp sin gamla RJ45-utrustning igen från längst ned i byrålådorna hemma, för Wifi fungerar fortfarande inte bra nog för att ladda ned alla maskinavbildningar på rimlig tid.

Men Avega är i gott sällskap, det tog år av tjat innan CAG fick ett på riktigt fungerande Wifi-nät med flås på Kista-kontoret. Så det borde väl inte vara helt omöjligt att få till det på Avega heller så småningom.

IMG_20150120_185748

Läs mer ›

Publicerad i Continuous Delivery, DevOps

Infrastruktur som kod

Docker är nästan magiskt. Hur går det till när Docker startar upp en maskin och ett kommando på den maskinen på bara en bråkdel av en sekund?

Men förr eller senare vänjer man sig även vid magi, och Mikael Sennerholm från Avega och jag gjorde till slut en kurs av det, där vi under en heldag gick igenom bland annat Docker, men även Vagrant och Thoughtworks Go. Träning på olika smaker av Linux följde med på köpet. Mikael höll kursen och jag hjälpte till med labbarna.

Screen Shot 2014-11-24 at 22.47.19

 

Läs mer ›

Publicerad i Cloud Computing, Continuous Delivery, DevOps, Java, LinkedIn, Linux

OS X Yosemite för Javautvecklare

Jag uppdaterade min Macbook till Yosemite idag och stötte bara på två små saker. Precis som vid uppdateringen till Mavericks så avinstallerar Apple Java 6. Det medför att IntelliJ inte startar efteråt, då dess launcher är hårdkodad att använda Java 6. Dessutom ser fonterna ut som skit rent ut sagt om man kör IntelliJ på en modern Java från Oracle.

Lösningen är att återinstallera Java 6 från Apple.

Den andra grejen var att Xcode behövde en refresh – av någon anledning hittade inte min installation command-line tools längre. Lösningen:

sudo xcode-select -r
sudo brew update

Efter att man godkänt licensavtalet för Xcode så fungerar Homebrew igen. Att använda sudo här är en engångsgrej efter uppdateringen till Yosemite. Givetvis ska man aldrig använda sudo för att köra brew i vanliga fall.

Ovan gällde för min maskin som hade fulla Xcode installerat sedan tidigare. När jag uppdaterade min nya maskin som bara hade command line tools, så fick man helt enkelt installera om dem:

xcode-select --install

På den maskinen har jag dessutom gått över till att köra Git från Homebrew, så där behövdes ingen uppdatering av command line tools för att göra brew update.

Publicerad i Java, OS X

Automatiskt byggnummer

Varje gång vi bygger en releasekandidat av systemet, deployar till en testmiljö eller kanske bara behöver en version vi vill kunna referera till i exempelvis felrapporter, ska bygget ges ett unikt versionsnummer.

Ett versionsnummer kan vara ett enkelt löpnummer eller kanske bygga på semantic versioning (1.2.42).

Det är praktiskt att tillgängligöra versionsnumret på ett antal olika sätt: Som inspekterbar i artefakten själv i MANIFEST.MF, i Mavens pom-versioner, maskinläsbar i runtime, till exempel i en endpoint /appversion i ett REST-gränssnitt eller synligt i användargränssnittet.

Screen Shot 2014-09-22 at 22.33.23
Läs mer ›

Publicerad i Continuous Delivery, Java, Uncategorized

Den nya nollnivån

Arbetet relaterat till Continuous Delivery har lett oss till en allt tydligare insikt om den grundfunktionalitet som bör finnas på plats i en kör- och utvecklingsmiljö redan från start, för att vi direkt ska kunna börja producera funktionalitet relaterad till kundnytta utan att börja ackumulera teknisk skuld.

Denna utvecklings- och körmiljö kan man också kalla Build Pipeline. Den omfattar såväl verktyg runtomkring systemet i fråga (till exempel Jenkins, Gradle eller Maven) som aspekter av själva systemet. En Build Pipeline av denna typ är att sträva efter såväl om man levererar systemet varje dag som en gång per kvartal.

Summan av den grundfunktionaliteten är vad jag här betecknar som nollnivån.

level-of-zero

 

Läs mer ›

Publicerad i Continuous Delivery, DevOps, Java, Test

Bash git-prompt för OS X eller Linux

Om man kör med git så blir man förr eller senare intresserad av att köra det mesta via kommandorad. En sak man då kan sakna är överblicken över det lokala repot – vilken branch står jag i? Har jag några inkommande/utgående förändringar? Är något lagt på stash-stacken?

Det finns ett utmärkt Githubprojekt som löser problemet genom att ge en mer informativ bash-prompt och som dessutom asynkront kör git status när man trycker retur. Jag har kört med den här lösningen i över ett år och det är numer det första jag installerar på en ny maskin.

För att installera detta i sin hemmakatalog så kan man göra följande:

Läs mer ›

Publicerad i DevOps, Linux, OS X

Continuous Delivery Pipeline med docker

Igår återsamlades vi en liten grupp DevOps-intresserade konsulter från flera olika konkurrerande bolag för att gemensamt bygga vidare på vår build pipeline. Den här gången höll vi till i CAGs lokaler inne i city.

IMG_20140604_201356[1]

Huvudtemat för dagen var docker. Idén var att införa docker som provider till Vagrant i vår build pipeline. docker innebär att nya maskiner blir betydligt mer lättviktiga än om varje maskin är en egen virtualbox-instans som vi hittils kört med Vagrant.

Läs mer ›

Publicerad i Continuous Delivery, DevOps, Java, Linux

HelloServlet 3.0 Maven Project with Embedded Jetty 9 and spring-boot-maven-plugin

Yesterday evening I was playing around with my Raspberry Pi. I got Jetty 9 running on it with almost no pain, and then I was looking for my old HelloServlet 3.0 Maven project. But it appears I lost it. So I searched the Internet for a while for a modern simple servlet application and picked up a little here and there and ended up with the following – as small and compact as I could get it:

  • Maven based
  • Embedded jetty with executable war OR deployable war
  • Servlets 3.0 (no web.xml)

An executable war file means that you can run it directly without a web container:

$ java -jar helloservlet-1.0.war
2014-02-13 21:35:52.369:INFO:oejs.Server:main: jetty-9.1.2.v20140210
2014-02-13 21:35:52.498:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet
2014-02-13 21:35:52.558:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@15d023f2{/,null,AVAILABLE}
2014-02-13 21:35:52.576:INFO:oejs.ServerConnector:main: Started ServerConnector@77ed2fe7{HTTP/1.1}{0.0.0.0:8090}

The application HelloServlet hangs here and is now available at http://localhost:8090/

helloservlet

Läs mer ›

Publicerad i Java

Kategorier

LinkedIn Auto Publish Powered By : XYZScripts.com