Об ORM

2024-01-29 • ORM, JPA, CRUD, DB, Java

Как известно, в базах данных, как правило, реляционных, у нас таблицы. С колонками. А в документо-ориентированных БД лежат документы, в формате, например, JSON. С полями. Объединённые в коллекции.

Самое интересное, что таблицы могут ссылаться на другие таблицы. Все эти внешние ключи и тому подобное. Собственно, одинокие таблицы, ни с чем …


    Read...    

О логах

2021-02-14 • logs, logging, slf4j, java, logstash, aws, cloudwatch

Когда я в прошлый раз писал о логах и логировании, я жаловался на отсутствие в Java удобных средств для создания структурированных логов. Я ошибался, такие средства есть.

Пришла эта магия, конечно же, из Logstash. Той самой вселенной Elastic Stack, где всё засовывается в Elasticsearch, а потом хитрыми запросами можно извлекать …


    Read...    

О Lombok

2020-08-30 • Java, Kotlin, Lombok

На одном проекте, который, ой, уже как почти год идёт, мы не уломали технарей от заказчика на Kotlin. На наши попытки рассказать, чем Kotlin хорош, нам говорили: ну вот же, берёте Lombok, и будет так же лаконично. Так мы узнали, что такое Lombok, Project Lombok.

На самом деле, Lombok — это …


    Read...    

О логах

2020-08-08 • logs, logging, slf4j, sentry, golang, java, python

Логгирование. Журналирование. Логи. Журналы. Файлы логов. Вроде всё знакомо.

Почему вообще "log"? Это же «бревно». А "logging" — это "cutting down trees for logs".

Если верить вики-словарю, наш программистский "log" происходит от "logbook", то есть от судового журнала. Туда, в том числе, регулярно записывались показания лага, то есть "chip log". Типичный …


    Read...    

Об ошибках

2019-06-30 • языки программирования, обработка ошибок, Go, golang, Java, C, Rust

В C всё просто, но непоследовательно. Обычно функции делают что-то сами по себе и возвращают указатель на структуру, которая является результатом работы.

FILE *fp;
if ((fp = fopen("test", "w")) == NULL) {
  printf("Cannot open file.\n");
  exit(1);
}
int *arr = malloc(sizeof(*arr));
if(arr == NULL)
{
  printf("Memory allocation failed");
  return …

    Read...    

О типизации

2017-12-24 • Duck Typing, Dynamic Typing, IDE, idea, IntelliJ IDEA, Java, Kotlin, Python, Static Typing

Да начнётся срач!

Так получилось, что пару месяцев подряд я интенсивно кодил на Котлине. И учил студентов кодить на Яве.

Один разок я даже устроил воркшоп в стиле TDD, где к своему удивлению обнаружил, что добрая половина ява-кода в IntelliJ IDEA пишется по нажатию Alt+Enter. Это автоисправление ошибок: класс …


    Read...    

О Spring

2017-12-09 • Java, Kotlin, Spring Boot, Spring

Spring — это весна. Spring — это пружина. Spring — это родник. Springfield — это городок, где живут Симпсоны. Плюс ещё стопицот одноимённых городков в Соединённом Королевстве, Австралии и Соединённых Штатах.

А ещё есть Spring Framework. Фреймворк, который знают все явисты. Возникший когда-то как легковесная альтернатива Ынтырпрайзным ЯваБобам (EJB).

Spring Logo

Помню, как лет десять назад …


    Read...    

О java.time

2017-07-22 • Java, Kotlin, java.time, API, время

Ну наконец-то, аж в восьмой яве, появилось отличное и правильное API для работы со временем. Теперь можно смело выкинуть java.util.Date и java.text.DateFormat. Теперь у нас есть java.time.

Java Time!

Чаще всего вам понадобится просто отметка времени, точка на временной оси. Это — java.time.Instant.

Можно получить момент …


    Read...    

Об островах

2014-11-09 • Ceylon, Java, JVM, Kotlin, programming languages, Scala

Или о сортах кофе.

Java logo

Началось все в апреле. На JavaDay в Омск приехал Филипп Торчинский и рассказывал про Kotlin. Показывал, как можно применять Kotlin для веб разработки. В сентябре я снова встретился с Филиппом и он снова рассказывал про Kotlin. Но рядом упомянул волшебное слово Android. И решил я посмотреть …


    Read...    

Об HA-JDBC

2013-12-22 • SQL, Java, High Availability, PostgreSQL, HA-JDBC, JDBC

Есть такая, довольно молодая и еще малоизвестная, библиотека HA-JDBC. HA — это High Availability. JDBC — это, очевидно, Java DataBase Connectivity.

HA-JDBC

Как и следует из названия, библиотека предназначена для осуществления доступа к вашему высокодоступному кластеру БД посредством JDBC. Это прокси и балансировщик SQL соединений и запросов.

Обычно балансировка SQL запросов осуществляется отдельными …


    Read...