Blog

El Impacto de la Inteligencia Artificial en el Sector Informático

En la era digital, la Inteligencia Artificial (IA) se ha convertido en un tema candente, transformando prácticamente todos los aspectos de nuestra vida. En este artículo, exploraremos el papel fundamental que la IA desempeña en el sector informático y cómo está revolucionando la forma en que interactuamos con la tecnología.

La Revolución de la Inteligencia Artificial en la Informática:

La IA ha trascendido más allá de ser una mera herramienta y se ha convertido en un componente esencial en el sector informático. Aquí hay algunas formas en las que la IA está dejando su huella:

  1. Automatización de Procesos: La IA permite la automatización de tareas repetitivas, lo que aumenta la eficiencia y reduce los costos en el desarrollo de software y la gestión de servidores.
  2. Machine Learning: Los algoritmos de aprendizaje automático impulsados por IA están mejorando la toma de decisiones a través de análisis de datos en tiempo real, lo que es crucial en la toma de decisiones empresariales.
  3. Chatbots e Interacción Usuario-Máquina: La IA ha revolucionado la forma en que interactuamos con las aplicaciones y sitios web, brindando experiencias más personalizadas y conversaciones naturales.
  4. Ciberseguridad: La IA se utiliza para detectar y prevenir amenazas cibernéticas, asegurando que nuestros datos estén protegidos.

El Futuro de la IA en el Sector Informático:

La IA no muestra signos de desaceleración. Se espera que continúe su evolución y mejora, transformando aún más la forma en que abordamos los desafíos tecnológicos. Las empresas que adoptan la IA en su infraestructura informática estarán mejor posicionadas para competir en un mundo digital en constante cambio.

Cómo Podemos Ayudarte:

En Webservice estamos comprometidos con la excelencia en desarrollo web y redes sociales, y estamos al tanto de las últimas tendencias en el sector informático, incluyendo la Inteligencia Artificial. Si estás interesado en aprovechar el poder de la IA para mejorar tus operaciones informáticas, no dudes en contactarnos.

Conclusión:

La Inteligencia Artificial está impulsando un cambio significativo en el sector informático. Mantenerse actualizado con estas innovaciones es esencial para el éxito en la era digital. En Webservice, estamos aquí para ayudarte a aprovechar al máximo esta revolución tecnológica. Contáctanos hoy para descubrir cómo podemos potenciar tus operaciones informáticas y tu presencia en línea.

¡Esperamos que este artículo te haya proporcionado información valiosa sobre la IA en el sector informático! Si tienes alguna pregunta o comentario, no dudes en dejarnos un mensaje. Estamos aquí para ayudarte a impulsar tu presencia en línea y tu éxito tecnológico.

¿Que es un dominio?

Dominio web también conocido como domain en inglés, es una dirección o nombre alfanumérico único que se caracteriza por ser fácil de recordar, utilizado para identificar un sitio en internet, ya sea servidor de correo electrónico o un servidor web.

Estos dominios le permiten a los usuarios de internet o de la red escribir un nombre determinado para luego poder identificar una dirección electrónica formada por números, es decir que por medio se la utilización de dichos dominios, los usuarios de la red pueden hallar sitios web y enviar correos electrónicos sin tener que recordar las direcciones numéricas, que realmente son estas las que logran la localización de los servicios de internet y las computadoras.

La finalidad de un dominio es identificar una página web; y es de suma importancia que dichos dominios sean entendibles y preferiblemente sencillos, aun con más razón si una persona está comenzando a formar un sitio web para un negocio, para así poder ser recordado y visitado con mayor facilidad por otros clientes o usuarios.

un dominio puede tener diferentes extensiones un ejemplo de ello es el dominio de google que facilita por así decirlo, el acceso a su motor de búsqueda al cambiar las extensiones de su dominio dependiendo del país donde se utilice, como “Google.com.ve” Para Venezuela, “Google.com.mx” para México, “Google.es” para España, etc.

Cómo registrar un dominio web

Los diferentes proveedores de nombres de dominios utilizan diferentes sistemas, así que aunque esta respuesta cubre el proceso en general, puede variar ligeramente según el proveedor.

Cómo transferir un dominio web

Los dominios web también se pueden transferir entre registradores. Aunque hay algunas condiciones especiales que deben cumplirse:

  1. Deben transcurrir 60 días o más desde el registro o la última transferencia.
  2. El dominio no debe estar en estado de Redención o Pendiente de eliminación.
  3. Debes tener el código de autorización de tu dominio (también conocido como código EPP).
  4. Los detalles de propiedad del dominio deben ser válidos y los servicios de protección de la privacidad deben estar deshabilitados.

Si bien no es obligatorio transferir tu dominio, tener todos los servicios en un solo lugar puede simplificar enormemente el proceso de administración.

Diferencia entre un dominio web y alojamiento web

Refiriéndonos al inicio de este artículo, si el dominio web es como tu dirección física, el alojamiento web es como el edificio físico y los contenidos se almacenan allí.

Los dominios web se utilizan para crear un pequeño atajo práctico para vincular lo que los visitantes escriben en la barra de direcciones con el servidor que se usa para alojar el sitio web. Son completamente digitales y se almacenan en una base de datos centralizada.

El alojamiento web es un poco diferente porque requiere un servidor físico ubicado en algún lugar del mundo y conectado a Internet. Es esencialmente como un disco duro de computadora que almacena todos los archivos y bases de datos de tu sitio web. Se llama servidor porque literalmente le «sirve» tu sitio web a tus visitantes.

Cuando escribes una URL (por ejemplo, www.hostinger.es) en tu navegador web, éste envía una solicitud al servidor específico en el que está alojado tu sitio. El servidor luego carga los archivos y los transmite por Internet al dispositivo que estás utilizando, que a su vez descarga los archivos y los muestra.

Entonces, ¿qué es un dominio web?

Un dominio web es esencialmente el equivalente del alojamiento web a una dirección postal. Esto es lo que necesitas saber:

  1. Un dominio web es el equivalente a una dirección postal de tu sitio web.
  2. Constan de un nombre de sitio web (como, Hostinger) y una extensión de nombre de dominio (por ejemplo, .com).
  3. Todos los registros de dominio son supervisados ​​por la ICANN.
  4. Los dominios funcionan reenviando los visitantes al servidor apropiado.
  5. Los dominios .com son los más populares, ya que están en el 46.5% de la web.
  6. Los ccTLDs usan códigos de país y designan áreas geográficas (por ejemplo, .cn o .es).
  7. Los gTLDs suelen diseñarse para casos de uso específicos (por ejemplo, .org para organizaciones).

MIGRACIONES EN LARAVEL


A medida que crea su aplicación, puede acumular más y más migraciones a lo largo del tiempo. Esto puede hacer que su directorio de migración se infle con potencialmente cientos de migraciones. Si lo desea, puede «aplastar» sus migraciones en un solo archivo SQL. Para comenzar, ejecute el comando schema: dump:

esquema artesanal php: volcado

// Volcar el esquema de la base de datos actual y eliminar todas las migraciones existentes …
esquema artesanal de php: dump –prune

Son ideales para trabajar en equipo, dado que elimina la necesidad de enviar fragmentos de SQL a través de email, mensajería, etc. Los programadores simplemente necesitan generar una nueva migración, escribir los cambios a la base de datos en ella y el resto del equipo puede simplemente ejecutar la migración.

ESTRUCTURA DE MIGRACION

Una clase de migración contiene dos métodos: hacia arriba y hacia abajo. El método up se usa para agregar nuevas tablas, columnas o índices a su base de datos, mientras que el método down debe revertir las operaciones realizadas por el método up.

Dentro de estos dos métodos, puede utilizar el generador de esquemas de Laravel para crear y modificar tablas de forma expresiva. Para conocer todos los métodos disponibles en el generador de esquemas, consulte su documentación. Por ejemplo, la siguiente migración crea una tabla de vuelos:

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateFlightsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('flights', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('airline');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('flights');
    }
}

Modificar tablas existentes

A veces, necesita cambiar su estructura de tabla existente como renaming/deleting columnas. Lo que puede lograr creando una nueva migración. Y en el método up de su migración.

//Renaming Column.

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->renameColumn('email', 'username');
    });
}

El ejemplo anterior cambiará el nombre de la email column de email column de la users table de users table a username de username . Mientras que el siguiente código elimina un username de username columna de la tabla de users .

IMPROTANTE: para modificar columnas, debe agregar la dependencia doctrine/dbal al archivo composer.json del proyecto y ejecutar la composer update para reflejar los cambios.

//Droping Column
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('username');
    });
}
LOS ARCHIVOS DE MIGRACION

Las migraciones en una aplicación Laravel viven en el directorio database/migrations . Sus nombres de archivos se ajustan a un formato particular:

<year>_<month>_<day>_<hour><minute><second>_<name>.php

Un archivo de migración debe representar una actualización de esquema para resolver un problema particular. Por ejemplo:

2016_07_21_134310_add_last_logged_in_to_users_table.php

Las migraciones de la base de datos se mantienen en orden cronológico para que Laravel sepa en qué orden ejecutarlas. Laravel siempre ejecutará migraciones de la más antigua a la más nueva.

Generando archivos de migración

Crear un nuevo archivo de migración con el nombre de archivo correcto cada vez que necesite cambiar su esquema sería una tarea. Afortunadamente, el comando artisan de Laravel puede generar la migración para usted:

php artisan make:migration add_last_logged_in_to_users_table

También puede usar los --table y --create con el comando anterior. Estos son opcionales y solo por conveniencia, e insertarán el código relevante en el archivo de migración.

php artisan make:migration add_last_logged_in_to_users_table --table=users

php artisan make:migration create_logs_table --create=logs

Puede especificar una ruta de salida personalizada para la migración generada usando la opción --path . La ruta es relativa a la ruta base de la aplicación.

php artisan make:migration --path=app/Modules/User/Migrations

EJECUTANDO MIGRACIONES

Una vez que se haya escrito su migración, la ejecución aplicará las operaciones a su base de datos.

php artisan migrate

Si todo salió bien, verás una salida similar a la siguiente:

Migrated: 2016_07_21_134310_add_last_logged_in_to_users_table

Laravel es lo suficientemente inteligente como para saber cuándo está ejecutando migraciones en el entorno de producción. Si detecta que está realizando una migración destructiva (por ejemplo, una que elimina una columna de una tabla), el comando de php artisan migrate le pedirá confirmación. En entornos de entrega continua esto puede no ser deseado. En ese caso, use la bandera --force para omitir la confirmación:

php artisan migrate --force

Si acaba de ejecutar migraciones, puede confundirse al ver la presencia de una tabla de migrations en su base de datos. Esta tabla es lo que utiliza Laravel para realizar un seguimiento de las migraciones que ya se han ejecutado. Al emitir el comando migrate , Laravel determinará qué migraciones aún deben ejecutarse, las ejecutará en orden cronológico y luego actualizará la tabla de migrations para que se adapte.

Nunca debe editar manualmente la tabla de migrations menos que sepa absolutamente lo que está haciendo. Es muy fácil dejar inadvertidamente su base de datos en un estado defectuoso en el que las migraciones fallarán.

Validación en Laravel

La validación de datos de cualquier app es de gran importancia y se deben proveer todos los posibles escenarios y considerar los posibles errores que puede cometer un usuario al interactuar con el sistema.

Básicamente existen 3 formas de validar un formulario, desde el frontend (javascript, jquery, html5), desde el backend (reglas y funciones de validación) y desde la base de datos, donde se pueden definir los tipos, cantidad de caracteres y otros parámetros que pueden ser configurados para este proceso.

En este ejemplo veremos un poco sobre estos 3 tipos de validación usando Laravel 5 y Eloquent y la validación por defecto de Html5.

Crear nueva base de datos

$ mysql -u root -p $ Enter password : 
$ mysql> CREATE DATABASE validation; 
$ mysql> exit;

Validación a nivel de base de datos con Eloquent

Si no conoces mucho sobre el uso de eloquent te recomiendo visitar este tutorial básico de Fluent y Eloquent 

Vamos a crear un modelo para registro de clientes haciendo uso de artisan

 $ php artisan make:model client 

ahora podemos editar la migración de la siguiente forma

 Schema::create(‘clients’, function(Blueprint $table) {     
$table->increments(‘id’);            
$table->string(‘full_name’)->required();            
$table->string(‘email’)->unique()->required();            
$table->string(‘address’)->required();            
$table->string(‘phone_number’)->nullable();            
$table->enum(‘type’,[‘empresa’,’particular’])->default(‘particular’);            
$table->string(‘register’)->nullable();            
$table->timestamps();
}); 

required() indica que el registro no puede quedar vacío y que es requerido el valor, unique() valida que un valor no pueda repetirse en la tabla, en este caso dos clientes no pueden tener registrado la misma dirección de email, los campos de tipo enum se usan para limitar las opciones que pueden ingresar al momento de registrar y el default() almacena un valor por defecto en caso de que el usuario no suministre ningún dato.

Por supuesto debemos ejecutar la migración para verificar que todo esté bien

 $ php artisan migrate 

editamos el archivo Client.php de la siguiente forma

 <?php
namespace App;
use Illuminate\Database\Eloquent\Model; 
class Client extends Model { 
protected $table = ‘clients’;         //Definimos los campos que se pueden llenar con asignación masiva        
protected $fillable = [‘full_name’, ‘email’, ‘address’, ‘register’,’phone_number’,’type’]; 

Este tipo de validación impide que se registre información que no cuente con los criterios definidos, pero en caso de que el registro falle no ofrece ninguna alerta al usuario, por ello necesitamos usar un método que permita un poco mas de interacción.

Validacion Html5

Iniciaremos creando un formulario (‘form.blade.php’) de registro para los datos establecidos en la migración usando Form() para facilitar el proceso

@extends(‘app’)
@section(‘content’) 
<div class=»container»>        
@if($errors->has())            
<div class=»alert alert-warning» role=»alert»>              
@foreach ($errors->all() as $error)                  
<div>{{ $error }}</div>              @endforeach            </div>        @endif </br>       <div class=»row»>        <div class=»col col-md-6 col-md-offset-3″   >            <div class=»panel panel-default»>              <div class=»panel-heading»><h3 class=»panel-title»>Forumulario de registro</h3></div>              <div class=»panel-body»>                {!! Form::open([‘route’ => ‘client’, ‘method’ => ‘post’]) !!}                                    <div class=»form-group»>                      {!! Form::label(‘full_name’, ‘Nombre’) !!}                      {!! Form::text(‘full_name’, null, [‘class’ => ‘form-control’ , ‘required’ => ‘required’]) !!}                  </div>                  <div class=»form-group»>                      {!! Form::label(‘email’, ‘E-Mail’) !!}                      {!! Form::email(‘email’, null, [‘class’ => ‘form-control’ , ‘required’ => ‘required’]) !!}                  </div>                            <div class=»form-group»>                      {!! Form::label(‘address’, ‘Direccion’) !!}                      {!! Form::text(‘address’, null, [‘class’ => ‘form-control’ , ‘required’ => ‘required’]) !!}                  </div>                  <div class=»form-group»>                      {!! Form::label(‘phone_number’, ‘Telefono’) !!}                      {!! Form::text(‘phone_number’, null, [‘class’ => ‘form-control’ ]) !!}                  </div>                  <div class=»form-group»>                      {!! Form::label(‘type’, ‘Tipo’) !!}                      {!! Form::select(‘type’, [‘otro’ => ‘otro’, ‘empresa’ => ‘empresa’, ‘particular’ => ‘particular’], null, [‘class’ => ‘form-control’ ]) !!}                  </div>                  <div class=»form-group»>                      {!! Form::label(‘register’, ‘Numero de registro’) !!}                      {!! Form::text(‘register’, null, [‘class’ => ‘form-control’ ]) !!}                  </div>                  <div class=»form-group»>                      {!! Form::submit(‘Enviar’, [‘class’ => ‘btn btn-success ‘ ] ) !!}                  </div>                {!! Form::close() !!}              </div>            </div>         </div>    </div></div>@endsection 

ahora creamos un controlador para clientes llamado ClientController

 $ php artisan make:controller ClientController 
 Route::get(‘client’, [‘as’ => ‘client’, ‘uses’ => ‘ClientController@index’]); Route::post(‘client’, [‘as’ => ‘client’, ‘uses’ => ‘ClientController@store’]); 

Creamos la funcion que nos retorna el formulario de registro

  public function index() { return \View::make(‘form’); } 

Si intentamos guardar nos aparecerá un error de validación en pantalla ya que definimos ciertos atributos al crear el formulario como ‘required = required’ y para el email no usamos un campo de texto sino uno de tipo email (Html5), por lo cual veremos algo como lo siguiente

En nuestro siguiente articulo te vamos a compartir más información de como hacer tus validaciones en Laravel. En los que trataremos los siguientes temas:

*Agregar validación

*Traducir los mensajes de validación de Laravel

Conservar los datos del formulario luego de un error de validación

Protección CSRF en Laravel

Protección CSRF de Laravel | XperimentalHamid


Laravel facilita la protección de su aplicación de los ataques de falsificación de solicitudes entre sitios (CSRF).

Las falsificaciones de solicitudes entre sitios son un tipo de exploit malicioso mediante el cual se ejecutan comandos no autorizados en nombre de un usuario autenticado.

Lo que hace Laravel es generar automáticamente un «token» CSRF para cada sesión de usuario activa, manejada por la aplicación.

Este token es usado para verificar que el usuario autenticado es quien en realidad está haciendo la petición a la aplicación.

En cualquier momento que definas un formulario HTML en tu aplicación, debes incluir un campo de token CSRF en el formulario con el propósito de que el middleware para protección CSRF pueda validar la solicitud.

Puedes usar la directiva de Blade @csrf para generar el campo de token:PHP

123456 <form method=»POST» action=»/profile»>    @csrf    …</form> 

El middleware VerifyCsrfToken, el cual es incluido en el grupo de middleware web, verificará automáticamente que el token en el campo de la solicitud coincida con el almacenado en la sesión.


Tokens CSRF y JavaScript

Al crear aplicaciones basadas en JavaScript, es conveniente que su biblioteca HTTP de JavaScript adjunte automáticamente el token CSRF a cada solicitud saliente.

De forma predeterminada, la biblioteca HTTP de Axios proporcionada en el archivo resources / js / bootstrap.js envía automáticamente un encabezado X-XSRF-TOKEN utilizando el valor de la cookie XSRF-TOKEN cifrada.

Si no está utilizando esta biblioteca, deberá configurar manualmente este comportamiento para su aplicación.


X-XSRF-TOKEN

Laravel almacena el token CSRF actual en una cookie XSRF-TOKEN cifrada que se incluye con cada respuesta generada por el marco. Puede usar el valor de la cookie para configurar el encabezado de solicitud X-XSRF-TOKEN.

Esta cookie se envía principalmente como una conveniencia, ya que algunos marcos y bibliotecas de JavaScript, como Angular y Axios, colocan automáticamente su valor en el encabezado X-XSRF-TOKEN en solicitudes del mismo origen.

Instalar Laravel en tu Mac sin servidores locales como LAMPP o XAMPP

De seguro ya estas cansado de servidores locales como XAMPP, LAMPP y parecidos, si quieres Laravel en tu Mac para hacer tus deploys sin historias, has elegido la plataforma correcta.

lo primero que vamos a necesitar es que instales MySQL en tu Mac.

  • Descárgate MySQL Server para MacOS en este enlace.
  • Ejecuta el archivo dmg que se ha descargado para que empiece la instalación.
  • Sigue el proceso de instalación, te pedirá, entre otras cosas la contraseña como root. Guárdatela.
Instalar MySQL en Mac

Luego te recomendamos instalar Workbench aunque vale cualquier cliente de base de datos como HeidiSQL o Dbeaver.

La instalación de esta herramienta es muy sencilla, tan solo debes descarga y ejecuta el archivo dmg.

Cuando ya tengas tu cliente, crea una base de datos y un usuario para esta. lo siguiente es instalar PHP.  Es sencillo, abre la Terminal y pon el siguiente comando:

curl -s http://php-osx.liip.ch/install.sh | bash -s 7.3

Si no deseas la versión 7.3, puedes cambiar el último parámetro por la versión que quieras. Por ejemplo: 7.2, 7.1 o 5.6. Si quieres Laravel 6, mejor que sea la 7.3.

luego verifica si el PHP está instalado correctamente vamos a ejecutar el siguiente comando:

export PATH=/usr/local/php5/bin:$PATH
php -v

Este último comando te dirá si está PHP y qué versión.

Ahora ya sólo queda instalar Laravel, y para ello, suelo utilizar Composer. Para instalar Composer sólo tienes que teclear los siguientes comandos en tu Terminal:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"

Bueno ahora ya tenemos Composer, solo nos queda instalar Laravel. y para ello vamos a utilizar el siguiente comando.

php composer.phar  create-project --prefer-dist laravel/laravel=6.0 NOMBRE_DEL_PROYECTO

Donde 6.0 es la versión de Laravel a instalar y NOMBRE_DEL_PROYECTO el nombre que quieres poner.

Para poder arrancar Laravel tienes que, desde la Terminal, entrar al proyecto y ejecutar:

php artisan serve

date cuenta que entres a http://127.0.0.1:8000 desde tu navegador para que veas Laravel funcionando.

Laravel funcionando en local

Ciclo de vida de aplicación en Laravel

Cuando usamos cualquier herramienta en el «mundo real», se siente más seguro si comprende cómo funciona esa herramienta. El desarrollo de aplicaciones no es diferente. Cuando comprenda cómo funcionan sus herramientas de desarrollo, se sentirá más cómodo y seguro al usarlas.

El objetivo de este articulo es brindarle una buena descripción general del alto nivel de cómo funciona el marco de Laravel.

Al conocer mejor el marco general, todo se siente menos «mágico» y tendrá más confianza en la construcción de sus aplicaciones. Si no comprende todos los términos de inmediato, no te preocupes Solo intente obtener una comprensión básica de lo que está sucediendo, y su conocimiento crecerá a medida que explore otras secciones de la documentación.

El punto de entrada para todas las solicitudes a una aplicación de Laravel es el archivo public / index.php. Todas las solicitudes son dirigidas a este archivo por la configuración de su servidor web (Apache / Nginx). El archivo index.php no contiene mucho código. Más bien, es un punto de partida para cargar el resto del marco.

El archivo index.php carga la definición de autocargador generada por Composer y luego recupera una instancia de la aplicación Laravel del script bootstrap / app.php. La primera acción realizada por Laravel es crear una instancia del contenedor de la aplicación / servicio.

A continuación, la solicitud entrante se envía al kernel HTTP o al kernel de la consola, según el tipo de solicitud que ingresa a la aplicación. Estos dos núcleos sirven como la ubicación central por donde fluyen todas las solicitudes. Por ahora, centrémonos en el kernel HTTP, que se encuentra en app / Http / Kernel.php.

El kernel HTTP extiende la clase Illuminate \ Foundation \ Http \ Kernel, que define una matriz de bootstrappers que se ejecutarán antes de que se ejecute la solicitud. Estos bootstrappers configuran el manejo de errores, configuran el registro, detectan el entorno de la aplicación y realizan otras tareas que deben realizarse antes de que la solicitud se maneje realmente.

El kernel HTTP también define una lista de middleware HTTP por el que deben pasar todas las solicitudes antes de ser manejadas por la aplicación. Estos middleware manejan la lectura y escritura de la sesión HTTP, determinando si la aplicación está en modo de mantenimiento, verificando el token CSRF y más.

La firma del método para el método handle del kernel HTTP es bastante simple: recibe una solicitud y devuelve una respuesta. Piense en el Kernel como una gran caja negra que representa toda su aplicación. Aliméntelo con solicitudes HTTP y devolverá respuestas HTTP.

Proveedores de servicio
Una de las acciones de arranque del kernel más importantes es cargar los proveedores de servicios para su aplicación. Todos los proveedores de servicios para la aplicación están configurados en la matriz de proveedores del archivo de configuración config / app.php. Primero, se llamará al método de registro en todos los proveedores, luego, una vez que se hayan registrado todos los proveedores, se llamará al método de arranque.

Los proveedores de servicios son responsables de arrancar todos los componentes del marco, como la base de datos, la cola, la validación y los componentes de enrutamiento. Dado que arrancan y configuran todas las funciones que ofrece el marco, los proveedores de servicios son el aspecto más importante de todo el proceso de arranque de Laravel.

Solicitud de envío
Una vez que se ha iniciado la aplicación y se han registrado todos los proveedores de servicios, la solicitud se entregará al enrutador para su envío. El enrutador enviará la solicitud a una ruta o controlador, así como ejecutará cualquier middleware específico de ruta.

Centrarse en los proveedores de servicios
Los proveedores de servicios son realmente la clave para iniciar una aplicación Laravel. Se crea la instancia de la aplicación, se registran los proveedores de servicios y se entrega la solicitud a la aplicación de arranque. ¡Es realmente así de simple!

Tener un conocimiento firme de cómo se construye y arranca una aplicación de Laravel a través de proveedores de servicios es muy valioso. Los proveedores de servicios predeterminados de su aplicación se almacenan en el directorio de proveedores / aplicaciones.

De forma predeterminada, AppServiceProvider está bastante vacío. Este proveedor es un gran lugar para agregar los enlaces de contenedores de servicio y arranque de su propia aplicación. Para aplicaciones grandes, es posible que desee crear varios proveedores de servicios, cada uno con un tipo de arranque más granular.

Middlewares en Laravel

En este presente artículo vamos a ver qué es y como crear middlewares para nuestra aplicación Laravel.

veremos un uso muy útil de éstos, como puede ser el control de nuestras rutas cuando se encuentre en mantenimiento nuestra página.

¿Pero Qué son los middleware en laravel?

Un middleware en laravel es una clase que funciona como filtro en las rutas, es decir, podemos añadirle a nuestra ruta o grupo de rutas.

un middelware para restringir por ejemplo el acceso a éstas si un usuario no está autentificado en nuestra aplicación, como podrían ser las rutas donde el administrador gestiona su aplicación laravel.

El middleware más conocido y utilizado en laravel es uno de los que ya vienen creado por defecto, que es el middleware authenticate, que controla si un usuario esta logeado en nuestra aplicación.

Si añadiesemos el middleware de autenticación en nuestras rutas y el middleware comprobase que el usuario no esta autenticado lo redireccionaría por defecto a la ruta de login.

¿Como crear nuestro middelware en Laravel?

Para este ejemplo vamos a crear un middelware que comprobará si nuestra aplicación esta en modo mantenimiento.

de ser así redireccionaría al usuario a la vista donde aparecerá el mensaje de mantenimiento que crearemos más adelante.

Ahora crearemos nuestro middelware, que llamaremos «Maintenance», con el siguiente comando en nuestra consola:

php artisan make:middleware Maintenance

Una vez ejecutado este comando, lo encontraremos en la carpeta Middleware que se encuentra en la ruta  app/http/Middleware con el nombre de Maintenance.php. 

Ahora vamos a registrar el middleware en nuestra aplicación, para ello iremos a Kernel.php que se encuentra en la carpeta App/Http y nos dirijimos abajo del todo y añadimos en el array $routeMiddelware nuestro nuevo middelware:

protected $routeMiddleware = [
   ...
   ...
   'maintenance' => \App\Http\Middleware\Maintenance::class,

Ahora vamos a crear una nueva tabla en nuestra base de datos que será la encargada de guardar nuestra configuración de la aplicacion, como el mantenimiento de la página:

public function up()
{
   Schema::create('configurations', function (Blueprint $table) {
     $table->increments('id');
     $table->string('name');
     $table->boolean('state');
     $table->timestamps();
    });
}

guardaremos en nuestra tabla algo así, donde la columna state será el estado del mantenimiento (1 En mantenimiento, 0 No está en mantenimiento):

middelware laravel

Una vez hecho esto, iremos a nuestro middleware app/http/Middleware y añadiremos este código:

<?php

namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
use Closure;
use App\Configuration; //Recordar el modelo configuration para poder llamar a nuestra tabla

class Maintenance
 {
 /**
 * Handle an incoming request.
 *
 * @param \Illuminate\Http\Request $request
 * @param \Closure $next
 * @return mixed
 */
  public function handle($request, Closure $next)
   {
     if(Configuration::where(name, "mantenimiento")->state && !Auth::check()){
        return redirect('/mantenimiento');
      }
     return $next($request);
   }
 }

En la función handle añadimos la siguiente condición: «Si nuestra página está en modo mantenimiento y no estamos logeados, redirecciona a la ruta de mantenimiento».

Añadimos la comprobación de auth:check para comprobar si estamos logeados,en este caso damos por hecho que  solo el administrador puede logearse, si cualquier usuario pudiese registrarse a nuestra página entonces deberiamos cambiar esta condición y añadir si el usuario que esta logeado no es administrador.

Ahora iremos a nuestro archivo web.php que es donde se administran nuestra rutas y añadiremos nuestro middleware:

Route::group(['middleware' => ['maintenance']], function () {

/*Todas las rutas que esten en este grupo estaran restringidas si nuestro aplicacion esta
en mantenimiento y se restringira su paso si la pagina esta en mantenimiento.*/

 Route::get('/', function () {
   return view('welcome');
 });
 Route::get('/sobre-nosotros', function () {
   return view('about');
 });
 Route::get('/contactar', function () {
   return view('contact');
 });
});

//esta es la ruta a la que redireccinaremos si esta en mantenimiento, habría que crear la vista maintenance o como quieras llamarla.

 Route::get('/mantenimiento', function () {
   return view('maintenance');
 });

Después de esto, solo quedaría crear una vista que mostrase un mensaje tipo : «Esta página esta en mantenimiento, vuelve pronto».

De esta forma ya tendriamos nuestro middelware listo.

¿Qué es CRUD?

Es un acrónimo para las maneras en las que se puede operar sobre información almacenada. usualmente se refiere a operaciones llevadas a cabo en una base de datos o un almacén de datos,  también pude aplicar a funciones de un nivel superior de una aplicación como soft donde la información no es realmente eliminada, sino es marcada como eliminada a tráves de un estatus.

CRUD hace referencia a las cuatro operaciones fundamentales de aplicaciones persistentes en sistemas de bases de datos:

  • Create: (Crear registros)
  • Read: Retrieve (Leer registros)
  • Update: (Actualizar registros)
  • Delete: Destroy (Borrar registros)

CRUD resume las funciones requeridas por un usuario para crear y gestionar datos, dichas operaciones están específicamente adaptadas a los requisitos del sistema y de usuario ya sea para la gestión de bases de datos o para el uso de aplicaciones.

Dependiendo de la configuración regional, las operaciones CRUD pueden implementarse de diferentes maneras, como lo muestra la siguiente tabla:

CRUD-OperationSQLRESTful HTTPXQuery
CreateINSERTPOST, PUTinsert
ReadSELECTGET, HEADcopy/modify/return
UpdateUPDATEPUT, PATCHreplace, rename
DeleteDELETEDELETEdelete

Frameworks CRUD: capa de acceso a las bases de datos

CRUD demanda varios pasos de transacción, de forma que los datos no se recogen una vez se han introducido, sino que es necesario pulsar la opción “Guardar” o “Continuar”. 

 framework CRUD pueden aplazarse para ser ejecutadas en diferentes plazos este hecho resulta de gran importancia para sistemas multiusuario, pues permite que varias personas lean los mismos datos al mismo tiempo.

Existen numerosos frameworks con un concepto CRUD basados en diferentes lenguajes y plataformas. A continuación, presentamos algunos ejemplos:

Lenguaje o plataformaFramework
JavaSpring, JDBC (The Java Database Connectivity), Hibernate, JBoss Seam, Isis
PHPLaravel, Yii, CakePHP, Zikula, Symfony, TYPO3 Flow
PerlCatalyst, Gantry
PythonDjango, SQLAlchemy, web2py
GroovyGrails
.NETNHibernate, ADO.NET/Entity Framework
RubyRuby on Rails
JavaScriptBackbone.js, Angular

Cómo desarrollar un CRUD PHP grid para tu base de datos.

En este momento te vamos a enseñar cómo crear una interfaz de arranque para MySQL, el sistema de base de datos más utilizado, que permita el acceso a través operaciones CRUD.

Para manipular la base de datos se utiliza, en este caso, el lenguaje de script del lado del servidor PHP y la extensión PHP Data Objects (PDO).

1. El primer paso consiste en crear una tabla de base de datos simple que pueda ser manipulada con operaciones CRUD a lo largo de este tutorial. Para ello, importa la siguiente tabla de ejemplo en tu base de datos MySQL:

CREATE TABLE `customers` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 100 ) NOT NULL ,
`email` VARCHAR( 100 ) NOT NULL ,
`mobile` VARCHAR( 100 ) NOT NULL
) ENGINE = INNODB;

La tabla se utiliza para recopilar información del usuario como nombre, correo electrónico y número de teléfono.

A cada entrada se le asigna automáticamente una clave principal (AUTO_INCREMENT PRIMARY KEY), es decir un identificador único.

en el siguiente paso vamos a  regular las conexiones de apertura y de cierre de la base de datos. 

Luego crea un archivo PHP con el nombre database.php y añade la siguiente secuencia de comandos con la clase “Database” para gestionar las conexiones de la base de datos.

<?php
class Database 
{
private static $dbName = 'nombre_de_la_basededatos'; 
private static $dbHost = 'localhost';
private static $dbUsername = 'nombre_de_usuario';
private static $dbUserPassword = 'contraseña';

private static $cont = null;

public function __construct() {
die('Init-Función no permitida');
}

public static function connect() {
// Permitir solo una conexión para la totalidad del acceso
if ( null == self::$cont )
{
  try
  {
    self::$cont = new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);
  }
  catch(PDOException $e)
  {
    die($e->getMessage());
  }
} 
return self::$cont;
}

public static function disconnect()
{
self::$cont = null;
}
}

debemos tomar en cuenta que para formar la estructura esencial, es necesario concentrarse en la realización de las diferentes operaciones CRUD. 

Enseguida vamos a poner en marcha la operación create en la que  se necesita otra página HTML con campos de formulario para introducir los datos de usuario vinculados en index.php y a los que se puede acceder a través de un botón en la interfaz Bootstrap.

Para mayor comodidad se recomienda comenzar con la creación de este botón, abriendo index.php y añadiendo el siguiente fragmento de código al elemento <div class=»row»> de la tabla:

<p>
  <a href="create.php" class="btn btn-success">Create</a>
</p>

En el fragmento de código puedes ver que los datos se están vinculando al archivo create.php, aunque este todavía no exista.

Al realizar una prueba del grid de Bootstrap, esta muestra que hay un botón pero, al hacer clic sobre él, este dirige a una página de error.

Para finalizar y hacer válida la operación create debes crear el archivo create.php y añadir el siguiente código:

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>

<body>
<div class="container">

<div class="span10 offset1">
<div class="row">
<h3>Create a Customer</h3>
</div>

<form class="form-horizontal" action="create.php" method="post">
<div class="form-group <?php echo !empty($nameError)?'has-error':'';?>">
<label class="control-label">Name</label>
<div class="controls">
<input name="name" type="text" placeholder="Nombre" value="<?php echo !empty($name)?$name:'';?>">
<?php if (!empty($nameError)): ?>
<span class="help-inline"><?php echo   $nameError;?></span>
<?php endif; ?>
</div>
</div>
<div class="form-group <?php echo !empty($emailError)?'has-error':'';?>">
<label class="control-label">E-Mail-Adresse</label>
<div class="controls">
<input name="email" type="text" placeholder="Correo Electrónico" value="<?php echo !empty($email)?$email:'';?>">
<?php if (!empty($emailError)): ?>
<span class="help-inline"><?php echo   $emailError;?></span>
<?php endif;?>
</div>
</div>
<div class="form-group <?php echo !empty($mobileError)?'has-error':'';?>">
<label class="control-label">Móvil</label>
<div class="controls">
<input name="mobile" type="text" placeholder="Mobilnummer" value="<?php echo !empty($mobile)?$mobile:'';?>">
<?php if (!empty($mobileError)): ?>
<span class="help-inline"><?php echo $mobileError;?></span>
<?php endif;?>
</div>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-success">Create</button>
<a class="btn" href="index.php">Back</a>
</div>
</form>
</div>

</div> <!-- /container -->
</body>
</html>

El código genera el formulario HTML que permite personalizar la información en los campos nombre, correo electrónico y móvil.

Para cada casilla se crea una variable PHP que, en combinación con el fragmento de código que presentamos a continuación. genera mensajes de error cuando no se realiza ninguna entrada en el campo correspondiente:

<?php 

require 'database.php';

if ( !empty($_POST)) {
// Detectar errores de validación 
$nameError = null;
$emailError = null;
$mobileError = null;

// Capturar valores de entrada
$name = $_POST['name'];
$email = $_POST['email'];
$mobile = $_POST['mobile'];

// Validar entrada
$valid = true;
if (empty($name)) {
$nameError = Por favor, introduce tu nombre';
$valid = false;
}

if (empty($email)) {
$emailError = 'Por favor, introduce una dirección de correo electrónico';
$valid = false;
} else if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
$emailError = 'Por favor, introduce una dirección de correo electrónico';
$valid = false;
}

if (empty($mobile)) {
$mobileError = 'Por favor, introduce tu número de móvil';
$valid = false;
}

// Daten eingeben
if ($valid) {
     $pdo = Database::connect();
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = "INSERT INTO customers (name,email,mobile) values(?, ?, ?)";
     $q = $pdo->prepare($sql);
     $q->execute(array($name,$email,$mobile));
     Database::disconnect();
     header("Location: index.php");
}
      }
?>

de esta forma emos logrado crear una página create.php a la que se accede haciendo clic en el botón crear y que permite al usuario introducir su información.

¿Qué es el formato de imágenes SVG y para que sirve?

Gráficos vectoriales escalables - Wikipedia, la enciclopedia libre

Algunas vez te ha ocurrido que cuando deseas ampliar una imagen se ha “pixelado” se ha perdido la definición al intentar aumentar su tamaño. Esto ocurre con las imágenes estándar (mapa de bits), como los archivos .jpg, .png, .gif, etc. Pero no con las imágenes vectoriales.  A diferencia, de los mapas de bits, las imágenes vectoriales pueden ser redimensionada al tamaño que deseas sin perder calidad de imagen.

Una de las ventaja que tienen este tipo de imágenes es que tienen un tamaño menor a diferencias de las estándar. por ellos las personas que se dedican a elaborar vallas publicitarias la utilizan ya que les brinda mejoras en su trabajos realizados.

vamos a definir que es una imagen SVG (Scalable Vector Graphics), son Gráficos Vectoriales Redimensionables, es un formato de gráficos vectoriales bidimensionales, tanto estáticos como animados, en formato XML. Este tipo de formato se convirtió en una recomendación del W3C en septiembre de 2001 con el que todos los navegadores fueron renovándose para poder soportar este formato. este formato son escasos las personas que lo utilizan, pero es muy útil, por ejemplo, en entornos web. La mayoría de la gente utiliza archivos de mapas de bits como JPG. O PNG y GIF si se necesita un fondo transparente o una imagen animada.

El formato SVG (Scalable Vector Graphics) es equivalente al que se utiliza en los populares programas como Adobe Illustrator o Corel Draw. En segundo lugar, es un estándar abierto y compatible. El formato Flash, que también es vectorial, era propiedad de Macromedia y, después de la absorción, era propiedad de Adobe, con los quebraderos de cabeza que ha ocasionado en los usuarios de Apple.

 Al principio, no se podía usar en todos los navegadores pero actualmente todos los navegadores lo soportan: Google Chrome, Firefox, Safari… No obstante, al ser un formato basado en XML hay que tener nociones de escritura de código para hacer que funcione adecuadamente allí donde lo usemos. En tercer lugar, los archivos SVG permiten utilizar las tipografías (tipos de letra) con trazados y también permite incluirlas dentro del propio archivo en formato TrueType y Tipo 1. Esto ofrece una gran capacidad para que los motores de búsqueda sean capaces de indexarlo; con lo que ello significa para mejorar el SEO (Search Engine Optimization).

como cuarto punto tenemos que los archivos SVG soportan estilos CSS, de tal manera que si cambiamos el estilo de nuestra web también se cambiará dentro del archivo. Por último, ayudan en el diseño responsive, es decir, facilitan el diseño de web apps que se adapten a cualquier pantalla, ya sea de un ordenador, de una tablet o de un smartphone.

Así pues, este formato vectorial además de ofrecer ventajas para el diseño gráfico en general, ofrece muchas oportunidades para los entornos digitales como las web apps de una marca. Si se está realizando una campaña de marketing digital y se quiere diseñar los diferentes gráficos que formaran parte de una web, este es el formato óptimo a utlizar para la elaboración de la misma.