Al actualizar de Windows 8 a Windows 8.1 error por permisos de administrador

Al actualizar desde la store de microsoft para windows 8 a la nueva versión 8.1, marca error de que se necesita un usuario de tipo administrador para continuar con la instalación, lo curioso es que solamente se cuenta con 1 usuario y es tipo administrador.

Entonces el truco consiste en eliminar la actualización KB2871389 reiniciar el equipo y después intentar.
Si por algo sigue sin funcionar despues de eliminar, tenemos que borrar la cache de la store de microsoft con el siguiente comando: wsreset.exe
Se encuentra en c:/windows/system32/ por si no funciona desde ejecutar, y listo, volver a intentar.

POSTFIX: Problema con private/policy

Viendo el log del servidor de correos postfix me aparecen algunas lineas con los siguiente warning:

warning: problem talking to server private/policy: Connection timed out
warning: problem talking to server private/policy: Connection refused
NOQUEUE: reject: RCPT from smtp1.dominio.com[10.10.10.10]: 451 4.3.5 Server configuration problem; from= to= proto=ESMTP helo=

Y pues el problema radica en algo referente al private/policy, lo extraño es que no se habia tocado nada en meses y de repente aparecieron estos mensajes, entonces investigando más al respecto el problema esta en que se pierde la conexión, se rechaza y la solución es aumentar más tiempo a las conexiones y que no suceda lo anterior,

Gracias a este post: http://www.engardelinux.org/modules/index/list_archives.cgi?list=postfix-users&page=0730.html&month=2011-01 me ayudo a darme idea de por donde encontrar la solución, y pues les comparto la modificación (tomado de http://www.postfix.org/SMTPD_POLICY_README.html):

/etc/postfix/master.cf:
policy unix – n n – 0 spawn
       user=nobody argv=/some/where/policy-server

/etc/postfix/main.cf:
smtpd_recipient_restrictions =
       …
       reject_unauth_destination
       check_policy_service unix:private/policy
       …
policy_time_limit = 3600

Ahora, puntos a considerar, en la parte del archivo master.cf se especifica como parametro el número “0″ originalmente en casi todos los manuales encontraremos el valor por default “-”, con el cero solucionamos el problema del limite de conexiones en los procesos smtpd.

Y también se agrego en el main.cf la parte de time_limit y siempre recordar que reject_unauth_destination va antes de check_policy_service, sino seremos openrelay.

Saludos.

Mostrar el contenido de un archivo gzip o zip sin descomprimirlo previamente

Si desean ver el contenido de un archivo comprimido con gzip o zip sin necesidad de descomprimirlo primero y despues aplicar un cat, entonces podemos utilizar estos comandos:

Para hacer un cat

zcat archivo.log.gz

Y para un more

zmore archivo.log.gz

Y listo.., ya podemos luego implementar algun grep para buscar algun patrón.

zcat archivo.log.gz | grep “buscar”

PHPExcel: Error al abrir un archivo creado con la función php://output

Estoy utilizando la libreria PHPExcel para crear archivos Excel 2007 desde PHP al vuelo., pero al momento de descargar el archivo utilizando algo como lo siguiente:

header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet’);
header(‘Content-Disposition: attachment;filename=”pruebas.xlsx”‘);
header(‘Cache-Control: max-age=0′);

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007′);
$objWriter->save(‘php://output’);

Y al abrir el excel me aparece un error como el siguiente:

Excel no puede abrir el archivo ‘pruebas.xlsx’ porque el formato o la extensión de éste no son válidos. Compruebe que el archivo no se ha dañado y que la extensión del mismo coincide con el formato del archivo.

Pero el detalle esta en que si se genera para guardar el excel en disco duro, si se abre correctamente, entonceees!., el problema esta en la generación al vuelo que este enviando algo extraño.

La solución esta en el encoding de los archivos PHP, estos deben de estar en modo UTF-8 sin BOM (ANSI as UTF-8), para ver que tipo de codificación tenemos, instalamos el notepad++, despues en la parte inferior derecha aparecerá el encoding y pues verificar que diga ANSI as UTF-8, para convertir solo ingresar al menú Codificación.

Y listo!.., ya podemos crear nuestro archivo Excel., también no olviden verificar que no se mande nada de nada de texto (ni un espacio en blanco., nadaaa!)

MySQL: Como sumar un campo tipo Time

Si tienen un campo tipo Time (formato: 00:00:00) en su base de datos MySQL, y quieren hacer una suma con la tipica consulta:

SELECT SUM(campo_hora) FROM tabla

Verán que no regresa el resultado deseado…, eso es por el tipo de dato, entonces lo que se tiene que hacer es convertir a tipo numérico (segundos), sumar y después volver a convertir a tipo time., todo tan simple como usar una instrucción como sigue:

SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( campo_hora ) ) ) FROM tabla

Y listo!!.., asunto arreglado.

SQL Server: No regresa el texto completo en las celdas con valores tipo texto, modificar php.ini

Siguiendo con el tema del truncado de caracteres en SQL desde nuestra aplicación de PHP del post anterior, resulta que la solución también se puede hacer con el comando SQL.

SET TEXTSIZE NUMERO_CARACTERES_A_OBTENER

Pero igual si queremos algo más permanente, solo es cosa de modificar nuestro archivo PHP.ini, las lineas donde tengamos:

; Valid range 0 – 2147483647. Default = 4096.
;mssql.textlimit = 4096

; Valid range 0 – 2147483647. Default = 4096.
;mssql.textsize = 4096

Por lo general están comentadas estas lineas, solo es cosa de descomentarlas y poner el valor que deseemos, reiniciamos apache y listo :)

SQL Server: No regresa el texto completo en las celdas con valores tipo texto

Si tienes un campo de tipo texto, ya sea cualquiera de los siguientes tipos de datos:

  • varchar(max)
  • nvarchar(max)
  • varbinary(max)
  • text
  • ntext
  • image

Y cuando realizas tu select, no te regresa la información completa, entonces lo que debes de hacer es incrementar el limite de la variable textsize.

Para saber cual es el límite actual solo ejecuta el siguiente comando:

SELECT @@TEXTSIZE

Casi por default te dará un valor de 2147483647 (caracteres)

Y entonces la solución antes de ejecutar tu consulta SELECT, debes de iniciar con la siguiente consulta SQL.

SET TEXTSIZE NUMERO_CARACTERES_A_OBTENER

Digamos que deseas obtener unos 200 caracteres, entonces ejecutas SET TEXTSIZE 200 ,seguido de tu sentencia SQL del SELECT.

Linux: Ver que proceso esta bloqueando algún archivo

Estos comandos nos puede ayudar para conocer cual proceso esta bloqueando nuestro archivo, para posteriormente matarlo con un kill -9 PROCESO

el primero es fuser -v ARCHIVO, un ejemplo tipico de bloqueo es cuando tenemos el error

debconf: DbDriver “config”: /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable

#fuser -v /var/cache/debconf/config.dat

USER PID ACCESS COMMAND /var/cache/debconf/config.dat:
root 1846 F…. frontend

Lo que nos interesa es la parte del PID, o tambien tenemos este otro comando lsof ARCHIVO

#lsof /var/cache/debconf/config.dat

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
frontend 1846 root 4uW REG 8,3 48329 24036395 /var/cache/debconf/config.dat

De igual manera nos interesa el PID, en este caso 1846, y ahora si.., a eliminar el proceso latoso: kill -9 1846

Apt: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. Current value: 25165824. (man 5 apt.conf)

Después de ejecutar un apt-get update, al procesar las listas de cambios y realizar la unión de todos los archivos, me aparece el siguiente error.

Reading package lists… Error!
E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. Current value: 25165824. (man 5 apt.conf)
E: Error occurred while processing postgresql-pltcl-8.4 (NewPackage)
E: Problem with MergeList /var/lib/apt/lists/s2plmirror01.prod.sdl2.secureserver.net_ubuntu_dists_lucid_universe_binary-i386_Packages
W: Unable to munmap
E: The package lists or status file could not be parsed or opened.

Al parecer tiene una limitante la cache de APT a 25165824, la solución obvia es aumentar ese tamaño.., pero la pregunta del millón!! en donde???…, pues solo tenemos que editar el archivo: /etc/apt/apt.conf.d/70debconf y agregar la siguiente linea:

APT::Cache-Limit “100000000″;

Y listo!!…, el valor pues puede ser cualquiera mas alto a el del error, pero con ese número se soluciona :)

Ahora si.. ,procedemos a limpiar la cache y recargar la lista: apt-get clean && apt-get update –fix-missing

Postfix: temporary failure. Command output: /usr/bin/maildrop: Unable to create a dot-lock

De repente el servidor de correos que se configuro con ISPConfig 3, no enviaba correos cuando se trata de mails configurados con “reenvío de correo.” (Email forward)

Me daba el siguiente error en /var/log/mail.log

Feb 12 15:25:17 oviedo.mx postfix/pipe[30549]: DDE86158187: to=, relay=maildrop, delay=4356, delays=4356/0.05/0/0.1, dsn=4.3.0, status=deferred (temporary failure. Command output: /usr/bin/maildrop: Unable to create a dot-lock at /var/vmail/oviedo.mx/usuario/3055320.0.oviedo.mx. )

Ademas anteriormente me daba problemas con el puerto 10024, me decia que conexion rechazada:

Feb 10 16:13:28 oviedo.mx postfix/smtp[14558]: connect to 127.0.0.1[127.0.0.1]:10024: Connection refused

Entonces para solucionar el problema del puerto 10024, era desactivar el antivirus amavis, entonces en el archivo de configuración de postfix main.cf /etc/postfix/main.cf procedemos a comentar la línea donde aparezca algo así:

#content_filter = amavis:[127.0.0.1]:10024

Reiniciamos postfix /etc/init.d/postfix restart y tratamos de enviar un email de los configurados para forward y pues me sigue dando el error inicial del maildrop.

Investigando un poco me doy cuenta que al comentar la línea de content_filter del anti-virus amavis, tambien se debe de comentar la línea donde dice: receive_override_options entonces el archivo main.cf nos quedará de la siguiente manera:

#content_filter = amavis:[127.0.0.1]:10024
#receive_override_options = no_address_mappings

Y listo!, reiniciamos otra vez postfix y a probar. Por lo menos a mi me funciono así como les he dicho.