Artículos de opinión, videos de humor, música, tecnología, cosas extrañas, críticas, trailers de películas y ocio en general
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
sábado, 22 de diciembre de 2012
Implementación de clase model para acceder a la API de Wikipedia
Ésto es un ejemplo de cómo podemos implementar un modelo PHP para acceder a la API de wikipedia. Los métodos protegidos, son otros ejemplos de parámetros para obtener un resultado diferente. Recomiendo que busquéis la documentación de la API de wikimedia para asegurarse de que los parámetros no han cambiado.
class Model_Encyclopedia
{
const WIKIPEDIA_API_URL = 'http://en.wikipedia.org/w/api.php';
/**
*
* @param type $name
* @param type $language
* @return null
*/
public static function get_page($name, $language = 'en')
{
// here you could call one of the other protected methods, to change behaviour of the response
$parameters = array(
'action' => 'parse',
'prop' => 'text',
'format' => 'json',
'mobileformat' => 'html',
'uselang' => $language,
'page' => $name,
'section' => 2 // depends on the page
);
$query = http_build_query($parameters);
$url = self::WIKIPEDIA_API_URL . '?' . $query;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, \Input::user_agent());
$data = curl_exec($ch);
curl_close($ch);
// if curl fails, it will be a json_decode of false, and will not be an object
$data = json_decode($data);
if (is_object($data) && isset($data->parse))
{
return $data->parse;
}
return null;
}
protected static function _get_action_mobileview_parameters()
{
$parameters = array(
'action' => 'mobileview',
'format' => 'json',
'noheadings' => true,
'prop' => 'text|normalizedtitle',
'sections' => 2
);
return $parameters;
}
protected static function _get_action_query_parameters()
{
$parameters = array(
'action' => 'query',
'format' => 'json',
'rvprop' => 'content',
'titles' => 'medieval age',
'prop' => 'images|info|revisions',
'noheadings' => true,
'rvsection' => 2
);
return $parameters;
}
}
Etiquetas:
código php,
php model implementation,
programación,
wikimedia api,
wikipedia
jueves, 13 de diciembre de 2012
Cómo instalar MariaDB en Ubuntu 12.04
Pequeño resumen de como instalar MariaDB (el fork de MySQL) en nuestro Ubuntu 12.04
$ sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
2. Añadimos a nuestro /etc/apt/sources.list las líneas siguientes
# MariaDB 5.5 repository list - created 2012-12-12 23:29 UTC # http://downloads.mariadb.org/mariadb/repositories/ deb http://ftp.igh.cnrs.fr/pub/mariadb//repo/5.5/ubuntu precise main deb-src http://ftp.igh.cnrs.fr/pub/mariadb//repo/5.5/ubuntu precise main
Nota: Si tienes una distribución diferente, puedes obtener la configuración desde la web oficial, sección distros: https://downloads.mariadb.org/mariadb/repositories/
Etiquetas:
como instalar,
database,
manual,
mariadb,
programación,
ubuntu
domingo, 4 de noviembre de 2012
Funcion javascript para calcular la distancia entre dos puntos
Ésta función espera dos objetos que tengan la propieadd lat y lon como grados.
var distanceBetween = function(lonlatA, lonlatB) {
var lat1 = lonlatA.lat.toRad();
var lat2 = lonlatB.lat.toRad();
var lon1 = lonlatA.lon.toRad();
var lon2 = lonlatB.lon.toRad();
var R = 6371; // earth radius (Km)
return Math.acos(Math.sin(lat1)*Math.sin(lat2) + Math.cos(lat1)*Math.cos(lat2) * Math.cos(lon2-lon1)) * R;
}
La funcion toRad se puede definir para todo número de JS así:
if (typeof Number.prototype.toRad == 'undefined') {
Number.prototype.toRad = function() {
return this * Math.PI / 180;
}
}
La formula utilizada es ésta
http://en.wikipedia.org/wiki/Spherical_law_of_cosines
var distanceBetween = function(lonlatA, lonlatB) {
var lat1 = lonlatA.lat.toRad();
var lat2 = lonlatB.lat.toRad();
var lon1 = lonlatA.lon.toRad();
var lon2 = lonlatB.lon.toRad();
var R = 6371; // earth radius (Km)
return Math.acos(Math.sin(lat1)*Math.sin(lat2) + Math.cos(lat1)*Math.cos(lat2) * Math.cos(lon2-lon1)) * R;
}
La funcion toRad se puede definir para todo número de JS así:
if (typeof Number.prototype.toRad == 'undefined') {
Number.prototype.toRad = function() {
return this * Math.PI / 180;
}
}
La formula utilizada es ésta
http://en.wikipedia.org/wiki/Spherical_law_of_cosines
domingo, 3 de junio de 2012
Probando Google Blockly
El nuevo lenguaje de programación experimental de Google se llama Blockly. Permite desarrollar rutinas utilizando pequeñas piezas de lógica en forma de bloques.
Una idea interesante la cual he probado con la Demo del famoso MAZE :)
La verdad es que promete bastante!
Una idea interesante la cual he probado con la Demo del famoso MAZE :)
La verdad es que promete bastante!
viernes, 18 de febrero de 2011
Discusión sobre InnoDB Flush - MySQL
El parámetro de configuración innodb_flush_method puede tomar los valores O_DSYNC y O_DIRECT.
Es importante tunear la BBDD, y uno de los parámetros clave es innodb_buffer_pool_size, el cual debe rondar entre el 50% y el 80% de la RAM del sistema.
Leí en un post sobre performance de MySQL que explicaba que en algunos casos, era conveniente evitar el doble cacheo (uno por parte de MySQL y otro por parte del S.O).
Para evitar el cacheo del S.O, se puede especificar el método de flush como O_DIRECT, el cual dice al Kernel que haga el DMA directamente evitando overhead de cacheo.
Pero leyendo un artículo del mismísimo Linus Torvalds, no se si es buena idea realizar éste tipo de tuning. Supongo que dependerá de cada caso. Aquí lo dejo.
A thread on the lkml began with a query about using O_DIRECT when opening a file. An early white paper written by Andrea Arcangeli [interview] to describe the O_DIRECT patch before it was merged into the 2.4 kernel explains, "with O_DIRECT the kernel will do DMA directly from/to the physical memory pointed [to] by the userspace buffer passed as [a] parameter to the read/write syscalls. So there will be no CPU and memory bandwidth spent in the copies between userspace memory and kernel cache, and there will be no CPU time spent in kernel in the management of the cache (like cache lookups, per-page locks etc..)." Linux creator Linus Torvalds was quick to reply that despite all the claims there is no good reason for mounting files with O_DIRECT, suggesting that interfaces like madvise() and posix_fadvise() should be used instead, "there really is no valid reason for EVER using O_DIRECT. You need a buffer whatever IO you do, and it might as well be the page cache. There are better ways to control the page cache than play games and think that a page cache isn't necessary."
Linus went on to explain, "the only reason O_DIRECT exists is because database people are too used to it, because other OS's haven't had enough taste to tell them to do it right, so they've historically hacked their OS to get out of the way. As a result, our madvise and/or posix_fadvise interfaces may not be all that strong, because people sadly don't use them that much. It's a sad example of a totally broken interface (O_DIRECT) resulting in better interfaces not getting used, and then not getting as much development effort put into them."
Es importante tunear la BBDD, y uno de los parámetros clave es innodb_buffer_pool_size, el cual debe rondar entre el 50% y el 80% de la RAM del sistema.
Leí en un post sobre performance de MySQL que explicaba que en algunos casos, era conveniente evitar el doble cacheo (uno por parte de MySQL y otro por parte del S.O).
Para evitar el cacheo del S.O, se puede especificar el método de flush como O_DIRECT, el cual dice al Kernel que haga el DMA directamente evitando overhead de cacheo.
Pero leyendo un artículo del mismísimo Linus Torvalds, no se si es buena idea realizar éste tipo de tuning. Supongo que dependerá de cada caso. Aquí lo dejo.
A thread on the lkml began with a query about using O_DIRECT when opening a file. An early white paper written by Andrea Arcangeli [interview] to describe the O_DIRECT patch before it was merged into the 2.4 kernel explains, "with O_DIRECT the kernel will do DMA directly from/to the physical memory pointed [to] by the userspace buffer passed as [a] parameter to the read/write syscalls. So there will be no CPU and memory bandwidth spent in the copies between userspace memory and kernel cache, and there will be no CPU time spent in kernel in the management of the cache (like cache lookups, per-page locks etc..)." Linux creator Linus Torvalds was quick to reply that despite all the claims there is no good reason for mounting files with O_DIRECT, suggesting that interfaces like madvise() and posix_fadvise() should be used instead, "there really is no valid reason for EVER using O_DIRECT. You need a buffer whatever IO you do, and it might as well be the page cache. There are better ways to control the page cache than play games and think that a page cache isn't necessary."
Linus went on to explain, "the only reason O_DIRECT exists is because database people are too used to it, because other OS's haven't had enough taste to tell them to do it right, so they've historically hacked their OS to get out of the way. As a result, our madvise and/or posix_fadvise interfaces may not be all that strong, because people sadly don't use them that much. It's a sad example of a totally broken interface (O_DIRECT) resulting in better interfaces not getting used, and then not getting as much development effort put into them."
Etiquetas:
database,
innodb,
mysql,
o_direct,
programación
viernes, 15 de enero de 2010
El protocolo Bayeux - HTTP Streaming
Bien, vamos un paso más allá de AJAX, y pasamos a COMET o HTTP Streaming.
Estamos acostumbrados a enviar mensajes de cliente hacia servidor. Lo básico es enviar un POST o GET request mediante un click y recargar toda la página, pero con AJAX podemos cargar mensajes e incrustarlos en nuestra página sin recargarla. Ahora bien, si el estado del servidor es muy variable y no queremos esperar a una petición de cliente, ¿que hacemos?
La solución es utilizar una conexion HTTP de larga duración que mande mensajes de vuelta cuando lo necesitemos.
Existe una comunidad que se dedica a promover ésta tecnología (soporte nativo en FLEX) en todos los entornos posibles.
El protocolo Bayeux se puede consultar aquí
La arquitectura Comet aquí
Y aquí podremos ver como va madurando ésta tecnología.
Mi idea es utilizar dicha tecnología en el desarrollo de mi proyecto, y de paso aprender a implementarla en PHP.
Estamos acostumbrados a enviar mensajes de cliente hacia servidor. Lo básico es enviar un POST o GET request mediante un click y recargar toda la página, pero con AJAX podemos cargar mensajes e incrustarlos en nuestra página sin recargarla. Ahora bien, si el estado del servidor es muy variable y no queremos esperar a una petición de cliente, ¿que hacemos?
La solución es utilizar una conexion HTTP de larga duración que mande mensajes de vuelta cuando lo necesitemos.
Existe una comunidad que se dedica a promover ésta tecnología (soporte nativo en FLEX) en todos los entornos posibles.
El protocolo Bayeux se puede consultar aquí
La arquitectura Comet aquí
Y aquí podremos ver como va madurando ésta tecnología.
Mi idea es utilizar dicha tecnología en el desarrollo de mi proyecto, y de paso aprender a implementarla en PHP.
Etiquetas:
ajax,
Bayeux,
comet,
desarrollo web,
php,
programación
domingo, 27 de diciembre de 2009
Pathfinding - IDA*
El algoritmo IDA* (Iterative Deepening A*) intenta encontrar el camino más corto de un punto a otro de manera más eficiente que el A* (al menos en cuanto a uso de memoria).
Aquí un buen manual de iniciación al pathfinding. Ésto a más de uno nos trae recuerdos de las asignaturas de grafos... ¡hay que refrescar esa memoria!
El pseudocódigo de dicho algoritmo es
DF-Aux(Node, Cutoff)
if f(Node) > Cutoff then return f(Node)
if solution(Node) then return Node
Min =
for each Child of Node do
Temp = DF-Aux(Child, Cutoff)
if solution(Temp) then return Temp
if Temp < Min then Min = Temp
return Min
IDA*(Root)
Cutoff = h(Root)
loop
Temp = DF-Aux(Root, Cutoff)
if solution(Temp) then return Temp
if Temp = then return failure
Cutoff = Temp
Todo ésto viene por que tengo que preparar algun tipo de IA para un proyecto en el que estoy trabajando en mis ratos libres (que aburrido parece) :D
Si alguien tiene una implementación en PHP y quiera compartirla que me comente. Probablemente en un futuro haya que preparar algun algoritmo mixto segun la situación.
Aquí un buen manual de iniciación al pathfinding. Ésto a más de uno nos trae recuerdos de las asignaturas de grafos... ¡hay que refrescar esa memoria!
El pseudocódigo de dicho algoritmo es
DF-Aux(Node, Cutoff)
if f(Node) > Cutoff then return f(Node)
if solution(Node) then return Node
Min =
for each Child of Node do
Temp = DF-Aux(Child, Cutoff)
if solution(Temp) then return Temp
if Temp < Min then Min = Temp
return Min
IDA*(Root)
Cutoff = h(Root)
loop
Temp = DF-Aux(Root, Cutoff)
if solution(Temp) then return Temp
if Temp = then return failure
Cutoff = Temp
Todo ésto viene por que tengo que preparar algun tipo de IA para un proyecto en el que estoy trabajando en mis ratos libres (que aburrido parece) :D
Si alguien tiene una implementación en PHP y quiera compartirla que me comente. Probablemente en un futuro haya que preparar algun algoritmo mixto segun la situación.
viernes, 9 de octubre de 2009
Unit testing en PHP - PHPUnit
Para descargar las librerías de PHPUnit ejecutamos en consola:
pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit
Asegurarse de tener PEAR instalado
O actualizardo a la última versión con el comando: pear upgrade pear
Posteriormente, preparamos un test:
require_once 'PHPUnit/Framework/TestCase.php';
class ArrayTest extends PHPUnit_Framework_TestCase {
public function testNewArrayIsEmpty() {
// Create the Array fixture.
$fixture = Array();
// Assert that the size of the Array fixture is 0.
$this->assertEquals(0, sizeof($fixture));
}
public function testArrayContainsAnElement() {
// Create the Array fixture.
$fixture = Array();
// Add an element to the Array fixture.
$fixture[] = 'Element';
// Assert that the size of the Array fixture is 1.
$this->assertEquals(2, sizeof($fixture));
}
}
Y lo ejecutamos:
phpunit --verbose mypath/myscript.php
El resultado de éste test será un error, puesto que creamos un array con un elemento y solicitamos que nos compruebe si dicho array tiene dos elementos.
pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit
Asegurarse de tener PEAR instalado
O actualizardo a la última versión con el comando: pear upgrade pear
Posteriormente, preparamos un test:
require_once 'PHPUnit/Framework/TestCase.php';
class ArrayTest extends PHPUnit_Framework_TestCase {
public function testNewArrayIsEmpty() {
// Create the Array fixture.
$fixture = Array();
// Assert that the size of the Array fixture is 0.
$this->assertEquals(0, sizeof($fixture));
}
public function testArrayContainsAnElement() {
// Create the Array fixture.
$fixture = Array();
// Add an element to the Array fixture.
$fixture[] = 'Element';
// Assert that the size of the Array fixture is 1.
$this->assertEquals(2, sizeof($fixture));
}
}
Y lo ejecutamos:
phpunit --verbose mypath/myscript.php
El resultado de éste test será un error, puesto que creamos un array con un elemento y solicitamos que nos compruebe si dicho array tiene dos elementos.
Etiquetas:
php,
phpunit,
programación,
tutorial,
unit testing
domingo, 13 de septiembre de 2009
Preparando LAMP en Ubuntu
Apache
sudo apt-get install apache2
Configurar: /etc/apache2/
Root: /var/www/
PHP
sudo apt-get install php5 libapache2-mod-php5
sudo /etc/init.d/apache2 restart
MySQL
sudo apt-get install mysql-server
sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
Configurar: /etc/mysql/
Restaurar contraseña de root en MySQL:
sudo /etc/init.d/mysql stop
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
mysql -u root
>SET PASSWORD FOR root@'localhost' = PASSWORD('password');
Y para restaurar un usuario con permisos de conexión remota podemos:
>UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
Y posteriormente aplicar los privilegios y reiniciar MySQL
>FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
sudo apt-get install apache2
Configurar: /etc/apache2/
Root: /var/www/
PHP
sudo apt-get install php5 libapache2-mod-php5
sudo /etc/init.d/apache2 restart
MySQL
sudo apt-get install mysql-server
sudo apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
Configurar: /etc/mysql/
Restaurar contraseña de root en MySQL:
sudo /etc/init.d/mysql stop
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
mysql -u root
>SET PASSWORD FOR root@'localhost' = PASSWORD('password');
Y para restaurar un usuario con permisos de conexión remota podemos:
>UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
Y posteriormente aplicar los privilegios y reiniciar MySQL
>FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
Etiquetas:
apache,
c,
manual,
mysql,
php,
programación,
tecnología
jueves, 14 de mayo de 2009
Principios de programación
Os voy a copiar aquí unos principios básicos que todo programador que se precie debería tener en cuenta. Por desgracia me he encontrado trabajando sobre sistemas que se saltan todos y cada uno de éstos principios :)
RTFM (Read The Fucking Manual)
DRY (Don't Repeat Yourself)
KISS (Keep It Simple Stupid)
RTFM (Read The Fucking Manual)
DRY (Don't Repeat Yourself)
KISS (Keep It Simple Stupid)
miércoles, 13 de mayo de 2009
AJAX con Prototype y PHP
Hoy he estado programando en el curro una "view" que mostrara un formulario con datos dinámicos al hacer click sobre un texto. Se me ha ocurrido cargarlo "on request" con AJAX y bueno... quería utilizar jQuery pero la aplicación ya estaba utilizando Prototype así que lo he implementado con él.
Es igual de sencillo con una librería u otra... aquí os dejo un ejemplo similar de como cargar contenido AJAX en nuestro HTML.
Primero creamos nuestro script en el servidor. Por ejemplo "TheServerFile.php" con un simple echo "hello world" :)
Y luego creamos nuestro fichero HTML sin olvidarnos de la sintaxis

Y posteriormente en el body HTML

Y listo! Easy and Fast
Es igual de sencillo con una librería u otra... aquí os dejo un ejemplo similar de como cargar contenido AJAX en nuestro HTML.
Primero creamos nuestro script en el servidor. Por ejemplo "TheServerFile.php" con un simple echo "hello world" :)
Y luego creamos nuestro fichero HTML sin olvidarnos de la sintaxis

Y posteriormente en el body HTML

Y listo! Easy and Fast
Etiquetas:
ajax,
javascript,
php,
programación,
prototype
sábado, 28 de febrero de 2009
Trabajando con ficheros CSV y PHP
A menudo necesitamos importar datos CSV en PHP. Para ello tenemos varias alternativas. La de más bajo nivel es usar fgetcsv()
Otra alternativa es utilizar una libreria como Parse CSV.
Saludos.
$row = 1;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "
$num fields in line $row:
\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "
\n";
}
}
fclose($handle);
?> Otra alternativa es utilizar una libreria como Parse CSV.
Saludos.
domingo, 28 de septiembre de 2008
Comenzando con Zend Framework
En este pequeño manual explicaré paso a paso como preparar nuestro entorno de trabajo con Zend Framework sobre Windows (concretamente XP)
PASO 1
Es importante que tengáis instalado PHP 5.2 y Apache 2.2 o superiores
PASO 2
Descargaremos Zend Framework
PASO 3
Aconsejo que preparemos un VirtualHost para facilitar el trabajo, en mi caso he creado dentro del directorio www mi directorio de proyecto, www/QuickStart y creare los directorios básicos de la aplicación quedando como en la imagen que sigue

Es importante asignar el DocumentRoot del Host Virtual a la carpeta public
PASO 4
Copiaremos el contenido de la carpeta library del Zend Framework a nuestro directorio QuickStart/library del proyecto (por lo que dentro de nuestro library veremos el directorio Zend con todas las librarias del framework)
PASO 5
Configuraremos nuestro php.ini, concretamente el include_path añadiendo el directorio library como muestra la siguiente linea de ejemplo
include_path = ".;c:\php\includes;c:\AppServ\www\QuickStart\library"
PASO 6
Dentro de nuestra aplicación, en la carpeta public crearemos un fichero .htaccess con el siguiente contenido
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
de ésta manera nos aseguramos que index.php sea el punto de entrada a la aplicación
PASO 7
Probamos que funciona correctamente creando un fichero index.php en el directorio public
Accedemos desde nuestro navegador con el nombre de dominio asignado a la aplicación desde el fichero de configuración de virtual hosts, en mi caso http://quickstart
Y si veis el texto ya está configurado!
PASO 1
Es importante que tengáis instalado PHP 5.2 y Apache 2.2 o superiores
PASO 2
Descargaremos Zend Framework
PASO 3
Aconsejo que preparemos un VirtualHost para facilitar el trabajo, en mi caso he creado dentro del directorio www mi directorio de proyecto, www/QuickStart y creare los directorios básicos de la aplicación quedando como en la imagen que sigue
Es importante asignar el DocumentRoot del Host Virtual a la carpeta public
PASO 4
Copiaremos el contenido de la carpeta library del Zend Framework a nuestro directorio QuickStart/library del proyecto (por lo que dentro de nuestro library veremos el directorio Zend con todas las librarias del framework)
PASO 5
Configuraremos nuestro php.ini, concretamente el include_path añadiendo el directorio library como muestra la siguiente linea de ejemplo
include_path = ".;c:\php\includes;c:\AppServ\www\QuickStart\library"
PASO 6
Dentro de nuestra aplicación, en la carpeta public crearemos un fichero .htaccess con el siguiente contenido
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /index.php [NC,L]
de ésta manera nos aseguramos que index.php sea el punto de entrada a la aplicación
PASO 7
Probamos que funciona correctamente creando un fichero index.php en el directorio public
Accedemos desde nuestro navegador con el nombre de dominio asignado a la aplicación desde el fichero de configuración de virtual hosts, en mi caso http://quickstart
Y si veis el texto ya está configurado!
Etiquetas:
framework,
guía,
manual,
php,
programación,
quickstart,
zend
viernes, 19 de septiembre de 2008
GoogleDrive - Conducir en google maps
Navegando he encontrado ésta aplicación tan curiosa, la verdad, genial ;)
Mezclas Google Maps y un vehículo y venga, ¡a conducir!
http://www.phatfusion.net/googledrive/
Mezclas Google Maps y un vehículo y venga, ¡a conducir!
http://www.phatfusion.net/googledrive/
domingo, 13 de abril de 2008
PHP BUG: MySQL Query case sensitive?
Programando un portal web me he encontrado con un problema que me ha dado bastantes dolores de cabeza, ahora ya está solucionado pero no acabo de darle una explicación lógica... también es cierto que no he recopilado información suficiente ni me he dedicado muchas horas a investigar la razón...
La cosa es que en local con php5, mysql5 y apache 2.2 sobre windows xp un listado de registros de la BBDD cuya MySQL Query era algo así ("SELECT `campo` from TABLA WHERE...) me funcionaba perfectamente.
El bug ocurría al subir la web al servidor contratado que corre sobre Linux (podría ser el motivo pero ya vereis por que no acabo de tenerlo claro...) y php5 y mysql5 también. Dicha query no retornaba resultados para una tabla X, pero sin embargo si los retornaba bien con exáctamente la misma consulta pero cambiando la tabla por Y en otro script...
Es decir, que una cosa exacta funcionaba en local, y en remoto menos en un script que tenia unos 30 registros a mostrar.
Como se ha solucionado? He cambiado a minúsculas la Query.. "select `campo` from..."
Cual es la gracia? Pues que en los demás Script sigue estando en mayúsculas y funciona bien!!?!?!... No se, dolores de cabeza raros y sin sentido.
Si alguien sabe exactamente el motivo de ésto (sin especular, explicación comprobada y clara con documentación que lo avale) que me eche un cable..
Salu2
La cosa es que en local con php5, mysql5 y apache 2.2 sobre windows xp un listado de registros de la BBDD cuya MySQL Query era algo así ("SELECT `campo` from TABLA WHERE...) me funcionaba perfectamente.
El bug ocurría al subir la web al servidor contratado que corre sobre Linux (podría ser el motivo pero ya vereis por que no acabo de tenerlo claro...) y php5 y mysql5 también. Dicha query no retornaba resultados para una tabla X, pero sin embargo si los retornaba bien con exáctamente la misma consulta pero cambiando la tabla por Y en otro script...
Es decir, que una cosa exacta funcionaba en local, y en remoto menos en un script que tenia unos 30 registros a mostrar.
Como se ha solucionado? He cambiado a minúsculas la Query.. "select `campo` from..."
Cual es la gracia? Pues que en los demás Script sigue estando en mayúsculas y funciona bien!!?!?!... No se, dolores de cabeza raros y sin sentido.
Si alguien sabe exactamente el motivo de ésto (sin especular, explicación comprobada y clara con documentación que lo avale) que me eche un cable..
Salu2
Suscribirse a:
Entradas (Atom)

