lunes, 28 de abril de 2014
jueves, 24 de abril de 2014
Como migrar HTML y XHTML a HTML5
Introducción
En este pequeño tutorial les enseñaré como pasar su HTML y XHTML a HTML5, aunque muchas características les enseñaré como agregarlas después. Este tutorial es solamente sobre como modernizar su página antes de que descontinúen el soporte para HTML4 y XHTML.Doctype
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">XHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">HTML 5
<!DOCTYPE html>
Etiqueta de documento
XHTML<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es" >HTML5
<html lang="es" >
Codificación de caracteres
HTML<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">XHTML
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />HTML5
<meta charset="UTF-8" />
Scripts
HTML<script src="miScript.js" type="text/javascript"></script>HTML5
<script src="miScript.js"></script>
Hoja de estilos CSS
HTML<link href="miHoja.css" rel="stylesheet" type="text/css" />HTML5
<link href="miHoja.css" rel="stylesheet" />Uso de comillas
HTML
<meta charset="UTF-8">HTML5
<meta charset=UTF-8> <meta charset=’UTF-8’> <meta charset="UTF-8">pero si un atributo tiene varios valores deberemos de usar comillas dobles
<div class="estilo1 estilo2">
Elementos sin etiqueta de cierre
HTML<br /> <img src="imagen.png" />HTML5
<br> <img src="imagen.png">
Uso de mayúsculas
HTML<script src="miScript.js"></script>HTML5
<SCRIPT src="miScript.js"></script> <script SRC="MIscript.JS"></SCRIPT> <sCriPt SrC="MiScript.js"></scRIpt>
Atributos booleanos
HTML<input type="checkbox" checked="checked" name="checkedbox">HTML5
<input type="checkbox" checked name="checkedbox">
Elementos opcionales
En HTML5 podemos omitir algunos elementos muy típicos<!DOCTYPE HTML> <meta charset="UTF-8" /> <title>Mi primer documento HTML5 </title> <h1>Esto es HTML5</h1> <p>Mi contenido</p>
Elementos obsoletos
En HTML5 funcionan, pero ya no se deberían de usar<frame>, <frameset> y <noframes>
viernes, 18 de abril de 2014
Trucos para convertir UnityScript entre C#
Introducción
Muchos podrían preguntarse acerca de la necesidad de convertir su código a otro lenguaje, pero esta necesidad generalmente surge cuando tenemos que interactuar con código de otras personas, ya sea de colaboradores o debido a que agregamos algún plugin codificado en otro lenguaje.Para este caso me limitaré a poner ejemplos, pero cualquier duda mencionada en los comentarios la trataré de explicar
Herramientas automáticas
Si bien nos pueden ayudar para aprender, no siempre son totalmente exaustivas en su implementación ( Es por esto que más adelante pondré ejemplos de como hacer las cosas que estos convertidores no pueden manejar )Convertidor UnityScript a C#
http://www.m2h.nl/files/js_to_c.phpConvertidor C# a UnityScript
http://florentpoujol.fr/content/unity3d/csharptounityscript/Arreglos de cadenas
En caso de tener en la consola algo como error CS0029: Cannot implicitly convert type `string' to `int', nos indicará que nuestros arreglos de cadenas están mal convertidos.C#
string[] dificultad= new string[]{"Muy facil", "Facil","Regular", "Dificil"};JavaScript
var dificultad:string[]= ["Muy facil", "Facil","Regular", "Dificil"];Tipos de datos no declarados
En UnityScript es posible no declarar los datos, por lo que el convertidor a C# puede arrojar la palabra FIXME_VAR_TYPE, en este cas deberemos inferir el tipo en base a la inicialización como lo hace el compilador.
var musica = true;
FIXME_VAR_TYPE musica= true;
En vase a sus valores, el tipo debe seer bool.
var musica:boolean = true;
bool musica= true;
miércoles, 16 de abril de 2014
Como cambiarle el fondo a un JFrame en Java
Introducción
Una práctica muy común en mucos lenguajes es el cambiar el fondo de la ventana principal, en este caso les enseñaré como hacerlo desde código, y para hacerlo rápido usaré netbeans.Color de fondo
Para poder cambiar el color de fondo deberemos realizar lo siguiente:
- Creamos un nuevo proyecto de netbeans de tipo Aplicación de Java (Java Application)
- Creamos un nuevo archivo de formas gráficas de Swing ( Swing GUI Forms ), que sea de preferencia un JFrame, aunque cualquier clase que herede a Component podría usarlo.
- Vamos a la pestaña de código y heredamos el método paint, si el componente no es swing sino AWT o cualqueir clase que herede un componente ligero deberemos sobreescribir el método PaintComponent.
- dentro de este método cambiamos el color de la configuración gráfica por defecto
- Mediente g.setColor([color]);
- Finalmente pintamos un cuadro de las dimensiones del componete en cuestión
- Usando g.fillRec([iniciox],[inicioy],[finx],[finy]);
Código
El código terminado debe lucir así:
import java.awt.Color;
import java.awt.Graphics;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Administrador
*/
public class frameconfondo extends javax.swing.JFrame {
/**
* Creates new form frameconfondo
*/
public frameconfondo() {
initComponents();
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.red);
g.fillRect(this.getX(), this.getY(), this.getX()+this.getWidth(), this.getY()+this.getHeight());
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(frameconfondo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(frameconfondo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(frameconfondo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(frameconfondo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new frameconfondo().setVisible(true);
}
});
}
// Variables declaration - do not modify
// End of variables declaration
}
El programa al correrse se debe ver así:
Explicación
Debido a que la interfaz gráfica en Java se realiza a partir de clases de código, se puede redefinir la forma en que se pintan, así que redefinimos el método paint o paint component para cambiar su apariencia. Las rutinas de pintado son dependientes del sistema operativo y no siempre es predecible como actuará el uso de la clase Graphics, podría haber casos en que no se viera tal como en el ejemplo.
martes, 8 de abril de 2014
Como enviar un juego para rating ESRB
Artículo en Proceso...
Este proceso es requerido para la publicación de aplicaciones en grandes compañías, entre ellas demostraremos el caso con Sony.
Aplicaremos este proceso a la aplicación Te Agarré x Ahi de android, pero el proceso también es válido para el caso de que se desee compilar la aplicación con el Publishing Utility for Unity parte del PSM SDK.
El sistema realiza 4 preguntas:
Introducción
ESRB es un sistema de clasificación de contenido de videojuegos para Estados Unidos de América.Este proceso es requerido para la publicación de aplicaciones en grandes compañías, entre ellas demostraremos el caso con Sony.
Aplicaremos este proceso a la aplicación Te Agarré x Ahi de android, pero el proceso también es válido para el caso de que se desee compilar la aplicación con el Publishing Utility for Unity parte del PSM SDK.
Procedimiento
Primero nos dirigimos al sitio de ESRB donde nos saldrá un registro general. Entre las opciones que podemos indicar con un sí o un no están:- Violencia
- Sexualidad
- Apuestas
- Lenguaje Vulgar
- Substancias controladas
- Humor Crudo
- Permite compartir información personal
- Muestra la localización geográfica
- Permite el intercambio de contenido creativo
- Requerimiento de edad mínima en los terminos de servicio
El sistema realiza 4 preguntas:
- Violencia contra humanos
- Violencia contra cualquier cosa no humana
- Tipo de contexto ( Realista o fantasioso )
- Tipo de gráfico (Estilizados o fotorealistas)
Como enviar un juego para rating PEGI
Introducción
PEGI es un sistema de clasificación de videojuegos y software de entretenimiento para Europa, específicamente 26 naciones.Este proceso es requerido para la publicación de aplicaciones en grandes compañías, entre ellas demostraremos el caso con Sony.
Aplicaremos este proceso a la aplicación Te Agarré x Ahi de android, pero el proceso también es válido para el caso de que se desee compilar la aplicación con el Publishing Utility for Unity parte del PSM SDK.
Procedimiento
Primero nos dirigimos al sitio de PEGI express donde nos saldrá un registro general muy rápido. Entre las opciones que podemos indicar con un sí o un no están:- Elementos terroríficos
- Lenguaje vulgar
- Violencia
- Crímen
- Apuestas
- Discriminación
- En línea
- Drogas, Alcohol, Tabaco
- Sexo
Lenguaje Vulgar
Para este caso nos va a preguntar 2 cosas:- Si contiene maldiciones o lenguaje ofensvo
- Si contiene improperios de índole sexual o blasfemias
Seguridad del usuario
También influye en el rating que tan expuesto podría estar el usuario y su información, específicamente con respecto a:- Opciones de compra dentro del juego
- Compartisión de información personal
- Funcionalidad de interacción social
- Capacidad de compartir información
Tras verificas los datos tendremos la opción de enviarlos a nuestro correo electrónico.
lunes, 7 de abril de 2014
Hacer que funcionen el plugin de admob y de google play games en Unity3D
Introducción
Desde que Google hizo que su nueva librería para unity tuviera incluido el soporte admob, el plugin de admob( de hecho todos los plugins de admob, gratuitos y de paga, pero yo me referiré al gratuito ) comenzó a marcar errores y no se podía compilar. Hoy les traigo una solución, que aunque es un poco burda, les aseguro que funciona a la perfección.
Descripción del error
Al momento de darle en Build nos aparece el mesaje de diálogo
y un error en la consola que dice algo así como:
Error building Player: CommandInvokationFailure: Unable to convert classes into dex format.
See the Console for details.
C:\Program Files (x86)\Java\jdk1.7.0_51\bin\java.exe -Xmx1024M -
Dcom.android.sdkmanager.toolsdir="C:/Program Files (x86)/Android/android-sdk-windows\tools"
-Dfile.encoding=UTF8 -jar "C:/Program Files
(x86)/Unity/Editor/Data/BuildTargetTools/AndroidPlayer\sdktools.jar" -
stderr[
UNEXPECTED TOP-
LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: ...
Explicación del problema
Como algunos desarrolladores de android sabrán, al agregar librerías con clases con el mismo nombre duplicado es lo que genra este error, simplemente, algunas clases ya estaban incluidas en el plugin de admob.
Solución
La solución es simple, borrar los archivos duplicados. Es recomendable conservar una copia de los jar originales, pero como para este caso Java se encarga de hacer un nuevo jar no afectará el proyecto. En este caso borraremos los archivos del google play games.
Archivos a borrar
Para ahorrar tiempo diré que se debe eliminar toda la carpeta
- google-play-services.jar\com\google\ads\mediation\customevent
- com/google/ads/AdRequest$ErrorCode
- com/google/ads/AdSize
- com/google/ads/AdRequest
- com/google/ads/mediation/MediationInterstitialListener
- com/google/ads/mediation/MediationServerParameters
- com/google/ads/mediation/MediationBannerAdapter
- com/google/ads/mediation/MediationAdRequest
- com/google/ads/mediation/MediationInterstitialAdapter
- com/google/ads/mediation/MediationAdapter
- com/google/ads/mediation/NetworkExtras
- com/google/ads/mediation/EmptyNetworkExtras
- com/google/ads/mediation/MediationServerParameters$Parameter
- com/google/ads/mediation/MediationServerParameters$MappingException
- com/google/ads/mediation/admob/AdMobAdapter
- com/google/ads/mediation/admob/AdMobAdapter$a
- com/google/ads/mediation/admob/AdMobAdapter$b
- com/google/ads/mediation/MediationBannerListener
- com/google/ads/AdRequest$Gender
Pero.. me da flojera hacer todo eso
No te preocupes, con dinero se arregla casi todo :PPuedes descargar el jar modificado totalmente gratis mediante el siguiente link patrocinado: Enlace de descarga
Una vez puesto tu id de app y presionado el botón enl pestaña de configuración de android para GPGS remplaza el archivo que se debe encontrar en Assets/Plugins/google-play-services_lib/libs
Conversión básica de códigos de C++ a C
El código en C++
Se desea convertir el siguiente código:
#include<fstream>
#include<conio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int main()
{
ofstream f;
int A[10];
f.open("numero.txt", ios::out);
if(!f)
{
cerr<<"Error de apertura del archivo";
getch();
return 1;
}
else
{
for(int i=0;i<10;i++)
{
cout<<"introduzca los numeros"<<endl;
cin>>A[i];
f<<A[i]<<" "<<endl;;
}
}
f.close();
cout<<"Los datos se han almacenado en numero.txt";
getch();
system("cls");
cout<<"Estos son los datos almacenados"<<endl;
ifstream salida;
salida.open("numero.txt", ios::in);
for(int i=0;i<10;i++)
{
salida>>A[i];
cout<<"\n"<<A[i];
}
getch();
salida.close();
}
Código en C
El código deseado será:
#include<conio.h>
#include<stdio.h>
#include<file.h>
int main()
{
File f; //ofstream f;
int A[10];
f=fopen("numero.txt", "rw");
if(f==null)
{
printf("Error de apertura del archivo");
read();
return 1;
}
else
{
for(int i=0;i<10;i++)
{
printf("introduzca los numeros");
scanf("%d",A[i]);
fprintf(A[i]);
}
}
fclose(f);
printf("Los datos se han almacenado en numero.txt");
read();
//system("cls"); ??
printf("Estos son los datos almacenados");
//ifstream salida;
File salida;
salida=fopen("numero.txt", "r");
for(int i=0;i<10;i++)
{
fscanf(A[i]);
printf("\n%d",A[i]);
}
read();
fclose( salida);
}
Procedimiento
En C los cout se remplazan por printf
domingo, 6 de abril de 2014
Como configurar netbeans para ver todos los plugins
Explicación
Solamente unos pocos plugins son hechos por oracle, como los demás los provee la comunidad, se consideran plugins en estado Beta hasta que el equipo de Oracle les de un ajuste final y decida hacerlos oficiales. Por este motivo hay repositorios para cada versión de netbeans que ha salido.
Procedimiento
- Ir a Tools>Plugins
- Una vez allí ir a la pestaña Settings (Si es que no se abre en es pestaña)
- En la parte de abajo ala derecha dar click en el botón Add
- Luego se debe de agregar un link al repositorio de la versión de netbeans que tengamos de la forma: http://updates.netbeans.org/netbeans/updates/[version]/uc/final/beta/catalog.xml.gz que en mi caso es7.2.1
Finalmente, tras completada esta tarea se deben de actualizar y cargar todos los plugins no oficiales
El plugin que necesito esta en otra versión
Muy sencillo, podemos accesar a todas las versiones mediante el link:
http://dlc.sun.com.edgesuite.net/netbeans/updates/
Algunas versiones por ejemplo no tienen repositorio beta como en mi caso, así que conviene darle una revisada por si las dudas.
sábado, 5 de abril de 2014
Como hacer que Unity 4.1 y versiones superiores compilen para android
Introducción
Las versiones a partir de unity 4 fueron muy importantes, porque por primera vez incluian el soporte para crear aplicaciones android de manera gratuita. Anteriormente el costo de adquirir la licencia para Unity android era de casi 10 mil pesos mexicanos. Pero desgraciadamente, con la actualización al api nivel 22 empezaron los problemas, primero no se podía compilar con el API 22 y se debía de regresar al 21, y segundo, después de la versión 4.1 el sistema no encontraba la ruta hacia las nuevas instalaciones del android sdk, y por lo tanto no se podían generar los apk.Solución
Si bien la solución es bastante precaria, funciona en el 100% de los casos, basta con ubicar la carpeta de instalacón del android sdk que generalmente debería de ser C:\android-sdk\ y simplemente deberemos cambiarle el nombre a C:\android-sdk-windows\
Explicación y posibles consecuencias
La explicación es sencilla, antes el sdk de android indicaba en su carpeta para que sistema operativo era, pero como uno no podía ejecutar versiones de diferentes sistemas operativos se eliminó el sufijo que indicaba la plataforma en las versiones más recientes.
Entre las consecuencias podemos hacer notar
- Los accesos directos ya no coincidirán, pero basta con corregirles la ruta
- Eclipse o el IDE que tuviera configurado apra desarrollar aplicaciones android no podrá encontrar la ruta al SDK, pero basta con cambiarle la ruta por la nueva ruta en las opciones de configuración
Como corregir el error de las plattaform tools no encontradas del android sdk
Introducción
Un error muy frecuente en las máquinas de 64 bits que se produce generalmente por acutalizar es que el sdk manager marque que las plataform tools están instaladas y actualizadas, pero en la parte de hasta abajo aparece un icono que indica que faltan algunas herramientas y sugiere reinstalar, pero reinstalar no es la solución.
El mensaje de error
El mensaje de error generalmente aparece algo similar a:
Error executing aapt. Please check aapt is present at C:\android-sdk-windows\platform-tools\aapt.exe
o en versiones más recientes
Error executing aapt. Please check aapt is present at C:\android-sdk\platform-tools\aapt.exe
Algunas veces al revisar la carpeta del android sdk incluso encontramos que no está la carpeta platform-tools.
Corrección del problema
Suponiendo que no tengamos la última versión de las platform tools le sugiero que la descargaue desde el android sdk manager ( sdkmanager.exe )A continuación deberemos de seguir los siguientes pasos
- Ir a la carpeta donde se ubica nuestro sdk de android y ubicar la carpeta build tools, esto se debería de ver como
- android-sdk-windows\build-tools en versiones no tan recientes del sdk manager
- android-sdk\build-tools en versiones más recientes
- A continuación deberá ubicar la carpeta donde se encuentre la última versión que corresponde con los build tools dañados, donde deberán estar absolutamete todas las aplicaciones de herramientas faltantes, por ejemplo \build-tools\17.0.0 para la versión 17, etc
- Finalmente, copiamos todas las aplicaciones a la carpeta platform-tools y nuestro problema debería de estar solucionado
Explicación
Como ya se mencionó... este es un problema muy común en las versiones de 64 bits, y consiste en que generalmente se descargan las aplicaciones, se colocan en un lugar temporal, y finalmente se remplazan en la carpeta donde deberán ir, pero por alguna razón no se realiza la copia y se quedan en ese lugar temporal, ya sea la carpeta temp o en este caso, la carpeta build-tools.
Suscribirse a:
Entradas (Atom)