Category Archives: Principal

  • 0

El Samsung Galaxy S8 vendrá con una batería del mismo proveedor del Galaxy Note 7

Samsung SDI es una de las fabricas pertenecientes al conglomerado Samsung Electronics, quienes se encargan de fabricar baterías para los dispositivos que la compañía Sur-Coreana va lanzando al mercado. Y si, está empresa fue la que fabrico la batería del fallado Samsung Galaxy Note 7 y te cuento que será la misma quien fabrique las baterías del nuevo buque insignia del gigante Sur-Coreano.

De acuerdo a un nuevo informe que ha salido a la luz en Corea del Sur, apunta a que la compañía Samsung está completamente segura que la baterías fabricadas por Samsung SDI no son las causas del desastre del Galaxy Note 7, y al parecer, la firma habría renovado contrato para que suministre las baterías del nuevo Galaxy S8.

Sin embargo, anteriormente se había comentado que LG sería uno de los proveedores de las baterías de los nuevos dispositivos de Samsung, por lo que la compañía podría estar buscando diversificar el suministro de este complemento para su nuevo dispositivo emblema.

Con renovación de los servicios de Samsung SDI podría deberse a que el problema del Galaxy Note 7 no fue la batería sino más bien del diseño, tal y como lo reporto la compañía Instrumental, quienes hicieron una investigación sobre el problema que presentaba este phablet en su momento. Pero hasta el momento no hay un informe oficial por parte de Samsung con respecto al problema, pero este no tardará mucho, ya que la compañía ha mencionado que hará publico los resultados a finales de este mes.

¿Será buena idea utilizar las mismas baterías?


  • 0

Meetup Desarrollo de Software Tecamachalco

Category : Principal

Todos en Tecamachalco están invitados al primer meetup sobre desarrollo de software y redes, para saber mas acerca de nuevas tecnologías. El objetivo de esta reunión es para conocer y convivir con personas interesadas con el universo de las tecnologías que vivan en Tecamachalco o en sus alrededores.

 

La entrada es gratis a todas las personas interesadas.

 

Agenda

 

17:30 a 18:00 horas: Ingreso a las instalaciones

 

18:00 horas: Primer Platica:

 

18:30 horas: Segunda Platica:

 

19:30 horas: Tercer Platica:

 

20:00 horas: Networking.

 

Las reuniones se tienen planeadas que sean cada mes y pues conforme pase el tiempo se valla teniendo apoyo de mas personas interesadas.

 

El lugar donde se va a realizar la reunión en en Café Colibrí que esta ubicado en 6 sur #506 Tecamachalco Pue.

https://www.meetup.com/es-ES/Meetup-de-Desarrollo-de-software-en-Tecamachalco/events/234768312/

Te esperamos en esta reunión.


  • 0

Como Dividir Sublime Text en Multiples Paneles

Con este Plugin Sublime Text podrán abrir mas paneles diferentes para editar tu código en una misma ventana.

El plugin Se llama “More Layouts”, y lo que nos permite es agregar mas tipos de estructuras a Sublime Text.

Con tipos de estructura me refiero a paneles en los que podemos poner pestañas y así organizar nuestro código mucho mejor. Por defecto sublime Text ya nos permite agregar hasta 3 columnas que podemos agregar desde el menu View > Layout

“Read More”

  • 0

Crud PHP usando Ajax y Json

Buen día a todos en este post les quiero compartir unos slides que subí a http://slideshare.net cabe mencionar que no soy el autor de estos Slides si no de un profesor que me dio clases en la Universidad que se llama Rosalino Santos Valeriano y pues si lee este post pues le enviamos un saludo. bueno son 5 presentaciones en las cuales se tiene lo basico para que puedas hacer un pagina web y conceptos básicos sobre Ajax y Json, de igual manera les dejo una liga con el repositorio donde subí el código del proyecto que se realizo con dichas diapositivas.

y por si no saben como instalar Lamp en un distro de Gnu/Linux les dejo estes post:

INSTALAR EL SERVIDOR LAMP EN DEBIAN

y aca les dejo la liga para que puedan descargar el proyecto de que se explica en las diapositivas

https://github.com/bl4ck0is1s/crudphp

 


  • 0

Crud (create, read, update, delete) Java con Jdbc

En este post vamos a ver lo que es un CRUD ( Create, Read, Update, Delete) y empezaremos a crear nuestra base de datos:


CREATE TABLE usuario (
id_usuario int(11) NOT NULL AUTO_INCREMENT,
nombre varchar(100) NOT NULL,
apellido_paterno varchar(100) NOT NULL,
apellido_materno varchar(100) NOT NULL,
edad int(11) NOT NULL,
username varchar(100) NOT NULL,
password varchar(300) NOT NULL,
PRIMARY KEY (id_usuario)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;

Despues tendremos nuestra clase conexión hacia la base de datos y nos quedara de la siguiente forma:

package com.mx.crudjdbc.config;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public class ConnectionDataBase {

public static Connection conexion = null;

public static Connection getConexion() {
try {
conexion = null;
//cargar nuestro driver
Class.forName(“com.mysql.jdbc.Driver”);
conexion =DriverManager.getConnection(“jdbc:mysql://localhost/nombreBase”,”root”,”password”);
System.out.println(“conexion establecida”);
} catch (ClassNotFoundException | SQLException e) {
System.out.println(“error de conexion”);
JOptionPane.showMessageDialog(null, “error de conexion “+e);
}

return conexion;
}
}

Lo siguiente es crear un archivo java con el nombre de la tabla de la base de datos, el cual se llamara UsuarioVo.java y contendrá lo siguiente:

package com.mx.crudjdbc.vo;

/**
*
* @author bl4ck0is1s
*/
public class Usuario extends InterfaceObject{
private int idUsuario;
private String nombre;
private String apellidoPaterno;
private String apellidoMaterno;
private int edad;
private String username;
private String password;

public int getIdUsuario() {
return idUsuario;
}

public void setIdUsuario(int idUsuario) {
this.idUsuario = idUsuario;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellidoPaterno() {
return apellidoPaterno;
}

public void setApellidoPaterno(String apellidoPaterno) {
this.apellidoPaterno = apellidoPaterno;
}

public String getApellidoMaterno() {
return apellidoMaterno;
}

public void setApellidoMaterno(String apellidoMaterno) {
this.apellidoMaterno = apellidoMaterno;
}

public int getEdad() {
return edad;
}

public void setEdad(int edad) {
this.edad = edad;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
@Override
public String toString(){
return getNombre() + “,” + getApellidoPaterno() + “,” + getApellidoMaterno()
+ “,” + getEdad() + “,” + getUsername() + “,” + getPassword();
}
}

de igual forma crearemos una clase que un DAO (Data Access Object), el cual nos ayudara a persistir los datos hacia la base de datos, el cual tiene los metodos para insertar, modificar y listar


package com.mx.crudjdbc.dao.impl;

import com.mx.crudjdbc.config.ConnectionDataBase;
import com.mx.crudjdbc.dao.UsuarioDao;
import com.mx.crudjdbc.vo.Usuario;
import java.awt.HeadlessException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
import org.apache.log4j.Logger;

public class UsuarioDaoImpl implements UsuarioDao {

private static final Logger logger = Logger.getLogger(UsuarioDaoImpl.class);

@Override
public Usuario saveUsuario(Usuario usuario) {
Connection reg = ConnectionDataBase.getConexion();

String sql = “INSERT INTO usuario (nombre, apellido_paterno, apellido_materno, edad, username, ”
+ “password) VALUES ”
+ “(?,?,?,?,?”
+ “,?)”;
try {

PreparedStatement pst = reg.prepareStatement(sql);

pst.setString(1, usuario.getNombre());
pst.setString(2, usuario.getApellidoPaterno());
pst.setString(3, usuario.getApellidoMaterno());
pst.setInt(4, usuario.getEdad());
pst.setString(5, usuario.getUsername());
pst.setString(6, usuario.getPassword());

int n = pst.executeUpdate();
if (n > 0) {
logger.debug(“usuario registrado: ” + usuario.toString());
JOptionPane.showMessageDialog(null, “Usuario Registrado Exitosamente”);
}

} catch (SQLException ex) {
logger.error(ex.getMessage());
JOptionPane.showMessageDialog(null, “Error – ” + ex);
ex.printStackTrace();

}
return null;
}

@Override
public Usuario updateUsuario(Usuario usuario) {
Connection connection = ConnectionDataBase.getConexion();
String sql = “UPDATE usuario SET nombre = ?, apellido_paterno = ?, apellido_materno = ?, edad = ?,”
+ ” username = ?, password = ? WHERE id_usuario = ?”;
try {
PreparedStatement pst = connection.prepareStatement(sql);
pst.setString(1, usuario.getNombre());
pst.setString(2, usuario.getApellidoPaterno());
pst.setString(3, usuario.getApellidoMaterno());
pst.setInt(4, usuario.getEdad());
pst.setString(5, usuario.getUsername());
pst.setString(6, usuario.getPassword());
pst.setInt(7, usuario.getIdUsuario());

int n = pst.executeUpdate();
if (n == 1) {
logger.debug(“usuario registrado: ” + usuario.toString());
JOptionPane.showMessageDialog(null, “El Usuario se Actualizo Exitosamente”);
return usuario;
}

} catch (HeadlessException ex) {
logger.error(ex.getMessage());
JOptionPane.showMessageDialog(null, “Error – ” + ex);
ex.printStackTrace();
} catch (SQLException ex) {
logger.error(ex.getMessage());
JOptionPane.showMessageDialog(null, “Error – ” + ex);
ex.printStackTrace();
}
return null;
}

@Override
public Usuario getUsuarioById(int id) {
throw new UnsupportedOperationException(“Not supported yet.”); //To change body of generated methods, choose Tools | Templates.
}

@Override
public ResultSet getAll() {
Connection conexion = ConnectionDataBase.getConexion();
try {
String sql = “SELECT * FROM usuario”;
Statement st = conexion.createStatement();
ResultSet rs = st.executeQuery(sql);

return rs;
} catch (Exception e) {
logger.error(e.getMessage());
e.printStackTrace();
}finally {
try {
conexion.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
return null;
}

@Override
public boolean deleteUsuario(int idUsuario) {
Connection connection = ConnectionDataBase.getConexion();
String sql = “DELETE from usuario where id_usuario = ?”;
try {
PreparedStatement pst = connection.prepareStatement(sql);
pst.setInt(1, idUsuario);

int n = pst.executeUpdate();
if (n == 1) {
logger.debug(“usuario eliminado: ” + idUsuario);
JOptionPane.showMessageDialog(null, “Usuario Eliminado”);
return true;
}

} catch (HeadlessException ex) {
logger.error(ex.getMessage());
JOptionPane.showMessageDialog(null, “Error – ” + ex);
ex.printStackTrace();
} catch (SQLException ex) {
logger.error(ex.getMessage());
JOptionPane.showMessageDialog(null, “Error – ” + ex);
ex.printStackTrace();
}
return false;
}

}

Bueno pues estos son los metodos mas importantes del proyecto que de igual forma se los dejo en la siguiente liga y que podran descargar desde mi repositorio de GitHub, otra cosa el proyecto esta echo en Maven, asi que para poder ejecutarlo deberan de tener instalado y por si no saben como pueden darle un vistaso a el siguiente post Como instalar Maven en Debian y Windows y pues aca les dejo la url para descargar el proyecto: https://github.com/bl4ck0is1s/CrudJdbc.

pues eso es todo si les gusto compartan es sus redes sociales.


  • 0

Modelo de clases para bots de Telegram en C#

Category : C# , Principal , Programación

telegram

últimamente los Bots se están poniendo de moda, desde Facebook hasta Microsoft han puesto a disposición de los desarrolladores herramientas para la creación de los mismos, pero si de alguien quiero recalcar que fue de los primero y tal vez mas populares sistemas donde se pueden encontrar y desarrollar bots, esta es la aplicación de mensajería Telegram.

“Read More”

  • 1

Como instalar Maven en Debian y Windows

apache_maven

En este articulo les vamos a comentar como instalar Maven en Debian por medio de los repositorios, de lo cual debe de ser parecido en sus derivados del mismo sistema operativo, al igual se les mostrara como instalar en el sistema operativo de Windows 7 al cual debe ser igual para alguno posterior.

En el caso de Debian solo basta con ejecutar este comando

sudo apt-get install maven

Una ve hecho esto se prueba que Maven funciona correctamente con el siguiente comando:

mvn -version

y les tendra que salir algo como esto

root@debian:/home/julio# mvn -version
Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.7.0_80, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-oracle/jre
Default locale: es_MX, platform encoding: UTF-8
OS name: "linux", version: "3.16.0-4-686-pae", arch: "i386", family: "unix"

Bueno eso es para linux, ahora para windows haremos lo siguiente:

procederemos a descargar el paquete de Maven desde su pagina oficial maven.apache.org y elegimos el paquete apache-maven-3.3.9-bin.zip, en mi caso siempre lo coloco en una carpeta o directorio en:

C:\software\apache-maven-3.3.9

Si nos damos cuenta y ejecutamos el comando mvn -version nos saldra el siguiente mensaje, el cual nos indica que no reconoce el comando, para cual deberemos proceder a agregar las variables de entorno de la siguiente forma:

Captura de pantalla 2016-04-08 a las 11.57.09 a.m.

nos iremos a las propiedades del sistema y le daremos clic en variables de entorno:

Captura de pantalla 2016-04-08 a las 12.00.23 p.m.

Encontraemos una opcion que dice agregar una nueva variable a la cual le pondremos el siguiente nombre:

M2_HOME

es importante agregarla toda en mayusculas asi como se nos muestra en la siguiente imagen:
La variable de entorno para maven sera la siguiente

Captura de pantalla 2016-04-08 a las 12.00.49 p.m.

despues procederemos a agregar la variable de maven a la variable path, para que esta sea reconocida por el sistema y quedaría de la siguiente manera:

;%M2_HOME%/bin

Captura de pantalla 2016-04-08 a las 12.01.44 p.m.

y por ultimo guardaremos todo y veremos que ya agregamos las variables de Maven en nuestro sistema , por ultimo solo recordarles que para que Maven funcione tienen que tener instalado alguna versión del jdk de Java y que de igual manera deben de agregar las variables de entorno al sistema:

Captura de pantalla 2016-04-08 a las 12.04.03 p.m.

pues eso seria todo, ayuda compartiendo y cualquier duda no olvides dejar tus comentarios.

 


  • 0

A partir de hoy, los chats en WhatsApp estarán encriptados

Mucho se ha hablado sobre la privacidad en internet últimamente especialmente a raíz del caso entre Apple y el FBI en el que estos últimos pidieron la ayuda de Apple para poder acceder a la información de un iPhone perteneciente a un terrorista responsable de los ataques en San Bernardino, California a finales del año pasado.

whatsapp-e1459878382188

Apple recientemente añadió encriptación a su servicio de mensajes iMessage y ahora WhatsApp también ofrece esta funcionalidad para sus más de mil millones de usuarios en todas las versiones de su app para todas las plataformas en las que esté disponible.

A todo esto ¿qué es lo que hace la encriptación en los chats? Bueno, significa que cuando tengan una conversación con alguien en WhatsApp, absolutamente nadie podrá acceder a la información en la conversación a parte de las personas involucradas en ella.

Esto quiere decir que si por alguna razón, el gobierno quisiera acceder a sus conversaciones, WhatsApp no podría proporcionar esa información porque ni ellos pueden acceder a ella.

Esto gracias a un protocolo de señal desarrollado por Whisper Systems, compañía open source que ha sido apoyada por Edward Snowden. La encriptación protegerá chats de grupo, archivos adjuntos, notas de voz y llamadas que sean hechas vea WhatsApp ya sea en Android, iPhone, Windows y algunos dispositivos Nokia y BlackBerry.

Whisper mencionó en un post en su blog oficial:

A partir de hoy los usuarios verán una notificación en su pantalla de conversación ya que sus chats individuales y de grupo se han encriptado de un extremo a otro.

whatsapp-e2e-notice-e1459878429482

encriptnot

Los usuarios también podrán verificar sus mensajes encriptados gracias a un código QR, esto para asegurar que los mensajes se estén enviando a los usuarios correctos. Esto significa que los empleados de WhatsApp no serán capaces de acceder a los mensajes, aún si una corte o las autoridades lo ordenan.

Así que ya pueden enviar lo que quieran por WhatsApp sin preocuparse porque su privacidad pueda ser vulnerada, a no ser que ustedes mismos se encarguen de compartir el contenido. La notificación, aparentemente, aún no le aparece a todos pero es cuestión de tiempo para que lo noten.

Al ser una compañía de Facebook, es sorpresivo que añadan una protección de esta naturaleza a WhatsApp. Habrá que ver si esto genera algún tipo de controversia como la que se desató con Apple.

Via Wired

  • 2

Cómo leer un archivo XML en Java con JDOM

Category : Java , Principal , Programación

En esta entrada te enseñaremos a usar JDOM para leer un archivo xml e imprimir cada elemento de forma ordenada.

Captura de pantalla 2016-02-26 a las 11.37.13 a.m.

1.- Descargar libreria de JDOM

JDOM no esta incluido en el JDK así que tenemos que descargar la libreria manualmente desde su sitio oficial de JDOM o si usan maven agregar la dependencia en el POM.

<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.1</version>
</dependency>

 

2.- Archivo xml a leer

<?xml version="1.0"?>
  <Persona>
    <Nombre>Julio</Nombre>
    <Apellido>Martinez</Apellido>
    <Nickname>Juls</Nickname>
  </Persona>


3.- Archivo Java

 import java.io.File;
import java.io.IOException;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class ReadXMLFile {

public static void main(String[] args) {

SAXBuilder builder = new SAXBuilder();
File xmlFile = new File(“resources/file.xml”);

try {
Document document = (Document) builder.build(xmlFile);
Element rootNode = document.getRootElement();
List list = rootNode.getChildren(“Persona”);

for (int i = 0; i < list.size(); i++) {
Element node = (Element) list.get(i);
System.out.println(“Nombre : ” + node.getChildText(“Nombre”));
System.out.println(“Apellido : ” + node.getChildText(“Apellido”));
System.out.println(“Nick Name : ” + node.getChildText(“Nickname”));
}
} catch (IOException io) {
System.out.println(io.getMessage());
} catch (JDOMException jdomex) {
System.out.println(jdomex.getMessage());
}
}
}

 

4.- Resultado

 Nombre: Julio
Apellido: Martinez
Nickname: Juls


  • 0

Almacenan 360 TB (para siempre) en discos de cuarzo 5D

Tags :

Category : Principal , Tecnología

disco5dPreservar información es uno de los grandes desafíos modernos que todo usuario debe enfrentar. Obtener más capacidad de un medio es un paso fundamental, pero también está el hecho de que ese mismo medio debe resistir el paso del tiempo. Ambos detalles nos llevan a la Universidad de Southampton, donde un grupo de científicos desarrolló un nuevo disco con una densidad de 360 terabytes por unidad, y aún en temperaturas extremas, puede mantenerse estable por miles de millones de años.

No lo vamos a negar: Odiamos hacer respaldos de datos, pero son definitivamente necesarios. A pesar de las notables ventajas que ofrecen los medios actuales de almacenamiento, ninguno de ellos es eterno, y las fallas pueden aparecer cuando menos lo esperamos. Ahora, imaginemos este mismo problema desplazado cientos o incluso miles de años en el futuro. ¿Cómo nos conocerán las próximas generaciones si cada disco duro, unidad de estado sólido, disco óptico o backup en cinta se ha convertido en polvo? Lo que hoy llamamos «historia escrita» alcanza a unos seis o siete mil años, pero la cantidad de información… de conocimiento que se perdió por no contar con medios apropiados de preservación, es incalculable. Guardar datos a muy largo plazo requiere de una solución avanzada, y en la Universidad de Southampton creen tenerla.

Un grupo de científicos perteneciente al Centro de Investigación Optoelectrónica de la universidad ha desarrollado una técnica para almacenar y leer datos de un disco de cuarzo nanoestructurado. Cada disco posee 360 terabytes de capacidad, y el proceso de grabación se realiza con un láser de alta velocidad, el cual crea tres capas de puntos, cada una separada por una distancia de apenas cinco micrómetros. La tecnología ha sido bautizada 5D, debido a que tiene en cuenta la posición de los datos en un disco, el tamaño y la orientación (sería algo como «3D + 2D»). Los primeros prototipos de estos discos fueron evaluados en el año 2013, y ya en ese entonces se pudo anticipar su extrema durabilidad. Hoy, los discos logran mantener estabilidad térmica hasta una temperatura máxima de 1.000 grados Celsius, y son capaces de sobrevivir 13.800 millones de años (una cantidad de años similar a la edad del Universo) a 190 grados.

01-20

La Declaración Universal de Derechos Humanos guardada en un disco 5D

La publicación oficial no da detalles sobre la durabilidad de los discos almacenados a temperatura ambiente, pero desde un punto de vista humano, es lógico tomar un atajo y decir «para siempre». El siguiente paso es encontrar socios dispuestos a asistir tanto en el desarrollo como en la comercialización de esta tecnología. Puede que el usuario promedio no necesite semejante resistencia en un medio de almacenamiento… ¿pero 360 terabytes en un disco grande como una moneda? ¿Dónde firmamos?