domingo, 4 de diciembre de 2016
martes, 29 de noviembre de 2016
Escribe en tu Smartphone con este teclado láser
Escribe en tu Smartphone con este teclado láser
iKeybo es la novedad en el mundo de la telefonía móvil. Unos de los mayores problemas que han tenido siempre las pantallas táctiles, es la incomodidad a la hora de escribir un documento. De esta forma Serafim Tech quiere revolucionar el mercado de los teclado.
Un teclado virtual, creado mediante un láser, y proyectado sobre la mesa, permitirá al usuario realizar una escritura similar a la de un teclado convencional.
iKeybo, la novedad está en el láser
Seguramente te preguntarás como funcionada el dispositivo. Este aparato, del tamaño de una batería externa, lleva un reconocimiento de pulsaciones de las teclas, de manera que detectará mediante un calculo de distancias la tecla que queremos tocar.
Como veis en el vídeo que os dejamos a continuación, el terminal se colocaría en posición horizontal sobre el laser. De esta forma el teclado se proyectaría en la superficie y todo estaría listo para teclear.
Deciros que cuenta con compatibilidad iOS y Android y las conexiones se realizan mediante bluetooth. Además incorpora una batería de 2000 mAh, que sería suficiente para poder estar escribiendo durante unas 10 horas.
En cuanto al precio, lo podremos encontrar por unos 89 dólares en la página de KickStarter y con unas fechas de entrega estimada para los primeros días de mayo de 2017.
Además comentaros que la empresa está llevando a cabo un proceso de patrocinación para llegar hasta los 50.000 dólares. Actualmente llevan unos 39.000 aproximadamente y puede participar cualquier persona.
¿Qué os parece este nuevo teclado?
miércoles, 16 de noviembre de 2016
¿COMO SABER LA PUERTA DE ENLACE DE MI ROUTER?
¿PARA QUÉ SIRVE UNA PUERTA DE ENLACE?
¿QUÉ SE PUEDE CONFIGURAR EN UN MODEM MEDIANTE LA PUERTA DE ENLACE?
- Conectarte a internet.
- Establecer reglas de filtrado web.
- Configurar la señal WIFI como establecer contraseñas y canales de emisión.
- Establecer seguridad WPS u otras que permita el wifi de tu equipo.
- Controlar qué dispositivos se conectan a tu red mediante filtrado de direccion MAC.
- Port forwarding, triggering, Dmz y Qos.
- Configurar el firewall del modem como abrir o cerrar puertos.
- Establecer o modificar usuarios con privilegios para configurar el modem.
- otras acciones propias de cada compañía fabricante del router.
SABER PUERTA DE ENLACE PREDETERMINADA EN WINDOWS
CÓMO SABER LA PUERTA DE ENLACE PREDETERMINADA EN MAC OS Y LINUX
DIFERENTES PUERTAS DE ENLACE
DIRECCIONES IP DE PUERTAS DE ENLACE PREDETERMINADAS
- Si tienes un router Linksys, Gabriel de tecnología.net nos explica que es la dirección IP 192.168.1.1 También si eres de España la mayoría de las empresas utilizan modems con esa ip como puerta de enlace.
- Si tu router es AIRLINK la puerta de enlace es la dirección ip 192.268.2.1, el usuario es ADMIN y la contraseña es admin.
- Si eres de México es muy probable que tengas internet de Telmex acá infinitum, los routers son huawei, thompson, echolife entre otros pero en todos los casos la puerta de enlace predeterminada es 192.168.1.254 y el usuario del modem es TELMEX en mayúsculas, la contraseña es la clave WEP de conexión WIFI.
- Si eres de México y tienes internet de Axtel, lo mas probable es que tu modem tenga la ip192.168.0.1 . En los modems de Axtel el usuario es ADMIN y la contraseña es en blanco solo le das aceptar.
Microsoft integra un CRM en Outlook para agilizar la gestión de clientes en la pyme
Microsoft integra un CRM en Outlook para agilizar la gestión de clientes en la pyme
Hoy Microsoft ha dado un paso más para tratar de atraer a las empresas más pequeñas hacia sus productos en la nube. En concreto hacia Office 365, integrando un CRM en Oulook para agilizar la gestión de clientes en la pyme que será gratuito para aquellos que sean suscriptores del plan Empresa Premium.
De esta forma en el correo de los usuariosaparece un icono más, Gestión de clientes, desde donde todos los usuarios podrán ver todas las interacciones que hemos tenido con él. Esto facilita mucho la atención por otros empleados de clientes que normalmente lleva uno de ellos, sin tener que repetir o volver a contarnos lo que necesitan.
Además la herramienta ayuda a automatizar datos recogiendo información del propio correo electrónico, del calendario e incluso del registro de llamadas. Dicha información estará disponible para todos los usuarios de la empresa, de manera que siempre será accesible por cualquiera. Es una forma de evitar que el correo se convierta en cuello de botella para la productividad en la empresa.
Además también estará disponible en las aplicaciones de Office móviles, empezando por los usuarios de iOS, mientras que los de Android tendrán que esperar un poco más para tener esta funcionalidad disponible en su app. Lógicamente las empresas deben valorar si el coste que tienen que pagar por usuario, 10,50 en este caso, merece o no la pena respecto a la aplicación instalada en local.
Se trata de un software de gestión de clientes sencillo, muy fácil de utilizar para aquellas empresas que no necesitan aplicaciones como Dynamics CRM. La gran ventaja es lo rápido que se puede desplegar en la organización, así como la curva de aprendizaje que será muy corta. Es una buena opción para la pyme y un motivo más para llevarse a la nube la gestión del correo y el resto de aplicaciones ofimáticas y de comunicación de la empresa.
sábado, 12 de noviembre de 2016
Explota un smartphone Samsung y no es Note 7
Una mujer en Francia, usuaria de un smartphone Galaxy J5 de Samsung —diferente al Galaxy Note 7 que ha sido retirado del mercado— indicó que su dispositivo se incendió y explotó.
Lamya Bouyirdane declaró que se percató que el teléfono estaba muy caliente cuando le pidió a su hijo de 4 años que se lo pasara durante una reunión familiar en su casa el domingo. Señaló que arrojó el teléfono cuando vio que se “había hinchado” y le salía humo.
Dejen sus comentarios..
viernes, 11 de noviembre de 2016
Publicidad falsa circula en WhatsApp
domingo, 30 de octubre de 2016
Reconocimiento Facial con PHP
Reconocimiento Facial con PHP
<?php
class Face_Detector {
protected $detection_data; protected $canvas; protected $face; private $reduced_canvas; #El constructor de clase carga el archivo .dat y lo asigna a una variable public function __construct($detection_file = 'detection.dat') { if (is_file($detection_file)) { $this->detection_data = unserialize(file_get_contents($detection_file)); } else { throw new Exception("No se pudo cargar el archivo"); } } #Dado un archivo imagen public function face_detect($file) { if (!is_file($file)) { throw new Exception("No se puede carga el archivo $file"); } #crea una nueva imagen temporal $this->canvas = imagecreatefromjpeg($file); $im_width = imagesx($this->canvas); $im_height = imagesy($this->canvas); //Resample before detection? $ratio = 0; $diff_width = 320 - $im_width; $diff_height = 240 - $im_height; if ($diff_width > $diff_height) { $ratio = $im_width / 320; } else { $ratio = $im_height / 240; } if ($ratio != 0) { $this->reduced_canvas = imagecreatetruecolor($im_width / $ratio, $im_height / $ratio); imagecopyresampled($this->reduced_canvas, $this->canvas, 0, 0, 0, 0, $im_width / $ratio, $im_height / $ratio, $im_width, $im_height); $stats = $this->get_img_stats($this->reduced_canvas); $this->face = $this->do_detect_greedy_big_to_small($stats['ii'], $stats['ii2'], $stats['width'], $stats['height']); $this->face['x'] *= $ratio; $this->face['y'] *= $ratio; $this->face['w'] *= $ratio; } else { $stats = $this->get_img_stats($this->canvas); $this->face = $this->do_detect_greedy_big_to_small($stats['ii'], $stats['ii2'], $stats['width'], $stats['height']); } return ($this->face['w'] > 0); } public function toJpeg() { $color = imagecolorallocate($this->canvas, 255, 0, 0); //red imagerectangle($this->canvas, $this->face['x'], $this->face['y'], $this->face['x']+$this->face['w'], $this->face['y']+ $this->face['w'], $color); header('Content-type: image/jpeg'); imagejpeg($this->canvas); } #esto solo para JSON public function toJson() { return "{'x':" . $this->face['x'] . ", 'y':" . $this->face['y'] . ", 'w':" . $this->face['w'] . "}"; } public function getFace() { return $this->face; } protected function get_img_stats($canvas){ $image_width = imagesx($canvas); $image_height = imagesy($canvas); $iis = $this->compute_ii($canvas, $image_width, $image_height); return array( 'width' => $image_width, 'height' => $image_height, 'ii' => $iis['ii'], 'ii2' => $iis['ii2'] ); } protected function compute_ii($canvas, $image_width, $image_height ){ $ii_w = $image_width+1; $ii_h = $image_height+1; $ii = array(); $ii2 = array(); for($i=0; $i<$ii_w; $i++ ){ $ii[$i] = 0; $ii2[$i] = 0; } for($i=1; $i<$ii_w; $i++ ){ $ii[$i*$ii_w] = 0; $ii2[$i*$ii_w] = 0; $rowsum = 0; $rowsum2 = 0; for($j=1; $j<$ii_h; $j++ ){ $rgb = ImageColorAt($canvas, $j, $i); $red = ($rgb >> 16) & 0xFF; $green = ($rgb >> 8) & 0xFF; $blue = $rgb & 0xFF; $grey = ( 0.2989*$red + 0.587*$green + 0.114*$blue )>>0; // this is what matlab uses $rowsum += $grey; $rowsum2 += $grey*$grey; $ii_above = ($i-1)*$ii_w + $j; $ii_this = $i*$ii_w + $j; $ii[$ii_this] = $ii[$ii_above] + $rowsum; $ii2[$ii_this] = $ii2[$ii_above] + $rowsum2; } } return array('ii'=>$ii, 'ii2' => $ii2); } protected function do_detect_greedy_big_to_small( $ii, $ii2, $width, $height ){ $s_w = $width/20.0; $s_h = $height/20.0; $start_scale = $s_h < $s_w ? $s_h : $s_w; $scale_update = 1 / 1.2; for($scale = $start_scale; $scale > 1; $scale *= $scale_update ){ $w = (20*$scale) >> 0; $endx = $width - $w - 1; $endy = $height - $w - 1; $step = max( $scale, 2 ) >> 0; $inv_area = 1 / ($w*$w); for($y = 0; $y < $endy ; $y += $step ){ for($x = 0; $x < $endx ; $x += $step ){ $passed = $this->detect_on_sub_image( $x, $y, $scale, $ii, $ii2, $w, $width+1, $inv_area); if( $passed ) { return array('x'=>$x, 'y'=>$y, 'w'=>$w); } } // end x } // end y } // end scale return null; } protected function detect_on_sub_image( $x, $y, $scale, $ii, $ii2, $w, $iiw, $inv_area){ $mean = ( $ii[($y+$w)*$iiw + $x + $w] + $ii[$y*$iiw+$x] - $ii[($y+$w)*$iiw+$x] - $ii[$y*$iiw+$x+$w] )*$inv_area; $vnorm = ( $ii2[($y+$w)*$iiw + $x + $w] + $ii2[$y*$iiw+$x] - $ii2[($y+$w)*$iiw+$x] - $ii2[$y*$iiw+$x+$w] )*$inv_area - ($mean*$mean); $vnorm = $vnorm > 1 ? sqrt($vnorm) : 1; $passed = true; for($i_stage = 0; $i_stage < count($this->detection_data); $i_stage++ ){ $stage = $this->detection_data[$i_stage]; $trees = $stage[0]; $stage_thresh = $stage[1]; $stage_sum = 0; for($i_tree = 0; $i_tree < count($trees); $i_tree++ ){ $tree = $trees[$i_tree]; $current_node = $tree[0]; $tree_sum = 0; while( $current_node != null ){ $vals = $current_node[0]; $node_thresh = $vals[0]; $leftval = $vals[1]; $rightval = $vals[2]; $leftidx = $vals[3]; $rightidx = $vals[4]; $rects = $current_node[1]; $rect_sum = 0; for( $i_rect = 0; $i_rect < count($rects); $i_rect++ ){ $s = $scale; $rect = $rects[$i_rect]; $rx = ($rect[0]*$s+$x)>>0; $ry = ($rect[1]*$s+$y)>>0; $rw = ($rect[2]*$s)>>0; $rh = ($rect[3]*$s)>>0; $wt = $rect[4]; $r_sum = ( $ii[($ry+$rh)*$iiw + $rx + $rw] + $ii[$ry*$iiw+$rx] - $ii[($ry+$rh)*$iiw+$rx] - $ii[$ry*$iiw+$rx+$rw] )*$wt; $rect_sum += $r_sum; } $rect_sum *= $inv_area; $current_node = null; if( $rect_sum >= $node_thresh*$vnorm ){ if( $rightidx == -1 ) $tree_sum = $rightval; else $current_node = $tree[$rightidx]; } else { if( $leftidx == -1 ) $tree_sum = $leftval; else $current_node = $tree[$leftidx]; } } $stage_sum += $tree_sum; } if( $stage_sum < $stage_thresh ){ return false; } } return true; }}?>
Su Implementacion:
<?phpSe incluye la clase Face_Detector.php, se crea una instancia especificando el archivo .dat y se hace uso de la función face_detectet(‘archivo imagen’); indicando el archivo de imagen a detetectar. El resultado sera una imagen con un recuadro sobre el rostro, si es que lo detecto, claro nada es perfecto, si le pasamos una foto cualquiera que no incluya un rostro, los resultados podran ser bastantes curiosos.
require ('Face_Detector.php'); $detector = new Face_Detector('detection.dat'); $detector->face_detect('FOTO.jpg'); $detector->toJpeg(); ?>
Descarga los archivos desde Aqui
viernes, 28 de octubre de 2016
Instala PHP7 en WAMPSERVER
INSTALAR PHP 7 EN WAMPSERVER
; Be sure to appropriately set the extension_dir directive, luego reemplaza hasta la linea que diga Module Setting con el texto siguiente:
; Be sure to appropriately set the extension_dir directive.8.- Realiza una copia del archivo PHP.ini en la misma carpeta y reenombralo por phpForApache.ini
;
extension=php_bz2.dll
extension=php_curl.dll
;extension=php_com_dotnet.dll
;extension=php_enchant.dll
extension=php_fileinfo.dll
;extension=php_ftp.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_gmp.dll
extension=php_intl.dll
extension=php_imap.dll
;extension=php_interbase.dll
extension=php_ldap.dll
extension=php_mbstring.dll
extension=php_exif.dll ; Must be after mbstring as it depends on it
extension=php_mysqli.dll
;extension=php_odbc.dll
extension=php_openssl.dll
;extension=php_pdo_firebird.dll
extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_phpdbg_webhelper.dll
;extension=php_shmop.dll
; The MIBS data available in the PHP distribution must be installed.
; See [www.php.net]
;extension=php_snmp.dll
extension=php_soap.dll
extension=php_sockets.dll
extension=php_sqlite3.dll
;extension=php_sysvshm.dll
;extension=php_tidy.dll
extension=php_xmlrpc.dll
extension=php_xsl.dll
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
9.- Abre el archivo wampserver.conf y reemplaza todo el código con el siguiente texto.
<?php
$phpConf['phpIniDir'] = '.';
$phpConf['phpExeDir'] = '.';
$phpConf['phpConfFile'] = 'php.ini';
//PHP 7 needs Apache 2.4.x and doesn't works with Apache 2.2.x
$phpConf['apache']['2.4']['LoadModuleName'] = 'php7_module';
$phpConf['apache']['2.4']['LoadModuleFile'] = 'php7apache2_4.dll';
$phpConf['apache']['2.4']['AddModule'] = '';
?>
Deja tus comentarios.
miércoles, 26 de octubre de 2016
11 Extensiones para Google Chrome para Desarrolladores Web
Una de las ventajas de utilizar un navegador web como Google Chrome es que incluye una gran cantidad de extensiones destinadas a satisfacer múltiples necesidades. De hecho existe una buena cantidad de extensiones de Google Chrome destinadas a desarrolladores web que pueden ser de mucha ayuda.
Las extensiones son complementos que podemos instalar en muchos navegadores web. Suelen agilizar mucho el trabajo ya que no necesitarás arrancar ningún programa. Con tenerlas instaladas pueden ahorrarte mucho tiempo.
Las extensines suelen ofrecer información adicional de gran valor.
Las mejores extensiones de Chrome para diseñadores web
Dado su utilidad hemos seleccionado hasta conce complementos de Google Chrome para diseñadores web para optimizar el trabajo.
Quizás la extensión de diseño web mas completa que exista. A través de una barra de herramientas podrás ver una gran cantidad de información sobre cualquier página web. Hojas de estilo CSS, estructura de una web, información sobre caché,… y una enorme cantida de información.
Uno de los complementos para Chrome al que más partido le puedas sacar. Aunque no se trata de una extensión especialmente dirigida a diseñadores web resulta especialmente práctica. Permite realizar una captura de pantalla de una página web total o parcial. Una vez realizada la captura se pueden agregar formas y anotaciones para destacar los elementos más importantes, además de que se puede guardar o compartir.
Ver como va a quedar un diseño en diferentes resoluciones es una tarea obligatoria en cualquier profesional. Con esta herramienta verás una web en distintas resoluciones con solo pinchar en la resolución determinada. Hacerlo mas rápido es imposible.
Comprueba si una página web o blog cuenta con diseño adpatado a móviles en solo un instante. Otra forma de comprobar si un diseño es reponsivo o no en solo un segundo.
CSS Viewer CSS es un sencillo visor de propiedades para inspeccionar el código fuente de cualquier página web. Con solo hacer clic sobre la herramienta y luego sobre un elemento podrás ver el código de una web de una forma rápida y fácil.
Una de las extensiones mas antiguas que se conocen. Una forma de saber qué tipografía utiliza una web. Pincha sobre la extensión y luego sobre la fuente que quieres identificar y ya está.
Si quieres averiguar el hosting de una página web está herramienta te interesa. En solo un segundo averiguarás datos de una web que de otra forma sería mas costosa. Con un solo clic sabrás dónde está alojado un dominio.
Esta es una extensión de Chrome que nos permite guardar archivos de cualquier sitio web en diferentes servicios de almacenamiento en la nube como Dropbox, Amazon Cloud Drive o Flickr.
Con esta extensión, los usuarios tendrán la oportunidad de editar el CSS dentro de un sitio web.
Se trata de una extensión que funciona como un editor de código HTML en tiempo real, además de que se muestra con una pantalla dividida para trabajar con mayor comodidad. Conforme se escribe el texto con el código HTML en el lado izquierdo, en el panel de la derecha se van mostrando los resultados de forma automática. También escompatible con JavaScript y CSS.
Una extensión para saber al instante el ranking de una página web. Pero Alexa nos da mas información al respecto como número de enlaces, velocidad de carga,…
LastPass: Free Pasword Manager
Otra extensión que no es propiamente de diseño web. Está pensada paragestionar múltiples contraseñas web desde el navegador.
Con todas estas herramientas y extensiones de Google Chrome para desarrolladores web seguro que lograrás agilizar cualquier trabajo. Con el tiempo seguro que encuentras otras extensiones que pueden serte tan útiles como éstas o incluso más.
martes, 18 de octubre de 2016
¿Sabías que tu router doméstico está siendo atacado continuamente?
¿Sabías que tu router doméstico está siendo atacado continuamente?
Recomendaciones de seguridad para routers domésticos
¿Sabes todos los ataques que ocurren en tan solo 24 horas en un router?
- Tuvo más de 20.000 eventos hacia su router doméstico.
- De estos eventos, más de 4.600 fueron ataques hacia diferentes puertos para acceder a su router y servicios. Los servicios más afectados fueron SSH, Telnet, 443, 2323, RPD, VNC, 8080 entre otros.
- Se registraron un total de 92 países distintos y se consultaron casi 350 puertos diferentes.
jueves, 8 de septiembre de 2016
Agregar Campos Dinámicos con Php y Jquery con Arrays
Agregar Campos Dinámicos con Php y Jquery con Arrays
El Siguiente ejemplo muestra la funcionalidad de agregar diferentes cajas de textos que serán recibidos en un array (arreglo) y se imprimirán en pantalla.
Estructura de la aplicación:
- Index.php
- jquery.min
- jquery-addfield2: para agregar cajas de texto dinámicamente por javascript.
- Al inicio codificamos un evento al botón para agregar.
- Luego obtenemos el valor de atributo div_1 pero le quitamos el "div_" para quedarnos con el número (parseInt($(this).parent('div').attr('id').replace('div_','')))
- Y es ese número que va a ir incrementando y concatenándose con cada div que agregáremos con el botón.





