Zagadka z Iteratorem
Ciekawa zagadka znaleziona w sieci. Należy tak poprawić poniższy kod, aby na ekranie wyświetlił się napis Hello World. Oczywiście wyjątek ConcurrentModificationException (ani żaden inny) nie może się pojawić. Pozostałe obostrzenia to:
- w żaden sposób nie wolno modyfikować kodu poza sekcją
FIXME - nie wolno użyć refleksji
- cały poniższy kod musi się wykonać; nie można użyć
System.exit(0)lubreturn
public class IteratorPuzzle {
public static void main(String[] args) {
final List list = new ArrayList() {{ add("Hello"); }};
final Iterator iterator = list.iterator();
System.out.print(iterator.next());
list.add("World");
// FIXME: tutaj dopisujemy kod
System.out.println(" " + iterator.next());
}
}
Powodzenia:)
JRebel i IntelliJ IDEA
Anton Arhipov product lead JRebela demonstruje jego użycie z IntelliJ IDEA.
Więcej informacji na stronie ZeroTurnaround.
Java concurrency: the hidden thread deadlocks
Pierre – Hugues Charbonneau jest konsultantem IT oraz architektem systemowym w CGI Inc specjalizującym się w Java EE, technologiach JVM oraz w optymalizacji systemów dużej skali. Jego blog Java EE Support Patterns to istna gratka dla osób zainteresowanych wątkami, współbieżnością, synchronizacją, zakleszczeniami, organizacją i problemami z pamięcią, profilowaniem czy maszyną wirtualną.
Polecam jeden z ostatnich postów: Java concurrency: the hidden thread deadlocks.
Cztery smaki odwracania (i utraty) kontroli
W styczniowym numerze magazynu programista ukazał się artykuł Sławomira Sobótki (Bottega IT Solutions) pt. Cztery smaki odwracania (i utraty) kontroli: Dependency Injection, Events, Aspect Oriented Programming, Framework. Tekst jest syntezą wieloletnich doświadczeń i przemyśleń na temat Inversion of Control. Kolejne techniki coraz to silniejszego odwracania kontroli (powiązanego z jej utratą) zostały opisane wg struktury:
Read the rest of this entry »
Ify to zło?
Tomasz Nurkiewicz, znany m.in. ze stackoverflow opowiada o znanej wszystkim konstrukcji warunkowej if. Pokazuje jak można ją zastąpić dziedziczeniem lub wzorcami projektowymi. W trakcie prezentacji refaktoruje fragmenty kodu naszpikowane konstrukcjami warunkowymi, pełne flag, przełączników i trybów. W metodach i klasach sporo mieszania odpowiedzialności: bezpieczeństwo, transakcje, wielowątkowość, mierzenie czasu i obsługa błędów.
Czy ify są aż tak złe?
Read the rest of this entry »
Darmowy e-kurs MongoDB dla developerów Javy
10gen Education organizuje darmowy e-kurs MongoDB dla developerów Javy. Prowadzącym będzie Andrew Arlichson. Zajęcia zaczynają się 25 lutego.
Link do kursu.
Kursy dla programistów Pythona oraz DBA już wystartowały.
Obsługa sytuacji wyjatkowych w technologii Java EE
Tomasz Skutnik, Dyrektor ds. Badań i Rozwoju w e-point SA opowiada jak w Jego firmie podchodzi się do obsługi sytuacji wyjatkowych w technologii Java EE.
Prezentacja w pdf.
Read the rest of this entry »
Complexity of Complexity
Złożoność kodu i złożoność systemu to bardzo ważne aspekty wytwarzania oprogramowania. Ken Sipe zwraca uwagę na ich wpływ na (o)programowanie. Wskazuje czynniki, dla których przejmujemy się złożonością, jak zmienia się jej postrzeganie w czasie oraz co możemy na to poradzić. Pokazuje kiedy prostota pomaga, a kiedy przeszkadza. Prezentację kończy dyskusja, jak zachować KISS w aplikacjach dużej skali.
Read the rest of this entry »
DDD – lek na Legacy Code?
Robert Reppel, Senior Solution Architect w PayByPhone.com opowiada o zastosowaniu technik Domain-Driven Design oraz SOLID w celu polepszenia jakości Legacy Code. W prezentacji nie zabraknie przykładowego kodu.
Link do prezentacji na InfoQ.
Jak pisać kod łatwy do przetestowania
Miško Hevery, agile coach w Google, dzieli się spostrzeżeniami na temat pisania kodu tak, aby był łatwy do testowania.
Wersja w pdf.