[Musikli.com] El portal de letras de canciones, información musical, grupos de musica y más

Posted by ajaxman in Ajaxman, Musikli / 1 Comment

Hola tanto tiempo sin postear, esto ya pasa más seguido, pero ahora si tengo una muy buena excusa.

Durante tiempo estuve trabajando en un proyecto, el cual originalmente fue liberado hace unos dias pero hoy es cuando lo presento oficialmente:

Musikli.com

Musikli, el cual ahora esta en fase beta(casi alpha), en este proyecto tenemos muchos objetivos, y metas a realizar, entonces musikli se reume en:

Un sencillo portal donde encontras, letras de canciones, albumnes, información general sobre artistas en la primera parte, posteriormente se tienen contempladas muchas interesantes y utiles mejoras, las cuales estaran siendo liberadas paulatinamente.

Actualmente ya es posible crear tu cuenta “Volverte FAN”, y agregar canciones de el artista que desees, ovbiamente hay pasa por un proceso de revisión antes de ser publicado. En un futuro como FAN podras hacer muchas mas cosas.

Tambien agregamos una cuenta de twitter  @musikli. la de Facebook, estamos en proceso, aunque ya existe facebook.com/musikli, digamos que la cuenta de Facebook esta en fase pre-alpha.

Seguir a @Musikli

Les pido que la visiten la prueben, se registren y nos den un feedback sobre este interesante proyecto, aceptamos sugerencias de todo tipo, criticas, etc, inclusive si deseas participar apoyando de alguna otra forma(financiamento, formar parte del equipo), sera un placer contar con tus comentarios, para ello disponemos de la siguiente dirección de e-mail: contact@musikli.com

Espero que el proyecto sea interesante para todos, apoyanos y participa.

Javier
Fundador de Musikli.com

[Taller-PHP] Desarrollo de Aplicaciones Web con Kohana Framework

Posted by ajaxman in Ajaxman, Eventos, Kohana, Php, Programacion / 2 Comments

Pues otra vez aca posteando mucho trabajo y poco tiempo para postear jaja como siempre.

Solo que esta vez con buenas noticias, dare un Taller completamente gratis con el apoyo de la red Novatecas y las instalaciones de Telmexhub, el taller es sobre como empezar a programar y conocer las ventajas el Framework Kohana PHP Version 3.x.

Taller:

“Desarrollo de Aplicaciones Web con Kohana Framework”

  1. Introducción
    1. Conociendo el Framework y por que usarlo
    2. Ventajas
    3. Usando un IDE (Netbeans, Eclipse, Zend Studio)
  2. Getting started con Kohana
    1. Instalación
    2. Nuestro Primer programa
    3. La arquitectura de diseño MVC
      1. Modelo
      2. Modulos Database y ORM
      3. Vista
      4. Controlador
  3. Creando un Blog con Kohana
    1. Creando nuestros controladores modelos y vistas
    2. Conociendo el paradigma HMVC
    3. Agregando el Panel de control
    4. Conociendo el modulo A1 para autenticacion
    5. Entornos de programación con Kohana
  4. Retroalimentación
    1. Que tanto puedo hacer con Kohana
    2. Quienes usan kohana
    3. Como puedo ampliar sus funcionalidades

Requisitos:

Continue reading…

[PHP] Usando el modulo de autenticación Kohana A1

Posted by ajaxman in Frameworks, Kohana, Manuales, Php, Programacion / 3 Comments

Kohana A1, es un modulo de kohana el cual nos permite implementar de una forma efectiva, potente y clara, un sistema de autenticación, de una forma fácil y sencilla.

Antes de empezar a usarlo es importante considerar que el modulo usa la el constructor crypt de PHP pero usando como hash CRYPT_BLOWFISH, esto no afecta si estas usando PHP 5.3, pero si tienes este inconveniente al final del post pondré como solucionarlo(o cambiarte de hosting a uno mas actualizado).

Vamos a ver como usarlo para hacer un login.

Requisitos:

  • Kohana 3.2
  • Kohana A1 module
  • Kohana ORM
  • Kohana Database

Como dicen los requisitos para usar A1 debemos de estar conectados a una base de datos, también debemos de tener un modulo que abstraiga dicha base de datos, para esto podemos usar Kohana ORM, Automodeler, Jelly, Sprig o entre otros, si estamos haciendo pruebas yo recomiendo usar Kohana ORM, y ya en base a sus requerimientos y necesidades usar el que mas les agrade.

Instalamos kohana de modo que quede en localhost/kohana1/ ,creamos una base de datos yo la llamare, “system” y le pondré como datos de conexión ultra-seguros user:root password:root, recuerden activar el modulo database y ORM.

Y posteriormente nos toca, agregar el siguiente código SQL a nuestra base de datos, obviamente lo pueden modificar a su gusto, aunque de momento dejémoslo así.

 CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`email` varchar(127) NOT NULL,
`username` varchar(32) NOT NULL DEFAULT '',
`password` char(80) NOT NULL,
          `token` char(80) NOT NULL DEFAULT '',
`logins` int(10) UNSIGNED NOT NULL DEFAULT '0',
`last_login` int(10) UNSIGNED,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
view raw users.sql This Gist brought to you by GitHub.

Ahora procedemos a bajar el modulo A1, que esta aquí: https://github.com/Wouterrr/A1/

Y lo ponemos en nuestro carpeta modules nombrando a la carpeta A1 de modo que quedara asi “modules/A1″.Dentro de dicha “modules/A1″ hay una carpeta config y dentro de ella un archivo llamado a1.php, bien este archivo es el archivo de configuración del modulo Kohana A1, de igual forma que se hace con todos los módulos hay que copiar este archivo a “application/config/” para poder editarlo y que no afecte directamente al modulo.

El archivo se ve de la siguiente forma:

<?php

return array(

'driver' => 'ORM', // orm/jelly/mango/sprig
'user_model' => 'user',
'cost' => 12, // Bcrypt Cost - any number between 4 and 31 -> higher = stronger hash

'cookie' => array(
'key' => 'a1_{name}_autologin',
'lifetime' => 1209600, // two weeks
),

'columns' => array(
'username' => 'username',
'password' => 'password',
'token' => 'token',
//'last_login'=> 'last_login', // (optional)
//'logins' => 'logins' // (optional)
),

'session' => array(
'type' => 'native' // native or database
)
);

view raw a1.php This Gist brought to you by GitHub.

Aquí pongo la descripción de cada elemento:

  • driver: EL ORM que usara (ORM,jelly,mango,sprig[se pueden agregar mas pero hay que modificar el modulo o extenderlo])
  • user_model: tabla(modelo) que se usara ‘user’
  • cost: fuerza (tamaño de la clave) entre 4 y 31, lo ideal es 12, si ponen un numero muy grande tomar en cuenta que consumirá mas recursos.
  • cookie: los datos de la cookie que generara a1, para hacer el login(nombre y duración)
  • columns: aquí le estamos asignando a los items de A1, las columnas de la base de datos, es decir si en su base de datos el nombre de usuarios están en el campo nombre, tendrán que poner ‘username’ => ‘nombre’, modificando lo que esta en el array, los campos opcionales de momento no los usaremos, aunque cabe señalar que solo guardan información extra.
  • session: Aquí es donde definimos el tipo de sesión, de momento y regularmente bastara con dejarlo como esta, si su aplicación correrá en varios servidores conviene ponerlo en modo database(aunque en este caso hay que hacer un par de cosas mas, espero postear pronto sobre esto)
  • .

No se les olvide activar le modulo en el bootstrap, el cual en la sección módulos debería verse así:
Continue reading…

[PHP] El patrón de diseño (o antipatrón) singleton vs Inyección de dependencias ¿Que debo usar?

Posted by ajaxman in Php, Programacion / 1 Comment

PHP es un lenguaje con el cual podemos usar herramientas avanzadas de desarrollo, algunas de estas herramientas son los patrones de diseño (Design Patterns),regularmente cuando empezamos a adentrarnos a esto de los patrones de diseño, uno de los primeros patrones que empezamos a usar es el patrón singleton, el cual garantiza un único acceso a cierto clase como una base de datos la implementación que yo uso/usaba es la siguiente:

PHP
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
63
64
65
66
67
68
69
70
&lt;?php
/**
*
* Clase abstracta que define los metodos que implementaran los databaseManagers
* @author Javier Lopez Lopez
* @abstract
*
*/
abstract class DatabaseManager{
    abstract public function findAll();
}
/**
*
* Clase Mysql Database manager (el singleton)
* @author Javier Lopez Lopez
*
*/
class Mysql extends DatabaseManager {
    private static $instance;
    private function __construct(){    }
    private function __clone(){ }
    public static function getInstance()
    {
        if(!(self::$instance instanceof self))
        {
            self::$instance = new self;
        }
        return self::$instance;
    }
    //...MORE CODE
    public function findAll()
    {
        //return all results
    }
}
/**
* Usando el singleton
*/
class Controller {
    protected $database;
    public function __construct()
    {
        //Como se que debo de incluirlo si nunca lo solicito en la ejecución de la clase
        //Ademas me limita a usar solo databasemanager de tipo MySQL
        //Evita que crezca el servicio no puedo agregar mas databases;
        $this->database = Mysql::getInstance();
    }
    public function getAll()
    {
        return     $this->database->findAll