Заметил за собой…

Рубрика: Groovy | 29 May 2008, 11:40 | Vadim Voituk

Только что заметил за собой что в случае, когда нужно быстро выполнить какой-либо код, перестал писать его на PHP, отдавая предпочтение Groovy.

Т.е. если раньше писал что-то вроде:
$ php -r 'echo strlen("0bed4ce7b082e0f1ca05")."\n";'

или

echo "0bed4ce7b082e0f1ca05" | wc -c

то теперь первое, что приходит в голову, это:

groovy -e 'println "0bed4ce7b082e0f1ca05".size()'

P.S. Пример, конечно же, получился не очень показательный, но жизненный – проверял длину идентификатора для выделения для него поля в БД.

P.S.S. Это только у меня echo "0bed4ce7b082e0f1ca05" | wc -c выдает 21, в то время как PHP и Groovy – 20?

Java Deployment Toolkit

Рубрика: Development, Java, JavaScript/Ajax | 28 May 2008, 10:55 | Vadim Voituk

Вместе с выходом беты Java Development Kit 6u10, Sun анонсировали и выход вспомогательной, но IMHO очень полезной JavaScript-библиотеки  Java Deployment Toolkit.

Назначение библиотеки – сделать развертывание и запуск Java-приложений в среде Web (апплетов, WebStart-приложений) более простой и комфортной.
При этом библиотека берет на себя задачи по определению установленных JRE, проверки соответствия их версий минимальным требуемым приложением, установке обновлений (если необходимо) и конечно же кроссбраузерного добавления обьектов на страницу.
Получается такой себе аналог SWFObject для Java.

Использовать Java Deployment Toolkit  очень просто – достаточно подключить на web-страницу единственный JavaScript-файл:
[javascript]<script src=”http://java.com/js/deployJava.js”></script>[/javascript]

Пример добавления аплета на страницу будет выглядеть так:

deployJava.runApplet({codebase:"http://voituk.kiev.ua/demo/",
  archive:"TumbleItemProject.jar", code:"components/TumbleItem.class",
  width:"600", Height:"95"},
{maxwidth:120, nimgs:17, offset:-57, img:"images/tumble"}, "1.5")

где первый параметр метода runApplet() – параметры тэга <APPLET>,
второй – параметры, передаваемые самому апплету (значения <PARAM>),
третий – минимальная версия JRE необходимая для запуска апплета.

Что  по cути отличается от использования старого доброго тега <APPLET> только формой нотации (JSON вместо HTML).

При этом, при попытке зайти на страницу с апплетом с помощью браузера, без установленного (или с устаревшим) Java Plugin, будет предложено установить последнюю версию оного.

Embedded fever

Рубрика: Java | 26 May 2008, 08:46 | juriy

Не все веб приложения одинаковые: одни большие, даже монстроидные: работают на кластерах веб-серверов и общаются с ордами баз данных и сервисов. Другие поменьше и поскромнее – работают, как правило на одном выделенном сервере, иногда ненавязчиво беседуя с сервером баз данных. Есть еще и третьи – совсем маленькие странички, которые выполняют очень узкий круг задач и обслуживают небольшое количество пользователей: они зачастую запущены на той же машине что и СУБД.

В этой заметке я уделю внимание третьему типу приложений – совсем маленьким системам. Их функционал ограничен небольшим набором вспомогательных функций, которые, к примеру, могут поддерживать основное приложение. Давайте на секунду представим, что нам потребовалось написать такое приложение. Какие будут первые действия? Конечно, установка Tomcat и MySQL. Вам не кажется неправильным, что ради запуска пары сервлетов вам нужно установить две достаточно больших и тяжеловесных системы? Что уж говорить о поставке такого “монстра” пользователям.
[Далее...]

Как Google ищет сотрудников?

Рубрика: Google, Работа | 21 May 2008, 12:00 | Vadim Voituk

Помните, где-то года так 2 назад, по сети блуждала новость о том, как Google искал сотрудников развешивая на биллбордах математические квесты-задачки. Например вот эта.

Суда по всему Google не отказался от своей затеи, правда немного поумерил масштабы.

Вот такое рекламной обьявление вчера было мне показано в GMail.

При клике попадаешь на страницу cо списком инженерных вакансий Google в Европе.

Что называется точное  таргетирование обьявления :)

Added:
Несколько заметок о том, как я проходил собеседование в Google: начало, продолжение и окончание истории.

LinkedIn Architecture slides on JavaOne 2008

Рубрика: Development, Java, LinkedIn | 20 May 2008, 10:25 | Vadim Voituk

На прошедшей в Сан Франциско на прошлой неделе конференции JavaOne компания LinkedIn провела 2 сессии об архитектуре и взаимодействии компонент своей социальной сети.

Первая презентация имеет название “LinkedIn – A Professional Network built with Java Technologies and Agile Practices”

Очень интересный overview о базовой архитектуре и реализации компонент LinkedIn и организации процесса разработки и тестирования.
Лично мне было интересно узнать о технологиях и библиоетках используемых для реализации столь масштабной архитектуры.
Оказывается, что LinkedIn на 99% реализаован на Java и использует Spring (со своими расширениями), ActiveMQ, Eh-cache, Lucene, HttpClient, Jetty, Louis, Groovy/Grails, DWR, Hudson, Eclipse+Mylyn, Jira, JUnit, HtmlUnit, MySQL, Oracle RDBMS и другие.
Оставшийся 1% не-Java кода – это С++ реализация огромного графа связей в постоянной памяти (так называемый Сould). [Далее...]

Salut aux Armes

Рубрика: Just a life | 19 May 2008, 15:21 | juriy

Нельзя, определенно нельзя засиживаться на месте, медленно заплывать жирком в ожидании пенсии, отпуска, повышения или еще чего-то. Иначе становится скушно. А скука – не наш выбор.

На выходных удалось-таки реализовать давнее желание – поиграть в страйкбол. Что такое страйкбол? Отчасти похож на пейнтбол – только вместо шаров с краской используют цельные пластиковые шары. Вторая существенная разница – оружие в страйкболе внешне и по весу почти не отличается от настоящего, только стреляет пластиковыми шарами. Скорость вылета шара из ствола – 90-140 м/с (в зависимости от того, какой внутренний тюнинг поставил хозяин). Ощущения от попадания самые разные – от простого хлопка (если попали по камуфляжу) до полнейшего “чёрт-подери”, если попали по лицу (благо редко такое случается).
Ощущения неописуемые: лежишь в укрытии между веток, прижавшись щекой к прикладу ждешь пока появится из-за дерева ничего не подозревающий опонент. Ну или наоборот: тихо и медленно подходишь к “базе”, высматривая защитников за каждым деревом. А потом “контаакт три часа четверо…”, и полетели струи белых шаров.
Драйв… искать в каждом дереве укрытие и думать наперед, что будет если в следующий момент начнут стрелять, огрызаться длинными очередями из окопа и поддерживать огнем заходящих с флага товарищей.
На “игру” потратил все воскресенье – с 11 до 6 вечера. Домой пришел уставший но счастливый и как-то даже подобревший. С нетерпением жду корпоратива – будет страйкбол. Так что, еще постреляем :-)

Для тех, кто заинтересовался:
http://militarist.com.ua/

Just for Fun фриланс 5 – Партнерка от GAF

Рубрика: Development, Работа | 19 May 2008, 13:14 | Vadim Voituk

В предыдущих своих рассказах об опыте работе на фриланc-бирже GetAFreelancer.com я упустил одну достаточно забавную и интересную особенность – партнерскую (или аффилиатную) программу от GetAFreelancer.

Суть её состоит в том, что после регистрации вы получаете уникальный партнерский/реферальный URL (в моем случае это http://www.getafreelancer.com/affiliates/voituk/). После этого каждый зарегистрированный по этому URL учасник биржи становится вашим рефералом и все его комисии, заплаченные в пользу системы (за выигранный проект, за Gold-аккаунт, за публикацию проекта etc) переходят к вам.

Вообще я особо не верю в подобные пирамидальные схемы, но тем не менее, в предыдущих постах реферальную ссылку указывал (скорее на авось, чем с надеждой на этом заработать).
Каково же было мое удивление когда я в интерфейсе GAF по ошибке кликнул на список платежей и увидел 2 “незнакомых” платежа ($25+$12).
Немного приглядевшись стало ясно,  что это 10% комисии за выполненный проект + плата за Gold Account  которые выполнил на GAF один из читателей этого блога. (не спрашивайте как я его узнал и нашел :)

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

Также предлагаю для ознакомления список лидеров партнерских программ на GetAFreelancer.com.
Видно, что суммы там совсем не заоблачные, как могло показаться изначально.

Введение в Scala

Рубрика: Java, Ссылки | 13 May 2008, 17:52 | Vadim Voituk

Вчера, при написании заметки про каррирование замыканий в Groovy, вспомнил о том, что не так давно на developerWorks.ibm.com читал отличную вводную статью о функциональном языке прграммирования для JVM – Scala.
Собственно сама заметка:
На русском: Scala для Java-разработчиков: Функциональное программирование вместо объектно-ориентированного
In English: Java developer’s guide to Scala: Functional programming for the object oriented

Must read для каждого, кто хочет хотя бы понять принципы функционального программирования на простом примере. А также предварительно прочитав это – must read для тех, кто не хочет :)

Updated:

Чет меня все ещё не отпустила романтика ФЯ, потому приведу ещё несколько русскоязычных заметок на тему Scala:

Буду рад, если кто-то поделится ещё толковыми статьями этой тематики.

Groovy: Comparator closure & currying

Рубрика: Development, Groovy | 12 May 2008, 22:41 | Vadim Voituk

Есть в Groovy такая возможность, как currying (каррирование что-ли?) замыканий.
Само понятие прийшло из функционального программирования и означает преобразование функции с один количеством агрументов, в функцию меньшего количества путем “фиксации” значений некоторых аргументов.
Например есть функция f(x,y,z), тогда её каррированием по фиксированному значению арргумента x=10 будет функция Λ(f)=f(10, y, z).
Термин currying прозшел от имени известного математика Хаскеля Карри, и ещё иногда называется  Шейнфинкелизацией (от имени Украинского математика Моисея Шейфинкля, который изобрел это понятие)

Покажу небольшой пример того, как можно использовать каррирование замыканий в Groovy. [Далее...]

Groovy Testdrive

Рубрика: Development, Groovy | 12 May 2008, 12:18 | juriy

Начитавшись вдоволь книг и статей про Groovy мы решили опробовать этот инструмент на практике, чтобы получить о нем более полное представление. Ведь читая книги, создается образ “великого и всемогущего Groovy”. Так это или нет мы решили выяснить при помощи небольшого тест-драйва. Эта заметка – небольшой отчет о том, что у нас получилось. Команда состояла из авторов этого блога – Войтюка Вадима и Буры Юрия.
Когда в заметке встречаются рассуждения от первого лица – имеется в виду автор заметки (Юрий)
Начали мы с выбора проекта: хотелось написать что-то достаточно интересное, наглядное и разносторонее, поэтому мы остановились на простой многопользовательской игре. Первая мысль была – написать сетевой биллиард, но мы быстро поняли, что большая часть работы это физика движения шариков. Так, потратив большее количество времени на реализацию физ. движка мы, в лучшем случае, получим модель движения шайб с идеальными бортами.
Остановились на клоне всеми любимой игры Battle City. Не ставя перед собой слишком больших целей (совместного времени у нас было всего-то 5 часов) мы условились добиться синхронного движения танка на двух компьютерах.

[Далее...]

Страница 1 из 212