singalen: (Default)

By default, Glassfish does an ugly thing: takes an application’s stdout/stderr and wraps it into its own log with INFO level for stdout and WARN level for stderr.
Other logging facility normally log to stdout.
In the end, a log entry looks pretty stupidly (and it’s damn multiline!):

[#|2012-11-21T11:25:07.225+0200|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=100;_ThreadName=Thread-2;|11:25:07.225 [http-thread-pool-8080(2)] DEBUG c.mycompany.packages.SomeClass - Finally, some useful text!
|#]

One can replace a Glassfish logging server-wide.
There’s a logging.properties file in the root of Glassfish domain, it has a “handlers” property that one can swap for Logback’s handler.
Of course, this requires adding Logback JUL bridge to Glassfish classpath.

Originally published at code name. You can comment here or there.

Tags:
singalen: (freeman)
Искал, как построить простейший парсер на Groovy.
Нашёл вкусного:
Groovy++ - расширение для Groovy, не ломает его, расширяет синтаксис, добавляет статическую типизацию.
Модное, и IDEA его поддерживает. Кстати, вышла IDEA X, EAP.

А парсер попробуем сделать через JParsec.
singalen: (Default)
Есть у меня впечатление, что технологии Java EE проще учить по Grails. Нет лишней обвязки.
Если есть плагин, то работают настройки by-convention.
Это я смотрю на примеры JMS. Сравните.
Tags:
singalen: (Johnny)
Нужно выбрать последний, скажем, курс валюты, за каждый час.
Я делаю так:
Кто хочет сначала решить сам - не смотрите под кат )
Заодно исполняется и на HQL.

Исполняется, инфекция, разумеется, фулсканом. На MySQL несчастные полторы тыщи записей по этим формулам группируются минуту. На hsql - пять минут.
Далее обсуждаем предлагаемые решения )
Кстати, инфекция, в HQL нет функции week(). И произвольного выкусывания части даты тоже нет 8(
Tags:
singalen: (humpty-dumpty)
Слэйд:
— Там же село. Там же до сих пор Spring + Hibernate + Java 1.4...
singalen: (2002)
Аааа! Всем джавистам читать джавадоки!
http://rymden.nu/exceptions.html
singalen: (кричал я из последних сил)
Ввязался в авантюру - прочитать доклад о программировании для научных сотрудников младшего возраста. Темой выбрал, чтобы было популярно и интересно лично мне, Hibernate.

Конечно же, вся подготовка накрылась медным тазом. Быстро готовлюсь сегодня...

Сюда сохраняю черновик. Может, кто чего умное подскажет :) Считайте, что это "блики".

Речь


Вступаем в...


Системы становятся всё сложнее. А поскольку объём кратковременной памяти программиста ограничен - всё больше усилий направляют на борьбу со сложностью.
Программисту и в собственном коде хватает вещей, которые нужно помнить и учитывать; не надо умножать их на особености и эффекты сервисной библиотеки. (Помним, что сложность программы растёт квадратично от размера).

Главная идея такой борьбы - low coupling, high cohesion, что означает: "держи в каждом программном модуле (библиотеке, классе, функции) только то, что необходимо для его ответственности; как только видишь отдельный "кластер связности" кода, выноси её в отдельный модуль; общайся с другими модулями через максимально простой интерфейс".

Большинству программ сейчас нужен такой внутренний сервис, как персистентция - способ создать объект, который проживёт дольше, чем будет работать программы. Грубо говоря, база данных.
В модели .NET ADO на 3 слоя больше, чем надо, а в Hibernate - всего на 1 )
singalen: (sun)
Пишу мелкий джавовский (ME) проект. Нарушаю устои.
Например, пользуюсь глобальными переменными - то есть, синглтонами. Местами не делаю аксесоров, выставляю поля пабликами.
Вместо односторонних зависимостей делаю двусторонние; правда, это упрощает объектную модель.
Типа знаю, какие правила нарушаю, и к чему это может привести.
Интересно, расту или деградирую? Кто бы сделал кодревю?
singalen: (Default)

Originally published at Fiberglass flowers. You can comment here or there.

Till two years ago, I didn’t know that C# 2.0 had closures (reference to Joe Walnes’ blog). Now declarative programming is slowly coming into fashion.
Reference taken from classicist. The latter has a bunch of short bliki-articles, all worth reading.

Please note variables visibility scope:

public List<Employee> HighPaid(List<Employee> emps) {

int threshold = 150;
return emps.FindAll(delegate(Employee e) {
return e.Salary > threshold;
});

}

interesting quotation about arguments against closures in Java - about memory allocation. Found again by Martin Fowler’s reference, in Guy Steele’s archive:
One of the early design principles of Java was that heap allocation occurs if and only if a construct involving the "new" keyword is executed. Adding full-blown closures violated this design principle. (Dynamic class loading also violated the principle, but users seemed to be comfortable with that, perhaps because they believed that "once the computation got going" no more heap allocation would occur.)
Other features for Java release 1.5 will perform certain kinds of autoboxing, which also violates the design principle. This fact will make it easier to argue for restoring full-blown support for closures in the future.

upd: But .NET doesn’t have an unordered container (set), and these cool Find()/FindAll() don’t exist in IList. Too bad.

Oh yes, and Python always had closures.

Tags:
singalen: (Default)
PHP, MVC и другие троебуквия
длинные транзакции и тернарная логика )
Оффтопики
Вспоминали, что такое парсек. Не вспомнили %) Вова вспимнил.
О XP Вова сказал, что "нет сильнее той фаланги, в которой воины любят друг друга" (Ксенофонт).
Надолго занесло в разговор о Форексе.
Придумали, вслед за фотопринтером и принтером на CD, принтер для пиццы и профессию "верстальщик пиццы". Страшная картинка тут.
singalen: (Default)
Джоэл ссылается тут и тут на статью Реймонда Чена, выступающую против исключений. Перечитать со всеми ссылками.
В общем, аргумент насчёт того, что при наличии exceptions отследить глазом все неявные переходы почти невозможно, верен, - если не принимать во внимание инструментальную поддержку.
Java checked exceptions, увы, не имеют аналогов в мейнстриме (как я его вижу; читай - C#, C++). Если рассматривать только код в нотепаде, то да, но - у нас есть IDE и компилятор, который сильно облегчает поиск проблем с checked exceptions. Возможен и компилятор C++, выдающий warnings по образу compile-time ошибок Java с checked exceptions.
С третьей стороны, просто читая код, так-таки не увидишь этих "неявных goto".
Надо посчитать, насколько предупреждения/ошибки компилятора о checked exceptions помогают отличить правильный код от неправильного.

Upd: Добавляю свой старый конспект с нашей локальной тусовки, которую наадеюсь продолжить с осени.

1. Checked vs unchecked exceptions.

Read more... )
singalen: (Default)
Задача: дан HTML, не целостный и не well-formed.
Сделать из него well-formed XHTML. На Java.
далее отрывки из переписки на русско-английском )

March 2023

S M T W T F S
   1234
567891011
12131415161718
19202122232425
262728293031 

Syndicate

RSS Atom
Page generated 16/6/25 02:10

Expand Cut Tags

No cut tags