CASE WHEN 'CampoEnCuestion'= 0 THEN 'Salida' ELSE 'OtraSalida' END
lunes, 22 de diciembre de 2014
MySql - Condicional en query
En ocasiones puede ser que necesitemos colocar un condicional dentro de una Query, esto no es una practica nada recomendable, ya que afecta mucho al rendimiento, siempre que sea posible deberemos hacerlo desde el lenguaje que valla a recibir esta info (PHP, JAVA, JS, etc...), un if/else es muchísimo mas rápido y consume muchos menos recursos que la siguiente sentencia.
sábado, 13 de diciembre de 2014
Instalar Android 5, Lollipop y actualizar nuestras app
Hoy os escribo entre felicidad y tristeza, por que quiero daros la grata noticia de que el ultimo portal que abrimos dedicado exclusivamente a Android esta teniendo una gran acogida por muchos de vosotros, y nuevos amigos que se nos unen en esta loca aventura de aprender, crecer y tener muchos dolores de cabeza con nuestros pequeños o no tan pequeños terminales de nuestro querido robótico, para los que aun no sepáis cual es ese portal os dejo la URL http://www.todo-android.gratis/ allí tendremos las mejores reviews de vuestras aplicaciones y otras que nos parezcan interesantes, al igual que de los terminales, widget, y accesorios para nuestros teléfonos, sin olvidarnos de lo que ya llevamos tiempo haciendo aquí mismo, trucos, tutoriales, y pequeños tips de programación.
viernes, 12 de diciembre de 2014
Android - Instalacion Eclipse + ADT
Os deje a medias en mi ultima entrada, pero después de varias horas, peleando con ello, y sin que terminara de funcionar, quedando solo a la espera de unas descargas... que por cierto el ADSL me va fatal por lo que los 100Mb de descarga del eclipse me tardan una eternidad.
Hoy os confirmo que después de volver a descargar eclipse, ya de paso me bajado la ultima versión: Luna Service Release 1 (4.4.1), abra que quedarse con el lado bueno que es tenerlo todo actualizado, después de haber perdido una tarde entera...
Tan solo tenemos que instalar el plugin ADT,
Hoy os confirmo que después de volver a descargar eclipse, ya de paso me bajado la ultima versión: Luna Service Release 1 (4.4.1), abra que quedarse con el lado bueno que es tenerlo todo actualizado, después de haber perdido una tarde entera...
Tan solo tenemos que instalar el plugin ADT,
jueves, 11 de diciembre de 2014
Android - DDMS files not found: C:\adt-bundle-windows-x86_64-20130729\sdk\tools\hprof-conv.exe
Hoy al abrir eclipse después de una larga temporada que me ha mantenido ocupado programando únicamente en PHP, me encontrado con el siguiente error DDMS files not found: C:\adt-bundle-windows-x86_64-20130729\sdk\tools\hprof-conv.exe
En eclipse si vamos hasta Window --> Preferences
En eclipse si vamos hasta Window --> Preferences
WordPress - Custom Post type
Crear tipos de Posts personalizados en WordPress es muy sencillo, tan solo deberemos incluir el siguiente código dentro de nuestro functions.php o bien desde un plugin.
public static function create_customPost_type() {
register_post_type('customPost', array(
'labels' => array(
lunes, 8 de diciembre de 2014
WordPress - Ejecutar una tarea en cron
Para ejecutar algo en un cron tan solo necesitamos, crear la función que queremos que se ejecute de manera automática cada cierto tiempo, y registrarla en los eventos de WordPress, antes de registrarla deberemos comprobar si ya esta registrada, si no la registrará una vez por cada pasada en el functions.php, y nuestra función se registrara cada vez, imagínate que tienes algo programado para que se ejecute cada hora, y desde que lo publicas hasta que pasa la 1 hora, as recibido la miseria de 5 visitas, las cuales además no han navegado por la web, pues tu función se ejecutara 5 veces por cada hora, hay que tener mucho cuidado con eso.
Lo solucionamos con el siguiente código
Lo solucionamos con el siguiente código
WordPress - Tiempos personalizados para cron
Cuando usamos algún cron en WordPress, siempre es necesario seleccionar cada cuanto queremos que se ejecute la tarea en cuestión, por defecto solo podemos usar hourly (cada hora), daily (diario), y twicedaily (cada 2 días).
para ello podemos usar la siguiente función, en donde al array $schedules, le agregaremos tantos como necesitemos tipo $schedules['minute'], lo cual siempre igualaremos a un array que contenga interval, y display.
para ello podemos usar la siguiente función, en donde al array $schedules, le agregaremos tantos como necesitemos tipo $schedules['minute'], lo cual siempre igualaremos a un array que contenga interval, y display.
viernes, 5 de diciembre de 2014
WordPress - Realizar peticion ajax
Realizar llamadas AJAX en WordPress es muy sencillo, tenemos mil maneras, pero la que me parece mas correcta es la siguiente:
- En nuestro functions.php pegaremos lo siguiente:
add_action('wp_ajax_nopriv_my_function', 'ajax_my_function');
add_action('wp_ajax_my_function', 'ajax_my_function');
function ajax_my_function(){
//El codigo que se ejecutara en la llamada AJAX
exit;
}
sábado, 29 de noviembre de 2014
Selector de clases, para dar estilos a las que contengan, comiencen o terminen por una cadena (Comodines CSS)
En CSS podemos seleccionar todas las clases que comiencen, terminen, o contengan una cadena en concreto para ello:
viernes, 28 de noviembre de 2014
Ghostlab a mitad de precio (Caducada)
Muchos de nosotros ya conocemos Ghostlab, para quien no haré una pequeña presentación.
Ghostlab es una pequeña gran aplicación que nos ofrece de un modo muy sencillo (arrastrando la carpeta de nuestro proyecto a su dashboard) una serie de ventajas:
martes, 25 de noviembre de 2014
WordPress - Cambiar contraseña de administrador
Para resetear la password o contraseña de cualquier usuario en WordPress, aunque lo normal es que lo usemos para resetear la del admin, ya que es la única vital, y con nuestro administrador siempre podremos cambiar cualquier otra contraseña.
Los pasos son sencillos:
Los pasos son sencillos:
- Tenemos que entrar en nuestro PhpMyAdmin, ir hasta la tabla usuarios (normalmente wp_users, o algo similar es el prefijo de nuestra tabla y a continuación users)
domingo, 9 de noviembre de 2014
CSS - Efecto marca de agua
Buenas amigos, hoy os traigo algo que seguramente os resulte muy útil.
Mediante unos estilos CSS vamos a conseguir un efecto de marca de agua, esto no es seguro, pero si muy disuasorio, ya que si alguien quiere robarnos la imagen, va a ver nuestro logo, o la imagen que definamos sobre la imagen en cuestión y en mas del 90% de los casos no intentara cogerla.
Os explico, para conseguirlo necesitamos un Div que lo contenga todo y 2 imagenes, una que se va a utilizar como marca de agua y la otra que es la que mostraremos, algo similar a esto
Mediante unos estilos CSS vamos a conseguir un efecto de marca de agua, esto no es seguro, pero si muy disuasorio, ya que si alguien quiere robarnos la imagen, va a ver nuestro logo, o la imagen que definamos sobre la imagen en cuestión y en mas del 90% de los casos no intentara cogerla.
Os explico, para conseguirlo necesitamos un Div que lo contenga todo y 2 imagenes, una que se va a utilizar como marca de agua y la otra que es la que mostraremos, algo similar a esto
<div class="marca-de-agua">y los siguientes estilos CSS:
<img alt="" src="URL-IMAGEN" /></div>
jueves, 6 de noviembre de 2014
Drupal - Plantillas hijas
Hoy os escribía como crear plantillas hijas en WordPress, la buena noticia es que esto lo podemos hacer también en Drupal.
Al igual que en WordPress es muy sencillo, tan solo deberemos seguir unos pequeños pasos:
Al igual que en WordPress es muy sencillo, tan solo deberemos seguir unos pequeños pasos:
- En la carpeta Themes de nuestra instalación de Drupal (normalmente Drupal\sites\all\themes) crearemos una nueva carpeta, o directorio con el nombre que prefiramos (p.e: mi_tema)
- Dentro de este directorio crearemos un archivo con el mismo nombre del directorio, pero con la terminación .info (p.e: mi_tema.info)
- Dentro de este archivo, copiaremos la siguiente estructura:
WordPress - Plantillas hijas
Hace unos días os explicaba como añadir una nueva hoja de estilos a la template que ya tenéis montada en vuestro WordPress, en resumen venia siendo algo asi como añadir una etiqueta a la template con el método de WP bloginfo().
Bien hoy os cuento (pensaba que esto ya lo había escrito) que ese modo es 100% funcional, aunque no es el mas apropiado, ya que si salen actualizaciones de nuestro tema, y por supuesto actualizamos (algo que deberíamos hacer siempre, para solucionar posibles bug, y agujeros de seguridad), bien como os contaba tenemos el problema al actualizar ya que todas las modificaciones que llevemos a cabo se perderán, si solo hemos incluido un enlace de una hoja de estilos tenemos fácil localizar el cambio y volver a hacerlo, aunque es una tarea pesada si la plantilla esta viva y se actualiza a menudo.
Si queremos evitarnos esto el mejor modo es crear una plantilla hija, para ello deberemos:
Bien hoy os cuento (pensaba que esto ya lo había escrito) que ese modo es 100% funcional, aunque no es el mas apropiado, ya que si salen actualizaciones de nuestro tema, y por supuesto actualizamos (algo que deberíamos hacer siempre, para solucionar posibles bug, y agujeros de seguridad), bien como os contaba tenemos el problema al actualizar ya que todas las modificaciones que llevemos a cabo se perderán, si solo hemos incluido un enlace de una hoja de estilos tenemos fácil localizar el cambio y volver a hacerlo, aunque es una tarea pesada si la plantilla esta viva y se actualiza a menudo.
Si queremos evitarnos esto el mejor modo es crear una plantilla hija, para ello deberemos:
domingo, 2 de noviembre de 2014
Drupal - Cambiar la contraseña de administrador
Hoy al entrar en la web de un cliente mio para adaptarle algunas cosillas, me he llevado una gran sorpresa y es que ha cambiado la contraseña del administrador, para que??? ni idea pero ha sido así de majo, a el le cree su usuario, con poderes administrativos, y para gestiones me quede yo con el administrador, así que no podía entrar, al preguntarle que contraseña había puesto me dice que no se acuerda, así que, una de 2 o le daba al botoncito de recordar contraseña esperaba que le llegara el mail al cliente, que me la diera, esperando que me la den bien ya sabéis que muchas veces nos mandan la mitad, por que hay un punto o un guión, etc
Así que cortando por lo sano, digo la reseteo, la forma que tenemos para crear una nueva pass, a diferencia de WP es algo mas complicado, si trabajamos con una instalación clon en local(cosa que a mi me a salvado la vida mas de una vez), tan solo deberemos:
Así que cortando por lo sano, digo la reseteo, la forma que tenemos para crear una nueva pass, a diferencia de WP es algo mas complicado, si trabajamos con una instalación clon en local(cosa que a mi me a salvado la vida mas de una vez), tan solo deberemos:
domingo, 12 de octubre de 2014
WordPress - Crear un Widget
Crear un Widget para WordPress es muy sencillo, tan solo deberemos crear un Plugin, para lo cual solo tendremos que crear un archivo dentro de la carpeta plugin, o una carpeta, y dentro de la cual todos los archivos que necesite nuestro plugin, lo ideal es esto ultimo ya que es mas complicado que otro desarrollador cree otro plugin con la misma estructura que nosotros.
El ejemplo que vamos a dejar disponible para ver el código, el proceso y su descarga desde github, estará disponible en nuestro repositorio.
Como ya hemos mencionado basta con crear un fichero en la carpeta de plugin, o un directorio y dentro ese fichero, voy a optar por esta ultima opción,
El ejemplo que vamos a dejar disponible para ver el código, el proceso y su descarga desde github, estará disponible en nuestro repositorio.
Como ya hemos mencionado basta con crear un fichero en la carpeta de plugin, o un directorio y dentro ese fichero, voy a optar por esta ultima opción,
sábado, 11 de octubre de 2014
WordPress - Permitir etiquetas HTML como target, rel en bio de autor
En la Biografia de autor WordPress por defecto no permite escribir ciertas etiquetas HTML, por ejemplo, puedes escribir <a href="xxx">xxxxxx</a> pero no puedes darlos los atributos de rel, ni de target.
Para ello tenemos una solución muy simple, sola mente tenemos que instalar y activar el siguietne plugins
https://wordpress.org/plugins/allow-rel-and-html-in-author-bios/
Y asunto solucionado, espero que os sirva de ayuda
Para ello tenemos una solución muy simple, sola mente tenemos que instalar y activar el siguietne plugins
https://wordpress.org/plugins/allow-rel-and-html-in-author-bios/
Y asunto solucionado, espero que os sirva de ayuda
Prestashop - Algunos productos se visualizan a precio 0 en la ficha de producto
Estos días he tenido que enfrentarme a un problema, en el que una de las tiendas a las que doy soporte con Prestashop marcaba todos los precios perfectamente, pero al entrar en la ficha de producto de determinados productos su precio se visualizaba a 0.00 €.
domingo, 21 de septiembre de 2014
Añadir una nueva hoja de estilos a WordPress
Casi siempre que montamos un nuevo sitio con WP, o editamos uno que ya este publicado, nos toca editar los estilos, suele cometerse el error de editar los estilos que nos proporciona la plantilla, esto nos lleva al inconveniente de que cada vez que actualizemos la plantilla deberemos volver a hacer los cambios ya que es mas que probable que nos los pisen, para ello la mejor opcion es incluir una nueva hoja de estilos con todos nuestros cambios, la cual deberemos agregarla justo al final de los estilos que trae nuestra plantilla, para agregar una nueva hoja de estilos solo necesitaremos la siguiente linea, en la cual hemos almacenado nuestra hoja de estilos en una carpeta llamada css, la cual esta en la raiz del directorio de nuestra template, y hemos llamado a nuestra hoja custom.css
Un saludo y como siempre espero que os sirva de ayuda
<link rel="stylesheet" href="<?php bloginfo('template_directory'); ?>/css/custom.css" />
Un saludo y como siempre espero que os sirva de ayuda
miércoles, 10 de septiembre de 2014
Traducir WordPress
En este articulo me centrare en rtaducir nuestro WordPress al castellano, aunquer podria aplicarse a cualquier idioma
La forma mas sencilla es descargar el instalador en el idioma elegido, para ello deberiamos ir al sigueinte enlace y descargarlo.
http://es.wordpress.org/wordpress-4.0-es_ES.zip
La forma mas sencilla es descargar el instalador en el idioma elegido, para ello deberiamos ir al sigueinte enlace y descargarlo.
http://es.wordpress.org/wordpress-4.0-es_ES.zip
sábado, 23 de agosto de 2014
Fatal error: Uncaught exception 'SmartyException' with message 'unable to write file
El otro dia me encontre con este error:
Fatal error: Uncaught exception 'SmartyException' with message 'unable to write file /var/www/vhosts/MiDominio/httpdocs/cache/smarty/compile/5a/5c/7b/wrt53c28bab1fdaa6.01547362' in /var/www/vhosts/MiDominio/httpdocs/tools/smarty/sysplugins/smarty_internal_write_file.php:44 Stack trace: #0 /var/www/vhosts/MiDominio/httpdocs/tools/smarty/sysplugins/smarty_internal_template.php(201): Smarty_Internal_Write_File::writeFile('/var/www/vhosts...', 'compileTemplateSource() #2 /var/www/vhosts/MiDominio/httpdocs/classes/module/Module.php(1860): Smarty_Internal_TemplateBase->fetch() #3 /var/www/vhosts/MiDominio/httpdocs/modules/leomanagewidgets/leomanagewidgets.php(479): ModuleCore->display('/var/www/vhosts...', '/themes/leomana...', 'leomanagewidget...') #4 /var/www/vhosts/MiDominio/httpdocs/modules/leomanagewidgets/leomana in /var/www/vhosts/MiDominio/httpdocs/tools/smarty/sysplugins/smarty_internal_write_file.php on line 44
Fatal error: Call to undefined function mcrypt_encrypt() in /var/www/vhosts/MiDominio/httpdocs/classes/Rijndael.php on line 50
Para solucionarlo le doy los permisos necesarios a la carpeta cache, y me encuentro con lo siguiente
Table 'XXXX_bd.ps_leobtslider' doesn't exist
Fatal error: Uncaught exception 'SmartyException' with message 'unable to write file /var/www/vhosts/MiDominio/httpdocs/cache/smarty/compile/5a/5c/7b/wrt53c28bab1fdaa6.01547362' in /var/www/vhosts/MiDominio/httpdocs/tools/smarty/sysplugins/smarty_internal_write_file.php:44 Stack trace: #0 /var/www/vhosts/MiDominio/httpdocs/tools/smarty/sysplugins/smarty_internal_template.php(201): Smarty_Internal_Write_File::writeFile('/var/www/vhosts...', 'compileTemplateSource() #2 /var/www/vhosts/MiDominio/httpdocs/classes/module/Module.php(1860): Smarty_Internal_TemplateBase->fetch() #3 /var/www/vhosts/MiDominio/httpdocs/modules/leomanagewidgets/leomanagewidgets.php(479): ModuleCore->display('/var/www/vhosts...', '/themes/leomana...', 'leomanagewidget...') #4 /var/www/vhosts/MiDominio/httpdocs/modules/leomanagewidgets/leomana in /var/www/vhosts/MiDominio/httpdocs/tools/smarty/sysplugins/smarty_internal_write_file.php on line 44
Fatal error: Call to undefined function mcrypt_encrypt() in /var/www/vhosts/MiDominio/httpdocs/classes/Rijndael.php on line 50
Para solucionarlo le doy los permisos necesarios a la carpeta cache, y me encuentro con lo siguiente
Table 'XXXX_bd.ps_leobtslider' doesn't exist
viernes, 22 de agosto de 2014
Marcar como activa una pestaña con JQuery
En este ejemplo muestro como marcar una pestaña u otra
Para ello uso el siguiente código JQuery:
Para hacerlo mas atractivo me he servido de los css de bootstrap, pero la idea es usar nuestros propios CSS y JS
Repositorio GitHub con el ejemplo de este artículo
Para ello uso el siguiente código JQuery:
$(document).on('click', 'ul li', function(){ var $this= $(this); $('ul li').removeClass('active'); $this.addClass('active'); });Mediante el evento on de JQuery le pido que ejecute este códogo al hacer click sobre uno de los <li> en ese momento le pido que borre la clase 'active' de todos los <li> anteriores, y se la asigno al que lanza la petición, es decir al que ha sido pulsado.
Para hacerlo mas atractivo me he servido de los css de bootstrap, pero la idea es usar nuestros propios CSS y JS
Repositorio GitHub con el ejemplo de este artículo
lunes, 4 de agosto de 2014
JQuery jugar con capas
Hoy os traigo algunas funciones utiles en JQuery para interactuar con las capas
- $(capa).after(contenido);
La funcion After te deja colocar un contenido despues del selector
- $(capa).before(contenido);
Igual que la anterior, pero esta coloca el contenido antes del selector
- $(capa).html(contenido);
Sirve para sustituir el valor del contenido
- $(capa).animate(animacion, duraccion, funcion al finalizar);
Anima un selector
- $(capa).addClass(clase);
Añade una clase al selector
- $(capa).removeClass(clase);
Este la elimina
JQuery tiene muchas mas funciones interesantes, pero he seleccionado estas por considerarla las mas utiles y usadas, cuales echais de menos???
Os dejo un ejemplo de todas las anteriores en mi GitHub
viernes, 25 de julio de 2014
No se muestra la segunda imagen - leofast - prestashop
En la plantilla para Prestashop Leofast, podemos encontrarnos con un problema y es que no se nos visualiza la segunda imagen de nuestro producto al pasar el ratón por encima de la primera
Tenéis un ejemplo de lo que hablo en: http://www.pelucastalia.com/ una web en la que ando trabajando ultimamente, cuando uno de los productos tiene 2 o mas imagenes estas deben intercambiarse al pasar el ratón sobre el producto, pero en lugar de eso sale un interrogante (la imagen por defecto).
Tenéis un ejemplo de lo que hablo en: http://www.pelucastalia.com/ una web en la que ando trabajando ultimamente, cuando uno de los productos tiene 2 o mas imagenes estas deben intercambiarse al pasar el ratón sobre el producto, pero en lugar de eso sale un interrogante (la imagen por defecto).
jueves, 17 de julio de 2014
Symfony - PHP - falta icuuc49.dll
El programa no puede iniciarse por que falta icuuc49.dll en el equipo.
Intente reinstalar el programa para corregir este problema
Este error ocurre al habilitar en el php.ini la extensión intl para solucionarlo deberemos copiar estas librerías en nuestro apache, eso se consigue del siguiente modo:
Intente reinstalar el programa para corregir este problema
- Nos dirigiremos a nuestro server en mi caso Xampp a su directorio PHP (C:\xammp\PHP)
- Buscaremos 3 archivos icudt49.dll; icuin49.dll; icuuc49.dll
- Los copiaremos (importante copiar, no cortar) a nuestro directorio apache (C:\xammp\apache\bin)
- Por ultimo reiniciaremos nuestro apache
miércoles, 16 de julio de 2014
PrestaShop - Warning on line 171 en archivo ... leobootstrapmenu.php
Al subir una simple imagen a las categorías de mis productos me encontrado con el siguiente error
Warning on line 171 en archivo /var/www/vhosts/tu_dominio_.com/httpdocs/modules/leobootstrapmenu/leobootstrapmenu.php
[2] Invalid argument supplied for foreach()
martes, 24 de junio de 2014
Slider de imagenes CSS sin JS
Hoy os dejo un Slider muy simple que hace que una serie de imagenes giren desde un lado hacia otro, vamos, el típico carrusel de imagenes, pero con la particularidad de que no lleva ni una sola linea de Java Script, esta todo escrito en CSS3.
Os dejo el código SASS, y el CSS
- SASS
#Slideshow{
overflow: hidden;
jueves, 19 de junio de 2014
Cambiar la imagen de un ImageView - Android
Para cambiar la imagen de un ImageView En un evento en concreto es muy sencillo, tan solo debemos inicializarlo en el OnCreate de nuestra clase, y después usar el siguiente código:
miImageView.setImageResource(R.drawable.imagen);Si queremos complicarlo un poco mas, podemos parametrizarlo en las preferencias del usuario por ejemplo y recuperar desde allí un String con el nombre de la imagen, podremos acceder a su Id, y asignarlo al ImageView de la siguiente manera:
Comparar String en Java
Una cosa que nos suele pasar a todos cuando empezamos a programar en Java, o bien llevamos tiempo sin programar en dicho lenguaje, es toparnos con un caso muy común, la necesidad de comparar String, ya sea entre variables, o para que si una variable tiene un valor en concreto poder hacer determinadas acciones.
En cualquier caso seguramente intentemos hacer algo al estilo:
por lo que cuando necesitemos comparar el valor de un String, o cualquier de objeto, tendremos que recurrir a algo muy sencillo, su método equals, podemos hacerlo con algo similar a lo siguiente:
En cualquier caso seguramente intentemos hacer algo al estilo:
if(miVartiableConTexto == "Un texto cualquiera"){Si lo hacemos así, una de 2 o nos damos cuanta rápido de nuestro error, o nos volveremos locos, hay que recordar en un String no es un tipo primitivo, si no un objeto, y como tal no se puede comparar mediante "==" a no ser que lo que queramos es comparar un objeto con otro, pero nunca sus valores, y como es lógico nuestra variable, nunca sera un String que podamos escribir en nuestro condicional.
//Haz algo
}else{
//Haz otra cosa
}
por lo que cuando necesitemos comparar el valor de un String, o cualquier de objeto, tendremos que recurrir a algo muy sencillo, su método equals, podemos hacerlo con algo similar a lo siguiente:
if(miVartiableConTexto.equals("Un texto cualquiera")){
//Haz algo
}else{
//Haz otra cosa
}
domingo, 15 de junio de 2014
Salto de linea en textos dentro del archivo string - Android
Como ya sabemos todos para trabajar con traducciones, y como buena practica en Android es incluir todos los textos en nuestro archivo strings.xml.
Pero que pasa si queremos un texto en varias lineas?
-Podemos introducir distintos TextView, uno para cada linea
-O podemos hacerlo en condiciones, y añadir los saltos de linea en nuestro texto en la variable de nuestras string.
Para introducir un salto de linea solo tenemos que escribir los caracteres \n al final de cada linea.
Os dejo un ejemplo
<string name="acerca_de">Juego 3 en raya \n
Desarrollado por RoG@Ma Informática.\n
www.rogamainformatica.es</string>
Espero os sirva de ayuda
Pero que pasa si queremos un texto en varias lineas?
-Podemos introducir distintos TextView, uno para cada linea
-O podemos hacerlo en condiciones, y añadir los saltos de linea en nuestro texto en la variable de nuestras string.
Para introducir un salto de linea solo tenemos que escribir los caracteres \n al final de cada linea.
Os dejo un ejemplo
<string name="acerca_de">Juego 3 en raya \n
Desarrollado por RoG@Ma Informática.\n
www.rogamainformatica.es</string>
Espero os sirva de ayuda
sábado, 14 de junio de 2014
Android - cannot execute task the task has already been executed (a task can be executed only once)
Al usar las AsyncTask en android puede aparecer el siguiente error:
Seguramente tengamos algo similar a lo siguiente
public void lanzaAsincrona(View view) {
downloadTask.execute(uri);
}
En donde downloadTask esta igualado posiblemente en el onCreate de la siguiente manera
public void lanzaAsincrona(View view) {
downloadTask = new myDownloadTask();
downloadTask.execute(uri);
}
o en su versión resumida
public void lanzaAsincrona(View view) {
new myDownloadTask().execute(uri);
}
Espero os sirva de ayuda
cannot execute task the task has already been executed (a task can be executed only once)Esto es debido a que estamos intentando ejecutar 2 veces un mismo hilo, y eso no es posible, lo que si podemos hacer es lanzar un nuevo hilo que ejecute la misma tarea.
Seguramente tengamos algo similar a lo siguiente
public void lanzaAsincrona(View view) {
downloadTask.execute(uri);
}
En donde downloadTask esta igualado posiblemente en el onCreate de la siguiente manera
downloadTask = new myDownloadTask();de esta forma creamos una nueva instancia de nuestra clase en la variable downloadTask, si borramos esa linea en el onCreate, y la copiamos dentro del método lanzaAsincrona, lo arreglaremos, ya que cada vez que llamemos a ese método crearemos una nueva instancia, por lo que se ejecutara en un nuevo hilo; debería quedar algo así
public void lanzaAsincrona(View view) {
downloadTask = new myDownloadTask();
downloadTask.execute(uri);
}
o en su versión resumida
public void lanzaAsincrona(View view) {
new myDownloadTask().execute(uri);
}
Espero os sirva de ayuda
Android - asynctask an error occurred while executing doInBackground
En ocasiones podemos encontrarnos con el siguiente error:
Si intentamos ejecutar alguna de esas acciones seguramente nos de este error, si en nuestra app necesitamos ejecutar alguna tarea, y que esta misma cambie, algo o lance un mensaje (Toast) tenemos metodos especificos para ellos, estos son ejecutados justo antes, o despues de ejecutar la tarea, estos metodos son:
@Override
protected String doInBackground(String... params) {
//Aqui ejecutaremos la tarea de nuestro hilo asincrono
}
@Override
protected void onPostExecute(String result) {
//Esto se ejecutara al terminar el hilo, es decir la tarea ejecutada en el doInBackgroun
}
@Override
protected void onPreExecute() {
//Esto se ejecutara antes de ejecutar la tarea del doInBackground
}
Tanto en el metodo OnPreExecute, como en el OnPostExecute, es el lugar ideal para lanzar Toast, o cambiar elementos de la interfac
Espero os sirva de ayuda.
asynctask an error occurred while executing doInBackgroundAl usar una tarea asincrona tenemos que tener cuidado y estar seguro de lo que hacemos, desde un hilo secundario no podemos hacer varias cosas, entre ellas modificar la apariencia del Layut, lanzar un Toast, etc ...
Si intentamos ejecutar alguna de esas acciones seguramente nos de este error, si en nuestra app necesitamos ejecutar alguna tarea, y que esta misma cambie, algo o lance un mensaje (Toast) tenemos metodos especificos para ellos, estos son ejecutados justo antes, o despues de ejecutar la tarea, estos metodos son:
@Override
protected String doInBackground(String... params) {
//Aqui ejecutaremos la tarea de nuestro hilo asincrono
}
@Override
protected void onPostExecute(String result) {
//Esto se ejecutara al terminar el hilo, es decir la tarea ejecutada en el doInBackgroun
}
@Override
protected void onPreExecute() {
//Esto se ejecutara antes de ejecutar la tarea del doInBackground
}
Tanto en el metodo OnPreExecute, como en el OnPostExecute, es el lugar ideal para lanzar Toast, o cambiar elementos de la interfac
Espero os sirva de ayuda.
viernes, 13 de junio de 2014
Android - Tareas Asincronas
Hacia tiempo que no os traía novedades, pues bien hoy os traigo algo de lo que no habíamos hablado hasta ahora y como son las tareas asincronas en Android.
En este ejemplo muy sencillo basado en el ejemplo que viene para explicar el modo de hacerlo aunque incompleto... del libro Android 4 de ediciones ENI del autor Nazim Benbourahla.
En dicho ejemplo tenemos un layout con un botón y una progressbar, aunque esta ultima oculta, y desde su activity creamos una nueva clase la cual extiende de AsyncTask, y es el método doInBackground el que se encarga de llevar a cabo las tareas en 2 plano, en el ejemplo simplemente dormimos el hilo durante un segundo en cada una de las 10 pasadas del bucle for
Tenéis todo el código en:
https://github.com/rogama/Android---Tareas-Asincronas
Espero os sirva de ayuda
En este ejemplo muy sencillo basado en el ejemplo que viene para explicar el modo de hacerlo aunque incompleto... del libro Android 4 de ediciones ENI del autor Nazim Benbourahla.
En dicho ejemplo tenemos un layout con un botón y una progressbar, aunque esta ultima oculta, y desde su activity creamos una nueva clase la cual extiende de AsyncTask, y es el método doInBackground el que se encarga de llevar a cabo las tareas en 2 plano, en el ejemplo simplemente dormimos el hilo durante un segundo en cada una de las 10 pasadas del bucle for
Tenéis todo el código en:
https://github.com/rogama/Android---Tareas-Asincronas
Espero os sirva de ayuda
sábado, 31 de mayo de 2014
Preprocesadores JS
Hoy simplemente os traigo una pregunta; acabo de terminar la lectura del Pequeño gran libro de CoffeScript si todavía no lo habéis leído os recomiendo su lectura, por lo que lo primero es dar las gracias a Javi Jimenez por escribirlo y mas aun dejándolo gratis aunque con posibilidad de donación, que sin duda vale los 5$ que el sugiere o mas.
Por otro lado hoy en día esta en la boca de todo el mundo el uso de los preprocesadores, los hay para CSS como SASS o LESS que ya hablamos en algún apartado de ellos, especialmente de LESS, los tenemos para HTML como HAMM, y para JS, que sinceramente soy un novato en este tema y no he encontrado gran información, aparte de CoffeScript.
La pregunta que quiero lanzaros es
¿Vosotros usáis preprocesadores de algún tipo en vuestros desarrollos?
¿Cuales?¿Por Que?
Sobre preprocesadores JS, ¿Cuales conoces?¿Cual crees que acabara ganando la batalla?
Por otro lado hoy en día esta en la boca de todo el mundo el uso de los preprocesadores, los hay para CSS como SASS o LESS que ya hablamos en algún apartado de ellos, especialmente de LESS, los tenemos para HTML como HAMM, y para JS, que sinceramente soy un novato en este tema y no he encontrado gran información, aparte de CoffeScript.
La pregunta que quiero lanzaros es
¿Vosotros usáis preprocesadores de algún tipo en vuestros desarrollos?
¿Cuales?¿Por Que?
Sobre preprocesadores JS, ¿Cuales conoces?¿Cual crees que acabara ganando la batalla?
jueves, 22 de mayo de 2014
Activar conexión por USB Galaxy S4
Aveces puede ocurrir que no nos reconoce nuestro PC al conectar por USB nuestro Galaxy S4.
- Para solucionar esto deberemos ir al menu de marcacion, y alli teclear *#0808#
- Seguido a esto se nos abrira una ventana en la que deberemos seleccionar AP, y en la parte inferior MTP
Habilitar menu desarrollador en Galaxy S4
Todos los que tenemos un Galaxy S4 e intentamos desarrollar con el, nos ha pasado, o pasara, que no encontramos el menu desarrollador, para asi poder habilitar la depuracion por USB, por lo que tenemos 2 opciones.
- Crear el APK e instalarlo con cada prueba
- Volvernos locos e intentar activarlo a cualquier coste
- Iremos a ajustes, y alli a la pertaña Mas
- Bajaremos hasta la opcion Acerca del dispositivo
- Buscaremos Numero de compilacion, y pulsaremos encima 7 veces (a partir de la 4 o 5 nos aparecera un mensaje "Toast" que nos dira cuantas veces nos hace falta seguir pulsando)
- Si volvemos hacia atras, ya tenemos nuestro querido menu habilitado, tan solo tendremos que marcar las opciones que querramos
fuente:
sábado, 17 de mayo de 2014
java.lang.IllegalStateException: Could not find a method Close(View) in the activity - Android
Muchos de nosotros estamos acostumbrados a poner un botón de cerrar en nuestras vistas, dicho botón, lo solemos vincular en el método OnClick con un método Close, como en la siguiente linea.
android:onClick="Close"Esto nos lleva a escribir un método similar al siguiente:
public void Close() {Pero ese código nos lanzara un error de este tipo:
finish();
}
java.lang.IllegalStateException: Could not find a method Close(View) in the activityEsto es debido a que probablemente por las prisas hallamos olvidado que nuestro método necesita que se le pase una vista, por lo que el código correcto seria:
public void Close(View view) {
finish();
}
viernes, 16 de mayo de 2014
you need to use a theme.appcompat theme (or descendant) with this activity - Android
En ocasiones podemos encontrarnos con un error como este:
unable to start activity componentinfoesto es debido a que probablemente estemos usando un tema personalizado en una Activity, que en realidad es un ActionBarActivity, esta ultima clase necesita usar el tema appCompat, por lo que deberemos ir a nuestro manifest, y editar el Theme de la actividad a lo siguiente
.....
you need to use a theme.appcompat theme (or descendant) with this activity
android:theme="@style/Theme.AppCompat" >
Aunque también podemos hacer que nuestra actividad extienda de Activity en lugar de ActionBarActivity, para ello habría que cambiarpublic class MainActivity extends ActionBarActivity {
por
public class MainActivity extends Activity {Escogeremos en cada caso la opción que mas nos interese
miércoles, 14 de mayo de 2014
Acceder a recursos de un Fragment desde un Activity mediante findById - Android
Hoy os dejo algo que me ha llevado un buen rato.
Todos los que aprendimos o hicimos nuestros pinitos hace ya algun tiempo con Android aprendimos que para "linkar" un elemento de una activity a nuestro archivo java, para poder trabajar con el, ya sea un botón, un Text View o cualquier otra cosa accediamos con un codigo similar a este.
Pues bien el problema esta en que si desde nuestro Activity, intentamos llamar a un textView que esta en nuestro Fragment como en el ejemplo superior, nos dara un error de tiempo de ejecucion, y si lo bicheamos un poco, veremos que aunque R.id.textView1 tiene un valor hexadecimal, a nuestra variable Salida sigue con null, esto es debido a que desde nuestra Activity no podemos acceder a los elementos del Fragment, para ello deberemos ir a la clase PlaceHolderFragment que nos ha creado Eclipse, y llamarlo desde alli como en el codigo que os dejo a continuación
Tambien os dejo el ejemplo completo y funcionando
https://github.com/rogama/Android---vista-boton-fragment
asi era como se hacia sin los Fragment
https://github.com/rogama/Android/tree/master/MasVistas
Todos los que aprendimos o hicimos nuestros pinitos hace ya algun tiempo con Android aprendimos que para "linkar" un elemento de una activity a nuestro archivo java, para poder trabajar con el, ya sea un botón, un Text View o cualquier otra cosa accediamos con un codigo similar a este.
salida = (TextView)findViewById(R.id.textView1);Esto mismo normalmente lo colocabamos en el onCreate de nuestro Activity, pero desde hace ya algun tiempo lo que se viene usando son los Fragment, un fragment viene siendo una parte de lo que se va a ver en el Activity, puede ser el 100% o una pequeña parte, asi un Activity, puede estar formado por 1 o mas Fragment, en resumidas cuentas eso es lo que es.
Pues bien el problema esta en que si desde nuestro Activity, intentamos llamar a un textView que esta en nuestro Fragment como en el ejemplo superior, nos dara un error de tiempo de ejecucion, y si lo bicheamos un poco, veremos que aunque R.id.textView1 tiene un valor hexadecimal, a nuestra variable Salida sigue con null, esto es debido a que desde nuestra Activity no podemos acceder a los elementos del Fragment, para ello deberemos ir a la clase PlaceHolderFragment que nos ha creado Eclipse, y llamarlo desde alli como en el codigo que os dejo a continuación
/**Espero os sirva de ayuda
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
entrada = (EditText)rootView.findViewById(R.id.numEntrada);
salida = (TextView)rootView.findViewById(R.id.numSalida);
return rootView;
}
}
Tambien os dejo el ejemplo completo y funcionando
https://github.com/rogama/Android---vista-boton-fragment
asi era como se hacia sin los Fragment
https://github.com/rogama/Android/tree/master/MasVistas
viernes, 25 de abril de 2014
Tienda en blanco al cambiar de servidor - prestashop
Llevo una temporada migrando una web a otro servidor, hoy estaba con la parte de la tienda, la cual esta montada en Prestashop, he copiado todos los archivos al nuevo server, y la base de datos, pero para mi sorpresa me encontre con que al entrar a la web me carga una pagina en blanco
no puedo entrar ni al administrador, si tecleo la URL obtengo el mismo resultado, rebuscando por hay sugerian:
- dar permisos a las carpetas
- borrar carpeta cache
- me asegurado que en la base de datos apunte al "nuevo dominio"
no es cosa del .htaccess ya que lo he renombrado y sigo con el mismo problema
Cambio el valor de:
define('_PS_MODE_DEV_', true);estaba en false en el archivo config/defines.inc.php
Y me da error:
Fatal error: Uncaught Table '*****_2013.****_shop_url' doesn't existAsi que reimportare la base de datos.
Y Solucionado!!!
jueves, 24 de abril de 2014
Fatal error: Uncaught exception 'Mailchimp_ServerError_MethodUnknown' - Mailchimp - PHP
Despues Del error que describo en: http://www.rogamainformatica.es/2014/04/fatal-error-uncaught-exception.html me aparecio este otro:
Fatal error: Uncaught exception 'Mailchimp_ServerError_MethodUnknown' with message 'Unknown method "lists/*******"' in C:\xampp\htdocs\*******\dashboard\mailchimp\src\Mailchimp.php:340 Stack trace: #0 C:\xampp\htdocs\******\dashboard\mailchimp\src\Mailchimp.php(319): Mailchimp->castError(Array) #1 C:\xampp\htdocs\**********\dashboard\test.php(6): Mailchimp->call('lists/********', '') #2 {main} thrown inC:\xampp\htdocs\*******\dashboard\mailchimp\src\Mailchimp.php on line 340
Este ultimo es simplemente por como lo llamamos
estaba usando
Fatal error: Uncaught exception 'Mailchimp_ServerError_MethodUnknown' with message 'Unknown method "lists/*******"' in C:\xampp\htdocs\*******\dashboard\mailchimp\src\Mailchimp.php:340 Stack trace: #0 C:\xampp\htdocs\******\dashboard\mailchimp\src\Mailchimp.php(319): Mailchimp->castError(Array) #1 C:\xampp\htdocs\**********\dashboard\test.php(6): Mailchimp->call('lists/********', '') #2 {main} thrown inC:\xampp\htdocs\*******\dashboard\mailchimp\src\Mailchimp.php on line 340
Este ultimo es simplemente por como lo llamamos
estaba usando
$lista = $mailchimp->call('list/list');en vez de
print_r($lista);
print_r($mailchimp->call('lists/list',''));
Fatal error: Uncaught exception 'Mailchimp_HttpError' - PHP - MailChimp
Hoy he tenido que pelearme con la API de MailChimp, y ... bueno, al menos en lo que se refiere a PHP, no he mirado como esta documentada para otros lenguajes, pero a lo que viene siendo PHP, si no usas algun framework tipo Zend o Simfony en tu proyecto estas un poco vendido, buscate la vida y peleate con el.
Entre otras cosas me encontrado con este error (en un post futuro, explicare como montala en tu proyecto)
Fatal error: Uncaught exception 'Mailchimp_HttpError' with message 'API call to lists/****** failed: SSL certificate problem: unable to get local issuer certificate' in C:\xampp\htdocs\*****\dashboard\mailchimp\src\Mailchimp.php:314 Stack trace: #0 C:\xampp\htdocs\*****\dashboard\test.php(6): Mailchimp->call('lists/*****', '') #1 {main} thrown in C:\xampp\htdocs\******\dashboard\mailchimp\src\Mailchimp.php on line 314
http://redwebturtle.blogspot.com.es/2013/09/mailchimp-api-v20-ssl-error-solution.html
Entre otras cosas me encontrado con este error (en un post futuro, explicare como montala en tu proyecto)
Fatal error: Uncaught exception 'Mailchimp_HttpError' with message 'API call to lists/****** failed: SSL certificate problem: unable to get local issuer certificate' in C:\xampp\htdocs\*****\dashboard\mailchimp\src\Mailchimp.php:314 Stack trace: #0 C:\xampp\htdocs\*****\dashboard\test.php(6): Mailchimp->call('lists/*****', '') #1 {main} thrown in C:\xampp\htdocs\******\dashboard\mailchimp\src\Mailchimp.php on line 314
- Parece ser que simplemente no tenia certificado mi servidor, la solucion a esto es muy sencilla:
- Descargar y guardar en donde tengamos instalado el PHP en nuestro equipo el sigueinte archivo: http://curl.haxx.se/docs/caextract.html en mi caso la ruta es: C:\xampp\php\
- Escribir la sigueinte linea al final de nuestro PHP.inicurl.cainfo="C:\xampp\php\cacert.pem"
- Reiniciar nuestro apache
http://redwebturtle.blogspot.com.es/2013/09/mailchimp-api-v20-ssl-error-solution.html
sábado, 12 de abril de 2014
fatal: Out of memory, malloc failed (tried to allocate 3408305152 bytes) - GIT
Acabo de encontrarme con este error al intentar subir los cambios realizados durante el dia en uno de los proyectos que estoy llevando a cabo
fatal: Out of memory, malloc failed (tried to allocate 3408305152 bytes)
He leido por hay y me encontrado soluciones de este tipo
Pero al intentar subir los cambios me volvia a saltar (Push) el mismo error, por lo que he decidido indagar un poco, yo actualmente uso SourceTree, me parece una herramienta imprescindible, te deja ver el arbol de Commit con una facilidad pasmosa, de un solo vistazo ves todos los cambios en el tiempo que has hecho tu y tu equipo, y con un par de click, puedes hacer merge, subir o bajar cambios, resolver conflictos.... El sueño de cualquier persona que trabaje a diario con GIT, el caso es que si vas a Settings
En la parte inferior izquierda tienes un boton que pone Edit Config File, si le das, abres el archivo con el blog de notas, y lo borras por completo, te pedira que si quieres guardarlo, le dices que si, y cierras las ventanitas que se han habierto, haces Push, y como si ubiera sido magia, el problema se ha solucionado ;)
Espero que esto os sirva de ayuda, a mi me a dado un pequeño quebradero de cabeza, en unos dias espero subir imagenes a este post, para que sea mas intuitivo
fatal: Out of memory, malloc failed (tried to allocate 3408305152 bytes)
He leido por hay y me encontrado soluciones de este tipo
Roberto@PORTATIL /c/xampp/htdocs/(master)
$ git config pack.threads 1
Roberto@PORTATIL /c/xampp/htdocs/(master)
$ git config pack.deltaCacheSize 128
Roberto@PORTATIL /c/xampp/htdocs/(master)
$ git config pack.packSizeLimit 128
Roberto@PORTATIL /c/xampp/htdocs/(master)
$ git config pack.windowMemory 128m
Roberto@PORTATIL /c/xampp/htdocs/(master)
$ git config pack.packSizeLimit 128m
Roberto@PORTATIL /c/xampp/htdocs/(master)
$ git config pack.deltaCacheSize 128m
Roberto@PORTATIL /c/xampp/htdocs/(master)
$ git config core.packedGitLimit 128m
Roberto@PORTATIL /c/xampp/htdocs/(master)
$ git config core.packedGitWindowSize 128m
Roberto@PORTATIL /c/xampp/htdocs/(master)
$ git repack -adf
Counting objects: 74122, done.
Compressing objects: 100% (65322/65322), done.
Writing objects: 100% (74122/74122), done.
Total 74122 (delta 14795), reused 54739 (delta 0)
Pero al intentar subir los cambios me volvia a saltar (Push) el mismo error, por lo que he decidido indagar un poco, yo actualmente uso SourceTree, me parece una herramienta imprescindible, te deja ver el arbol de Commit con una facilidad pasmosa, de un solo vistazo ves todos los cambios en el tiempo que has hecho tu y tu equipo, y con un par de click, puedes hacer merge, subir o bajar cambios, resolver conflictos.... El sueño de cualquier persona que trabaje a diario con GIT, el caso es que si vas a Settings
En la parte inferior izquierda tienes un boton que pone Edit Config File, si le das, abres el archivo con el blog de notas, y lo borras por completo, te pedira que si quieres guardarlo, le dices que si, y cierras las ventanitas que se han habierto, haces Push, y como si ubiera sido magia, el problema se ha solucionado ;)
Espero que esto os sirva de ayuda, a mi me a dado un pequeño quebradero de cabeza, en unos dias espero subir imagenes a este post, para que sea mas intuitivo
martes, 8 de abril de 2014
Warning! Your PHP configuration limits the maximum number of fields allowed in a form - Prestashop
Warning! Your PHP configuration limits the maximum number of fields allowed in a form:
1000 for max_input_vars.
Please ask your hosting provider to increase the this limit to 2481 at least or edit the translation file manually.
Para solucionar este error de nuestro Prestashop deberemos cambiar en el php.ini dicho valor, eso es simplemente abrirlo el cual en nuestro equipo estara ubicado en :
Cambiaremos el 1000 que viene por defecto por el valor que nos da el error u otro superior, finalizaremos
reiniciando apache
Otra opción, si esto no nos funciona, o si no tenemos acceso al php.ini es introducir
1000 for max_input_vars.
Please ask your hosting provider to increase the this limit to 2481 at least or edit the translation file manually.
Para solucionar este error de nuestro Prestashop deberemos cambiar en el php.ini dicho valor, eso es simplemente abrirlo el cual en nuestro equipo estara ubicado en :
C:\xampp\php
reiniciando apache
Otra opción, si esto no nos funciona, o si no tenemos acceso al php.ini es introducir
php_value max_input_vars 4000
en nuestro .htaccess
Un abrazo amigos
sábado, 5 de abril de 2014
POST git-receive-pack (chunked)
Aveces al hacer Push con Commit que integren archivos de gran tamaño; nos podremos encontrar con el siguiente error
fuente:
http://stackoverflow.com/a/14594496
POST git-receive-pack (chunked)para solucionarlo, en la consola teclearemos
git config http.postBuffer 5924288000y volveremos a intentar Push, con esto debería estar solucionado, si os sigue dando error, o cambia chunked por un dígito, volver a teclear en consola el mismo código, pero aumentando el número de buffer que hemos tecleado anteriormente por otro que sea mayor al que nos da el error
fuente:
http://stackoverflow.com/a/14594496
viernes, 4 de abril de 2014
Llevar el scroll abajo - JQuery
Os propongo un caso práctico relacionado con el último articulo que os escribí:
http://www.rogamainformatica.es/2014/04/obtener-el-alto-total-de-la-pagina.html
En el os explicaba como obtener el alto total de la pagina, para hacerlo un poco mas útil vamos a hacer que nuestra pagina nada mas cargar se desplace hasta la parte inferior.
Con estas 3 sencillas lineas podremos mover el scroll de nuestra página hasta abajo
$('html, body').stop().animate({scrollTop: SH- WH}.3000);
además la animaremos y veremos como va bajando sola durante 3 segundos.
http://www.rogamainformatica.es/2014/04/obtener-el-alto-total-de-la-pagina.html
En el os explicaba como obtener el alto total de la pagina, para hacerlo un poco mas útil vamos a hacer que nuestra pagina nada mas cargar se desplace hasta la parte inferior.
Con estas 3 sencillas lineas podremos mover el scroll de nuestra página hasta abajo
$(document).ready(function($) {y cambiando la última linea por
var WH = $(window).height();
var SH =$(document).height();
$('html, body').stop().animate({scrollTop: SH- WH});
}
$('html, body').stop().animate({scrollTop: SH- WH}.3000);
además la animaremos y veremos como va bajando sola durante 3 segundos.
jueves, 3 de abril de 2014
Obtener el alto total de la página - JQuery
Con esta sencilla linea podremos obtener el alto total de la página, desde el comienzo del header hasta el fin del footer mediante JQuery; es decir la totalidad del alto de la página.
Espero os sirva de ayuda ;)
var SH =$(document).height();
Espero os sirva de ayuda ;)
martes, 25 de marzo de 2014
Formatear un número, con decimales y miles - PHP
para formatear un numero, con decimales y miles desde PHP tan solo deberemos llamar a la siguiente función
number_format($numero, 2, ",", ".");
en donde $numero es el numero que queremos formatear
2 el numero de decimales que queremos sacar
"," el separador de decimales
"." el separador de miles
Por defecto vienen los valores americanos el "." para separar decimales y la "," para los miles
fuente
http://www.php.net/manual/es/function.number-format.php
number_format($numero, 2, ",", ".");
en donde $numero es el numero que queremos formatear
2 el numero de decimales que queremos sacar
"," el separador de decimales
"." el separador de miles
Por defecto vienen los valores americanos el "." para separar decimales y la "," para los miles
fuente
http://www.php.net/manual/es/function.number-format.php
sábado, 15 de marzo de 2014
Deshabilitar click derecho - JQuery
Hace unos días un cliente me pidió que no se pudieran descargar las imágenes de su web, y a pesar de indicarle que siempre se pueden descargar, comenzando por que para verse, el navegador las descarga y almacena en su carpeta de cache, y siguiendo por que con algo tan básico como una captura de pantalla y luego recortándola con photoshop, o incluso con el paint, ya las tiene.
por lo que le recomendé que metiera una marca de agua con su marca para sus fotos, pero aun así me insistió para que no pudieran hacer click derecho guardar imagen, por lo que aquí os dejo el código utilizado
Agradecimientos a Jorge Maiden, el cual lo tiene publicado en su blog.
Fuente: http://www.bufa.es/deshabilitar-boton-derecho-jquery/
por lo que le recomendé que metiera una marca de agua con su marca para sus fotos, pero aun así me insistió para que no pudieran hacer click derecho guardar imagen, por lo que aquí os dejo el código utilizado
<script>Con este sencillo script escrito con JQuery deshabilitaremos el botón derecho en nuestra web.
$(document).ready(function(){
$(document).bind("contextmenu",function(e){
return false;
});
});
</script>
Agradecimientos a Jorge Maiden, el cual lo tiene publicado en su blog.
Fuente: http://www.bufa.es/deshabilitar-boton-derecho-jquery/
Como redondear un decimal, mostrando solo el numero de decimales que necesitemos - JavaScript
Si decidimos sacar por pantalla un numero decimal resultante de alguna operación en JS lo mas seguro es que nos salga un chorro de números al estilo
9.99789047...
Lo cual esta claro rara vez nos va a interesar para controlarlo podemos guardar ese numero en una variable
numFloat = 9.99789047;
y mostrar el numero con los decimales que nos interesa, redondeado al siguiente si la primera cifra que vamos a ocultar es mayor a 5 por ejemplo
alert (numFloat.toFixed(2));
nos dará un mensaje emergente con un 10.00 ya que solo queremos mostrar 2 decimales y 9.997 el 7 es mayor a 5 así que el siguiente 9 se redondea al inmediato superior lo cual nos lleva a 10.00
si hiciéramos la siguiente operación
numFloat = 10/3;
nos daría 3.3333
lo cual redondeandolo
alert (numFloat.toFixed(2));
tendremos un alert con 3.33
Espero os sirva de utilidad
Fuente: http://www.w3schools.com/jsref/jsref_tofixed.asp
9.99789047...
Lo cual esta claro rara vez nos va a interesar para controlarlo podemos guardar ese numero en una variable
numFloat = 9.99789047;
y mostrar el numero con los decimales que nos interesa, redondeado al siguiente si la primera cifra que vamos a ocultar es mayor a 5 por ejemplo
alert (numFloat.toFixed(2));
nos dará un mensaje emergente con un 10.00 ya que solo queremos mostrar 2 decimales y 9.997 el 7 es mayor a 5 así que el siguiente 9 se redondea al inmediato superior lo cual nos lleva a 10.00
si hiciéramos la siguiente operación
numFloat = 10/3;
nos daría 3.3333
lo cual redondeandolo
alert (numFloat.toFixed(2));
tendremos un alert con 3.33
Espero os sirva de utilidad
Fuente: http://www.w3schools.com/jsref/jsref_tofixed.asp
sábado, 1 de marzo de 2014
Comprobar que tiene indexado google de una url
Una forma sencilla de comprobar que paginas tiene indexadas google de una de nuestras webs, es sencillamente ir al buscador y teclear
site:www.nuestraweb.es
por ejemplo:
site:www.rogamainformatica.es
Un saludo y a empezar a mejorar el posicionamiento!!
site:www.nuestraweb.es
por ejemplo:
site:www.rogamainformatica.es
Un saludo y a empezar a mejorar el posicionamiento!!
viernes, 28 de febrero de 2014
dar una fecha un tiempo atras - PHP
En muchas ocasiones tendremos la necesidad de mostrar ya sea por pantalla o simplemente almacenar en una variable una fecha en concreto, y la mayoría de las veces es una fecha pasada, como pueda ser una semana antes, un mes antes, o un año antes.
Para ello utilizaremos los métodos date() y mktime();
mktime() nos devuelve el timestamp de una fecha, si no le damos ningún parámetro nos devuelve la fecha actual; ojo fecha y hora UTC en España en concreto usamos UTC +1 podemos comprobar la fecha devuelta copiando el código que nos da, que sera algo al estilo: 1393605543 que es la fecha en la que estoy escribiendo esto; ingresando esos números en http://www.unixtimestamp.com/index.php
Por otro lado podemos formatearlo para verlo en días mes año, o como mas nos guste gracias a la función date(), a la que pasandole un string con el formato deseado lo tendremos todo solucionado, Y lo usaremos para la posición del año, m para la del mes, y d para el día. entre medias podemos poner / - espacio, lo que mas nos guste.
Para sacar una fecha en concreto en el mktime usaremos la función date() y le restaremos, o sumaremos, según necesitemos los días, meses, años e incluso minutos, horas o segundos por ejemplo:
Os dejo un par de ejemplos de su uso
<?php echo date( "Y-m-d",mktime(0, 0, 0, date("m")-1,date("d"), date("Y"))); ?>
<input type="date" name="desde" id="desde" value="<?php echo date( "Y-m-d",mktime(0, 0, 0, date("m")-1,date("d"), date("Y"))); ?>"/> al <input type="date" name="hasta" id="hasta" value="<?php echo date('Y-m-d'); ?>"/>
Para ello utilizaremos los métodos date() y mktime();
mktime() nos devuelve el timestamp de una fecha, si no le damos ningún parámetro nos devuelve la fecha actual; ojo fecha y hora UTC en España en concreto usamos UTC +1 podemos comprobar la fecha devuelta copiando el código que nos da, que sera algo al estilo: 1393605543 que es la fecha en la que estoy escribiendo esto; ingresando esos números en http://www.unixtimestamp.com/index.php
Por otro lado podemos formatearlo para verlo en días mes año, o como mas nos guste gracias a la función date(), a la que pasandole un string con el formato deseado lo tendremos todo solucionado, Y lo usaremos para la posición del año, m para la del mes, y d para el día. entre medias podemos poner / - espacio, lo que mas nos guste.
Para sacar una fecha en concreto en el mktime usaremos la función date() y le restaremos, o sumaremos, según necesitemos los días, meses, años e incluso minutos, horas o segundos por ejemplo:
- date( "Y-m-d",mktime(0, 0, 0, date("m")-1,date("d"), date("Y"))) -> nos da la fecha de hace un mes
- date( "Y-m-d",mktime(0, 0, 0, date("m"),date("d")-1, date("Y"))) -> nos da la fecha de ayer
- date( "Y-m-d",mktime(0, 0, 0, date("m"),date("d"), date("Y")-1)) -> nos da la fecha de hace un año
- date( "Y-m-d",mktime(0, 0, 0, date("m")+1,date("d"), date("Y"))) -> nos da la fecha de dentro de un mes
- date( "Y-m-d",mktime(0, 0, 0, date("m"),date("d")+7, date("Y"))) -> nos da la fecha de dentro de una semana
- date( "Y-m-d",mktime(0, 0, 0, date("m"),date("d"), date("Y")+1)) -> nos da la fecha de dentro de un año
Os dejo un par de ejemplos de su uso
<?php echo date( "Y-m-d",mktime(0, 0, 0, date("m")-1,date("d"), date("Y"))); ?>
<input type="date" name="desde" id="desde" value="<?php echo date( "Y-m-d",mktime(0, 0, 0, date("m")-1,date("d"), date("Y"))); ?>"/> al <input type="date" name="hasta" id="hasta" value="<?php echo date('Y-m-d'); ?>"/>
miércoles, 26 de febrero de 2014
Función para obtener un parametro pasado por la URL - JS
El otro día no tuve que recoger un parámetro en concreto de la URL por Java Script, sabia que lo había hecho antes, pero no recordaba como.
Así que mirando proyectos antiguos me encontré con esta función, que va a la perfección
function getParam(nombre){
name = nombre.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+nombre+"=([^&#]*)";
var regex = new RegExp( regexS );
var resultados = regex.exec( window.location.href );
if( resultados == null ){
return "";
}else {
return resultados[1];
}
}
Tan solo hay que invocarla y pasarle el String del cual queremos recuperar los datos que tenemos en nuestra URL
Espero os sirva de ayuda
Así que mirando proyectos antiguos me encontré con esta función, que va a la perfección
function getParam(nombre){
name = nombre.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+nombre+"=([^&#]*)";
var regex = new RegExp( regexS );
var resultados = regex.exec( window.location.href );
if( resultados == null ){
return "";
}else {
return resultados[1];
}
}
Tan solo hay que invocarla y pasarle el String del cual queremos recuperar los datos que tenemos en nuestra URL
Espero os sirva de ayuda
domingo, 23 de febrero de 2014
This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in
Hoy me encontrado con este error :
This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in
Justo hoy he arrancado un nuevo proyecto Android y la versión de destino es la 4.4.2 por lo que he actualizado el SDK, instalando dicha versión y descargando las actualizaciones de las anteriores que se me quedaron anticuadas, para mi sorpresa cuando abro el activity no tenia nada visible, y me aparecía dicho error después de ir a help -> check for Updates y que me dijera que no tenia ninguna actualización estaba desconcertado y googleando encontré lo siguiente:
http://stackoverflow.com/questions/18852983/eclipse-reports-rendering-library-more-recent-than-adt-plug-in
Allí dicen simplemente que le demos a help -> install New Software, en donde veremos una pantalla como la siguiente
Allí deberemos teclear la siguiente URL: https://dl-ssl.google.com/android/eclipse/
y seleccionar Developer Tool; darle a Next y esperar a que termine, cuando lo haga nos dirá que necesita reiniciar eclipse, le diremos que si y listo
Un saludo y espero que os sirva de utilidad.
This version of the rendering library is more recent than your version of ADT plug-in. Please update ADT plug-in
Justo hoy he arrancado un nuevo proyecto Android y la versión de destino es la 4.4.2 por lo que he actualizado el SDK, instalando dicha versión y descargando las actualizaciones de las anteriores que se me quedaron anticuadas, para mi sorpresa cuando abro el activity no tenia nada visible, y me aparecía dicho error después de ir a help -> check for Updates y que me dijera que no tenia ninguna actualización estaba desconcertado y googleando encontré lo siguiente:
http://stackoverflow.com/questions/18852983/eclipse-reports-rendering-library-more-recent-than-adt-plug-in
Allí dicen simplemente que le demos a help -> install New Software, en donde veremos una pantalla como la siguiente
Allí deberemos teclear la siguiente URL: https://dl-ssl.google.com/android/eclipse/
y seleccionar Developer Tool; darle a Next y esperar a que termine, cuando lo haga nos dirá que necesita reiniciar eclipse, le diremos que si y listo
Un saludo y espero que os sirva de utilidad.
jueves, 20 de febrero de 2014
IOS - TableView
En esta ocasión voy a montar un Ejemplo de un Table View básico en IOS
Para ello lo primero que necesitamos es abrir el XCode y crear un proyecto nuevo
Una vez creado nuestro nuevo proyecto iremos a nuestro StoryBoard
Y arrastraremos asta el un nuevo TableView Controller
para poder ver algo como lo siguiente
Una vez lo tengamos, crearemos una nueva clase:
Tan solo necesitamos cambiar
en el método numberOfSectionsInTableView que nos de vuelva 1
en el método numberOfRowsInSection pondremos que nos devuelva 20, lo cual sera el número de celdas que usaremos.
Y en cellForRowAtIndexPath teclearemos:
En donde únicamente declaramos el identificador de la celda y le asignamos un texto
Podéis ver el vídeo con este mismo ejemplo en menos de 5 minutos aquí debajo
Para ello lo primero que necesitamos es abrir el XCode y crear un proyecto nuevo
Una vez creado nuestro nuevo proyecto iremos a nuestro StoryBoard
Y arrastraremos asta el un nuevo TableView Controller
para poder ver algo como lo siguiente
Una vez lo tengamos, crearemos una nueva clase:
Y veremos algo así:
Después de darle a Next tenemos que teclear el nombre de la clase que vamos a crear y deberemos seleccionar la clase de la que queremos heredar UITableViewController
El siguiente paso sera vincular nuestra vista con la clase que acabamos de crear, para ello en nuestro StoryBoard seleccionaremos el TableViewController y a la derecha lo vincularemos con nuestra clase, como vemos en la imagen de abajo:
Ahora es un buen momento para dar el número de secciones que tiene la celda que utilizaremos, también en nuestra table view; en nuestro ejemplo tan solo usaremos una, como vemos en la imagen de abajo.
llegados a este punto deberemos vincular la celda con el identificador que usaremos en nuestro código, para ello seleccionaremos nuestra celda, y en el campo de identificador escribiremos Cell, ya que es el nombre que nos darán por defecto, si queremos darle otro identificador también podremos, pero habrá que cambiarlo también en el código.
Ahora solo nos queda cambiar 4 cosillas en nuestro código, para que quede tal que así:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 20;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = @"www.rogamainformatica.es";
return cell;
}
Tan solo necesitamos cambiar
en el método numberOfSectionsInTableView que nos de vuelva 1
en el método numberOfRowsInSection pondremos que nos devuelva 20, lo cual sera el número de celdas que usaremos.
Y en cellForRowAtIndexPath teclearemos:
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = @"www.rogamainformatica.es";
return cell;
En donde únicamente declaramos el identificador de la celda y le asignamos un texto
Podéis ver el vídeo con este mismo ejemplo en menos de 5 minutos aquí debajo
domingo, 16 de febrero de 2014
XCode comentar / descomentar varias lineas de una vez
para descomentar o comentar varias lineas de una sola vez en XCode tan solo deberemos pulsar cmd + shift + 7
así si por ejemplo tenemos:
así si por ejemplo tenemos:
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
cell.textLabel.text = @"LEXCode";
return cell;
conseguiremos:
// static NSString *CellIdentifier = @"Cell";
// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
//
// // Configure the cell...
// cell.textLabel.text = @"LEXCode";
//
// return cell;
Y viceversa
jueves, 13 de febrero de 2014
Error: Apache shutdown unexpectedly. [Apache] This may be due to a blocked port, missing dependencies
Seguramente a todos nos a pasado algo por el estilo, intentábamos arrancar nuestro servidor apache y nos da un error similar a este:
13:50:25 [Apache] Status change detected: stopped
13:50:25 [Apache] Error: Apache shutdown unexpectedly.
13:50:25 [Apache] This may be due to a blocked port, missing dependencies,
13:50:25 [Apache] improper privileges, a crash, or a shutdown by another method.
13:50:25 [Apache] Press the Logs button to view error logs and check
13:50:25 [Apache] the Windows Event Viewer for more clues
13:50:25 [Apache] If you need more help, copy and post this
13:50:25 [Apache] entire log window on the forums
Es tan solo por que tenemos alguna aplicación arrancada que utiliza alguno de los puertos que usa Apache, los puertos por defecto son el 80, y el 443, Skype es muy dado a usarlos, y este es el caso.
Tenemos varias soluciones. la mas rápida, aunque menos eficiente es:
13:50:25 [Apache] Status change detected: stopped
13:50:25 [Apache] Error: Apache shutdown unexpectedly.
13:50:25 [Apache] This may be due to a blocked port, missing dependencies,
13:50:25 [Apache] improper privileges, a crash, or a shutdown by another method.
13:50:25 [Apache] Press the Logs button to view error logs and check
13:50:25 [Apache] the Windows Event Viewer for more clues
13:50:25 [Apache] If you need more help, copy and post this
13:50:25 [Apache] entire log window on the forums
Es tan solo por que tenemos alguna aplicación arrancada que utiliza alguno de los puertos que usa Apache, los puertos por defecto son el 80, y el 443, Skype es muy dado a usarlos, y este es el caso.
Tenemos varias soluciones. la mas rápida, aunque menos eficiente es:
- Podemos cerrar el Skype y arrancar nuestro Apache, después podremos volver a arrancar nuestro Skype
- La que os recomiendo es ir al menú superior de nuestro Skype -> Herramientas -> Opciones.
Y en la ventana que se nos habré, ir a la opción Conexión y después desmarcar la casilla de usar puertos 80, y 443; aceptaremos los cambios y arreglado, ya podremos arrancar nuestro Apache con el Skype abierto siempre que queramos
- Una tercera solución, aunque mas elaborada, seria cambiar los puertos de Apache en el php.ini.
Esta configuración es valida para todos los Skype que no sean los "nativos" de Windows 8
miércoles, 12 de febrero de 2014
Incompatibilidad Ckeditor con IE11 - Drupal 7
Las versiones anteriores a la 4.3 del CKEditor son incompatibles con IE 11
da errores en consola del tipo
para solucionarlo debemos descargar:
da errores en consola del tipo
script5 access is denied
Archivo: ckeditor.js, Línea: 759, Columna: 251 ie
para solucionarlo debemos descargar:
- http://download.cksource.com/CKEditor/CKEditor/CKEditor%204.3.2/ckeditor_4.3.2_full.zip
- http://download.cksource.com/CKEditor/CKEditor/CKEditor%204.3%20Beta/ckeditor_4.3_beta_standard_all.zip
Yo aprendí programación con Basic #programadorIO
Nuestra primera colaboración con Desarrollo web, no te la pierdas
viernes, 7 de febrero de 2014
Enviar mensaje de correo electrónico de prueba: No se puede enviar el mensaje. Compruebe la dirección de correo electrónico en las propiedades de la cuenta. El servidor respondió: 550 Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
Enviar mensaje de correo electrónico de prueba: No se puede enviar el mensaje. Compruebe la dirección de correo electrónico en las propiedades de la cuenta. El servidor respondió: 550 Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
Aparece cuando en Outlook, o nuestro gestor de correos no se ha marcado la casilla en mas configuraciones -> Servidor de salida -> Mi servidor de salida (SMTP) requiere autenticación y claro esta es necesaria.
Aparece cuando en Outlook, o nuestro gestor de correos no se ha marcado la casilla en mas configuraciones -> Servidor de salida -> Mi servidor de salida (SMTP) requiere autenticación y claro esta es necesaria.
jueves, 6 de febrero de 2014
XML error parsing SOAP payload on line 1: Invalid character
Al usar un webservice aveces podemos recibir este error, no es ni mas ni menos a que hemos mandado algún carácter extraño para la codificación que estemos usando, en mi caso mandaba una ñ en un UTF-8, si cambiamos la codificación a ISO-8859-1 lo arreglaremos, para ello usando NuSoap, deberemos abrir el archivo nusoap.php, que esta ubicado en nuestro proyecto en la carpeta NuSoap/lib
y en la linea 149 copiar lo siguiente
var $soap_defencoding = 'ISO-8859-1';
//var $soap_defencoding = 'UTF-8';
Solucionado ;)
y en la linea 149 copiar lo siguiente
var $soap_defencoding = 'ISO-8859-1';
//var $soap_defencoding = 'UTF-8';
Solucionado ;)
martes, 4 de febrero de 2014
IOS - Declaración e implementación de métodos
En nuestro ejemplo crearemos un nuevo proyecto con una SingleView para agilizar.
Una vez Creado, nos iremos a nuestro ViewController.h y copiaremos lo siguiente:
Lo cual no es ni más ni menos que el nombre del método
Ahora vamos a nuestro ViewController.m
que vemos es lo mismo que hemos declarado en el .h tan solo que entre llaves hemos sacado 2 NSLog, uno para cada parámetro
En donde hemos escrito entre paréntesis por ser un método su implementación y todo ello precedido por self que es el símil a this en otros lenguajes, y se utiliza para referirnos a todo lo que tenemos en nuestra propia clase, seguido de la descripción de los parámetros se los pasamos
Os dejo el código para descargar desde mi GiHub:https://github.com/rogama/IOS---Declaraci-n-e-implementaci-n-de-metodo.git
Una vez Creado, nos iremos a nuestro ViewController.h y copiaremos lo siguiente:
-(void)nombreDelMetodoConParametro1:(NSString *)parametro1 andParametro2:(NSString *)parametro2;
Con esta simple linea hemos declarado nuestro método; paso a explicarlo:
-(void)
Con esto decimos que es un método de objeto y que no devuelve nada, que solo ejecuta una serie de sentencias que mas adelante programaremos.
Si quisiéramos declarar un objeto de clase lo haríamos sustituyendo el - por un +
En resumen:
- -método de objeto
- +método de clase
(void) No devuelve nada, solo ejecuta, si le ponemos algún tipo devariable será lo que nos devuelva NSString, NSNumber …
Lo siguiente que nos encontramos es: nombreDelMetodoCon
Ahora nos encontramos con Parametro1:
Debe ser un texto descriptivo del parámetro que solicitamos
Y lo siguiente es: (NSString *)parametro1
Lo que nos encontramos entre () solo es el tipo de dato que vamos a pedir parametro1 es el nombre de la variable que vamos a utilizar dentro de nuestro método.
Casi acabando nos encontramos con andParametro2:(NSString *)parametro2;
En donde andParametro2: Debe ser un texto descriptivo del segundo parámetro y (NSString *)parametro2; al igual que con parametro1 pedimos el tipo de dato y damos el nombre de la variable que vamos a utilizar dentro del método.Ahora vamos a nuestro ViewController.m
Y allí copiaremos lo siguiente:
//Implementacion del metodo
-(void)nombreDelMetodoConParametro1:(NSString *)parametro1 andParametro2:(NSString *)parametro2{
NSLog(@"%@", parametro1);
NSLog(@"%@", parametro2);
}
Dentro del - (void)viewDidLoad Copiaremos lo siguiente
[self nombreDelMetodoConParametro1:@"Texto de Ejemplo1" andParametro2:@"Texto de ejemplo para el segundo ejemplo"];
En donde hemos escrito entre paréntesis por ser un método su implementación y todo ello precedido por self que es el símil a this en otros lenguajes, y se utiliza para referirnos a todo lo que tenemos en nuestra propia clase, seguido de la descripción de los parámetros se los pasamos
Os dejo el código para descargar desde mi GiHub:https://github.com/rogama/IOS---Declaraci-n-e-implementaci-n-de-metodo.git
lunes, 3 de febrero de 2014
#1045 - Access denied for user 'root'@'localhost' (using password: NO) - PHPMyAdmin
El otro día me encontré con este error en una instalación de Xampp.
La verdad es que solucionarlo es sencillo, tan solo deberemos arrancar la consola de nuestro server:
con lo que veremos una pantalla parecida a esta:
Una vez estemos hay deberemos escribir el comando
El siguiente paso es el de dar los permisos:
Y para finalizar deberemos abrir nuestro archivo php.ini como indicamos en la siguiente imagen o con nuestro editor favorito aunque con el blog de notas vamos sobrados, php.ini lo tenemos ubicado en: C:\xampp\php
y allí comprobaremos los siguientes parámetros
Fuente: http://es.kioskea.net/faq/10637-phpmyadmin-1045-access-denied-for-user-root-localhost
La verdad es que solucionarlo es sencillo, tan solo deberemos arrancar la consola de nuestro server:
con lo que veremos una pantalla parecida a esta:
mysqlDespués deberemos ingresar el siguiente código para darle una contraseña a nuestro usuario root:
SET PASSWORD FOR root@localhost=PASSWORD(' micontraseña ');
El siguiente paso es el de dar los permisos:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY ' micontraseña ' WITH GRANT OPTION;
Y para finalizar deberemos abrir nuestro archivo php.ini como indicamos en la siguiente imagen o con nuestro editor favorito aunque con el blog de notas vamos sobrados, php.ini lo tenemos ubicado en: C:\xampp\php
Comprobaremos los siguientes parámetros
; Default host for mysql_connect() (doesn't apply in safe mode). mysqli.default_host ='localhost' ; Default user for mysql_connect() (doesn't apply in safe mode). mysqli.default_user ='root'
Y ponemos nuestra pass ; Default password for mysqli_connect() (doesn't apply in safe mode). mysqli.default_pw ='micontraseña'
Abriremos el archivo config.inc.php como vemos en la imagen de abajo o mediante la ruta: C:\xampp\phpMyAdmin
y allí comprobaremos los siguientes parámetros
$cfg['Servers'][$i]['host']= 'localhost'; $cfg['Servers'][$i]['user'] = 'root';
y nuestra contraseña
$cfg['Servers'][$i]['password']= 'micontraseña';
Fuente: http://es.kioskea.net/faq/10637-phpmyadmin-1045-access-denied-for-user-root-localhost
sábado, 1 de febrero de 2014
Tomar posesion de un archivo o carpeta Windows
Lo primero es mostrar la pestaña de seguridad:
Para ello deberemos ir a Herramientas->Opciones de carpeta-> allí a la pestaña Ver-> y desmarcar la ultima casilla: Utilizar uso compartido simple de archivos
Para ver el menú herramientas en windows superiores a XP en cualquier carpeta pulsamos la tecla ALT .
Fuente: http://www.mistrucos.net/truco-windows-windows-xp-ver-pestana-seguridad-48.htm
Una vez tengamos visible la pestaña seguridad; deberemos hacer click derecho sobre el archivo o carpeta del que vamos a tomar posesión, después iremos a propiedades, y una vez allí a seguridad, seleccionaremos nuestro usuario y le daremos todos los permisos, y después al botón de aplicar, esperamos un poco y con esto suele ser suficiente
En caso de que no lo sea, deberemos dar a opciones avanzadas-> pestaña Propietario-> seleccionaremos nuestro usuario, y marcaremos la casilla de reemplazar propietario en Subcontenedores y objetos, aplicaremos y listo.
Fuente: http://support.microsoft.com/kb/308421/es
Probado en XP aunque debe ser igual para Vista, 7 y 8
Para ello deberemos ir a Herramientas->Opciones de carpeta-> allí a la pestaña Ver-> y desmarcar la ultima casilla: Utilizar uso compartido simple de archivos
Para ver el menú herramientas en windows superiores a XP en cualquier carpeta pulsamos la tecla ALT .
Fuente: http://www.mistrucos.net/truco-windows-windows-xp-ver-pestana-seguridad-48.htm
Una vez tengamos visible la pestaña seguridad; deberemos hacer click derecho sobre el archivo o carpeta del que vamos a tomar posesión, después iremos a propiedades, y una vez allí a seguridad, seleccionaremos nuestro usuario y le daremos todos los permisos, y después al botón de aplicar, esperamos un poco y con esto suele ser suficiente
En caso de que no lo sea, deberemos dar a opciones avanzadas-> pestaña Propietario-> seleccionaremos nuestro usuario, y marcaremos la casilla de reemplazar propietario en Subcontenedores y objetos, aplicaremos y listo.
Fuente: http://support.microsoft.com/kb/308421/es
Probado en XP aunque debe ser igual para Vista, 7 y 8
martes, 28 de enero de 2014
nusoap_client: Error: XML error parsing SOAP payload on line 1: Not well-formed (invalid token)
Este error nos aparecerá, al intentar consumir un WebService, mal montado, ya que en algún lugar tiene un echo, simplemente cambiamos los echo por return en el webService Server y arreglado ;)
miércoles, 22 de enero de 2014
Mejorar la velocidad de transferencia - Filecilla - FTP
Mi cliente FTP favorito Filecilla viene mal configurado por defecto, o por lo menos de forma mejorable, encontré estas opciones el otro día por hay trasteando, aburrido mientras subía unos 100 megas de una instalación de drupal.
Con estos sencillos pasos aumentaremos la velocidad de transferencia hasta en 5.
Lo Primero que debemos hacer es ir a Edición y allí opciones
Se nos abrirá una nueva ventana, en la que deberemos ir hasta transferencias, y cambiar el número de transferencias simultaneas a 10, que es el máximo que puede manejar Filecilla, dejando los demás valores como vemos en la imagen, que es como los trae por defecto. El siguiente paso sera darle a aceptar y listo, ya tenemos nuestro Filecilla descargando y subiendo archivos 5 veces mas rápido.
Un saludo y a disfrutarlo!!
Con estos sencillos pasos aumentaremos la velocidad de transferencia hasta en 5.
Lo Primero que debemos hacer es ir a Edición y allí opciones
Se nos abrirá una nueva ventana, en la que deberemos ir hasta transferencias, y cambiar el número de transferencias simultaneas a 10, que es el máximo que puede manejar Filecilla, dejando los demás valores como vemos en la imagen, que es como los trae por defecto. El siguiente paso sera darle a aceptar y listo, ya tenemos nuestro Filecilla descargando y subiendo archivos 5 veces mas rápido.
Un saludo y a disfrutarlo!!
jueves, 16 de enero de 2014
Comprobar todas las tablas de una base de datos - MySql
Cuando programamos web, es muy habitual usar bases de datos MySQL, en estos casos seguramente hayamos tenido la necesidad de usar la orden CHECK TABLE ''tablename'' para comprobar que nuestra tabla no este corrupta por alguna sentencia SQL que se haya quedado a medias, o por alguna otra razon; pero... y cuando lo queremos hacer en todas nuestras tablas??
Para ello deberemos entrar por SSH en nuestro servidor, logueandonos con nuestro usuario y contraseña, seguramente si estamos en un servidor compartido no tengamos acceso, en ese caso creo que lo mejor sera contactar con nuestro proveedor de hosting.
Una vez estemos logeados deberemos teclear en la consola lo siguiente:
Un saludo y espero os resulte de utilidad
Para ello deberemos entrar por SSH en nuestro servidor, logueandonos con nuestro usuario y contraseña, seguramente si estamos en un servidor compartido no tengamos acceso, en ese caso creo que lo mejor sera contactar con nuestro proveedor de hosting.
Una vez estemos logeados deberemos teclear en la consola lo siguiente:
mysqlcheck -u root -p --auto-repair --check --optimize --all-databasesCambiando root por nuestro usuario de la BBDD; y la p es para que pida la pass, la cual deberemos teclear en la consola, recuerda que no aparecen ni *(asteriscos) ni nada mientras la escribes, no pierdas el hilo por que no sabras por donde vas, otra opcion es cambiar la -p de por -NuestraPassword aunque no se recomienda, ya que se enviaria sin encriptar, y quedaria legible para personas que pasaran cerca nuestra.
Un saludo y espero os resulte de utilidad
Conectar por SSH - PuTTY
Para conectar por SSH a un servidor necesitaremos su IP, un usuario y una password, tambien sera necesario un puerto, aunque por defecto es el 22
Un buen programa para Windows, aunque esta disponible para otras plataformas es PuTTY, de muy sencilla instalacción, y mas sencillo de usar.
Os dejo el link a su pagina de descargas, para que bajéis la versión que mas os convenga según vuestro sistema
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Un buen programa para Windows, aunque esta disponible para otras plataformas es PuTTY, de muy sencilla instalacción, y mas sencillo de usar.
Os dejo el link a su pagina de descargas, para que bajéis la versión que mas os convenga según vuestro sistema
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
miércoles, 15 de enero de 2014
Warning: call_user_func() expects parameter 1 to be a valid callback, function 'rules_events_entity_unchanged' not found - Drupal
Al actualizar el modulo de commerce coupon, a su nueva versión 7.x-2.0-beta1 lanzada hace unos días nos aparecerá un Warning en pantalla.
Para solucionar este error:
lunes, 13 de enero de 2014
Undefined variable: tab_root_map en _menu_translate() - implode() [function.implode]: Invalid arguments passed en _menu_translate() - Drupal
Para solucionar el error:
- Notice: Undefined variable: tab_root_map en _menu_translate() (línea 787 de /home/admin/public_html/includes/menu.inc).
- Warning: implode() [function.implode]: Invalid arguments passed en _menu_translate() (línea 787 de /home/admin/public_html/includes/menu.inc).
Suscribirse a:
Entradas (Atom)