Guardar y recuperar la fecha en objective-c con Xcode

Programando para nuestro dispositivo Apple, iphone por ejemplo, con objective-c y con e el Xcode, es posible que queramos almacenar la fecha de forma persistente, es decir, que no se borre cuando cerramos la aplicación.

Para ello utilizaremos las variables de preferencia de nuestra aplicación, o sea, NSUserDefaults y guardaremos la fecha actual (es un tipo NSDate)

Utilizaremos este código para guardar, por ejemplo, la fecha y la hora de hoy:

//Instanciamos la variable de las preferencias de la aplicación
NSUserDefaults *defaults = [NSUSerDefaults standardUserDefaults];
//Guardamos la fecha actual en la variable hoy
NSDate *hoy = [NSDate date];
//Guardamos el valor de hoy en las variables de preferencias de la aplicación
[defaults setObject:hoy forKey:@"ValorHoy"];
//Forzamos la sincronización para que guarde el valor ya
[defaults synchronize];

Y con este otro código la recuperamos:

//Instanciamos la variable de las preferencias de la aplicación si no la habíamos utilizado ya
//en caso de haberla instanciado ya, no haría falta este paso
NSUserDefaults *defaults = [NSUSerDefaults standardUserDefaults];
//Cargamos la fecha actual en la variable hoy
NSDate *fechaGuardada = (NSDate*)[defaults objectForKey:@"ValorHoy"];

Y ya tendríamos la fecha recuperada que guardamos anteriormente en la variable fechaGuardada.

Comparar NSString con null en objective-c y xcode

Saber si una cadena (NSString) es null en objective-c puede parecer algo trivial y muy intuitivo pero si estás empezando es algo que puede venir bien.

En este fragmento de código, que ejecutamos en XCode vemos como intentamos cargar una variable, que está almacenada en los datos de usuario de nuestra aplicación, y que compararemos para saber si es null, en cuyo caso le asignaremos un valor por defecto.

//Cargo la ciudad
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *ciudad;
ciudad = [defaults stringForKey:@"Ciudad"];

//Comparar si NSString es null
if(ciudad == nil)
{
[defaults setValue:@"Madrid" forKey:@"Ciudad"];
[defaults synchronize];
}

Solución al Error sfc_os.dll con Winlogon.exe

Si nos ha salido el error sfc_os.dll al iniciar Windows, aparecerá un mensaje así: “winlogon.exe no puede encontrar el archivo sfc_os.dll

Para solucionar el error tenemos que seguir estos pasos:

  1. Buscar el cd de Windows y localizar dentro de la carpeta I386 el archivo “sfc_os.dl_“. Ahora lo copiamos a C:\
  2. Reiniciemos el ordenador y pulsando la tecla “F8” entramos en “Modo seguro sólo símbolo de sistema”
  3. Al terminar de arrancar todos los procesos nos aparecerá una consola de comandos e introduciremos lo siguiente: “expand c:\sfc_os.dl_ c:\windows\system32\sfc_os.dll”
  4. Reiniciamos y ya tendremos nuestro ordenador listo sin el mensaje de error de winlogon.exe.

Problema resuelto.

Como ejecutar un script en Linux Ubuntu

Si,ya se que ejecutar un script en Linux es un comando bastante trivial, pero yo lo uso muy muy de vez en cuando y casi siempre lo tengo que buscar en internet, así que me voy a preparar esta chuleta para buscarlo directamente la próxima vez.

Es tan simple como ejecutar el comando “sh

En mi Ubuntu Server ejecuto lo siguiente:  sudo sh miscript

En mi última búsqueda vi en los comentarios lo siguiente que creo que también puede ser de utilidad:

Tabien puedes ejecutar shell scripts poninendo la shell que quieres que lo ejecute como primera linea del script (por ejemplo: #/bin/bash), dandole permisos de ejecución (chmod +x “nombre-del-archivo”) i llamandolo desde consola (./”nombre-del-archivo”).

Mostrar un CollapsiblePanel expandido al inicio

aps.net collapsible panel ajax

El control CollapsiblePanel es un control AJAX que permite expandir y contraer paneles con un efecto “slide”  en nuestras páginas de ASP.NET.

Tal vez nos interese que al iniciar nuestra aplicación Web, este panel aparezca ya expandido. Esto lo podríamos hacer por código, pero el control CollapsiblePanel tiene una propiedad que si se la inicializamos a false, nos aparecerá ya el control expandido.

Esta propiedad es Collapse=”False” que la pondríamos más o menos como viene en el ejemplo acontinuación:

<cc1:CollapsiblePanelExtender ID=”CollapsiblePanelExtender1″ runat=”server” TargetControlID=”pBody” CollapseControlID=”pHeader” ExpandControlID=”pHeader”                Collapsed=”false” TextLabelID=”lblText” CollapsedText=”Control sin expandir” ExpandedText=”Texto Expandido”   CollapsedSize=”0″ ImageControlID=”ImgBttnTitle” CollapsedImage=”../images/flecha-abajo.png” ExpandedImage=”../images/flecha-arriba.png” SuppressPostBack=”true”></cc1:CollapsiblePanelExtender>


Brother HL 2040 la luz del toner se queda encendida

Error impresor brother hl 2040

En la impresora Brother HL 2040, cuando el toner está agotándose,  aparece una luz de color amarillo donde poner toner. Normalmente al cambiar el toner está luz desaparece y la impresora imprime con normalidad.

Nos puede surgir un problema o error en la Brother HL 2040,  si tras cambiar el toner por uno nuevo, esta luz sigue quedándose encendida. En este caso lo que debemos hacer es “reiniciar” esta luz, con estos pasos:

1.- Apagamos la impresora

2.- Abrimos la tapa frontal donde se cambia el toner. (este debe de estar introducido, simplemente abrimos la tapa).

3.- Encendemos la impresora mientras que mantenemos apretado el botón de “GO” hasta que todas las luces estén encendidas.

4.- Pulsamos el botón “GO” 2 veces.

5.- Esperamos unos segundos.

6.- Pulsamos el botón “GO” 5 veces.

7.- La luz del toner debería apagarse y la luz del papel debería encenderse.

8.- Cerramos la tapa y la luz de “ready” debería quedarse encendida.

Con estos pasos el reset de la luz debería de estar completo y la impresora funcionando.

Uso y diferencias con TRUNCATE y DELETE en SQL Server

Parar borrar el contenido de una tabla podemos utilizar las sentencias TRUNCATE Table o DELETE. Una de las principales diferencias entre estas dos sentencias es que TRUNCATE es más rápida y deja un log más limpio por lo que si tenemos que borrar muchos datos está es la opción más recomendada. Otra gran diferencia es que DELETE es selectivo, es decir, puedes borrar todo o parte del contenido de la tabla mientras que TRUNCATE borraría todo el contenido.

Para poder utilizar la sentencia TRUNCATE el usuario necesitará tener uno de estos roles , sysadmin,, db_owner,  db_ddladmin. El más recomendado sería el último que sirve para ejecutar cualquier comando del lenguaje de definición de datos (DDL) en una base de datos y sería más restrictivo que los otros.

Sin ninguno de estos roles SQL nos reportaría un error de tipo “No se encuentra el objeto XXX o no tiene permisos”.

Ejemplos de consultas JOINS para SQL

Para las personas que no tienen claros los conceptos de JOINS en SQL, y como bien dice el dicho; más vale una imagen que mil palabras, aquí hay un documento que explica gráficamente cual es el uso de cada consulta JOIN SQL.

Hay ejemplos de LEFT y RIGTH, INNER, OUTER Y FULL.

Ejemplo de consultas sql con Joins

Como hacer comentarios en ASP.NET C#

Asp  .NEt logtoipo

Si necesitas comentar algún código mientras estás utilizando ASP.NET en el código HTML, puedes hacerlo con la siguiente sintáxis:

<%– Código a comentar –%> 

Todo lo que pongas entre los símbolos <%– y –%> será obviado por el servidor, incluso si es multilínea.

Una cosa muy cómoda en Visual Studio, es seleccionar o ponerte en la línea que quieres comentar y luego utilizar esta combinación de teclas Cntrl + e y seguidamente Cntrl + c, de esta manera tu código se comentará completamente sólo.

También existe la forma de descomentar automáticamente y sería con esta combinación des teclas Cntrl + e y seguidamente Cntrl + u.

Ejemplo:

</html>
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
<title>Untitled Page</title>
</head>
<body>
<form id=”form1″ runat=”server”>
<div>

        <%- -<asp:Label ID=”texto” runat=”server”></asp:Label>- -%>

<asp:TextBox ID=”texto” runat=”server”></asp:TextBox>
</div>
</form>
</body>
</html>

 

Como conectar WordPress con Twitter

Twitter Feed

Es posible que tengamos un blog en el que escribimos y también una cuenta de Twitter con la que también nos comunicamos. Puede ser un poco tedioso tener que reescribir o enlazar en WordPress y luego en Twitter. Para evitar trabajar en exceso, hay varias formas de comunicar WordPress con Twitter y voy a explicar la que utilizo yo para los clientes que me lo requieren.

Hay varios plugins, aunque la verdad no los he utilizado y quizás puedan ser muy sencillos. En mi caso para mantener WordPress con menos funciones añadidas, utilizo un servicio externo que nos permite comunicar en Twitter los artículos escritos en WordPress a través del servicio de RSS.

La página desde la que podemos hacer esto es http://twitterfeed.com.

  1. Primero nos registramos en la página.
  2. Creamos el feed como en la imágen.Dándole un nombre y la dirección de las RSS de nuestra página.

    Twitter Feed paso 1

  3. Configuramos el servicio de Twitter introduciendo nuestros datos de Twitter.

    Twitter feed paso 2

  4. Pinchamos en el botón de abajo de “Create” y ya tendremos nuesro enlace configurado.
  5. Podemos cambiar las opciones del enlace, como el tiempo de frecuencia, desde el dashboard.