domingo, 9 de junio de 2013

Cómo añadir un repositorio de git a un proyecto usando composer

Desde hace un tiempo symfony2 usa composer para gestionar las dependencias y la mayoría de bundles están ya en este formato. Pero que ocurre cuando necesitamos hacer uso de una librería que no hace uso de composer?

En mi caso necesitaba hacer uso de unas librerías para el envío de notificaciones push en IOS:

https://github.com/duccio/ApnsPHP

Este el aspecto mas o menos del fichero composer.json de un proyecto de symfony

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
{
    "name": "symfony/framework-standard-edition",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" }
    }
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.2.*",
        "doctrine/orm": "~2.2,>=2.2.3",
        "doctrine/doctrine-bundle": "1.2.*",
        "doctrine/mongodb-odm": "1.0.*@dev",
        "doctrine/mongodb": "1.*",
        "doctrine/mongodb-odm-bundle": "3.0.*@dev",
        "twig/extensions": "1.0.*",
        "symfony/assetic-bundle": "2.1.*",
        "symfony/swiftmailer-bundle": "2.2.*",
        "symfony/monolog-bundle": "2.2.*",
        "sensio/distribution-bundle": "2.2.*",
        "sensio/framework-extra-bundle": "2.2.*",
        "sensio/generator-bundle": "2.2.*",
        "jms/security-extra-bundle": "1.4.*"
    },
    "scripts": {
        "post-install-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "minimum-stability": "alpha",
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "branch-alias": {
            "dev-master": "2.2-dev"
        }
    }
}


Así es como queda después de añadir nuestro repositorio git :


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
{
    "name": "symfony/framework-standard-edition",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/", "ApnsPHP_" : "vendor/duccio/ApnsPHP" }
    },
    "repositories": [{
        "type": "package",
        "package": {
            "name": "duccio/ApnsPHP",
            "version": "1.0.0",
            "source": {
                    "url": "https://github.com/duccio/ApnsPHP.git",
                "type": "git",
            "reference": "master"
         }
      }
    }],
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.2.*",
        "doctrine/orm": "~2.2,>=2.2.3",
        "doctrine/doctrine-bundle": "1.2.*",
        "doctrine/mongodb-odm": "1.0.*@dev",
        "doctrine/mongodb": "1.*",
        "doctrine/mongodb-odm-bundle": "3.0.*@dev",
        "twig/extensions": "1.0.*",
        "symfony/assetic-bundle": "2.1.*",
        "symfony/swiftmailer-bundle": "2.2.*",
        "symfony/monolog-bundle": "2.2.*",
        "sensio/distribution-bundle": "2.2.*",
        "sensio/framework-extra-bundle": "2.2.*",
        "sensio/generator-bundle": "2.2.*",
        "jms/security-extra-bundle": "1.4.*",
        "duccio/ApnsPHP" : "*"
    },
    "scripts": {
        "post-install-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "minimum-stability": "alpha",
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "branch-alias": {
            "dev-master": "2.2-dev"
        }
    }
}


Se hacen varios pasos

1 - se declara el repositorio (linea 7 hasta la 18).
2 - se pone como dependencia del  proyecto( linea 35 ).
3 - se declara el autoload de la librería en cuestión (linea 5).


Podéis ver el artículo original donde me documenté aquí (¡Gracias Pedro!)

martes, 12 de enero de 2010

A partir de hoy Red y Libertad


Consideramos imprescindible la retirada de la disposición final primera de la Ley de Economía Sostenible por los siguientes motivos:

1 -Viola los derechos constitucionales en los que se ha de basar un estado democrático en especial la presunción de inocencia, libertad de expresión, privacidad, inviolabilidad domiciliaria, tutela judicial efectiva, libertad de mercado, protección de consumidoras y consumidores, entre otros.

2 - Genera para la Internet un estado de excepción en el cual la ciudadanía será tratada mediante procedimientos administrativos sumarísimos reservados por la Audiencia Nacional a narcotraficantes y terroristas.

3 - Establece un procedimiento punitivo “a la carta” para casos en los que los tribunales ya han manifestado que no constituían delito, implicando incluso la necesidad de modificar al menos 4 leyes, una de ellas orgánica. Esto conlleva un cambio radical en el sistema jurídico y una fuente de inseguridad para el sector de las TIC (Tecnología de la Información y la Comunicación). Recordamos, en este sentido, que el intercambio de conocimiento y cultura en la red es un motor económico importante para salir de la crisis como se ha demostrado ampliamente.

4 - Los mecanismos preventivos urgentes de los que dispone la ley y la judicatura son para proteger a toda ciudadanía frente a riesgos tan graves como los que afectan a la salud pública. El gobierno pretende utilizar estos mismos mecanismos de protección global para beneficiar intereses particulares frente a la ciudadanía.
Además la normativa introducirá el concepto de "lucro indirecto", es decir: a mí me pueden cerrrar el blog porque "promociono" a uno que "promociona" a otro que linka a un tercero que hace negocios presuntamente ilícitos

5 - Recordamos que la propiedad intelectual no es un derecho fundamental contrariamente a las declaraciones del Ministro de Justicia, Francisco Caamaño. Lo que es un derecho fundamental es el derecho a la producción literaria y artística.

6 - De acuerdo con las declaraciones de la Ministra de Cultura, esta disposición se utilizará exclusivamente para cerrar 200 webs que presuntamente están atentando contra los derechos de autor. Entendemos que si éste es el objetivo de la disposición, no es necesaria, ya que con la legislación actual existen procedimientos que permiten actuar contra webs, incluso con medidas cautelares, cuando presuntamente se esté incumpliendo la legalidad. Por lo que no queda sino recelar de las verdaderas intenciones que la motivan ya que lo único que añade a la legislación actual es el hecho de dejar la ciudadanía en una situación de grave indefensión jurídica en el entorno digital.

7 - Finalmente consideramos que la propuesta del gobierno no sólo es un despilfarro de recursos sino que será absolutamente ineficaz en sus presuntos propósitos y deja patente la absoluta incapacidad por parte del ejecutivo de entender los tiempos y motores de la Era Digital.

La disposición es una concesión más a la vieja industria del entretenimiento en detrimento de los derechos fundamentales de la ciudadanía en la era digital.

La ciudadanía no puede permitir de ninguna manera que sigan los intentos de vulnerar derechos fundamentales de las personas, sin la debida tutela judicial efectiva, para proteger derechos de menor rango como la propiedad intelectual. Dicha circunstancia ya fué aclarada con el dictado de inconstitucionalidad de la ley Corcuera (o ley de patada en la puerta).
El Manifiesto en defensa de los derechos fundamentales en Internet, respaldado por más de 200 000 personas, ya avanzó la reacción y demandas de la ciudadanía antes la perspectiva inaceptable del gobierno.

Para impulsar un definitivo cambio de rumbo y coordinar una respuesta conjunta, el 9 de enero se ha constituido la "Red SOStenible" una plataforma representativa de todos los sectores sociedad civil afectados. El objetivo es iniciar una ofensiva para garantizar una regulación del entorno digital que permita expresar todo el potencial de la Red y de la creación cultural respetando las libertades fundamentales.

En este sentido, reconocemos como referencia para el desarrollo de la era digital, la Carta para la innovación, la creatividad y el acceso al conocimiento, un documento de síntesis elaborado por más de 100 expertos de 20 países que recoge los principios legales fundamentales que deben inspirar este nuevo horizonte.

En particular, consideramos que en estos momentos es especialmente urgentes la implementación por parte de gobiernos e instituciones competentes, de los siguientes aspectos recogidos en la Carta:

1 - Las/os artistas como todos los trabajadores tienen que poder vivir de su trabajo (referencia punto 2 Demandas legales, párrafo B. "Estímulo de la creatividad y la innovación", de la Carta.

2 - La sociedad necesita para su desarrollo de una red abierta y libre (referencia punto 2
Demandas legales, párrafo D Acceso a las infraestructuras tecnológicas, de la Carta.

3 - El derecho a cita y el derecho a compartir tienen que ser potenciado y no limitado como fundamento de toda posibilidad de información y constitutivo de todo conocimiento (referencia punto 2
Demandas legales, párrafo A "Derechos en un contexto digital", de la Carta.

4 - La ciudadanía debe poder disfrutar libremente de los derechos exclusivos de los bienes públicos que se pagan con su dinero, con el dinero publico (referencia punto 2
, párrafo C "Conocimiento común y dominio público", de la Carta.

5 -Consideramos necesaria una reforma en profundidad del sistema de las entidades de gestión y la abolición del canon digital (referencia punto 2
Demandas legales, párrafo B. "Estímulo de la creatividad y la innovación", de la Carta.

Por todo ello hoy se inicia la campaña INTERNET NO SERA OTRA TELE y se llevarán a cabo diversas acciones ciudadanas durante todo el periodo de la presidencia española de la UE.

Consideramos particularmente importantes en el calendario de la presidencia de turno española el II Congreso de Economía de la Cultura (29 y 30 de marzo en Barcelona), Reunión Informal de ministros de Cultura (30 y 31 de marzo en Barcelona) y la reunión de ministros de Telecomunicaciones (18 a 20 de abril en Granada).

La Red tiene previsto reunirse con representantes nacionales e internacionales de partidos políticos, representantes de la cultura y legaciones diplomáticas.

Firmado
Red SOStenible

La Red SOStenible somos todos. Si quieres adherirte a este texto, cópialo, blogguéalo, difúndelo. Únete a la página de Facebook de Red SOStenible.





lunes, 11 de enero de 2010

Juegos Iphone - Finger Physics


Actualmente dedico unas 5 horas diarias para desplazarme a la oficina que trabajo, así que tengo tiempo más que suficiente para ver películas , leer artículos y como no ... de dar uso a la app store. De los primeros juegos que me han enganchado y me han hecho olvidar un poco las deficiencias de RENFE ha sido Finger Physics que descubrí a través de mackinando y descargué de forma gratuita. Actualmente vale 0,79 € , pero la recomiendo ya que merece la pena. Para los que quieran probarlo hay una versión "free".

El juego consiste en diferentes pruebas que van desde hacer una construcción que dure estable 5 segundos hasta guiar un huevo a una cesta. La física está muy bien y el control es bastante preciso lo que te permite jugar con una sola mano mientras vas en el cercanías (Cuidado que yo casi me paso mi parada).


miércoles, 18 de noviembre de 2009

Personalizando el diseño de los formularios en symfony

Una de las partes que más me gusta de symfony
es el sistema de formularios muy flexible, potente y sobre todo cómodo. Hay documentación muy amplia al respecto
aunque algunos capítulos están sin completar.

Por defecto symfony renderiza los formularios como tablas (también puedes rapidamente cambiarlo a listados) y si al final no quedas contento puedes modificarlo en la plantilla a gusto del consumidor.

Pero si tienes claro la estructura que van a tener la mayoría de los formularios en tu aplicación y no te interesa que sean tablas o listas (y queremos evitar tener que maquetar cada una de las plantillas) tendremos que extender una clase y hacer uso de ella.

La clase en cuestión es sfWidgetFormSchemaFormatter
y es bastante sencilla. Basta con abrir las dos clases extendidas que tiene symfony tanto para listas como para tablas y echarles un ojo. (sfWidgetFormSchemaFormatterList y sfWidgetFormSchemaFormatterTable respectivamente)

Dentro de la configuración del formulario hacemos uso de la función $this->widgetSchema->setFormFormatterName() que espera como argumento una cadena que determina el nombre de la clase que va a buscar. Si por ejemplo queremos que nuestros formularios se decoren con etiquetas div no tendremos mas que crea una clase llamada sfWidgetFormSchemaFormatterDiv y hacer uso de ella en los formularios ($this->widgetSchema->setFormFormatterName('div')).

miércoles, 16 de septiembre de 2009

Internet explorer 8 no muestra el texto alternativo en el tooltip

Pequeños detalles que son de agradecer en el eterno enemigo de la maquetación.

domingo, 30 de noviembre de 2008

Notas symfony capítulo 1

Llevo más de un año trasteando con el framework de PHP Symfony. He decidido volver a hacer una lectura detenida de la documentación para irme "empapando" bien. Para forzarme a comprenderla he decidido sintetizar lo que vaya leyendo en forma de posts. Simplemente son notas para mí y puede que no te sean de utilidad. Recomiendo encarecidamente la lectura de la documentación oficial y su traducción en español. También es muy interesante seguir el desarrollo del proyecto a través de su trac.

¿Que es Symfony?

Symfony es un framework en PHP que facilita la programación de aplicaciones, ya que encapsula operaciones complejas en instrucciones sencillas, que hace uso del patrón MVC y con el que no se debe reinventar la rueda cada vez que se crea una aplicación web nueva. El proyecto fue fundado por un Francés llamado Fabien Potencier que es presidente de Sensio una empresa de desarrollo web.


¿Debo de usarlo?

Básicamente SOLO si tu proyecto va a ser grande y necesitas que sea mantenible y escalable. Para un proyecto pequeño con 4 consultas sencillas a una base de datos y 10 páginas no merece la pena.


Listado de Conceptos Básicos:

  • PHP (¡oh sorpresa! :D )
  • OOP (Programación Orientada a Objetos)
  • ORM (Mapeo de Objetos a Bases de datos)
  • RAD (Desarrollo rápido de aplicaciones)
  • DRY (No te repitas (Don't Repeat Yourself))
  • KISS (¡Hazlo sencillo, idiota! (Keep It Simple, Stupid))
  • TDD (desarrollo basado en pruebas (test-driven development).)
  • YAML (YAML Ain't Another Markup Language,"YAML no es otro lenguaje de marcado").
  • PEAR (PHP Extensión and Application Repository)

domingo, 13 de julio de 2008

De entidades Html y codificaciones.

Atención! Aquí me veo revisando el marcado de un sitio web porque el cliente nos ha pedido:
  1. Guardar el fichero en UTF-8.
  2. Declararlo como iso-8859-1 en los meta.
  3. Y claro que codifiquemos todos los acentos y eñes como entidad html
¡Ole mis huevos! ahora solo me queda la duda de como tienen configurado el servidor.

Las entidades html solo deberian usarse para caracteres con un valor especial dentro de un documento Html como los & o las aperturas y cierres de etiquetas, para que el navegador de turno no las interprete y las muestre tal cual son. Pero claro, metiendolo todo asi a piñon pensarán que se ahorran quebraderos de cabeza con las codificaciones (MENTIRA COCHINA!!!).

Lo de guardarlo como UTF-8 y luego declararlo en los meta como iso... simplemente me parece ¿de Juzgado de guardia?, todo apunta a que no tienen muy claro como funciona todo esto. Yo les recomendaria la lectura de los siguientes artículos
Si alguien tiene una respuesta lógica para que pidan lo que he descrito arriba, por favor... me lo haga saber....¡Que menuda &resaca; !