Archivos por Etiqueta: javascript

Amazon: Simple WhatIsMyIP with Lambda and API-Gateway

Un ejemplo de como montar un sencillo WhatIsMyIP usando Amazon Lambda con el Backend de NodeJS y API-Gateway.

El código del Lambda (Runtime: NodeJS, Handler: index.handler, Role: Basic Execution Role):

exports.handler = function(event, context) {
    context.succeed({ "ip": event.ip });
};

Aunque para que sea funcional tienes que publicarlo a través de API-Gateway. Crear un resource, por ejemplo “text” y un metodo (GET). Tambien hacen falta algunas configuraciones de integración:

Integration Request (Content-Type: application/json, Mapping Template):

{
"ip" : "$context.identity.sourceIp"
}

Integration Response (Status 200, Content-Type: text/plain, Mapping Template):

#set($inputRoot = $input.path('$'))
$inputRoot.ip

Method Response (Status 200, Content-Type: text/plain, Model: Empty).

Si prefieres respuestas json en realidad es más sencillo aún, podrías ahorrarte la customización de la parte del Integration Response y el Method Response (Por defecto los mime-types ya son application/json y el Integration es Output passthrough).

Solo tienes que publicarla en un stage (“prod” por ejemplo) y al invocar la URL con curl tendrás algo como esto:

# curl -sL https://xxxxxxxxxx.execute-api.eu-west-1.amazonaws.com/prod/text
219.12.34.56

NOTA-1: Si clonas un API, es posible que deje de funcionar (bug?) y tendrás que ir al “Integration Request” y volver a asignar la función, aunque aparezca la correcta, para que le asigne los permisos de ejecución.
NOTA-2: Si vas a usar Lambdas o API-Gateway para datos “binarios” (todo lo que no sea texto, de momento no está soportado), verás tus datos corromperse.

Referencias:
API-Gateway Developer Guide
API-Gateway Developer Guide: Mapping Template Reference
Lambda Developer Guide

JavaScript copyToClipboard

Para copiar algo al clipboard desde JavaScript

function copyToClipboard(textToCopy) {
	if (window.clipboardData) { // IE
		window.clipboardData.setData("Text", textToCopy);
	}
	else if (typeof InstallTrigger !== 'undefined') { // FF
		// from http://developer.mozilla.org/en/docs/Using_the_Clipboard
		var gClipboardHelper = Components
			.classes["@mozilla.org/widget/clipboardhelper;1"]
			.getService(Components.interfaces.nsIClipboardHelper);
		gClipboardHelper.copyString(textToCopy);
	}
}

StringBuilder on JavaScript

Example 1: Inefficient Concatenation With “+=”

var sb = '';
for (var i = 0; i < 1000000; i++) {
    sb += '.123456789';
}
Result: 188ms

Example 2: Efficient Concatenation With “Array.join()”

var sb = [];
for (var i = 0; i < 1000000; i++) {
    sb.push('.123456789');
}
sb = sb.join('');
Result: 51ms

StringBuilder Object

var StringBuilder = function() {
    this.sb = [];
};

StringBuilder.prototype = {
    append: function(s) {
        this.sb.push(s);
        return this;
    },
    toString: function() {
        return this.sb.join('');
    }
};

Reference:
Array.join()

Processing.js: Processing visual programming language

Processing.js is the sister project of the popular Processing visual programming language, designed for the web. Processing.js makes your data visualizations, digital art, interactive animations, educational graphs, video games, etc. work using web standards and without any plug-ins. You write code using the Processing language, include it in your web page, and Processing.js does the rest. It’s not magic, but almost.

Processing started as an open source programming language based on Java to help the electronic arts and visual design communities learn the basics of computer programming in a visual context. Processing.js takes this to the next level, allowing Processing code to be run by any HTML5 compatible browser, including current versions of Firefox, Safari, Chrome, Opera, and Internet Explorer. Processing.js brings the best of visual programming to the web, both for Processing and web developers.

vía Processing.js.

Blazing fast node.js: 10 performance tips from LinkedIn Mobile (link)

In a previous post, we discussed how we test LinkedIn’s mobile stack, including our Node.js mobile server. Today, we’ll tell you how we make this mobile server fast. Here are our top 10 performance takeaways for working with Node.js

1. Avoid synchronous code
2. Turn off socket pooling
3. Don’t use Node.js for static assets
4. Render on the client-side
5. Use gzip
6. Go parallel
7. Go session-free
8. Use binary modules
9. Use standard V8 JavaScript instead of client-side libraries
10. Keep your code small and light

Fuente:
Blazing fast node.js: 10 performance tips from LinkedIn Mobile | LinkedIn Engineering.

Cuan segura es mi contraseña? (link)

Para los que usan el PIN de la VISA o su cumpleaños como contraseña! :-P

How Secure Is My Password?

Cuan segura es mi contraseña? Averigüe cuánto tiempo se tardaría un PC de escritorio estándar en descifrar la contraseña. (usa JavaScrpt “local” del navegador, no manda los datos a ningun sitio)
A %d blogueros les gusta esto: