viernes, 28 de octubre de 2011

Traducir un PDF

Podemos hacerlo con google translate, pero seria pesado el copy/paste.

Nos vamos a esta pagina toolKit, que tambien es un servicio de Google

Esta no permitira traducir archivos PDF, por lo que primero lo convertire a .DOC[Convertir PDF a Word]

Una vez convertido, en la pagina del toolkit seleccionamos el archivo y los idiomas que utilizaremos y pulsamos sobre el boton 'subir para traducir'.


Hay archivos que me los traduce de maravilla pero hay otros que ... pero no deja de ser un servicio gratuito, osea que quejas ninguna!


Thanks!!

Fallos más comunes en gestion de proyectos

 Trabajar con intermediarios es como pedirle a Chuck Norris que vaya al supermercado a comprar una docena de huevos

Este es el error más común y más grave de todos los que conozco. Cuando se trabaja en un proyecto grande, con suficiente documentación, siguiendo una metodología de calidad, este error tiene un impacto mínimo, pero en proyectos pequeños, el impacto es enorme.
El intermediario, en lugar de contarnos lo que quería el cliente, nos contaba su solución a lo que el cliente quería, que por supuesto, no tenía nada que ver.

Convergencia excesivamente prematura: Esto lo terminamos el viernes….
Cuando un proyecto es muy grande, o existe una gran presión sobre su fecha de finalización, suele aparecer una convergencia del proyecto prematura, hay una sensación en el aire de que el proyecto está acabado, cuando realmente está a un 80%.
Esto suele ocurrir en proyectos donde no existe una especificación del sistema, o donde se dejan ciertas cosas para el final….
Cuando el equipo da por acabado el proyecto, hay gabinete de crisis, y se encuentra con un desarrollo que se alarga un 20%, pero el problema, es que el equipo está desilusionado, que no hay planificación ni detalle de lo que queda, con lo cual, este 20% se puede convertir en un 40% en muchos casos.

Héroes y Villanos
En todas las empresas de tamaño medio/grande hay un héroe, una persona capaz de hacer sola el proyecto entero, pero que sin embargo, en medio del proyecto se entretiene, con una librería nueva de Jquery que es capaz de hacer que el botón de login cante una canción de Lady Gaga.
Los héroes son muy importantes pero hay que atarlos cortitos, separarlos del proyecto en muchos casos, y encargarles tareas extremadamente complicadas, pero acotadas.
Un héroe es capaz de acabar el solito con toda la planificación de un proyecto.
Pero en otras ocasiones, un héroe puede hacer el trabajo de 10 personas, normalmente, cuando son proyectos o herramientas internas, es ahí, donde deben estar los héroes.
Por otro lado tenemos lo villanos, esas personas, que minan la moral de sus compañeros, que hacen un código que aparentemente funciona, pero que después es un coladero, un villano, se empeña en poner el botón aceptar en el lado contrario que el resto del equipo de trabajo, por que sí, por que el tiene razón y el resto está equivocado.
Al héroe, hay que cuidarlo y aislarlo, y al villano, mandarlo a la competencia….


B3 o la teoría de lo bueno, bonito y barato…
La realidad es que los clientes lo quieren todo, a precio de nada, y por mucho que lo intentes, no pueden entender por ejemplo, que se tarde más tiempo en montar una tienda online, que en construir una casa.
Es una realidad, en la mente de una persona no cabe ese concepto, no se puede abstraer al coste de un desarrollo

El Santo Grial
No existe el Santo Grial, la incorporación de herramientas novedosas, se debe hacer antes del proyecto o en un prototipo a parte, nunca incorporarlas en medio del proyecto.

 Fallos comunes en proyectos de desarrollo
PDF
Me esta encantando el blog de [senior manager]

El usuario necesite saber en que esta invirtiendo tiempo y dinero, y los reportes son la mejor manera de mostrarlo. Como reflexión inicial te dejo estas dos frases…
- Una estrategia no sirve para nada si no se puede medir.
- No hacemos nada estableciendo objetivos, si luego no los monitorizamos.
Existen cientos de reportes y plantillas de seguimiento que pueden confeccionarse a partir de los KPI que se hayan establecido al comienzo, pero todos deben cumplir con los siguientes seis principios, basados en los archiconocidos: “Qué, quién, cuándo, cómo, dónde y por qué”. Te los detallo a continuación:

1. Qué información debe reflejarse:
Los datos deben poseer un balance entre lo cuantitativo y lo cualitativo, en una proporción coherente con el tamaño de la empresa, con las redes utilizadas y con el número de profesionales involucrados; pero todo enfocado hacia las metas y objetivos.
Han de reflejar los datos numéricos que arroja la implementación de la estrategia, ordenados por fecha y por KPI, de forma que puedan sumarse o restarse (según el caso), pero siempre dejando un registro de la evolución.
Dependiendo de la estrategia del modelo de negocio y del tipo de marca, es conveniente incluir también datos sobre la competencia.

2. A quién deben reportarse:
Sin importar el tipo la estrategia o la complejidad organizativa de la empresa, los reportes han de ser elaborados en función del cliente; es decir, con el tono, el vocabulario, la semántica, la sintaxis y la redacción enfocados en el entendimiento total de la información.
Por lo general se designa a la persona que los ha de recibir por parte de la empresa cliente, siendo aplicable enviar una copia al responsable de la estrategia.

3. Cuándo se hacen los registros y cuándo se entregan:
Han de diseñarse plantillas de registro y seguimiento diario, sobre todo para poder tener el pulso del “sentiment” (positivo, negativo y neutro). No obstante, los reportes de contenido y/o información sensible o crítica tendrán que entregarse de forma semanal.
Los reportes mensuales y trimestrales pueden ser un resumen de los semanales, incluyendo los paralelos de la información representativa, más no crucial, para la toma de decisiones.

4. Cómo reportar:
Deben ser reportes sencillos en su estructura, pero potentes en la información que muestran, siempre enfocados en los resultados, así como en los aspectos más determinantes.
De nada sirve saber que han bajado los seguidores en twitter, si no hay una respuesta que me indique las posibles causas; es decir, no es “reportar por reportar”, hace falta complementarlos con análisis y comentarios sobre los resultados, así como con posibles propuestas de desviaciones y correcciones.

5. Dónde han de entregarse:
Los reportes semanales, mensuales y otros, pueden “enmarcarse” con alguna gráfica y “acompañarse” de comentarios para luego ser presentados en persona, o bien ser colgados para su revisión y análisis en los espacios en donde más visibles puedan estar; esto incluye tanto a aplicaciones virtuales, como a imprimirlo y colgarlo en el tablón de la pared de siempre.

6. Por qué necesitamos reportes:
Estamos en una evolución constante en la que marcamos un camino para llegar a los objetivos, un camino lleno de baches y “peligros” (literalmente), y en el que necesitamos una guía para poder determinar qué funciona y qué no.
 Es por eso que necesitamos saber qué sucede ahora mismo, justo cuando las cosas ocurren, y no la semana que viene. El valor de las datos es incalculable, y medir la estrategia para saber los resultados de lo que estamos haciendo, al final lo es todo.

Reflexión:
Los reportes diseñados apropiadamente son cómo una especie de mapa que nos permite avanzar en nuestro plan de social media.

Nos permiten aprender un montón de aspectos relacionados al presente y al futuro de la estrategia, por lo que su diseño ha de contar con gráficos, análisis y sobre todo componentes anecdóticos relevantes para seguir evolucionando en la táctica establecida.

Formas de captar talentos

En este mundo tan tecnológicamente dinámico, en donde las transformaciones están a la orden del día, el denominado “talento estructural” (el de siempre) ya no funciona tan bien como el “talento conyuntural”. Este último se adapta fácilmente a los cambios, es impulsor y creativo, posee genialidad y representa fielmente a la persona vistiéndola de su propia identidad.

El talento coyuntural es casi infinito; si lo mantenemos vivo no se agota y no se puede igualar al “conocimiento”; de hecho, va mucho más allá, pues no se crea, sino que se genera. Es precisamente ese el gran reto de los departamentos de RR.HH. obsoletos (con perdón), generar talento coyuntural.

Esta es justamente la parte más complicada de lograr cuando hablamos de captar personas con talento, o incluso cuando hay que desprenderse de él, pues muchos siguen pensando que los cuestionarios y los test psicotécnicos son imprescindibles, que lo que se diga en la entrevista es lo más importante, que las horas extra ya son una constante asumible y que cualquier idea tuya le pertenece a la empresa.

Desde luego son malos tiempos para encontrar, y sobre todo para retener, el talento. Pero lo que sí está claro es que sin él, será difícil sobrevivir a la situación actual… La mala noticia es que los profesionales de RR.HH. (en su mayoría) siguen pasivos y adoptando posturas sumamente defensivas y más que alineadas con las obsoletas directrices de siempre. Dicho de otro modo, malos tiempos para proponer cambios.

En conclusión, la transformación viene desde adentro y desde “arriba”, paso previo para la transformación externa.

La forma de captar talento no cambia, si no cambias tú previamente

Elementos de redacción para Google+

Google Plus entró con fuerza para competir con el resto de redes sociales existentes, sobre todo con las más grandes; y aunque su estructura parece simple (que lo es), seguimos descubriendo formas con las que podemos optimizar su uso.

Negritas: Escribe entre dos asteriscos (*)

Cursiva: Escribe entre dos guiones bajos (_)

Tachado: Escribe entre dos guiones (-)

“Mensaje privado”: Postea un mensaje en el TimeLine, pero compártelo solo con la persona a la que quieres escribirle, verifica que no hayan círculos en la lista de personas que pueden leer. No olvides desactivar “Share” o “Compartir”

Para mencionar a alguien en un post o conversación: escribe el signo más (+) o arroba (@) seguido del nombre de la persona.

El Tao de la Programación

Este libro, escrito en el año 1987 por Geoffrey James, recoge, en un humorístico tono de misticismo oriental, distintas historias y parábolas con geniales mensajes de fondo sobre calidad en la programación, gestión de proyectos y otros temas que siguen siendo válidos veinticinco años después.

Como probablemente habrá más lectores que no lo conozcan, me ha parecido interesante reproducirlo aquí traducido en su totalidad, por supuesto contando previamente con el permiso expreso del Sr. James.

El Tao de la programación

miércoles, 19 de octubre de 2011

Interfaz Android 4.0

Video promocional de las características del nueva actualización de Android

Vídeo de la presentación de Android por parte de Google

AYUDA: xataka android
Mas información de la interfaz: Platform Android

Visual Studio 11 Developer Preview Training Kit

El contenido es muy completo y se refiere a muchas áreas del Visual Studio 11. Entre los temas que nos vamos a encontrar tenemos,
  • Visual Studio Development Environment
  • Un vistazo al entorno de desarrollo en Visual Studio 11 y a sus lenguajes
  • Programación asíncrona en .NET 4.5 con C# y Visual Basic
  • Novedades en ASP.NET y en Visual Studio 11 Developer Preview
  • Novedades en ASP.NET Web Forms 4.5
  • Construcción de aplicaciones completamente REST con WCF Web API
  • Gestión del ciclo de vida de las aplicaciones
  • Construyendo el software correcto: generación de storyboards y recolección del feedback de los clientes con Visual Studio 11
  • Gestión de proyectos Agile en Team Foundation Server 11
  • Desarrolladores más productivos con Team Foundation Server 11
  • Diagnostico de incidencias en producción con IntelliTrace y Visual Studio 11
  • Pruebas de exploración y otras mejoras en Microsoft Test Manager 11
  • Pruebas unitarias con Visual Studio 11: MSTest, NUnit, xUnit.net y Code Clone
  • Aplicaciones Windows Metro Style

Descarga | Visual Studio 11 Developer Preview Training Kit
Vía | MSDN Blogs

Ayuda | Genbeta.
Descarga Windows8 : DESCARGA

martes, 18 de octubre de 2011

Cuaderno CSS

Lo comentaba mi jefe en Doblemente, y la verdad es que la imagen es muy clarificadora.

PDF css

Thanks!!

sábado, 8 de octubre de 2011

ZapaCabra

¿Esto es risa o una putada?

Borrar un directorio en VB

Función simplita por si alguien la necesitara:


 Public Sub BorrarDirectorio(ByVal pathDestino As String)

        Try
            ' Primero recogemos la colección de archivos y carpetas
            Dim files() As String = System.IO.Directory.GetFiles(pathDestino)
            Dim dirs() As String = System.IO.Directory.GetDirectories(pathDestino)


            ' Si posee ficheros, los eliminamos
            For Each fil As String In files
                Dim dirInfo As New IO.DirectoryInfo(fil)
                System.IO.File.Delete(dirInfo.FullName)
            Next

            ' Si posee carpetas nos introducimos en ellas de manera recursiva
            For Each dir As String In dirs
                Dim dirInfo As New IO.DirectoryInfo(dir)
                BorrarDirectorio(dirInfo.FullName)
            Next

            ' Segun vuelva de la recursividad, si poseen carpetas, las eliminamos
            For Each dir As String In dirs
                Dim dirInfo As New IO.DirectoryInfo(dir)
                System.IO.Directory.Delete(dirInfo.FullName)
            Next
        Catch ex As Exception
            MessageBox.Show("Error borrando directorio (" + pathDestino + "), tiene permisos?")
        End Try
    End Sub

Modificar firma de una publicación de ClickOnce

Buenos dias
Lo que explicare a continuación dependerá de saber como crear una publicación con clickOnce de nuestro proyecto con VisualStudio.

Para refirmar la publicación necesitaremos de esta aplicación (mage), pudiendo tanto utilizar una interfaz gráfica como trabajar bajo lineas de comandos de cmd o si lo necesitamos, crearnos un proceso en nuestro programa.

Que posibilidades nos puede ofrecer esta aplicación, pues posiblemente muchas, pero que haya trabajado una, que es generando una publicación podemos cambiarle el url de actualización.

Así pues, con clickOnce podemos decirle a nuestro programa que, por ejemplo, cuando arranque compruebe si existe una nueva actualización.
De tal forma, que si necesitamos diversificar nuestro programa por diversas empresas, posiblemente nos convenga que cada empresa pueda actualizarse a un repositorio distinto del resto, para mantener versiones distintas o simplemente para ahorrar coste, porque este repositorio podría estar en su propia red, evitando que cada maquina tenga que tirar de Internet para actualizarse.


Son muchas las propiedades o comandos con los que trabaja mage, pero hablare de las que mas conozco:
  • –Update Como dije, lo que haremos sera refirmar una publicación
  • –Sign Utiliza un certificado para firmar un archivo
  • –AppManifest Path del manifest o supondrá que su manifiesto de aplicación reside en el mismo directorio que el manifiesto de implementación dentro de un subdirectorio
  • –CertFile Path del directorio
  • –Password Ademas, necesitaremos también de la contraseña del certificado
A continuación pondré una función muy simple, que os lo hará comprender mas fácilmente

 Public Function FirmarPublicacion(ByVal path_programa As String, ByVal nombrePrograma As String, ByVal urlAct As String, ByVal manifest As String, ByVal cetificado As String, ByVal passCertificado As String, ByVal mage_path As String) As Boolean
        Dim resul As Boolean = True
        Try      
            Dim comando1 As String = " -Update """ + path_programa + "\" + nombrePrograma + ".application""" + " -ProviderUrl """ + urlAct + """"
            Dim comando2 As String = " -Update """ + path_programa + "\" + nombrePrograma + ".application""" + " -Publisher " + """Panel de Control (PC)""" + " -AppManifest """ + manifest + """"
            Dim comando3 As String = " -Sign """ + path_programa + "\" + nombrePrograma + ".application""" + " -CertFile """ + cetificado + """ -Password " + passCertificado

            ' Comprobamos si existe manifest los ficheros
            If Not File.Exists(path_programa + "\" + nombrePrograma + ".application") Then
                Throw New Exception("Archivo application erroneo: (" + path_programa + "\" + nombrePrograma + ".application" + ")")
            End If
            If Not File.Exists(manifest) Then
                Throw New Exception("Archivo manifest erroneo: (" + manifest + ")")
            End If
            If Not File.Exists(cetificado) Then
                Throw New Exception("Archivo certificado erroneo: (" + cetificado + ")")
            End If
            If Not File.Exists(mage_path) Then
                Throw New Exception("Archivo mage erroneo: (" + mage_path + ")")
            End If
            If Not ValidarURL(urlAct) Then
                Throw New Exception("URL ACTUALIZACIÓN mal introducida: (" + urlAct + ")")
            End If
            If Not urlAct.Contains(nombrePrograma + ".application") Then
                Throw New Exception("URL ACTUALIZACIÓN no esta asociada con archivo .application: (" + urlAct + ")")
            End If

            Dim returnS1 As String = FirmaPublicacion2(mage_path, comando1)
            Dim returnS2 As String = FirmaPublicacion2(mage_path, comando2)
            Dim returnS3 As String = FirmaPublicacion2(mage_path, comando3)

            Dim firma As Boolean = True

            If not returnS1.Contains("successfully updated") Or not returnS1.Contains("successfully signed") Then
                
            Throw New Exception(returnS1)
            End If

            If not returnS2.Contains("successfully updated") Or not returnS2.Contains("successfully signed") Then
            Throw New Exception(
returnS2)
            End If

            If not returnS3.Contains("successfully updated") Or not returnS3.Contains("successfully signed") Then
            Throw New Exception(
returnS3)
            End If

        Catch ex As Exception
            resul = False
        End Try
        Return resul
    End Function

Espero que os ayude la función, ademas no se si hasta cierto punto es mejor depender de un booleano que para la ejecución con excepciones, hay ya que cada uno la edite como quiera.

Thanks!!

lunes, 3 de octubre de 2011

Modificar un archivo de texto

Es un ejercicio simple de programación que he tenido que implementar hoy en el trabajo.
Si hubiera tenido tiempo me hubiera gustado poder haberlo hecho sin tener que recurrir a utilizar memoria para leer todo el archivo, pero no pude ni plantearlo.
StringBuilder newFile = new StringBuilder();
string temp = "";
string[] archivo = File.ReadAllLines(@"C:\................txt");
foreach (string linea in archivo)
{
    if (linea .Contains("string"))
    {
        temp = linea .Replace("string", "String");
        newFile.Append(temp + "\r\n");
        continue;
    }
    newFile.Append(line + "\r\n");
}
File.WriteAllText(@"C:\......................txt", newFile.ToString());
Thanks!!
 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Online Project management