lunes, 27 de agosto de 2007

Macros Vim

Para grabar la macro:
  • q[letra (= nombre macro)] - Inicia el proceso de grabación
  • ('recording' aparece en la parte inferior de la pantalla)
  • Realizar los pasos que conforman la macro
  • q - Finaliza el proceso de grabación
Para ejecutar la macro:
  • @[letra nombre macro]

sábado, 4 de agosto de 2007

Archivos Hosts

  • Unix: /etc/hosts
  • Win 95/98/Me: c:\Windows\Hosts
  • Windows NT/2000: c:\WINNT\System32\drivers\etc
  • Windows XP: c:\WINDOWS\system32\drivers\etc

Wget con proxy

$ export http-proxy="host:proxy"
$ wget --proxy=on --proxy-user=[user] --proxy-passwd=[password] http://...

Filtros para TCP flags para Wireshark/libpcap

tcp[13] = 2 : paquetes solo con SYN ajustado.
tcp[13] & 0x02 = 2 : paquetes con SYN ajustado (sin importar el resto).
tcp[13] & 0x01 = 0x01 : paquetes con FIN ajustado.
tcp[13] & 0x04 = 0x04 : paquetes con RST ajustado.

Protocolo de serialización de objetos de Java

Documento de especificación: "Object Serialization Stream Protocol".

Terminal symbols and constants:
 final static short STREAM_MAGIC = (short)0xaced;
final static short STREAM_VERSION = 5;
final static byte TC_NULL = (byte)0x70;
final static byte TC_REFERENCE = (byte)0x71;
final static byte TC_CLASSDESC = (byte)0x72;
final static byte TC_OBJECT = (byte)0x73;
final static byte TC_STRING = (byte)0x74;
final static byte TC_ARRAY = (byte)0x75;
final static byte TC_CLASS = (byte)0x76;
final static byte TC_BLOCKDATA = (byte)0x77;
final static byte TC_ENDBLOCKDATA = (byte)0x78;
final static byte TC_RESET = (byte)0x79;
final static byte TC_BLOCKDATALONG = (byte)0x7A;
final static byte TC_EXCEPTION = (byte)0x7B;
final static byte TC_LONGSTRING = (byte) 0x7C;
final static byte TC_PROXYCLASSDESC = (byte) 0x7D;
...


Ej:
"`aced0005`(1) s(2) r(3) `000d`AllPrintString(4) `140a`24`8660a04(5) 02(6) 0009(7)..."
(1) Header identifying the stream.
(2) TC_OBJECT: start new object -> `s = 73
(3) TC_CLASSDESC: start new class def -> r = 72
(4) Name of the class: UTF-8 string
(5) GUID of the class
(6) SC_SERIALIZABLE (class flag)
(7) Number of class members: 9.

Ej:
AC ED 00 05 | 73 72b 00 1D | ...

Modos de Profiler de Netbeans 5

Attachment modes:
  • Dynamic: para hacer profiling a una aplicación local que ya se esté ejecutando y que corra sobre una JVM 1.4 modificada (JFluid).
  • Direct: para hacer profiling a una aplicación local o remota desde antes que se ejecute cualquier bytecode y que corre sobre una JVM 5/6.

VisualGC con Jvmstat

VisualGC es una herramienta que permite visualizar gráficamente el Heap de una JVM 1.4 ó 1.5, sus distintas zonas y el grado de ocupación de cada una. Para mas información sobre el Heap, sus zonas y el GC, referirse a Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine.

Herramientas útiles:
  • bin/jps: incluida en JDK 5.
  • bin/jstatd: incluida en JDK 5.
  • visualgc: no incluida en JDK 5. Incluida en la distribución de Sun de Jvmstat.
bin/jps permite listar las JVMs 1.4 o 1.5 ejecutándose localmente y su identificador único.

bin/jstatd
permite iniciar un servidor para monitoreo remoto o local de las JVMs locales, ya sean estas 1.4 o 1.5. el único cliente para este servidor que he usado, es visualgc. jstatd Necesita un archivo de permisos para determinar ciertas posibilidades de sus clientes. Un ejemplo de archivo totalmente permisivo es:

/ruta/jstatd.all.policy:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
}

El servicio jstatd se iniciaría de la siguiente forma:

jstatd -J-Djava.security.policy=/ruta/jstatd.all.policy

La herramiento VisualGC no se incluye en el JDK 5. Se incluye en la distribución de Jvmstat de Sun. Lo único que he usado de esa distribución es el visualcg. Su uso es:

visualgc [id de JVM como la reporta /bin/jps]@host

Sintaxis Java en Vim

set sm
set ai
let java_highlight_all=1
let java_highlight_functions="style"
let java_allow_cpp_keywords=1

Carga de recursos como flujos desde el Classpath

Recurso: /some/pkg/resourse.properties
  • ClassLoader.getResourceAsStream(...)
    • Rutas separadas por '/'
    • Todas las rutas son absolutas.
    • Falla silenciosa (retorna null).
    • Ejemplo: this.getClass().getClassLoader().getResourceAsStream("/some/pkg/resourse.properties")
  • Class.getResourceAsStream(...)
    • Rutas separadas por '/'
    • Las rutas sonn absolutas o relativas dependiendo de presencia de '/' inicial.
    • Falla silenciosa (retorna null).
    • Ejemplo: this.getClass()..getResourceAsStream("resourse.properties")
  • ResourceBundle.getBundle():
    • Nombres separados por '.'
    • Todos los nombres son absolutos.
    • Sufijo .properties implícito.
    • Falla con java.util.MissingResourceException
    • Ejemplo: ResourceBundle.getBundle("some.pkg.resource")

JMeter: Web Test Plan sencillo

  • Usuarios simulados (Thread Group).
    • Test Plan -> Add -> Thread Group
      • Nombre.
      • Número de hilos.
      • Ramp-up period.
      • Loop count.
  • Valores por defecto de todas las peticiones HTTP.
    • [Nombre Thread Group] -> Add -> ConfigElement -> HTTP Request Default.
  • Soporte para cookies.
    • [Nombre Thread Group] -> Add -> ConfigElement -> HTTP Cookie Manager.
  • Peticiones HTTP.
    • [Nombre Thread Group] -> Add -> Sampler -> Http Request
  • Listener para ver/almacenar los resultados de la prueba.
    • [Nombre Thread Group] -> Add -> Listener -> Graph Result

JVM Proxy

-Dhttp.proxyHost=[PROXY_HOST] -Dhttp.proxyPort=[PROXY_PORT]

Inserción de caractertes de nueva línea en Vim

Ctrl-v Ctrl-m