Groovy documentation linkdump

Рубрика: Development, Groovy | 23 March 2007, 18:29 | Vadim Voituk

Тяпница.
Пятница.
Рабочее настроение близится к нулю, а профессиональный энтузиазм уже давно измеряется отрицательными величинами.
И так как самостоятельно ничего выдумывать не хочется, решил поделиться ссылками на источники информации о так давно хваленом мной Groovy.
[Далее...]

JMX RMI and Google Code Search

Рубрика: Development, Google, Java | 22 March 2007, 10:34 | juriy

Уфф, вот за что люблю свою работу, так это за те моменты, когда после длительных и изнурительных мучений кусочек кода оживает и начинает работать так как надо.

В этой заметке хочу рассказать про маленький Success Story: как я писал Hello World в стиле JMX + RMI. (Hello World’ы становятся все страшнее и страшнее). И про то, как google code search помог решить проблему в коде.

[Далее...]

JasperReports Video Kick-Off

Рубрика: Development, JasperReports, Java | 16 March 2007, 20:53 | juriy

После работы было весьма творческое настроение, поэтому натворил видеодемку – как начать работать с JasperReports в среде Eclipse. Все знают, что в любом деле самое сложное – это первый удачный шаг. Надеюсь демка поможет вам без труда начать использовать одно из наиболее мощных средств создания отчетов – JasperReports.

Вот ссылка на видео. Если будет интерес – кину еще пару туториалов.

Смотреть видео | Загрузить ролик (в SWF)

Achtung! Prototype.js updated

Рубрика: Development, JavaScript/Ajax | 13 March 2007, 17:26 | Vadim Voituk

С интервалом в 3 дня вышли 2 новые версии JavaScript библиотеки Prototype: 1.5.0-Rc1 и 1.5.0-Rc2.
Всем, кто пользует prototype у себя в проектах, советую обновиться – заявленное улучшение прозводительности селектора $$(..) я проверил уже на собственной шкуре – скорость отклика увеличилась на порядок!

Groovy: Extracting XML from your database (RU)

Рубрика: Development, Groovy | 7 March 2007, 16:44 | Vadim Voituk

Немного практического применения для хваленого мной Groovy (1, 2).
Перевод статьи Groovy 101: Extracting XML from your database.

Сразу приведу небольшой сниппет, а потом уже поясню как он работает: [Далее...]

Техностереотипы

Рубрика: Development, Работа | 14 February 2007, 12:15 | Vadim Voituk

Спросите у 100 программистов “Какой вы хотите видить свою профессиональную деятельность через 5-7 лет?”

50 из них ответят – “стану project-менеджером, а 50 – “открою открыть свою фирму”.

Конечно скорее всего найдутся и те, кто захотят добиться других высот (стать начальником отдела, сотрудником корпорации с мировым именем, etc.), но большиство ответит именно так.

С одной стороны такие желания логичны.
Если взять первых 50 – программист видит что его начальник, такой же программист как и он, но с 10-15 летним стажем. Потому уверены что сначала они будут Junior-девелоперами, потом Senior-девелоперами, а потом PM.
Последние лет 10 чаще всего именно так и происходит.
Причиной тому является нехватка квалифицированных менеджеров. А упоминать о дифиците технически-грамотных менеджеров уже как-то даже неприлично.

Вторыми 50-ю движет мысль “Не хочу всю жизнь спину гнуть на чужого дядю” или “Свой бизнес приносит больше доходов” или “Вон у Васи своя фирма, а я все ещё за зарплату тружусь” и тд и тп.

Все мы привыкли думать, что хорошо живет только тот у кого свой бизнес или кто занимает руководящую должность. Мне кажется что это всего-лишь стереотипы, с какими нужно бороться.

Почему каждый студентик, закончивший технический факультет и возомнивший себя IT RockStar (о причинах его уверенности расскажу отдельно) думает что он сможет, пусть даже через несколько лет, управлять проектом, планировать, и распределять ресурсы, вести переговоры с кастомерами? Почему он думает, что сможет держать свой бизнес на плаву? И это при том, что он абсолютно не имеет ни опыта и даже базовых теоретических знаний ни в менеджменте, ни в законодательстве, ни в экономике, ни в бизнесе.

What non-Java language are you most interested in running on the JVM?

Рубрика: Development, Groovy, Java | 7 February 2007, 14:17 | Vadim Voituk

На Java.net завершился опрос “Какой не Java-язык вы хотели бы запускать на платформе JVM?”.

Я ожидал что будет очередное флеймообразующее обсуждение из серии “какой язык лучше”, но так не случилось.

Показательно, что по результатам лидирует Groovy. Но этого наверное и стоило ожидать в связи с растущей популярностью “рельсовых” web-фреймворков и как результат повышеным интересом к GRails.

Удивило, что организаторы опроса добавили в список языков Visual Basic, и ещё больше удивило что почти 5% отпрошенных отдали ему свои голоса. Куда катится этот мир!

Среди предложенных пользователями вариантов мелькали Scala, Scheme, F3, C, E, K, Fortress, Fortan, Beanshell, OCaml, Haskell, Lisp, Pnuts, Smalltalk, Fortress и даже Delphi/Object Pascal вместе C# (мсье знает толк в извратах).
Хорошо, что ещё никто brainf*ck не предложил :)

Догадайтесь за какой голосовал я?

P.S. Помогите найти ссылочки на остальные языки!

MySQL: Table is full

Рубрика: Development, MySQL | 5 February 2007, 15:29 | Vadim Voituk

Есть в MySQL такая неприятная вещь как “Table is full”.
Суть её заключается в том, что в какой-то наступает момент количество данных в таблице превышает 4 гигабайта, и MySQL отказывается выполнять INSERT/UPDATE-запросы.

Ноги этой “бяки” ростут из ограничения на максимальный размер файла на некоторых платформах.
Решается достаточно просто:

ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;

где MAX_ROWS – ограничение на количество записей в таблице, AVG_ROW_LENGTH – усредненное количество данный в одной записи (используется только для таблиц с BLOB и TEXT полями).

Но это в случае если ваша файловая система поддерживает файлы размером более 4Гб. Если же это не так, то решение не столь примитивное – необходимо разбивать таблицу на разделы (partitions).

Теперь расскажу почему “table is full” доставляет кучу проблем:

1. При создании таблицы ни один разработчик не указывает MAX_ROWS, потому ошибка возникает на работающих решениях в самый неожиданный момент. (Меня почему-то такое счастье постоянно настигает на выходных)

2. При указании очень большого значения MAX_ROWS, MySQL молча “ложит” на это значение и прописывает “max_rows=4294967295″. Таким образом выше 4-х миллиардов записей все-равно не прыгнешь.

3. Решение с проблемы с помошью PARTITIONS работает только на MySQL >= 5.1

4. И как вы думаете сколько времени выполняется указанный выше ALTER TABLE на 4 Гб данных? А сервис все это время находится в состоянии, близкому к коме.

Целью данной заметки не было формирование какого-либо мнения/вывода о MySQL, а скорее желание предупредить рядового разработчика о возможной проблеме и ознакомить с некоторыми способами её решения.

What is groovy

Рубрика: Development, Groovy, Java | 26 January 2007, 18:31 | Vadim Voituk

Около полугода назад я впервые познакомился с Groovy – динамическим языком для платформы Java.
Он включает разнообразный syntax-sugar (как бы так правильно перевести?) из Python, Ruby, Smalltalk но при этом использует всю мощь JRE и близкий к Java синтаксис.
Вариантов для использоавния такого чуда техники масса: от написания рабочих простеньких утилит и shell-скриптов, до продуктивной разработки web-приложений, тест-кейсов, и сценариев сборки.
Кстати для последних двух задач у Groovy есть встроенные средства: поддержка Ant и JUnit на уровне языка.
Т.к. Groovy компилируется в .class – файлы, то связать поделки на Groovy с Java-программой труда не составляет.
Таким образом проект может быть запрототипирован на Groovy, а потом, при необходимости, понемногу заменять его Java-кодом.

Программа HelloWorld на Groovy будет выглядеть так:

println "Hello world!" // ";" можно не ставить 

Компиляция

groovyс Hello.groovy

На выходе получаем Hello.class
Запуск

groovy Hello

Т.к. в динамических языках фаза компиляции часто опускается, достаточно просто

 groovy Hello.groovy

По аналогии с Python у Groovy есть графическая (groovyConsole) и текстовая (groovysh) консоль.
Ввод команд в консоль необходимо завершать вызовом команды “go”.
Также достаточно интересной мне кажется команда “inspect” – открывает Groovy Object Browser на последней выполненой операции – такая себе минимальная IDE.

Но это все мелочи жизни.
Самое интересное в Groovy это поддержка на уровне синтаксиса списков, хэш-таблиц и замыканий:

[ 10, 20, 40, "Vadim", "Hello" ].each({println it});

или ещё веселее

["Brett":100, "Pete":"Did not finish", "Andrew":86.87934 ].each{it,val ->
println it  + "=>" + val
}

И под конец хотелось бы добавить о возможности доступа к членам класса а-ля JavaBeans (вылетело из головы название термина) и передаче значений параметров в конструктор.

import javax.swing.*
def x = new JFrame(title:"Hello", size:[200, 300],
defaultCloseOperation:JFrame.EXIT_ON_CLOSE)
x.visible = true

Для “затравки” приведу ещё ссылку на статью “GUI in IronPython, Groovy and JRuby“, предлагается построить простенький GUI на 3х скриптовых языках, а также ссылку на колонку “Practically Groovy” на сайте IBM.

Метки в Java – прозрение

Рубрика: Development, Java | 11 January 2007, 11:12 | Vadim Voituk

Сегодня утром был искренне поражен узнав что в Java есть метки.
Да-да, именно те самые метки какие есть в других языках и на какие можно “делать goto”.
К моей огромной радости оказалось, что ненавистного оператора goto все-таки в Java нет.
Но есть возможность выполнить continue или break с указанием метки.
continue <label> – это безусловный переход к началу блока (почти goto).
break <label> – это выход из блока кода помеченного меткой.
Практичных применений этому я пока не нашел но подозреваю, что можно использовать например выхода из набора вложенных циклов:

public class Test {

  public static void main(String[] argv) {
    lab1: for (int i=0; i<10; i++) {
      for (int j=0; j<10; j++) {
        if (j>=5 && i>5)
          break lab1;
        System.out.println(i + " / " + j);
      }
    }
  }

}
Страница 14 из 17« Первая...34567891011121314151617