Lamentablemente el kernel de Oracle Linux 6 no tiene soporte para Atheros AR9285 (wireless), tampoco es posible recompilar los modulos de los fuentes ya que mandan un error.
Revisando en varios sitios encontre la recomendación de cambiar el kernel que carga por defecto.
Si revisamos /etc/grub.conf encontraremos otros kernels disponibles en la distribución, el kernel que recomiendo es el de titulo "Oracle Linux Server Red Hat Compatible Kernel", lo podemos mover al inicio de la lista y reiniciamos.
Iniciamos el módulo utilizando:
# modprobe ath9k
Y revisamos si esta levantada la tarjeta
# ifconfig -a
Si todavía tienes problemas recomiendo instalar kmod-compat-wireless de la siguiente manera:
# yum install http://elrepo.reloumirrors.net/elrepo/el6/x86_64/RPMS/kmod-compat-wireless-3.3-2.n.el6.elrepo.x86_64.rpm
y reiniciar.
Con esto ya deberíamos tener levantada la wireless.
martes, 19 de noviembre de 2013
viernes, 15 de noviembre de 2013
Instalar OVMM sobre un Oracle Virtual Server
Requerimientos:
Tener instalado un servidor OVM con las particiones:/ (root) de 16GB
swap de 16GB
Pasos:
1. Crear el hostname de la aplicación
# hostname
el valor mostrado lo añadimos a nuestro archivo /etc/hosts, ya que es necesario para la instalación de OVMM
# echo "127.0.0.1 [HOSTNAME]" >> /etc/hosts
2. Añadir memoria RAM a OVS
Modificar el archivo /boot/grub/grub.conf
y asignar el valor de dom0_mem=2048M
3. Modificamos la versión de Oracle
OVMM necesita una versión de Oracle Linux superior a la de OVS, por tanto es necesario modificar la versión de linux e instalar algunos paquetes adicionales necesarios
# echo "RedHat Enterprise Linux Server release 5.5 (Tikanga)" > /etc/redhat-release
# cd /etc/yum.repos.d/
# wget http://public-yum.oracle.com/public-yum-e15.repo
# yum list
# yum install xz-devel
# yum install zip
4. Instalamos OVMM
El proceso es sencillo, en mi caso lo hice desde un DVD.
# mkdir /mnt/dvd
# mount /dev/dvd /mnt/dvd
# cd /mnt/dvd
# ./createOracle.sh
# ./runInstaller.sh
Listo!!
miércoles, 18 de septiembre de 2013
Android: Generar R.java manualmente
Me encontré recientemente con el error de que no se genera el archivo R.java. Revisando algunos portales logre llegar a la solución con este pequeño script.
PATH_ANDROID=programs/android-studio/sdk/build-tools/android-4.2.2
PATH_MANIFEST=workspaces/DefaultWorkspace/MyApp/AndroidManifest.xml
PATH_RESOURCE=workspaces/DefaultWorkspace/MyApp/res
PATH_LIBS=workspaces/DefaultWorkspace/MyApp/libs
PATH_GENERATE=workspaces/DefaultWorkspace/MyApp/gen
$PATH_ANDROID/aapt package --non-constant-id -f -m \
-M $PATH_MANIFEST \
-S $PATH_RESOURCE \
-I $PATH_LIBS \
-J $PATH_GENERATE --generate-dependencies
El script esta basado en rutas que crea Eclipse, si usas otro IDE puedes cambiar las rutas a las que se ajusten a tu IDE.
Suerte.
(Para hacerlo en Eclipse de forma visual, botón derecho sobre el proyecto -> Android Tools -> Fix project properties)
PATH_ANDROID=programs/android-studio/sdk/build-tools/android-4.2.2
PATH_MANIFEST=workspaces/DefaultWorkspace/MyApp/AndroidManifest.xml
PATH_RESOURCE=workspaces/DefaultWorkspace/MyApp/res
PATH_LIBS=workspaces/DefaultWorkspace/MyApp/libs
PATH_GENERATE=workspaces/DefaultWorkspace/MyApp/gen
$PATH_ANDROID/aapt package --non-constant-id -f -m \
-M $PATH_MANIFEST \
-S $PATH_RESOURCE \
-I $PATH_LIBS \
-J $PATH_GENERATE --generate-dependencies
El script esta basado en rutas que crea Eclipse, si usas otro IDE puedes cambiar las rutas a las que se ajusten a tu IDE.
Suerte.
(Para hacerlo en Eclipse de forma visual, botón derecho sobre el proyecto -> Android Tools -> Fix project properties)
miércoles, 4 de septiembre de 2013
Android: Compartir en redes sociales especificas
En el post anterior pudimos compartir en redes sociales, en esta ocación vamos a compartir en redes especificas, como "sólo en facebook" o "sólo por correo", para esto creamos en nuestro Activity el siguiente método:
void shareSpecificSocialNetwork(String nameApp, String title,
String extraTitle, String filename) {
try {
List targetedShareIntents = new ArrayList();
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("image/jpeg");
List resInfo = getPackageManager()
.queryIntentActivities(share, 0);
if (!resInfo.isEmpty()) {
for (ResolveInfo info : resInfo) {
Intent targetedShare = new Intent(
android.content.Intent.ACTION_SEND);
targetedShare.setType("image/jpeg");
if (info.activityInfo.packageName.toLowerCase().contains(
nameApp)
|| info.activityInfo.name.toLowerCase().contains(
nameApp)) {
targetedShare.putExtra(Intent.EXTRA_SUBJECT,
"Sample Photo");
targetedShare.putExtra(Intent.EXTRA_TEXT, extraTitle);
targetedShare.putExtra(Intent.EXTRA_STREAM,
Uri.fromFile(new File(filename)));
targetedShare.setPackage(info.activityInfo.packageName);
targetedShareIntents.add(targetedShare);
}
}
Intent chooserIntent = Intent.createChooser(
targetedShareIntents.remove(0), title);
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
targetedShareIntents.toArray(new Parcelable[] {}));
startActivity(chooserIntent);
}
} catch (Exception e) {
Log.v("PensandoEnBinario", e.getMessage());
}
}
Igual que el anterior blog deberíamos crear un botón que ejecute el evento de compartir en facebook:
Button btnFacebook = (Button) dialog
.findViewById(R.id.dialogButtonFacebook);
btnFacebook.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
shareSpecificSocialNetwork("facebook","PensandoEnBinario",
"Powered by PensandoEnBinario",inputFilename);
}
});
Listo podemos probar con: facebook, twitter, mail, instagram, etc.
void shareSpecificSocialNetwork(String nameApp, String title,
String extraTitle, String filename) {
try {
List
Intent share = new Intent(android.content.Intent.ACTION_SEND);
share.setType("image/jpeg");
List
.queryIntentActivities(share, 0);
if (!resInfo.isEmpty()) {
for (ResolveInfo info : resInfo) {
Intent targetedShare = new Intent(
android.content.Intent.ACTION_SEND);
targetedShare.setType("image/jpeg");
if (info.activityInfo.packageName.toLowerCase().contains(
nameApp)
|| info.activityInfo.name.toLowerCase().contains(
nameApp)) {
targetedShare.putExtra(Intent.EXTRA_SUBJECT,
"Sample Photo");
targetedShare.putExtra(Intent.EXTRA_TEXT, extraTitle);
targetedShare.putExtra(Intent.EXTRA_STREAM,
Uri.fromFile(new File(filename)));
targetedShare.setPackage(info.activityInfo.packageName);
targetedShareIntents.add(targetedShare);
}
}
Intent chooserIntent = Intent.createChooser(
targetedShareIntents.remove(0), title);
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
targetedShareIntents.toArray(new Parcelable[] {}));
startActivity(chooserIntent);
}
} catch (Exception e) {
Log.v("PensandoEnBinario", e.getMessage());
}
}
Igual que el anterior blog deberíamos crear un botón que ejecute el evento de compartir en facebook:
Button btnFacebook = (Button) dialog
.findViewById(R.id.dialogButtonFacebook);
btnFacebook.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
shareSpecificSocialNetwork("facebook","PensandoEnBinario",
"Powered by PensandoEnBinario",inputFilename);
}
});
Listo podemos probar con: facebook, twitter, mail, instagram, etc.
Android: Compartir en redes sociales
En esta ocasión vamos a compartir texto e imágenes en las distintas redes sociales, para esto vamos a añadir a nuestro Activity el siguiente método
public void shareSocialNetwork(String title, String extraTitle,
String filename) {
Intent share = new Intent(Intent.ACTION_SEND);
share.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(filename)));
share.putExtra(Intent.EXTRA_TITLE, extraTitle);
share.putExtra(Intent.EXTRA_SUBJECT, extraTitle);
share.setType("image/png");
startActivity(Intent.createChooser(share, title));
}
Este método es el encargado de mostrar el dialogo para la selección de redes sociales y los valores por defecto a compartir.
Para ejecutarlo creamos un botón con id btnShare al cual le asignaremos el evento:
ImageButton btnShare = (ImageButton) findViewById(R.id.btnShare);
btnShare.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
shareSocialNetwork("PensandoEnBinario",
"Powered by PensandoEnBinario",inputFilename); //inputFilename es una imagen (uri) para compartir
}
});
Listo, ya tenemos un botón que permite compartir en las redes sociales.
public void shareSocialNetwork(String title, String extraTitle,
String filename) {
Intent share = new Intent(Intent.ACTION_SEND);
share.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(filename)));
share.putExtra(Intent.EXTRA_TITLE, extraTitle);
share.putExtra(Intent.EXTRA_SUBJECT, extraTitle);
share.setType("image/png");
startActivity(Intent.createChooser(share, title));
}
Este método es el encargado de mostrar el dialogo para la selección de redes sociales y los valores por defecto a compartir.
Para ejecutarlo creamos un botón con id btnShare al cual le asignaremos el evento:
ImageButton btnShare = (ImageButton) findViewById(R.id.btnShare);
btnShare.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
shareSocialNetwork("PensandoEnBinario",
"Powered by PensandoEnBinario",inputFilename); //inputFilename es una imagen (uri) para compartir
}
});
Listo, ya tenemos un botón que permite compartir en las redes sociales.
Android FullScreen Activity
Muchas aplicaciones móviles requieren mostrarse en FullScreen, para esto tenemos dos posibilidades
Fullscreen en toda la aplicación:
Es necesario editar el archivo :
AndroidManifest.xml
Y en la sección application se añade el parametro:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
Fullscreen en pantallas especificas:
Es necesario en el método: onCreate
añadir las siguientes líneas (después de super.onCreate(savedInstanceState)):
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Listo!!
Fullscreen en toda la aplicación:
Es necesario editar el archivo :
AndroidManifest.xml
Y en la sección application se añade el parametro:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
Fullscreen en pantallas especificas:
Es necesario en el método: onCreate
añadir las siguientes líneas (después de super.onCreate(savedInstanceState)):
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Listo!!
lunes, 26 de agosto de 2013
Linux + Android SDK + Célular Android (USB Drivers)
El presente es un tutorial para conectar Android SDK con los célulares Android de distintos fabricantes.
Lo primero que tenemos que hacer es detectar es el fabricante de nuestro célular. Para eso conectamos por USB el célular a la PC y ejecutamos
#lsusb
Tendremos una lista con los distintos puertos USB y el fabricante del dispositivo conectado.
El fabricante de mi dispositivo (célular) es el siguiente:
Bus 005 Device 006: ID 0fce:6193 Sony Ericsson Mobile Communications AB
Si todavía no encuentran el suyo pueden probar ejecutando "lsusb" con y sin conectar por USB el célular. El que se añadede en la lista será el de su célular.
Uno de los parametros de la línea extraida es el Id del fabricante, a continuación lo marcamos de rojo:
Bus 005 Device 006: ID 0fce:6193 Sony Ericsson Mobile Communications AB
Luego de que tenemos detectado el Id del fabricante tendremos que editar o crear el archivo (como usuario root):
#/etc/udev/rules.d/51-android.rules
En este archivo añadimos la siguiente línea
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev"
Noten que el Id del fabricante esta marcado de rojo. Este es el valor de nuestro fabricante de dispositivo (Célular)
Nos queda darle permisos al archivo:
#chmod a+r /etc/udev/rules.d/51-android.rules
Desconectamos y conectamos el USB de conexión al célular y probamos con la herramienta del SDK Android (sdk/platform-tools)
#adb devices
List of devices attached
BX903H993B device
Listo hemos logrado la conexión de nuestro Android SDK con nuestro dispositivo android y podemos comenzar a desarrollar.
Lo primero que tenemos que hacer es detectar es el fabricante de nuestro célular. Para eso conectamos por USB el célular a la PC y ejecutamos
#lsusb
Tendremos una lista con los distintos puertos USB y el fabricante del dispositivo conectado.
El fabricante de mi dispositivo (célular) es el siguiente:
Bus 005 Device 006: ID 0fce:6193 Sony Ericsson Mobile Communications AB
Si todavía no encuentran el suyo pueden probar ejecutando "lsusb" con y sin conectar por USB el célular. El que se añadede en la lista será el de su célular.
Uno de los parametros de la línea extraida es el Id del fabricante, a continuación lo marcamos de rojo:
Bus 005 Device 006: ID 0fce:6193 Sony Ericsson Mobile Communications AB
Luego de que tenemos detectado el Id del fabricante tendremos que editar o crear el archivo (como usuario root):
#/etc/udev/rules.d/51-android.rules
En este archivo añadimos la siguiente línea
SUBSYSTEM=="usb", ATTR{idVendor}=="0fce", MODE="0666", GROUP="plugdev"
Noten que el Id del fabricante esta marcado de rojo. Este es el valor de nuestro fabricante de dispositivo (Célular)
Nos queda darle permisos al archivo:
#chmod a+r /etc/udev/rules.d/51-android.rules
Desconectamos y conectamos el USB de conexión al célular y probamos con la herramienta del SDK Android (sdk/platform-tools)
#adb devices
List of devices attached
BX903H993B device
Listo hemos logrado la conexión de nuestro Android SDK con nuestro dispositivo android y podemos comenzar a desarrollar.
lunes, 8 de julio de 2013
Apache 2.4 añadir VirtualHost para Zend Framework 2
La versión de ZF2 trae por defecto una configuración para levantar un VirtualHost en Apache. Pero esta configuración no funciona correctamente en Apache 2.4.
A continuación adjunto la configuración correcta para Apache 2.4, espero les sea útil.
<VirtualHost *:80>
ServerName "local.mipagina.com"
DocumentRoot "/home/webmaster/local.mipagina.com/public"
SetEnv APPLICATION_ENV "development"
ErrorLog "/var/log/httpd/local.mipagina.com.err"
<Directory "/home/webmaster/local.mipagina.com/public">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Allow from All
require all granted
</Directory>
</VirtualHost>
Probado en Slackware 14
A continuación adjunto la configuración correcta para Apache 2.4, espero les sea útil.
<VirtualHost *:80>
ServerName "local.mipagina.com"
DocumentRoot "/home/webmaster/local.mipagina.com/public"
SetEnv APPLICATION_ENV "development"
ErrorLog "/var/log/httpd/local.mipagina.com.err"
<Directory "/home/webmaster/local.mipagina.com/public">
DirectoryIndex index.php
Options Indexes FollowSymLinks
AllowOverride All
Allow from All
require all granted
</Directory>
</VirtualHost>
viernes, 25 de enero de 2013
PHP - capturar el IP del cliente
Adjunto un script muy necesario para poder extraer el IP del cliente, que incluye validaciones de red interna, host local y redirecciones:
function getIp() { if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND $_SERVER['HTTP_X_FORWARDED_FOR'] AND (!isset($_SERVER['REMOTE_ADDR']) OR preg_match('/^127\..*/i', trim($_SERVER['REMOTE_ADDR'])) OR preg_match('/^172\.16.*/i', trim($_SERVER['REMOTE_ADDR'])) OR preg_match('/^192\.168\.*/i', trim($_SERVER['REMOTE_ADDR'])) OR preg_match('/^10\..*/i', trim($_SERVER['REMOTE_ADDR'])))) { $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); return $ips[0]; } return $_SERVER['REMOTE_ADDR']; }
Suscribirse a:
Entradas (Atom)
-
XFCE es un escritorio muy potente, pero una de sus desventajas es no poseer un Salva-pantallas por defecto (en la instalación), así que ten...
-
En esta ocación vamos a desarrollar un proceso muy fácil, vamos a exportar una base de datos Firebird corriendo sobre sistema operativo Wind...
-
Hoy vamos a realizar una instalación básica de Slackware. Como entorno para la instalación tenemos un PC con las siguientes caracteristic...
Emacs en windows: arranque rápido
En windows la carga de emacs implica una demora en windows pero se puede mejorar usando el demonio de emacs y modificar la llamada usando el...