пятница, 29 января 2010 г.

Book: Beautiful Code

Beautiful Code: Leading Programmers Explain How They Think (Theory in Practice (O'Reilly)).

--- Foreword ---
I got my first job as a programmer in the summer of 1982. Two weeks after I started, one of the system administrators loaned me Kernighan and Plauger's The Elements of Programming Style (McGraw-Hill) and Wirth's Algorithms + Data Structures = Programs (Prentice Hall). They were a revelation—for the first time, I saw that programs could be more than just instructions for computers. They could be as elegant as well-made kitchen cabinets, as graceful as a suspension bridge, or as eloquent as one of George Orwell's essays.

Generalized Isolation Level Definitions

Generalized Isolation Level Definitions.
More recent, more complete, more difficult to follow.

Atul Adya - Microsoft Research
Barbara Liskov - Laboratory for Computer Science, MIT, Cambridge
Patrick O’Neil - Univ. of Massachusetts, Boston

Abstract
Commercial databases support different isolation levels to allow programmers to trade off consistency for a poten tial gain in performance. The isolation levels are defined in the current ANSI standard, but the definitions are ambigu ous and revised definitions proposed to correct the problem are too constrained since they allow only pessimistic (locking) implementations. This paper presents new specifications for the ANSI levels. Our specifications are portable; they apply not only to locking implementations, but also to optimistic and multi-version concurrency control schemes. Furthermore, unlike earlier definitions, our new specifications handle predicates in a correct and flexible manner at all levels.

A Critique of ANSI SQL Isolation Levels

Классика цитирования:
A Critique of ANSI SQL Isolation Levels.
Good, fairly readable discussion of transaction isolation.

Hal Berenson Microsoft Corp.
Phil Bernstein Microsoft Corp.
Jim Gray U.C. Berkeley
Jim Melton Sybase Corp.
Elizabeth O’Neil UMass/Boston
Patrick O'Neil UMass/Boston

Abstract:
ANSI SQL-92 [MS, ANSI] defines Isolation Levels in terms of phenomena: Dirty Reads, Non-Repeatable Reads, and Phantoms. This paper shows that these phenomena and the ANSI SQL definitions fail to properly characterize several popular isolation levels, including the standard locking implementations of the levels covered. Ambiguity in the statement of the phenomena is investigated and a more formal statement is arrived at; in addition new phenomena that better characterize isolation types are introduced. Finally, an important multiversion isolation type, called Snapshot Isolation, is defined.

1 . Introduction
"...which defined Degrees of Consistency in three ways: locking, data-flow graphs, and anomalies."
"The three ANSI phenomena are ambiguous, and even in their loosest interpretations do not exclude some anomalous behavior that may arise in execution histories."
"...lock-based isolation levels have different characteristics than their ANSI equivalents."
"...degrees of consistency defined in 1977 in [GLPT]."
"...Chris Date’s definitions of Cursor Stability..."

Семинары откладываются на середину февраля

Семинары откладываются на середину февраля в виду того, что я уезжаю в командировку.

вторник, 26 января 2010 г.

Matchers, Constraints, Predicates

Это появилось в jmock и называлось - 'Сonstraints'. Потом Это выделили в проект Hamcrest и назвали 'Matchers'(='Constraints', ='Predicates'). В конце концов JUnit стал использовать Hamcrest и называет Это 'Matchers' или просто 'assertThat'.

assertThat(x, is(3));
assertThat(x, is(not(4)));
assertThat(responseString, either(containsString("color")).or(containsString("colour")));
assertThat(myList, hasItem("3"));


assertThat(something, isA(Color.class));
assertThat(something, contains("World"));
assertThat(something, same(Food.CHEESE));
assertThat(something, not(eq("Hello")));
assertThat(something, not(contains("Cheese")));
assertThat(something, or(contains("color"), contains("colour")));
assertThat(something, between(10, 20));


assertThat(list, includes("peach", "pear", "plum"));

--------------

JUnit также ввел в свою библиотеку Assumptions и Theories.

P.S. Спасибо Java 5 за static import + varargs.

понедельник, 25 января 2010 г.

Some cache patterns and terms

From here:

Patterns:
------------------------
Read-Through Caching (синхронное чтение из backing store)
Write-Through Caching (синхронное сохранение в backing store)
Write-Behind Caching (асинхронное сохранение в backing store с возможностью Write-coalescing и Write-combining)
Refresh-Ahead Caching (асинхронная подкачка из backing store)
------------------------

Terms:
-------------
Cache-aside. Означает не более чем то, что время загрузки, обновления, удаления, сохранения сущностей выбираем мы сами. При Read-Through/Write-Through/Write-Behind/Refresh-Ahead кэш решает когда вызывать.

Write-coalescing:
The writes - which are typically much more expensive operations - are often reduced because multiple changes to the same object within the write-behind interval are "coalesced" and only written once to the underlying datasource ("write-coalescing").

Write-combining:
Additionally, writes to multiple cache entries may be combined into a single database transaction ("write-combining") by using the CacheStore.storeAll() method.

Cluster-durable, Disk-durable.

System of record(SoR), more here.

Extract, transform, load(ELF).
------------------------

P.S. Последние два термина(SoR, ELF) - скорее область Data Warehouse но хороший кластерный транзакционный кэш зачастую выполняет часть функций DW.

HPC for Dummies

High Performance Computing for Dummies [PDF].

HPC enables us to first model then manipulate products, services, and techniques. These days, HPC has moved from a selective and expensive endeavor to a cost-effective enabling technology within reach of virtually every budget. This book will help you to get a handle on exactly what HPC does and can be.

This special edition eBook from Sun and AMD shares details on real-world uses of HPC, explains the different types of HPC, guides you on how to choose between different suppliers, and provides benchmarks and guidelines you can use to get your system up and running.

SOA for Dummies

SOA for Dummies

Welcome to Service Oriented Architecture For Dummies, 2nd IBM Limited Edition. Service Oriented Architecture (SOA) is the most important technology initiative facing businesses today. SOA is game changing, and early SOA successes make it clear that SOA is here to stay.

This book introduces you to the basics of SOA in context with the real life experiences of seven companies. Seen through the varied business environments depicted in each of the case studies, we hope you will recognize that SOA is more than a bunch of new software products strung together to allow technology companies to have something else to sell. SOA represents a dramatic change in the relationship between business and IT. SOA makes technology a true business enabler and empowers business and technology leaders alike.

Doug Lea Discusses the Fork/Join Framework

Doug Lea Discusses the Fork/Join Framework.

Summary
Doug Lea talks to InfoQ about the evolution of the Fork/Join Framework, the new features planned for java.util.concurrent in Java 7, and the "Extra 166" package. The interview goes on to explore some of the hardware and language changes that are impacting concurrent programming, and the effect the increasing prevalence of alternative languages in the JVM are having on library design.

Bio
Doug Lea is a professor of computer science at State University of New York at Oswego where he specialises in concurrent programming and the design of concurrent data structures. He wrote "Concurrent Programming in Java: Design Principles and Patterns", one of the first books on the subject, and chaired JSR 166, which added concurrency utilities to Java.

вторник, 19 января 2010 г.

GPUs (CUDA) + tomography

Письмо от Kostiantyn Sokolinskyi:
--------------------
Товарищ в Бельгии занимается вот таким

"These are the pages we made about our "Super Computer" project:
several GPUs in one big pc... Just give him my contact info so he can
ask me any question he might have with regard to programming for
GPUs."

http://fastra.ua.ac.be/en/index.html
http://fastra2.ua.ac.be/

если интересно, могу дать его контакты :)
--------------------
Если кому интересно - могу дать контакты того, кто даст контакты:)

Продолжение семинаров

1. Продолжение семинаров ожидается с начала февраля. Точный даты и время будут чуть позже.
2. Виталий Пеньков(Скорп) имеет что сказать на 5 лекций по тестированию.
3. Я начну с рассказа про транзакции в J2EE(JTA, 2PC, JTS, OTS, EJB+Spring transactions).
4. Думаю удастся пригласить еще несколько интересных "рассказчиков":)

Event-Based Programming without Inversion of Control

"Event-Based Programming without Inversion of Control" from Philipp Haller, Martin Odersky(He designed the Scala programming language and Generic Java).
"...
Most programming models support event-driven programming only through inversion of control. Instead of calling blocking operations (e.g. for obtaining user input), a program merely registers its interest to be resumed on certain events (e.g. an event signaling a pressed button, or changed contents of a text eld). In the process, event handlers are installed in the execution environment which are called when certain events occur. The program never calls these event handlers itself. Instead, the execution environment dispatches events to the installed handlers. Thus, control over the execution of program logic is .

Virtually all approaches based on inversion of control su er from the following two problems: First, the interactive logic of a program is fragmented across multiple event handlers (or classes, as in the state design pattern [13]). Second, control ow among handlers is expressed implicitly through manipulation of shared state [10].
..."

Concurrency Oriented Programming in Erlang

35 pages presentation:
"Concurrency Oriented Programming in Erlang".

В начале показан интересный способ проверять "конкурентность" языка(Erlang, C#, Java) - гонять сообщение по кольцу из процессов.

Herb Sutter: Books & Articles

Herb Sutter: Books & Articles.
P.S. Жаль, что он на плюсах а не на яве:)
P.P.S. Tsnx to Kostiantyn Sokolinskyi.

суббота, 16 января 2010 г.

Stroustrup: "What Should We Teach New Software Developers? Why?"

Свежая статья Страуструпа "What Should We Teach New Software Developers? Why?" (EN, RU).

четверг, 14 января 2010 г.

Буду работать на Кремниевую Долину!

Прошел собеседование в харьковский офис GridDynamics, штаб-квартира компании находится в Сан-Франциско (Калифорния). На местном рынке она слилась с российской Mirantis.

Не устоял перед этим:
----
"... Grid Dynamics работает с критически важными для компании-клиента технологиями и является мировым лидером в области масштабирования сложных систем, которые выдерживают предельные нагрузки и функционируют в непрерывном цикле ..."
----
"... Как правило, после основного курса обучения в высшем учебном заведении наши инженеры продолжают образование, занимаясь научной деятельностью. На данный момент аспирантуру Саратовского университета закончили или продолжают обучение треть сотрудников «Мирантиса». В компании работает пять кандидатов физико-математических наук (из них два доцента кафедры Математической Кибернетики и Компьютерных Наук) и в ближайшее время планируется защита ещё четырёх кандидатских диссертаций ..."
----
"... Обязанности:
* участие в разработке архитектуры высокопроизводительных бизнес-приложений.
* участие в разработке высокопроизводительных бизнес-приложений, от сбора требований до вывода в эксплуатацию.
* анализ и улучшение производительности приложений
."
----
"... 8. Возможно ли, работая в «Мирантисе», параллельно заниматься научной деятельностью?
- Да, это вполне возможно. Часть наших специалистов имеют защищенные научные работы и создают новые, некоторые из сотрудников обучаются в аспирантуре и получают дополнительное образование
."
----
ну и в завершение:
"... Удобные и просторные рабочие комнаты ... в комнатах работает по 4-7 человек."

вторник, 12 января 2010 г.

java->ejb->jca->cics->cobol

Integrating WebSphere Application Server and CICS using the J2EE Connector Architecture.

24 страницы от IBM о том как из java можно вызывать legacy code на COBOL под управлением транзакционного менеджера CICS.
Используется магия JCA(Java Connector Architecture), позволяющая не только любой источник данных использовать в java, но и "гладко" проинтегрировать его в контейнер на уровне transactions/security/connection_pooling.

P.S. Atention! Name collision with JCA==Java Cryptography Architecture
P.P.S. Можно просто посмотреть Figure 3(стр 11).

вторник, 5 января 2010 г.

The C10K problem

The C10K problem.
Классическая статья о проблемах ПО при обслуживании 10.000 клиентов одновременно.

понедельник, 4 января 2010 г.

Книги по RDBMS

"Классика жанра:
Бернстайн
Concurrency Control and Recovery in Database Systems
Джефри Ульман
Системы баз данных. Полный курс
Джим Грей
Transaction Processing : Concepts and Techniques (The Morgan Kaufmann Series in Data Management Systems)"

Взято тут. Читал только "Системы баз данных. Полный курс". Стенфордский учебник. Первая часть как писать DB, вторая - ка писать сам движек RDBMS.
По моим представлениям для познания Баз Данных (скажем Оракла):
1) Дэйт (это введение)
2) Ульман (это основы)
3) Том Кайт (это специфика именно оракла)
Три книги - и в бой:).

P.S. Кто найдет в электронном виде - присылайте на мыло:).