Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
code:tools [2010/08/05 12:54] alfred |
code:tools [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== Recursos ====== | ====== Recursos ====== | ||
| Sobre como utilizar pequeños programas, IDE de desarrollo, pequeños apuntes generales, "//tips & tricks//"... | Sobre como utilizar pequeños programas, IDE de desarrollo, pequeños apuntes generales, "//tips & tricks//"... | ||
| + | ===== Arquitecturas ===== | ||
| + | * Arquitectura de una web que sirve datos a tiempo real: {{:code:tools:how_we_built_filmgrain_part_1_of_2_filmgrain_blog.pdf|Documento 1}} y {{:code:tools:how_we_built_filmgrain_part_2_of_2_filmgrain_blog.pdf|Documento 2}}. | ||
| ===== Comandos Linux ===== | ===== Comandos Linux ===== | ||
| Línea 57: | Línea 58: | ||
| ===== Herramientas ===== | ===== Herramientas ===== | ||
| + | ==== Repositorio de páginas ==== | ||
| - | + | ^ Herramienta ^ Uso ^ Lenguaje ^ | |
| - | + | | [[otros:waf|waf]] | Sistema de construcción | Python | | |
| - | + | | [[otros:chromecons|Consola de Chrome]] | Intérprete de JavaScript | JavaScript | | |
| + | | [[otros:fabric|Fabric]] | Herramienta para lanzar comandos vía Python | Python | | ||
| + | | [[otros:vagrant|Vagrant]] | Tool to create development environtments | - | | ||
| + | | [[otros:factoryboy|Factory Boy]] | Fixtures replacement tools | Python | | ||
| ==== Documentando C++ con DoxyS ==== | ==== Documentando C++ con DoxyS ==== | ||
| Línea 174: | Línea 178: | ||
| <property file="${user.home}/ant-global.properties"/><property file="${basedir}/local.properties"/> | <property file="${user.home}/ant-global.properties"/><property file="${basedir}/local.properties"/> | ||
| </code> | </code> | ||
| + | |||
| Línea 185: | Línea 190: | ||
| * Cuando instales un repositorio, por ejemplo el de DirectX, se te añadirán al directorio lib ficheros .a, estos son librerías estáticas con nombre del estilo libxxx.a. Para linkarlas al proyecto tendremos que añadir ese 'xxx', no todo el nombre del archivo; por ejemplo, para añadir ''libddraw.a'' añadiremos al linker ''-lddraw''. | * Cuando instales un repositorio, por ejemplo el de DirectX, se te añadirán al directorio lib ficheros .a, estos son librerías estáticas con nombre del estilo libxxx.a. Para linkarlas al proyecto tendremos que añadir ese 'xxx', no todo el nombre del archivo; por ejemplo, para añadir ''libddraw.a'' añadiremos al linker ''-lddraw''. | ||
| - | ==== cURL ==== | ||
| - | ===== Conceptos ===== | + | ==== Herramientas para C ==== |
| + | * Un detector de memory leaks es ''valgrind''. Existen GUIs tales como ''Alleyoop'' o ''valkyrie''. | ||
| + | * ''gProf'' es un analizador de código. | ||
| + | ==== cURL ==== | ||
| + | Es una herramienta de consola para utilizar protocolos que permitan sintaxis URL (FTP, FTPS, LDAP, HTTP...). Es una buena herramienta para simular acciones sobre el navegador web, además existe ''libcurl'', una API que permite arreglar cURL a desarrollos. | ||
| + | === Descargar contenido de una URL === | ||
| + | <code> | ||
| + | curl url | ||
| + | </code> | ||
| + | === Enviar parámetros POST === | ||
| + | <code> | ||
| + | curl -X POST -d "param1=value1¶m2=value2" http://127.0.0.1:8080/group/ | ||
| + | </code> | ||
| + | === Enviar DELETE === | ||
| + | <code> | ||
| + | curl -X DELETE http://127.0.0.1:5000/servers/1 | ||
| + | </code> | ||
| + | ==== SSH ==== | ||
| + | El comando ''ssh'' es usado para acceder remotamente a una consola Linux. | ||
| + | * ''ssh 192.168.1.100'' - Accede al host 192.168.1.100 con el usuario actualmente validado. | ||
| + | * ''ssh 192.168.1.100 -l root'' - Accede al host 192.168.1.100 con el usuario indicado (root). | ||
| + | Existen servidores de ssh que podemos instalar en nuestras máquinas, como por ejemplo: //dropbear// para pequeños dispositivos o el //openssh-server//. \\ | ||
| + | Podemos montar dispositivos remotos con el protocolo ''sftp''. | ||
| - | ==== URI ==== | + | === Claves === |
| - | Identificador de dispositivo formado por: | + | Podemos conectar a un host remoto mediante un archivo clave .pem: |
| - | * Esquema: mecanismo de acceso o protocolo: (''urn:, tag:, cid:, http:, mailto:, ftp:...''). | + | <code> |
| - | * Autoridad: nombre que lo identifica (''<nowiki>//es.wikipedia.org</nowiki>''). | + | $ ssh -i skey.pem ubuntu@ec2-54-218-73-84.us-west-2.compute.amazonaws.com |
| - | * Ruta: Información en forma jerárquica, que identifica la localización dentro de la autoridad (''/wiki/Uniform_Resource_Identifier''). | + | </code> |
| - | * Consulta: Información adicional, usualmente en forma de pares "clave=valor". Su comienzo es marcado por el carácter '?'. | + | |
| - | * Fragmento: Permite identificar una parte o vista. Su comienzo está marcado por '#'. | + | |
| - | + | ||
| - | ==== Sockets ==== | + | |
| - | Un socket es un objeto que engloba el conjunto de elementos: dirección, puerto y protocolo. Gracias a los sockets puede existir comunicación entre dos ordenadores diferentes. | + | |
| - | === Protocolos === | + | |
| - | * **TCP**: Protocolo que garantiza que los datos han sido entregados correctamente (es decir, si no es así ocurre un error en el envio). Mediante el cual se utilizan aplicaciones HTTP, SMTP, SSH, FTP... | + | |
| - | * **UDP**: Protocolo basado en datagramas (paquete independiente, cada uno con información del emisor), permite el envio sin necesidad de establecer una conexión. No tiene confirmación (ni de entrega ni de recepción) ni control de flujo. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Protocolo HTTP ==== | + | |
| - | * [[http://tools.ietf.org/html/rfc2616|Documento explicativo del protocolo HTTP/1.1]] | + | |
| - | === Métodos === | + | |
| - | * **OPTIONS**: Utilizado generalmente para pedir cuales de los demás métodos están soportados por el servidor. | + | |
| - | * **GET**: Utilizado para realizar una petición de datos. | + | |
| - | * **HEAD**: Utilizado para realizar una petición de la cabecera de los datos. | + | |
| - | * **POST**: Método utilizado para enviar una modificación de datos al servidor. | + | |
| - | * **PUT**: Método utilizado para enviar nuevos datos al servidor. | + | |
| - | * **DELETE**: Método utilizado para borrar datos del servidor. | + | |
| - | * **TRACE**: No se utiliza debido a que representa una vulnerabilidad, pero permite comprobar la correcta respuesta del servidor. | + | |
| - | + | ||
| - | === Content-Type === | + | |
| - | En el header de una respuesta http enviaremos el tipo de datos que devolvemos. Los más conocidos: | + | |
| - | * ''text/plain'': Texto plano. | + | |
| - | * ''text/html'': Texto html. | + | |
| - | * ''application/json'': Para JSON. | + | |
| - | * ''image/jpeg'', ''image/gif'', ''image/png'': Para los distintos tipos de imágenes. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Servicios Web ==== | + | |
| - | El concepto de servicio web se basa en el intercambio de información entre aplicaciones mediante HTTP, como si fuese una página web. | + | |
| - | === Protocolos === | + | |
| - | * [[http://en.wikipedia.org/wiki/SOAP_%28protocol%29|SOAP]], protocolo de intercambio de datos mediante XML. | + | |
| - | * [[http://es.wikipedia.org/wiki/RPC|RPC]] que según el formato de retorno puede ser [[http://es.wikipedia.org/wiki/XML-RPC|XML-RPC]] para XML, [[http://en.wikipedia.org/wiki/JSON-RPC|JSON-RPC]] para JSON... | + | |
| - | * [[http://en.wikipedia.org/wiki/SOAPjr|SOAPjr]] mezcla de SOAP y JSON-RPC. | + | |
| - | === Formatos de retorno === | + | |
| - | Puede retornar cualquier formato, sobretodo si es un servicio web [[code:rest|REST]]. | + | |
| - | * [[tags:json|JSON]], formato directamente reconocible por JavaScript. | + | |
| - | * [[http://en.wikipedia.org/wiki/JsonML|JsonML]], mezcla de JSON y XML. | + | |
| - | + | ||
| - | ==== Generales ==== | + | |
| - | * **Bytecode**: Código intermedio entre el código máquina y el de de programación. Generalmente se tratra como si fuese un fichero binario en el que hay un programa ejecutable. Suelen necesitar un intérprete (generalmente llamado máquina virtual) y su ventaja es la portabilidad a diferentes arquitecturas y plataformas. | + | |
| - | * **JIT** (//Just In Time//): Es como se le llama a la compilación en tiempo de ejecución (o también traducción dinámica). Cuando se compila en tiempo de ejecución la compilación a bytecode es el primer paso, reduciendo el código fuente a una forma portable y optimizada, esta acción puede realizarse a un nivel total del programa o al de las funciones, es en este último caso que es llamado JIT, cuando se compila una función justo a tiempo de ser llamada. | + | |
| + | === Configuración === | ||
| + | Aunque también podríamos añadir esta clave al archivo de configuración de ssh y acceder mediante un alias: | ||
| + | <code> | ||
| + | $ cd ~/.ssh | ||
| + | $ cp skey.pem ~/.ssh/ | ||
| + | $ chmod 400 ~/.ssh/skey.pem | ||
| + | $ chmod 700 ~/.ssh | ||
| + | $ gedit ~/.ssh/config | ||
| + | </code> | ||
| + | Esto sería su contenido: | ||
| + | <code> | ||
| + | Host awshost1 | ||
| + | HostName ec2-54-218-35-71.us-west-2.compute.amazonaws.com | ||
| + | User ubuntu | ||
| + | IdentityFile "~/.ssh/skey.pem" | ||
| + | </code> | ||
| + | Y así su conexión: | ||
| + | <code> | ||
| + | $ ssh awshost1 | ||
| + | </code> | ||
| + | === Copia de archivos === | ||
| ===== Visual Studio ===== | ===== Visual Studio ===== | ||