lunes, 28 de diciembre de 2015

Clave autoincremental en Javascript

Debo generar una clave que tenga el formato Año+Mes+ValorAutonumerico. De tal forma que cuando cambie el año el autonumerico se reinicie.

Las claves que se generaran son como estas: 2015011, 2015012, 2016021, etc.


Hice un código de prueba que esta en https://jsfiddle.net/bequick/b6vepLr5/1/light/.

Uso Jquery como se puede ver a simple vista.

Y en la pestaña Result, se pueden hacer pruebas. Ejemplo, si ingresas 201403123 al presionar boton Aprieta ("leve nota humoristica") en la caja resultado muestra el valor que debe retornar. Esto basado en la fecha que se declara en la linea
var Fecha = new Date(2013,3,24);
Si el valor Código Existente esta vacio.

miércoles, 16 de diciembre de 2015

401 - Unauthorized: Access

Publique una aplicacion MVC 4 en IIS, y al consultarla no se ven las hojas de estilo. La ruta existe, los archivos existen. Y el mensaje que obtengo es:

401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the credentials that you supplied.


Solución:

  • Abrir IIS (ejecutar / inetmgr)
  • Ir a Seguridad / Autenticación
  • Botón derecho sobre autenticación anonima. Seleccionar Modificar
  • Seleccionar Identidad del grupo de Aplicaciones


Fuente
http://www.codeproject.com/Questions/418716/Unauthorized-Access-is-denied-due-to-invalid-c

domingo, 11 de octubre de 2015

Argument data type text is invalid for argument 1 of replace function.

La función REPLACE en MS SQL permite reemplazar en un texto una cadena de caracteres dada por otra cadena.
Por lo que pretendo usar esta función para personalizar un texto agregando un valor que obtengo de una tabla x. Al ejecutar una consulta como esta:

declare @nombre VARCHAR(15);
SET @nombre = 'Marcos';
SELECT REPLACE(Cliente, 'Cliente', @nombre) as Msg FROM Mensajes WHERE id=23;

Obtengo el siguiente error:
Argument data type text is invalid for argument 1 of replace function.

Esto funciona
declare @nombre VARCHAR(15);
SET @nombre = 'Marcos';
SELECT REPLACE('Cliente', 'Cliente', @nombre) as Msg

Donde esta el error?
El error esta en que la columna Cliente que paso como parámetro a la función REPLACE es de tipo TEXT en la base de datos, por lo que se debe pasar a VARCHAR.

SELECT REPLACE(CAST(Cliente AS VARCHAR(500), 'Cliente', @nombre) as Msg FROM Mensajes WHERE id=23;

La duda que surge ahora es: Como obtengo el numero de caracteres de un campo TEXT? les adelanto que la función LEN no va a funcionar.
Argument data type text is invalid for argument 1 of len function.

Mas Información:
https://msdn.microsoft.com/es-es/library/ms186862(v=sql.120).aspx

viernes, 24 de julio de 2015

Como violar un autonumerico en MS SQL

Supongamos que tienes una tabla de usuarios cuyo identificador es un autonumerico. Pero te entregan una lista para cargar donde los usuarios tienen un numero como identificador pero no parten del 1 y hay usuarios que no existen por ejemplo (1,2,7,8,9, etc).  Y otra condición es que después de la carga inicial, se debe seguir usando el autonumerico para la asignación de códigos partiendo de n numero.

En esos casos se pueden usar la instrucciones:
SET IDENTITY_INSERT y DBCC CHECKIDENT

SET IDENTITY_INSERT
Permite insertar valores explícitos en la columna identidad de una tabla.

DBCC CHECKIDENT
Comprueba el valor de identidad actual de la tabla especificada, si fuera necesario, lo cambia. También puede utilizar DBCC CHECKIDENT para establecer manualmente un nuevo valor de identidad actual para la columna de identidad.

Sintaxis SET IDENTITY_INSERT
SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }


Donde
  • database_name : nombre de la base de datos
  • schema_name : nombre del esquema
  • table  : nombre de la tabla


Ejemplo de uso
SET IDENTITY_INSERT [dbo].[Tu_tabla] ON
INSERT INTO Tu_tabla (3,...)
SET IDENTITY_INSERT [dbo].[Tu_tabla] OFF

La segunda parte del requerimiento de dejar establecido desde que numero se generaran los autonumerico se puede hacer con la instruccion: DBCC CHECKIDENT

Sintaxis
DBCC CHECKIDENT  (table_name [, { NORESEED | { RESEED [, new_reseed_value]}}])
[ WITH NO_INFOMSGS ]

Donde
  • table_name : nombre de la tabla
  • NORESEED : Especifica que el valor de identidad actual no se debe cambiar.
  • RESEED : Especifica que el valor de identidad actual se debería cambiar.
  • new_reseed_value : Es el nuevo valor que se va a usar como valor de identidad actual de la columna de identidad.\
  • WITH NO_INFOMSGS : Suprime todos los mensajes de información.
Ejemplo de Uso:

Para saber el valor identidad
DBCC CHECKIDENT ('Usuario', NORESEED)

Para poner como valor de identidad de la tabla Usuario el 100
DBCC CHECKIDENT ('Usuario',reseed,100)


Mas Información:
https://msdn.microsoft.com/es-es/library/ms188059%28v=sql.120%29.aspx
https://msdn.microsoft.com/es-es/library/ms176057(v=sql.120).aspx

jueves, 23 de julio de 2015

Keyword not supported: 'server'

Cambie la cadena de conexión de una aplicación MVC4 Entity Framework  ya publicada. Y al ejecutarla me empezó a aparecer este error:

Keyword not supported: 'server'.

La cadena  que pasaba como parámetro estaba bien formada. Y es la que genera el asistente de cadenas de conexión del IIS.


Server=192.168.x.xx;Database=DBNombre;User ID=UrApp;Password=●●●●●●●

Aun así no funcionaba. De modo que volví a la cadena original y cambie solo los parámetros que cambiaban:

metadata=res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl;provider=System.Data.SqlClient;provider connection string="data source=192.168.xxx.xxx;initial catalog=BaseDatos;user id=usuario;password=tupassword;MultipleActiveResultSets=True;App=EntityFramework"

La ultima cadena funciona correctamente.

miércoles, 22 de julio de 2015

ERROR_APPPOOL_VERSION_MISMATCH

Estoy actualizando una aplicación web (MVC4/MS SQL 2012), desde Visual Studio (2012). Y al momento de publicar (botón derecho sobre el proyecto en el explorador de proyectos de VS - Publish). Se cae la operación por este error: ERROR_APPPOOL_VERSION_MISMATCH.

La aplicación funciona con el frameword 4.5 osea el pool framework 4 en IIS me sirve. En VS la aplicación esta configurada con ese framework y no se hasta ahora donde esta el problema.


La primera validación que hago es ver si en el IIS esta configurado con el pool que me sirve.
 
1.Seleccionar aplicacion en IIS
2.En el panel de la derecha Acciones pinchar sobre Configuración Avanzada.
3.En la ventana de Configuración Avanzada  ver si Grupo de Aplicaciones esta configurado correctamente en mi caso espero ASP.NET v4.0 Classic lo cambio y funciona ok.





HTTP Error 404.2 - Not Found


Según Microsoft el error  HTTP Error 404.2 - Not Found se debe ha:

Este problema se produce porque el recurso solicitado de la API de servidor Internet (ISAPI) o el recurso solicitado de Common Gateway Interface (CGI) está restringido en el equipo que está ejecutando IIS 7.0.


Para solucionar este problema se debe ir al IIS (Inicio - Ejecutar -- inetgmr -- seleccionar el servidor -- ir a Seguridad -- doble clic sobre Restricciones de ISAPI y CGI)


Y habilitar los componentes que necesita la aplicación

En mi caso habilite la versión de 64 bits de ASP.NET v4... y funciono perfecto.




No databases are selected to publish

Estoy publicando una aplicación MVC4 con base de datos MS SQL 2012. Uso Visual Studio 2012. Y tengo el siguiente problema (el cual dejare registrado como soluciono en este post). La opción Publish de VS publica la aplicación pero no ejecuta los scripts para crear la base de datos, que es lo que espero de esta operación. El mensaje del dialogo Publish es:

No databases are selected to publish


Si bien tenia configurado la opción Package/Publish SQL (botón derecho sobre el proyecto y seleccionar Properties), fue necesario crear nuevamente un perfil  en la opción Publish de VS (Botón derecho sobre el proyecto y seleccionar Publish) y volver a ingresar estos para que apareciera seleccionada una base de datos en el dialogo.




Si bien es cierto aparece una base seleccionada, persiste el problema de que si vuelvo a ejecutar la opción Publish se pierden la base de datos. Por lo que obliga a borrar el Perfil e ingresar los datos. Cuando tenga la solución a este ultimo punto actualizare este post.

martes, 21 de julio de 2015

Web deployment task failed

Necesito publicar una aplicación Web hecha en .Net con MVC 4. Pero no quiero ir al servidor y copiar los archivos y configurar, sino hacerlo todo desde mi equipo de desarrollo. Al tratar de hacer lo anterior (botón derecho sobre el proyecto /y Publicar en Visual Studio) me aparece el siguiente error:
 Web deployment task failed
Entonces voy al servidor remoto a revisar si existe y esta corriendo el siguiente servicio:

Web Deployment Agent Service

No existe. La pregunta es: Como lo instalo?
Descargue un instalador desde la siguiente dirección:
https://technet.microsoft.com/en-us/library/dd569059(v=ws.10).aspx
Al instalarlo se debe elegir la opcion "Completa", de lo contrario no instala el servicio que es requerido.

Intento nuevamente publicar la aplicacion y me aparece el siguiente mensaje:

Error 1 Web deployment task failed. (Connected to '192.168.1.77' using the Web Deployment Agent Service, but could not authorize. Make sure you are an administrator on '192.168.1.xx'. Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_USER_NOT_ADMIN.)

Problemas de permisos.
La solución  es configurar un usuario con permisos de administrator de la maquina remota e indicar el dominio (dominio/usuario) en el dialogo  Publish \ Connection de Visual Studio.


Después haré un tutorial como publicar desde Visual Studio.




Administracion remota de IIS

Quiero administrar un servidor IIS 7 desde mi equipo (Windows 7 con IIS 7). Pero al ejecutar IIS no me aparece la opción para conectarme remotamente a otro equipo. Sin embargo , en el equipo remoto si tengo esa opción.

Equipo Remoto
Equipo Local
Busque en las opciones de instalación del IIS y no encontré algún punto acerca de conexiones remotas.

Pero encontré el siguiente link para descargar una versión que permite la conexión remota:
http://www.microsoft.com/en-us/download/details.aspx?id=41177

Y al instalarlo ya me aparece la opción de conectarme a un servidor IIS remoto.
Pero eso no es todo.
En el servidor remoto se debe autorizar las conexiones. Esto se hace en el IIS pinchando en Management Services:
Luego habilitar conexiones remotas (Enable Remote Connections). Y presionar el link de la derecha que dice "Apply". E iniciar el servicio nuevamente "presionar Start".
Luego desde el IIS cliente en el panel de conexiones, seleccionar opción conectarse a un servidor. Y luego indicar las credenciales.
Finalmente la nueva conexión remota aparecerá a continuación de la local.



domingo, 31 de mayo de 2015

Test Java - Pregunta 6 (Modificadores de Acceso)






Dado el siguiente código, y no haciendo otros cambios, cual modificador de acceso (public , protected o private) puede legalmente ser puesto antes de myMethod() en la linea 3? Si la linea 3 se deja tal cual, cual palabra puede ser puesta antes de myMethod en la linea 8?



  • A. private o nada (Ejem: dejar tal cual) en la linea 3. Nada (dejar tal cual) o protected o public en la linea 8.
  • B. nada o protected en la linea 3. private o nada (dejar tal cual) en la linea 8.
  • C. nada (dejarlo tal cual) o protected o public en la linea 3. private o nada (dejarlo tal cual) en la linea 8.
  • D. Ninguno de los anteriores.

Respuesta : A




Fuente
http://www.gocertify.com/quizzes/java/scjp1.html

martes, 26 de mayo de 2015

Test Java - Pregunta 5 (Referencia)






Considere el siguiente código, ¿Cual variable debe ser reverenciada correctamente en la linea 12?



  • a.
  • b.
  • c.
  • d.
  • e.

Respuesta : e
Lo que corresponde referenciar en la linea 12 es la variable e.





Fuente
http://www.gocertify.com/quizzes/java/scjp1.html

Test Java - Pregunta 4 (Operador Ternario)






 ¿Qué resulta de compilar y ejecutar el siguiente código?


  • A. prints: Value is - 7
  • B. prints: Value is - 5
  • C. Compilation error
  • D. Ninguna de las anteriores

Respuesta : D
El resultado es "Value is - 9.0".
El signo de interrogación en Java se conoce como operador ternario y es de tipo condicional como el if. Por lo que en este caso al ser  a = 5 ejecuta lo que seria la sentencia después de los dos puntos que vendrían a ser como un else.






Fuente
http://www.gocertify.com/quizzes/java/scjp1.html

Test Java - Pregunta 3






Dado el siguiente código ¿Cual es la salida?


  • A. 15 0 20
  • B. 15 0 15
  • C. 20 0 20
  • D. 0 15 20

Respuesta : A
El método second imprime primero el valor por defecto de v.i (15) asignado en la inicialización de clase Value  concatenado a 0. Luego imprime el método first el valor de v.i asignado en el método second 20.



Fuente
http://www.gocertify.com/quizzes/java/scjp1.html

Test Java - Pregunta 2







En las siguientes lineas de código, A y D compilan sin ningún error. Verdadero o Falso?
  • A: StringBuffer sb1 = "abcd";
  • B: Boolean b = new Boolean("abcd");
  • C: byte b = 255;
  • D: int x = 0x1234;
  • E: float fl = 1.2;

Respuesta : Falso
A no compila, ya que la cadena "abcd" no puede ser convertida a StringBuffer  (incompatible types: String cannot be converted to StringBuffer).
Debe ser declarada de la siguiente forma:
StringBuffer sb1 = new StringBuffer("abcd");
D compila correctamente.



Fuente
http://www.gocertify.com/quizzes/java/scjp1.html

Test Java - Pregunta 1







¿Que ocurre cuando intentas compilar y ejecutar el siguiente código?

  • A. Compilation error, attempting to perform binary comparison on logical data type.
  • B. Compilation and output of "We are equal 10".
  • C. Compilation and output of "Not equal! 20".
  • D. Compilation and output of "Not equal! 10".

Respuesta : D
El operador y (ampersand ampersand) obliga a que ambas condiciones sean verdaderas, cosa que no ocurre con b1 == true. La variable Output es igual a 20.



Fuente
http://www.gocertify.com/quizzes/java/scjp1.html

miércoles, 11 de febrero de 2015

Grabación de Acciones de usuarios en Windows

Windows 7 tiene algunas herramientas poco conocidas que son bastante utiles para ciertas actividades. Una de esas herramientas es PSR, que permite grabar las acciones que realiza el usuario en el PC. Esto sirve para quien prueba sistemas o quiera documentar la forma de realizar alguna tarea en Windows.

Para ejecutar este programa se debe escribir psr en el dialogo de busqueda de Windows.


Luego aparecera como resultado de la busqueda. Desde donde se puede hacer clic para ejecutar el programa.

La interfaz es muy sencilla. Al presionar el boton Iniciar Grabación comenzara a registrar todas la interacción que tenga con su computador.


En la esquina superior derecha se encuentra una flecha la cual despliega un menu que permite acceder a opciones de configuración de esta herramienta.
Por ejemplo, se puede configurar el lugar donde se almacenara el archivo resultante (zip que contiene un mhtml que se puede ver en el navegador).
Cantidad de imagenes a capturar.