Wyrażenie regularne sprawdzające, czy liczba jest pierwsza

Wyrażenie regularne, które potrafi sprawdzić, czy dana liczba jest pierwsza.

^1?$|^(11+?)\1+$

import static java.lang.System.*;

public class Prime {

	public static final String PRIME_REGEX = "^1?$|^(11+?)\\1+$";

	public static boolean isPrime(int i) {
		String s = "";
		while (i > 0) {
			i--;
			s += "1";
		}
		return !Pattern.matches(PRIME_REGEX, s); // escape the \1
	}

	public static void main(String[] args) {

		final int i = Integer.parseInt(args[0]);
		final boolean isPrime = isPrime(i);
		out.println(i + " is" + (isPrime ? "" : " not") + " a prime number");
	}
}
<barista@javaczyherbata.pl> java Prime 9
9 is not a prime number

Jak to działa?
Read the rest of this entry »

Darmowy kurs Scali prowadzony przez Martina Odersky’ego

18 września zaczyna się darmowy kurs Functional Programming Principles in Scala prowadzony przez Martina Odersky’ego – twórcę Scali i jednego z projektantów typów generycznych w Javie.

Functional Thinking with Neal Ford

Wystąpienie Neala Forda z konferencji JaxConf 2012.

Argumenty a parametry metody

Czy istnieje różnica pomiędzy argumentami a parametrami metody?

  • Parametry metody to nazwy zmiennych w jej deklaracji/definicji
  • Argumenty metody to nazwy zmiennych przekazywane do niej w momencie wywołania
public class Calculator {

	// a i b są parametrami
	public int add(final int a, final int b) {
		return a + b;
	}
}

public class CalculatorTester {

	public static void main(String[] args) {
		Calculator c = new Calculator();
		// 1 i 5 są argumentami
		final int sum = c.add(1, 5);
		System.out.println("sum = " + sum);
	}
}

Bytecodem po Cassandrze, część 2

Druga część artykułu autorstwa Jacka Gerbszta – samodzielnego programisty Java w Wirtualnej Polsce – przedstawiającego instrumentację za pomocą ASMifier z biblioteki ObjectWeb ASM: Bytecodem po Cassandrze, część 2.

Optymalizacja wydajności JVM, część 2

Druga część artykułu autorstwa Evy Andreasson pt. „JVM performance optimization, Part 2: Compilers. Use the right Java compiler for your Java application” opublikowanego na JavaWorld.com.

Link do poprzedniej części:
Part 1: A JVM technology primer. Java performance for absolute beginners

Nagrania video z konferencji Confitura 2012

Jest już dostępnych kilka nagrań z tegorocznej Confitury. Poniżej relacja video z konferencji.

Read the rest of this entry »

Design by Contract w Java, część 1

Łukasz Dembiński, kierownik Zespołu Architektów w Wirtualnej Polsce opowiada o Programowaniu Kontraktowym: Design by Contract w Java, część 1.

Joda Time – Java date and time API

Joda Time to open-source’owa, zaawansowana biblioteka rozwiązująca większość problemów, które przysparzają java.util.Calendar, java.util.Date i inne klasy związane z czasem.

Metoda gumowej kaczuszki

Metoda gumowej kaczuszki to nieformalny sposób debugowania kodu. Podczas inspekcji kodu, programista szukający błędów w kodzie, trzyma w pobliżu gumową kaczuszkę lub inny przedmiot. Linia po linii tłumaczy kaczuszce działanie każdego kawałka kodu. W trakcie rewizji zazwyczaj wychodzą na jaw błędy logiczne lub syntaktyczne.

Jest to odmiana metody myślenia na głos. Dokładniejszy opis postępowania można znaleźć na stronie Rubber Duck Debugging.