Páginas

martes, 11 de diciembre de 2012

Actualizar Esquemas de PostgreSQL

Te puede pasar de muchas formas, puntualmente me ocurrió luego de subir un backup solamente de las tablas. En el sitio empezaron a aparecer errores del tipo:


duplicate key violates unique constraint


Buscando y buscando hay varios scripts dando vueltas. Utilizo PSQL 8.4.
El que me funcionó fue el siguiente:

Para ver las secuencias desactualizadas guardá este código en un archivo:

SELECT
  'SELECT ' ||quote_literal(S.relname)|| ' as seq_name' ||
  ', (select last_value from ' ||S.relname|| ') as seq_val' ||
  ', (select MAX('||quote_ident(C.attname)|| ') FROM ' ||T.relname|| ') as max_id;'

FROM
  pg_class AS S
  ,pg_depend AS D
  ,pg_class AS T
  ,pg_attribute AS C
WHERE
  S.relkind = 'S'
  AND S.oid = D.objid
  AND D.refobjid = T.oid
  AND D.refobjid = C.attrelid
  AND D.refobjsubid = C.attnum
ORDER BY S.relname;

Y ejecutá:

psql -Atq -f mostrar_secuencias.sql -o tmp.sql && psql -Atq -f tmp.sql

teniendo en cuenta de ejecutarlo con el usuario dueño de la base de datos que querés modificar con -U y si ese usuario es dueño de varias bases -d

Te va a aparecer una lista como por ejemplo:
users_user_id_seq|3|5

Para corregir todas las secuencias guardá el siguiente código en algún archivo:

SELECT
  'SELECT SETVAL(' ||quote_literal(S.relname)||
  ', MAX(' ||quote_ident(C.attname)||
  ') ) FROM ' ||quote_ident(T.relname)|| ';'
FROM
  pg_class AS S
  ,pg_depend AS D
  ,pg_class AS T
  ,pg_attribute AS C
WHERE
  S.relkind = 'S'
  AND S.oid = D.objid
  AND D.refobjid = T.oid
  AND D.refobjid = C.attrelid
  AND D.refobjsubid = C.attnum
ORDER BY S.relname;

y ejecutá:

psql -Atq -f arreglar_secuencias.sql -o tmp.sql && psql -Atq -f tmp.sql
Muchas gracias a: http://asynk.ch/blog/

jueves, 18 de octubre de 2012

Empezando con Sass - Responsive Design

Luego de leer varias comparaciones entre distintos pre procesadores de CSS, frameworks, pros, contras y muchos comentarios me decido por Sass para encarar el Responsive Design de un sitio que luego conocerán (bah algunos se lo deben imaginar jaja).

Para instalar Sass en Windows primero nos tenemos que descargar Ruby.
Durante la instalación nos conviene seleccionar la opción de agregar al PATH de Windows el directorio de ejecutables del Ruby.

Abris "Start Command Prompt With Ruby" y escribís:

gem install compass


Nada más!! no lo puedo creer, así de fácil arrancamos con Sass.


viernes, 18 de febrero de 2011

Drupal y la memoria del hosting

  • En caso de que tengan problemas con la memoria en su instalación de Drupal, en la página de Drupal escriben 4 consideraciones a tener en cuenta para agrandar la memoria del PHP (siempre y cuando te dejen).


  1. memory_limit = 128M
  2.  en tu php.ini (recomendado si tenés acceso)
    With root access, you can use the sed util in Linux/Unix based systems, in order to increase the memory for 64M. Don't forget to properly locate your php.ini file!
    sed -i 's/memory_limit = .*/memory_limit = 64M/' /etc/php5/apache2/php.ini
  3. ini_set('memory_limit', '128M'); en tu archivo sites/default/settings.php.
  4. php_value memory_limit 16M en tu archivo .htaccess en la carpeta raiz del drupal, dentro de los condicionales dependiendo del módulo disponible.
  5. O instalar: http://drupal.org/project/drupal_tweaks e incrementar la memoria PHP. Este módulo al momento de escribir esto estaba como no recomendado.


  • En caso de que el limite esté impuesto en el Apache, por más memoria que pongan utilizado los anteriores métodos les va a seguir saliendo el error. En drupal.org también se puede encontrar de una manera un poquito más dificil...

Agregar al principio del .htaccess:
RLimitMem 128000000


MemTest.php
ini_set('display_errors', 'On');$new_mem_limit = '128M';$old_mem_limit = ini_set('memory_limit', $new_mem_limit);
print
'Memory limit changed from '. $old_mem_limit .' to '. $new_mem_limit .'
'
;
$step = 1;
while(
TRUE) {
 
$chunk = str_repeat('0123456789', 1024*1024*$step++);
  print
'Memory usage: '. round(memory_get_usage()/(1024*1024)) . 'M
'
;
  unset(
$chunk);
}

sábado, 8 de noviembre de 2008

Earthworm Jim fue lo primero que se me vino a la mente cuando Diego me pone esta URL en mi msn esta tarde: http://www.bio-bak.nl/

Realmente impresionante lo que este flaco logró con su sitio, una de las cosas que más me llamaron la atención fue la forma de cargar la página a medida que "navegas" por el extraño mapa que se muestra en el sitio, donde aparecen cuadrados como de baja resolución, y luego se carga la verdadera imagen.


jueves, 6 de noviembre de 2008

El domingo paseando por la feria de artesanías de Plaza Italia le decía a mi hermano: "Che Achi, debería alguna forma mas facil de saber que es lo que venden acá", bueno, alguien ya me ganó de mano con la idea jeje

Paseo de Artesanos es el sitio que un amigo lleva adelante publicando albumes de fotos por cada puesto que encuentra interesante, y eso es realmente lo que logró con el sitio, ser interesante, especialmente para la gente que gusta de las artesanías y para los mismos artesanos.

Entrando al sitio podemos ver un carusel de imagenes hecho con flash, que carga de un XML una lista de fotos. Dentro de los paseos, un carusel con JavaScript, que para mi gusto es mucho mas lindo :D especialmente porque las imagenes se ven grandes y nítidas.

http://www.paseodeartesanos.com.ar/

viernes, 31 de octubre de 2008

CMSs - SilverStripe

Encabezando Drupal, la competencia de mejores CMSs tiene sus ganadores. Hay qeu destacar el premio "El CMS mas prometedor" :F es para SilverStripe. En estos días me lo voy a instalar para probarlo, pero por lo poco que pude ver realmente se ve muy prometedor. Algunas de las características que mas me llamaron la atención es una parte de administración realmente cómoda, la posibilidad de versiones y de borradores de páginas, por defecto viene con el TinyMCE, posibilidad de subir, EDITAR, y eliminar fotos (esto está fabuloso!), integracion con mpas de google, Flickr, facilidad para trabajar con el árbol del sitio y algunas cosas mas que valen la pena probar. Cosas negativas: es bastante nuevo, pocos módulos para descargar y comunidad relatívamente nueva, por otro lado... lindo templates (que ganas de ser bueno con el diseño gráfico jeje).

Acá podemos ver un video demostración del SilverStripe: http://www.silverstripe.com/assets/video/cms.html

jueves, 30 de octubre de 2008

@FLEX


@Flex + Flash + WS.- Título de la charla que dimos hoy con Martin, este tipo es un groso que la tiene bastante clara con las presentaciones, a mi me cuesta un poquito todavía, pero con práctica y confianza mejoraré :D

Algunas cosas que fuimos mostrando fueron generalidades sobre FLEX, AS3 y MXML, pasaje de parametros entre SWF cargados con el componente SWFLoader y los WS consumidos y charting .


Es verdad, la experiencia del proyecto www.haycodigos.com.ar estuvo genial, especialmente por el grado de interacción con diferentes actores: diseñadores externos, los chicos de Capital, testers, y nosotros. Tal grado de interacción, sumado a los tiempos que manejabamos, posiblemente fueron los causantes de que no se use toda la potencia que nos brinda FLEX, sino que haciamos de puente entre las cosas que nos daban, esto nos queda pendiente y la motivación de seguir estudiando es cada vez mayor ahora que sabemos que se viene Flex 4 (Gumbo) y que trae como características extensiones en la definición MXML, algunos componentes más (el data grid parece que no viene en las primeras versiones), y la posibilidad de trabajar con 3D mas de cerca (hasta ahora se puede pero con PV3D por ejemplo), y un nuevo formato: FXG (SVG??)

Relevant features:

  • FXG
  • Runtime graphics classes to represent low-level shapes and containment
  • MXML language changes to better support toolability
  • New states syntax
  • New components that fit the architectural model for easy skinning
  • New effects and transitions
  • New layout models including assignable layout and virtualized layout support
Una crítica que es imposible de evitar es que todavía seguimos en versión alpha en la versión para Linux, y que no tenemos la vista design, cosa que aunque algunos me digan lo contrario, es definitivamente un ahorro de tiempo.