0 05
05
2012

Cannot locate java installation in specified jdkhome

Fecha de publicación: 5 mayo 2012 a las 0:16 por admin

Hace algunos días, actualicé mi sistema operativo Ubuntu a su última versión 12.04 LTS Precise Pangolin, y si bien debo reconocer mejoras apreciables en el rendimiento diario del sistema, también me voy encontrando alguna sorpresa inesperada sobre programas usados hasta entonces que se han visto afectados por la actualización.

NetBeans logo

NetBeans logo

Una de esas sorpresas me la encontré hace unos minutos, al intentar abrir el IDE NetBeans, retornando el mensaje de error:

Cannot locate java installation in specified jdkhome

/usr/lib/jvm/…

Do you want to try to use default version?

Parece que la actualización a Ubuntu 12.04 LTS se llevó consigo la actualización de la instalación de Java, y ahora NetBeans es incapaz de localizarla.

Por lo tanto, simplemente vamos a avisar a nuestro IDE NetBeans la ruta donde se encuentra instalado Java para que todo vuelva a la normalidad. Para ello editamos el archivo netbeans.conf que encontrarás bajo

/usr/local/netbeans-7.x/etc/netbeans.conf

y modificamos la variable netbeans_jdkhome indicando tu directorio de instalación Java.

0 24
03
2012

Failed to access IIS metabase ASP.NET

Fecha de publicación: 24 marzo 2012 a las 23:13 por admin

Si estás intentando ejecutar tu aplicativo web sobre Internet Information Server (IIS) y recibes el siguiente mensaje de error

Failed to access IIS metabase

probablemente has instalado IIS después de instalar .NET Framework.

La solución pasa por reparar la instalación de ASP.NET Framework 2.0, para ello ejecutamos desde la consola de comandos de Visual Studio:

aspnet_regiis.exe -i

o desde la línea de comandos de Windows:

%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i

NOTA: Comprueba tu versión concreta de .NET Framework para indicarlo en la línea anterior.

Saludos a todos

0 07
03
2012

Instalador Web: Instalación sin completar

Fecha de publicación: 7 marzo 2012 a las 21:07 por admin

Tenemos el siguiente escenario: Windows 7 + IIS7.

Disponemos a su vez de una solución generada en Visual Studio 2008, con diversos proyectos, entre los que se encuentra un sitio web.

Y nos proponemos ahora, la creación de un proyecto de instalación para la aplicación web.

Hasta aquí sin problemas, hasta que una vez generados los archivos de instalación Setup.exe y WebSetup.msi, recibimos el siguiente mensaje de error al ejecutarlos:

Instalación sin completar

Se interrumpió el instalador antes de poder instalar (NOMBREDELPROYECTO). Debe reiniciar el instalador para intentarlo de nuevo.

Web Setup: Instalación sin completar

Web Setup: Instalación sin completar

Tras buscar por internet posibles soluciones, decidimos activar la compatibilidad de Internet Information Server con IIS6, y probar suerte.

Para ello, accedemos al Panel de Control de Windows 7, y pinchamos en la opción Activar o desactivar las características de Windows.

Panel de Control Windows 7

Panel de Control Windows 7

Buscamos la opción Internet Information Server, y expandimos su rama, hasta encontrar Compatibilidad con la Administración de IIS6.

Una vez ahí, activamos todas las opciones de Compatibilidad con la Administración de IIS6 como muestra la siguiente imagen:

Activar características de Windows - Compatibilidad IIS6

Activar características de Windows - Compatibilidad IIS6

Et voilà! Volvemos a intentar ejecutar los archivos de instalación del proyecto web generados anteriormente y conseguimos continuar la instalación sin los problemas generados con anterioridad.

Web Setup: Asistente de instalación

Web Setup: Asistente de instalación

0 25
01
2012

Configurando Google Apps para tu dominio

Fecha de publicación: 25 enero 2012 a las 12:25 por admin

A estas alturas, hablar de los beneficios de los servicios de Google como Gmail, Calendar o Google Docs, sería un absurdo por nuestra parte.

Así que si tienes un propia empresa o dominio, ¿por qué no aprovechar estos servicios para tu gestión profesional?

Google Apps, según su propia definición:

Google te ofrece soluciones de TI empresariales para innovar constantemente en tu empresa y ahorrar el tiempo, el dinero y las dificultades asociados a su administración.

Medianas y grandes empresas, como muchoviaje.com o bbva ya se han pasado a la nube, y pueden con ello olvidarse (si quieres) de los eternos y cada vez más obsoletos, programas de escritorio como Outlook o MS Office.

Google Apps for Business es un servicio de pago, pero existe una versión gratuita (totalmente gratuita, que no de pruebas) pero con ciertas limitaciones.

Una de ellas, podríamos decir la más importante, es la limitación a un total de 10 usuarios. Puede parecer poco, y de hecho seguramente lo sea, pero si eres una pequeña empresa que está empezando, o simplemente quieres probar el servicio, puede venirte bien.

La creación de una cuenta en Google Apps para tu dominio, es, como nos tienen acostumbrados desde Google, extremadamente sencilla, por lo que simplemente debemos seguir los pasos que nos vaya indicando el asistente de configuración de Google Apps.

Quizás el único paso algo más complejo, sea la configuración del correo electrónico a gmail a través de tu hosting donde alojes el dominio de tu empresa.

Por ello, vamos a reproducir los pasos dados en nuestro caso para activar Google Apps, con el dominio alojado en 1and1.es.

1. En primer lugar, tras haber seleccionado nuestro hosting en la guía de instalación/configuración de google apps, se nos indican los pasos a realizar, tal y como muestra la imagen siguiente:

Configuración GMail Google Apps - 1and1

Configuración GMail Google Apps - 1and1

2. Accedemos a nuestro panel de administración de dominios en 1and1, y tras seleccionar el dominio que usaremos en Google Apps, nos dirigimos a “Modificar la configuración DNS”.

Acceso 1and1 configuración DNS

Acceso 1and1 configuración DNS

3. Por último, simplemente debemos trasladar los valores que Google Apps nos ofreció en el primer paso, a tu configuración dns en 1and1. Todo listo.

Configuración DNS en 1and1 para Google Apps

Configuración DNS en 1and1 para Google Apps

Para terminar, continúa con el asistente de configuración de Google Apps, indicándole que ya has realizados los cambios de DNS en tu hosting.

Una vez realizados estos cambios, se verán reflejados en un plazo máximo de 48 horas, aunque seguramente los tendrás disponibles más pronto que tarde.

0 23
01
2012

Cómo crear un Servicio de Windows

Fecha de publicación: 23 enero 2012 a las 23:22 por admin

Hoy vamos a realizar un pequeño y rápido repaso de cómo crear un Servicio de Windows, en nuestro caso, desde Visual Studio 2008.

Tomaremos como base el siguiente enlace oficial de microsoft: http://msdn.microsoft.com/es-es/library/9k985bc9(v=VS.90).aspx

Creando Windows Service

En primer lugar, seleccionaremos el tipo de plantilla Windows Service o Servicio de Windows para nuestro proyecto.

Plantilla Visual Studio de Windows Service

Plantilla Visual Studio de Windows Service

Una vez generado el proyecto, Visual Studio generará a partir de plantilla los siguientes archivos:

  • Service1.cs (renombrado por manías del guión como Service.cs)
  • Program.cs
Nuevo proyecto de Windows Service

Nuevo proyecto de Windows Service

En la clase Service.cs (recordemos que originalmente se llamaba Service1.cs), creamos los siguientes métodos:

  • onstart
  • onstop
  • oncontinue

#region "Service Methods"
protected override void OnStart(string[] args)
{
Console.WriteLine("Inicio servicio");
}

protected override void OnStop()
{
Console.WriteLine("Fin servicio");
}

protected override void OnContinue()
{
Console.WriteLine("Servicio en ejecución");
}

#endregion "Service Methods"

En el ejemplo simplemente escribimos por consola una traza del método que estamos ejecutando.

Métodos (OnStart, OnStop, OnContinue) Windows Service

Métodos (OnStart, OnStop, OnContinue) Windows Service

Llegados a este punto, el servicio ya podría arrancar, pero dependiendo de la lógica que deba implementar el servicio, tomaremos diferentes formas de mantener vivo el servicio:

- Ejemplo 1: Queremos que nuestro servicio se mantenga a la escucha de recibir mensajes de fuentes externas, el pseudocódigo sería algo así:


while (true) {

listener.receive();

}

- Ejemplo 2: Queremos que nuestro servicio ejecute tareas cada x tiempo, para lo cual necesitaríamos un Timer para gestionar la ejecución temporal de dichas tareas. En futuros posts crearemos un ejemplo de este tipo de servicios de windows con timer.

Instalando Windows Service

Vamos a preparar ahora nuestro servicio de windows para que podamos instalarlo, para ello:

1. Añadimos los servicios de instalación, clickando sobre el botón derecho sobre el diseñador de Service y clickamos en “Add Installer” o “Añadir Instalador“.

Agregar instalador en Windows Service

Agregar instalador en Windows Service

2. El paso anterior nos genera un nuevo archivo ProjectInstaller.cs como el de la imagen siguiente, agregando 2 nuevos componentes.

Instalador Servicio de Windows

Instalador Servicio de Windows

En las propiedades de ambos componentes del servicio podremos editar el nombre del servicio, el tipo de arranque (manual, automático o deshabilitado), la cuenta con la que se ejecutará el servicio, etc.

Propiedades instalador Windows Service

Propiedades instalador Windows Service

Por último, vamos a preparar la Instalación del servicio de Windows

Crearnos 2 archivos .bat uno para instalación y otro desinstalación, que ejecutarán el comando InstallUtil

Por ejemplo para instalar y desinstalar respecticamente

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil “C:\Inetpub\wwwroot\myservice\bin\Release\myservice.exe”pause

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil -u “C:\Inetpub\wwwroot\myservice\bin\Release\myservice.exe”pause

0 20
12
2011

El servicio SQL Server se detiene

Fecha de publicación: 20 diciembre 2011 a las 8:46 por admin
SQL Server 2008 Express R2

SQL Server 2008 Express R2

Recientemente, trabajando con el gestor de base de datos de Microsoft SQL Server 2008 R2 Express, tuvimos problemas con el inicio de su servicio.

El servicio estaba establecido con arranque automático, sin embargo, al iniciar windows el servicio de SQL Server aparecía parado; y a pesar de arrancarlo manualmente, a los pocos segundos se volvía a detener.

La extrañeza llegó a nuestros corazones, ya que en ningún momento se había realizado ningún cambio en la base de datos, ni en el sistema, más allá de las típicas actualizaciones de Windows.

Tras probar en varias ocasiones el arranque manual del servicio (esperando quizás que el duendecillo de turno lo arreglara sin decir nada), finalmente buscamos errores que por suerte se registraron en el visor de sucesos de Windows.

El mensaje concreto que aparecía en el visor de eventos era:

No se pudo realizar la actualización de nivel de script para la base de datos ‘master’ porque el paso de actualización ‘sqlagent100_msdb_upgrade.sql’ detectó el error 574, estado 0, severidad 16. Se trata de una condición de error grave que podría interferir con las operaciones normales y dejar la base de datos sin conexión. Si el error se produjo durante la actualización de la base de datos ‘maestra’, impedirá que se inicie toda la instancia de SQL Server. Examine las entradas anteriores del registro de errores, emprenda las acciones correctivas adecuadas y reinicie la base de datos de forma que se puedan completar los pasos de actualización del script.

Tras un buen rato googleando, confirmamos que el problema se generó tras las actualizaciones de Windows, y encontramos la siguiente solución que exponemos a continuación:

1. Habilitamos el indicador de traza 902, para ello:

  • Abrimos el Administrador de configuración de SQL Server (lo encontrarás bajo Herramientas de configuración)
  • En Servicios de SQL Server, abrimos el diálogo de propiedades del servicio SQL Server (SQLEXPRESS)
  • Accedemos a la ficha de Opciones Avanzadas
  • Buscamos la variable “Parámetros de inicio” e incluimos “;-T902” al final del valor.

2. Iniciamos el servicio de SQL Server (en este punto el servicio ya no se detiene)

3. Nos conectamos a través de Microsoft SQL Server Management Studio al servidor

4. En propiedades del servidor, desmarcamos la opción “Implicit transactions”

Propiedades de conexión - Microsoft SQL Server Management Studio

Propiedades de conexión - Microsoft SQL Server Management Studio

5. Volvemos a detener el servicio, y eliminar el indicador de traza 902 habilitado en el punto 1.

6. Volvemos a iniciar tanto el servicio de SQL Server como del Agente SQL Server

7. Volvemos a conectarnos a través de Microsoft SQL Server Management Studio y bajo la rama Administración del explorador de objetos, botón derecho del ratón en Recopilación de datos, y habilitamos la recopilación de datos si existiera la opción.

0 27
11
2011

No encontrado en Custom Post Type

Fecha de publicación: 27 noviembre 2011 a las 22:40 por admin

Toda una tarde de domingo perdida, creando tipos de post customizados en wordpress, y encontrándome un bonito error 404 no encontrado o not found cada vez que quería acceder a un post determinado, o a la página general de la categoría.

Este es uno de mis custom post types que había generado, y que al intentar acceder a los post generados bajo esta categoría, me encontraba con el mensaje No encontrado.


	register_post_type( 'story',
		array(
			'labels' => array(
				'name' => __( 'Stories' ),
				'singular_name' => __( 'Story' )
			),
                        'public' => true,
                        'publicly_queryable' => true,
                        'show_ui' => true,
                        'query_var' => true,
			'has_archive' => true,
			'rewrite' => array('slug' => 'stories'),
                        'menu_position' => 5,
                        'supports' => array (
                            'title', 'editor', 'thumbnail',
                        ),
                        'capability_type' => 'post',
                        'publicly_queryable' => true,
                        'taxonomies' => array('category', 'post_tag')
		)
	);

Pues bien, después de pensar durante horas que existía algún fallo en el código, después de probar con diferentes plugins de wordpress, me da por buscar el problema Not found utilizando los custom post types, y gracias a que siempre existe alguien capaz de compartir sus experiencias en esto de la programación, encontramos la solución:


flush_rewrite_rules( false );

Añade la opción

'has_archive' => true,

a tu código register_post_type.

0 30
10
2011

Actualizando WordPress: Fatal error: Out of memory

Fecha de publicación: 30 octubre 2011 a las 15:56 por admin
Wordpress logo

Wordpress logo

Mañana de domingo de otoño, carrera de Fórmula 1 y aburrimiento típico de los domingos.
Es un buen momento para hacer una revisión general de nuestros blogs wordpress, que hace meses que no revisamos, y ejecutar las actualizaciones necesarias.

Sin embargo, no resultó tan fácil como darle a un botón, ya que uno de mis blogs wordpress (alojado en 1and1) mostraba el siguiente mensaje de error en el momento de lanzar la actualización:


Actualizar WordPress

Descargando paquete de instalación desde http://es.wordpress.org/wordpress-3.2.1-es_ES.zip…

Fatal error: Out of memory

(allocated 28311552) (tried to allocate 4346065 bytes) in /homepages/28/d322425856/htdocs/…/wp-includes/class-http.php on line 1426

El problema se reduce a que la actualización necesita más memoria de la que por configuración tiene permitida nuestra aplicación php.

A continuación os dejo las diferentes opciones recopiladas que he ido encontrando por la red, hasta dar con la válida que ha funcionado en nuestro caso.

  • wp-settings.php: ampliamos el límite de memoria permitida añadiendo la siguiente línea de código php
define('WP_MEMORY_LIMIT', '128M');
  • .htaccess: ampliando el límite de memoria a través del archivo de configuración de apache .htaccess, añadiendo las siguientes líneas
# PHP 4, Apache 2.

php_value memory_limit 96M

# PHP 5, Apache 1 and 2.

php_value memory_limit 96M
  • php.ini: ampliando el límite de memoria de php a través del archivo de configuración php.ini, que incluiremos en el directorio raíz de nuestro blog y bajo el directorio wp-admin (esta es la opción que nos funcionó en nuestro alojamiento 1and1.es)
memory_limit=64M

Confiamos en que os sea de utilidad.

0 22
10
2011

Habilitar la pluralización de nombres

Fecha de publicación: 22 octubre 2011 a las 23:14 por admin

Recientemente me encontraba realizando un proyecto en el que estaba utilizando linq para trabajar con base de datos.

Para ello, generamos nuestro modelo de datos mapeando la base de datos a través de la funcionalidad que proporciona Visual Studio: LINQ to SQL classes.

A grandes rasgos, lo que consigues mapeando tu base de datos a través de un modelo de datos, en este caso a través de LINQ, es generar clases correspondientes a cada una de las tablas existentes.

En próximos posts nos adentraremos más a fondo en cómo funciona LINQ, porque hoy es únicamente momento de explicar cómo habilitar la pluralización de nombres.

Pues bien, como hemos dicho, por cada tabla, se crea una clase, y ahí está el fin de este artículo. El proyecto del que os hablo, lo estaba realizando en diferentes ordenadores sobre Visual Studio 2008, y daba la casualidad, de que al regenerar el modelo de datos (LINQ to classes), en ocasiones aparecían los nombres de las clases en plural y en otras ocasiones los nombres de las clases en singular.

La primera vez no le di mayor importancia, seguro por desconocimiento, y lo achaqué a algún despiste inicial en la generación del diseño de datos.

Pues bien, nada más lejos de la realidad. Estos nombres de clases en plural o singular en nuestro modelo de datos generado para linq, podemos elegir si los deseamos trabajar en plural o singular.

Para ello, simplemente debemos configurar Visual Studio de la siguiente forma:

Herramientas –> Opciones

Dentro del cuadro de diálogo de Opciones, expandimos la sección de Herramientas para base de datos, para seleccionar a continuación la opción O/R Designer.

Una vez llegados a este punto, simplemente debemos elegir True o False para habilitar o no la pluralización de nombres del diseño de bbdd.

Nombres en plural modelo de datos LINQ

Nombres en plural modelo de datos LINQ

Para más información podéis acceder al siguiente enlace de microsoft: activar y desactivar la pluralización

0 16
09
2011

Solucionando … Error Fetching http headers soap

Fecha de publicación: 16 septiembre 2011 a las 13:31 por admin

Si has llegado hasta aquí, seguramente ya hayas trabajado con Web Services en diferentes lenguajes de programación.
Y si has obtenido la excepcioń “Error Fetching http headers”, estarás trabajando en estos momentos con PHP.

En primer lugar comentarte que este mensaje de error tan descriptivo Error Fetching http headers se habrá producido con gran probabilidad porque ha transcurrido demasiado tiempo ejecutando la llamada al web services, o en otras palabras un poco más técnicas, porque ha expirado el tiempo máximo de espera de ejecución sobre el Web Services.

Lo que en otras plataformas como Java o .NET recibiríamos como una excepción del tipo TimeoutException, aquí lo recibimos como Error Fetching http headers soap.

¿Cómo podemos entonces indicarle a PHP que queremos incrementar el tiempo de espera?

Si tienes acceso a la configuración del servidor, basta con que busques en tu fichero php.ini la variable default_socket_timeout y definas el nuevo tiempo máximo de ejecución (en segundos) que quieras establecer.

default_socket_timeout = 6000

Si por el contrario no tienes acceso al fichero de configuración php.ini, o simplemente prefieres establecer el valor de timeout sobre el web service en tiempo de ejecución, siempre puedes definir este tipo de variables de configuración del sistema a través de la función ini_set(string $varname , string $newvalue).

ini_set('default_socket_timeout', 600);

Espero que la solución te sea de utilidad como me ha sido a mí.