Общее·количество·просмотров·страницы

Java Dev Notes - разработка на Java (а также на JavaScript/Python/Flex и др), факты, события из АйТи

четверг, 25 марта 2010 г.

10 бесценных от Альберта Эйнштейна

Подробная версия лежит на Хабре: 10 бесценных жизненных советов, которые дает нам Альберт Эйнштейн.

Английская версия из блога DumbLittleMan: 10 Amazing Life Lessons You Can Learn From Albert Einstein.


  1. Будьте увлеченным
    У меня нет какого-то особого таланта. Я просто страсть как любопытен.

  2. Настойчивость бесценна
    Все это так не потому что я такой умный. Это все из-за того, что я долго не сдаюсь при решении задачи.

  3. Сфокусируйся на настоящем
    Любой мужчина, который может вести машину безопасно, пока целуется с симпатичной девушкой, попросту не уделяет поцелую должного внимания.

  4. Воображение могущественно
    Воображение это все. Оно способно показать нам заранее, как будут развиваться события. Воображение важнее знания.

  5. Совершайте ошибки
    Человек, который никогда не совершал ошибок, никогда не пробовал делать ничего нового.

  6. Живи настоящим
    Я никогда не думаю о будущем – оно наступает здесь и сейчас.

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

  8. Не ждите разных результатов
    Это безумство делать одно и то же раз за разом, и при этом ждать разных результатов.

  9. Знание приходит из опыта
    Информация в чистом виде — это не знание. Настоящий источник данных это опыт.

  10. Поймите правила и побеждайте
    Вам следует выучить правила игры. И после этого вы будете играть как никто другой.

воскресенье, 21 марта 2010 г.

Чему я научился, собирая миллион долларов на стартап без бизнес-плана и финансовых прогнозов (потягивая при этом пиво)

Классный пост от Роберта Мэя: What I Learned Raising A Million Dollars For a Startup With No Business Plan and No Financial Projections (While Drinking a Beer). А на сайту StartupPoint находится его перевод. Очень и очень познавательно.

Вывод, впрочем, все тот же - нужно делать свой проект несмотря ни на что: несмотря на отсутствие инвесторов, отсутствие денег, присутствие многих других проблем, и т. д. Потому что вы и есть тот человек, которому этот проект нужен больше всего. Если вы от него откажетесь, то его не поднимет никто. Делать, делать, делать!

четверг, 4 марта 2010 г.

Генерация GUID на JavaScript

Как сгенерировать GUIDна JavaScript:

Способ номер раз (JavaScript GUID generator):

function S4() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
function guid() {
return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}


Способ номер два (by StackOverflow How to create a GUID / UUID in Javascript):

function createUUID() {
// http://www.ietf.org/rfc/rfc4122.txt
var s = [];
var hexDigits = "0123456789ABCDEF";
for (var i = 0; i < 32; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[12] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
s[16] = hexDigits.substr((s[16] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
 
var uuid = s.join("");
return uuid;
}


One-liner solution (все с того же поста на StackOverflow):

'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
}).toUpperCase();


Здесь находится мемо, которое затем стало RFC4122: A Universally Unique IDentifier (UUID) URN Namespace

Robert Kieffer опубликовал файл Math.uuid.js, который содержит две реализации генератора UUID: RFC 4122 (функция Math.uuid) и более компактную RFC4122v4 (функция Math.uuid2). Ниже привожу исходник:

/*!
Math.uuid.js (v1.4)
http://www.broofa.com
mailto:robert@broofa.com
 
Copyright (c) 2009 Robert Kieffer
Dual licensed under the MIT and GPL licenses.
*/

 
/*
* Generate a random uuid.
*
* USAGE: Math.uuid(length, radix)
* length - the desired number of characters
* radix - the number of allowable values for each character.
*
* EXAMPLES:
* // No arguments - returns RFC4122, version 4 ID
* >>> Math.uuid()
* "92329D39-6F5C-4520-ABFC-AAB64544E172"
*
* // One argument - returns ID of the specified length
* >>> Math.uuid(15) // 15 character ID (default base=62)
* "VcydxgltxrVZSTV"
*
* // Two arguments - returns ID of the specified length, and radix. (Radix must be <= 62)
* >>> Math.uuid(8, 2) // 8 character ID (base=2)
* "01001010"
* >>> Math.uuid(8, 10) // 8 character ID (base=10)
* "47473046"
* >>> Math.uuid(8, 16) // 8 character ID (base=16)
* "098F4D35"
*/

Math.uuid = (function() {
// Private array of chars to use
var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
 
return function (len, radix) {
var chars = CHARS, uuid = [];
radix = radix || chars.length;
 
if (len) {
// Compact form
for (var i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix];
} else {
// rfc4122, version 4 form
var r;
 
// rfc4122 requires these characters
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
uuid[14] = '4';
 
// Fill in random data. At i==19 set the high bits of clock sequence as
// per rfc4122, sec. 4.1.5
for (var i = 0; i < 36; i++) {
if (!uuid[i]) {
r = 0 | Math.random()*16;
uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];
}
}
}
 
return uuid.join('');
};
})();
 
// A more compact, but less performant, RFC4122v4 compliant solution:
Math.uuid2 = function() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
}).toUpperCase();
};


Остальные реализации генератора GUID на JavaScript можно найти в уже упоминавшемся топике How to create a GUID / UUID in Javascript на StackOverflow.

среда, 17 февраля 2010 г.

23 хака для работы

Данный пост написан по мотивам поста Hack Your Work: 23 Ways to Get Ahead, Work Less and Achieve More из блога Dumb Little Man - Tips for Life.


  1. Одна цель

    Установите одну цель, которую хочется достигнуть в этом году. Слишком сложно достигать несколько целей одновременно, т.к. это рассеивает ваши усилия, энергию. Выберите одну цель на следующие 12 месяцев, и затем одну цель на ближайшие 3-6 месяцев (но такую, которая бы приближала вас к годовой цели). Затем выберите что-либо, что можно сделать в течении 1-2 недель, и что приближает к 3-6-месячной цели. После этого приложите все усилия, чтобы достигнуть свою краткосрочную цель. А затем двигайтесь в том же духе дальше.

  2. Найди свою страсть

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

  3. Поработай из дома

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

  4. Приходи на работу раньше

    Попробуй приходить на работу на 30-60 мин раньше всех остальных. Тебе придется рано вставать, но выгоды очевидны: ты не попадаешь в утренние пробки, день начинается бодро, ты можешь быть впереди остальных, и успеть сделать больше. Ранний старт рабочего дня - отличный способ быть более продуктивным.

  5. Работай 4 дня

    Если ты можешь управлять своим расписанием, попробуй работать меньше дней в неделю, чем обычно. Например, четыре дня, а не пять. Это дает: дополнительный выходной, это заставляет тебя быть более продуктивным (на 20%). Подумай сам: если ты знаешь, что твоя рабочая неделя закончится в четверг, а не в пятницу, будешь ли отвлекаться на посторонние вещи? Думаю, вряд ли.

  6. Работай 6 часов в день

    Аналогично предыдущему пункту. Но предыдущий пункт может подойти не для всех. Тогда стоит попробовать работать по 6 часов в день, и при этом рано вставать. Представь, работу начинаешь в 7 утра, а заканчиваешь уже в час дня!

  7. Работай 20 часов в неделю

    Если ограничить работу 20 часами в неделю (например, у вас удаленная работа), то скоро почувствуешь, что ты стал более сфокусированных и успеваешь сделать больше за меньшее время.

  8. СВЗ

    СВЗ - Самые Важные Задачи. В начале каждого дня пиши список из трех самых важных задач, которые нужно сделать за сегодня. Сделай по крайней мере одну из них приближающей тебя к Твоей Главной Цели. Это должны быть действительно важные задачи, те, которые повлияют положительно на тебя и твой доход в долгосрочной перспективе. И попробуй сделать их с утра, самыми первыми, до того, как на тебя свалится масса других дел.

  9. Пакетное выполнение

    Есть множество маленьких дел, которые, тем не менее, отвлекают тебя от твоей работы. Это могут быть телефонные звонки, работа с бумагами, выписка счетов, составление и отправка email, и т.д. Ты уже понимаешь, что надо их выписывать на листочек, а затем делать все сразу, за один присест, и больше к ним не возвращаться в течении дня. Это называется "пакетное выполнение", по аналогии в пакетными файлами в Юникс.

  10. Работай удаленно один день в неделю

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

  11. Фрилансить в свободно время

    Комментарии здесь излишни: нужно выделить свободное время, и начать фриланс-практику.

  12. Обедать на работе

    Можно приносить обед из дома, и обедать на работе. Этим убивается несколько зайцев: экономятся деньги и время, можно пораньше уходить с работы, можно больше успеть сделать.

  13. Ездить на работу на велосипеде

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

  14. Занимайся проектами с потенциально высокой отдачей

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

  15. Автоматизируй свой бизнес

    Автоматизированный бизнес высвобождает твое время для более интересных и творческих задач.

  16. Откладывай добавочный доход

    Если твой доход увеличился, не спеши его тратить - и вообще, не спеши увеличивать траты. Отложи добавку в банк. Это не увеличивает, конечно, твою производительность, но зато увеличивает финансовую стабильность.

  17. Расчисти рабочее место

    Чистое рабочее место делает тебя более спокойным, более производительным, более организованным.

  18. Разделяй и властвуй

    Если задача целиком кажется неподъемной, раздели ее на ряд небольших подзадач, и выполни их одна за одной.

  19. Делегируй

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

  20. Избавься от необязательных задач

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

  21. Не отвлекайся

    Телефонные звонки, email, твиттер и т.п. отвлекают тебя от дел. Больше фокусируйся, и ты больше сделаешь.

  22. Убей митинги

    Долгие митинги - это пустая трата времени. Большинство проблем, которые обсуждаются на митинге, можно решить через email или телефонным звонком.

  23. Чтение и написание Email - один раз в день

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

четверг, 11 февраля 2010 г.

Google собирается проложить экспериментальную сеть на 1 Гб/сек

Think big with a gig: Our experimental fiber network - пост в Гугл-блоге, в котором Гугл объявляет о том, что планирует проложить экспериментальную сеть, с пропускной способностью для конечного пользователя в 1 Гб/сек. Сеть запускается, чтобы протестировать новые возможности, новые приложения и др. Сеть будет доступна 50 тыс пользователям, с возможностью расширения до 500 тыс пользователей.

Вышел релиз Google App Engine SDK 1.3.1. Новые возможности Datastore

Это мой первый пост в новом 2010 году!!!

Итак, вышел релиз Google App Engine SDK 1.3.1. Основные изменения касаются хранилища данных! По порядку:

  • Появились курсоры - курсоры позволяют приложению ставить "закладки" при проходе по набору записей, полученных в результате запроса.

  • Отменен лимит на 1000 записей!!! Юхуууу! Хранилище теперь может возвращать столько записей, сколько потребуется!

  • Уменьшилось количество ошибок хранилища Теперь App Engine автоматически повторяет все запросы к хранилищу, если произошла ошибка доступа к Bigtable. Это уменьшает количество ошибок при put-запросах в 3-4 раза, при get-запросах в 10-30 раз


Дополнительно еще есть много других изменений (см. лист изменений для Python SDK).

По мотивам поста App Engine SDK 1.3.1, Including Major Improvements to Datastore! в блоге Google App Engine.

понедельник, 28 декабря 2009 г.

Удаление элемента из массива JavaScript

Как не надо удалять элемент из массива в JavaScript:

var list = [4,5,6];
delete list[1];
print(list); // [4, undefined, 6]
 


Как правильно:

var list = [4,5,6];
list.splice(1, 1); // Remove one element, returns the removed ones.
print(list); // [4, 6]


И еще правильно:

var visibleIds = [4,5,6];
visibleIds.splice(visibleIds.indexOf(5), 1);
print(visibleIds); // [4, 6]


См. также JavaScript: Remove element from Array.

пятница, 27 ноября 2009 г.

10 навыков, которые потребуются девелоперам в ближайшие пять лет

По мотивам 10 skills developers will need in the next five years.

1) Знать что-то из "большой тройки" (.NET, Java, PHP)

2) Rich Internet Applications (RIAs)

Flash - это уже не просто анимация на страничках - взгляните в сторону Flex и AIR. Его конкуренты: JavaFx, Silverlight. Добавляйте сюда также HTML5 и AJAX.

3) Веб разработка

4) Веб-сервисы

REST или SOAP? JSON или XML? Сеть - это компьютер.

5) Иметь не только навыки разработки ПО

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

6) Знать еще один динамический и/или функциональный язык

Ruby, Python, F#, и Groovy - не помешает.

7) Знать гибкие методологии разработки

8) Знания предметной области

9) Гигиена разработки

Использовать систему контроля версий, баг-трекинг, документировать код, проводить тестирование.

10) Разработка под мобильные устройства

10 вещей, которые каждый Java-разработчик должен знать о Unix

По мотивам Ten Things Every Java Developer Should Know About Unix.

Предназначено для разработчиков на Java, сидящих под Windows.


  1. Для использования некоторых портов нужны права.
    В Unix программы, запускаемые простыми смертными ;-), не могут использовать сетевые порты с номером меньше чем 1024. Только пользователь с правами root может это сделать.

  2. Нет магического лока файлов.

  3. Иногда нет GUI, и это нормально.








10 вещей, который каждый Java-разработчик должен знать

Данная статья является вольным пересказом статьи в блоге Armel Nene - 10 things all JAVA developers should know.

  1. Знать и помнить основы Java, а также объектно-ориентированного подхода.
    Необходимо знать основы языка, а также основные пакеты стандартной библиотеки. Особое внимание обратить на пакеты java.lang, java.util, java.io.

  2. Знать используемый технологический стэк.
    Java - это платформа разработки. В рамках этой платформы существует набор фреймворков, которые принято использовать вместе. Например, open-source J2EE стэк включает в себя Spring Framework + Hibernate + MySQL/PostgreSQL. Или, стэк Oracle включает в себя: JSF + TopLink + Oracle СУБД.

  3. Иметь опыт использования нескольких Java EE фреймворков.
    Как минимум, необходимо знать Spring. Дополнительно, не помешает иметь представление о EJB, Struts 1.3/2.0, Tapestry, Wicket. Опыт с Hibernate также highly desirable, хотя сейчас идет переход на JPA. Hibernate, кстати, совместима с JPA.

  4. Знать еще один скриптовый (динамический) язык.
    Для некоторых вещей Java слишком тяжеловесна. Поэтому необходимо знать еще как минимум один скриптовый, или, может, динамический язык. Хорошо подойдет Python. Также неплохо знать язык скриптов используемой ОС. Для Unix flavors, например, знание shell scripting очень помогает ;-)

  5. Знать, как разрабатывать веб-сервисы.
    Сеть - это компьютер. Необходимо иметь представление о различных фреймворках для разработки веб-сервисов. Понимать разницу между стандартизированным SOAP и нестандартизированным ReST, и знать, что где лучше использовать.

  6. Многопоточное программирование.
    Необходимо знать, когда следует сделать приложение многопоточным. Каждый Java-разработчик должен уметь написать многопоточное приложение на Java.

  7. Работа с СУБД - SQL, JDBC.
    Необходимо уметь написать SQL-запрос. Знать основы обращение с СУБД из Java - через JDBC.

  8. Знать скриптовые клиентские языки и что такое AJAX.
    AJAX позволяет снять нагрузку с сервера. Поэтому необходимо его знать, а также и различные фреймворки для рабоыт с ним. Со стороны Java это - DWR и GWT. GWT компилирует код на Java в эффективный JavaScript.

  9. Знать конкурентов.
    Отличие Java от .NET, Ruby, Python.

  10. Знать Ant (Maven), Tomcat или GlassFish/JBoss.
    Ant - скрипты сборки, стандарт де-факто при разработке на Java. Maven - имеет заданную структуру построения проекта, менеджмент библиотек. Tomcat - базовый сервлет-контейнер, который каждый разработчик на Java EE обязан знать. А также еще хотя бы один сервер приложений на Java (GlassFish или JBoss AS).

четверг, 26 ноября 2009 г.

Как узнать версию Python

Через командную строку:

python --version


Программно:
import sys
print sys.version_info


П.С. Многострочные комментарии в Питоне создаются с помощью тройных апострофов:
'''
This is
multiline comment
in Python
'
''

среда, 25 ноября 2009 г.

Node.JS - JavaScript-фреймворк для обработки ввода-вывода

Node.JS - JavaScript-фреймворк для обработки ввода-вывода. В качестве движка JavaScript используется V8 - движок от Google Chrome. Сайт проекта: http://nodejs.org/.

Несмотря на то, что большинство разработчиков использует JavaScript в качестве клиентского языка в браузере, появление встраиваемых движков, таких как Rhino от Mozilla (Rhino написан на Java) или V8 от Google (V8 написан на С++) сделало возможным выполнение JavaScript-сценариев на сервере. Одним из примеров таких систем и является Node.JS. JavaScript здесь выступает лишь как язык сценария, он связан с библиотеками на Python или С/С++, которые и выполняют основную работу (через функции epoll, kqueue, /dev/poll, or select).

О преимуществах Node.JS подробнее рассказано здесь.

А вот статья на InfoQ, по которой я и нашел Node.JS:
Evented I/O for Javascript with Google V8-based Node.js

Reactor pattern

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

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

Ссылки:

Reactor pattern - Википедия

Patterns for Concurrent, Parallel, and Distributed Systems

Comparing Two High-Performance I/O Design Patterns

Merlin brings nonblocking I/O to the Java platform

Java Performance Tuning - тюнинг производительности Джавы.

Schmidt - Reactor_An_Object_Behavioral_Pattern_for_Demultiplexing_and_Dispatching_Handles_for_Synchronous_Events

V8 JavaScript Engine

V8 - это опен-соурсный JavaScript-движок, который используется в браузере Google Chrome. V8 написан на С++.

V8 реализуетECMAScript, согласно третьему изданию стандарта ECMA-262, и работает под Windows XP и Vista, Mac OS X 10.5 (Leopard), и Linux-системами на IA-32 или ARM процессорах.

V8 может запускаться отдельно, а также быть встроенным в любое C++ приложение.

Сайт проекта: http://code.google.com/p/v8/.

Одним из преимуществ V8 является его сборщик мусора, т.е. garbage collector. Он придает производительность этому движку.

Одним из наиболее широких применений JavaScript, как клиентского языка, является манипуляция с DOM. Однако, DOM предоставляет браузер (например, Google Chrome), а не движок. V8 предоставляет все типы данных, операторы, объекты и функции, определенные в стандарте ECMA.

понедельник, 9 ноября 2009 г.

Sun Java Application Store поддерживает оплату через систему PayPal

Sun Java Application Store теперь поддерживает оплату через систему PayPal.

На конференции PayPal X Innovate 2009 компания Sun анонсировала интеграцию магазина приложений Sun Java App Store c платежной системой PayPal.

Разработчики могут назначать цены за приложения, распространяемые через Java App Store в диапазоне от $1.99 до $200.00 (USD) и выбирать тип лицензии. Разработчики получают 70% с каждой продажи приложения, проданного через Java Store Beta. Java App Store использует Adaptive Payment API от PayPal, потребители могут авторизоваться в Java Store Beta и просто нажимать кнопку "Buy", таким образом, совершая покупки не покидая магазина. Дополнительно, когда совершается платеж, разработчик получает оплату моментально, в момент перечисления денег клиентом. Девелоперы могут моментально получать платежи и в каждый момент точно знать, как идут продажи, и сколько людей купило их приложение.

Ссылки:
Sun Enhances Java Application Store with PayPal Payment Capability

Sun Enhances Java Application Store with PayPal Payment Capability

Yahoo Traffic Server now is Open-Source

Компания Yahoo передала код проекта Yahoo Traffic Server в Apache Incubator.

Traffic Server - это высокопроизводительный HTTP/1.1 кэширующий и прокси сервер, используемый Yahoo во внутренних проектах начиная с 2002 года (с тех пор, как они приобрели его разработчика - компанию Inktomi). Traffic Server обрабатывает в Yahoo около 400TB данных ежедневно. По сообщениям от разработчиков, Traffic Server обрабатывает свыше 30,000 запросов в секунду на одном сервере.

Traffic Server предоставляет управление сессиями и конфигурациями, балансировку нагрузки, аутентификацию и роутинг, и спроектирован для высоконагруженных сайтов, в которых администраторы могут создавать сложные, комплексные настройки для обработки запросов на файлы, изображения и иные объекты. Модульная (plugin) архитектура позволяет разработчикам расширять Traffic Server для выполнения различных задач.

Traffic Server помещен в Apache Incubator, где он будет приведен в соответствие со стандартами кода Apache Software Foundation. Traffic Server состоит из более чем 300,000 строк кода на C/C++. Долговременные цели включают перенос на все Unix-системы, переделку под 64-битовость, и добавление фич, таких как, наприимер, нативная поддержка IPV6.

Shelton Shugar, VP of Yahoo, говорит, что это ПО будет полезно для использования в облаке. Также Yahoo надеется, что вокруг Traffic Server появится сообщество пользователей, которые привнесут новый end customer experience.

См. ссылки:

Yahoo donates Traffic Server to Apache

Yahoo! Traffic Server donated to Apache

Traffic Server Project Incubation Status

суббота, 7 ноября 2009 г.

Google открывает ключевые инструменты разработки

В посте от 5 Ноября 2009 года Introducing Closure Tools компания Google объявила об открытии нескольких своих ключевых инструментов разработки на JavaScript (Closure Compiler, Closure Library, Closure Templates, Closure Inspector), надеясь, что они позволят программистам создавать веб-приложения быстрее.

При помощи этих инструментов созданы популярные веб-приложения (Gmail, Google Docs и Google Maps).

Closure Compiler
Closure Compiler - JavaScript-оптимизатор, который сжимает код JavaScript, а также выполняет оптимизацию кода (это опционально). Существует три уровня сжатия и оптимизации:

  • WHITESPACE_ONLY - удаление пробелов в комментариев из кода

  • SIMPLE_OPTIMIZATIONS - локальная оптимизация частей скрипта, которые не взаимодействуют с внешним кодом. Обычно, это переименование локальных переменных

  • ADVANCED_OPTIMIZATIONS - агрессивная оптимизация


Closure Compiler имеет REST-интерфейс. Помимо этого можно скачать JAR-файл, который содержит Closure Compiler, и пользоваться им локально.

Closure Compiler для работы требует Java 6.

Closure Library
Кросс-браузерная JavaScript-библиотека, которая содержит утилиты для обращения к DOM, модель событий, коммуникацию с сервером, структуры данных, большое количество виджетов и другое.

Closure Templates
Шаблонизатор, работающий и на клиенте, и на сервере.

Closure Inspector
Расширения для FireBug for FireFox. Добавляет следующие фичи в файербаг:

  • мэппинг исходного кода - при выполнении жатого кода мэппит его на несжатый оригинал

  • улучшенное отображение stack trace

  • интеграцию с юнит-тестированием

понедельник, 2 ноября 2009 г.

Python, Django, and Google App Engine

Выступление Гвидо Ван Россума на Google I/O 2008. См. видео-трансляцию.

Постоянные читатели