<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-857190874626542521</atom:id><lastBuildDate>Fri, 18 Sep 2009 04:57:07 +0000</lastBuildDate><title>amantecayotl y otras ciencias</title><description>amantecayolt, se traduce del nahuatl como ciencias de la tecnología ó tecnología
http://www.espanolsinfronteras.com/Diccionarios/EspdeMx-DiccEspanolNahuatl-T.htm</description><link>http://amantecayotl.blogspot.com/</link><managingEditor>yourpadre@gmail.com (YourPadre)</managingEditor><generator>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-2902734657665919241</guid><pubDate>Fri, 18 Sep 2009 03:29:00 +0000</pubDate><atom:updated>2009-09-17T23:57:07.365-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>windows live</category><category domain='http://www.blogger.com/atom/ns#'>windows 2003</category><category domain='http://www.blogger.com/atom/ns#'>archivo msi</category><category domain='http://www.blogger.com/atom/ns#'>gpo</category><title>Instalar Messenger Live 2009 (14) msi con una gpo</title><description>---tomado de http://www.tech-archive.net/Archive/Windows/microsoft.public.windows.group_policy/2007-09/msg00366.html&lt;br /&gt;&lt;br /&gt;La opcion de instalar Windows Messenger Live (hasta la version publica al dia 2009-09-15) esta desabilitada al parecer por microsoft, por lo que es necesario editar el archivo messenger.msi para activar la opcion.&lt;br /&gt;&lt;br /&gt;Para hacer esto &lt;br /&gt;*se instala windows installer SDK.&lt;br /&gt;*en la carpeta tools de donde se instalo el SDK esta un archivo orca.msi, lo instalamos.&lt;br /&gt;*se creara un acceso directo en el menu de programas, abrimos el programa&lt;br /&gt;*en Orca abrimos el messenger.msi, del lado izquierdo damos con el boton derecho y creamos la tabla AdvtExecuteSequence&lt;br /&gt;*en esa tabla agregamos las siguientes opciones&lt;br /&gt;&lt;br /&gt;CostInitialize     800&lt;br /&gt;CostFinalize     1000&lt;br /&gt;InstallValidate     1400&lt;br /&gt;InstallInitialize     1500&lt;br /&gt;CreateShortcuts     4500&lt;br /&gt;RegisterClassInfo     4600&lt;br /&gt;RegisterExtensionInfo     4700&lt;br /&gt;RegisterProgIdInfo     4800&lt;br /&gt;RegisterMIMEInfo     4900&lt;br /&gt;PublishComponents     6200&lt;br /&gt;MsiPublishAssemblies     6250&lt;br /&gt;PublishFeatures     6300&lt;br /&gt;PublishProduct     6400&lt;br /&gt;InstallFinalize     6600 &lt;br /&gt;"ProgramMenuFolder.ADEB440D_7847_4F65_80BD_899870ED 2EC9"     1&lt;br /&gt;&lt;br /&gt;todas con condition en blanco&lt;br /&gt;&lt;br /&gt;grabamos y listo. ya podemos hacer una gpo para instalarlo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-2902734657665919241?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2009/09/instalar-messenger-live-2009-14-msi-con.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-1428595252068862645</guid><pubDate>Fri, 18 Sep 2009 03:24:00 +0000</pubDate><atom:updated>2009-09-17T22:29:45.627-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>windows live</category><category domain='http://www.blogger.com/atom/ns#'>archivo msi</category><title>Instalar Messenger Live 2009 (14) msi</title><description>---Tomado de http://www.webtlk.com/2008/11/17/download-windows-live-messenger-2009-as-standalone-msi/&lt;br /&gt;&lt;br /&gt;Las ultimas versiones (al 2009-09-15) de Windows Messenger Live se instalan con un archivo .exe que descarga todas las herramientas de Windows Live (incluido messenger) y para administradores de sistemas (sysadmin) es mas complicado de esta forma. &lt;br /&gt;&lt;br /&gt;Pero podemos obtener los archivos .msi de la carpera c:\archivos de programa\archivos comunes\Windows Live\.cache\ donde se encuentran varias carpetas de nombre aleatorios. &lt;br /&gt;&lt;br /&gt;Para poder instalar el messenger se necesita instalar Contacts.msi, dw20shared.msi, crt.msi, Messenger.msi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-1428595252068862645?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2009/09/instalar-messenger-live-2009-14-msi.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-7041452557562517229</guid><pubDate>Wed, 22 Jul 2009 22:58:00 +0000</pubDate><atom:updated>2009-07-22T18:14:38.940-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>escritorio remoto</category><category domain='http://www.blogger.com/atom/ns#'>windows 2003</category><category domain='http://www.blogger.com/atom/ns#'>terminal service</category><title>Escritorio remoto no inicia servicio</title><description>Me paso que no me podia conectar por escritorio remoto, revisando vi que el puerto 3389 no estaba escuchando nada.&lt;br /&gt;&lt;br /&gt;Despues de buscar como resolver el problema vi que era por borre la conexion RDP. La borre por ignorante la verdad, antes del problema me conecte remotamente a la maquina y quise cerrar sesión pero se quedo trabado, cerre la ventana aun cuando me advertia que la sesión iba a seguir abierta, pense que en un rato se cerraba. Despues de un rato volvi a abrir sesión y seguia en la misma parte, se congelo algo y nunca se cerro sesión. &lt;br /&gt;&lt;br /&gt;Fui a la maquina directamente e intente borrar la conexion, entre configuración de terminal services  y borre el RDP-tcp de "connections". ERROR. &lt;br /&gt;Bueno para resolverlo se hace lo siguiente:&lt;br /&gt;---http://www.experts-exchange.com/OS/Microsoft_Operating_Systems/Q_23019492.html&lt;br /&gt;-abrir tscc.msc &lt;br /&gt;-seleccionar "connections" y en el menu action darle en "new connection".&lt;br /&gt;&lt;br /&gt;las opciones "normales" de una conexion es:&lt;br /&gt;-encriptacion.- compactible con el cliente&lt;br /&gt;-capa de seguridad: Capa RDP&lt;br /&gt;-opciones de inicio: usar las provistas por el cliente, sin "simpre preguntar"&lt;br /&gt;-control remoto: usar control remoto con la configuracion predeterminada}&lt;br /&gt;-permisos:administradores(con control total), local services (permisos espciales de query information y message), network servies (permisos especiales de message) y usuarios de escritorio remoto (con user access y guest access).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-7041452557562517229?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2009/07/escritorio-remoto-no-inicia-servicio.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-8791804131573667006</guid><pubDate>Wed, 22 Jul 2009 22:41:00 +0000</pubDate><atom:updated>2009-07-22T18:15:16.475-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>escritorio remoto</category><category domain='http://www.blogger.com/atom/ns#'>windows 2003</category><category domain='http://www.blogger.com/atom/ns#'>terminal service</category><title>Cambiar el puerto de escritorio remoto</title><description>--- tomado de http://www.mobydisk.com/techres/securing_remote_desktop.html&lt;br /&gt;&lt;br /&gt;Para cambiar el puerto predeterminado de Escritorio Remoto que es el 3389 a otro cambiamos la siguente clave:&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\PortNumber&lt;br /&gt;&lt;br /&gt;Cuando se conecte tambien se debe especificar cual puerto es el destino&lt;br /&gt;&lt;br /&gt;"mi.computadoraencasa.com:4567" en lugar de "mi.computadoraencasa.com"&lt;br /&gt;&lt;br /&gt;Sin olvidad de cambiar la regla del firewall&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-8791804131573667006?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2009/07/cambiar-el-puerto-de-escritorio-remoto.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-3793843478428284037</guid><pubDate>Sat, 11 Jul 2009 19:35:00 +0000</pubDate><atom:updated>2009-07-11T14:48:43.956-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>windows 2003</category><category domain='http://www.blogger.com/atom/ns#'>gpo</category><title>Usuarios de Escritorio Remoto por GPO</title><description>Para permitir que en las maquinas cliente (como un WinXP) nos podamos conectar usando el "Escritorio Remoto" se agrega en una GPO lo siguiente&lt;br /&gt;1.- Agregar una GPO con nombre "UsuariosRemoto"&lt;br /&gt;2.- Editamos la GPO y agregamos en las siguientes claves&lt;br /&gt;3.- Computer Configuration/Windows Settings/Local Policies/User Rights Assignment &lt;br /&gt;3.1.- Allow log on through Terminal Services &lt;-- Agregamos el usuario/grupo que queremos&lt;br /&gt;4.- Computer Configuration/Windows Settings/Restricted Groups --&gt; &lt;br /&gt;4.1.- agregamos el grupo de "Usuarios de Escritorios Remotos" (podemos usar el bonton browse).&lt;br /&gt;4.2.- Agregamos en "members of this group" el mismo usuario/grupo del paso 3.1&lt;br /&gt;&lt;br /&gt;Nota. esta revuelto con claves en ingles porque pase la configuracion de mi anterior servidor que estaba en español al nuevo que esta en ingles. Me sorprendio que los nombres de usuarios y grupos internos o builtin quedaran en español.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-3793843478428284037?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2009/07/usuarios-de-escritorio-remoto-por-gpo.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-5933254593384365380</guid><pubDate>Thu, 19 Jun 2008 02:00:00 +0000</pubDate><atom:updated>2008-06-18T21:01:38.139-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>vmware</category><title>vmware time wrong</title><description>--tomado de http://vmblog.com/archive/2007/08/24/help-vmware-fixing-time-keeping-problems-with-the-guest-os.aspx&lt;br /&gt;&lt;br /&gt;HELP: VMware - Fixing Time Keeping Problems with the Guest OS&lt;br /&gt;&lt;br /&gt;Because virtual machines work by time-sharing host physical hardware, a virtual machine cannot exactly duplicate the timing behavior of a physical machine. VMware virtual machines use several techniques to minimize and conceal differences in timing behavior, but the differences can still sometimes cause timekeeping inaccuracies and other problems in guest software.&lt;br /&gt;&lt;br /&gt;This problem occurs because current VMware for Linux products do not have complete support for host power management features (such as Intel SpeedStep, or AMD PowerNow or Cool'n'Quiet) that vary the processor speed. To work around this problem, specify the correct maximum CPU speed in your global configuration file.  This can be done on either a Windows host server or a Linux host server.&lt;br /&gt;&lt;br /&gt;On a Windows host server:&lt;br /&gt;&lt;br /&gt;   1.&lt;br /&gt;      Find the speed of your host's CPU. For example, in Windows XP, right click My Computer, then choose Properties. This path may be different, depending on the version of Windows you use.&lt;br /&gt;&lt;br /&gt;   2.&lt;br /&gt;&lt;br /&gt;      Look for config.ini in one of the following locations:&lt;br /&gt;          *&lt;br /&gt;&lt;br /&gt;            C:\Documents and Settings\All Users\Application Data\VMware\VMware Workstation\config.ini&lt;br /&gt;          *&lt;br /&gt;&lt;br /&gt;            C:\Documents and Settings\All Users\Application Data\VMware\VMware GSX Server\config.ini&lt;br /&gt;          *&lt;br /&gt;            C:\Documents and Settings\All Users\Application Data\VMware\VMware Server\config.ini&lt;br /&gt;&lt;br /&gt;          *&lt;br /&gt;            C:\ProgramData\VMware\VMware Workstation or&lt;br /&gt;            C:\Program Files\VMware\VMware Workstation&lt;br /&gt;            (on a Windows Vista host running Workstation 6.0)&lt;br /&gt;&lt;br /&gt;       &lt;br /&gt;   3.&lt;br /&gt;&lt;br /&gt;      Edit config.ini, adding the lines described below.&lt;br /&gt;&lt;br /&gt;      host.cpukHz = "X" where "X" equals the maximum speed in KHz of your host machine.  That is, its speed in MHz times 1000 or its speed in GHz times 1000000.  A 3GHz machine would be 3000000.&lt;br /&gt;      host.noTSC = "TRUE"&lt;br /&gt;      ptsc.noTSC = "TRUE"&lt;br /&gt;&lt;br /&gt;      The second and third lines enable a mechanism that tries to keep the guest clock accurate even when the time stamp counter (TSC) is slow.&lt;br /&gt;      Note: On Windows, you can use Notepad, but be careful when you save the file that Notepad does not add an extra .txt extension to the filename. You can do that by selecting All files instead of Text files in the Save dialog box.&lt;br /&gt;&lt;br /&gt;   4.&lt;br /&gt;&lt;br /&gt;      In addition, check the VMware Tools control panel in the guest operating system. On the Options tab, ensure that Time synchronization between the virtual machine and the host operating system is selected.&lt;br /&gt;&lt;br /&gt;On a Linux host server:&lt;br /&gt;&lt;br /&gt;To prevent guest clocks from running too quickly, specify the correct maximum host CPU speed in your global configuration file, /etc/vmware/config. If this file exists, edit it with a text editor, adding the lines described below. The file may not exist. If it does not exist, create it as a plain text file.&lt;br /&gt;&lt;br /&gt;Add the following lines to your global configuration file:&lt;br /&gt;&lt;br /&gt;  host.cpukHz = "X" where "X" equals the maximum speed in KHz of your host machine.  That is, its speed in MHz times 1000 or its speed in GHz times 1000000.  A 3GHz machine would be 3000000.&lt;br /&gt;  host.noTSC = TRUE&lt;br /&gt;  ptsc.noTSC = TRUE&lt;br /&gt;&lt;br /&gt;To periodically correct the time (once per minute) when a guest clock runs slowly, VMware Tools must be installed in the guest. On the Options tab of VMware Tools in the guest, verify that Time synchronization between the virtual machine and the host operating system is selected.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-5933254593384365380?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2008/06/vmware-time-wrong.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-3191517715851520132</guid><pubDate>Thu, 19 Jun 2008 00:49:00 +0000</pubDate><atom:updated>2008-06-18T19:51:37.385-05:00</atom:updated><title>Windows 2003, servidor de horario</title><description>-- tomado de http://support.microsoft.com/kb/816042&lt;br /&gt;&lt;br /&gt;Configurar el Servicio de hora de Windows para usar un origen de hora externo&lt;br /&gt;Para configurar un servidor de hora interno para que se sincronice con un origen de hora externo, siga estos pasos:&lt;br /&gt;1. Cambie el tipo de servidor a NTP. Para ello, siga estos pasos:&lt;br /&gt;a.  Haga clic en Inicio, en Ejecutar, escriba regedit y, a continuación, haga clic en Aceptar.&lt;br /&gt;b.  Busque la siguiente subclave del Registro y haga clic en ella:&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type&lt;br /&gt;c.  En el panel derecho, haga clic con el botón secundario del mouse en Type y, a continuación, haga clic en Modificar.&lt;br /&gt;d.  En el cuadro de diálogo Editar valor DWORD, escriba NTP en el cuadro Información del valor y, a continuación, haga clic en Aceptar.&lt;br /&gt;2. Configure AnnounceFlags en 5. Para ello, siga estos pasos:&lt;br /&gt;a.  Busque la siguiente subclave del Registro y haga clic en ella:&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags&lt;br /&gt;b.  En el panel derecho, haga clic con el botón secundario del mouse en AnnounceFlags y, a continuación, haga clic en Modificar.&lt;br /&gt;c.  En el cuadro de diálogo Editar valor DWORD, escriba 5 en el cuadro Información del valor y, a continuación, haga clic en Aceptar.&lt;br /&gt;3. Habilite NTPServer. Para ello, siga estos pasos:&lt;br /&gt;a.  Busque la siguiente subclave del Registro y haga clic en ella:&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer&lt;br /&gt;b.  En el panel derecho, haga clic con el botón secundario del mouse en Enabled y, a continuación, haga clic en Modificar.&lt;br /&gt;c.  En el cuadro de diálogo Editar valor DWORD, escriba 1 en el cuadro Información del valor y, a continuación, haga clic en Aceptar.&lt;br /&gt;4. Especifique las fuentes de tiempo. Para ello, siga estos pasos:&lt;br /&gt;a.  Busque la siguiente subclave del Registro y haga clic en ella:&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer&lt;br /&gt;b.  En el panel derecho, haga clic con el botón secundario del mouse en NtpServer y, a continuación, haga clic en Modificar.&lt;br /&gt;c.  En el cuadro de diálogo Editar valor DWORD, escriba interlocutores en el cuadro Información del valor y, a continuación, haga clic en Aceptar.&lt;br /&gt;&lt;br /&gt;Nota: interlocutores es un marcador de posición para una lista de delimitada mediante espacios que contiene los interlocutores de los que su equipo obtiene las marcas de tiempo. Cada nombre DNS de la lista debe ser único. Debe agregar ,0x1 al final de cada nombre DNS. Si no agrega ,0x1 al final de cada nombre DNS, los cambios hechos en el paso 5 no surtirán efecto.&lt;br /&gt;5. Seleccione el intervalo de encuesta. Para ello, siga estos pasos:&lt;br /&gt;a.  Busque la siguiente subclave del Registro y haga clic en ella:&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval&lt;br /&gt;b.  En el panel derecho, haga clic con el botón secundario del mouse en SpecialPollInterval y, a continuación, haga clic en Modificar.&lt;br /&gt;c.  En el cuadro de diálogo Editar valor de DWORD, escriba tiempoEnSegundos en el cuadro Información del valor y, a continuación, haga clic en Aceptar.&lt;br /&gt;&lt;br /&gt;Nota: tiempoEnSegundos es un marcador de posición para el número de segundos que quiere que transcurran entre cada encuesta. Un valor recomendado es 900 Decimal. Este valor configura el servidor de tiempo para que haga una encuesta cada 15 minutos.&lt;br /&gt;6. Configure los valores de corrección de tiempo. Para ello, siga estos pasos:&lt;br /&gt;a.  Busque la siguiente subclave del Registro y haga clic en ella:&lt;br /&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxPosPhaseCorrection&lt;br /&gt;b.  En el panel derecho, haga clic con el botón secundario del mouse en MaxPosPhaseCorrection y, a continuación, haga clic en Modificar.&lt;br /&gt;c.  En Editar valor DWORD, haga clic para seleccionar Decimal en el cuadro Base.&lt;br /&gt;d.  En el cuadro de diálogo Editar valor de DWORD, escriba tiempoEnSegundos en el cuadro Información del valor y, a continuación, haga clic en Aceptar.&lt;br /&gt;&lt;br /&gt;Nota: tiempoEnSegundos es un marcador de posición para un valor razonable, como 1 hora (3600) o 30 minutos (1800). El valor que seleccione dependerá del intervalo de encuesta, la condición de la red y el recurso de tiempo externo.&lt;br /&gt;e.  Busque y haga clic en la siguiente subclave del Registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxNegPhaseCorrection&lt;br /&gt;f.  En el panel derecho, haga clic con el botón secundario del mouse en MaxNegPhaseCorrection y, a continuación, haga clic en Modificar.&lt;br /&gt;g.  En Editar valor DWORD, haga clic para seleccionar Decimal en el cuadro Base.&lt;br /&gt;h.  En el cuadro de diálogo Editar valor de DWORD, escriba tiempoEnSegundos en el cuadro Información del valor y, a continuación, haga clic en Aceptar.&lt;br /&gt;&lt;br /&gt;Nota: tiempoEnSegundos es un marcador de posición para un valor razonable, como 1 hora (3600) o 30 minutos (1800). El valor que seleccione dependerá del intervalo de encuesta, la condición de la red y el recurso de tiempo externo.&lt;br /&gt;7. Salga del Editor del Registro.&lt;br /&gt;8. En el símbolo del sistema, escriba el comando siguiente para reiniciar el Servicio de hora de Windows y presione después ENTRAR:&lt;br /&gt;net stop w32time &amp;&amp; net start w32time&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-3191517715851520132?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2008/06/windows-2003-servidor-de-horario.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-4045995180095023343</guid><pubDate>Fri, 13 Jun 2008 20:24:00 +0000</pubDate><atom:updated>2008-07-09T15:17:06.324-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>certificados</category><category domain='http://www.blogger.com/atom/ns#'>windows 2003</category><category domain='http://www.blogger.com/atom/ns#'>openssl</category><category domain='http://www.blogger.com/atom/ns#'>seguridad</category><title>Hacer certificados x509 con openssl para windows</title><description>--tomado de http://www.codeproject.com/KB/IP/sslclasses.aspx y http://dns.bdat.net/documentos/certificados_digitales/x359.html&lt;br /&gt;&lt;br /&gt;1.- Generar llave privada "openssl genrsa -des3 -out clientkey.pem 2048". El archivo se genera en base 64.&lt;br /&gt;&lt;br /&gt;2.- Generar peticion "openssl req -new -key clientkey.pem -out clientrequest.csr". &lt;br /&gt;&lt;br /&gt;3.- Generar certificado: Se puede hacer de 2 formas.&lt;br /&gt;&lt;br /&gt;3a.-En el sitio de tu servidor &lt;tuservidor&gt;/certsvr, en "Solicitar certificado" -&gt; "Solicitud avanzada de certificado" -&gt; "Enviar una solicitud de certificados usando un archivo cifrado de base64 CMC o PKCS #10 o una solicitud de renovación usando un archivo cifrado de base64 PKCS #7." dile donde se encuentra el archivo clientrequest.csr y descarga el archivo generado con el nombre de "clientcert_x509_codificado.cer". Este archivo esta en formato x509 codificado.&lt;br /&gt;&lt;br /&gt;3b.- En la linea de comandos logeado en el servidor "certreq -submit -attrib "Ce&lt;br /&gt;rtificateTemplate:ClientAuth" -crl -f clientrequest.csr clientcert_x509_base64.cer" . Para mas atributos http://www.microsoft.com/technet/prodtechnol/windowsserver2003/technologies/security/advcert.mspx#EK4AG en la sección "Certreq.exe INF File Structure"&lt;br /&gt;&lt;br /&gt;    * Ahora los vamos a convertir en x509 base 64 "openssl x509 -inform DER -in clientcert_x509_codificado.cer -out clientcert_x509_base64.pem"&lt;br /&gt;&lt;br /&gt;    * Y combinamos el certificado y la llave privada en un archivo. "type clientcert_x509_codificado.pem clientkey.pem &gt;client_cert_key.pem". &lt;br /&gt;&lt;br /&gt;    * Algunos programas (Como Internet Explorer o Mozilla Firefox) necesitan que el archivo este en formato pkcs12, el cual obtenemos asi "openssl pkcs12 -export -out client_cert_key.p12 -in client_cert_key.pem -name "Mi certificado" "&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahora si a usarlo en nuestra aplicación&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-4045995180095023343?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2008/06/hacer-certificados-x509-con-openssl.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-5703303651595286292</guid><pubDate>Thu, 12 Jun 2008 23:40:00 +0000</pubDate><atom:updated>2008-06-12T18:42:37.211-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>windows 2003</category><title>Configuracion Windows 2003 PDC</title><description>TOMADO DE http://eventid.net/display.asp?eventid=53258&amp;eventno=4493&amp;source=MSDTC&amp;phase=1&lt;br /&gt;Para el error &lt;br /&gt;Origen: MSDTC&lt;br /&gt;ID: 53258&lt;br /&gt;&lt;br /&gt;David Grant (Last update 4/12/2005):&lt;br /&gt;I corrected the error by doing the following:&lt;br /&gt;1. Click Start -&gt; Administrative Tools -&gt; Component Services.&lt;br /&gt;2. Click the "+" next to Component services to expand it.&lt;br /&gt;3. Right click "My Computer" in the right window pane and select Properties.&lt;br /&gt;4. Click the MS DTC Tab.&lt;br /&gt;5. Click the "Security Configuration" button, a dialog box appears. Click "OK".&lt;br /&gt;6. Click "OK" on the "My Computer Properties" box; this will take you back to the console.&lt;br /&gt;7. Right click "My Computer" and select "Stop MS DTC" (this stops the MSDTC service.&lt;br /&gt;8. Again, right click "My Computer" and select "Start MS DTC".&lt;br /&gt;By following the above steps, it appears that this sets the MS DTC defaults resolving the error messages. Check the event log to verify that the problem is gone. You might also want to restart the server to verify this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-5703303651595286292?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2008/06/configuracion-windows-2003-pdc.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-8600038779347297641</guid><pubDate>Fri, 18 Apr 2008 13:54:00 +0000</pubDate><atom:updated>2008-04-18T09:25:23.455-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Hacienda</category><category domain='http://www.blogger.com/atom/ns#'>factura electronica</category><category domain='http://www.blogger.com/atom/ns#'>seguridad</category><title>Certificado como lo usa Hacieda</title><description>-- tomado de http://www.lacorona.com.mx/fortiz/&lt;br /&gt;&lt;br /&gt;&lt;h1 align="center"&gt;Manejo del certificado y sello digital + Factura Electronica en México&lt;br /&gt;&lt;/h1&gt; &lt;table border="0" width="100%"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td width="50%"&gt; Contenido/contents:&lt;br /&gt;&lt;a href="http://www.lacorona.com.mx/fortiz/sat/firma.htm#intro"&gt;Introducion&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.lacorona.com.mx/fortiz/sat/firma.htm#privada"&gt;Llave privada&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.lacorona.com.mx/fortiz/sat/firma.htm#publica"&gt;Llave publica&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;td align="right" valign="top"&gt; &lt;a href="http://www.lacorona.com.mx/fortiz/sat/index.php"&gt;Pagina anterior/Previous page &lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;hr /&gt;  &lt;a name="intro"&gt; &lt;/a&gt;&lt;a name="privada"&gt; &lt;/a&gt;&lt;a name="publica"&gt; &lt;/a&gt; &lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="2"&gt;Introduccion&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td width="50%"&gt;Para los que todavia no tengan el famoso anexo 20 del diario oficial del 1 de septiembre del 2004 lo pueden     obtener &lt;a href="http://www.gobernacion.gob.mx/dof/2004/septiembre/dof_01-09-2004.pdf"&gt;aqui&lt;/a&gt;. El Anexo 20 empieza en      la pagina 135 y termina en la pagina 160.     &lt;/td&gt;&lt;td class="en"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;En la pagina &lt;a href="http://www.sat.gob.mx/sitio_internet/e_sat/comprobantes_fiscales/15_2846.html"&gt;informacion      a detalle sobre Comprobantes fiscales Didigitales&lt;/a&gt; del SAT esta una presentacion en PowerPoint fechada en      Febrero del 2005 &lt;a href="ftp://ftp2.sat.gob.mx/asistencia_servicio_ftp/publicaciones/solcedi/fea_fe.ppt"&gt;fea_fe.ppt&lt;/a&gt; donde en la diapositiva 58 "Un par de Notas Sobre       Llaves" mecionan que la llave privada esta en con el standard PKCS8 en formato DER.     &lt;/td&gt;&lt;td class="en" width="50%"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Desafortunadamente los algoritmos PHP de &lt;a href="http://mx.php.net/openssl/"&gt;OpenSSL&lt;/a&gt; requieren que este     en formato PEM.     &lt;/td&gt;&lt;td class="en"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;th colspan="2"&gt;Llave privada&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Ademas esta el 'problema' de la contraseña, se puede escribir la contraseña en el codigo PHP     pero queda muy a la vista, o se le puede quitar la contraña al archivo. Yo obte por esto ultimo.     &lt;/td&gt;&lt;td class="en"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan="2" class="user"&gt; openssl pkcs8 -inform DER -in AAA010101AAA_0408021316S.key -out AAA010101AAA.key.pem &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Este programa pide la contraseña para poder abrir la llave y la convierte al formato PEM ya sin la          contraseña.  Podemos ver el contenido del archivo porque ya esta en formato base64.     &lt;/td&gt;&lt;td class="en"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan="2" class="user"&gt;&lt;pre&gt;$ &lt;b&gt;cat AAA010101AAA.key.pem&lt;/b&gt;&lt;br /&gt;-----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;MIICXgIBAAKBgQDArCo5om1eOPsVVkgG57X0VZI+Y/kqSRRqtOVBGj8rKx38nYjH&lt;br /&gt;VqAkKS4sYRsvLtXI+1courEksbrhYxkYJOc1rqm6uyWSIbrtwhSStoETa2/+3Zsv&lt;br /&gt;tGYakQARhlPm6Pqyj6DjiNZrMW8JjtSehr4grd17Aub6L3wv28tkHvIizwIDAQAB&lt;br /&gt;AoGBALxMReQXws0v4OsEbNYaw++rZYaGC+/whfyXF+pdLVkSBXdpulAeb9mHSXHj&lt;br /&gt;4T5mhlaqlI7gjdkvvVUilVbMUgypGYr8D7tw+cIw4dY59T+iYJP4ohu0/9QxT61z&lt;br /&gt;LaxCDWz1oQSWrqVrC2YeBMZlUMqoj60qhZuN/nMLuMlf69s5AkEA6gDl7P8sgMk5&lt;br /&gt;ur0BIpDDsAiXS0GwbrbKg+b9Ha7OAG+8rMG4K8oTSNXsZESLrN2ZcLzr08Xp/GIv&lt;br /&gt;8qZzWoT17QJBANLIq6mQKXjPYX9PYvFB4voQJ2uBzARbT+9IBEki9IeBoa+8KMlh&lt;br /&gt;XatepWNnWN+EGFu25K+TYimWvW/alL81pCsCQQDGsbyKYKIJONQsHBC6qPGAp8rP&lt;br /&gt;vBdz6wJKvfhvG98Pv9EVX+hiRlPZpMv0179CKWgAsmoMiCEGjNjp0Sxh0ESBAkEA&lt;br /&gt;jrmCQxZyfnMtuV6vyFysrFYz2v/QfUK3JXbGMB+TJA4KxUvK8lETc+5qXpyj+PUg&lt;br /&gt;6Tk2MAzD8xU2wH5pKe/QcQJAEYsi0vjsIzcIOaCRRPA+H0kOEgx4wPZmKNrLNGru&lt;br /&gt;gBIUpRlCzi6zGAhq3KVosQeqp0TAg9aSREW+Jux6nYJigA==&lt;br /&gt;-----END RSA PRIVATE KEY-----&lt;/pre&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Como mencione, este certificado ya esta sin contraseña, si se quiere en formato PEM pero con         la contraseña se ejecuta este otro comando que la solicita y encripta la llave privada.     &lt;/td&gt;&lt;td class="en"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan="2" class="user"&gt;&lt;pre&gt;$ &lt;b&gt;openssl rsa -in AAA010101AAA.key.pem -des3 -out conllave.key.pem&lt;/b&gt;&lt;br /&gt;writing RSA key&lt;br /&gt;Enter PEM pass phrase:&lt;br /&gt;Verifying - Enter PEM pass phrase:&lt;/pre&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Este archivo en formato PEM tambien tiene el contenido en formato base64 pero esta cifrado con el         metodo 3DES por lo cual solo se puede usar para firmar si se proporciona la contraseña          correcta.     &lt;/td&gt;&lt;td class="en"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan="2" class="user"&gt;&lt;pre&gt;$ &lt;b&gt;cat conllave.key.pem&lt;/b&gt;&lt;br /&gt;-----BEGIN RSA PRIVATE KEY-----&lt;br /&gt;Proc-Type: 4,ENCRYPTED&lt;br /&gt;DEK-Info: DES-EDE3-CBC,40B029D5AE25EDB0&lt;br /&gt;&lt;br /&gt;n/giCSQ/F91Zn1sAfdx8qO6fNNHYIJijtTUWABCrP9t8B/WLXkdhpOE4f/8pq1mc&lt;br /&gt;NesOY6/wIwWxOOilBXjcOFUuvJAIys6M6YXhVt5i3efU5NxdfLHGcUtMh2sQnVia&lt;br /&gt;X1c094aMONYtVXOfTphWnSIwillGIIRaDkwZXV8T1dxt4X0uzXM7EFTYi6cYE9Ok&lt;br /&gt;3931+ehoRUN8wPqblZpCVqaM14m71nI9VC7PYe72Dhu/62B/PHl5uX551KV0ABHv&lt;br /&gt;rn1rycdsz0c+ynu1No2Hx0MacP//QzRjHkfhKbHCJEOHCSQIRQw8noU035cXmG3O&lt;br /&gt;zMoxZFgPpZPSbBYK/F3xtcqos+Zfp9neE9d/K/LHUC2W2YRl9bMZV3xcV9jArqJ4&lt;br /&gt;3pL4Q6qwF8XG2Qeu1kUBtkOXqmUNa+6y7FaPCPbjS3sBXKBc+Ysgei2KWSmRDNR6&lt;br /&gt;urulvRNhtfTJzLM52KlvAjg6rj8O+YFaErz8fJ2TiDDBiUdcKMLbH1uADe+aZyEt&lt;br /&gt;LvshfAtyl7lKpdWxCro6wfCvkt95YRvQa1JILV6eVnhu5CZWtc3hjCaJuiSTvkjK&lt;br /&gt;fxXaZWLNC9L2Du+xR4ceBk4L1BSu6k6up1nlTqctj9znRJ5BdkOdxkNhCbU9MI65&lt;br /&gt;TthIFHkRAjHZUsJx79EhsLPH1lh9VPMxgNdYTr9OuYC+ro9pKinHsGnbQIkCOEkt&lt;br /&gt;OSKwelU94DrOcpzIvqIeV4dxxCHPHLaeLUN13w3mLX0vtbLKb8Ml0CkTjzFBYA4H&lt;br /&gt;DmgS3duVXUnPO4GDxcn+ZrXPDdBCqMW1nFG0BVgsBwuwd4v5LvgCtw==&lt;br /&gt;-----END RSA PRIVATE KEY-----&lt;/pre&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;th colspan="2"&gt;Llave publica&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Ademas el certificado o llave publica tambien esta en formato DER por lo que tambien hay que convertirlo     &lt;/td&gt;&lt;td class="en"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan="2" class="user"&gt; openssl x509 -inform DER -outform PEM -in AAA010101AAAsd.cer -pubkey &lt;b&gt;&gt;AAA010101AAA.cer.pem&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ya convertido ya podemos ver el contenido del certificado de llave publica     &lt;/td&gt;&lt;td class="en"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;24/feb/2006, Gracias a Hector Magaña de Accend por corregirme en el comando para generar el         archivo incluyendo la llave publica.     &lt;/td&gt;&lt;td class="en"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan="2" class="user"&gt;&lt;pre&gt;$ &lt;b&gt;cat AAA010101AAA.cer.pem&lt;/b&gt;&lt;br /&gt;-----BEGIN PUBLIC KEY-----&lt;br /&gt;MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDArCo5om1eOPsVVkgG57X0VZI+&lt;br /&gt;Y/kqSRRqtOVBGj8rKx38nYjHVqAkKS4sYRsvLtXI+1courEksbrhYxkYJOc1rqm6&lt;br /&gt;uyWSIbrtwhSStoETa2/+3ZsvtGYakQARhlPm6Pqyj6DjiNZrMW8JjtSehr4grd17&lt;br /&gt;Aub6L3wv28tkHvIizwIDAQAB&lt;br /&gt;-----END PUBLIC KEY-----&lt;br /&gt;-----BEGIN CERTIFICATE-----&lt;br /&gt;MIIDpDCCAoygAwIBAgIUMDAwMDEwMDAwMDAwMDAwMDAxMTQwDQYJKoZIhvcNAQEF&lt;br /&gt;BQAwgcMxGTAXBgNVBAcTEENpdWRhZCBkZSBNZXhpY28xFTATBgNVBAgTDE1leGlj&lt;br /&gt;bywgRC5GLjELMAkGA1UEBhMCTVgxGjAYBgNVBAMTEUFDIGRlIFBydWViYXMgU0FU&lt;br /&gt;MTYwNAYDVQQLFC1BZG1pbmlzdHJhY2nzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5m&lt;br /&gt;b3JtYWNp824xLjAsBgNVBAoUJVNlcnZpY2lvIGRlIEFkbWluaXN0cmFjafNuIFRy&lt;br /&gt;aWJ1dGFyaWEwHhcNMDQwODAyMTk0NzEzWhcNMDYwODAyMTk0NzEzWjCBuDElMCMG&lt;br /&gt;A1UELRMcQUFBMDEwMTAxQUFBIC8gQUFBQTAxMDEwMUFBQTEeMBwGA1UEBRMVIC8g&lt;br /&gt;QUFBQTAxMDEwMUhERlJYWDAwMRowGAYDVQQKExFFbXByZXNhIGRlIFBydWViYTEb&lt;br /&gt;MBkGA1UECxMSU3VjdXJzYWwgZGUgUHJ1ZWJhMRowGAYDVQQDExFFbXByZXNhIGRl&lt;br /&gt;IFBydWViYTEaMBgGA1UEKRMRRW1wcmVzYSBkZSBQcnVlYmEwgZ8wDQYJKoZIhvcN&lt;br /&gt;AQEBBQADgY0AMIGJAoGBAMCsKjmibV44+xVWSAbntfRVkj5j+SpJFGq05UEaPysr&lt;br /&gt;HfydiMdWoCQpLixhGy8u1cj7Vyi6sSSxuuFjGRgk5zWuqbq7JZIhuu3CFJK2gRNr&lt;br /&gt;b/7dmy+0ZhqRABGGU+bo+rKPoOOI1msxbwmO1J6GviCt3XsC5vovfC/by2Qe8iLP&lt;br /&gt;AgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgPoMA0GCSqGSIb3DQEB&lt;br /&gt;BQUAA4IBAQA3c1OpeaWhP1Qt5XBb3CKogVjo8oUfIJdayTYVG/jy/STtWUJpQ5V1&lt;br /&gt;4esa4ZrhTtYT1ZJiXPwQTS1fEDNr4XrmyFoimXfj9/pemGu/61skcViVB2rw3H6S&lt;br /&gt;5Mn8b2ICx6zAK+KVoFal/mJpXLOGvH4S7E529MneLh6rktDxJ+338fFgF2sEZItf&lt;br /&gt;NaSeAsX4Nllsz4G4re0nnSShD3T9y6o2nMpOwphMgpy12HsQm7XxIvZe+SIUjhBk&lt;br /&gt;Q7UVz9/6yuD/Hguh38vnU9j98VWahVjUT4BnI1RTPiYlaxlMsqQOkh1QIbOufki5&lt;br /&gt;4wledKtwlkS5x71yo3HMVR9CMK2GJV39&lt;br /&gt;-----END CERTIFICATE-----&lt;/pre&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Y por supuesto ya podemos usar varios comandos para sacar mas informacion de ese conjunto de datos.     &lt;/td&gt;&lt;td class="en"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan="2" class="user"&gt; $ &lt;b&gt;openssl x509 -in AAA010101AAA.cer.pem  -issuer -noout&lt;/b&gt;&lt;br /&gt;issuer= /L=Ciudad de Mexico/ST=Mexico, D.F./C=MX/CN=AC de Pruebas SAT/OU=Administraci\xF3n de Seguridad de la Informaci\xF3n/O=Servicio de Administraci\xF3n Tributaria&lt;br /&gt;$ &lt;b&gt;openssl x509 -in AAA010101AAA.cer.pem  -startdate -enddate -noout&lt;/b&gt;&lt;br /&gt;notBefore=Aug  2 19:47:13 2004 GMT&lt;br /&gt;notAfter=Aug  2 19:47:13 2006 GMT&lt;br /&gt;$ &lt;b&gt;openssl x509 -in AAA010101AAA.cer.pem  -subject -noout&lt;/b&gt;&lt;br /&gt;subject= /x500UniqueIdentifier=AAA010101AAA / AAAA010101AAA/serialNumber= / AAAA010101HDFRXX00/O=Empresa de Prueba/OU=Sucursal de Prueba/CN=Empresa de Prueba/name=Empresa de Prueba&lt;br /&gt;$ &lt;b&gt;openssl x509 -in AAA010101AAA.cer.pem  -serial -noout&lt;/b&gt;&lt;br /&gt;serial=3030303031303030303030303030303030313134&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Ya para ver ejemplos de como usar estos certificados para generar el sello del certificado digital les         recomiendo que vean esta &lt;a href="http://www.lacorona.com.mx/fortiz/sat/xsl.php"&gt;pagina&lt;/a&gt; donde tambien aplico XSLT para generar la cadena         original.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-8600038779347297641?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2008/04/certificado-como-lo-usa-hacieda.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-2378476310768426854</guid><pubDate>Wed, 16 Apr 2008 18:53:00 +0000</pubDate><atom:updated>2008-04-18T09:21:21.584-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>javascript</category><title>Errores comunes con Prototype</title><description>-- Todamo de este blog: http://www.pablasso.com/&lt;br /&gt;&lt;br /&gt;&lt;h2 align="center"&gt;Errores comunes con Prototype&lt;/h2&gt; &lt;h1&gt;1.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; document.getElementById('foo') &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; $('foo') &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;El operador $ es lo mas esencial de Prototype, de ahí viene toda su magia, utilizalo!&lt;/p&gt; &lt;h1&gt;2.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; var woot = document.getElementById('bar').value&lt;br /&gt;var woot = $('bar').value &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; var woot = $F('bar') &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;El operador $F es un gran atajo para obtener valores de elementos.&lt;/p&gt; &lt;h1&gt;3.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; $('footer').style.height = '100px';&lt;br /&gt;$('footer').style.background = '#ffc'; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;div class="igBar"&gt;&lt;span id="ljavascript-2"&gt;&lt;a href="http://www.pablasso.com/#" onclick="javascript:showPlainTxt('javascript-2'); return false;"&gt;ver como texto plano&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;JAVASCRIPT:&lt;/span&gt; &lt;div id="javascript-2"&gt; &lt;div class="javascript"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;$&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'footer'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;setStyle&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;      height: &lt;span style="color: rgb(51, 102, 204);"&gt;'100px'&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;      background: &lt;span style="color: rgb(51, 102, 204);"&gt;'#ffc'&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Olvidate de problemas de bugs sobre diferentes navegadores si utilizas el metodo setStyle()&lt;/p&gt; &lt;h1&gt;4.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; $('tusuperelemento').innerHTML = 'algun contenido' &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; $('tusuperelemento').update('algun contenido') &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Podras decir que es casi la misma, pero no opinaras lo mismo cuando necesites concatenar funciones.&lt;/p&gt; &lt;h1&gt;5.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; new Ajax.Request('ninja.php?weapon1=foo&amp;amp;weapon2=bar') &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;div class="igBar"&gt;&lt;span id="ljavascript-3"&gt;&lt;a href="http://www.pablasso.com/#" onclick="javascript:showPlainTxt('javascript-3'); return false;"&gt;ver como texto plano&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;JAVASCRIPT:&lt;/span&gt; &lt;div id="javascript-3"&gt; &lt;div class="javascript"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;new&lt;/span&gt; Ajax.&lt;span style="color: rgb(0, 102, 0);"&gt;Request&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'ninja.php'&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    parameters:&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        weapon1: &lt;span style="color: rgb(51, 102, 204);"&gt;'foo'&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        weapon2: &lt;span style="color: rgb(51, 102, 204);"&gt;'bar'&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Escribe código limpio, tu cerebro te lo agradecerá.&lt;/p&gt; &lt;h1&gt;6.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;div class="igBar"&gt;&lt;span id="ljavascript-4"&gt;&lt;a href="http://www.pablasso.com/#" onclick="javascript:showPlainTxt('javascript-4'); return false;"&gt;ver como texto plano&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;JAVASCRIPT:&lt;/span&gt; &lt;div id="javascript-4"&gt; &lt;div class="javascript"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;new&lt;/span&gt; Ajax.&lt;span style="color: rgb(0, 102, 0);"&gt;Request&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'blah.php'&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    method: &lt;span style="color: rgb(51, 102, 204);"&gt;'POST'&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    asynchronous: &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;true&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    contentType: &lt;span style="color: rgb(51, 102, 204);"&gt;'application/x-www-form-urlencoded'&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    encoding: &lt;span style="color: rgb(51, 102, 204);"&gt;'UTF-8'&lt;/span&gt;,&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; new Ajax.Request('blah.php') &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Todos esos parámetros ya son defaults, ¿Para que repetirlos?.&lt;/p&gt; &lt;h1&gt;7.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; Event.observe('myContainer', 'click', doSomeMagic) &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; $('myContainer').observe('click', doSomeMagic) &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Es mas fácil concatenar si escoges el segundo, pero aquí es cuestión de gustos, escoge el sabor que mas te guste.&lt;/p&gt; &lt;h1&gt;8.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;div class="igBar"&gt;&lt;span id="ljavascript-5"&gt;&lt;a href="http://www.pablasso.com/#" onclick="javascript:showPlainTxt('javascript-5'); return false;"&gt;ver como texto plano&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;JAVASCRIPT:&lt;/span&gt; &lt;div id="javascript-5"&gt; &lt;div class="javascript"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;$&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'div.hidden'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;each&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;el&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    el.&lt;span style="color: rgb(0, 102, 0);"&gt;show&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; $$('div.hidden').invoke('show') &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Invoke es muy útil, piensa en el como en un atajo cuando necesitas asignar valores iguales a todos tus elementos sin necesidad de iterar sobre ellos.&lt;/p&gt; &lt;h1&gt;9.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;div class="igBar"&gt;&lt;span id="ljavascript-6"&gt;&lt;a href="http://www.pablasso.com/#" onclick="javascript:showPlainTxt('javascript-6'); return false;"&gt;ver como texto plano&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;JAVASCRIPT:&lt;/span&gt; &lt;div id="javascript-6"&gt; &lt;div class="javascript"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;$&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'div.collapsed'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;each&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;function&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;el&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    el.&lt;span style="color: rgb(0, 102, 0);"&gt;observe&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'click'&lt;/span&gt;, expand&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; $$('div.collapsed').invoke('observe', 'click', expand) &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Y también puede ser usado para manejo de eventos, muy practico!&lt;/p&gt; &lt;h1&gt;10.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt; $$('input.date').invoke('observe', 'focus', onFocus);&lt;br /&gt;$$('input.date').invoke('observe', 'blur', onBlur); &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;div class="igBar"&gt;&lt;span id="ljavascript-7"&gt;&lt;a href="http://www.pablasso.com/#" onclick="javascript:showPlainTxt('javascript-7'); return false;"&gt;ver como texto plano&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;JAVASCRIPT:&lt;/span&gt; &lt;div id="javascript-7"&gt; &lt;div class="javascript"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;$&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'input.date'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  .&lt;span style="color: rgb(0, 102, 0);"&gt;invoke&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'observe'&lt;/span&gt;, &lt;span style="color: rgb(51, 102, 204);"&gt;'focus'&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 102);"&gt;onFocus&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    .&lt;span style="color: rgb(0, 102, 0);"&gt;invoke&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'observe'&lt;/span&gt;, &lt;span style="color: rgb(51, 102, 204);"&gt;'blur'&lt;/span&gt;, &lt;span style="color: rgb(0, 0, 102);"&gt;onBlur&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;¿Para que abusar del operador $$ dos veces si podemos concatenar?&lt;/p&gt; &lt;h1&gt;11.&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;Modo Incorrecto&lt;/strong&gt;&lt;/p&gt; &lt;div class="igBar"&gt;&lt;span id="ljavascript-8"&gt;&lt;a href="http://www.pablasso.com/#" onclick="javascript:showPlainTxt('javascript-8'); return false;"&gt;ver como texto plano&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;JAVASCRIPT:&lt;/span&gt; &lt;div id="javascript-8"&gt; &lt;div class="javascript"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;$&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'productTable'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;innerHTML&lt;/span&gt; = &lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  $&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'productTable'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;innerHTML&lt;/span&gt; + &lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(51, 102, 204);"&gt;''&lt;/span&gt; + productId + &lt;span style="color: rgb(51, 102, 204);"&gt;' '&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  + productName + &lt;span style="color: rgb(51, 102, 204);"&gt;''&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  + productId + &lt;span style="color: rgb(51, 102, 204);"&gt;' '&lt;/span&gt; + productPrice + &lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  &lt;span style="color: rgb(51, 102, 204);"&gt;''&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;Modo Correcto&lt;/strong&gt;&lt;/p&gt; &lt;div class="igBar"&gt;&lt;span id="ljavascript-9"&gt;&lt;a href="http://www.pablasso.com/#" onclick="javascript:showPlainTxt('javascript-9'); return false;"&gt;ver como texto plano&lt;/a&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="syntax_hilite"&gt;&lt;span class="langName"&gt;JAVASCRIPT:&lt;/span&gt; &lt;div id="javascript-9"&gt; &lt;div class="javascript"&gt; &lt;ol&gt;&lt;li  style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);font-family:'Courier New',Courier,monospace;"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;&lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;var&lt;/span&gt; rowTemplate = &lt;span style="color: rgb(0, 51, 102); font-weight: bold;"&gt;new&lt;/span&gt; Template&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'#{id} #{name}#{id} #{price}'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;  $&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(51, 102, 204);"&gt;'productTable'&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;.&lt;span style="color: rgb(0, 102, 0);"&gt;insert&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li face="'Courier New',Courier,monospace" style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;    rowTemplate.&lt;span style="color: rgb(0, 102, 0);"&gt;evaluate&lt;/span&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;(&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;{&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li face="'Courier New',Courier,monospace" style="font-weight: normal; font-style: normal; color: rgb(58, 106, 139);"&gt; &lt;div  style="font-weight: normal;font-family:'Courier New',Courier,monospace;"&gt;        id: productId,&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;        &lt;span style="color: rgb(0, 0, 102);"&gt;name&lt;/span&gt;: productName,&lt;/div&gt; &lt;/li&gt;&lt;li style="font-family: 'Courier New',Courier,monospace; font-weight: normal; font-style: normal; color: rgb(58, 106, 139);"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;        price: productPrice&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div face="'Courier New',Courier,monospace" style="font-weight: normal;"&gt;      &lt;span style="color: rgb(102, 204, 102);"&gt;}&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-family: 'Courier New',Courier,monospace; font-weight: normal; font-style: normal; color: rgb(58, 106, 139);"&gt; &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;    &lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-weight: bold; color: rgb(38, 83, 106);"&gt; &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;  &lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt;&lt;/div&gt; &lt;/li&gt;&lt;li style="font-family: 'Courier New',Courier,monospace; font-weight: normal; font-style: normal; color: rgb(58, 106, 139);"&gt; &lt;div style="font-family: 'Courier New',Courier,monospace; font-weight: normal;"&gt;&lt;span style="color: rgb(102, 204, 102);"&gt;)&lt;/span&gt; &lt;/div&gt; &lt;/li&gt;&lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Este tip en especial es una joya, con Prototype podemos hacer templates, evitando de esta manera enormes plastas de código. Me confieso culpable de no haber utilizado esto antes.&lt;/p&gt; &lt;p&gt;Enlace | &lt;a href="http://thinkweb2.com/projects/prototype-checklist/"&gt;How well do you know prototype&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-2378476310768426854?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2008/04/errores-comunes-con-prototype.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-857190874626542521.post-2793301306163208003</guid><pubDate>Tue, 15 Apr 2008 14:06:00 +0000</pubDate><atom:updated>2008-10-20T13:29:27.500-05:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>codigo de barra</category><category domain='http://www.blogger.com/atom/ns#'>python</category><category domain='http://www.blogger.com/atom/ns#'>zope</category><title>Script de Python para generar un codigo de barra 128</title><description>Este es un script que hice para mi aplicacion de Zope en la que imprimo unas credenciales con codigo de barras en codigo 128. Se copia en la carpeta de &lt;span style="font-style: italic;"&gt;Extensions &lt;/span&gt;y se crea en mi instancia de zope un objeto tipo &lt;span style="font-style: italic;"&gt;External Metod &lt;/span&gt;con&lt;br /&gt;&lt;ul&gt;&lt;li&gt;id: ean_128&lt;/li&gt;&lt;li&gt;module name: ean_128&lt;/li&gt;&lt;li&gt;function name: convierteA128&lt;/li&gt;&lt;/ul&gt;La mando llamar con el siguiente codigo&lt;br /&gt;&lt;br /&gt;&amp;lt;dtml-let codigo="'%06d-%05d'"&amp;gt;&lt;br /&gt;  &amp;lt;div class="nomostrar" id="codigo_barra"&amp;gt;&amp;lt;dtml-var expr="ean_128((codigo)%(taller, credencial), False)"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;div class="nomostrar" id="taller_credencial"&amp;gt;&amp;lt;dtml-var expr="(codigo)%(taller, credencial)"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/dtml-let&amp;gt;&lt;br /&gt;&lt;br /&gt;El &lt;span style="font-style: italic;"&gt;&amp;lt;dtml-let codigo="'%06d-%05d'"&amp;gt;&lt;/span&gt;permite dar formato: si le mando taller 15 y credencial 148 me regresa 000015-00148 y convierto la cadena a codificacion 128.&lt;br /&gt;&lt;br /&gt;Se debe tener instalado el tipo de letra Code128bWin. Tambien es importante tener en codificacion de salida en &lt;span style="font-style: italic;"&gt;zope.conf&lt;/span&gt;, opcion &lt;span style="font-style: italic;"&gt;default-zpublisher-encoding&lt;/span&gt; como &lt;span style="font-style: italic;"&gt;iso-8859-1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;script ean_128.py [&lt;a href="http://rapidshare.com/files/107758121/ean_128.py"&gt;RS&lt;/a&gt;] [&lt;a href="http://www.megaupload.com/?d=SXL4I05V"&gt;MU&lt;/a&gt;]:&lt;br /&gt;&lt;code&gt;&lt;pre&gt;&lt;br /&gt;validoB=' !"#$%&amp;amp;\'()*+,-./:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'&lt;br /&gt;validoC='0123456789'&lt;br /&gt;startB = 154&lt;br /&gt;startC = 155&lt;br /&gt;cambioC= 149&lt;br /&gt;cambioB= 150&lt;br /&gt;stop   = 156&lt;br /&gt;def convierteA128(s, TipoC=True):&lt;br /&gt;"""Convierte una cadena a su representacion ASCII de codigo de barra"""&lt;br /&gt;lista = formaLista(s, TipoC)&lt;br /&gt;verificador= digito_verificador(lista)&lt;br /&gt;lista.append(verificador)&lt;br /&gt;lista.append(chr(stop))&lt;br /&gt;cadena=""&lt;br /&gt;for c in lista:&lt;br /&gt; cadena=cadena + c&lt;br /&gt;return cadena&lt;br /&gt;&lt;br /&gt;def digito_verificador(lista):&lt;br /&gt;"""Saca el digito verificador de la lista de Codigo de Barra Codificada"""&lt;br /&gt;import string&lt;br /&gt;l2=[]&lt;br /&gt;i=suma=l=0&lt;br /&gt;j=len(lista)&lt;br /&gt;if ord(lista[0])==startB:&lt;br /&gt; suma=startB-50&lt;br /&gt;elif ord(lista[0])==startC:&lt;br /&gt;suma=startC-50&lt;br /&gt;for i in range(1,j):&lt;br /&gt; if len(lista[i])==2:&lt;br /&gt;     l=string.atoi(lista[i])&lt;br /&gt; elif ord(lista[i])==cambioC:&lt;br /&gt;     l=cambioC-50&lt;br /&gt; elif ord(lista[i])==cambioB:&lt;br /&gt;     l=cambioB-50&lt;br /&gt; else:&lt;br /&gt;     l=ord(lista[i])-32&lt;br /&gt; l=l*i&lt;br /&gt; suma=suma+l&lt;br /&gt;i,residuo= divmod(suma,103)&lt;br /&gt;return regresa(residuo)&lt;br /&gt;&lt;br /&gt;def formaLista(s,TipoC):&lt;br /&gt;"""Recorre la cadena para formar una lista con el Codigo de Barra Codificado"""&lt;br /&gt;l=[]&lt;br /&gt;esC=False&lt;br /&gt;cambio=False&lt;br /&gt;c=s[0]&lt;br /&gt;c2=' '&lt;br /&gt;if c in validoB:&lt;br /&gt; l.append(chr(startB))&lt;br /&gt;else:&lt;br /&gt; c=s[1]&lt;br /&gt; if c in validoB or TipoC==False:&lt;br /&gt;     l.append(chr(startB))&lt;br /&gt; else:&lt;br /&gt;     l.append(chr(startC))&lt;br /&gt;     cambio=True&lt;br /&gt;&lt;br /&gt;for c in s:&lt;br /&gt; if (c in validoB or TipoC==False):&lt;br /&gt;     esC=False&lt;br /&gt;     if cambio==True:&lt;br /&gt;         l.append(chr(cambioC))&lt;br /&gt;         cambio=False&lt;br /&gt;     if c2&lt;&gt;' ':&lt;br /&gt;         l.append(c2)&lt;br /&gt;         c2=' '&lt;br /&gt;     l.append(c)&lt;br /&gt; elif (c in validoC):&lt;br /&gt;     if (esC==False):&lt;br /&gt;         c2=c&lt;br /&gt;         esC=True&lt;br /&gt;     else:&lt;br /&gt;         if c2 &lt;&gt; ' ':&lt;br /&gt;             if cambio==False:&lt;br /&gt;                 cambio=True&lt;br /&gt;                 l.append(chr(cambioB))&lt;br /&gt;             num=c2 + c&lt;br /&gt;             c2=' '&lt;br /&gt;             l.append(num)&lt;br /&gt;         else:&lt;br /&gt;             c2=c&lt;br /&gt;&lt;br /&gt;if c2&lt;&gt;' ':&lt;br /&gt; if cambio==True:&lt;br /&gt;     l.append(chr(cambioC))&lt;br /&gt; l.append(c2)&lt;br /&gt;&lt;br /&gt;return l&lt;br /&gt;&lt;br /&gt;def regresa(i):&lt;br /&gt;"""Convierte el digito verificador a su representacion ASCII"""&lt;br /&gt;if i==0:&lt;br /&gt; return chr(128)&lt;br /&gt;if i &gt;= 95:&lt;br /&gt; return chr(i+50)&lt;br /&gt;elif i&gt;0 and i&lt;95:&lt;br /&gt; return chr(i+32)&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/857190874626542521-2793301306163208003?l=amantecayotl.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://amantecayotl.blogspot.com/2008/04/script-de-python-para-generar-un-codigo.html</link><author>yourpadre@gmail.com (YourPadre)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item></channel></rss>