jueves, 15 de diciembre de 2016

error [ReflectionException] Class DatabaseSeeder does not exist

al ejecutar cesar@sisweb:/var/www/html/contact_manager$ php artisan db:seed 

marca

Just wondering before "[ReflectionException] Class DatabaseSeeder does not exist" it was [ReflectionException] Class database\seeds\userTableSeeder does not exist
after trying all suggested putting namespace in it showed in the links and several call of commands "composer dump-autoload" and "php artisan clear-compiled" it suddenly become the Class DatabaseSeeder.

use Illuminate\Database\Seeder;


class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        // $this->call(UsersTableSeeder::class);
    //Eloquent::unguard();
        $this->call(GroupTableSeeder::class);
        $this->call(ContactTableSeeder::class);
    }
}
<?php

use Illuminate\Database\Seeder;

class GroupTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
        DB::statement('SET FOREIGN_KEY_CHECKS=0');
        DB::table('groups')->truncate();

        $groups = [
        ['id' => 1, 'name' => 'Family', 'created_at' => new DateTime, 'updated_at' => new DateTime],
        ['id' => 2, 'name' => 'Friends', 'created_at' => new DateTime, 'updated_at' => new DateTime],
        ['id' => 3, 'name' => 'Clients', 'created_at' => new DateTime, 'updated_at' => new DateTime],
        ];

        DB::table('groups')->insert($groups);
    }
}

<?php

use Illuminate\Database\Seeder;
use Faker\Factory as Faker;

class ContactTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
        DB::table('contacts')->truncate();
        $faker = Faker::create();

        $contacts = [];

        foreach (range(1,20) as $index) {
        $contacts[]= [
        'name' => $faker->name,
        'email' => $faker->email,
        'phone' => $faker->phoneNumber,
        'address' => "{$faker->streetName} {$faker->postcode} {$faker->city}",
        'company' => $faker->company,
        'created_at' => new DateTime,
        'updated_at' => new DateTime,

        ];
        }

     

        DB::table('contacts')->insert($contacts);
    }
}



lunes, 5 de diciembre de 2016

miércoles, 30 de noviembre de 2016

Ligas

<ul class="sidebar-menu">
        <li><?= Html::a('<i class="fa  fa-cogs"></i> <span>Tablero</span>', ['/docente']); ?></li>
        <li><?= Html::a('<i class="fa  fa-calendar"></i> <span>Listados de Sesiones </span>', ['/docente/periodos/']);?></li>
        <li><?= Html::a('<i class="fa  fa-calendar"></i> <span>Registro de Sessiones Extraordianrias</span>', ['/dashboard/default/index']);?></li>
        <li><?= Html::a('<i class="fa  fa-edit"></i> <span>Informe de Sesiones Realizadas</span>', ['/lab/cierre']);?></li>
     
</ul>

jueves, 24 de noviembre de 2016

Causas por las que fallan los proyectos



  1. Pobres requerimientos (13.1%)
  2. Falat de participacion de los usuarios (12.4%)
  3. Falta de recursos(10.6%)
  4. Expectativas irreales(9.9%)
  5. Falta de participacion de Jefes(9.3%)
  6. Cambio de requerimientos y especificaciones (8.7%)
  7. Inexperiencia de LosProject Managers(8.1%)
  8. Sistema no necesario(7.5%)

Definición de Requerimiento

asdasd

miércoles, 23 de noviembre de 2016

Variables

<html>

<head>
<title>Javascript</title>
</head>

<body>
<input type="text" id="textInput">
<button id="textChanger">Change the text!</button>
<p id="text">This is some text</p>
<script type="text/javascript">
document.getElementById("textChanger").onclick = function() {
var textEntered = "";
textEntered = document.getElementById("textInput").value;
document.getElementById("text").innerHTML = textEntered;
}
</script>
</body>

</html>

Cambiar css en js

<html>

<head>
<title>Javascript</title>
<style type="text/css">
.circle {
width:130px;
height:130px;
border-radius: 50%;
float:left;
margin-right:50px;
}
#red-circle {
background-color: red;
}
#blue-circle {
background-color: blue;
}
#yellow-circle {
background-color: yellow;
}
</style>
</head>

<body>
<div class="circle" id="red-circle"></div>
<div class="circle" id="blue-circle"></div>
<div class="circle" id="yellow-circle"></div>
<script type="text/javascript">
document.getElementById("red-circle").onclick = function() {
document.getElementById("red-circle").style.display = "none";
}
document.getElementById("yellow-circle").onclick = function() {
document.getElementById("yellow-circle").style.display = "none";
}
document.getElementById("blue-circle").onclick = function() {
document.getElementById("blue-circle").style.display = "none";
}
</script>
</body>

</html>

Cambiar el estilo con js

<html>

<head>
<title>Javascript</title>
</head>

<body>

<p id="moreText">This is some text</p>
<button id="styleText">Style Text</button>
<script type="text/javascript">

document.getElementById("styleText").onclick = function() {
document.getElementById("moreText").style.fontsize = "50px";
}
</script>
</body>

</html>

Cambiando contenido html

<html>

<head>
<title>Javascript</title>
</head>

<body>
<p id="text">Hello World!</p>
<button id="myButton">Change text</button>
<p id="secondParagraph">Javascript is ... </p>
<button id="secondButton">Append text</button>
<p id="emptyParagraph"></p>
<button id="createParagraph">Create text</button>
<script type="text/javascript">
document.getElementById("myButton").onclick = function() {
document.getElementById("text").innerHTML = "Hello Rob!";
}
document.getElementById("secondButton").onclick = function() {
document.getElementById("secondParagraph").innerHTML = "I think " + document.getElementById("secondParagraph").innerHTML + "awesome!";
}
document.getElementById("createParagraph").onclick = function() {
document.getElementById("emptyParagraph").innerHTML = "<h1>Hi there!</h1>";
}
</script>
</body>

</html>

Responder a un click

<html>

<head>
<title>Javascript</title>
</head>

<body>
<p id="text">Hello World!</p>
<button id="myButton">Change text</button>
<script type="text/javascript">
document.getElementById("myButton").onclick = function() {
document.getElementById("text").innerHTML = "Hello Rob!";
}
</script>
</body>

</html>

jueves, 20 de octubre de 2016

Recuperar sistema si se pierde la contraseña de root

Paso 1: Entrar con un live CD

Paso 2:  Entrar en modo recue

PAso 3 : chroot /mnt/sysimage

Paso4 : passwd   // se cambia la contraseña

Paso 5 : Reinicias el equipo de manera normal


miércoles, 19 de octubre de 2016

Validación de formularios

Muchas veces necesitamos validar los datos ingresados en un formulario antes de que sean grabados en la base de datos.


Para ello, en el modelo de nuestras tablas, tenemos el método o función pública rules().
Ésta función es llamada automáticamente por Yii antes de grabar los datos del formulario al utilizar $model->save().

Para el caso de nuestra tabla Persona,

podemos tener algo como lo siguiente:

public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('identificacion, nombres, apellidos, sexo, estado_civil_id, fecha_nacimiento', 'required'),
array('estado_civil_id', 'numerical', 'integerOnly'=>true),
array('identificacion', 'length', 'max'=>25),
array('nombres, apellidos', 'length', 'max'=>100),
array('sexo', 'length', 'max'=>10),
array('descripcion', 'safe'),
// The following rule is used by search().
// @todo Please remove those attributes that should not be searched.
array('id, identificacion, nombres, apellidos, sexo, estado_civil_id, fecha_nacimiento, descripcion', 'safe', 'on'=>'search'),
);
}

Como podemos ver, la función recibe un arreglo con cada una de las reglas, y cada una de estas reglas es a la vez un arreglo. Entre algunas de las reglas utilizadas podemos mencionar:

Validar que un campo sea obligatorio
array('identificacion, nombres, apellidos, sexo, estado_civil_id, fecha_nacimiento', 'required'),

Validar que un campo sea numérico
array('precio', 'numerical'),

Validar que un campo sea numérico y entero
array('estado_civil_id', 'numerical', 'integerOnly'=>true),

Validar que un campo de texto tenga una longitud mínima
array('identificacion', 'length', 'min'=>20),

Validar que un campo de texto tenga una longitud máxima
array('identificacion', 'length', 'max'=>25),

Validar que un campo de texto tenga una longitud mínima y máxima
array('identificacion', 'length', 'min'=>20, 'max'=>25),
Validar que un campo de texto tenga una longitud exacta
array('codigo', 'length', 'is'=>3),

Validar que un campo numérico tenga un valor mínimo
array('numero', 'numerical', 'min'=>1),

Validar que un campo numérico tenga un valor máximo
array('numero', 'numerical', 'max'=>999),

Validar que un campo tenga una dirección de correo válida
array('correo', 'email'),

Validar que un campo tenga una dirección web válida
array('pagina_web', 'url'),

Validar que un campo sea único
array('identificacion', 'unique'),

Validar que un campo sea único bajo cierta condición
array('campo', 'unique', 
'criteria'=>array('condition'=>'condicion') ),

Comparar un campo con un valor determinado
array('nombre_del_campo', 'compare', 'compareValue'=>'valor_de_comparacion', 'operator'=>'operador'),

array('codigo', 'compare', 'compareValue'=>'000', 'operator'=>'!='),


Comparar dos campos del formulario entre si
array('campo_a_comparar', 'compare', 'compareAttribute'=>'campo_referencial', 'operator'=>'operador', 'message'=>'mensaje_personalizado'),

Validar que dos campos sean iguales (por ejemplo, cuando se crea una clave y hay que ingresarla 2 veces)
array('clave_2', 'compare', 'compareAttribute'=>'clave_1', 'operator'=>'=', 'message'=>'Debe repetir la clave exactamente igual'),

Asignar un valor por defecto si el campo no tiene valor o está vacío
array('campo', 'default', 'setOnEmpty'=>'valor_por_defecto'),

array('fecha_final', 'default', 'setOnEmpty'=>'null'),

Por ejemplo, en MySQL es útil con los campos de fechas, ya que la base de datos guarda por defecto el valor '0000-00-00' y lo que realmente queremos es un valor nulo o vacío.


Validar que un campo sea un archivo, sea de ciertas extensiones, tenga un tamaño máximo y sea obligatorio
array('farchivo', 'file', 
'types'=>'pdf, doc, docx, jpg, jpeg, png, gif',
'maxSize'=>1024*1024*3,
'tooLarge'=>'El archivo no puede exceder los 3MB.',
'allowEmpty'=>false),

Validaciones personalizadas

También es posible escribir nuestras propias reglas de validación.
Para ello, debemos escribir de la forma:
array('campo', 'validacionPersonalizada'),

y en el mismo archivo del modelo, creamos nuestra propia función, algo similar a:
public function validacionPersonalizada()
{
    if (no_pasa_nuestras_validaciones)
        $this->addError('campo', 'Mensaje de error personalizado.');
}

Forzar un push en git


git push https://github.com/cmorones/spdgm.git --force

Gloab Scope, Lexical scope and this


global scope an lexical scope


var getSponsorInfo = function(info){   //global scope

var sponsor = {
  name : "John",  // lexical scope
value: "500"
};
retunr sponsor[info];
};


getSponsorInfo('name');  // logs // John

sponsor ;  // log error 


Metodos de array

push()

Agrega un item

var people = ["John", "Mary", "Anny"]

people.push("Leo");

console.log(people);

pop()

Quita el ultimo item

var people = ["John", "Mary", "Anny", "leo"]

people.pop():


console.log(people);

["John", "Mary", "Anny"]


Shift()

Quita el primer  item

var people = ["John", "Mary", "Anny", "leo"]

people.shift():


console.log(people);

 ["Mary", "Anny", "leo"]

unshift()

Agrega un item al principio del array

var people = ["Mary", "Anny", "leo"]

people.unshift("John",):

["John", "Mary", "Anny", "leo"]


reverse()

cambia el orden  del arreglo
var people = ["Mary", "Anny", "leo"]

people.reverse():

 [ "leo", "Anny","Mary"]


Array.isArray();

devuelve tru o false si es una rreglo

var myArray1 ="Elvio";
var myArray2 = [0,1,2,3,4,5];

console.log(Array.isArray(myArray1));  //false

console.log(Array.isArray(myArray2)); //true

ejemplos que regresan false

console.log(Array.isArray({}));
console.log(Array.isArray(null));
console.log(Array.isArray(undefined));
console.log(Array.isArray(17));
console.log(Array.isArray('array'));
console.log(Array.isArray(true));


slice()

Extrae elementos

var people = ["Mary", "Anny", "leo","Leonard"];
console.log( people.slice(0,2));  // ["Marck", "Mary"];












martes, 18 de octubre de 2016

crear virtual host

VIRTUAL HOST

El término virtual host se refiere a que podamos alojar múltiples sitios web en un solo equipo. Los host virtuales pueden estar basados en IP, lo que significa que se necesita una IP para cada sitio web, o también se pueden basar en nombres de dominio, con lo cual podemos tener múltiples sitios utilizando una sola dirección IP.

Generalmente la configuración que mas se utiliza es la que está basada en nombres de dominio, y es la forma en la que vamos a trabajar para este pequeño tutorial.
Supongamos que estamos montando un servidor compartido donde vamos a estar alojando sitios para diferentes personas lo conveniente seria crear host virtuales alojados en las carpetas personales de cada usuario.

1. CREAR UN USUARIO

Procedemos a crear al usuario que vamos a asociar al dominio del sitio.
sudo adduser misitio

2. CREAR LA ESTRUCTURA DE DIRECTORIOS.

Ahora creamos la carpeta public_html que es donde se alojaran los archivos del sitio y a lo que se tendrá acceso desde el navegador web.
sudo mkdir /home/misitio/public_html
La carpeta la creamos como administradores por lo tanto tenemos que cambiar al propietario por el usuario final que en este caso seria misitio.
sudo chown -R misitio:misitio /home/misitio/public_html
Posteriormente modificamos los permisos.
sudo chmod -R 755 /home/misitio

3. CONFIGURAR APACHE

Para modificar la configuración de apache abrimos el siguiente archivo: /etc/apache2/apache2.conf
sudo gedit /etc/apache2/apache2.conf
Buscamos la directiva <Directory /var/www/> la cual se encarga de denegar el acceso fuera de /var/www/ y agregamos una estructura similar para la carpeta /home/misitio/public_html/ en la opción AllowOverride colocamos All para que Apache tome en cuanta la configuración utilizando el archivo .htaccess
<Directory /var/www/>
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>
 
<Directory /home/codedrinks/public_html/>
  Options Indexes FollowSymLinks
  AllowOverride All
  Require all granted
</Directory>

4. CREAR UN HOST VIRTUAL

Hasta aquí ya tenemos la estructura para el sitio, ahora tenemos que crear el host virtual para que podamos acceder a la página utilizando el nombre de dominio que deseemos.
Vamos a tomar como base el archivo por default que crea Apache, dicho archivo se ubica en la siguiente ruta /etc/apache2/sites-available/000-default.conf  al cual le haremos una copia y lo nombraremos con en dominio del sitio que se desea configurar
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/misitio.com.conf
Ya que tenemos la copia abrimos el archivo y lo configuramos con la información del sitio.
sudo gedit /etc/apache2/sites-available/misitio.com.conf 
El archivo al final tendria que quedar así:
<VirtualHost *:80>
    ServerName misitio.com
    ServerAlias www.misitio.com
    ServerAdmin webmaster@misitio.com
    DocumentRoot /home/misitio/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

5. HABILITAR EL NUEVO HOST VIRTUAL

Ya que hemos creado nuestro archivo de host virtual tenemos que habilitarlo, para ello Apache incluye algunos helpers como a2ensite para habilitar un sitio o a2dissite para deshabilitar un sitio.
sudo a2ensite misitio.com.conf
Ahora tenemos que reiniciar nuestro servidor para que los cambios se apliquen.
sudo service apache2 restart

6. CONFIGURAR EL ARCHIVO HOSTS (OPCIONAL)

Si tenemos un servidor DNS apuntando a nuestro servidor omitimos la configuración del archivo hosts debido a que el servidor DNS se encargaría de resolver nuestra dirección. En caso de que no contemos con un servidor DNS abrimos el archivo hosts
sudo gedit /etc/hosts
y agregamos las siguientes lineas
127.0.0.1 misitio.com
127.0.0.2 www.misitio.com

7. CREAR EL ARCHIVO INDEX.HTML

Creamos el archivo html que se va a mostrar cuando se acceda al sitio, se llamará index.html y lo guardaremos dentro de la carpeta public_html
<html>
  <head>
    <title>Bienvenido a mi página!</title>
  </head>
  <body>
    <h1>Felicidades el host virtual trabaja de forma correcta!!!</h1>
  </body>
</html>
Ahora solo abrimos el navegador y escribimos el nombre de nuestro sitio: www.misitio.com 0 misitio.com para que nos muestre la página que acabamos de crear.