Curso Javascript para JavaCE Social

{ October 28th, 2010 }


cmilfont

Autor: cmilfont

Como prometido ontem, estou doando o curso de javascript para o projeto JavaCE Social, o curso foi formatado para 4 horas, bem focado. O conteúdo para o curso é a seguinte:

  1. Javascript: Orientação a Objetos
    • Orientação a objetos Prototyped-Based, objeto literal e JSON
    • Estratégias de construção de objetos (Factory, Constructor, Prototype e escopos de visibilidade)
  2. Javascript: Funcional
    • Closure e Currying
    • Array Comprehensions

O curso de Javascript completo é cerca de 16h no mínimo, mas dá para demonstrar bastante coisa em 4h. Esse curso serve principalmente para compreender bem como funciona um framework client-side como o Jquery, principalmente se precisar criar ou modificar plugins. Se der tempo pretendo ainda fazer algumas demonstrações de estratégias de otimizações, técnicas de ajax, entre outras coisas.

Vamos usar o firebug para praticar, não dá tempo de instalar e configurar um Rhino ou Node, então fica para os próximos algo mais avançado.

Posted in javace, JavaScript, Linguagens, Scripting ~ 2 Comments

Minificação de Javascript com Ant Task

{ December 16th, 2008 }


cmilfont

Autor: cmilfont

Em um post passado eu falei da importância de unir e minificar arquivos js em determinados casos e discuti “quando” fazer isso, vou mostrar “como” minificar usando o YUI Compressor com tasks do Apache Ant montados por Viktor Lieskovsky do Javaflight.

Esse pequeno tutorial-guia faz parte do material dos meus cursos de Javascript e Ajax e serve para deixar um histórico acessível aos alunos e fácil para leitores que por ventura precisem.

Preparei um ambiente de execução com todas as dependências no projeto Remendux onde vocês podem fazer checkout e rodar o build ant localmente como um projeto do eclipse – estou usando o plugin para o SVN Subclipse.

Montei um script ant padrão bem simples de ser entendido por iniciantes:

<?xml version="1.0" encoding="UTF-8"?>
<project name="jsmin" default="main" basedir=".">
	<!-- Propriedades para definir nomes de pastas que usaremos -->
	<property name="js" value="js"/>
	<property name="build" value="build"/>
	<property name="lib" value="lib"/>
	<property name="output" value="output"/>
	<!-- Propriedades para definir nomes os arquivos necessários -->
	<property name="yui-compressor.jar"
		location="${lib}/yuicompressor-2.4.2.jar" />
	<property name="yui-compressor-ant-task.jar" 
		location="${lib}/yui-compressor-ant-task-0.3.jar" />
	<!-- Incluir as libs necessárias no classpath -->
	<path id="task.classpath">
		<pathelement location="${yui-compressor.jar}" />
		<pathelement location="${yui-compressor-ant-task.jar}" />
	</path>
	<!-- Definição da task para o Ant reconhecer -->
	<taskdef name="yui-compressor" 
classname="net.noha.tools.ant.yuicompressor.tasks.YuiCompressorTask">
	<classpath refid="task.classpath"/>
	</taskdef>
 
	<target name="clean">
		<delete dir="build"/>
		<delete dir="output"/>
		<mkdir dir="build"/>
		<mkdir dir="output"/>
	</target>
 
	<target name="main" depends="clean">
		<!-- Tag do Ant para concatenar arquivos 
		[ http://ant.apache.org/manual/CoreTasks/concat.html] 
		os arquivos são unidos na sequência de definição 
		no fileset
		-->
		<concat destfile="${output}/remendux.js" force="no">
			<fileset file="${js}/util.js" />
			<fileset file="${js}/remendux.js" />
		</concat>
		<!-- Task do yui-compressor -->
		 <yui-compressor warn="false"  munge="true"  
				preserveallsemicolons="false" 
				fromdir="${output}" todir="${build}">
		</yui-compressor>
	</target>
 
</project>

Após a importação, para executar o script – que chamei de build-yui.xml – basta apenas executar com o ant pelo eclipse – vide imagem abaixo – ou em linha de comando. Estou usando o Ant 7.1 com java 6u10 e Eclipse 3.4, portanto caso haja um erro atente para a versão das ferramentas usadas.

Após executar, observe a redução de tamanho na versão minificada [../build/remendux-min.js] para a versão concatenada [../output/remendux.js ]. A versão final ficou com 30% do tamanho com documentação e identação.

Buildfile: C:\workspace\remendux\build-yui.xml
     [echo] Building output
clean:
    [mkdir] Created dir: C:\workspace\remendux\build
    [mkdir] Created dir: C:\workspace\remendux\output
main:
[yui-compressor]
 [30%] remendux.js [5775] ---> remendux-min.js [1734]
[yui-compressor]
 [JavaScript] Compressed 1 files to 30% (5KB to 1KB, saving 4KB)
[yui-compressor]
 [CSS] No files to compress, or all files already up to date
[yui-compressor]
 Compressed 1 files to 30% (5KB to 1KB, saving 4KB)
BUILD SUCCESSFUL
Total time: 12 seconds

Posted in Ajax, Engenharia de Software, Frameworks, High Performance, JavaScript, JSON, Melhores práticas, Otimização, Scripting, Web Development, YUI ~ No Comments

CCT Março 2008 – DSL com Rhino

{ March 16th, 2008 }


cmilfont

Autor: cmilfont

Confirmamos mais um evento de alto nível do CEJUG no CCT de Março. Destaque para a excelente palestra ministrada pelo Dr. Vasco Furtado (blog aqui) sobre o Wikicrimes. A última palestra foi do coordenador Hildeberto que voltou da Bélgica para uns dias no Brasil.



Leonardo Ayres, Rafael Carneiro, Christiano Milfont, Vasco Furtado e Hildeberto Mendonça. Mais fotos do evento.

Posted in cejug, DSL, Fluent Interface, JSR223, Linguagens, palestras, Scripting ~ 1 Comment