Skip to content

Tag: JavaScript

Chain of Promises Example

const f1 = async() => {
    setTimeout( () => {
        console.log("f1");
    }, 100)
};

const f2 = async() => {
    setTimeout( () => {
        console.log("f2");
    }, 100)
};

const f3 = async() => {
    return new Promise((resolve, reject) => {
        reject("f3");
    });
};

const f4 = async() => {
    setTimeout( () => {
        console.log("f4");
    }, 100)
};

const workflow = async () => {
    await f1();
    await f2();
    await f3();
    await f4();
};

workflow().catch((error)=>{
    console.error(error);
})

The Prime Conspiracy visualized over an Ulam Spiral in HTML5

Click here for the HTML5 demo in Javacript

This is a visualization inspired by the article Mathematicians Discover Prime Conspiracy by Erica Klarreich on Quanta Magazine.

Previously I wrote Twin primes visualized over an Ulam Spiral in HTML5, I reused the code and added the coloring as:

  • All primes ending in 1 are green.
  • All primes ending in 3 are red.
  • All primes ending in 7 are blue.
  • The prime 2 is yellow.
  • The prime 5 is gray.

Here is the result with each square with size 4 pixels:

prime conspiracy ulam

Here is the same with each square of size 2 pixels:

prime_conspiracy_ulam_2px

And with 1 pixels:

prime_conspiracy_ulam_1px

As before, the source code (prime_conspiracy.html) is available at github.com/silveira/ulam.

Twin primes visualized over an Ulam Spiral in HTML5

Click here for the HTML5 demo in Javacript.

Two numbers p and q are twin primes if they are primes and |p| = 2.

The Ulam spiral, discovered by the mathematician Stanislaw Ulam in 1963, is a simple method to visualize prim numbers. Put the natural numbers in a spiral and draw only the ones which are primes.

In the visualization below, I’m drawing the prime numbers in two shades of green. Twin primes in light green and regular primes in dark green.

twin primes ulam spiral

The “vortex effect” is created because every twin prime is followed by its twin two steps before in the spiral. Below the same image with the zoom in the center:

twin primes ulam spiralIn the HTML5 demo in Javacriptthe spiral is draw dynamically in a image (warning: it can be a little bit computationally intensive for your machine). You can play with the source-code on Github, and change the parameters. If you are looking for a plain ulam spiral, here it is one.

Update (May 30, 2013): This post was featured on the Blog of Math Blogs.

Update (November 25, 2013): I created a standalone Github project for this code.
https://github.com/silveira/ulam

simple HTML5 animation: clouds over background

If you are reading this text, sorry, your browser don’t support HTML5 Canvas (or maybe I did something wrong).

Code:

var canvas;
var ctx;

var background;
var width = 300;
var height = 200;

var cloud;
var cloud_x;

function init() {
	canvas = document.getElementById("cloud_demo_canvas");
	width = canvas.width;
	height = canvas.height;
	ctx = canvas.getContext("2d");
	
	// init background 
	background = new Image();
	background.src = 'http://silveiraneto.net/wp-content/uploads/2011/06/forest.png';
	
	// init cloud
	cloud = new Image();
	cloud.src = 'http://silveiraneto.net/wp-content/uploads/2011/06/cloud.png';
	cloud.onload = function(){
		cloud_x = -cloud.width;
	};
	
	return setInterval(main_loop, 10);
}

function update(){
	cloud_x += 0.3;
	if (cloud_x > width ) {
		cloud_x = -cloud.width;
	}
}

function draw() {
	ctx.drawImage(background,0,0);
	ctx.drawImage(cloud, cloud_x, 0);
}

function main_loop() {
	draw();
	update();
}

init();

HTML code:

Alternative text if browser don't support canvas.

Credits and notes:

Java, showing script engines

A simple code to show the script engines installed in your system.

As it uses the JSR-223 you need at least java 6.

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngineFactory;
import java.util.List;

public class ListEngines {
    public static void main(String[] args){
	ScriptEngineManager manager = new ScriptEngineManager();
	List  engines = manager.getEngineFactories();
	for(ScriptEngineFactory engine: engines){
		String name = engine.getEngineName();
		String lang = engine.getLanguageName();
		String ver = engine.getLanguageVersion();
		System.out.println(name+" "+lang+" "+ver);
	}
    }
}

$ java -version
java version “1.6.0_0”
OpenJDK Runtime Environment (build 1.6.0_0-b11)
OpenJDK Client VM (build 1.6.0_0-b11, mixed mode, sharing)
$ javac ListEngines.java
$ java ListEngines
Mozilla Rhino ECMAScript 1.6

For now I just have Rhino ECMAScript (JavaScript) engine accessible that comes with Java 6. I’m trying now to call Jython and JRuby code.

Anúncio do NetBeans 6.5 Beta

O Netbeans.org anunciou a disponibilidade do NetBeans IDE 6.5 Beta. Abaixo a tradução do anúncio:

O NetBeans IDE 6.5 introduz várias novas funcionalidades, incluindo uma IDE robusta para PHP, deputação de JavaScript para o Firefox e IE, e suporte a Groovy e Grails. Esse lançamento também inclui várias melhorias para o desenvolvimento em Java, Ruby e Rails, e C/C++. Dentre as melhorias no Java destacam-se: suporte nativo ao Hibernate, importação de projetos do Eclipse, e compilação no salvamento.

Links:

Outros destaques:

  • PHP
    • Completação de código
    • Consertos rápidos e checagem semântica
    • Suporte a FTP
    • Depuração com Xdebug
    • Suporte a Web Services populares
  • Ajax/JavaScript
    • Suporte a depuração no Firefox e IE
    • Monitoramento cliente de HTTP
    • Vêm com as bibliotecas mais populares de JavaScript
  • Java
    • Suporte a Groovy/Grails
    • Compilação/Deploy no momento do salvamento
    • Importação e sincronização de projetos do Eclipse
    • Suporte nativo a Hibernate
    • Gerador de CRUD JSF agora com Ajax
  • Banco de Dados
    • Melhorias no editor
  • C/C++
    • Melhorias na completação de código e destaque de erros
    • Desenvolvimento remoto
  • Ruby
    • Suporte aos Testes Ruby
    • Melhoria no suporte a Rake
  • GlassFish V3 “Prelude”
    • Menor tamanho, inicialização e deployment mais rápido
    • Suporte a scripting, inclusive jRuby

O NetBeans IDE 6.5 final está planejado para ser lançado em Outubro de 2008. Como sempre, é bem vindo e nós encorajamos seu feedback sobre sua experiência usando a IDE NetBeans. Visite nossas listas de email ou faça uma postagem no seu blog.

Ilex Paraguariensis

Chimarrão Gaúcho
Creative Commons image from Flickr.

From days 15 to 20 from April, I’ll be in Porto Alegre. I’ll participate on FISL (an old dream) with the presentation “Netbeans: beyond Java”. I’d like to talk about how you can use Netbeans as a great IDE for languages others than Java like Ruby, PHP, JavaFX, Javascript, Python, etc.

Probably I’ll be able to participate also on two events before FISL (about Opensolaris and Java ME). 🙂

So … how chimarrão tastes?

Matemática para a web

Figura - Quadro azul

Eu estive pesquisando algumas ferramentas de matemática para a web a pedido do professor Romildo, professor do departamento de matemática, que está desenvolvendo um sistema web.

É mais ou menos assim:

  • Um conjunto de professores vai criar testes e questões para outros professores espalhados por todo o estado.
  • Para criar e ler as questões os professores vão usar o próprio sistema.
  • Tem que ser fácil de usar, compatível e leve.
  • As questões são de matemática do ensino fundamental e médio.
  • Tecnologias livres.

Algumas ferramentas que eu experimentei, há links para as páginas de exemplo de todos os editores:

exemplo do mathdonalds
Exemplo de editor de fórmulas mathdonalds.

mathdonalds.com: você edita as fórmulas com um editor javascript, ou seja, que roda no próprio browser e depois as fórmulas são exportadas para arquivos de imagem PNG. O editor de fórmulas funcionou bem apesar de não ser muito intuitivo. Eu não consegui fazer algumas fórmulas um pouco mais complexas como raiz quadrada. No site há exemplos de como integrar com outros editores ricos como o TinyMCE ou o FCKeditor. Porém, o editor de fórmulas só funciona no navegador Mozila Firefox e só funciona no Internet Explorer usando um plugin. Não ficou claro pra mim se ele é um software livre ou qual é sua licença. Uma vantagem é que as fórmulas depois de prontas ficam em formato PNG e portanto podem ser vistas em qualquer navegador.

Exemplo do editor do xinha
Exemplo do editor de fórmulas do Xinha.

Xinha: o xinha é um editor rico para web, como o TinyMCE ou o FCKeditor. E também é livre. A diferença é que ele já vem com um grande número de plugins, um deles é um editor de fórmulas. Ao contrario do mathdonalds, você não edita as fórmulas direto na fórmula. Você edita as fórmulas num input em texto plano numa certa sintaxe e vê um preview da fórmula na sua direita. É fácil de usar porque há uma grande tabela com as fórmulas para você clicar e usar. No final ele gera um código em MathML. MathML é uma notação XML para fórmulas. Ela é suportada por praticamente dos softwares de suíte de escritório e em quase todos os navegadores, mas não no Internet Explorer onde é necessário um plugin.

Exemplo do dragmath
Exemplo do DragMath

DragMath: é um editor de fórmulas em Java, no formato de applet. A proposta dele é de criar fórmulas simplesmente arrastando e soltando. Ele é um software livre e certamente é fácil de personalizar. Mas ele não funcionou bem comigo, eu tive dificuldade para criar as fórmulas. Uma vantagem dele é que ele exporta as fórmulas para LATEX, MathML e vários outros formatos.

ascii math

asciimathml.js: Ele transforma de uma notação própria para mathML. Funciona mais ou menos como o editor do xinha, você tem um preview do que está acontencedo. Ele é útil para escrever fórmulas usando uma notação fácil, dentro de um texto e depois abri-lo no browser, mas a página tem que ter um certo javascript integrada.

Das opções que eu olhei a que me agradou mais foi a do mathdonalds.