miércoles, 2 de diciembre de 2020
¿Sabes quien es el Chema Alonso? ¿Sabes que es un Hacker? aclaralo e inspirante
sábado, 5 de septiembre de 2020
Historia de los Hackers Informáticos [ Los inicios ] Documental - Discovery Chanel
DOCUMENTAL QUE TODO INFORMÁTICO DEBE DE CONOCER
sábado, 22 de agosto de 2020
viernes, 14 de agosto de 2020
leyendas de la programación y el desarrollo de software
Leyendas de la programación y el desarrollo de software
domingo, 24 de mayo de 2020
Lenguajes de programación de Software mejor pagados en México 2019
Estos son los lenguajes de programación de software mejor pagados en México
Una de las preguntas más frecuentes que suelen tener los estudiantes universitarios de carreras a fines en programación, es el lenguaje de software que deben elegir para especializarse.
Si bien, las tecnologías han demostrado ser un sector de constante cambio, el desarrollo de software que lo respalda también lo es, y es por esta razón que resulta interesante continuar el aprendizaje de nuevos lenguajes y mantenerse al día de las tendencias en la industria.
El estudio
Según el estudio realizado por Software Guru a finales de 2018, con una muestra poblacional de 2,075 profesionistas en el país con actividad en el sector, el promedio mensual en el area es de $33,000 moneda nacional, 52% son titulados de universidad. Sin embargo esto no quiere decir que todas los lenguajes reciban la misma percepción económica, cabe mencionar que el nivel de ingles que se tenga también afecta abruptamente el sueldo, así como los años de experiencia y otros dominios que se tengan.
Lenguajes mejor pagados
Los lenguajes de programación arrojados de este proyecto reflejan que Elixir tiene de momento una implementación baja en esta muestra con 32 personas, sin embargo resulta ser la mejor pagada con sueldo promedio de $54,000 pesos al mes. El segundo lugar lo lleva Go con 34 personas y un sueldo promedio de $46,800 y en tercer lugar se encuentra Ruby con más implementación (112 personas) con sueldo promedio de $42,000.
Otros lenguajes como Python, Java y PHP son de los más populares y con mayor cantidad poblacional lo que repercute en que los sueldos bajen a $35,000, $32,000 y $20,000 respectivamente.
Vale la pena observar que los primeros tres se debe a que hay poca oferta y más demanda, eso no significa que sean las más buscadas.
Experiencia
En esta investigación también se logró apreciar que el salario medio de los primeros 7 años se mantiene lineal con un incremento de 5 mil pesos anual por año de experiencia, a partir del octavo año el salario se estabiliza al rededor de los 40 mil pesos mensuales.
Si bien el titulo universitario continúa siendo un requisito en muchas empresas, resulta importante agregar certificaciones y proyectos en linea que puedan consultar los reclutadores. Una buena practica es tener un portafolio en plataformas como Git Hub.
Tomado de Digital El Heraldo de México
miércoles, 25 de marzo de 2020
3.-Requerimientos de PHP y Cambios en Yii2
Requerimientos de PHP
- Namespaces
- Funciones anónimas
- La sintaxis corta de Arrays [...elementos...] es utilizada en vez de array(...elementos...).
- Etiquetas cortas de echo. Ahora en las vistas se usa <?=. Esto se puede utilizar desde PHP 5.4.
- SPL - Biblioteca estándar de PHP.
- Enlace estático en tiempo de ejecución.
- Fecha y Hora,
- Traits.
- intl. Yii 2.0 utiliza la extensión intl de PHP como soporte para internacionalización.
En el ejemplo anterior, se declaran dos escenarios: backend y frontend. Para el escenario backend son considerados seguros ambos atributos, email y role, y pueden ser asignados masivamente. Para el escenario frontend, email puede ser asignado masivamente mientras role no. Tanto email como role deben ser validados utilizando reglas (rules).
El método rules() aún es utilizado para declara reglas de validación.
Ten en cuenta que dada la introducción de scenarios(), ya no existe el validador unsafe.
En la mayoría de los casos, no necesitas sobrescribir scenarios() si el método rules() especifica completamente los escenarios que existirán, y si no hay necesidad de declarar atributos inseguros (unsafe).
Yii 2.0 utiliza yii\web\Controller como controlador base, similar a CWebController en Yii 1.1. yii\base\Action es la clase base para clases de acciones.
El impacto más obvio de estos cambios en tu código es que que cada acción del controlador debe devolver el contenido que quieres mostrar en vez de mostrarlo directamente:
Yii 2.0 utiliza yii\base\Widget como clase base de los widgets, similar a CWidget en Yii 1.1.
Para obtener mejor soporte del framework en IDEs, Yii 2.0 introduce una nueva sintaxis para utilizar widgets. Los métodos estáticos begin(), end(), y widget() fueron incorporados, y deben utilizarse así:
Temas
Los temas funcionan completamente diferente en Yii 2.0. Ahora están basados en un mecanismo de mapeo de rutas, que mapea la ruta de un archivo de la vista de origen a uno con un tema aplicado. Por ejemplo, si el mapeo de ruta de un tema es [’/web/views’ => ’/web/themes/basic’], entonces la versión con el tema aplicado del archivo /web/views/site/index.php sería /web/themes/basic/site/index.php. Por esta razón, ahora los temas pueden ser aplicados a cualquier archivo de la vista, incluso una vista renderizada fuera del contexto de un controlador o widget.
Ademas, el componente CThemeManager ya no existe. En cambio, theme es una propiedad configurable del componente view de la aplicación.
Filtros de Acciones
Los filtros de acciones son implementados a través de comportamientos.
Para definir un nuevo filtro personalizado, se debe extender de yii\base\ActionFilter. Para utilizar el filtro, conecta la clase del filtro al controlador como un comportamiento. Por ejemplo, para utilizar el filtro yii\filters\AccessControl, deberías tener el siguiente código en el controlador:
Assets
Yii 2.0 introduce un nuevo concepto llamado asset bundle que reemplaza el concepto de script package encontrado en Yii 1.1.
Un asset bundle es una colección de archivos assets (ej. archivos JavaScript, archivos CSS, imágenes, etc.) dentro de un directorio. Cada asset bundle está representado por una clase que extiende de yii\web\AssetBundle. Al registrar un asset bundle a través de yii\web\AssetBundle::register(), haces que los assets de dicho bundle sean accesibles vía Web. A diferencia de Yii 1, la página que registra el bundle contendrá automáticamente las referencias a los archivos JavaScript y CSS especificados en el bundle.
Helpers
Yii 2.0 introduce muchos helpers estáticos comúnmente utilizados, incluyendo:
yii\helpers\Html
yii\helpers\ArrayHelper
yii\helpers\StringHelper
yii\helpers\FileHelper
yii\helpers\Json
Formularios
Yii 2.0 introduce el concepto de campo (field) para construir formularios utilizando yii\widgets\ActiveForm. Un campo es un contenedor que consiste en una etiqueta, un input, un mensaje de error y/o texto de ayuda.
Un campo es representado como un objeto ActiveField. Utilizando estos campos, puedes crear formularios máas legibles que antes:
Constructor de Consultas
En Yii 1.1, la generaci´on de consultas a la base de datos estaba dividida
en varias clases, incluyendo CDbCommand, CDbCriteria, y CDbCommandBuilder. Yii
2.0 representa una consulta a la base de datos en t´erminos de un objeto Query que puede ser convertido en una declaraci´on SQL con la ayuda de QueryBuilder detr´as de la escena. Por ejemplo:
Lo mejor de todo, dichos métodos de generación de consultas pueden ser también utilizados mientras se trabaja con Active Record.
Active Record (ESTE ES MANEJADOR DE LA BD)
Yii 2.0 introduce muchísimos cambios con respecto a Active Record. Los dos más obvios se relacionan a la generación de consultas y al manejo de relaciones.
La clase de Yii 1.1 CDbCriteria es reemplazada por yii\db\ActiveQuery en Yii 2. Esta clase extiende de yii\db\Query, y por lo tanto hereda todos los métodos de generación de consultas. Para comenzar a generar una consulta, llamas al método yii\db\ActiveRecord::find():
Para declarar una relación, simplemente define un método getter que devuelva un objeto ActiveQuery. El nombre de la propiedad definida en el getter representa el nombre de la relación. Por ejemplo, el siguiente código declara una relación orders (en Yii 1.1, las relaciones se declaraban centralmente en el método relations()):
Ahora puedes utilizar $customer->orders para acceder a las ´ordenes de la tabla relacionada. También puedes utilizar el siguiente código para realizar una consulta relacional ‘sobre la marcha’ con una condición personalizada:
$orders = $customer->getOrders()->andWhere(’status=1’)->all();
Cuando se utiliza la carga temprana (eager loading) de la relación, Yii 2.0 lo hace diferente de 1.1. En particular, en 1.1 una declaración JOIN sería creada para seleccionar tanto los registros de la tabla primaria como los relacionados. En Yii 2.0, dos declaraciones SQL son ejecutadas sin utilizar un JOIN: la primera trae todos los modelos primarios, mientras que la segunda trae los registros relacionados utilizando como condición la clave primaria de los primarios.
En vez de devolver objetos ActiveRecord, puedes conectar el método asArray() mientras generas una consulta que devuelve un gran número de registros. Esto causará que el resultado de la consulta sea devuelto como arrays, lo que puede reducir significativamente la necesidad de tiempo de CPU y memoria si el número de registros es grande. Por ejemplo:
$customers = Customer::find()->asArray()->all();
Otro cambio es que ya no puedes definir valores por defecto a los atributos a través de propiedades públicas. Si lo necesitaras, debes definirlo en el método init de la clase del registro en cuestión.
Anteriormente, sol´ıa haber algunos problemas al sobrescribir el constructor de una clase ActiveRecord en 1.1. Estos ya no están presentes en Yii 2.0. Ten en cuenta que al agregar parámetros al constructor podrías llegar a tener que sobrescribir yii\db\ActiveRecord::instantiate().
Hay muchos otros cambios y mejoras con respecto a ActiveRecord
Active Record Behaviors
En 2.0, hemos eliminado la clase del comportamiento base CActiveRecordBehavior . Si desea crear un comportamiento Active Record, usted tendrá que extender directamente de yii\base\Behavior. Si la clase de comportamiento debe responder a algunos eventos propios, usted tiene que sobrescribir los métodos events() como se muestra a continuación,
User e IdentityInterface
La clase CWebUser de 1.1 es reemplazada por yii\web\User, y la clase CUserIdentity ha dejado de existir. En cambio, ahora debes implementar yii\web\IdentityInterface el cual es mucho más directo de usar. El template de proyecto avanzado provee un ejemplo así.
Manejo de URLs
El manejo de URLs en Yii 2 es similar al de 1.1. Una mejora mayor es que el manejador actual ahora soporta parámetros opcionales. Por ejemplo, si tienes una regla declarada como a continuación, entonces coincidir´a tanto con post/popular como con post/1/popular. En 1.1, tendrías que haber creado dos reglas diferentes para obtener el mismo resultado
[
’pattern’ => ’post/<page:\d+>/<tag>’,
’route’ => ’post/index’,
’defaults’ => [’page’ => 1],
]
Un cambio importante en la convención de nombres para rutas es que los nombres en CamelCase de controladores y acciones ahora son convertidos a minúsculas y cada palabra separada por un guión, por ejemplo el id del controlador CamelCaseController será camel-case.
Tomado de la Guía Definitiva de Yii 2.0
Quiang Xue, Alexander Makarov, Carsten Brandt, Klimov Paul y Toda la comunidad de Yii2
martes, 24 de marzo de 2020
2.-Corriendo la Aplicación creada en Yii2
Después de haber instalado Yii, tienes una aplicación totalmente funcional a la que se puede acceder a través de la URL
http://hostname/avanzada/web/index.php
o http://hostname/index.php
, dependiendo de tu configuración. Esta sección será una introducción a la funcionalidad incluida de la aplicación, cómo se organiza el código, y cómo la aplicación maneja los requests en general.La versión instalada en tu caso es la avanzada.
Funcionalidad
- página principal, mostrada cuando se accede a la URL
http://hostname/index.php
, - página "Acerca de (About)",
- la página "Contacto (Contact)", que muestra un formulario de contacto que permite a los usuarios finales contactarse vía email,
- y la página "Login", que muestra un formulario para loguearse que puede usarse para autenticar usuarios. Intenta loguearte con "admin/admin", y verás que el elemento "Login" del menú principal cambiará a "Logout".
yii
, localizado en el directorio base de la aplicación. El script puede ser utilizado para ejecutar tareas de fondo y tareas de mantenimiento de la aplicación, las cuales son descritas en la Sección de Aplicación de Consola.Estructura de la aplicación
basic
): tu tienes la avanzada y por lo tanto hay más elementos en la estructurabasic/ base path de la aplicación
composer.json archivo utilizado por Composer, describe información de sus paquetes y librerías
config/ contiene la configuración de las aplicaciones (y otras)
console.php configuración de la aplicación de consola
web.php configuración de la aplicación web
commands/ contiene las clases de comandos de consola
controllers/ contiene las clases de los controladores
models/ contienes las clases del modelo
runtime/ contiene archivos generados por Yii en tiempo de ejecución, como archivos de log y cache
vendor/ contiene los paquetes y librerías instalados por Composer, incluyendo el propio núcleo de Yii
views/ contiene los archivos de vistas (templates)
web/ raíz web de la aplicación, contiene los archivos accesibles vía Web
assets/ contiene los assets publicados (javascript y css) por Yii
index.php el script de entrada (o bootstrap) de la aplicación
yii el script de ejecución de los comandos de consola de Yii
models
contiene todas las clases del modelo, el directorio views
contiene todas las vistas (templates), y el directorio controllers
contiene todas las clases de controladores.web/index.php
que es el único script PHP accesible vía web. El script de entrada toma una petición (request) entrante y crea una instancia de una aplicación para manejarlo. La aplicación resuelve la petición (request) con la ayuda de sus componentes, y la envía al resto de los elementos MVC. Los widgets son usados en las vistas para ayudar a construir elementos de interfaz complejos y dinámicos.Ciclo de Vida de una Petición (Request)
- Un usuario realiza una petición al script de entrada
web/index.php
. - El script de entrada carga la configuración de la aplicación y crea una instancia de la aplicación para manejar la consulta.
- La aplicación resuelve la ruta solicitada con la ayuda del componente request de la aplicación.
- La aplicación crea una instancia de un controlador para manejar la petición.
- El controlador crea una instancia de una acción y ejecuta los filtros de dicha acción.
- Si alguno de los filtros falla, la acción es cancelada.
- Si todos los filtros pasan, la acción es ejecutada.
- La acción carga datos del modelo, posiblemente de la base de datos.
- La acción renderiza una vista, pasándole los datos del modelo cargado.
- El resultado de la renderización es pasado al componente response de la aplicación.
- El componente response envía el resultado de la renderización al navegador del usuario.