Archive

Posts Tagged ‘Programación’

Error “Cannot send session cache limiter – headers already sent” en PHP

Domingo, 30 enero 2011 Deja un comentario

Hola,

estos días migrando de servidor una web de trabajo nueva me  salía el error “Cannot send session cache limiter – headers already sent” en algunas páginas. Después de una breve busqueda, me encontré que el fallo se produce porqué hay espacios en blanco o caracteres extraños antes o después de las etiquetas delimitadoras del código php

<?

Código PHP

?>

Fue eliminar los espacios en blanco, recargar la web y desaparecer el error de PHP.

 

Categorías:Programación, Software Etiquetas: ,

Problemas al instalar el plugin del SDK de Android para Eclipse en Debian Lenny

Sábado, 5 junio 2010 Deja un comentario

Hola,

estos días estoy probando el SDK de Android en mi Debian Lenny con el IDE Eclipse. Para integrar el SDK de android con Eclipse tenemos que añadir el plugin correspondiente desde la web de Android.

La documentación de Android indica que tenemos que añadir el siguiente repositorio de software a Eclipse

https://dl-ssl.google.com/android/eclipse/

El problema con el que me encontré es que al añadirlo y descargarlo daba errores. Buscando en google encontré a más gente que le pasaba lo mismo y la forma de solucionarlo en muchos casos era probar con la dirección http en vez de https

https://dl-ssl.google.com/android/eclipse/

Añadí el repositorio de esta forma y entonces si conectó correctamente

En este caso la versión de Eclipse que  uso es la última descargada de su web ya que la versión que viene con Debian Lenny es más antigua.

Ahora solo nos quedaría descargar el SDK para cada versión de android y crear las AVD correspondientes.

+ info: http://developer.android.com/sdk/index.html ; http://www.eclipse.org/

Error “Cannot connect to the keyStore” al descargar actualizaciones en Eclipse y Debian Lenny

Sábado, 5 junio 2010 Deja un comentario

Hola,

estos días estoy probando el SDK de Android en mi Debian Lenny con el IDE Eclipse. Al descargar las actualizaciones de Eclipse o los paquetes necesarios para usar el SDK de Android me salía siemrpe el error “Cannot connect to keystore“.

Este error se debe a la máquina virtual de Java que tenemos configurada no es la de Sun (podemos comprobar que máquina virtual tenémos configurada por defecto ejecutando en una consola java -version).  Lo que tenemos que hacer es instalar el JDK de Sun si no lo tenemos y una vez instalado ejecutar en una consola

update-java-alternatives -s java-6-sun

Ahora ya podemos descargar los paquetes encesarios.

Solución al bug de la unidad JclSysInfo.pas de la libreria Jedi en Delphi 7 y micros Pentium IV

Viernes, 13 marzo 2009 Deja un comentario

Hola,

hace poco tuve que hacer unas modificaciones en una aplicación vieja desarrollada en Delphi 7 y que funcionaba perfectamente en los equipos donde se usa (equipos con Pentium III). El problema me lo encontré al probar la aplicación compilada en equipos con procesadores Pentium IV ya que el programa daba error al arrancar.. El problemilla me hizo perder unas cuantas horas hasta que instalé Delphi 7 en un equipo com Pentium IV y depuré la aplicación. El problema es debido a la función GetCPUSpeed de la unidad JclSysInfo.pas de las librerias Jedi que da un error de división por cero en determinados procesadores.

Después de buscar en distintos foros encontré la solución y modifiqué el código fuente de la unidad para solucionar el bug.

Podeis descargar la unidad modificada aquí.

Categorías:Programación, Software Etiquetas: ,

Script para crear un tunel con un servidor SSH remoto

Viernes, 12 diciembre 2008 Deja un comentario

Hola,

desde hace tiempo empleo a diario túneles ssh para conexión a distintos equipos. Normalmente suelo usar el putty para crear los túneles ya que tengo configurada para cada conexión los túneles que puedo usar, pero a veces necesito crear una conexión rapida a un puerto que no tengo configurado en putty. Para ello tengo un pequeño script en bash para crear el túnel pasandole la ip y los puertos remoto y local. Dentro del script tiene como variables el usuario (que lo dejo fijo) y la ip pública o privada (para LAN) del servidor SSH.

Os lo dejo aquí y espero que os sea de utilidad. En mi caso este es el scrip básico que modifico para distintos servidores.

#!/bin/bash
#
# ****************************************************************************************

# tunel_ssh.sh

# Script que nos permite crear un tunel con un servidor SSH remoto.
#
#
# (c) Diciembre 2008 Carlos Fco. Andión López
#
# Nos pedirá la IP de la máquina en la red remota a la que nos queremos coenctar,
# el puerto remoto y el puerto local con el que queremos hacer el tunel.
#
# Se pasa el parámetro -N a la conexión para evitar la ejecución de comandos remotos
#
# Para hacer un mapeado a puertos locales privileguiados (inferiores al 1024) es necesario
# ejecutar el script como root

# tunel_ssh.sh is free software; you can redistribute it and/or modify it under the terms of
# the GNU General Public License as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# tunel_ssh.sh is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
# without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License for more details.
# ****************************************************************************************

#variables de conexión
SERVER="ip_publica_servidor"
USUARIO="mi_usuario"

echo "************************************************************************"
echo "*                                                                      *"
echo "* Creando tunel SSH con $SERVER"
echo "*                                                                      *"
echo "************************************************************************"

# IP de la máquina en la red remota
echo "¿IP en la red remota?"
read IP

# Puerto remoto con el que queremos crear el tunel
echo "¿Puerto remoto?"
read RPORT

# Puerto local al que nos conectaremos
echo "¿Puerto local?"
read LPORT

echo "************************************************************************"
echo ""
echo "Creando el tunel SSH con la IP remota $IP:$RPORT a localhost:$LPORT en $SERVER"
echo ""
echo "************************************************************************"

read -p "Pulse una tecla para iniciar la conexión "

ssh -v -L$LPORT:$IP:$RPORT $USUARIO@$SERVER -N

Categorías:Programación Etiquetas: ,

Funciones geodésicas en VB6

Martes, 14 octubre 2008 2 comentarios

Hola,

os dejo unas funciones en Visual Basic 6 para cálculos geodésicos que espero os sean útiles.

Para las conversiones UTM-Decimal se emplean las ecuaciones de Coticchia-Surace. Teneis más información sobre su implementación en la web de Gabriel Ortiz


Option Explicit

'This software is free software; you can redistribute it and/or modify it under the terms of
'the GNU General Public License as published by the Free Software Foundation; either version 2
'of the License, or (at your option) any later version.
'
'This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
'without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
'See the GNU General Public License for more details.

'Copyright (C) 2006 Carlos Francisco Andión López candion@gmail.com

'**********************************************************************************
' Módulo de diversas funciones geodésicas
'**********************************************************************************

Const pi As Double = 3.14159265358979
Const e As Double = 2.71828182845905

'**********************************************************************************
' Funcion que convierte grados decimales en sexagesimales
'**********************************************************************************
Function DecToSex(ByVal Decimalgrad As Double) As String

    Dim grados As Double
    Dim minutos As Double
    Dim segundos As Double
    Dim tmp As Double

    tmp = Decimalgrad

    If Decimalgrad &lt; 0 Then
        Decimalgrad = -Decimalgrad
    End If

    grados = Int(Decimalgrad)
    minutos = Int((Decimalgrad - grados) * 60)
    segundos = Left(((Decimalgrad - grados) * 60 - minutos) * 60, 10)

      If tmp &lt; 0 Then
        DecToSex = &quot;-&quot; &amp; grados &amp; &quot;º &quot; &amp; minutos &amp; &quot;´&quot; &amp; segundos
            Else
            DecToSex = grados &amp; &quot;º &quot; &amp; minutos &amp; &quot;´&quot; &amp; segundos
    End If

End Function

&#039;**********************************************************************************
&#039; Funcion que convierte grados sexagesimales en decimales
&#039;**********************************************************************************
Function SexToDec(ByVal grados As Integer, ByVal minutos As Double, ByVal segundos As Double) As Double

    SexToDec = grados + minutos / 60 + segundos / 3600

End Function

&#039;**********************************************************************************
&#039; Funcion que convierte coordenadas UTM a Decimal
&#039; Emplea las ecuaciones de Coticchia-Surace empleando el elipsoide de Hayford o internacional 1924
&#039; Devuelve un array con las coordenadas (latitud,longitud)
&#039;**********************************************************************************

Public Function Utm2Dec(ByVal X As Double, ByVal y As Double, ByVal zone As String, ByVal Hemisf As String) As Double()

    Dim SMayor As Double
    Dim SMenor As Double
    Dim Ex As Double
    Dim Ex2 As Double
    Dim Ex2c As Double
    Dim Rc As Double
    Dim Apl As Double
    Dim Lambda As Double
    Dim Phi As Double
    Dim Ny As Double
    Dim A As Double
    Dim A1 As Double
    Dim A2 As Double
    Dim J2 As Double
    Dim J4 As Double
    Dim J6 As Double
    Dim Alfa As Double
    Dim Beta As Double
    Dim Gamma As Double
    Dim b As Double
    Dim bphi As Double
    Dim Sigma As Double
    Dim Xi As Double
    Dim Eta As Double
    Dim Tau As Double
    Dim Sen_h_Xi As Double
    Dim DeltaLambda As Double
    Dim coord() As Double

    ReDim coord(2)

    &#039; Datos elipsoide hayford
    SMayor = 6378388#
    SMenor = 6356911.94613
    Ex = Sqr(SMayor ^ 2 - SMenor ^ 2) / SMayor
    Ex2 = Sqr(SMayor ^ 2 - SMenor ^ 2) / SMenor
    Ex2c = Ex2 ^ 2
    Rc = (SMayor ^ 2) / SMenor
    Apl = (SMayor - SMenor) / SMayor

    Lambda = zone * 6 - 183
    X = X - 500000

    Select Case Hemisf
        Case &quot;N&quot;, &quot;n&quot;
            y = y

        Case &quot;S&quot;, &quot;s&quot;
            y = y - 10000000
    End Select

     &#039; aplico las ecuaciones de Coticchia-Surace
    Phi = y / (6366197.724 * 0.9996)
    Ny = (Rc / (1 + Ex2c * (Cos(Phi)) ^ 2) ^ (1 / 2)) * 0.9996
    A = X / Ny
    A1 = Sin(2 * Phi)
    A2 = A1 * (Cos(Phi)) ^ 2
    J2 = Phi + (A1 / 2)
    J4 = (3 * J2 + A2) / 4
    J6 = (5 * J4 + A2 * (Cos(Phi)) ^ 2) / 3
    Alfa = (3 / 4) * Ex2c
    Beta = (5 / 3) * Alfa ^ 2
    Gamma = (35 / 27) * Alfa ^ 3
    bphi = 0.9996 * Rc * (Phi - Alfa * J2 + Beta * J4 - Gamma * J6)
    b = (y - bphi) / Ny
    Sigma = ((Ex2c * A ^ 2) / 2) * (Cos(Phi)) ^ 2
    Xi = A * (1 - Sigma / 3)
    Eta = b * (1 - Sigma) + Phi
    Sen_h_Xi = ((e ^ Xi) - (e ^ (-Xi))) / 2
    DeltaLambda = ArcTan(Sen_h_Xi / Cos(Eta))
    Tau = ArcTan(Cos(DeltaLambda) * Tan(Eta))

    &#039; calculo la longitud
    coord(1) = (DeltaLambda / pi * 180) + Lambda

    &#039;calculo la latitud
    coord(0) = (Phi + (1 + Ex2c * (Cos(Phi)) ^ 2 - (3 / 2) * Ex2c * Sin(Phi) * Cos(Phi) * (Tau - Phi)) * (Tau - Phi)) / pi * 180

    Utm2Dec = coord

End Function

&#039;**********************************************************************************
&#039; Funcion que convierte coordenadas  Decimales en UTM
&#039; Emplea las ecuaciones de Coticchia-Surace empleando el elipsoide de Hayford o internacional 1924
&#039; Devuelve un array con las coordenadas (latitud,longitud)
&#039;**********************************************************************************

Public Function Dec2Utm(ByVal X As Double, ByVal y As Double, ByVal Hemisf As String) As Double()

    Dim SMayor As Double
    Dim SMenor As Double
    Dim Ex As Double
    Dim Ex2 As Double
    Dim Ex2c As Double
    Dim Rc As Double
    Dim Apl As Double
    Dim Lambda As Double
    Dim Phi As Double
    Dim Ny As Double
    Dim A As Double
    Dim A1 As Double
    Dim A2 As Double
    Dim J2 As Double
    Dim J4 As Double
    Dim J6 As Double
    Dim Alfa As Double
    Dim Beta As Double
    Dim Gamma As Double
    Dim bphi As Double
    Dim Sigma As Double
    Dim Xi As Double
    Dim Eta As Double
    Dim DeltaLambda As Double
    Dim coord() As Double
    Dim huso As Integer

    ReDim coord(2)

    &#039; Datos elipsoide hayford
    SMayor = 6378388#
    SMenor = 6356911.94613
    Ex = Sqr(SMayor ^ 2 - SMenor ^ 2) / SMayor
    Ex2 = Sqr(SMayor ^ 2 - SMenor ^ 2) / SMenor
    Ex2c = Ex2 ^ 2
    Rc = (SMayor ^ 2) / SMenor
    Apl = (SMayor - SMenor) / SMayor

    &#039; calculo el meridiano central del huso y la distancia entre la posicion y el meridiano central
    huso = Int(y / 6 + 31)
    Lambda = huso * 6 - 183

    &#039; paso a radianes las coordenadas
    X = X * pi / 180
    y = y * pi / 180

    DeltaLambda = y - (Lambda * pi / 180)

    &#039; aplico las ecuaciones de Coticchia-Surace
    A = Cos(X) * Sin(DeltaLambda)
    Xi = (1 / 2) * log((1 + A) / (1 - A))
    Eta = ArcTan(Tan(X) / Cos(DeltaLambda)) - X
    Ny = (Rc / (1 + Ex2c * (Cos(X)) ^ 2) ^ (1 / 2)) * 0.9996
    Sigma = (Ex2c / 2) * Xi ^ 2 * Cos(X) ^ 2
    A1 = Sin(2 * X)
    A2 = A1 * Cos(X) ^ 2
    J2 = X + A1 / 2
    J4 = (3 * J2 + A2) / 4
    J6 = (5 * J4 + A2 * Cos(X) ^ 2) / 3
    Alfa = 3 / 4 * Ex2c
    Beta = 5 / 3 * Alfa ^ 2
    Gamma = 35 / 27 * Alfa ^ 3
    bphi = 0.9996 * Rc * (X - Alfa * J2 + Beta * J4 - Gamma * J6)

    &#039; calculo la longitud Y
        Select Case Hemisf
            Case &quot;N&quot;, &quot;n&quot;
                coord(1) = Eta * Ny * (1 + Sigma) + bphi
            Case &quot;S&quot;, &quot;s&quot;
                coord(1) = Eta * Ny * (1 + Sigma) + bphi + 10000000
        End Select

    &#039;calculo la latitud X
    coord(0) = Xi * Ny * (1 + Sigma / 3) + 500000

    Dec2Utm = coord

End Function

&#039;**********************************************************************************
&#039; Calcula la Cotangente inversa
&#039;**********************************************************************************
Public Function ArcTan(ByVal X As Double) As Double
    ArcTan = Atn(X)
End Function

&#039;**********************************************************************************
&#039;Calcula el seno inverso. El angulo debe estar en radianes
&#039;**********************************************************************************
Public Function ArcSin(ByVal Angle As Double) As Double
  If Abs(Angle)  1# Then
    ArcSin = Atn(Angle / Sqr(-Angle * Angle + 1#))
  Else
    ArcSin = IIf(Angle = 1#, Atn(1#) * 2#, Atn(1#) * 6#)
  End If

End Function

'**********************************************************************************
'Calcula el coseno inverso. El angulo debe estar en radianes
'**********************************************************************************
Public Function ArcCos(ByVal Angle As Double) As Double
  If Abs(Angle)  1# Then
      ArcCos = Atn(-Angle / Sqr(-Angle * Angle + 1#)) + 2# * Atn(1#)
   Else
      ArcCos = IIf(Angle = 1#, 0#, Atn(1#) * 4#)
   End If

End Function

Categorías:Programación Etiquetas:

Funciones de utilidad para cadenas en C

Lunes, 25 agosto 2008 Deja un comentario

Hola,

una de las cosas que más echaba de menos al programar en C eran las funciones que se disponían en otros lenguajes para el tratamiento de cadenas (como un Left, Right, …..) así que al final programé mis propias funciones que dejo aquí por si pueden ser de utilidad para alguien.

Categorías:Programación Etiquetas:
A %d blogueros les gusta esto: