jueves, 30 de junio de 2016

Habilitar / deshabilitar caracteristicas de servidor por comandos en Windows Server 2012 r2

La característica que permite realizar esta labor se llama DISM (Deployment Image Servicing and Management).

En primer lugar es importante establecer que características están disponibles.

Dism /online /Get-Features >lista.txt

El comando anterior obtiene el listado y lo envía a un archivo de texto para comodidad del usuario.

Estos son algunos comandos presentes en el archivo:
Nombre de caracter¡stica : IIS-WebServer
Estado : Habilitado
Nombre de caracter¡stica : IIS-CommonHttpFeatures
Estado : Habilitado
Nombre de caracter¡stica : IIS-Security
Estado : Habilitado
Nombre de caracter¡stica : IIS-RequestFiltering
Estado : Habilitado
Nombre de caracter¡stica : IIS-StaticContent
Estado : Habilitado
Nombre de caracter¡stica : IIS-DefaultDocument
Estado : Habilitado
Nombre de caracter¡stica : IIS-DirectoryBrowsing
Estado : Habilitado

Si se quiere habilitar una característica se debe usar la siguiente sintaxis:

dism /online /enable-feature /featurename:IIS-ASPNET45

y Para deshabilitar
dism /online /disable-feature /featurename:IIS-ASPNET45

La salida es algo similar a lo siguiente:
C:\Windows\Microsoft.NET\Framework\v4.0.30319>dism /online /enable-feature /feat
urename:IIS-ApplicationDevelopment
Herramienta Administración y mantenimiento de imágenes de implementación
Versión: 6.3.9600.17031
Versión de imagen: 6.3.9600.17031
Habilitando características
[===========================99.8%========================= ]
La operación se completó correctamente.
Reinicie Windows para completar esta operación.
¿Desea reiniciar el equipo ahora? (Y/N) N
Dado que varias de estas características requieren reinicio, es importante tener en cuenta las consecuencias de estos comandos que debería ejecutar solamente el administrador del servidor

jueves, 23 de junio de 2016

actualizar procedimiento almacenado en Entity framework

Recientemente me ocurrió que en VS2013 con EF5 por mas que insisti en multiples ocasiones actualizar un procedimiento almacenado al cual le agregué nuevas columnas, no parecía actualizarse el complextype. 

La solución:

entrar al explorador de modelos del edmx.

1. entrar a complextypes(tipos complejos): borrar la referencia al procedimiento.
2. entrar a importaciones de funciones:  borrar la referencia al procedimiento.
3. entrar a funciones / procedimientos almacenados:  borrar la referencia al procedimiento.

Y actualizar el modelo agregando nuevamente el procemiento almacenado.

Si no se borra en los 3 pasos mencionados, es posible que se cree un nuevo complextype o mas con el mismo nombre pero con "_1" , "_2", "_n"

miércoles, 22 de junio de 2016

crear múltiples instancias del mismo servicio windows.

Es posible tener muchas instancias del mismo servicio en Windows. En primer lugar hay que tener en cuenta que si hay recursos que puedan crear conflictos, como por ejemplo servicios wcf hosteados desde el servicio, estos deben tener puertos diferentes por cada instancia.

Se pueden tener varias instancias en varias carpetas (no el mismo ejecutable, sino cada uno por cada carpeta).

Para instalar cada instancia se debe ejecutar una interfaz de comandos en modo administrador:

La sintaxis es la siguiente: 
sc create "nombreServicio" binPath="ruta Ejecutable" DisplayName="nombreAMostrar" start=auto


Una vez ejecutada la sentencia se puede revisar el control de servicios para buscar los servicios instalados por el nombreServicio dado

lunes, 14 de marzo de 2016

convertir cadena a Capital (primera letra en mayuscula)

hay que usar System.Globalization:

string miCadena = "esta es una cadena" ;
Console.WriteLine(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(miCadena)) ;


Output:
Esta Es Una Cadena

miércoles, 9 de marzo de 2016

Adicionar minutos a fecha en C#

Se pueden agregar o adicionar minutos usando TimeSpan
 string DelayVideo = "2"; // minutos a adicionar o restar

DateTime myTime = DateTime.Now;
myTime = inicio.Add(new TimeSpan(0, -int.Parse(DelayVideo), 0));

en este caso una de las sobrecargas de TimeSpan espera hora,minutos y segundos.  Le colocamos signo negativo para que reste la cantidad de minutos definida en la variable DelayVideo.

jueves, 11 de febrero de 2016

Como obtener los metodos de una dll no administrada para hacer un wrapper en C#

Comprobado en VS2013

gracias a http://www.codeproject.com/Questions/526971/Reflectionplusforplusunmanagedpluscode

1. Se debe abrir una interfaz de comandos de VS2013. Ir a inicio / todos los programas / Vs2013 / visual studio tolos
Con Click derecho abrir una de las ventanas de comandos que aparecen.
 
2. ubicar la ruta donde se encuentra dll por comandos.
3. ejecutar el comando:
link /dump /exports mi.dll >  "miarchivo.txt".
 
4. Al revisar el archivo aparecen los métodos presentes en la dll no administrada.
 
Luego para hacer el wrapper:
crear una clase dentro del proyecto.
y empezar a crear cada método en c# correspondiente a los métodos hallados en la librería:
 
[DllImport(" mi.dll ", EntryPoint = "miMetodoenmidll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]

        public static extern Int32 mimetodoenC#(losparametros);
 
y Listo...
básicamente el wrapper crea un alias para el método en la dll no administrada (probablemente creada en C++ originalmente o en otro lenguaje)
 
 
 

martes, 1 de diciembre de 2015

Como encontrar qué proceso esta usando un puerto en windows

La herramienta mas fácil puede ser el monitor de recursos de Windows:

Tecla de Windows + R ( escribir resmon) y ejecutar

 
En la pestaña de red, aparecen todos los procesos en uso. En la ventana de abajo aparece una columna con los puertos. Al hacer click en el nombre de la columna, se puede reordenar por puerto.  Si se quiere mas información de procesos, se puede buscar por el numero usando el task manager de Windows (click derecho sobre la barra de herramientas de Windows).

lunes, 30 de noviembre de 2015

agregar proxy corporativo en refencia a webservice

A veces el desarrollador se encuentra dentro del ambiente de una empresa y necesita referenciar un webservice externo.  En este escenario, a menudo se presenta error de autenticación por el proxy corporativo.  En framework 4.0 se deben agregar unas líneas dentro de los nodos configuration del App.config:
 <defaultProxy enabled="true" useDefaultCredentials="false">
    <proxy proxyaddress="ip:port"/>
  </defaultProxy>

miércoles, 25 de noviembre de 2015

instalacion de servicios en windows c#

preliminares:
*  se debe usar la herramienta installutil.exe presente en las carpetas de framework de Windows.
*  el servicio que se va a instalar debe corresponder en framework con el del installutil (compatibilidad de framework)
*  si se va a instalar con un usuario especifico y pertenece a un dominio, este debe colocarse en las credenciales:  dominio\usuario

ej por interfaz de comandos (tecla de Windows + R:  digitar cmd):
%WinDir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe "ruta\servicio.exe"
al ejecutar esta instrucción es posible que aparezca un dialogo que pida las credenciales (usuario y contraseña)

Para desinstalar
%WinDir%\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe /u"ruta\servicio.exe"



jueves, 12 de noviembre de 2015

ejecutar programas de linea de comandos desde aplicacion C#

 string sourceName = "archivoorigen.cosa";
 string destName = "archivodest.cosa";
 string path="larutadelarchivo";
 string comando = string.Format("-i {0} -vcodec copy -acodec copy {1}", sourceName, destName);
 System.Diagnostics.Process process = new System.Diagnostics.Process();
 System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
 startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
 startInfo.FileName = "ffmpeg.exe";
 startInfo.WorkingDirectory = path;
 startInfo.CreateNoWindow = true;
 startInfo.Arguments = comando;
 process.StartInfo = startInfo;
 process.Start();

en este ejemplo se muestra el uso del programa ffmpeg que funciona por línea de comandos como se convierte un archivo mkv en h264. 
primero se definen las variables de origen y destino, luego se crea el comando que va a enlazarse con la propiedad argumentos del objeto instanciado a partir de la clase processstartinfo y junto con las otras propiedades se hace la ejecución.
Es posible que haya que adicionar instrucciones como (en caso de que aparezcan instancias no deseadas del programa en administrador de tareas):
process.WaitForExit();
process.Close();




martes, 11 de agosto de 2015

Editor Visual XML Free

Este es un muy buen editor bastante practico de Microsoft para archivos XML.
http://www.microsoft.com/en-us/download/confirmation.aspx?id=7973

Permite crear casi todo tipo de elementos de XML usando los menus contextuales del mouse.

viernes, 12 de junio de 2015

cambiar ip de tarjeta de red por comandos

Para cambiar la ip de una interfaz de red en Windows:

Asumiendo que la interfaz se llama "Conexión de área local"


Abrir una interfaz de comandos (preferiblemente en modo administrador)

 
 


Para estar seguros de las interfaces del equipo se puede ejecutar el comando:
Netsh interface ip show config
Con esto se obtienen los nombres de interfaces y este dato se puede seleccionar directamente desde la línea de comandos haciendo click derecho con la opción marcar. Se copia dando enter y se pega haciendo click derecho en el mouse.

netsh interface ip set address "Conexión de área local" static 192.168.0.10 255.255.255.0 192.168.0.1 1
 
 
Si se quiere volver a dinámica solo hay que cambiar por dhcp
netsh interface ip set address "Conexión de área local" dhcp
 

martes, 14 de abril de 2015

Insertar valores explícitos en tablas con columna identidad

SET IDENTITY_INSERT tablename ON

insert into TableName(columns)
select( columns) from anotherTable

o

insert into TableName(columns)
values (explicitvalues)


SET IDENTITY_INSERT tablename OFF


Es importante referenciar las columnas tanto en el insert como en el select, porque de lo contrario pueden aparecer errores, como por ejemplo que no esta habilitada la inserción explicita

miércoles, 1 de abril de 2015

herramienta de acercamiento de pantalla en windows

Gracias a Jeremy Foster de MVA (Microsoft virtual academy) aquí esta la referencia de la herramienta Zoomit que permite hacer zoom en vivo con la opción de señalar objetos en pantalla:

https://technet.microsoft.com/en-us/sysinternals/bb897434.aspx

con control + 4 hace acercamientos
control + 4 otra vez,  aleja:

 



control 1 permite hacer dibujo libre:

teniendo oprimido control, permite hacer cuadros:

Para ir a opciones del programa, ir a la barra de herramientas a la derecha:
Y luego de hacer click derecho sobre el icono de zoomit, seleccionar opciones:



miércoles, 25 de marzo de 2015

capturar nulos en columnas de sqldatareader

se debe usar el método IsDBNull del reader:

reader.IsDBNull(5? 0 : reader.GetInt64(5),
//aquí adicionalmente se usa el operador ternario: condición ? valor verdadero: valor falso
//reader.IsDbNull(int posición o string nombre de columna)

Agregar Fondos personalizados a llamadas de teams

1. Abrir una ventana de explorador 2. En la barra de direccion digitar     %appdata% y pulsar enter 3. Abrir la carpeta microsoft...