<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;D0EHR3wyfSp7ImA9WhBaFEQ.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190</id><updated>2013-05-25T10:27:16.295-05:00</updated><category term="videollamada" /><category term="Megaupload Web" /><category term="flash" /><category term="precise pangolin" /><category term="LightScribe" /><category term="hotmail" /><category term="caja fuerte" /><category term="bug" /><category term="Antivirus USB" /><category term="SVG" /><category term="sombrero" /><category term="a" /><category term="torrents" /><category term="openshot" /><category term="mojang" /><category term="opinión" /><category term="computadoras" /><category term="convertir" /><category term="64" /><category term="fernando serrano" /><category term="Licencia" /><category term="Corel" /><category term="GPG Claves" /><category term="ofertas" /><category term="Vlog" /><category term="páginas web" /><category term="Inkscape" /><category term="comprimir" /><category term="ingresos" /><category term="Compras" /><category term="oficial" /><category term="facebook" /><category term="robados" /><category term="Trabajo" /><category term="java" /><category term="Teclado MDI" /><category term="google checkout" /><category term="giotto" /><category term="dominio web" /><category term="muscia" /><category term="Dreamweaver VS BlueGriffon" /><category term="django" /><category term="OSX" /><category term="fork" /><category term="vlc" /><category term="azureus" /><category term="curso" /><category term="iTunes" /><category term="desktop" /><category term="Estudio" /><category term="tablets" /><category term="gunity" /><category term="Youtubers" /><category term="lxde" /><category term="delicious" /><category term="repositorios" /><category term="administrador" /><category term="ordenador" /><category term="stock" /><category term="Sistema Operativo" /><category term="msttcorefonts" /><category term="ubuntu" /><category term="blockeo" /><category term="nvidia" /><category term="openjdk" /><category term="unity" /><category term="granola" /><category term="cedega" /><category term="bloggers" /><category term="sonido" /><category term="red" /><category term="pkgs" /><category term="Connectify" /><category term="Royalty-Free" /><category term="lenguaje" /><category term="red hat" /><category term="moda" /><category term="remodelación" /><category term="primeros" /><category term="GRUB2" /><category term="geeks" /><category term="StarCraft II" /><category term="hacking" /><category term="spins" /><category term="fringe" /><category term="BSD" /><category term="EasterEggs" /><category term="docky" /><category term="mp4" /><category term="cocina" /><category term="Linux 3" /><category term="taringa" /><category term="warcraft" /><category term="cerebro" /><category term="permanentes" /><category term="frases" /><category term="aventura" /><category term="imágenes" /><category term="WebIDE" /><category term="trailer" /><category term="pagos" /><category term="code" /><category term="Jquery" /><category term="Editor Video" /><category term="200" /><category term="Revisión" /><category term="speedtouch" /><category term="Crear Programas" /><category term="Reiniciar" /><category term="jokosher" /><category term="mitos" /><category term="boot" /><category term="flisol" /><category term="workaround" /><category term="invitaciones wave" /><category term="rootbeer" /><category term="Autoejecutable" /><category term="10gen" /><category term="agregador" /><category term="plantilla" /><category term="tarjeta gráfica" /><category term="plants" /><category term="didáctico" /><category term="oneiric ocelot" /><category term="katherine" /><category term="SWGDL" /><category term="Editor Imágenes" /><category term="alien" /><category term="clabsol" /><category term="accidente" /><category term="No a todo" /><category term="Gimp Vs Photoshop" /><category term="información" /><category term="comunidad" /><category term="fedora15" /><category term="firmar" /><category term="procesador" /><category term="CSS3" /><category term="unix" /><category term="#NyanCat" /><category term="caridad" /><category term="Frame" /><category term="team" /><category term="editor html" /><category term="battlefield 3" /><category term="social media" /><category term="mlt" /><category term="SWAP" /><category term="P2P" /><category term="Login" /><category term="mobile" /><category term="esteganografía" /><category term="fedora17" /><category term="Prsonalizar" /><category term="libreoffice" /><category term="atrapado" /><category term="Diseño Responsivo" /><category term="stumbleupon" /><category term="Qriocity" /><category term="poster" /><category term="Gratis" /><category term="Mountain Lion" /><category term="SecurityKiss" /><category term="Overclock" /><category term="mageia" /><category term="broadcom" /><category term="Photoshop" /><category term="tema" /><category term="cloudkam" /><category term="contenido" /><category term="educación" /><category term="auxilios" /><category term="encriptar" /><category term="edición" /><category term="web 2.0" /><category term="fedora16" /><category term="sun" /><category term="rico" /><category term="diseño" /><category term="DRM-Free" /><category term="swiftfox" /><category term="iMac" /><category term="recordmydesktop" /><category term="Limpieza" /><category term="webproxy" /><category term="safari" /><category term="explorer.exe" /><category term="virtualización" /><category term="ro0tb33r" /><category term="skydrive" /><category term="virtualbox" /><category term="liveusb" /><category term="urls" /><category term="centos" /><category term="Google Reader" /><category term="portables" /><category term="navegación" /><category term="os" /><category term="Elegir" /><category term="Top" /><category term="lsmod" /><category term="transcoder" /><category term="imageshack.us" /><category term="RECYCLER" /><category term="Política" /><category term="godaddy" /><category term="Comandos Linux" /><category term="32Bits" /><category term="fedora18" /><category term="Correo Basura" /><category term="WEP" /><category term="hacked" /><category term="mensajes" /><category term="transparency" /><category term="Programación Básica" /><category term="popcap" /><category term="emprendedores" /><category term="final" /><category term="zRAM" /><category term="borrado" /><category term="heroku" /><category term="acer" /><category term="minitube" /><category term="bugzilla" /><category term="devlexo" /><category term="deja-ku" /><category term="juegos" /><category term="intel HDA" /><category term="11.04" /><category term="Google URL Shortener" /><category term="Actualizar" /><category term="2011" /><category term="especiales" /><category term="kde ubuntu" /><category term="Programación" /><category term="playstation" /><category term="audífonos" /><category term="ubiqq" /><category term="skype" /><category term="chromebook" /><category term="resortera" /><category term="mapa de bits" /><category term="emprendedor" /><category term="comparativa" /><category term="arranque" /><category term="Adf.ly" /><category term="anaconda" /><category term="2012" /><category term="Hostspot Shield" /><category term="developers" /><category term="LMMS" /><category term="mejoras" /><category term="2D" /><category term="lpt" /><category term="cámara" /><category term="Virus" /><category term="parche" /><category term="kubuntu xubuntu lubuntu" /><category term="script" /><category term="tecnología" /><category term="existencialismo" /><category term="multiplataforma" /><category term="motorola" /><category term="moonlight" /><category term="gksu" /><category term="Omniauth" /><category term="revista" /><category term="tinyurl" /><category term="votar" /><category term="Mail" /><category term="nativo" /><category term="grooveshark" /><category term="bloatware" /><category term="nano" /><category term="Zona Premium" /><category term="traductor" /><category term="desarrollo web" /><category term="kubuntu" /><category term="winetricks" /><category term="translator" /><category term="GAE" /><category term="compras online" /><category term="formatear" /><category term="JRE" /><category term="nd" /><category term="servidor" /><category term="transmission" /><category term="exe" /><category term="samsung" /><category term="Google App Engine" /><category term="Döring" /><category term="realtek" /><category term="plantas" /><category term="apps." /><category term="trine" /><category term="GitHub" /><category term="2011.2" /><category term="Hiram" /><category term="https" /><category term="freesoftwarefoundation" /><category term="versus" /><category term="gksudo" /><category term="iPad" /><category term="bundle" /><category term="tweaks" /><category term="Google Apps" /><category term="dispnible" /><category term="comunicaciones" /><category term="computadora" /><category term="playstation store de vuelta" /><category term="64Bits" /><category term="megavideo" /><category term="independientes" /><category term="bugs" /><category term="Outlook" /><category term="softonic" /><category term="n" /><category term="Mint" /><category term="mundo" /><category term="Windows" /><category term="Mockups" /><category term="GPG. Claves" /><category term="13" /><category term="rubyonrails" /><category term="jones" /><category term="suse" /><category term="librerías" /><category term="feedbacky" /><category term="multijugador" /><category term="concurso" /><category term="TDD" /><category term="Vectores" /><category term="alertpay" /><category term="git" /><category term="hostname" /><category term="AMLO" /><category term="rails" /><category term="apps" /><category term="Commandos" /><category term="colaboración" /><category term="PizzaHub" /><category term="clientes" /><category term="chrome navegador web" /><category term="gamers" /><category term="14" /><category term="launchpad" /><category term="iOS" /><category term="clon" /><category term="Almacenamiento de archivos" /><category term="Celular" /><category term="packages" /><category term="consejos" /><category term="shuffle" /><category term="Windows Vista" /><category term="emprendimiento" /><category term="cifrar" /><category term="spideroak" /><category term="pajaros" /><category term="buscador" /><category term="juego" /><category term="donativos" /><category term="Hacker" /><category term="infografía" /><category term="Ninja-IDE" /><category term="OpenOffice" /><category term="ffmpeg" /><category term="Proteger passwords" /><category term="autenticación" /><category term="Stage Video" /><category term="GMA" /><category term="root" /><category term="beta" /><category term="cambios" /><category term="Mantenimiento" /><category term="PearOS" /><category term="TurboYUM" /><category term="NFS" /><category term="perros" /><category term="calyphrox" /><category term="proyectos" /><category term="opinion" /><category term="12.04" /><category term="Conficker" /><category term="miro" /><category term="15" /><category term="conexión" /><category term="#100LinuxVlogs" /><category term="equipo" /><category term="Ulead" /><category term="batería" /><category term="Trucos Definición" /><category term="network" /><category term="clamav" /><category term="servicio" /><category term="RVM" /><category term="animales" /><category term="52framework" /><category term="feedly" /><category term="hotspot" /><category term="jailbreak" /><category term="NTFS" /><category term="GoogleApps" /><category term="cuenta" /><category term="gyster" /><category term="cliente" /><category term="planet" /><category term="Memes" /><category term="PaaS" /><category term="Trípticos" /><category term="tumblr" /><category term="gplus" /><category term="mplayer" /><category term="LAN" /><category term="takeoff" /><category term="recuperar" /><category term="GUI" /><category term="casero" /><category term="ISP" /><category term="publicidad" /><category term="creativecommons" /><category term="no admitido" /><category term="sony pictures" /><category term="macbook" /><category term="fuentes" /><category term="compartir" /><category term="mensajería instantánea" /><category term="ext4" /><category term="rfkill" /><category term="catalyst" /><category term="privativo" /><category term="QuckTip" /><category term="Deepin" /><category term="TwitterBootstrap" /><category term="estéreo" /><category term="share" /><category term="bitácoras" /><category term="Wi-Fi" /><category term="Minecraft" /><category term="air" /><category term="tolerancia" /><category term="starter" /><category term="Office" /><category term="SLES" /><category term="lulzsec" /><category term="banorte" /><category term="tux" /><category term="secreto" /><category term="indie" /><category term="nouveau" /><category term="post" /><category term="lovelock" /><category term="hi5" /><category term="holofonía" /><category term="efectos" /><category term="Guías" /><category term="spherical cow" /><category term="copyright" /><category term="post-instalación" /><category term="hipstamatic" /><category term="showfoto" /><category term="paypal" /><category term="LiveStream" /><category term="anécdotas" /><category term="plasma-active" /><category term="kernel" /><category term="PAN" /><category term="steam" /><category term="novatos" /><category term="edición de imagen" /><category term="Gestor" /><category term="12" /><category term="cheatsheet" /><category term="PRI" /><category term="vs versus" /><category term="anónimo" /><category term="escritorio" /><category term="extension-pack" /><category term="GPL Gnu" /><category term="enseñanza" /><category term="artículos" /><category term="GPU" /><category term="DNS" /><category term="Kmess" /><category term="zombies" /><category term="HD" /><category term="rootear" /><category term="nombres" /><category term="gwt" /><category term="Imagen" /><category term="infierno" /><category term="RTL8187SE" /><category term="ventas" /><category term="OpenVPN" /><category term="home" /><category term="PAE" /><category term="MongoDB" /><category term="google docs" /><category term="eliminar" /><category term="firefox" /><category term="WiFite" /><category term="contactos" /><category term="e-mail" /><category term="tutoriales" /><category term="Outlook.com" /><category term="Mac" /><category term="Textmate" /><category term="banco" /><category term="portatil" /><category term="Antivirus" /><category term="Ares" /><category term="laptop" /><category term="formatos" /><category term="ext3" /><category term="Lion" /><category term="wallpapers" /><category term="BitBucket" /><category term="sociales" /><category term="WPA" /><category term="crear" /><category term="DLL" /><category term="tinysong" /><category term="robots" /><category term="2.7" /><category term="beneficios" /><category term="DeepWeb" /><category term="tips y tweaks" /><category term="auriculares" /><category term="winrar" /><category term="chrome os" /><category term="xenode systems" /><category term="Google WAVE" /><category term="Entorno de Desarrollo" /><category term="análisis" /><category term="Disco Duro" /><category term="JDK" /><category term="reactivar" /><category term="descargas" /><category term="TwitterMail" /><category term="haguichi" /><category term="Canonical" /><category term="compilar" /><category term="32" /><category term="HTML" /><category term="atom" /><category term="Megacable" /><category term="dolby" /><category term="china" /><category term="anuncio" /><category term="cursos" /><category term="Edicion Audio" /><category term="hp" /><category term="whitenoise" /><category term="swdf" /><category term="Software Libre" /><category term="Precise" /><category term="vuze" /><category term="elementary" /><category term="guía" /><category term="WYSIWYG" /><category term="Gimp" /><category term="box" /><category term="rpmfusion" /><category term="personalizar" /><category term="filtrar contenido" /><category term="16" /><category term="técnicas" /><category term="explorer8" /><category term="Megaupload Xenode Systems" /><category term="gnome" /><category term="fotografía" /><category term="telmex" /><category term="kwin" /><category term="dinero" /><category term="bing" /><category term="PRD" /><category term="goear" /><category term="feedback" /><category term="shield" /><category term="ruido blanco" /><category term="verne" /><category term="cms" /><category term="#swdf" /><category term="Crear Sitios Web Gratis" /><category term="utilidad" /><category term="Software" /><category term="tarballs" /><category term="valve" /><category term="surround" /><category term="resumen" /><category term="contra" /><category term="informática" /><category term="recuva" /><category term="17" /><category term="Windows procesos" /><category term="GodMode" /><category term="HTML5" /><category term="gstreamer" /><category term="reparaciones" /><category term="conferencia" /><category term="indiana" /><category term="Aplicaciones Online" /><category term="pagados" /><category term="18" /><category term="ecualizador" /><category term="opensuse" /><category term="MacOS" /><category term="soluciones" /><category term="ThePirateBay" /><category term="futurismo" /><category term="Avast" /><category term="inversión" /><category term="NodeJS" /><category term="guest-posting" /><category term="ilimitadas" /><category term="googleplus" /><category term="vectorian" /><category term="respuestas" /><category term="alpha" /><category term="G4" /><category term="diseño web" /><category term="Passport" /><category term="off-topic" /><category term="terminal" /><category term="empresas" /><category term="tarjeta de crédito" /><category term="365project" /><category term="Administración" /><category term="algoritmos" /><category term="series" /><category term="voto" /><category term="oneiric" /><category term="campañas #MegustaLinux TT" /><category term="prompt" /><category term="Opciones" /><category term="welcome back" /><category term="navidad" /><category term="Insync" /><category term="fsck" /><category term="directas" /><category term="servidores" /><category term="remoto" /><category term="recomendacion" /><category term="CoderWall" /><category term="educación a distancia" /><category term="Jaycut" /><category term="cortar" /><category term="multi-arch" /><category term="ultimate" /><category term="adobe" /><category term="bleachbit" /><category term="Apple" /><category term="bios" /><category term="internet firefox chrome navegador web" /><category term="VPN" /><category term="Sinde" /><category term="Photoimpact" /><category term="downgrade" /><category term="hipster" /><category term="distros" /><category term="email" /><category term="Rapidez" /><category term="kororaa" /><category term="dolphin" /><category term="Dropbox" /><category term="rootkits" /><category term="welcome back package" /><category term="Pc" /><category term="opera" /><category term="tarjeta de débito" /><category term="railsforzombies" /><category term="jaiku" /><category term="papelera" /><category term="Acceso" /><category term="solución" /><category term="CSS" /><category term="photodune" /><category term="eliminar virus" /><category term="LMDE" /><category term="procesadores" /><category term="descargar" /><category term="consola" /><category term="e3" /><category term="banca virtual" /><category term="emular" /><category term="Limewire" /><category term="tinygoo" /><category term="gems" /><category term="rápida" /><category term="lenguajes" /><category term="WebM" /><category term="snippy" /><category term="E17" /><category term="gedit" /><category term="drivers" /><category term="google code" /><category term="muse" /><category term="Seguridad" /><category term="AMD/ATI" /><category term="groovedown" /><category term="Presidente" /><category term="reproductor" /><category term="chakra" /><category term="SOPA" /><category term="google" /><category term="switchers" /><category term="ruby" /><category term="linuxmint" /><category term="Vista" /><category term="problemas" /><category term="podcast" /><category term="Microsoft" /><category term="gparted" /><category term="máquina virtual" /><category term="Mojam" /><category term="Quadri" /><category term="Truphone" /><category term="infinitum" /><category term="pidgin" /><category term="SP3" /><category term="web internet" /><category term="Proteger carpetas" /><category term="music música jacklab linux synthelos open suse studio grabación records discográfico" /><category term="OS X" /><category term="filosofía" /><category term="vida" /><category term="invitaciones googleplus" /><category term="Steve Jobs" /><category term="inamámbrico" /><category term="ver transferir" /><category term="Audio" /><category term="frameworks" /><category term="opensource" /><category term="Chrome" /><category term="markdown" /><category term="vieja" /><category term="Formato Raw" /><category term="pink floyd" /><category term="internet firefox  navegador web" /><category term="Ion-Litio" /><category term="optimizar" /><category term="Ruby on Rails" /><category term="Software Privativo" /><category term="redes" /><category term="conmutar" /><category term="archivos" /><category term="limbo" /><category term="iP foránea" /><category term="howto" /><category term="Vimeo" /><category term="licencias" /><category term="WorldWide" /><category term="ssh" /><category term="railscasts" /><category term="freeware" /><category term="acordeón" /><category term="tuxcellar" /><category term="impresora" /><category term="umplayer" /><category term="lux279" /><category term="preupgrade" /><category term="palette" /><category term="angry birds" /><category term="sabayon" /><category term="world-of-goo" /><category term="xubuntu" /><category term="nuevo" /><category term="samba" /><category term="mezclador" /><category term="Encuesta" /><category term="códecs" /><category term="PPA" /><category term="gmail" /><category term="machinarium" /><category term="StartupWeekend" /><category term="classic" /><category term="Llamadas" /><category term="alienware" /><category term="contabilidad" /><category term="Metro" /><category term="x-box" /><category term="freeraser" /><category term="MicroSD" /><category term="RPG" /><category term="trolls" /><category term="Online" /><category term="pobre" /><category term="WX290" /><category term="Utilidades" /><category term="puzzle" /><category term="uservoice" /><category term="sencha" /><category term="ligereza. QT" /><category term="stable" /><category term="libros" /><category term="evolución" /><category term="ati" /><category term="Reparar Usb" /><category term="Móvil" /><category term="pvs" /><category term="tuxjamz" /><category term="overclocking" /><category term="google +" /><category term="assets" /><category term="Mesa" /><category term="IFTTT" /><category term="alternativas" /><category term="viñetas" /><category term="xbox" /><category term="review" /><category term="Contraseña XP" /><category term="backup" /><category term="OpenGL" /><category term="gnome3shell" /><category term="snippets" /><category term="SMS" /><category term="Aviary" /><category term="6.0" /><category term="PSN" /><category term="seven" /><category term="bluegriffon" /><category term="mongoid" /><category term="rovio" /><category term="webcam" /><category term="rc" /><category term="pardus" /><category term="Ipod" /><category term="invision" /><category term="natty" /><category term="grumblr" /><category term="Pangolin" /><category term="lxmed" /><category term="Gratuito" /><category term="playonlinux" /><category term="Mix" /><category term="intel" /><category term="UFW" /><category term="Particiones" /><category term="móviles" /><category term="BlocksThatMatter" /><category term="pypi" /><category term="radiotray" /><category term="psp video 9" /><category term="Free" /><category term="Hotot" /><category term="workstation" /><category term="Mejora" /><category term="webapps" /><category term="aprender" /><category term="bugfix" /><category term="Twitter" /><category term="aircrack-ng" /><category term="psp." /><category term="gráfico" /><category term="Elecciones" /><category term="javascript" /><category term="audacity" /><category term="Google PLUS" /><category term="puerto" /><category term="quora" /><category term="electrónica" /><category term="360" /><category term="PSP" /><category term="motivación" /><category term="GetDeb" /><category term="schnauzers" /><category term="simplynoise" /><category term="RAM" /><category term="devora" /><category term="silencio" /><category term="Autoejecutables" /><category term="rpm" /><category term="Pwn" /><category term="Torvalds" /><category term="console" /><category term="11.10" /><category term="instagram" /><category term="mw3" /><category term="powerpc" /><category term="negocios" /><category term="lento" /><category term="volumen" /><category term="tunnelbear" /><category term="silverlight plugins" /><category term="sorpresa" /><category term="ktorrent" /><category term="wave" /><category term="mascotas" /><category term="paginación" /><category term="crash" /><category term="JVM" /><category term="Linux Mint" /><category term="yahoo mail" /><category term="10.04" /><category term="HAL" /><category term="internet explorer" /><category term="php" /><category term="Messenger" /><category term="cod vs battlefield" /><category term="scribus" /><category term="coffeeslide" /><category term="webmaster" /><category term="4.7" /><category term="games" /><category term="Cambiar la letra de discos" /><category term="pago" /><category term="HowTos" /><category term="dispositivos" /><category term="Rapidshare" /><category term="Músicos" /><category term="1.0" /><category term="Mraz" /><category term="blogger" /><category term="certificaciones" /><category term="Vacunar USB" /><category term="harry" /><category term="xenodepodcast" /><category term="redes e internet" /><category term="SIV" /><category term="archlinux" /><category term="eventos" /><category term="3050" /><category term="4.6" /><category term="Piano" /><category term="descompresión" /><category term="motor de búsqueda" /><category term="live" /><category term="Youtube" /><category term="translate" /><category term="entretenimiento" /><category term="Esmeraldas" /><category term="gentoo" /><category term="Xenode Chromium" /><category term="estudiar" /><category term="malware" /><category term="hosting" /><category term="ds" /><category term="Escritorio del mes" /><category term="clipgrab" /><category term="api" /><category term="Contraseñas" /><category term="temblor" /><category term="horror" /><category term="humble-bundle" /><category term="RSpec" /><category term="10razones" /><category term="socual media" /><category term="player" /><category term="regalo" /><category term="MasterBootRecord" /><category term="video" /><category term="Rolify" /><category term="EPN" /><category term="errores" /><category term="btrfs" /><category term="minus" /><category term="getsatisfaction" /><category term="desbloquear" /><category term="hamachi" /><category term="barista" /><category term="leyes" /><category term="servicios" /><category term="recetas" /><category term="jugos" /><category term="reseña" /><category term="ps3" /><category term="SPAM" /><category term="QuickTut" /><category term="lock" /><category term="oferta" /><category term="theme" /><category term="xenode systems blog" /><category term="escuelas" /><category term="hackeado" /><category term="IO13" /><category term="732058" /><category term="pizza" /><category term="pdf" /><category term="Emerald" /><category term="Guía de Post-Instalación" /><category term="Introducción" /><category term="Música" /><category term="xenode systems blog micro blog sms" /><category term="VoIP" /><category term="iPhone" /><category term="VMware" /><category term="ocelot" /><category term="ppc" /><category term="5.0" /><category term="programadores" /><category term="framework" /><category term="OpenPuff" /><category term="clicompanion" /><category term="Extensiones" /><category term="módems" /><category term="Navegación Segura" /><category term="feeds" /><category term="Clásico" /><category term="crear antivirus" /><category term="Liinux" /><category term="niños" /><category term="lanzamiento" /><category term="Telefonía" /><category term="compresión" /><category term="Bases de Datos" /><category term="ActiveRecord" /><category term="wine" /><category term="IDE" /><category term="Distribuciones" /><category term="animaciones" /><category term="Minetest-C55" /><category term="autorización" /><category term="BeefyMiracle" /><category term="Chromium" /><category term="productos" /><category term="arte" /><category term="easyurpmi" /><category term="diferencias" /><category term="versión" /><category term="Videos" /><category term="Paquetes" /><category term="RedHat" /><category term="encoder" /><category term="webkit" /><category term="SoftwareCenter" /><category term="shell" /><category term="catherine" /><category term="AMD" /><category term="any-to-any" /><category term="LinusTorvalds" /><category term="Notepad" /><category term="ubuntuone" /><category term="Twitter Bootstrap" /><category term="cs5" /><category term="instalar" /><category term="menu" /><category term="Gyth" /><category term="skyscraper" /><category term="hardware" /><category term="Windows Live Mail" /><category term="LTS" /><category term="pulseaudio" /><category term="10genEducation" /><category term="vs" /><category term="router" /><category term="celadon" /><category term="sitios web más visitados" /><category term="Comandos Windows" /><category term="basic" /><category term="dreamweaver" /><category term="bocinas" /><category term="constantine" /><category term="DEB" /><category term="debian.script" /><category term="+1" /><category term="fashion" /><category term="kde" /><category term="TinyTwitter" /><category term="Windows Xp" /><category term="thompson" /><category term="Suite Ofimática" /><category term="server2go" /><category term="wireless" /><category term="Linux" /><category term="adsense" /><category term="netbook" /><category term="Nueva alianza" /><category term="reparar" /><category term="flash player" /><category term="server" /><category term="viejo" /><category term="cuantocabrón" /><category term="LiveCD" /><category term="programar" /><category term="ocultar" /><category term="Rendimiento" /><category term="GDrive" /><category term="barato" /><category term="represión" /><category term="bluefish" /><category term="suite" /><category term="México" /><category term="Soporte" /><category term="código" /><category term="Código Libre" /><category term="redes sociales" /><category term="localhost" /><category term="Web" /><category term="concierto" /><category term="RPM4Dummies" /><category term="MSDN" /><category term="retención" /><category term="RSS" /><category term="yum" /><category term="BADSIG" /><category term="World" /><category term="investigación" /><category term="tips" /><category term="bits" /><category term="rediseño" /><category term="PIPA" /><category term="País" /><category term="nintendo" /><category term="hanheld" /><category term="QuickTip" /><category term="Gratis Gratuito" /><category term="pegar mover reemplazar" /><category term="NinjaIDE" /><category term="Rápido y Fácil" /><category term="photoscape" /><category term="pasar" /><category term="conferencias" /><category term="ndiswrapper" /><category term="Squeeze" /><category term="distro review" /><category term="startups" /><category term="adobe edge" /><category term="humor" /><category term="Playdead" /><category term="bittorrent" /><category term="business" /><category term="TV" /><category term="datos" /><category term="MySQL" /><category term="trama" /><category term="Gadget" /><category term="WoW" /><category term="acortar url" /><category term="gente." /><category term="GIF" /><category term="zencoding" /><category term="binarios" /><category term="geek" /><category term="cloud" /><category term="blizzard" /><category term="bash" /><category term="Usb" /><category term="links" /><category term="opiniones" /><category term="editor" /><category term="chromium-browser" /><category term="CoffeeScript" /><category term="Bill Gates" /><category term="aviana" /><category term="stealth" /><category term="ACTA" /><category term="BlipTV" /><category term="navegador web" /><category term="ia32-libs" /><category term="remix" /><category term="documentos" /><category term="comentarios" /><category term="plugins" /><category term="Crypload" /><category term="videojuegos" /><category term="LightDM" /><category term="aero" /><category term="Archivos Bat" /><category term="nautilus" /><category term="screencast" /><category term="Viral" /><category term="ganar" /><category term="sandbox" /><category term="lenta" /><category term="focalprice" /><category term="proxy" /><category term="Windows 8" /><category term="latam" /><category term="sitio web" /><category term="Asistencia remota" /><category term="sorcery" /><category term="plantillas" /><category term="Credenciales" /><category term="multiplayer" /><category term="actualización" /><category term="multilib errores" /><category term="tablet" /><category term="arista" /><category term="cablevisión" /><category term="Gráficos" /><category term="autores" /><category term="fedora" /><category term="Windows Live" /><category term="manager" /><category term="Firewall" /><category term="haytabla" /><category term="rabre" /><category term="Protección" /><category term="Dual-Boot" /><category term="GRUB" /><category term="OConnell7795" /><category term="narwhal" /><category term="gnome-classic" /><category term="Traducciones" /><category term="python" /><category term="copiar" /><category term="one" /><category term="internet" /><category term="debian" /><category term="AWN" /><category term="evanto" /><category term="instalación" /><category term="smartphones" /><category term="Directivas" /><category term="Android" /><category term="SolusOS" /><category term="recomendaciones" /><category term="LightRead" /><category term="Windows 7" /><category term="prodigy" /><category term="monetización" /><category term="meme" /><category term="zombis" /><category term="promoción #BuenFin" /><category term="shadowgrounds" /><category term="mandriva" /><category term="tutorial" /><category term="foro" /><category term="filtros" /><category term="edge" /><category term="red social" /><category term="Gadgets" /><category term="Optimizsar Usb" /><category term="e-comerce" /><category term="blog" /><category term="ID" /><category term="plop" /><category term="askbot" /><category term="3D" /><category term="SEO" /><category term="dlink" /><category term="7zip" /><category term="gojee" /><category term="kdenlive" /><category term="Hackintosh" /><category term="arquitecturas" /><category term="novedades" /><category term="tangram" /><category term="3.0" /><category term="Programas aplicaciones" /><category term="xfce" /><category term="GoogleDrive" /><category term="CanCan" /><category term="microsfot" /><category term="aptana" /><title>Xenode Systems Blog</title><subtitle type="html">Blog oficial de Xenode Systems: Fedora, Ubuntu y Linux en General; Tutoriales, HowTo's, VideoBlogs y Desarrollo Web entre otras muchísimas cosas de Informática, Software Libre y nuestra empresa orgullosamente mexicana.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://xenodesystems.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Manuel Escudero</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>734</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/XenodeSystemsBlog" /><feedburner:info uri="xenodesystemsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-nd/3.0/" /><feedburner:emailServiceId>XenodeSystemsBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;DUQNQHY-eSp7ImA9WhBaE0Q.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-3920572681176864033</id><published>2013-05-24T07:09:00.000-05:00</published><updated>2013-05-24T07:09:51.851-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-24T07:09:51.851-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Software Privativo" /><category scheme="http://www.blogger.com/atom/ns#" term="libros" /><category scheme="http://www.blogger.com/atom/ns#" term="Bill Gates" /><category scheme="http://www.blogger.com/atom/ns#" term="Steve Jobs" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="Apple" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title>De Bill Gates, y el Nacimiento del Software Privativo</title><content type="html">&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1tHvsKYh_sM/UZ9X4Lv3DWI/AAAAAAAAHBI/chr37w_GLh4/s1600/young-Bill-Gates-1983-bkt_11776.jpg" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-1tHvsKYh_sM/UZ9X4Lv3DWI/AAAAAAAAHBI/chr37w_GLh4/s320/young-Bill-Gates-1983-bkt_11776.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;i&gt;Bill Gates de Joven&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Ahorita que estoy leyendo &lt;b&gt;&lt;a href="https://play.google.com/store/books/details/Walter_Isaacson_Steve_Jobs_La_biograf%C3%ADa?id=ZNf9gNsA72MC&amp;amp;feature=search_result#?t=W251bGwsMSwyLDEsImJvb2stWk5mOWdOc0E3Mk1DIl0." target="_blank"&gt;la biografía de steve jobs&lt;/a&gt;&lt;/b&gt;, me encontré con un pasaje muy interesante que me gustaría compartir:&lt;br /&gt;
&lt;br /&gt;
Allá por los 60's, cuando la informática personal apenas iba tomando forma, los &lt;i&gt;geeks &lt;/i&gt;de aquellas épocas se reunían en garages a compartir ideas, noticias y avances tecnológicos entre ellos.&lt;b&gt; Steve Jobs y Steve Wozniak&lt;/b&gt; eran atendientes a uno de estos &lt;b&gt;&lt;i&gt;clubes geek&lt;/i&gt;&lt;/b&gt;, donde se permitía el fácil (y libre) acceso a la tecnología a las personas interesadas.&lt;br /&gt;
&lt;br /&gt;
La cosa es, que los componentes y kits eran muy caros, entonces no estaban al alcance de todos. Cuando el primer kit de lo que podríamos llamar "el precursor del ordenador personal" salió a la venta (El &lt;b&gt;Altair&lt;/b&gt;), no tomó mucho tiempo antes de que el club a donde asistían los &lt;i&gt;2 steves&lt;/i&gt; a estas "quedadas" se hiciera con uno. La idea era que si alguien se podía hacer con una pieza o cosa interesante, montaba una presentación que ofrecía gratuitamente para todos los asistentes, de manera que todos &lt;b&gt;se nutrían con conocimiento&lt;/b&gt;. La filosofía de ese tipo de clubes era al hardware lo que la filosofía del software libre tal y como la conocemos ahora es para los programas. El propósito central de todo era COMPARTIR, para nada Comercializar.&lt;br /&gt;
&lt;br /&gt;
Sucede que en el club a donde asistían los steves no sólo llegó a aparecerse este kit para el disfrute y estudio de todos los curiosos, sino que también llegaron copias de la versión de BASIC que Bill Gates diseñó para el Altair (Esta es, la precursora de lo que&lt;b&gt; se convertiría en Windows&lt;/b&gt; más adelante). Bill Gates no era fanático de la filosofía "hippie" enfocada a compartir conocimiento en estos clubes, y tras enterarse de que las copias de su software llegaron a manos del club a donde asistían los steves, y que la gente estaba compartíendolas entre ellos sin pagar, escribió una carta al club que rezaba:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Cito del libro:&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
Como la mayoría de los aficionados a la electrónica ya sabrán, casi todos ustedes se roban el software. ¿Es esto justo? [...] Una de las cosas que están consiguiendo es evitar que se escriba buen software. ¿Quién puede permitirse realizar un trabajo profesional a cambio de nada? [...] Agradeceré que me escriban todos aquellos que estén dispuestos a pagar.&lt;/blockquote&gt;
&lt;br /&gt;
Esto es lo que (si no me equivoco), podríamos considerar el nacimiento de la mentalidad detrás software privativo, o al menos su representación más pura con el ejemplo del software privativo más famoso de la historia: &lt;b&gt;Microsoft Windows&lt;/b&gt;. ¿Interesante no?&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Fx4vfFmKoKw:uGfl-_OreFA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=Fx4vfFmKoKw:uGfl-_OreFA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Fx4vfFmKoKw:uGfl-_OreFA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Fx4vfFmKoKw:uGfl-_OreFA:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=Fx4vfFmKoKw:uGfl-_OreFA:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Fx4vfFmKoKw:uGfl-_OreFA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/Fx4vfFmKoKw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/3920572681176864033/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/05/de-bill-gates-y-el-nacimiento-del.html#comment-form" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/3920572681176864033?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/3920572681176864033?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/Fx4vfFmKoKw/de-bill-gates-y-el-nacimiento-del.html" title="De Bill Gates, y el Nacimiento del Software Privativo" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-1tHvsKYh_sM/UZ9X4Lv3DWI/AAAAAAAAHBI/chr37w_GLh4/s72-c/young-Bill-Gates-1983-bkt_11776.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/05/de-bill-gates-y-el-nacimiento-del.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08NSHgzcCp7ImA9WhBaEUU.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-1917439269701140487</id><published>2013-05-21T20:24:00.003-05:00</published><updated>2013-05-21T20:24:59.688-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-21T20:24:59.688-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="social media" /><category scheme="http://www.blogger.com/atom/ns#" term="facebook" /><category scheme="http://www.blogger.com/atom/ns#" term="Gadgets" /><category scheme="http://www.blogger.com/atom/ns#" term="Android" /><category scheme="http://www.blogger.com/atom/ns#" term="concurso" /><category scheme="http://www.blogger.com/atom/ns#" term="redes sociales" /><category scheme="http://www.blogger.com/atom/ns#" term="xenode systems" /><title>[Concurso] Gana con Xenode (Facebook)</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-iCKca_KvL0w/UZwc9nY6q0I/AAAAAAAAHA4/j4b1-4UdcZA/s1600/facebook_logo_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="96" src="http://2.bp.blogspot.com/-iCKca_KvL0w/UZwc9nY6q0I/AAAAAAAAHA4/j4b1-4UdcZA/s320/facebook_logo_1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Es un placer para mí anunciarles hoy el inicio de nuestra serie de concursos "Gana con Xenode". Estos concursos se llevarán a cabo por medio de nuestra página de facebook y se darán diferentes premios. Se puede participar desde cualquier país, sin importar la edad y el envío de los premios no tendrá costo para los ganadores. A continuación un video explicativo de los concursos:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="281" src="http://www.youtube.com/embed/xawuoeGRGmU" width="500"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span style="font-size: large;"&gt;Si aún no nos sigues en &lt;b&gt;Facebook&lt;/b&gt;, este sería un buen momento para &lt;b&gt;Hacerte Fan&lt;/b&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://facebook.com/xenodesystems" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="110" src="http://1.bp.blogspot.com/-1VgIB3rdjZw/UZwRA-eeEqI/AAAAAAAAHAo/WQegto_GVTk/s320/FanFacebook.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Ha8u7JtiZEI:uaZyRSlMA30:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=Ha8u7JtiZEI:uaZyRSlMA30:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Ha8u7JtiZEI:uaZyRSlMA30:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Ha8u7JtiZEI:uaZyRSlMA30:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=Ha8u7JtiZEI:uaZyRSlMA30:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Ha8u7JtiZEI:uaZyRSlMA30:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/Ha8u7JtiZEI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/1917439269701140487/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/05/concurso-gana-con-xenode-facebook.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/1917439269701140487?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/1917439269701140487?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/Ha8u7JtiZEI/concurso-gana-con-xenode-facebook.html" title="[Concurso] Gana con Xenode (Facebook)" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-iCKca_KvL0w/UZwc9nY6q0I/AAAAAAAAHA4/j4b1-4UdcZA/s72-c/facebook_logo_1.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/05/concurso-gana-con-xenode-facebook.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAMQXs8eip7ImA9WhBaEE0.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-503762125405618470</id><published>2013-05-19T17:33:00.000-05:00</published><updated>2013-05-19T17:33:00.572-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-19T17:33:00.572-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="mongoid" /><category scheme="http://www.blogger.com/atom/ns#" term="snippets" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><category scheme="http://www.blogger.com/atom/ns#" term="Programación" /><title>#Snippets: Enumerar records individualmente en las views de Rails</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-plXdkD0lQUY/UZlSgIx6YoI/AAAAAAAAG_k/-cCO0C2KnsI/s1600/tumblr_m4d43boOrQ1rvup99o1_1280.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="244" src="http://2.bp.blogspot.com/-plXdkD0lQUY/UZlSgIx6YoI/AAAAAAAAG_k/-cCO0C2KnsI/s320/tumblr_m4d43boOrQ1rvup99o1_1280.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Esta es una técnica útil que me saqué de la manga para ennumerar records &amp;nbsp;individualmente en las vistas de Rails, srive para mostrar algo así como &lt;b&gt;"Record #1, Record #2, Record #3"&lt;/b&gt; etc. en la vista show (o bien, cualquiera) de un record individual de la base de datos en Rails. Mi ORM es &lt;b&gt;Mongoid&lt;/b&gt; (en la app donde probé esto) &amp;nbsp;pero supongo que funciona para cualquier tipo de ORM usando el mismo snippet, no tendría porqué no funcionar (aunque me parece que usando DB's relacionales hay alternativas más elegantes a esta para lograr el mismo objetivo) Veamos entonces el ejemplo:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div style="background: #f8f8f8; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #8f5902; font-style: italic;"&gt;&amp;lt;%&lt;/span&gt; &lt;span style="color: black;"&gt;current_id&lt;/span&gt; &lt;span style="color: #ce5c00; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;@object&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;id&lt;/span&gt;
   &lt;span style="color: black;"&gt;Mymodel&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;all&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;each_with_index&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;do&lt;/span&gt; &lt;span style="color: #ce5c00; font-weight: bold;"&gt;|&lt;/span&gt;&lt;span style="color: black;"&gt;indexed_object&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;,&lt;/span&gt; &lt;span style="color: black;"&gt;i&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;|&lt;/span&gt;
   &lt;span style="color: #204a87; font-weight: bold;"&gt;if&lt;/span&gt; &lt;span style="color: black;"&gt;indexed_object&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;id&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;to_s&lt;/span&gt; &lt;span style="color: #ce5c00; font-weight: bold;"&gt;==&lt;/span&gt; &lt;span style="color: black;"&gt;current_id&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;to_s&lt;/span&gt; &lt;span style="color: #8f5902; font-style: italic;"&gt;%&amp;gt;&lt;/span&gt;

  &lt;span style="color: #204a87; font-weight: bold;"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Object #&lt;span style="color: #8f5902; font-style: italic;"&gt;&amp;lt;%=&lt;/span&gt; &lt;span style="color: #4e9a06;"&gt;"#{&lt;/span&gt;&lt;span style="color: black;"&gt;i&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;to_i&lt;/span&gt; &lt;span style="color: #ce5c00; font-weight: bold;"&gt;+&lt;/span&gt; &lt;span style="color: #0000cf; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #4e9a06;"&gt;}"&lt;/span&gt; &lt;span style="color: #8f5902; font-style: italic;"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: #204a87; font-weight: bold;"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;

&lt;span style="color: #8f5902; font-style: italic;"&gt;&amp;lt;%&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;end&lt;/span&gt; &lt;span style="color: #8f5902; font-style: italic;"&gt;%&amp;gt;&lt;/span&gt;
&lt;span style="color: #8f5902; font-style: italic;"&gt;&amp;lt;%&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;end&lt;/span&gt; &lt;span style="color: #8f5902; font-style: italic;"&gt;%&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Creo que el snippet habla por si solo, pero por si no, lo explico:&lt;br /&gt;
&lt;br /&gt;
Primero obtenemos el ID del &lt;b&gt;objeto "actual"&lt;/b&gt;, (del que queremos obtener su ennumerador) y lo guardamos en una variable llamada &lt;b&gt;"current_id"&lt;/b&gt;. corremos el&lt;b&gt; loop ennumerador&lt;/b&gt; y le pasamos un condicional para que cuando llegue el momento en que se tope con el id del objeto en cuestión añada el número correspondiente a dicho objeto en nuestro H1 que reza algo como &lt;b&gt;"Object #X" &lt;/b&gt;(Reemplazando esa X por el número). Nótese que convertimos el índice (variable "i") a número íntegro con el método &lt;b&gt;"to_i"&lt;/b&gt;&amp;nbsp;(lo mismo da que la variable se llamase "i" o "index", igual usaríamos to_i no se confundan por las 2 "i") y le sumamos 1, ¿Porqué? Bueno, porque el ennumerador en un array de ruby empieza en 0 y no queremos tener algo como &lt;b&gt;"Venta #0"&lt;/b&gt; en nuestra vista generalmente.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=2-Os_enj44I:YtyiBAgXzdI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=2-Os_enj44I:YtyiBAgXzdI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=2-Os_enj44I:YtyiBAgXzdI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=2-Os_enj44I:YtyiBAgXzdI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=2-Os_enj44I:YtyiBAgXzdI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=2-Os_enj44I:YtyiBAgXzdI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/2-Os_enj44I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/503762125405618470/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/05/snippets-enumerar-records.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/503762125405618470?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/503762125405618470?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/2-Os_enj44I/snippets-enumerar-records.html" title="#Snippets: Enumerar records individualmente en las views de Rails" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-plXdkD0lQUY/UZlSgIx6YoI/AAAAAAAAG_k/-cCO0C2KnsI/s72-c/tumblr_m4d43boOrQ1rvup99o1_1280.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/05/snippets-enumerar-records.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UERH87eSp7ImA9WhBbGE8.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-1015529940063711825</id><published>2013-05-17T17:20:00.000-05:00</published><updated>2013-05-17T17:20:05.101-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-17T17:20:05.101-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="email" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="Outlook.com" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><category scheme="http://www.blogger.com/atom/ns#" term="Gratis Gratuito" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Apps" /><title>Cuentas de correo "@midominio" Gratis: Adiós Google Apps</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-NOuAbw79BhU/UZaqGkdnYBI/AAAAAAAAG_E/bWOOp7wAJjw/s1600/email.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="293" src="http://2.bp.blogspot.com/-NOuAbw79BhU/UZaqGkdnYBI/AAAAAAAAG_E/bWOOp7wAJjw/s320/email.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Como se debieron haber enterado hace ya algún tiempo, &lt;b&gt;&lt;a href="http://googleenterprise.blogspot.co.uk/2012/12/changes-to-google-apps-for-businesses.html"&gt;Google empezó a cobrar&lt;/a&gt;&lt;/b&gt; por el uso de &lt;b&gt;Google Apps&lt;/b&gt;. El mínimo son 5 dólares por usuario al mes y si bien Google Apps y toda su infraestructura es buena hasta cierto punto, la realidad es que la mayoría de las personas con pequeños negocios lo usaban para obtener cuentas de correo personalizadas del estilo "@midominio.TLD" Dejando del lado cualquier otra &lt;i&gt;feature&lt;/i&gt; que pudiesen ofrecer.&lt;br /&gt;
&lt;br /&gt;
La alternativa gratuita de Google Apps era eficaz para este caso de uso con un total de hasta 10 cuentas de correo personalizado gratis por dominio, Ahora que esta opción es de pago (y a mi parecer algo cara) es difícil encontrar una alternativa similar que nos preste estos beneficios sin pagar, &lt;b&gt;pero por suerte existe&lt;/b&gt; y viene de la mano de &lt;b&gt;Microsoft y Outlook.com&lt;/b&gt; ofreciéndonos no 10, sino &lt;b&gt;50 direcciones&lt;/b&gt; de correo personalizado completamente GRATIS.&lt;br /&gt;
&lt;br /&gt;
Veamos pues cómo obtenerlas:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;NOTA:&lt;/b&gt; Para poder hacer esto requerirás &lt;b&gt;tener un dominio&lt;/b&gt; comprado con cualquier compañía registrante de dominios y acceso a su &lt;b&gt;DNS Manager&lt;/b&gt; para crear nuevos records (en este caso uno MX), además de una &lt;b&gt;cuenta microsoft&lt;/b&gt; cualquiera para poder acceder al panel administrativo de tu dominio en Live.&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;span style="font-size: x-large;"&gt;Paso 1:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Tenemos que irnos a&amp;nbsp;&lt;a href="http://domains.live.com/"&gt;&lt;b&gt;http://domains.live.com/&lt;/b&gt;&lt;/a&gt;&amp;nbsp;para asociar un dominio a nuestro panel live. Iniciamos sesión con la cuenta microsoft que tengamos y damos click en el link de &lt;b&gt;"Introducción"&lt;/b&gt; de Dominios Personalizados como se alcanza a apreciar en la imagen a continuación:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-ucqBLFF78rI/UZadz9tWD9I/AAAAAAAAG9k/cALT-O_OsCU/s1600/Selecci%C3%B3n_030.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="418" src="http://4.bp.blogspot.com/-ucqBLFF78rI/UZadz9tWD9I/AAAAAAAAG9k/cALT-O_OsCU/s640/Selecci%C3%B3n_030.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Paso 2:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Una vez clickeamos ahí (con nuestra sesión iniciada) seremos llevados a una pantalla donde tendremos que escribir la dirección de nuestro dominio (puede ser cualquier TLD sin problemas) y dejamos marcada la opción de &lt;b&gt;"Configurar Outlook.com para mi dominio"&lt;/b&gt; como se muestra en la siguiente imagen:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-UUWIOy6TtA4/UZaekT-zTzI/AAAAAAAAG9s/y32BbwRCs6E/s1600/Selecci%C3%B3n_031.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/-UUWIOy6TtA4/UZaekT-zTzI/AAAAAAAAG9s/y32BbwRCs6E/s640/Selecci%C3%B3n_031.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Damos click en &lt;b&gt;"Continuar" &lt;/b&gt;y en la siguiente ventana metemos el &lt;i&gt;captcha&lt;/i&gt; que nos piden y pulsamos &lt;b&gt;"Aceptar"&lt;/b&gt;. Luego de varios intentos por introducir el captcha correcto (jajajjaa) deberíamos ver algo como esto:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-wU0Mjd-gKvY/UZahXyM-LEI/AAAAAAAAG-I/wUfU5F3ulGg/s1600/Selecci%C3%B3n_033.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="270" src="http://3.bp.blogspot.com/-wU0Mjd-gKvY/UZahXyM-LEI/AAAAAAAAG-I/wUfU5F3ulGg/s640/Selecci%C3%B3n_033.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ahí nos explican qué datos debe llevar el &lt;b&gt;registro MX&lt;/b&gt; que debemos crear en nuestra consola de administración del dominio. En este tutorial usaré &lt;b&gt;Godaddy&lt;/b&gt; como referencia:&lt;br /&gt;
&lt;br /&gt;
Sin cerrar la página previa, abrimos &lt;b&gt;&lt;a href="http://godaddy.com/"&gt;godaddy.com&lt;/a&gt;&lt;/b&gt; en nuestro navegador y nos logueamos. Accedemos a &lt;b&gt;"Mi Cuenta &amp;gt; Dominios" &lt;/b&gt;&amp;nbsp;y hacemos click en el botón verde de &lt;b&gt;Iniciar&lt;/b&gt;. Nos aparecerá algo como esto:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-wQKpGh5LSX4/UZaiuOiKe_I/AAAAAAAAG-U/2oBB-BH921E/s1600/Selecci%C3%B3n_034.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="230" src="http://2.bp.blogspot.com/-wQKpGh5LSX4/UZaiuOiKe_I/AAAAAAAAG-U/2oBB-BH921E/s640/Selecci%C3%B3n_034.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Seleccionamos el dominio para el cual queremos activar el correo y damos click en su enlace, lo que nos llevará a una pantalla parecida a esta:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-QGE5peVEjug/UZakFf6TVII/AAAAAAAAG-o/ramJgJdMypA/s1600/Administrador+de+Dominios+-+Detalles+del+Dominio+-+Google+Chrome_035.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="348" src="http://4.bp.blogspot.com/-QGE5peVEjug/UZakFf6TVII/AAAAAAAAG-o/ramJgJdMypA/s640/Administrador+de+Dominios+-+Detalles+del+Dominio+-+Google+Chrome_035.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
Donde le daremos click a la algo oculta (pero presente) opción para lanzar el&lt;b&gt; DNS Manager&lt;/b&gt; del dominio, cosa que a su vez nos traerá a otra ventana donde podremos añadir registros DNS para el dominio en cuestión. En este caso nos interesa la sección de &lt;b&gt;MX&lt;/b&gt;, así que la buscamos y le damos click en &lt;b&gt;"Agregar rápidamente"&lt;/b&gt; para luego introducir los datos que Microsoft nos entregó capturas atrás:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-SIPkU1ijOUM/UZalN5Cwe9I/AAAAAAAAG-0/pnZAP7PaCtQ/s1600/Selecci%C3%B3n_036.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="68" src="http://1.bp.blogspot.com/-SIPkU1ijOUM/UZalN5Cwe9I/AAAAAAAAG-0/pnZAP7PaCtQ/s640/Selecci%C3%B3n_036.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Nos vamos hasta abajo y clickeamos el botón de &lt;b&gt;"Guardar archivo de zona"&lt;/b&gt;. Tras haber guardado el registro DNS correctamente, esperamos unos minutos (puede tardar hasta 1 hora y en casos exagerados incluso 48) y regresamos a la página de verificación de Microsoft (la que no cerramos al abrir godaddy), donde si clickeamos el botón de &lt;b&gt;"Actualizar" &lt;/b&gt;en el recuadro amarillo veremos que nuestro dominio fue verificado exitosamente y ahora solo nos queda añadir las cuentas personalizadas que queramos, (hasta 50 por dominio, recuérdenlo). En caso de haber agregado el registro y que tu dominio no se verifique al clickear el "actualizar" en la página de verificación, trata de nuevo &lt;b&gt;1 hora 15 minutos más tarde&lt;/b&gt;, y si no queda, vuelve intentar 24 o hasta &lt;b&gt;48 horas después&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Paso 3:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Ya que el dominio esté verificado con Microsoft, en la siguiente pantalla que aparecerá podremos añadir nuestras cuentas personalizadas clickeando el botón de &lt;b&gt;"Añadir"&lt;/b&gt; que vemos en la imagen de abajo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-M-eKaemPeLw/UZas66lhNVI/AAAAAAAAG_U/SCULmzlEdUA/s1600/05-outlook-com-create-accounts-620x306.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="314" src="http://1.bp.blogspot.com/-M-eKaemPeLw/UZas66lhNVI/AAAAAAAAG_U/SCULmzlEdUA/s640/05-outlook-com-create-accounts-620x306.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ya que hayamos creado las cuentas que queramos, para acceder a ellas nos vamos a &lt;b&gt;&lt;a href="http://outlook.com/"&gt;Outlook.com&lt;/a&gt;&lt;/b&gt; donde podremos usar nuestras recién creadas credenciales personalizadas para acceder a nuestra bandeja de correo personal. los correos que mandemos serán enviados por medio de una dirección del tipo&amp;nbsp;&lt;b&gt;@midominio&lt;/b&gt; y también nos podrán escribir a la misma sin ningún problema, pudiendo nosotros checar el correo en &lt;b&gt;Outlook.com&lt;/b&gt; (o cualquier cliente de correo o dispositivo que queramos usar) de manera completamente normal; Recordemos que esta dirección de correo tiene las mismas prestaciones y comportamiento &lt;b&gt;de una cuenta microsoft normal&lt;/b&gt;, pero con &lt;b&gt;nuestro propio dominio&lt;/b&gt; después del arroba.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=BsuGAY_nTC8:XaKzre4GjjU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=BsuGAY_nTC8:XaKzre4GjjU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=BsuGAY_nTC8:XaKzre4GjjU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=BsuGAY_nTC8:XaKzre4GjjU:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=BsuGAY_nTC8:XaKzre4GjjU:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=BsuGAY_nTC8:XaKzre4GjjU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/BsuGAY_nTC8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/1015529940063711825/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/05/cuentas-de-correo-midominio-gratis.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/1015529940063711825?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/1015529940063711825?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/BsuGAY_nTC8/cuentas-de-correo-midominio-gratis.html" title="Cuentas de correo &quot;@midominio&quot; Gratis: Adiós Google Apps" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-NOuAbw79BhU/UZaqGkdnYBI/AAAAAAAAG_E/bWOOp7wAJjw/s72-c/email.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/05/cuentas-de-correo-midominio-gratis.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQAQXk8eyp7ImA9WhBbF0s.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-1973040436729678085</id><published>2013-05-16T23:43:00.002-05:00</published><updated>2013-05-16T23:52:20.773-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-16T23:52:20.773-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="snippets" /><category scheme="http://www.blogger.com/atom/ns#" term="código" /><category scheme="http://www.blogger.com/atom/ns#" term="Programación" /><title>#Snippets: Generador de strings aleatorios en Ruby</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-_a-NLYjQRmk/UZW1Ipz1M_I/AAAAAAAAG9U/E10ixP-Jbq8/s1600/programmer-red.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-_a-NLYjQRmk/UZW1Ipz1M_I/AAAAAAAAG9U/E10ixP-Jbq8/s320/programmer-red.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Últimamente me he topado con más de un caso en el que tengo que hacer un &lt;b&gt;generador de claves aleatorias&lt;/b&gt; (strings que contengan números y letras random) con cierto número de caracteres. ¿Para qué nos serviría dicho generador?&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Generar contraseñas volátiles aleatorias para el usuario&lt;/li&gt;
&lt;li&gt;Generador de claves WEP/WPA para proteger Wi-Fi&lt;/li&gt;
&lt;li&gt;Generar una "uniclave" para algún sistema de registro de productos&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Y sin duda para más...&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Bueno, este es el snippet que yo armé y uso en estos casos. Se trata de un pequeño método/función que lo que hace es formar 2 arrays, uno con las letras de la&lt;b&gt; A a la Z&lt;/b&gt; y otro con los dígitos del&lt;b&gt; 0 al 9 &lt;/b&gt;y nos devuelve una string que resulta ser la combinación aleatoria de las letras y números antes mencionados cada que corre, haciendo una nueva combinación de 8 caracteres cada vez:&lt;/div&gt;
&lt;div&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;  &lt;span style="color: #3d85c6;"&gt;def&lt;/span&gt; random_string
    &lt;span style="color: #990000;"&gt;a&lt;/span&gt; = (&lt;span style="color: #aa5500;"&gt;"a"&lt;/span&gt;..&lt;span style="color: #aa5500;"&gt;"z"&lt;/span&gt;) 
    &lt;span style="color: #aa0000;"&gt;b&lt;/span&gt; = (0..9)
    &lt;span style="color: #aa0000;"&gt;c&lt;/span&gt; = a.to_a + b.to_a
    &lt;span style="color: #990000;"&gt;key&lt;/span&gt; = c.shuffle[0,8].join
  &lt;span style="color: #3d85c6;"&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Cabe destacar que se pueden hacer combinaciones con todo tipo de caracteres y que nos devuelvan strings tan largos como necesitemos modificando tan solo un poquito el método.&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Y84GhIyPR6U:fe7nP8wdMBo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=Y84GhIyPR6U:fe7nP8wdMBo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Y84GhIyPR6U:fe7nP8wdMBo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Y84GhIyPR6U:fe7nP8wdMBo:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=Y84GhIyPR6U:fe7nP8wdMBo:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=Y84GhIyPR6U:fe7nP8wdMBo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/Y84GhIyPR6U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/1973040436729678085/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/05/snippets-generador-de-strings.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/1973040436729678085?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/1973040436729678085?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/Y84GhIyPR6U/snippets-generador-de-strings.html" title="#Snippets: Generador de strings aleatorios en Ruby" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-_a-NLYjQRmk/UZW1Ipz1M_I/AAAAAAAAG9U/E10ixP-Jbq8/s72-c/programmer-red.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/05/snippets-generador-de-strings.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8HSXo-fyp7ImA9WhBbFkU.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-7265970470957685702</id><published>2013-05-16T01:13:00.002-05:00</published><updated>2013-05-16T01:13:58.457-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-16T01:13:58.457-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IO13" /><category scheme="http://www.blogger.com/atom/ns#" term="Google App Engine" /><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><category scheme="http://www.blogger.com/atom/ns#" term="PaaS" /><category scheme="http://www.blogger.com/atom/ns#" term="webapps" /><category scheme="http://www.blogger.com/atom/ns#" term="php" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>#IO13: Soporte oficial para PHP en App Engine</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Uu0thYQB1go/UZR42MlxQKI/AAAAAAAAG9E/6uDlfKNDIyY/s1600/google-appengine-php.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-Uu0thYQB1go/UZR42MlxQKI/AAAAAAAAG9E/6uDlfKNDIyY/s1600/google-appengine-php.gif" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Hace rato estaba revisando la "keynote list" para el &lt;b&gt;Google I/O&lt;/b&gt; de este año y de las disponibles sólo unas pocas me llamaron la atención, en especial una llamada &lt;b&gt;&lt;a href="https://developers.google.com/events/io/sessions/333055646"&gt;"A new language for App Engine"&lt;/a&gt;&lt;/b&gt;. Me metí a su resumen y según vi los de Google decían que se trataría de la adición de soporte para un nuevo lenguaje muy solicitado por parte de la comunidad de GAE. Me emocioné y pensé: "¡Al fin!, Ruby!" pero tras investigar un poco resulta ser que alguien en reddit ya dio con la respuesta a tan anhelada pregunta (¿Cuál lenguaje será?) y la respuesta resultó ser: &lt;b&gt;PHP&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;a href="http://bit.ly/17mXwkp"&gt;http://bit.ly/17mXwkp&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
Así es. Al parecer por el código del trunk de AppEngine &lt;b&gt;tendremos a PHP&lt;/b&gt; como siguiente lenguaje soportado en la PaaS de Google. Interesante, para algunos incluso emocionante, pero no para mí. No me gusta tanto PHP, lo considero incluso un lenguaje muerto. Me hubiera gustado ver a Ruby en GAE :/ Desgraciadamente no siempre se tiene lo que se quiere... ¿O sí? Puede ser que en el último minuto los de Google nos sorprendan con algo así como: "Y no eran uno, eran dos! denle la bienvenida a Ruby en GAE!" (Soñar no cuesta nada) jeje.&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=OEMFqxE6G6A:tzkayCc8CTU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=OEMFqxE6G6A:tzkayCc8CTU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=OEMFqxE6G6A:tzkayCc8CTU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=OEMFqxE6G6A:tzkayCc8CTU:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=OEMFqxE6G6A:tzkayCc8CTU:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=OEMFqxE6G6A:tzkayCc8CTU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/OEMFqxE6G6A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/7265970470957685702/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/05/io13-soporte-oficial-para-php-en-app.html#comment-form" title="4 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/7265970470957685702?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/7265970470957685702?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/OEMFqxE6G6A/io13-soporte-oficial-para-php-en-app.html" title="#IO13: Soporte oficial para PHP en App Engine" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Uu0thYQB1go/UZR42MlxQKI/AAAAAAAAG9E/6uDlfKNDIyY/s72-c/google-appengine-php.gif" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/05/io13-soporte-oficial-para-php-en-app.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMFR3s4fCp7ImA9WhBbFk0.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-6568649144609383278</id><published>2013-05-15T04:00:00.001-05:00</published><updated>2013-05-15T04:00:16.534-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-15T04:00:16.534-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mongoid" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><title>[QuickTip] Atributos predeterminados en Mongoid Rails</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-vYDOAjZoQI0/UZNNRcZPOII/AAAAAAAAG80/t_zNPfTti0M/s1600/marklin-hamo-2-rails-locomotora-a-vapor-2-3-1-con-tender_MLA-F-3306546986_102012.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-vYDOAjZoQI0/UZNNRcZPOII/AAAAAAAAG80/t_zNPfTti0M/s320/marklin-hamo-2-rails-locomotora-a-vapor-2-3-1-con-tender_MLA-F-3306546986_102012.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Antes que nada una disculpa por la inactividad en el blog y las redes sociales, hemos estado demasiado ocupados (sobre todo yo) Pero acá seguimos. Aquí un quicktip:&lt;br /&gt;
&lt;br /&gt;
Fíjense que estoy construyendo una plataforma web para una agencia de viajes y estamos manejando algo así como un "monedero electrónico" el cual lo que permite es que cada que un usuario de la aplicación compre algo ésta le regrese en "puntos" de un 5% al 100% del total de su compra y más tarde los pueda usar para comprar otras cosas dentro de la misma plataforma. Hacer esto requiere inicializar un usuario con un monedero electrónico en ceros, pero al hacerlo con un callback el resultado que obtuve fue un "true" en lugar de un cero, cosa que no servía de nada pues el usuario debe ver cómo su monedero empieza en ceros y se le va sumando dinero poco a poco (hay una vista para eso, y si en el programa decía "true" el usuario no entendería); Para lograr el resultado esperado, simplemente tuve que cambiar el &lt;i&gt;approach &lt;/i&gt;de callback por uno más sencillo: &lt;b&gt;Atributos predeterminados&lt;/b&gt;. Si usas Mongoid como tu ORM, entonces ésta es la manera correcta de hacerlo. En el modelo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-pZNGEef-9vE/UZNMTeOjpJI/AAAAAAAAG8o/Uq2YOi70bYg/s1600/Selecci%C3%B3n_026.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="24" src="http://3.bp.blogspot.com/-pZNGEef-9vE/UZNMTeOjpJI/AAAAAAAAG8o/Uq2YOi70bYg/s640/Selecci%C3%B3n_026.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Simplemente ponemos una coma después de declarar el atributo y con la declaración del "default" y un hash con el valor que queremos que sea el predeterminado lograremos nuestro cometido. En mi ejemplo estoy siendo excesivamente "verboso" pero espero que para fines del post se entienda porqué. Lo mismo daba poner "0" a todo ese barullo en mi hash, pero mejor explícito que "abierto a la interpretación". Establecer atributos predeterminados como lo muestro en mi línea de código allá arriba permitirá que dicho atributo se "setée" al momento de la creación del objeto, de manera que cada objeto nuevo de un modelo determinado que incluya este tipo de setup se inicializará con el valor deseado predeterminado automáticamente en la base de datos al momento de su creación.&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=1tdCgqGRpxc:sHUQ6ZktHA0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=1tdCgqGRpxc:sHUQ6ZktHA0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=1tdCgqGRpxc:sHUQ6ZktHA0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=1tdCgqGRpxc:sHUQ6ZktHA0:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=1tdCgqGRpxc:sHUQ6ZktHA0:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=1tdCgqGRpxc:sHUQ6ZktHA0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/1tdCgqGRpxc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/6568649144609383278/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/05/quicktip-atributos-predeterminados-en.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/6568649144609383278?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/6568649144609383278?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/1tdCgqGRpxc/quicktip-atributos-predeterminados-en.html" title="[QuickTip] Atributos predeterminados en Mongoid Rails" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-vYDOAjZoQI0/UZNNRcZPOII/AAAAAAAAG80/t_zNPfTti0M/s72-c/marklin-hamo-2-rails-locomotora-a-vapor-2-3-1-con-tender_MLA-F-3306546986_102012.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/05/quicktip-atributos-predeterminados-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08DSX8yfCp7ImA9WhBVFk4.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-4870390616253620493</id><published>2013-04-22T09:11:00.000-05:00</published><updated>2013-04-22T09:11:18.194-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-22T09:11:18.194-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="desarrollo web" /><category scheme="http://www.blogger.com/atom/ns#" term="mongoid" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="Programación" /><category scheme="http://www.blogger.com/atom/ns#" term="paginación" /><title>[QuickTip] Paginación en Rails 3 y Mongoid</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-8FgoxSSg-DM/UXVEuZaf1kI/AAAAAAAAGqo/zUgQ7q0qOiY/s1600/books.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-8FgoxSSg-DM/UXVEuZaf1kI/AAAAAAAAGqo/zUgQ7q0qOiY/s1600/books.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Así que tienes una RailsApp con Mongoid que tiene muchísimos records en la base de datos y quieres mostrarlos todos al público de una manera eficiente, ordenada y no abrumadora... &lt;b&gt;¡Necesitas paginación!&lt;/b&gt; En Rails tenemos 3 principales maneras rápidas de lograr implementar paginación en una app: Con Ajax, con la gema Kaminari o con will_paginate.&lt;br /&gt;
&lt;br /&gt;
En este post les hablaré de la última opción, que es la que yo he usado con Mongoid y me ha resultado bastante eficiente, aunque su configuración difiere un poco de la versión para ActiveRecord. Veamos pues cómo integrarla:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;1) Añade la gema&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Nos vamos a nuestro Gemfile y añadimos:&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;gem &lt;span style="color: #aa5500;"&gt;'will_paginate'&lt;/span&gt;, &lt;span style="color: #aa5500;"&gt;'~&amp;gt; 3.0'&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Hacemos &lt;b&gt;bundle install&lt;/b&gt; y luego proseguimos con:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;2) Requerirla en la aplicación&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Esto se hace añadiendo las siguientes líneas a tu archivo config/application.rb:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;require &lt;span style="color: #aa5500;"&gt;'will_paginate'&lt;/span&gt;
require &lt;span style="color: #aa5500;"&gt;'will_paginate/array'&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;3) Paginar en el controlador&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, si yo quiero paginar mi acción Index del controlador que por default muestra todos los records de un determinado objeto de la base de datos en su vista, haría algo como:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-IAXfbrJ9eEc/UXVDTiLv6TI/AAAAAAAAGqg/t1CoAMuv8Bc/s1600/pagina.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="152" src="http://4.bp.blogspot.com/-IAXfbrJ9eEc/UXVDTiLv6TI/AAAAAAAAGqg/t1CoAMuv8Bc/s640/pagina.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
En este caso estaría paginando en mi acción Index del controlador todos los objetos de "CallBundle" mostrando 10 resultados por página que el usuario pase con su selector (osea picándole al numerito 1-2-3-4 etc).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;4) Activarlo en la vista&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora si quiero tener paginación en dicha vista index, le añado:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;lt;%= will_paginate @call_bundles %&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Donde&amp;nbsp;&lt;b&gt;@call_bundles&lt;/b&gt; es el objeto a paginar que elegí en el controlador.&lt;br /&gt;
&lt;br /&gt;
Y eso es todo! estamos paginando en nuestra app rails con backend mongoid, ahora solo queda (si queremos) pasarle algo de CSS a ese paginador y listo.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=zes3APQof_0:-k2ep8VEodc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=zes3APQof_0:-k2ep8VEodc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=zes3APQof_0:-k2ep8VEodc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=zes3APQof_0:-k2ep8VEodc:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=zes3APQof_0:-k2ep8VEodc:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=zes3APQof_0:-k2ep8VEodc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/zes3APQof_0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/4870390616253620493/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/quicktip-paginacion-en-rails-3-y-mongoid.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/4870390616253620493?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/4870390616253620493?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/zes3APQof_0/quicktip-paginacion-en-rails-3-y-mongoid.html" title="[QuickTip] Paginación en Rails 3 y Mongoid" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-8FgoxSSg-DM/UXVEuZaf1kI/AAAAAAAAGqo/zUgQ7q0qOiY/s72-c/books.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/quicktip-paginacion-en-rails-3-y-mongoid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEGRH4-eSp7ImA9WhBVFEw.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-2660382712220154082</id><published>2013-04-19T19:10:00.000-05:00</published><updated>2013-04-19T19:10:25.051-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-19T19:10:25.051-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="desarrollo web" /><category scheme="http://www.blogger.com/atom/ns#" term="rails" /><category scheme="http://www.blogger.com/atom/ns#" term="webapps" /><category scheme="http://www.blogger.com/atom/ns#" term="markdown" /><category scheme="http://www.blogger.com/atom/ns#" term="WYSIWYG" /><title>Markdown WYSIWYG en tu aplicación Rails</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-L1jqWjMvaLY/UXES5RyJtcI/AAAAAAAAGqQ/SgskbaJ6OfU/s1600/redcarpet.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-L1jqWjMvaLY/UXES5RyJtcI/AAAAAAAAGqQ/SgskbaJ6OfU/s320/redcarpet.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ahorita estoy construyendo una aplicación Rails para una agencia de viajes que resulta ser cliente nuestro. La idea que hay detrás de lo que el cliente quiere es muy buena y es un proyecto que me emociona trabajar. Una de las características que estoy implementando y añadiendo ahorita es la posibilidad de generar contenido &lt;b&gt;con formato&lt;/b&gt; desde el &lt;i&gt;submit&lt;/i&gt; de un formulario directamente. En cuanto supe que teníamos esa necesidad inmediatamente pensé en &lt;b&gt;Markdown&lt;/b&gt;, una cosa ligera, práctica y poderosa para estos casos.&lt;br /&gt;
&lt;br /&gt;
El &lt;i&gt;markdown &lt;/i&gt;es un formato de texto estilizado que se basa en ciertas reglas para aplicar estilos, sin ser una edición de texto con etiquetas HTML directamente como la encontrada en los editores de Blogger o Wordpress por ejemplo. La implementación de markdown se puede hacer sin necesidad de un editor, tu le das capacidades de interpretación de Markdown a tu app y listo, si los usuarios escriben markdown en sus formularios, ya en las vistas quedará interpretado y con formato. Sin embargo yo quiero que esta app sea lo más &lt;b&gt;noob-friendly&lt;/b&gt; posible, así que añadiré un editor WYSIWYG para markdown (después de implementarlo en la app) e igual un corrector ortográfico, veamos cómo lograrlo:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;1) RedCarpet&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Primero le dí capacidades de interpretación de Markdown a mi app, esto se logra de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Añadir RedCarpet a tu Gemfile&lt;/i&gt;&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;gem &lt;span style="color: #aa5500;"&gt;'redcarpet'&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Luego hacemos&lt;b&gt; bundle install&lt;/b&gt; y proseguimos creando un &lt;b&gt;helper method &lt;/b&gt;que nos permita renderizar el contenido de una form que se envió con markdown en la vista indicada de la aplicación ya con el formato renderizado. El código de este método va en &lt;b&gt;helpers/application_helper.rb&lt;/b&gt; y será el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #f8f8f8; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #204a87; font-weight: bold;"&gt;module&lt;/span&gt; &lt;span style="color: black;"&gt;ApplicationHelper&lt;/span&gt;

  &lt;span style="color: #204a87; font-weight: bold;"&gt;def&lt;/span&gt; &lt;span style="color: black;"&gt;markdown&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;text&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;)&lt;/span&gt;
    &lt;span style="color: black;"&gt;renderer&lt;/span&gt; &lt;span style="color: #ce5c00; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: black;"&gt;Redcarpet&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;::&lt;/span&gt;&lt;span style="color: black;"&gt;Render&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;::&lt;/span&gt;&lt;span style="color: black;"&gt;HTML&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;new&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: #4e9a06;"&gt;:no_links&lt;/span&gt; &lt;span style="color: #ce5c00; font-weight: bold;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;,&lt;/span&gt; &lt;span style="color: #4e9a06;"&gt;:hard_wrap&lt;/span&gt; &lt;span style="color: #ce5c00; font-weight: bold;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;)&lt;/span&gt;
    &lt;span style="color: black;"&gt;options&lt;/span&gt; &lt;span style="color: #ce5c00; font-weight: bold;"&gt;=&lt;/span&gt; &lt;span style="color: black; font-weight: bold;"&gt;{&lt;/span&gt;
      &lt;span style="color: black;"&gt;autolink&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;:&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;,&lt;/span&gt;
      &lt;span style="color: black;"&gt;no_intra_emphasis&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;:&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;,&lt;/span&gt;
      &lt;span style="color: black;"&gt;fenced_code_blocks&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;:&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;,&lt;/span&gt;
      &lt;span style="color: black;"&gt;lax_html_blocks&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;:&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;,&lt;/span&gt;
      &lt;span style="color: black;"&gt;strikethrough&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;:&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;,&lt;/span&gt;
      &lt;span style="color: black;"&gt;superscript&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;:&lt;/span&gt; &lt;span style="color: #204a87; font-weight: bold;"&gt;true&lt;/span&gt;
    &lt;span style="color: black; font-weight: bold;"&gt;}&lt;/span&gt;
    &lt;span style="color: black;"&gt;Redcarpet&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;::&lt;/span&gt;&lt;span style="color: black;"&gt;Markdown&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;new&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;renderer&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;,&lt;/span&gt; &lt;span style="color: black;"&gt;options&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;render&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;(&lt;/span&gt;&lt;span style="color: black;"&gt;text&lt;/span&gt;&lt;span style="color: black; font-weight: bold;"&gt;)&lt;/span&gt;&lt;span style="color: #ce5c00; font-weight: bold;"&gt;.&lt;/span&gt;&lt;span style="color: black;"&gt;html_safe&lt;/span&gt;
  &lt;span style="color: #204a87; font-weight: bold;"&gt;end&lt;/span&gt;

&lt;span style="color: #204a87; font-weight: bold;"&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Con esto ya puedo llamar en mi vista al campo formateado usando este método y renderizará correctamente con algo como:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;lt;%= markdown @objeto.campo %&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Aunque esto bastaría para renderizar el markdown que haya sido escrito en un form, no toda la gente sabe markdown y dar un curso intensivo de cómo escribir esto a cada empleado de la agencia es tedioso, así que les ayudaremos un poquito con un lindo editor WYSIWYG en el siguiente paso.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;2) Una GUI para las TextAreas&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Podemos integrar varias opciones para lograr esto, ya que lo haríamos en el lado del cliente con javascript y eso quiere decir que tenemos TONELADAS de opciones para usar jajajajaja. Sin embargo, en mi caso personal tras hacer varias pruebas, me quedo con &lt;b&gt;MarkitUp! &lt;/b&gt;un pequeño y confiable editor muy fácil de implementar y usar, veamos cómo:&lt;br /&gt;
&lt;br /&gt;
Primero nos bajamos el dichoso editor (ya preparado para Markdown y ser ligero) &lt;b&gt;&lt;a href="http://ubuntuone.com/5wd784DrCZuos3E4FYSGmv"&gt;desde acá&lt;/a&gt;&lt;/b&gt;. Una vez descargado lo extraemos y copiamos la carpeta resultante en nuestro directorio &lt;b&gt;public/assets&lt;/b&gt; de la aplicación.&lt;br /&gt;
&lt;br /&gt;
Referenciamos los archivos de la siguiente manera en la aplicación:&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: green;"&gt;&amp;lt;!-- markItUp! skin --&amp;gt;&lt;/span&gt;
&amp;lt;link rel=&lt;span style="color: #a31515;"&gt;"stylesheet"&lt;/span&gt; type=&lt;span style="color: #a31515;"&gt;"text/css"&lt;/span&gt; href=&lt;span style="color: #a31515;"&gt;"/assets/markitup/skins/markitup/style.css"&lt;/span&gt;&amp;gt;
&lt;span style="color: green;"&gt;&amp;lt;!--  markItUp! toolbar skin --&amp;gt;&lt;/span&gt;
&amp;lt;link rel=&lt;span style="color: #a31515;"&gt;"stylesheet"&lt;/span&gt; type=&lt;span style="color: #a31515;"&gt;"text/css"&lt;/span&gt; href=&lt;span style="color: #a31515;"&gt;"/assets/markitup/sets/markdown/style.css"&lt;/span&gt;&amp;gt;
&lt;span style="color: green;"&gt;&amp;lt;!-- markItUp! --&amp;gt;&lt;/span&gt;
&amp;lt;script type=&lt;span style="color: #a31515;"&gt;"text/javascript"&lt;/span&gt; src=&lt;span style="color: #a31515;"&gt;"/assets/markitup/jquery.markitup.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&lt;span style="color: green;"&gt;&amp;lt;!-- markItUp! toolbar settings --&amp;gt;&lt;/span&gt;
&amp;lt;script type=&lt;span style="color: #a31515;"&gt;"text/javascript"&lt;/span&gt; src=&lt;span style="color: #a31515;"&gt;"/assets/markitup/sets/markdown/set.js"&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Y luego simplemente en nuestra form donde vayamos a usar el editor debemos darle la clase indicada a las textareas que queremos formatear con markdown de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;lt;%= f.text_area :description, :class =&amp;gt; 'markItUp' %&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Una vez hecho esto, añadimos al final de nuestra form el script de markitUp también, que es el siguiente:&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&amp;lt;script type=&lt;span style="color: #a31515;"&gt;"text/javascript"&lt;/span&gt; &amp;gt;
   $(document).ready(&lt;span style="color: blue;"&gt;function&lt;/span&gt;() {
      $(&lt;span style="color: #a31515;"&gt;".markItUp"&lt;/span&gt;).markItUp(mySettings);
   });
&amp;lt;/script&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Y con eso, dichas textareas del formulario cargarán directamente con MarkitUp para poder disfrrutar de los beneficios del Markdown en nuestra app.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=buYcYlzjcuU:VnN5asBr-F4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=buYcYlzjcuU:VnN5asBr-F4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=buYcYlzjcuU:VnN5asBr-F4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=buYcYlzjcuU:VnN5asBr-F4:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=buYcYlzjcuU:VnN5asBr-F4:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=buYcYlzjcuU:VnN5asBr-F4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/buYcYlzjcuU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/2660382712220154082/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/markdown-wysiwyg-en-tu-aplicacion-rails.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/2660382712220154082?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/2660382712220154082?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/buYcYlzjcuU/markdown-wysiwyg-en-tu-aplicacion-rails.html" title="Markdown WYSIWYG en tu aplicación Rails" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-L1jqWjMvaLY/UXES5RyJtcI/AAAAAAAAGqQ/SgskbaJ6OfU/s72-c/redcarpet.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/markdown-wysiwyg-en-tu-aplicacion-rails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMMRX0ycSp7ImA9WhBVEkU.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-2816696341160808794</id><published>2013-04-18T03:46:00.001-05:00</published><updated>2013-04-18T06:28:04.399-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-18T06:28:04.399-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="desarrollo web" /><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB" /><category scheme="http://www.blogger.com/atom/ns#" term="mongoid" /><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><category scheme="http://www.blogger.com/atom/ns#" term="heroku" /><category scheme="http://www.blogger.com/atom/ns#" term="Gratis Gratuito" /><title>[HowTo] Deploy Gratuito de Rails + Mongoid en Heroku</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-4xuOZ4f3diI/UW-u_dhVmxI/AAAAAAAAGqA/JvRYMXNUBGQ/s1600/ADDONS.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="115" src="http://3.bp.blogspot.com/-4xuOZ4f3diI/UW-u_dhVmxI/AAAAAAAAGqA/JvRYMXNUBGQ/s400/ADDONS.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Trabajar con &lt;b&gt;&lt;a href="http://xenodesystems.blogspot.mx/2012/10/quicktut-usar-mongodb-en-rails-con.html" target="_blank"&gt;Rails y Mongoid&lt;/a&gt;&lt;/b&gt; es la combinación ganadora si quieres ser productivo y además divertirte mientras programas. &lt;b&gt;&lt;a href="http://xenodesystems.blogspot.mx/2012/06/deploy-de-rails-en-heroku-quicktut.html" target="_blank"&gt;Hace tiempo&lt;/a&gt;&lt;/b&gt; les hablé de cómo subir una aplicación rails de esas que ocupan tablas SQL al famoso servicio de hosting para webapps Heroku. El día de hoy aprenderemos cómo hacerlo si quieres utilizar Mongoid (¡Backend de &lt;b&gt;&lt;a href="http://xenodesystems.blogspot.mx/2012/10/porque-amaras-mongodb-la-mejor-base-de.html" target="_blank"&gt;MongoDB&lt;/a&gt;&lt;/b&gt; en nuestra app!), y de paso les hablaré del &lt;b&gt;Heroku Toolbelt&lt;/b&gt;:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-large;"&gt;1) Heroku Toolbelt&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Resulta que la gema "heroku" para Rails ya no está soportada y en lugar de estar segregando las herramientas de la plataforma en varios esfuerzos diferentes ahora el Heroku Team ha decidido hacer una "unisolución", conocida como el "Heroku Toolbelt".&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Si queremos subir nuestra app a heroku, (sea la que sea) ocuparemos instalarnos esta utilidad (y quitar la gema heroku de la misma si la ocupábamos). Instalarlo es bastante sencillo a decir verdad y es un proceso prácticamente automático y multiplataforma, aquí les explicaré cómo instalarlo de forma genérica, especialmente enfocado a sistemas linux (excluyendo Ubuntu, pues con esta distro tenemos otro método); Corremos el siguiente comando:&lt;/div&gt;
&lt;div&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #111111; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #f3f3f3;"&gt;wget -qO- https://toolbelt.heroku.com/install.sh | sh&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;/pre&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Y luego añadimos lo siguiente a nuestro &lt;b&gt;".bashrc"&lt;/b&gt; (archivo oculto dentro de nuestra carpeta personal):

&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #aa0000;"&gt;PATH&lt;/span&gt;=&lt;span style="color: #aa5500;"&gt;"/usr/local/heroku/bin:$PATH"&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Finalmente, cerramos y abrimos la consola (la reiniciamos pues); Una vez hecho esto lo tenemos instalado. Configuramos &lt;b&gt;&lt;a href="http://draft.blogger.com/"&gt;&lt;span id="goog_207767870"&gt;&lt;/span&gt;nuestras claves SSH&lt;span id="goog_207767871"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/b&gt; con su servidor y listo.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;2) Preparando el entorno&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Primero y antes que nada, bájate la más nueva versión de &lt;b&gt;bundler&lt;/b&gt; así:&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;gem install bundler --pre
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Luego, dile a tu gemfile explícitamente que use&lt;b&gt; ruby 1.9.3&lt;/b&gt; así:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-zyl9t_2Sx7w/UW-nxsY4H_I/AAAAAAAAGp4/69gOuGZaXIQ/s1600/Gemfile+(~-CancunTravelSolution)+-+gedit_051.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="432" src="http://2.bp.blogspot.com/-zyl9t_2Sx7w/UW-nxsY4H_I/AAAAAAAAGp4/69gOuGZaXIQ/s640/Gemfile+(~-CancunTravelSolution)+-+gedit_051.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ya que estemos usando explícitamente ruby 1.9.3 en el Gemfile, corremos:&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
2
3
4
5
6
7&lt;/pre&gt;
&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;bundle install
git init 
git add .
git commit -m &lt;span style="color: #aa5500;"&gt;"Heroku ready"&lt;/span&gt;
heroku login
heroku create myapp
heroku addons:add mongohq:small
&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
Y eso hará el bundle de las gemas, inicializará un repo git dentro de la app (Que en este caso tiene de nombre "myapp") y añadirá todo el código hasta donde vamos para luego crear una "instancia de app" de heroku y finalmente instalar la extensión que nos va a permitir usar MongoDB dentro de heroku como nuestra base de datos; Cabe destacar que el uso de esta extensión requiere de una cuenta verificada de heroku (con una tarjeta de crédito asociada) y el comando 6 inicializa la add-on en la versión &lt;b&gt;Small &lt;/b&gt;de la base de datos proveída por MongoHQ, cosa que quizá quieras cambiar según la envergadura del proyecto.&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;
&lt;i&gt;&lt;b&gt;Links útiles en esta parte:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="http://www.elliotbradbury.com/use-mongohq-heroku-without-verifying-account/" target="_blank"&gt;Usar MongoHQ sin verificar cuenta en Heroku&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://addons.heroku.com/mongohq" target="_blank"&gt;Diferentes tamaños y prestaciones de MongoHQ&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="http://support.mongohq.com/importing-exporting/local-to-mongohq.html" target="_blank"&gt;Migrar base de datos Local a MongoHQ&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="http://www.lornajane.net/posts/2011/importing-and-exporting-mongodb-databases" target="_blank"&gt;Uso de MongoDump y MongoRestore para Migraciones/Backups&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href="https://devcenter.heroku.com/articles/mongohq#adding-a-mongohq-database"&gt;Información General MongoHQ&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;3) Configuración y Deploy&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Una vez tengamos el paso de arriba configurado y listo, proseguimos añadiendo a nuestro archivo &lt;b&gt;config/mongoid.yml &lt;/b&gt;algo como:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="CodeRay" lang="ruby" style="background-color: #434e56; background-image: url(https://devcenter.heroku.com/assets/public/pre_code_background.png); background-repeat: repeat repeat; border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; border-top-left-radius: 3px; border-top-right-radius: 3px; border: 1px solid rgb(63, 70, 76); color: #f8f8f8; font-family: Monaco, monospace; font-size: 11px; line-height: 18px; margin-bottom: 22px; outline: 0px; overflow-y: auto; padding: 12px; vertical-align: baseline;"&gt;production:
  sessions:
    default:
      uri: &amp;lt;&lt;span class="string" style="background-color: transparent; border: 0px; color: #adc6ee; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"&gt;&lt;span class="delimiter" style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"&gt;%=&lt;/span&gt;&lt;span class="content" style="background-color: transparent; border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;"&gt; ENV['MONGOHQ_URL'] %&amp;gt;
      options:
        skip_version_check: true
        safe: true&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Guardamos y corremos los siguientes comandos:&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #111111; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #f3f3f3;"&gt;1
2&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #f3f3f3;"&gt;rake assets:precompile
rails s -e production
&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
Si salen errores, vemos el log de la consola y los corregimos. Abrimos nuestro navegador en el &lt;b&gt;http://localhost:3000&lt;/b&gt; habitual de rails y checamos que todo funcione como se espera... Recordemos que si teníamos records en la base de datos que usábamos para development y estos no están en la de producción es posible que las cosas fallen, hagan su&lt;b&gt; dump&lt;/b&gt;&amp;nbsp;de mongo primero antes de hacer el deploy y luego (ya con la app arriba) hagan el restore para evitar esto una vez colgados en heroku.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;NOTA: &lt;/b&gt;Ocuparás tu URI de acceso MongoHQ para sacar datos como tu usuario, contraseña y servidor en caso de hacer el proceso de dump/restore ya en la nube. Estos datos se obtienen con el comando &lt;b&gt;heroku config&lt;/b&gt;.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente con el comando:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;git push heroku master&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
subimos todo a heroku y abrimos la aplicación con heroku open. Si todo está bien, hemos terminado! y si no, tendremos que revisar nuestros logs con &lt;b&gt;heroku logs&lt;/b&gt; y tras corregir errores, reiniciar el servidor con &lt;b&gt;heroku restart&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=AMImhB9G-B0:QMav0QuRSsM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=AMImhB9G-B0:QMav0QuRSsM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=AMImhB9G-B0:QMav0QuRSsM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=AMImhB9G-B0:QMav0QuRSsM:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=AMImhB9G-B0:QMav0QuRSsM:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=AMImhB9G-B0:QMav0QuRSsM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/AMImhB9G-B0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/2816696341160808794/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/howto-deploy-gratuito-de-rails-mongoid.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/2816696341160808794?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/2816696341160808794?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/AMImhB9G-B0/howto-deploy-gratuito-de-rails-mongoid.html" title="[HowTo] Deploy Gratuito de Rails + Mongoid en Heroku" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-4xuOZ4f3diI/UW-u_dhVmxI/AAAAAAAAGqA/JvRYMXNUBGQ/s72-c/ADDONS.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/howto-deploy-gratuito-de-rails-mongoid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UGQnk8cCp7ImA9WhBVEE8.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-6805215689579855955</id><published>2013-04-15T07:22:00.000-05:00</published><updated>2013-04-15T07:33:43.778-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-15T07:33:43.778-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="desarrollo web" /><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB" /><category scheme="http://www.blogger.com/atom/ns#" term="mongoid" /><category scheme="http://www.blogger.com/atom/ns#" term="tutoriales" /><category scheme="http://www.blogger.com/atom/ns#" term="paypal" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby on Rails" /><category scheme="http://www.blogger.com/atom/ns#" term="webapps" /><category scheme="http://www.blogger.com/atom/ns#" term="Programación" /><title>Paypal y Rails: ¿Cómo cobrar desde tu aplicación web? [ESPECIAL]</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-JzgDRLkLgjQ/UWpZknYUV_I/AAAAAAAAGkU/O8oHuuaJiEM/s1600/Paypal-Rails.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-JzgDRLkLgjQ/UWpZknYUV_I/AAAAAAAAGkU/O8oHuuaJiEM/s1600/Paypal-Rails.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;i&gt;&lt;b&gt;NOTAS: &lt;/b&gt;Yo uso &lt;b&gt;&lt;a href="http://xenodesystems.blogspot.mx/2012/10/porque-amaras-mongodb-la-mejor-base-de.html" target="_blank"&gt;MongoDB &lt;/a&gt;&lt;/b&gt;como mi base de datos, entonces este tutorial está hecho asumiendo que tu backend es &lt;b&gt;&lt;a href="http://xenodesystems.blogspot.mx/2012/10/quicktut-usar-mongodb-en-rails-con.html" target="_blank"&gt;Mongoid&lt;/a&gt;&lt;/b&gt; y no ActiveRecord, por ejemplo aquí no verás migraciones. También es importante aclarar que en el caso de este post "card_bundle" es lo que vendemos y "card_bundle_sale" es nuestro "carrito" u "orden"&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
Este es un tutorial especial que voy a escribir mientras estoy programando una webapp para un cliente ya que considero que este es uno de los temas que generan más dudas entre los desarrolladores web allá afuera. Paypal puede ser intimidante, ¡Díganmelo a mi! Así que vamos paso por paso juntos:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;NOTA:&lt;/b&gt; Aquí no enseñaré cómo implementar una aplicación de compra-venta en Rails, ya que esta es una cuestión genérica que no se puede aglomerar en un solo tutorial para todos los casos. El propósito de este tutorial más bien es entregar un método lo más flexible posible para que cualquiera que esté construyendo una app de &lt;b&gt;e-commerce&lt;/b&gt; según su caso aplicado allá afuera pueda integrar cobros por Paypal en su aplicación web sin depender de un diseño o workflow previamente fijado.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
So, tienes una aplicación Rails donde quieres &lt;b&gt;de hecho&lt;/b&gt; cobrar dinero. En mi caso estoy construyendo una plataforma para ventas de viajes estilo BestDay para una agencia de reciente comienzo y la idea es poder vender directamente algunos paquetes desde la página web a las personas usando sus tarjetas de crédito. El &lt;i&gt;workflow&lt;/i&gt; "más básico" de un sitio de e-commerce es el siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;Ente a vender =&amp;gt; Órdenes =&amp;gt; Objeto de Venta (Carrito)&lt;/b&gt;&lt;/div&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
Por ejemplo, una aplicación donde se vendan playeras, la gente pueda elegir las que le gusten seleccionándolas con un checkbox (armando en el background un objeto de "orden") y finalmente se les muestra "un carrito" u objeto de venta que se utilizará como "la cuenta" del pedido. Los datos de este último son los que debemos pasarle a paypal, veamos cómo, paso por paso:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;1) Crea 2 cuentas en la sandbox de Paypal&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Necesitaremos una de vendedor y una de comprador, a ambas podemos ponerles el dinero "de mentiras" que queramos y otros atributos que consideremos necesarios. Las podemos crear en &lt;b&gt;&lt;a href="https://developer.paypal.com/" target="_blank"&gt;Paypal Developers&lt;/a&gt;&lt;/b&gt; en el apartado de &lt;b&gt;Applications &amp;gt; Sanbox Test Accounts&lt;/b&gt;. Una vez creadas podemos acceder a ellas desde el &lt;b&gt;&lt;a href="http://sandbox.paypal.com/" target="_blank"&gt;Paypal Sandbox&lt;/a&gt;&lt;/b&gt; para hacer las pruebas y corroboraciones pertinentes.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-tWnRUYc_MYo/UWpfCaZ91LI/AAAAAAAAGkk/RhrmSmnnbFQ/s1600/Selecci%C3%B3n_015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="220" src="http://3.bp.blogspot.com/-tWnRUYc_MYo/UWpfCaZ91LI/AAAAAAAAGkk/RhrmSmnnbFQ/s400/Selecci%C3%B3n_015.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;span style="font-size: x-large;"&gt;2) Website Payments Standard&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Vamos a integrar Paypal al checkout de nuestro carrito en la aplicación Rails, la manera más fácil sería por medio de &lt;b&gt;Website Payments Standard&lt;/b&gt; y por ahí comenzaremos. So, en mi app yo tengo una sección donde la persona puede escoger de una lista de varios items y darles una cantidad a cada uno para comprar más de uno de ese item. Lo que quiero hacer es que cada que alguien termine de armar una orden se le lleve a pagar esa orden con Paypal inmediatamente, ¿Cómo se hace?&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-99WfaxpKUIo/UWrxextvNpI/AAAAAAAAGk0/dCZt3-8m1p0/s1600/Selecci%C3%B3n_016.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="121" src="http://1.bp.blogspot.com/-99WfaxpKUIo/UWrxextvNpI/AAAAAAAAGk0/dCZt3-8m1p0/s400/Selecci%C3%B3n_016.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ciertamente no es difícil, en mi caso específico yo vendo un ente llamado "card_bundle" por medio de "card_bundle_sales" (órdenes, si quieres llamarlo así) y guardo el proceso de venta en la base de datos a manera de "sales" para tener una especie de registro de ventas hechas automáticamente. En mi caso lo que hice fue dejar un botón de submit normal en la parte de la aplicación donde la gente compra (obviamente sin diseño ni nada allá arriba) que al ser pulsado crea una venta nueva en mi registro de sales y por tanto popula un registro de "card_bundle_sale" que puedo utilizar para pasarle las variables adecuadas a paypal con respecto a la orden. Veamos el código usado para lograr esto:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Controlador Sales:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-i-zwMeAfgTY/UWr03iVRbDI/AAAAAAAAGlE/4QdekGbt_Wk/s1600/Selecci%C3%B3n_017.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="183" src="http://2.bp.blogspot.com/-i-zwMeAfgTY/UWr03iVRbDI/AAAAAAAAGlE/4QdekGbt_Wk/s400/Selecci%C3%B3n_017.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
De aquí nos interesa lo que aparece en la línea 29, básicamente le estoy diciendo al controlador que si una nueva venta se crea redireccione al usuario a la "paypal_url" especificando como argumento la URL de retorno que quiero para cuando la compra está completada (dentro del paréntesis).&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Modelo CardBundleSale&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
Para definir esa "Paypal URL" ocupo hacerlo en el modelo de mi ente que represente "una orden" en el sistema, en este caso es CardBundleSale. el código para ese método queda más o menos así:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://4.bp.blogspot.com/-3qjrk_rDGcA/UWr162t_mnI/AAAAAAAAGlU/nB2BAqYUFFw/s1600/Selecci%25C3%25B3n_018.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" height="162" src="http://4.bp.blogspot.com/-3qjrk_rDGcA/UWr162t_mnI/AAAAAAAAGlU/nB2BAqYUFFw/s400/Selecci%25C3%25B3n_018.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Aquí es donde la cosa se puede poner "intimidante" pues hay que checar la documentación de paypal, verán: El método que ven ahí arriba no hace otra cosa más que crear una URL de Paypal que podemos usar para cobrar. Daría lo mismo si esta data se le alimenta a Paypal por este método o bien, si usáramos un botón embedido nadamás, la data sería la misma. Cabe destacar que los valores en azul son valores que en mi opinión se deben pasar en cualquier caso, son "los de cajón" (por cierto, cmd siempre ha de estar definido como&lt;b&gt; '_xclick' &lt;/b&gt;para que la cosa funcione) Mientras que el método que itera sobre el array de items que estoy vendiendo es código muy específico para mi aplicación, tu tendrías que crear tu propio método iterante según el caso específico de tu escenario. A final de cuentas construimos nuestra URL y listo!&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Vista CardBundles#Index&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Por acá sólo tenemos el submit y ya:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-VtHoGFdT4A4/UWr5Yla9o4I/AAAAAAAAGlc/jWaM8xnVWYg/s1600/Selecci%C3%B3n_019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://1.bp.blogspot.com/-VtHoGFdT4A4/UWr5Yla9o4I/AAAAAAAAGlc/jWaM8xnVWYg/s400/Selecci%C3%B3n_019.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Como verán, nada de otro mundo en esta vista, creamos nuestro objeto "venta" (que a su vez popula una "orden" o "card_bundle_sale" y listo.&lt;br /&gt;
&lt;br /&gt;
Con este "arreglo" ya podemos empezar a vender desde nuestra app, Genial! Hagamos una prueba:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;video controls="controls" height="250" poster="video" preload="none" src="http://commondatastorage.googleapis.com/xenodecdn/PaypalExpressTest.ogv" width="500"&gt;&lt;/video&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Como verán, el pago procesa y todo, ¡Yay! pero &lt;b&gt;aún no podemos cantar victoria&lt;/b&gt;...&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;3) IPN&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Con las 3 cosas que preparamos arriba ya podemos hacer ventas en Paypal, pero esta implementación tiene grandes fallas: Para empezar, el hecho de registrar una venta en este caso (osea, generar una cotización que más tarde puede ser pagada en Paypal) no quiere decir necesariamente que la venta se haya realizado, por lo tanto, tenemos que tener una manera de rectificar que el pago de una "cotización" fue exitoso. Ahora, en mi caso uso un carrito volátil basado en sesiones, por lo que siempre que creo una venta éste se vacía por sí solo... En la mayoría de los casos si tu app tiene una fuerte integración con paypal o una implementación de cart tradicional esto no será así, por lo que debes generar un método que te permita limpiar el carro en el momento que &amp;nbsp;una orden fue pagada de manera que si el cliente quiere hacer otra los items anteriores no se le sumen a su total. Empecemos por reparar estas cuestiones:&lt;br /&gt;
&lt;br /&gt;
Para hacer que todo esto funcione como debe, tenemos que usar el servicio de&lt;b&gt; Instant Payment Notification &lt;/b&gt;o &lt;b&gt;IPN&lt;/b&gt; de Paypal y para esto, crearemos un nuevo recurso en nuestra aplicación:&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #111111; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #f3f3f3;"&gt;rails g scaffold payment_notification hash_params:hash card_bundle_sale_id:string status:string transaction_id:string&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Borramos todas las vistas de este recurso y nos vamos a su controlador, (mismo que tenemos que vaciar) para poner este código:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-RaXdMveVVY4/UWt51mINdGI/AAAAAAAAGng/CrPailqnjj4/s1600/FinalController.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="348" src="http://1.bp.blogspot.com/-RaXdMveVVY4/UWt51mINdGI/AAAAAAAAGng/CrPailqnjj4/s640/FinalController.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Recuerda pasar correctamente los atributos de tu cart_id (card_bundle_sale_id en este caso) y el hash de tus parámetros según tu caso práctico... Si estuviéramos usando ActiveRecord esto del hash se tendría que hacer serializando el atributo params del modelo para poder tener los parámetros que paypal nos suelte en un hash cuando lo ocupemos. En Mongoid no, porque MongoDB almacena todo en &lt;b&gt;&lt;a href="http://www.json.org/" target="_blank"&gt;JSON Objects&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Ahora configuramos nuestra notificación de pago&lt;b&gt; en su modelo&lt;/b&gt; y el código queda más o menos así:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-ok6r5JHk1qo/UWuAZoWJVSI/AAAAAAAAGoI/JQTNgiiIwQc/s1600/NotifInals.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="444" src="http://2.bp.blogspot.com/-ok6r5JHk1qo/UWuAZoWJVSI/AAAAAAAAGoI/JQTNgiiIwQc/s640/NotifInals.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
Aquí lo que estoy haciendo yo es crear un callback que hará que una vez creada una notificación de pago (al tener una compra exitosa por medio de paypal) marcará dicha compra como "pagada a tal hora" entonces en mi listado de ventas del que les hablé antes aparecerá la fecha y hora del pago y eso me permitirá saber 3 cosas: 1) si una orden está pagada 2) cuantas órdenes en promedio se pagan por c/u que se arma en la web y 3) cuándo le puedo contar al cliente como pagado su pedido. Para que esto fuera posible tuve que modificar mi modelo de &lt;b&gt;Card Bundle Sale&lt;/b&gt;&amp;nbsp;un poco y quedó así:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-m4PWjw04N6U/UWt6eYzPxMI/AAAAAAAAGnw/7EorhauYyjs/s1600/Carfsf.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="348" src="http://1.bp.blogspot.com/-m4PWjw04N6U/UWt6eYzPxMI/AAAAAAAAGnw/7EorhauYyjs/s640/Carfsf.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Lo que hice aquí fue añadirle las &lt;b&gt;Mongoid Timestaps&lt;/b&gt; al modelo para poder tener los atributos del campo &lt;b&gt;"purchased_at" &lt;/b&gt;funcionando y le añadí dicho campo al modelo, también lo añadí a la vista de &lt;b&gt;Sales#Index &lt;/b&gt;donde se registran todas mis "ventas" (o más bien "cotizaciones") para un control más estructurado y que los administradores puedan ver cuando algo ha sido pagado y exactamente en qué momento.&lt;br /&gt;
&lt;br /&gt;
Ahora necesitamos Limpiar el carro cada que se haga una compra exitosa. En mi caso esto no es necesario ya que mi carrito es "volátil" pero para aquellos que tengan un cart "hard_coded" algo como esto podría ayudarles, aclaro que esta es una de esas cosas que es muy específica de cada aplicación/contexto y puede que en tu caso esto aplique/te sirva o no, veamos:&lt;br /&gt;
&lt;br /&gt;
En el &lt;b&gt;application_controller&lt;/b&gt;:&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #0000aa;"&gt;def&lt;/span&gt; &lt;span style="color: #00aa00;"&gt;current_cart&lt;/span&gt;
  &lt;span style="color: #0000aa;"&gt;if&lt;/span&gt; session[&lt;span style="color: #0000aa;"&gt;:cart_id&lt;/span&gt;]
    &lt;span style="color: #aa0000;"&gt;@current_cart&lt;/span&gt; ||= &lt;span style="color: #aa0000;"&gt;Cart&lt;/span&gt;.find(session[&lt;span style="color: #0000aa;"&gt;:cart_id&lt;/span&gt;])
    session[&lt;span style="color: #0000aa;"&gt;:cart_id&lt;/span&gt;] = &lt;span style="color: #0000aa;"&gt;nil&lt;/span&gt; &lt;span style="color: #0000aa;"&gt;if&lt;/span&gt; &lt;span style="color: #aa0000;"&gt;@current_cart&lt;/span&gt;.purchased_at
  &lt;span style="color: #0000aa;"&gt;end&lt;/span&gt;
  &lt;span style="color: #0000aa;"&gt;if&lt;/span&gt; session[&lt;span style="color: #0000aa;"&gt;:cart_id&lt;/span&gt;].nil?
    &lt;span style="color: #aa0000;"&gt;@current_cart&lt;/span&gt; = &lt;span style="color: #aa0000;"&gt;Cart&lt;/span&gt;.create!
    session[&lt;span style="color: #0000aa;"&gt;:cart_id&lt;/span&gt;] = &lt;span style="color: #aa0000;"&gt;@current_cart&lt;/span&gt;.id
  &lt;span style="color: #0000aa;"&gt;end&lt;/span&gt;
  &lt;span style="color: #aa0000;"&gt;@current_cart&lt;/span&gt;
&lt;span style="color: #0000aa;"&gt;end&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Sólo nos queda hacer los cambios pertinentes a nuestro &lt;i&gt;workflow paypal&lt;/i&gt; y en mi caso fue así:&lt;br /&gt;
&lt;br /&gt;
Añadí el parámetro y argumento de &lt;b&gt;notify_url &lt;/b&gt;a mi método "paypal_url" en mi modelo de "orden" (card_bundle_sale en este caso):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-Zna62qnuR2g/UWt67dqV_8I/AAAAAAAAGn4/S07lOj0Xh4U/s1600/cardmethod.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://4.bp.blogspot.com/-Zna62qnuR2g/UWt67dqV_8I/AAAAAAAAGn4/S07lOj0Xh4U/s640/cardmethod.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
Luego en mi acción create de sale, le pasé la nueva ruta al &lt;b&gt;redirect_to&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-YmEiwNdvMAg/UWtkogsgNLI/AAAAAAAAGnQ/xKlP8VApYVY/s1600/ends.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://4.bp.blogspot.com/-YmEiwNdvMAg/UWtkogsgNLI/AAAAAAAAGnQ/xKlP8VApYVY/s640/ends.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Y finalmente, lo testeamos desde consola fingiendo una notificación directo al servidor con:&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #f8f8f8; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;curl -d &lt;span style="color: #4e9a06;"&gt;"txn_id=&lt;b&gt;ID_TXN&lt;/b&gt;&amp;amp;invoice=&lt;b&gt;ID_CART&lt;/b&gt;&amp;amp;payment_status=Completed"&lt;/span&gt; http://localhost:3000/payment_notifications
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Donde&lt;b&gt; ID_TXN&lt;/b&gt; es el id de transacción que te genera paypal al pagar e&lt;b&gt; ID_CART&lt;/b&gt; es el id de tu objeto cart, (en este caso card_bundle_sale) asociado a la venta en cuestión, veamos un ejemplo en vivo:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;video controls="controls" height="250" poster="video" preload="none" src="http://commondatastorage.googleapis.com/xenodecdn/IPNTest.ogv" width="500"&gt;&lt;/video&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
¡Bien! &lt;b&gt;Pero no hemos acabado todavía&lt;/b&gt; jajaajaja!&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;&lt;i&gt;4) Encriptación de operaciones&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Por muy bonito que se sienta el haber armado esto, &lt;b&gt;todavía no hemos terminado&lt;/b&gt;, ahora tenemos que evitar que alguien pueda alterar las transacciones pasando los parámetros de forma encriptada en lugar de por la pura URL. ¿Porqué? Porque si no lo hacemos así, nos pueden cambiar el precio de un producto y "llevárselo" por $0 y no queremos eso... Veamos pues:&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos será correr una secuencia de comandos para generar unos certificados SSL que usaremos para identificar nuestra webapp con Paypal:&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #f8f8f8; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
2
3
4
5
6&lt;/pre&gt;
&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #204a87;"&gt;cd &lt;/span&gt;myapp
mkdir certs
&lt;span style="color: #204a87;"&gt;cd &lt;/span&gt;certs
openssl genrsa -out app_key.pem 1024
openssl req -new -key app_key.pem -x509 -days 365 -out app_cert.pem
mv ~/Downloads/paypal_cert_pem.txt paypal_cert.pem
&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;NOTA:&lt;/b&gt; Necesitas tener OpenSSL instalado&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
(&lt;b&gt;"myapp"&lt;/b&gt; allá arriba se refiere al nombre de la carpeta de tu aplicación) El &lt;b&gt;5to comando&lt;/b&gt; nos pedirá unos cuantos datos, los rellenamos y proseguimos lléndonos a &lt;b&gt;"Perfil&amp;gt;Certificados para Sitio Web"&lt;/b&gt; (se puede llamar ligeramente la opción en cada una de las interfaces de paypal pero buscamos la de los &lt;b&gt;pagos codificados&lt;/b&gt; para ser exactos). En esta ventana añadiremos nuestro archivo&lt;b&gt; app_cert.pem&lt;/b&gt;, anotaremos el&lt;b&gt; id de certificado&lt;/b&gt; que paypal le dé y finalmente descargaremos el &lt;b&gt;certificado público de paypal&lt;/b&gt;&amp;nbsp;y lo guardamos en nuestro directorio "certs" de la aplicación, renombrándolo a &lt;b&gt;"paypal_cert.pem"&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-bqpw8Is09FM/UWuOQQwaHHI/AAAAAAAAGoY/EVu4tfEvs2s/s1600/paypalcert.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="344" src="http://1.bp.blogspot.com/-bqpw8Is09FM/UWuOQQwaHHI/AAAAAAAAGoY/EVu4tfEvs2s/s640/paypalcert.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Ahora cambiaremos un poco nuestro proceso de checkout y configuración de la aplicación. Al momento que estoy haciendo esto (pues es en vivo mientras trabajo) decidimos sí mostrar una página extra de confirmación de orden antes de enviar al cliente a pagar en esta app (hasta el momento no lo hemos hecho) puesto que paypal permite muy pocos parámetros de personalización para la página donde se muestra la información de la orden y eso no propicia una buena experiencia de usuario; Veamos entonces cómo quedó todo esto:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Archivo YAML&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Usaremos un archivo de configuración global YAML para pasar algunas de las variables que ocupamos para nuestro checkout de manera transparente y uniforme en nuestra aplicación. Para hacer esto, creamos 2 archivos:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;config/initializers/load_app_config.rb&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-rFW-SVk95IQ/UWulWJ_Z0mI/AAAAAAAAGoo/NfR2ofv7P5I/s1600/ConfigLoad.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="444" src="http://3.bp.blogspot.com/-rFW-SVk95IQ/UWulWJ_Z0mI/AAAAAAAAGoo/NfR2ofv7P5I/s640/ConfigLoad.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;config/app_config.yaml&lt;/b&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-0ATn2991B8w/UWumARhHxBI/AAAAAAAAGow/xLbpl8XJPK4/s1600/yams.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="444" src="http://3.bp.blogspot.com/-0ATn2991B8w/UWumARhHxBI/AAAAAAAAGow/xLbpl8XJPK4/s640/yams.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
El primer archivo simplemente le dice Rails donde encontrar al segundo y qué hacer con él. El segundo es un archivo a donde se mueven todas las variables usadas (o las más importantes pues) en el proceso de checkout, de manera que evitemos repetición y todo esté mejor organizado y limpio. Nótese que en el entorno de producción la URL de paypal se pasa a la normal y ya no a la del sandbox.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;NOTA:&lt;/b&gt; El "secret" puede ser lo que tú quieras.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Cambiando el proceso de Checkout&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora voy a cambiar mi proceso de checkout. Para esto, simplemente cambiaré el condicional de mi acción create de sale (esto en mi caso específico) para que una vez registrada una orden/venta en lugar de llevar el cliente a pagar directo a paypal lo lleve a revisar su orden en la vista show de la misma (la del card_bundle_sale que genera el cliente al armar su orden en nuestro caso):&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-sCt7U985bJM/UWun17p8CVI/AAAAAAAAGo8/diD9QFVUgpI/s1600/NewCreate.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="322" src="http://1.bp.blogspot.com/-sCt7U985bJM/UWun17p8CVI/AAAAAAAAGo8/diD9QFVUgpI/s640/NewCreate.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Y luego, en esa vista a donde mando el cliente crearé un botón de checkout especial que lo que hará será mandar un form con campos ocultos para poder generar el ente de checkout que necesitamos:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-FiZA4KBdqXI/UWuodR7ELSI/AAAAAAAAGpI/2trEwVNMMlg/s1600/Formacardbunds.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="134" src="http://4.bp.blogspot.com/-FiZA4KBdqXI/UWuodR7ELSI/AAAAAAAAGpI/2trEwVNMMlg/s640/Formacardbunds.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Aquí lo que hago es hacer una forma para armar la nueva &lt;b&gt;paypal_url encriptada&lt;/b&gt;, toma especialmente 2 campos que ocupa:&lt;b&gt; cmd &lt;/b&gt;y &lt;b&gt;encrypted&lt;/b&gt;. Puedes usar la misma forma en cualquier situación pero sólo recuerda cambiar mi "cart_bundle_sale" por el objeto que represente tu orden en tu escenario.&lt;br /&gt;
&lt;br /&gt;
Más tarde debemos cambiar los métodos y callbacks especiales de nuestro modelo que represente las órdenes (card_bundle_sales en este caso) por algo como esto:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src="http://pastebin.com/embed_iframe.php?i=xB5XQuiy" style="border: none; height: 80%; width: 100%;"&gt;&lt;/iframe&gt;
 &lt;br /&gt;
&lt;br /&gt;
Como verán, es básicamente el mismo archivo, pero ahora el método se llama &lt;b&gt;"paypal_encrypted"&lt;/b&gt; en lugar de &lt;b&gt;"paypal_url"&lt;/b&gt; y los parámetros que tenemos en el YAML son llamados como parámetros de la constante &lt;b&gt;[APP_CONFIG]&lt;/b&gt;, También añadimos el campo de &lt;b&gt;"cert_id"&lt;/b&gt; que no teníamos antes y al término de nuestro método iterante llamamos otro método que se llama &lt;b&gt;"encrypt_for_paypal"&lt;/b&gt; pasándole como argumento el resultado de nuestra iteración. Más abajo está definido el método encriptador y ése lo puedes copiar y pegar si quieres, funciona bien para todos los casos. Guardamos ese archivo y proseguimos:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;Accediendo a las variables del YAML&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora sólo nos queda cambiar nuestro callback en el modelo de &lt;b&gt;payment_notifications&lt;/b&gt; para que revise bien los atributos más importantes de la transacción y si es que todas nuestras ammm... "validaciones" pasan sin errores, haga su trabajo, (también podríamos programarlo para que si no pasa, nos mande un correo avisándonos o como quieran, pero yo lo dejé así), De igual manera ahora está configurado para usar nuestras variables globales, el dichoso callback queda así:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-cT9A9htJ3yI/UWvMRD-5VgI/AAAAAAAAGpo/tgtPzaZf2fA/s1600/finalafter.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/-cT9A9htJ3yI/UWvMRD-5VgI/AAAAAAAAGpo/tgtPzaZf2fA/s640/finalafter.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Una vez que hemos configurado esto, &lt;b&gt;¡hemos terminado oficialmente!&lt;/b&gt; Tenemos una integración completa, funcional y segura de Paypal en nuestro sitio/aplicación web...&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;Tuitea Esto:&lt;/span&gt;&lt;br /&gt;


&lt;blockquote class="tr_bq"&gt;
&lt;span style="font-size: x-large;"&gt;Integrar #Paypal con #Rails y no morir en el intento #Mongoid #DesarrolloWeb - http://bit.ly/XBYowb vía: @xenodesystems - &lt;b&gt;&lt;span style="color: #3d85c6;"&gt;&lt;a href="http://clicktotweet.com/Meidb" target="_blank"&gt;Tweet!&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;i&gt;P.D. Este tutorial está basado en las lecciones del increíble &lt;b&gt;Ryan Bates&lt;/b&gt; de &lt;b&gt;&lt;a href="http://railscasts.com/"&gt;railscasts.com&lt;/a&gt;&lt;/b&gt;, si quieres aprender más sobre la integración de paypal (o cualquier tema rails) te recomiendo que le eches un ojo a su sitio web, por cierto, este post se agregará a nuestro &lt;b&gt;&lt;a href="http://xenodesystems.blogspot.mx/2012/06/curso-gratuito-de-ruby-on-rails.html" target="_blank"&gt;curso gratuito de Ruby on Rails&lt;/a&gt;&lt;/b&gt; para que lo chequen desde el principio y aprendan Rails si quieren.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=utfqT1UQu1g:qmkg0_21FZs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=utfqT1UQu1g:qmkg0_21FZs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=utfqT1UQu1g:qmkg0_21FZs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=utfqT1UQu1g:qmkg0_21FZs:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=utfqT1UQu1g:qmkg0_21FZs:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=utfqT1UQu1g:qmkg0_21FZs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/utfqT1UQu1g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/6805215689579855955/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/paypal-y-rails-como-cobrar-desde-tu.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/6805215689579855955?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/6805215689579855955?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/utfqT1UQu1g/paypal-y-rails-como-cobrar-desde-tu.html" title="Paypal y Rails: ¿Cómo cobrar desde tu aplicación web? [ESPECIAL]" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-JzgDRLkLgjQ/UWpZknYUV_I/AAAAAAAAGkU/O8oHuuaJiEM/s72-c/Paypal-Rails.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/paypal-y-rails-como-cobrar-desde-tu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcHSXY_fip7ImA9WhBWGU0.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-8864649757816234671</id><published>2013-04-13T20:27:00.000-05:00</published><updated>2013-04-13T20:47:18.846-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-13T20:47:18.846-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="anécdotas" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="reparaciones" /><category scheme="http://www.blogger.com/atom/ns#" term="fsck" /><category scheme="http://www.blogger.com/atom/ns#" term="MicroSD" /><category scheme="http://www.blogger.com/atom/ns#" term="Sistema Operativo" /><title>La extraña historia de la MicroSD infinita y cómo reparar un directorio que se convirtió en archivo en Linux</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-0Hfk4TD8zzs/UWoF5QCF7EI/AAAAAAAAGkA/3Qa1ArW3s7g/s1600/MicroSD_card_2GB_focus-stacked.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="213" src="http://2.bp.blogspot.com/-0Hfk4TD8zzs/UWoF5QCF7EI/AAAAAAAAGkA/3Qa1ArW3s7g/s320/MicroSD_card_2GB_focus-stacked.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Hace rato me trajeron a revisar una MicroSD con un problema muy peculiar: Tenía una especie de virus o error bastante curioso que hacía que todas las carpetas se multiplicaran infinitamente hasta que (en el caso de windows) la ruta fuera tan larga que no se pudiera accesar, y los archivos de la SD en teoría estaban hasta el fondo porque aunque todas estas carpetas señuelo estaban vacías, la SD tenía 2GB llenos y eso tenía lógica pues estaba llena de videos según me comentó el cliente.&lt;br /&gt;
&lt;br /&gt;
Cuando escuché del problema lo primero que pensé fue "voy a usar&lt;b&gt; ls, find&lt;/b&gt; o algún comando similar para saber donde están los archivos y extraerlos desde la consola" pero el loop era infinito y cada que accesabas a una carpeta se creaba otra del mismo nombre infinitamente impidiendo que vieras los archivos. Intenté usar varios métodos para listar directorios y archivos pero sólo conseguía lo mismo: Loop infinito, incluso me pareció extraño porque intenté conectar una USB aparte (en mi máquina Linux donde estaba arreglando esto) y de pronto el proceso del loop se apoderó de ella (no dejándome extraerla con seguridad ni nada) pero no se infectó con el virus obviamente. Después de unos minutos de tener la MicroSD montada, la RAM se empezó a saturar, pues el proceso continuaba infinitamente y tuve que cerrar la sesión.&lt;br /&gt;
&lt;br /&gt;
Cierro la sesión y al volver me doy cuenta de que alguno de los comandos de lectura que apliqué desde la consola al Filesystem había activado un proceso como de protección del virus que la MicroSD tenía y me había convertido mis directorios en "datos brutos" que a simple vista son archivos ilegibles con nombres súper extraños y el filesystem se había vuelto de sólo lectura, por lo que ni cambiar el nombre de éstos podía.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;&lt;i&gt;Cómo lo reparé:&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
En este momento, había dado todo por perdido pero el cliente (que resulta ser una amiga mía de mucha confianza) estaba viéndome trabajar y estaba súper consternada porque esos videos eran un trabajo final para la universidad, por lo que fingí que no pasaba nada malo y continué.&lt;br /&gt;
&lt;br /&gt;
Los directorios (carpetas) de la MicroSD se habían vuelto archivos de &lt;b&gt;data pura&lt;/b&gt; que eran ilegibles para cualquier programa pero guardaban &lt;i&gt;en su escencia&lt;/i&gt; (a juzgar por el diálogo de propiedades) su alma de "directorio" Esto es complicado de explicar, pero imagínense un archivo binario ilegible que dentro tiene "nada" con un nombre como "á.é.í.O.ü.." (sin extensión) que al darle en propiedades nos dice que es un "ente" del tipo carpeta. Por otro lado no podía ni cambiarles el nombre ya que el Filesystem se había vuelto &lt;b&gt;de sólo lectura&lt;/b&gt; y por tanto NI ROOT tenía poder sobre la MicroSD. Lo primero que pensé por esto fue hacer un "remontaje" con el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo mount -o remount,rw &amp;nbsp;'/ruta/a/MicroSD'&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;div&gt;
Cosa que me volvió el filesystem legible y pude cambiar los nombres de todas las carpetas de jalón, pero al hacerlo perdieron su condición de directorio y se habían convertido en NADA. Si al principio estábamos mal, este era el final jajaajaja!.... Ya estaba por rendirme cuando seguí investigando y me topé con el caso de un tipo al que le pasó esto pero en su disco duro, la parte importante de su anécdota decía:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;i&gt;The fix for me was to reboot into level 3 as root and unmount /home, then running an fsck -f on the hard drive, then I rebooted and the files had been converted back into directories and none of my files were lost or corrupted.&lt;/i&gt;&lt;/blockquote&gt;
&lt;div&gt;
So, eso me animó. Abrí Gparted, chequé la ruta "/dev" de la MicroSD problemática y le pasé una barrida con &lt;b&gt;fsck&lt;/b&gt; (para ser sinceros no me di cuenta de si estaba montada o no en ese momento, asumo que no) con el siguiente comando:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo dosfsck -w -r -l -a -v -t /dev/sdcX&lt;/b&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Y voilá!&lt;/b&gt; retiro la MicroSD, la vuelvo a introducir y entre todos los datos en bruto "vomitados" después de la reparación con fsck salen los archivos de la muchacha. Pero la cosa no acabó ahí: Debido a que son archivos "Reintegrados" tuve que tomar todos los que fueran videos (que resultaron estar en un formato "bruto" llamado REC) Y abrirlos 1 por 1 con VLC para que "vomitaran" los metadatos sobrantes. Esto igual es difícil de explicar, pero en resumen, cuando esto pasa se tiene que abrir cada uno de los archivos rescatados para que "vomite" metadatos sobrantes (algún thumbnail o data pura) y una vez abiertos y verificados (ya soltando los extras) el archivo queda 100% listo para su uso. En el caso de estos videos los revisé con VLC y los convertí de REC a AVI con &lt;b&gt;FFmpeg&lt;/b&gt; para que la muchacha los pudiera trabajar (ya que más bien la cámara los guardaba en MOV pero por el proceso de restauración quedaron en un formato bruto que difícilmente se puede trabajar con plataformas diferentes a Linux para lo que ella necesitaba (edición de los videos con algún software básico).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Y aquí termina mi anécdota del día, me pareció algo bastante curioso que tenía que compartirles, a ver si algún día les sirve esta experiencia que relaté.&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=ef3cLxppwag:sQR8jW7c6dc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=ef3cLxppwag:sQR8jW7c6dc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=ef3cLxppwag:sQR8jW7c6dc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=ef3cLxppwag:sQR8jW7c6dc:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=ef3cLxppwag:sQR8jW7c6dc:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=ef3cLxppwag:sQR8jW7c6dc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/ef3cLxppwag" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/8864649757816234671/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/la-extrana-historia-de-la-microsd.html#comment-form" title="10 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/8864649757816234671?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/8864649757816234671?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/ef3cLxppwag/la-extrana-historia-de-la-microsd.html" title="La extraña historia de la MicroSD infinita y cómo reparar un directorio que se convirtió en archivo en Linux" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-0Hfk4TD8zzs/UWoF5QCF7EI/AAAAAAAAGkA/3Qa1ArW3s7g/s72-c/MicroSD_card_2GB_focus-stacked.jpg" height="72" width="72" /><thr:total>10</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/la-extrana-historia-de-la-microsd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4BRH8yeyp7ImA9WhBWGE0.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-3404539531003746818</id><published>2013-04-12T17:47:00.001-05:00</published><updated>2013-04-12T17:49:15.193-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-12T17:49:15.193-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="palette" /><category scheme="http://www.blogger.com/atom/ns#" term="Extensiones" /><category scheme="http://www.blogger.com/atom/ns#" term="diseño" /><category scheme="http://www.blogger.com/atom/ns#" term="diseño web" /><category scheme="http://www.blogger.com/atom/ns#" term="Chrome" /><title>[Diseño Web] Obtener paleta de colores de/para un sitio web</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-Xfi0XhtNIMY/UWiPTUM3dUI/AAAAAAAAGjw/6HCNpnjPZZU/s1600/palette.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://4.bp.blogspot.com/-Xfi0XhtNIMY/UWiPTUM3dUI/AAAAAAAAGjw/6HCNpnjPZZU/s320/palette.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Este es un tip bastante sencillo que me gusta utilizar cuando estoy diseñando algo y de pronto me encuentro con que "me faltan colores" para acabar de formar un sitio web o diseño. También me he encontrado con que veo un sitio web y me gustan sus colores y pienso en usarlos o combinarlos con otros para hacer un nuevo diseño pero quiero saber cuáles son sin hacerles pick uno por uno... De igual manera a veces armo un logo por ejemplo y quiero usar esos mismos colores para armar la web del cliente, pero necesito lo más posible en espectro para armar dicho diseño de página; A continuación, les enseñaré cómo es que lidio con estas situaciones&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: x-large;"&gt;&lt;i&gt;Obteniendo colores&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Para resolver esto, es tan simple como tomar una foto a pantalla completa de mi diseño o sitio web deseado en Chrome y utilizar la &lt;b&gt;&lt;a href="https://chrome.google.com/webstore/detail/palette-for-chrome/oolpphfmdmjbojolagcbgdemojhcnlod?hl=es" target="_blank"&gt;extensión palette&lt;/a&gt;&lt;/b&gt; para revelarme todos los colores posibles en combinación, veamos entonces:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Tomo la captura&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-AyXrv_vXvpk/UWiF4pOgbPI/AAAAAAAAGjA/0srSLdJcDuc/s1600/CTravel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="458" src="http://1.bp.blogspot.com/-AyXrv_vXvpk/UWiF4pOgbPI/AAAAAAAAGjA/0srSLdJcDuc/s640/CTravel.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Nótese que omití todas las partes del navegador web, en este caso es la web de una agencia de viajes que estoy haciendo ahorita y me hacen falta colores para el nuevo logotipo que voy a armar. Tomas la captura de una parte que tenga la mayoría de colores disponible de tu paleta actual y entonces te instalas la extensión &lt;b&gt;&lt;a href="https://chrome.google.com/webstore/detail/palette-for-chrome/oolpphfmdmjbojolagcbgdemojhcnlod?hl=es" target="_blank"&gt;Palette para chrome&lt;/a&gt;&lt;/b&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Subo la imagen a algún lado&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Puede ser a donde quieras, lo que necesitamos es que resuelva a una URL para que palette le pueda sacar los colores, lo hacemos y abrimos la URL que resuelve a la imagen en el navegador. Le damos click secundario del ratón y le pedimos a Palette que nos dé una paleta personalizada:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-sNLRKWsEyA4/UWiIqOh-TXI/AAAAAAAAGjM/9NpE0jy3j_A/s1600/Palettes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="512" src="http://2.bp.blogspot.com/-sNLRKWsEyA4/UWiIqOh-TXI/AAAAAAAAGjM/9NpE0jy3j_A/s640/Palettes.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Obtengo mi paleta&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Ahora ya puedo elegir de cuántos colores quiero mi paleta (de 8 a 64) y el resultado es el siguiente:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-ctuh5LtZ0oo/UWiKpLKbXXI/AAAAAAAAGjc/AHSAbt64uBk/s1600/paletacts.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://1.bp.blogspot.com/-ctuh5LtZ0oo/UWiKpLKbXXI/AAAAAAAAGjc/AHSAbt64uBk/s640/paletacts.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
En este caso sólo saqué 30 colores, pero puedo sacar más si lo considero pertinente. Con este método podemos obtener una paleta de colores amplia a partir de cualquier imagen en la web y así complementar nuestros diseños, partiendo las imágenes o capturas en los diversos colores que las forman.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=1izQBO9c0jg:mDwoIMC6LUI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=1izQBO9c0jg:mDwoIMC6LUI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=1izQBO9c0jg:mDwoIMC6LUI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=1izQBO9c0jg:mDwoIMC6LUI:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=1izQBO9c0jg:mDwoIMC6LUI:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=1izQBO9c0jg:mDwoIMC6LUI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/1izQBO9c0jg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/3404539531003746818/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/diseno-web-obtener-paleta-de-colores.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/3404539531003746818?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/3404539531003746818?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/1izQBO9c0jg/diseno-web-obtener-paleta-de-colores.html" title="[Diseño Web] Obtener paleta de colores de/para un sitio web" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-Xfi0XhtNIMY/UWiPTUM3dUI/AAAAAAAAGjw/6HCNpnjPZZU/s72-c/palette.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/diseno-web-obtener-paleta-de-colores.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8ERXw4eip7ImA9WhBWFEk.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-4023189058022599206</id><published>2013-04-08T13:13:00.001-05:00</published><updated>2013-04-08T13:13:24.232-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-08T13:13:24.232-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Viral" /><category scheme="http://www.blogger.com/atom/ns#" term="Videos" /><category scheme="http://www.blogger.com/atom/ns#" term="filosofía" /><category scheme="http://www.blogger.com/atom/ns#" term="existencialismo" /><category scheme="http://www.blogger.com/atom/ns#" term="off-topic" /><category scheme="http://www.blogger.com/atom/ns#" term="Youtube" /><title> Tómate 5 minutos para entender TU VIDA... [VIDEO]</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-_STN6KoLG3I/UWJ6sC6pqpI/AAAAAAAAGhc/L9u3QJwIXhQ/s1600/dws-t-is-one-Existentialism.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-_STN6KoLG3I/UWJ6sC6pqpI/AAAAAAAAGhc/L9u3QJwIXhQ/s1600/dws-t-is-one-Existentialism.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;A Deep And Awesome View on life from a 9-Year-Old Boy&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
No suelo hacer esta clase de posts, pero la verdad este video me impactó un tanto... Lo encontré navegando por la red y últimamente se ha hecho muy viral, se trata de un video donde un niño de &lt;b&gt;9 años &lt;/b&gt;nos explica qué es lo que él opina acerca de una cantidad de temas de existencialismo tales como:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;¿Quiénes somos?&lt;/li&gt;
&lt;li&gt;¿De dónde venimos y hacia dónde vamos?&lt;/li&gt;
&lt;li&gt;¿Hay un destino escrito?&lt;/li&gt;
&lt;li&gt;¿Cuál es el significado de la vida?&amp;nbsp;&lt;/li&gt;
&lt;li&gt;¿Hay vida en otros planetas?&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
y demás cuestiones similares... Aunque es tentador pensar que el material estaba ensayado, viéndolo con los ojos de un &lt;b&gt;espectador&lt;/b&gt; y no de un &lt;b&gt;escéptico&lt;/b&gt;, más allá de todo, creo que el planteamiento que el niño da sobre los diversos temas comentados es algo muy válido e interesante ya que nos habla de todos estos temas sin necesidad de meter cuestiones como divinidad, sociología u otros factores externos de los que un adulto se agarraría para dar una explicación similar al respecto contaminada de algún modo con una serie de ideologías "precargadas" a lo largo de su vida.&lt;br /&gt;
&lt;br /&gt;
Tarde que temprano, todos entramos en una etapa donde queremos respuestas de un montón de cosas que escapan de nuestro control... Yo estaba pensando justamente en temáticas similares cuando de pronto, me topé con el video, me gustó y se los comparto (Está en inglés). Me gustaría que se tomaran 5 minutos de su día para verlo y si quieren podemos plantear diversas opiniones en los comentarios, eso sería enriquecedor ;)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://img.youtube.com/vi/aNIjPA-0yZ4/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://youtube.googleapis.com/v/aNIjPA-0yZ4&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://youtube.googleapis.com/v/aNIjPA-0yZ4&amp;source=uds" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;¡Que tengan un buen día!&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=C07AcRMwFas:Q9dyzdhO68k:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=C07AcRMwFas:Q9dyzdhO68k:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=C07AcRMwFas:Q9dyzdhO68k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=C07AcRMwFas:Q9dyzdhO68k:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=C07AcRMwFas:Q9dyzdhO68k:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=C07AcRMwFas:Q9dyzdhO68k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/C07AcRMwFas" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/4023189058022599206/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/tomate-5-minutos-para-entender-tu-vida.html#comment-form" title="2 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/4023189058022599206?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/4023189058022599206?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/C07AcRMwFas/tomate-5-minutos-para-entender-tu-vida.html" title=" Tómate 5 minutos para entender TU VIDA... [VIDEO]" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-_STN6KoLG3I/UWJ6sC6pqpI/AAAAAAAAGhc/L9u3QJwIXhQ/s72-c/dws-t-is-one-Existentialism.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/tomate-5-minutos-para-entender-tu-vida.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08ASX88fip7ImA9WhBWE0U.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-8583359615579088874</id><published>2013-04-07T19:44:00.000-05:00</published><updated>2013-04-07T19:44:08.176-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-07T19:44:08.176-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="desarrollo web" /><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="Google App Engine" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="webapps" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="Sistema Operativo" /><category scheme="http://www.blogger.com/atom/ns#" term="opensource" /><title>Instalar Google App Engine (Launcher y SDK's) en Linux</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-DFl0DCB9tzU/TfvCx-6WC-I/AAAAAAAAA7c/nnCzp7YXkMA/s1600/GoogleAppEngineLinux.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="146" src="http://3.bp.blogspot.com/-DFl0DCB9tzU/TfvCx-6WC-I/AAAAAAAAA7c/nnCzp7YXkMA/s320/GoogleAppEngineLinux.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href="https://developers.google.com/appengine/?hl=es" target="_blank"&gt;Google App Engine&lt;/a&gt;&lt;/b&gt; es algo que me gusta muchísimo: Se trata de una plataforma de desarrollo para aplicaciones web que corren dentro de la nube de Google. GAE tiene muchísimo potencial, al soportar lenguajes como Python y Java (además de todos los que se pueden implementar por medio de "mashups" de Java como PHP y Ruby por sólo mencionar algunos); Nos permite dar rienda suelta a nuestra imaginación y trabajar &lt;b&gt;por una web mejor&lt;/b&gt; completamente gratis.&lt;br /&gt;
&lt;br /&gt;
El motivo de éste post es mostrarle a los usuarios de App Engine cómo tener todo un entorno de trabajo completo para usar ésta plataforma dentro de Linux, enseñándoles cómo trabajar con los &lt;b&gt;SDK de Python y Java&lt;/b&gt;, además de cómo instalar el &lt;b&gt;Google App Engine Launcher&lt;/b&gt; dentro de su distribución Linux favorita y armar un set de aplicaciones útiles para comenzar a desarrollar cómodamente. Comencemos:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;&lt;i&gt;1) Preparando el entorno&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;NOTA:&lt;/b&gt; Antes que nada, debemos instalar los 2 lenguajes base de App Engine en nuestra Distro; Python viene de serie en prácticamente todas las distros, y en el caso de java, basta con buscar los nombres "openjdk" y "icedtea" en nuestro gestor de paquetes para instalar los paquetes necesarios según la distro (Necesitaremos el JDK, el JRE y el plugin para web además de los paquetes devel). Una vez instalados los lenguajes, podemos comenzar:&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Lo primero que haremos será crear una carpeta llamada &lt;b&gt;"GoogleAppEngine"&lt;/b&gt; dentro de nuestra carpeta personal, después &lt;b&gt;&lt;a href="https://code.google.com/intl/es-ES/appengine/downloads.html" target="_blank"&gt;Descargaremos los dos SDK&lt;/a&gt;&lt;/b&gt; disponibles, para &lt;b&gt;Python y Java&lt;/b&gt; y los extraeremos dentro de ésta carpeta recién creada. Tras descargados y extraídos, podemos eliminar los comprimidos ZIP de cada uno y cambiamos el nombre a las carpetas resultantes de la extracción a&amp;nbsp;&lt;b&gt;"GAE-PythonSDK"&lt;/b&gt; y &lt;b&gt;"GAE-JavaSDK" &lt;/b&gt;respectivamente.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: x-large;"&gt;2) Instalando el Google App Engine Launcher&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Para ésto necesitaremos instalar dos paquetes primero en nuestra distro (dependiendo la distro, los comandos de instalación cambian) en éste ejemplo usaré &lt;b&gt;Fedora &lt;/b&gt;como distro de trabajo por motivos de comodidad; Pero si no usan Fedora, sólo deben cambiar el comando de instalación por el que se ocupe en su distribución de turno con su gestor de paquetes:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
2&lt;/pre&gt;
&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;sudo yum -y install subversion 
sudo yum -y install python-wxversion wxPython
&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
Tras conseguido el software necesario para trabajar con el launcher, lo descargamos en nuestra carpeta &lt;b&gt;"GoogleAppEngine"&lt;/b&gt; con:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;1
2&lt;/pre&gt;
&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;cd ~/GoogleAppEngine
svn co http://google-appengine-wx-launcher.googlecode.com/svn/trunk
&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
Nos daremos cuenta que ésto nos genera una carpeta llamada &lt;b&gt;"trunk"&lt;/b&gt; dentro de la carpeta &lt;b&gt;"GoogleAppEngine"&lt;/b&gt;, renombramos ésa carpeta &lt;b&gt;"trunk" &lt;/b&gt;como &lt;b&gt;"GAE-Launcher" &lt;/b&gt;y podemos proseguir creando un lanzador en nuestro escritorio (o menú de aplicaciones) si así lo queremos. Los datos que podemos requerir serían:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Nombre:&lt;/b&gt; &lt;i&gt;Google App Engine Launcher&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Descripción:&lt;/b&gt; &lt;i&gt;Google App Engine Launcher&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Orden:&lt;/b&gt;&amp;nbsp;&lt;i&gt;~/GoogleAppEngine/GAE-Launcher/GoogleAppEngineLauncher.py&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ruta de Trabajo:&lt;/b&gt;&amp;nbsp;&lt;i&gt;~/GoogleAppEngine/GAE-Launcher&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Ícono:&lt;/b&gt;&amp;nbsp;&lt;i&gt;&lt;a href="http://goo.gl/Tn1yk"&gt;http://goo.gl/Tn1yk&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style="font-size: x-large;"&gt;3) Aplicando Configuraciones necesarias&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora tenemos que ejecutar el Google App Engine Launcher, y modificar ciertas preferencias. Lo abrimos y nos mostrará una advertencia de que faltan algunas cosas como ésta:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-0oWecq2oHjg/TfvKMov-O2I/AAAAAAAAA7o/wTyXQ9xdNzY/s1600/WarningAppEngine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="370" src="http://2.bp.blogspot.com/-0oWecq2oHjg/TfvKMov-O2I/AAAAAAAAA7o/wTyXQ9xdNzY/s400/WarningAppEngine.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Le damos aceptar y en el Launcher nos vamos a &lt;b&gt;"Edit&amp;gt;Preferences" &lt;/b&gt;en la ventana que aparecerá tenemos que tener los siguientes parámetros configurados:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-6HvHjuAmraE/TfvIWe7cmbI/AAAAAAAAA7k/G1u4tPL99wA/s1600/PreferencesAppEngine.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="276" src="http://2.bp.blogspot.com/-6HvHjuAmraE/TfvIWe7cmbI/AAAAAAAAA7k/G1u4tPL99wA/s400/PreferencesAppEngine.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Recuerden cambiar&lt;b&gt; "user"&lt;/b&gt; por su nombre de usuario en la ruta del &lt;b&gt;"App Engine SDK"&lt;/b&gt;, los campos de &lt;b&gt;"Editor"&lt;/b&gt; y &lt;b&gt;"Deployment Server" &lt;/b&gt;como pueden ver en la imagen se dejan vacíos. Hecho ésto, cerramos y volvemos a abrir el Launcher y entonces podemos empezar a trabajar con Google App Engine desde una interfaz gráfica, añadir nuevas aplicaciones y demás.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;i&gt;&lt;b&gt;NOTA: &lt;/b&gt;Para que las aplicaciones puedan ser gestionadas desde el Launcher, primero hay que copiar sus respectivas carpetas a &lt;b&gt;/home/user/GoogleAppEngine/Python-JavaSDK&lt;/b&gt; Según el entorno que estemos utilizando, las aplicaciones que tengan base Python obvio irían a &lt;b&gt;"GAE-PythonSDK"&lt;/b&gt; y las base Java obvio van para &lt;b&gt;"GAE-JavaSDK"&lt;/b&gt;; Recuerden que la ruta de aplicación que deben de dar al launcher es la de la carpeta copiada dentro del directorio del SDK correspondiente según el lenguaje que estemos usando para desarrollar...&lt;/i&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;i&gt;&lt;span style="font-size: x-large;"&gt;Extra: Herramientas de Trabajo&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Para desarrollar Aplicaciones GAE en Linux, sólo necesitarás algunos programas como:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;b&gt;Editor de Texto Kate/Kwrite/Gedit&lt;/b&gt;&amp;nbsp;- Vienen en los repos de todas las distros, Kwrite y Gedit suelen venir pre-instalados, en mi opinión personal, &lt;b&gt;&lt;a href="http://xenodesystems.blogspot.mx/2012/06/transforma-gedit-en-un-ide-perfecto.html" target="_blank"&gt;Gedit vitaminado&lt;/a&gt;&lt;/b&gt; es la mejor opción para desarrollar.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;b&gt;Editor Web Bluefish&lt;/b&gt;&amp;nbsp;-&amp;nbsp;&lt;a href="http://bluefish.openoffice.nl/index.html"&gt;http://bluefish.openoffice.nl/index.html&lt;/a&gt;&amp;nbsp;(Está desde repos en cualquier distro)&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Acá les dejo un Screenshot de mi Google App Engine funcionando sobre de &lt;b&gt;Fedora KDE&lt;/b&gt;:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-y54z8ZMPRWo/TfvUtjYB67I/AAAAAAAAA70/IUDoPg4sCCI/s1600/AppEngineF15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://1.bp.blogspot.com/-y54z8ZMPRWo/TfvUtjYB67I/AAAAAAAAA70/IUDoPg4sCCI/s640/AppEngineF15.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;i&gt;P.D. Como muchos de ustedes quizá ya saben, App Engine ya también tiene soporte para el lenguaje de programación "Go" de Google, pero como no encontré mucha información sobre éste no lo traté en éste post.&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=XNvjPFAz6FY:jXHEYSSF-X4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=XNvjPFAz6FY:jXHEYSSF-X4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=XNvjPFAz6FY:jXHEYSSF-X4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=XNvjPFAz6FY:jXHEYSSF-X4:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=XNvjPFAz6FY:jXHEYSSF-X4:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=XNvjPFAz6FY:jXHEYSSF-X4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/XNvjPFAz6FY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/8583359615579088874/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/instalar-google-app-engine-launcher-y.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/8583359615579088874?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/8583359615579088874?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/XNvjPFAz6FY/instalar-google-app-engine-launcher-y.html" title="Instalar Google App Engine (Launcher y SDK's) en Linux" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-DFl0DCB9tzU/TfvCx-6WC-I/AAAAAAAAA7c/nnCzp7YXkMA/s72-c/GoogleAppEngineLinux.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/instalar-google-app-engine-launcher-y.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04DRn88eyp7ImA9WhBWEk0.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-7430040015942216876</id><published>2013-04-05T16:46:00.000-06:00</published><updated>2013-04-05T16:46:17.173-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-05T16:46:17.173-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="QuickTip" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="gksu" /><category scheme="http://www.blogger.com/atom/ns#" term="fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="Sistema Operativo" /><category scheme="http://www.blogger.com/atom/ns#" term="terminal" /><category scheme="http://www.blogger.com/atom/ns#" term="gksudo" /><category scheme="http://www.blogger.com/atom/ns#" term="root" /><title>[QuickTip] Cómo hacer gksudo/gksu en Fedora</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-wGB7vqcqcMs/UV9T-cC_-KI/AAAAAAAAGf0/RcwC7lKqbg0/s1600/seleccin007.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="109" src="http://3.bp.blogspot.com/-wGB7vqcqcMs/UV9T-cC_-KI/AAAAAAAAGf0/RcwC7lKqbg0/s320/seleccin007.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
Para los que no lo hayan notado, en fedora no es posible hacer&lt;b&gt; "gksudo/gksu"&lt;/b&gt; directamente, esto es por motivos de seguridad. Lo que hacen estos comandos es permitirnos usar aplicaciones gráficas en modo root, tales como el gestor de archivos. La diferencia entre esto y hacer sudo directamente radica precisamente en que los comandos de arriba son específicos para acceso gráfico root mientras que sudo debería ser usado para la terminal más que nada.&lt;br /&gt;
&lt;br /&gt;
En Fedora no existen los comandos antes mencionados pero si tenemos una alternativa llamada &lt;b&gt;beesu&lt;/b&gt;. Para poder usar &lt;b&gt;beesu&lt;/b&gt;, se instala primero:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo yum -y install beesu&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
y luego ya se puede usar cómo usaríamos normalmente &lt;b&gt;"gksudo/gksu"&lt;/b&gt; por ejemplo:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;beesu nautilus&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Nos abriría el gestor de archivos nautilus en modo root. Cabe destacar que os usuarios de KDE por otro lado, sí pueden usar &lt;b&gt;kdesu&lt;/b&gt; (alternativa a gksudo en KDE) sin problemas en Fedora. Este tip es necesario para los demás entornos de escritorio solamente.&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=-tE_2uGuBTk:XV8c7NkzU94:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=-tE_2uGuBTk:XV8c7NkzU94:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=-tE_2uGuBTk:XV8c7NkzU94:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=-tE_2uGuBTk:XV8c7NkzU94:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=-tE_2uGuBTk:XV8c7NkzU94:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=-tE_2uGuBTk:XV8c7NkzU94:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/-tE_2uGuBTk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/7430040015942216876/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/quicktip-como-hacer-gksudogksu-en-fedora.html#comment-form" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/7430040015942216876?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/7430040015942216876?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/-tE_2uGuBTk/quicktip-como-hacer-gksudogksu-en-fedora.html" title="[QuickTip] Cómo hacer gksudo/gksu en Fedora" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-wGB7vqcqcMs/UV9T-cC_-KI/AAAAAAAAGf0/RcwC7lKqbg0/s72-c/seleccin007.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/quicktip-como-hacer-gksudogksu-en-fedora.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AEQXo5eCp7ImA9WhBWEk0.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-2419293059115293845</id><published>2013-04-04T13:53:00.002-06:00</published><updated>2013-04-05T16:41:40.420-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-05T16:41:40.420-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Firewall" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="Sistema Operativo" /><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad" /><title>Un mejor Firewall para Fedora 18 o superior</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-Hs8MG-GqFx0/UV3ZxLakVzI/AAAAAAAAGe0/SwX2q8u0IHQ/s1600/Firewall.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="178" src="http://1.bp.blogspot.com/-Hs8MG-GqFx0/UV3ZxLakVzI/AAAAAAAAGe0/SwX2q8u0IHQ/s320/Firewall.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;&lt;span style="color: #cc0000;"&gt;Actualización:&lt;/span&gt; Mi problema comentado con Firewalld en este post se debía a que estaba guardando mis preferencias en la configuración no persistente para la sesión, pero como bien nos dicen en los comentarios, hay un setup persistente disponible en la GUI de Firewalld al que nos tenemos que ir si queremos crear reglas fijas directamente. Cada día se aprende algo nuevo, aunque la verdad, me quedo con el clásico aún así ;)&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
El Firewall que viene desde la salida de Fedora 18 es nuevo con respecto del que teníamos en Fedora 17. Se llama &lt;b&gt;Firewalld&lt;/b&gt; y aunque se supone que se integró como una mejora, la verdad es que está lejos (a mi parecer) de ensombrecer al antiguo. En mi caso específico&amp;nbsp;&lt;b&gt;no me gusta&lt;/b&gt; Firewalld porque no guarda las configuraciones que hacemos tras un reinicio o cierre de sesión. Quizá es un bug menor o quizá me estoy saltando algo pero en mi caso nada más no me funciona bien.&lt;br /&gt;
&lt;br /&gt;
Personalmente, les recomiendo volver a la antigua GUI para manejo de Firewall en Fedora 18 o superior (&lt;b&gt;system-config-firewall&lt;/b&gt;) y esto se hace de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;1) Acomodando paquetes&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Lo hacemos con el siguiente comando en terminal:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo yum -y remove firewall-applet firewall-config firewalld &amp;amp;&amp;amp; sudo yum -y install system-config-firewall system-config-firewall-base system-config-firewall-tui&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;2) Configurando el Firewall&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Para esto corremos en consola:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;su -c 'system-config-firewall'&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Se nos abrirá la GUI del firewall y ahí daremos click en Habilitar, acto seguido nos vamos a&amp;nbsp;O&lt;b&gt;pciones &amp;gt; Cargar Configuración por Defecto&lt;/b&gt; seleccionamos &lt;b&gt;"Escritorio"&lt;/b&gt; y aplicamos los cambios. Reiniciamos el sistema y ahora el firewall que todos conocíamos y amábamos estará funcional en nuestro sistema Fedora en lugar de Firewalld.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-3I8bGakmtZA/UV3ZqFDT2HI/AAAAAAAAGes/sWu3gjNGnCo/s1600/Configuraci%C3%B3n+del+cortafuegos_003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://1.bp.blogspot.com/-3I8bGakmtZA/UV3ZqFDT2HI/AAAAAAAAGes/sWu3gjNGnCo/s400/Configuraci%C3%B3n+del+cortafuegos_003.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=GgguJ5Uqchk:9TxGu7eKusA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=GgguJ5Uqchk:9TxGu7eKusA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=GgguJ5Uqchk:9TxGu7eKusA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=GgguJ5Uqchk:9TxGu7eKusA:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=GgguJ5Uqchk:9TxGu7eKusA:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=GgguJ5Uqchk:9TxGu7eKusA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/GgguJ5Uqchk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/2419293059115293845/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/un-mejor-firewall-para-fedora-18-o.html#comment-form" title="7 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/2419293059115293845?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/2419293059115293845?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/GgguJ5Uqchk/un-mejor-firewall-para-fedora-18-o.html" title="Un mejor Firewall para Fedora 18 o superior" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Hs8MG-GqFx0/UV3ZxLakVzI/AAAAAAAAGe0/SwX2q8u0IHQ/s72-c/Firewall.png" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/un-mejor-firewall-para-fedora-18-o.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcNQHcyeSp7ImA9WhBWEE8.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-7635750484243708111</id><published>2013-04-03T14:14:00.000-06:00</published><updated>2013-04-03T14:14:51.991-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-03T14:14:51.991-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hostname" /><category scheme="http://www.blogger.com/atom/ns#" term="QuickTip" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="fedora" /><title>Cambiar el Nombre de la PC en Fedora 18 o superior [QuickTip]</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-Bohd0AuF9Kk/UVyNPCit32I/AAAAAAAAGec/YLIMg010-LQ/s1600/fedora-linux-workstation2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-Bohd0AuF9Kk/UVyNPCit32I/AAAAAAAAGec/YLIMg010-LQ/s320/fedora-linux-workstation2.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Desde &lt;b&gt;Fedora 18&lt;/b&gt;&amp;nbsp;(con el rediseño de anaconda) se puede notar un problema muy molesto al instalar y esto es que (en la versión GTK3 del instalador) el campo de elección de&lt;i&gt; hostname&lt;/i&gt; (Nombre de la máquina) no está precisamente a la vista.&lt;br /&gt;
&lt;br /&gt;
Si te quedaste con un hostname como &lt;b&gt;"localhost.localdomain"&lt;/b&gt; o algo así, entonces cámbialo de la siguiente manera:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo gedit /etc/hostname&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Borra lo que ahí haya y reemplázalo por como quieras que se llame tu máquina. Guarda los cambios, reinicia y listo, tu máquina quedará con un nuevo nombre que tú hayas elegido.&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=vbLmaM4rMdY:sdBichRu48g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=vbLmaM4rMdY:sdBichRu48g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=vbLmaM4rMdY:sdBichRu48g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=vbLmaM4rMdY:sdBichRu48g:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=vbLmaM4rMdY:sdBichRu48g:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=vbLmaM4rMdY:sdBichRu48g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/vbLmaM4rMdY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/7635750484243708111/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/cambiar-el-nombre-de-la-pc-en-fedora-18.html#comment-form" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/7635750484243708111?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/7635750484243708111?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/vbLmaM4rMdY/cambiar-el-nombre-de-la-pc-en-fedora-18.html" title="Cambiar el Nombre de la PC en Fedora 18 o superior [QuickTip]" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Bohd0AuF9Kk/UVyNPCit32I/AAAAAAAAGec/YLIMg010-LQ/s72-c/fedora-linux-workstation2.JPG" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/cambiar-el-nombre-de-la-pc-en-fedora-18.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQDSHw-fip7ImA9WhBXGUw.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-6176999621166675371</id><published>2013-04-02T09:42:00.000-06:00</published><updated>2013-04-02T09:42:59.256-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-02T09:42:59.256-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Administración" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="unix" /><category scheme="http://www.blogger.com/atom/ns#" term="Sistema Operativo" /><title>[QuickTip] Directorio Perteneciente a Grupo (Linux)</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-C5f3CoOmJJA/UVifukDX5rI/AAAAAAAAGcc/bUCvNcVuLBw/s1600/learning-unix-admin-1-01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-C5f3CoOmJJA/UVifukDX5rI/AAAAAAAAGcc/bUCvNcVuLBw/s320/learning-unix-admin-1-01.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Supongamos que yo creo un directorio llamado &lt;b&gt;"mydir"&lt;/b&gt;:&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo mkdir /var/mydir&lt;/b&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Y un nuevo grupo llamado &lt;b&gt;"mygroup"&lt;/b&gt;:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo groupadd mygroup&lt;/b&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
En mi sistema Linux y adentro del directorio guardo ciertos archivos. Yo quiero que &lt;b&gt;sólo ciertos usuarios &lt;/b&gt;(aparte de root) tengan acceso a él para escribir, leer o lo que necesiten. ¿Cómo lo hago? Sencillo:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo chgrp -R usergroup somedir&lt;/b&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Donde &lt;b&gt;"usergroup"&lt;/b&gt; sería &lt;b&gt;mygroup&lt;/b&gt; y &lt;b&gt;"somedir"&lt;/b&gt; sería &lt;b&gt;/var/mydir&lt;/b&gt; en el caso del ejemplo.&lt;br /&gt;
&lt;br /&gt;
Añadimos los usuarios deseados al grupo (uno por uno) con:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;su -c 'usermod -G mygroup -a username'&lt;/b&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
(Donde &lt;b&gt;mygroup&lt;/b&gt; es el nombre del grupo y u&lt;b&gt;sername&lt;/b&gt; sería el nombre del usuario a agregar)&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Y listo, eso es todo.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=rW4POD4T1Cg:LNLtcJacC3A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=rW4POD4T1Cg:LNLtcJacC3A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=rW4POD4T1Cg:LNLtcJacC3A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=rW4POD4T1Cg:LNLtcJacC3A:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=rW4POD4T1Cg:LNLtcJacC3A:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=rW4POD4T1Cg:LNLtcJacC3A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/rW4POD4T1Cg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/6176999621166675371/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/quicktip-directorio-perteneciente-grupo.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/6176999621166675371?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/6176999621166675371?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/rW4POD4T1Cg/quicktip-directorio-perteneciente-grupo.html" title="[QuickTip] Directorio Perteneciente a Grupo (Linux)" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-C5f3CoOmJJA/UVifukDX5rI/AAAAAAAAGcc/bUCvNcVuLBw/s72-c/learning-unix-admin-1-01.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/quicktip-directorio-perteneciente-grupo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UEQHc7eSp7ImA9WhBXGEs.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-8394304857543536006</id><published>2013-04-01T18:06:00.000-06:00</published><updated>2013-04-01T18:06:41.901-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-01T18:06:41.901-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="msttcorefonts" /><category scheme="http://www.blogger.com/atom/ns#" term="fuentes" /><category scheme="http://www.blogger.com/atom/ns#" term="rpm" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="Sistema Operativo" /><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft" /><title>Instalar las Fuentes Microsoft en Fedora 17 y 18 (RPM)</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-0e_yhL7o7uQ/UVjm1dZpr7I/AAAAAAAAGdg/Ly7m3_hSqpM/s1600/tumblr_m4tl02qmgf1rvu8ago1_500.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="241" src="http://1.bp.blogspot.com/-0e_yhL7o7uQ/UVjm1dZpr7I/AAAAAAAAGdg/Ly7m3_hSqpM/s320/tumblr_m4tl02qmgf1rvu8ago1_500.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
La familia de fuentes Microsoft o &lt;b&gt;&lt;i&gt;msttcorefonts&lt;/i&gt;&lt;/b&gt;&amp;nbsp;(Arial, Times, etc) son las fuentes que la mayoría de la gente conoce de toda la vida. Personalmente las hallo muy feas, pero a veces se necesitan ya sea para que algún instalador o programa wine se vea bien o para hacer algún trabajo formal o escolar en el que pidan un formato de fuente específico. Para instalarlas en tu sistema &lt;b&gt;Fedora Linux&lt;/b&gt; deberás hacer lo siguiente:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;1) Descargar RPM (v 2.5.1)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Yo lo compilé, está &lt;b&gt;&lt;a href="http://commondatastorage.googleapis.com/xenodecdn/msttcorefonts-2.5-1.noarch.rpm" target="_blank"&gt;por acá&lt;/a&gt;&lt;/b&gt; y para los locos de la seguridad y libertad &lt;b&gt;&lt;a href="http://corefonts.sourceforge.net/msttcorefonts-2.5-1.spec" target="_blank"&gt;acá está&lt;/a&gt;&lt;/b&gt; el &lt;i&gt;spec&lt;/i&gt; jajaja.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;2) Instalarlo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo rpm -ivh ruta/al/rpm&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;3) Refrescar caché de fuentes&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo fc-cache -fv&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;4) Hacer que se vean bien en la web&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Descargamos &lt;b&gt;&lt;a href="http://commondatastorage.googleapis.com/xenodecdn/fontconfig.tar.gz" target="_blank"&gt;este tarball&lt;/a&gt;&lt;/b&gt; y lo extraemos en &lt;b&gt;"/etc/fonts"&lt;/b&gt; con el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;su -c 'tar xzvf ruta/a/tarball -C /etc/fonts/'&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Listo, reiniciamos el sistema y eso sería todo, las&amp;nbsp;&lt;b&gt;msttcorefonts&lt;/b&gt; están instaladas en nuestro sistema para uso en cualquier aplicación.&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=hOsO74Kb478:smmE4RA33WM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=hOsO74Kb478:smmE4RA33WM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=hOsO74Kb478:smmE4RA33WM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=hOsO74Kb478:smmE4RA33WM:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=hOsO74Kb478:smmE4RA33WM:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=hOsO74Kb478:smmE4RA33WM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/hOsO74Kb478" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/8394304857543536006/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/04/instalar-las-fuentes-microsoft-en.html#comment-form" title="1 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/8394304857543536006?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/8394304857543536006?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/hOsO74Kb478/instalar-las-fuentes-microsoft-en.html" title="Instalar las Fuentes Microsoft en Fedora 17 y 18 (RPM)" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-0e_yhL7o7uQ/UVjm1dZpr7I/AAAAAAAAGdg/Ly7m3_hSqpM/s72-c/tumblr_m4tl02qmgf1rvu8ago1_500.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/04/instalar-las-fuentes-microsoft-en.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUINSHs8fip7ImA9WhBXF0o.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-2173414661050198321</id><published>2013-03-31T13:40:00.000-06:00</published><updated>2013-03-31T18:53:19.576-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-31T18:53:19.576-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="Software Libre" /><category scheme="http://www.blogger.com/atom/ns#" term="Sistema Operativo" /><category scheme="http://www.blogger.com/atom/ns#" term="Bases de Datos" /><title>Instalar MongoDB en Fedora 17 y 18</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-876-zCQy1BM/UViQ8VXF10I/AAAAAAAAGcU/V5k9abkkICY/s1600/MongoDB.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="http://3.bp.blogspot.com/-876-zCQy1BM/UViQ8VXF10I/AAAAAAAAGcU/V5k9abkkICY/s400/MongoDB.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;a href="http://xenodesystems.blogspot.mx/2012/10/porque-amaras-mongodb-la-mejor-base-de.html" target="_blank"&gt;MongoDB&lt;/a&gt;&lt;/b&gt; es mi base de datos favorita y &lt;b&gt;Fedora Linux&lt;/b&gt; es mi sistema operativo favorito, así que pensé: ¿Porqué no juntarlos? jajajaja, Acá el tutorial de cómo instalar MongoDB correctamente en un sistema Fedora:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;i&gt;&lt;b&gt;NOTA: &lt;/b&gt;Todo se tiene que hacer como Root en Terminal&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;1) Quitar instalaciones previas (sobretodo si lo hiciste desde repos)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="background: #111111; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #6aa84f;"&gt;1
2&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #6aa84f;"&gt;su -
yum -y remove libmongodb mongodb mongodb-server
&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;2) Crear/Añadir el repositorio 10Gen:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #ffffff; background: white; border-width: .1em .1em .1em .8em; border: solid gray; color: black; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;gedit /etc/yum.repos.d/10gen.repo
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Añade el código del repo según tu arquitectura en ese archivo: &lt;b&gt;&lt;a href="https://gist.github.com/Jmlevick/3949816#file_32bit.repo" target="_blank"&gt;32 Bits&lt;/a&gt;&lt;/b&gt; | &lt;b&gt;&lt;a href="https://gist.github.com/Jmlevick/3949816#file_64bit.repo" target="_blank"&gt;64 Bits&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;3) Instalar Mongo 10gen:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #111111; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #6aa84f;"&gt;1
2
3&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;td&gt;&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #6aa84f;"&gt;su -
yum install mongo-10gen mongo-10gen-server
mongod -f /etc/mongod.conf &lt;/span&gt;&lt;span style="color: #f3f3f3;"&gt;(Este tardará un poco)&lt;/span&gt;&lt;span style="color: #6aa84f;"&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;br /&gt;
Ahora abre tu Mongo Shell y asegúrate de que funcione con el siguiente comando:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;mongo&lt;/b&gt;&lt;/blockquote&gt;
Ciérralo con Ctrl+C y prosigue.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;4) Crear un alias para el servicio de Mongo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Crea un comando corto (alias) para iniciar el backend de MongoDB con:&lt;br /&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #111111; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #6aa84f;"&gt;sudo gedit /bin/mongodb&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
Ahí adentro pega:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo mongod -f /etc/mongod.conf&lt;/b&gt;&lt;/blockquote&gt;
&lt;div&gt;
Y vuelve ese comando corto ejecutable con:&lt;/div&gt;
&lt;!-- HTML Generated using Snippy 1.0 --&gt;&lt;br /&gt;
&lt;div style="background: #111111; background: black; border-width: .1em .1em .1em .8em; border: solid gray; color: white; overflow: auto; padding: .2em .6em; width: auto;"&gt;
&lt;pre style="line-height: 125%; margin: 0;"&gt;&lt;span style="color: #6aa84f;"&gt;sudo chmod +x /bin/mongodb&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;NOTA:&lt;/b&gt; Esto del comando corto lo hacemos porque de momento no hay manera de hacer correr el servicio de &lt;b&gt;mongod&lt;/b&gt; al arranque del sistema por un bug que existe entre Fedora y MongoDB.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Ahora cada que quieras iniciar el servicio de mongod bastará con escribir &lt;b&gt;mongodb&lt;/b&gt; en tu terminal y presionar ENTER (Una vez por sesión nada más) El &lt;i&gt;daemon&lt;/i&gt; correrá mientras tengas la computadora encendida una vez corrido el comando.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;Finalizando...&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Para probar que todo esté bien, ve en tu navegador web a&amp;nbsp;&lt;b&gt;&lt;a href="http://localhost:27017/"&gt;http://localhost:27017/&lt;/a&gt;&lt;/b&gt; y deberías ver algo como:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-feMn9SifXnw/UViOd0123vI/AAAAAAAAGcM/7ZABdR00WYU/s1600/Mozilla+Firefox_015.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="http://3.bp.blogspot.com/-feMn9SifXnw/UViOd0123vI/AAAAAAAAGcM/7ZABdR00WYU/s400/Mozilla+Firefox_015.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Si ese es el caso, has instalado exitosamente MongoDB en tu sistema Fedora Linux.&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=HrmTeqbnkYw:gRboerZKxkw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=HrmTeqbnkYw:gRboerZKxkw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=HrmTeqbnkYw:gRboerZKxkw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=HrmTeqbnkYw:gRboerZKxkw:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=HrmTeqbnkYw:gRboerZKxkw:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=HrmTeqbnkYw:gRboerZKxkw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/HrmTeqbnkYw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/2173414661050198321/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/03/instalar-mongodb-en-fedora-17-y-18.html#comment-form" title="5 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/2173414661050198321?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/2173414661050198321?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/HrmTeqbnkYw/instalar-mongodb-en-fedora-17-y-18.html" title="Instalar MongoDB en Fedora 17 y 18" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-876-zCQy1BM/UViQ8VXF10I/AAAAAAAAGcU/V5k9abkkICY/s72-c/MongoDB.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/03/instalar-mongodb-en-fedora-17-y-18.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4MQ3o8eyp7ImA9WhBXFk8.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-43523176993461529</id><published>2013-03-28T15:36:00.005-06:00</published><updated>2013-03-30T01:03:02.473-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-30T01:03:02.473-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="emprendedores" /><category scheme="http://www.blogger.com/atom/ns#" term="emprendimiento" /><category scheme="http://www.blogger.com/atom/ns#" term="StartupWeekend" /><category scheme="http://www.blogger.com/atom/ns#" term="startups" /><category scheme="http://www.blogger.com/atom/ns#" term="negocios" /><title>10 Consejos para Jóvenes (y no tan jóvenes) Emprendedores Que me gustaría me hubieran dado hace tiempo [VIDEOS]</title><content type="html">&lt;div style="text-align: center;"&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-dCpnsdA0brA/UVS3dhLvR1I/AAAAAAAAGb8/PrT_gZoG8KM/s1600/business-plan.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="248" src="http://2.bp.blogspot.com/-dCpnsdA0brA/UVS3dhLvR1I/AAAAAAAAGb8/PrT_gZoG8KM/s320/business-plan.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Es común sobretodo en la sociedad de ahora que los Jóvenes se sientan atraídos por el ambiente empresarial. El empleo en muchos países es algo que está escaso y con el mundo que nos rodea, hoy por hoy&lt;b&gt; la línea del empleado al empleador&lt;/b&gt; se está haciendo cada vez más fina.&lt;br /&gt;
&lt;br /&gt;
Hoy en día no es difícil montarse una empresa "de la nada" o al menos no tanto como en otros tiempos. La tecnología y sobretodo &lt;b&gt;el internet&lt;/b&gt; ha logrado que prolifere un fenómeno a nivel mundial conocido como "startups" y muchas de estas ideas, muchos de estos&lt;b&gt; proyectos&lt;/b&gt; que comienzan un día como un simple "y qué tal si...?" Han terminado convirtiéndose en grandes compañías que no solo amasan sumas de dinero enormes, sino que también ayudan a generar una mejor sociedad y más empleos día con día.&lt;br /&gt;
&lt;br /&gt;
Ahora, el emprendimiento no solo está en el internet, es decir, hay miles de maneras de empezar un negocio y tanto es un emprendedor alguien que de pronto quiere sacar una serie de libros o un blog (de los que se pueda remunerar a sí mismo económica y personalmente) como es un emprendedor aquél que decide hacer y vender&lt;i&gt; las mejores aguas de sabor del mundo,&lt;/i&gt; con un toque especial añadido...&lt;br /&gt;
&lt;br /&gt;
He aquí pues, una lista de consejos que te doy, para cuando te aventures en este excitante mundo del auto-empleo:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;1.- Haz algo que ames, y destaca por ello&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Emprender es acerca de tomar &lt;b&gt;algo que amas&lt;/b&gt;, y convertirlo en una fuente de ingresos (tanto económicos como interpersonales) para ti. Obviamente para que esto suceda, debes crearte una fama, un reconocimiento... Primero entre las personas que te rodean, tus círculos íntimos y de ahí poco a poco ir escalando hasta que todo mundo te conozca por eso. Para que esto suceda, debes de ser el mejor (o al menos pretender serlo bastante bien) en lo que haces, de tal manera que cuando la gente piense en ese tema, la primera referencia que venga a sus mentes seas tu. Esto lo lograrás siempre y cuando hagas cosas que destaquen en tu ámbito y las muestres a los demás. La primer &lt;b&gt;propuesta de valor&lt;/b&gt; que has de mostrarle al público sobre tu futuro negocio es precisamente eso, tu pericia en un ámbito.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;2.- "Phineas y Ferb"&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Por si no saben quienes son esos 2 de allá arriba, se trata de los personajes de una caricatura de Disney donde hablan de unos chicos (Phineas y Ferb) que junto con su ornitorrinco mascota &lt;i&gt;perry&lt;/i&gt; hacen muchísimas cosas divertidas por cada día de vacaciones de verano que tienen. Como bien diría el intro:&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://img.youtube.com/vi/dlRqbWFZJM8/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://youtube.googleapis.com/v/dlRqbWFZJM8&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://youtube.googleapis.com/v/dlRqbWFZJM8&amp;source=uds" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Como verán, los personajes de esta caricatura hacen de todo, cosas asombrosas como cualquier otro personaje de "comiquitas"... En esta caricatura, (por si no la han visto), los chicos hacen una serie de cosas sorprendentes con materiales de construcción, máquinas y demás cosas y llega un momento en el que (en la mayoría de los episodios) alguien les pregunta: &lt;b&gt;"Hey! ¿Que no son demasiado jóvenes para hacer X cosa?"&lt;/b&gt; y ellos responden: &lt;b&gt;¡Sí, sí lo somos!&lt;/b&gt; con poca atención, continuando con lo que están haciendo. ¿Porqué dicho punto es importante? Bueno, porque si como yo empiezas con tu emprendimiento a una edad temprana, (Yo empecé a los 17 con Xenode Systems) Mucha gente te verá como una persona "poco capacitada", probablemente te subestimen o bien, no confíen en ti para invertir cuando tu negocio lo demande... Todo esto es NORMAL y es algo que probablemente te va a pasar a ti como me pasó a mi y como probablemente le pasa a muchos emprendedores alrededor del mundo. Lo que tienes que hacer aquí es evitar que eso te afecte, tu demuestra que eres bueno(a) en lo que haces y que te gusta, muestra tu potencial, sin preocuparte por tu edad y lo más importante de todo: No dejes de hacer lo que amas... &lt;b&gt;La realidad es que nunca se es demasiado joven o demasiado viejo&lt;/b&gt; para emprender, recuerdo que yo en la secundaria amasé una pequeña fortuna con mis "pelotas de masa mágica" un producto que todos compraron sin conocer, todos pagaron de antemano, y al final, cuando vieron que eran globos rellenos de harina y arroz, en lugar de enojarse, se rieron bastante (maestros y alumnos) y hasta hoy es día en que nadie de mi ex-salón ha olvidado la historia jajajaja. &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;3.- In Brightest day, in darkest night, no obstacle shall blur my sight&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Habrá días en los que sentirás que todo va "viento en popa" y habrá días en los que pensarás cosas como: &lt;b&gt;¿de verdad estoy hecho(a) para esto? ¿de verdad tiene futuro? &lt;/b&gt;A mi me costó casi&lt;b&gt; 3 años &lt;/b&gt;el que Xenode Systems llegara a donde está y me fructificara directamente lo que llamarías como un trabajo bien pagado.... ¡Pero lo logré! Como todos, lo dudé, muchísimas veces, pensé que de plano no lo iba a lograr, pero no dejé que eso nublara mi vista. Todo se trata de la montaña rusa del emprendedor... De hecho hay un video muy bueno en youtube que te recomiendo veas a continuación:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://1.gvt0.com/vi/XKocnAS345U/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/XKocnAS345U&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/XKocnAS345U&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;br /&gt;
Como habrás podido apreciar en el ilustrativo video, todo tiene sus altas y bajas, y todo tiene sus momentos de desesperación. Que te vaya &lt;b&gt;excelente&lt;/b&gt; no quiere decir necesariamente que tengas la vida resuelta y que te vaya &lt;b&gt;de la mierda&lt;/b&gt; no quiere decir necesariamente tampoco que tu proyecto sea malo. Lo que sí es que tenemos que saber identificar nuestros errores, nuestras debilidades como emprendedores y como empresa y debemos adaptarnos a lo que mejor funcione. En mi caso personal yo quería arrancar vendiendo un hardware muy específico diseñado por mi, pero a falta de dinero, tuve que buscar otras alternativas y hoy gano dinero de asesoría informática, creación de algunas webapps, diseño de páginas web y también gracias al servicio de campañas de social media que ofrecemos, cosa que me permite no solo tener ganancias fijas semanalmente sino pagar buena remuneración a mis trabajadores/freelancers.&amp;nbsp; Otros ámbitos que proliferaron son el de reparaciones de equipos de cómputo y la generación de contenido para la web, donde si bien las ganancias en dinero no son muchas, sí son bastantes en cuanto a alcance y comunidad, otra remuneración importante para nosotros.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;4.- Adelántate a tu época&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Si quieres tener un producto, servicio o negocio que realmente a futuro no solo te deje dinero sino que también tenga un legado importante, debes de pensar a futuro. Todo en los negocios se trata de: "Okey, qué necesidades hay y cómo las puedo solventar" Y muchos trabajan sobre de eso y está bien, pero si revisas la historia verás que gente súper visionaria (y poderosa) como &lt;b&gt;Steve Jobs&lt;/b&gt; logró su fortuna y su lugar en la historia viendo esa frase desde un ángulo distinto: "Qué necesidades VA A HABER y cómo es que se podrán solventar", eso es lo que marca la diferencia la mayoría de las veces entre empresas que mueren al poco&amp;nbsp; tiempo y otras que prevalecen para hacer historia. Un video ilustrativo para este punto sería:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://2.gvt0.com/vi/xO4cdNnBL4Y/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xO4cdNnBL4Y&amp;fs=1&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://www.youtube.com/v/xO4cdNnBL4Y&amp;fs=1&amp;source=uds" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;5.- Aprende a Diario&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Ser emprendedor puede ser todo un golpe (de subida) para tu ego. Te tienes que considerar el mejor en uno o varios ámbitos, (o muy bueno al menos) y darlo a entender a la gente. Puede llegar un momento en que, (debido a que de hecho te vuelves tan bueno como predicas con el tiempo o quizá ya lo eras y con el tiempo la gente lo ve) sientas que no puede haber error en tus palabras o ideas o algo así. Mi consejo es: ¡No pierdas el enfoque! Considero que todos nosotros, aquellos los que nos hacemos llamar emprendedores&amp;nbsp; y &lt;b&gt;lo somos&lt;/b&gt;, venimos de un camino de aprendizaje que se complementa de todo lo que te rodea. Quizá hoy seas el mejor programador de &lt;i&gt;Python&lt;/i&gt; que exista en el mundo (o al menos quizá te veas como tal) pero estoy seguro de que un día, dependiste de alguien para aprender, para cultivar en ti esa semilla que hoy ha dado fruto. Ten en cuenta que todos los días aprendemos y aprendemos de todo, de todos. No subestimes a las personas o a las circunstancias, siempre ten en cuenta que alguien, así sea un niño de 3 años, un animalito o incluso un algo como un papel en la calle puede ser el precursor de otra de tus grandes ideas a futuro. Mantén tu mente abierta a las posibilidades, a las novedades, Ni nunca sabrás todo ni nunca lo que haces será completamente perfecto ni tampoco las herramientas que usas serán las indicadas para siempre. Ten en cuenta que a lo mejor antes era muy famoso &lt;i&gt;PHP&lt;/i&gt; y se consideraba el mejor lenguaje para desarrollo web y hoy más que nada usamos cosas más modernas como &lt;i&gt;Rails&lt;/i&gt;... También ten en cuenta que (cuando tengas empleados) nadie es menos que tu y todos deben de tener voz y voto (aunque no sea directo) para ti, debes escuchar a toda tu fuerza de trabajo porque igual que tu, ellos tienen un gran potencial dentro, &lt;b&gt;todos lo tenemos!&lt;/b&gt; así que escucha a tu gente y estudia, aprende, actualízate diariamente... Aprende nuevos modelos de organización, modelos de negocio, recetas de cocina, lenguajes de programación, aprende lo que tu negocio requiera y aprende de los que te rodean.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;6.- Ten Hambre de más&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Va a llegar un momento en que tu vida "se sentirá resuelta", en el que creerás que has logrado cuanto te has imaginado o cuanto podrías pedir. A todos nos llega tarde que temprano... Cuando te llegue, recuerda este post y las palabras que te daré a continuación: Mientras vivas, mientras el tiempo pase y el mundo gire, &lt;b&gt;siempre habrá algo nuevo que hacer&lt;/b&gt; algo que innovar, nunca te estanques, siempre mantente dinámico probando nuevas teorías, nuevos mercados, nuevos modelos de negocio, nuevas ideas. NUNCA dejes de generar ideas.&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;7.- No dejes de "trabajar"&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Esto va de la mano con los 2 puntos de arriba. El que algún día con tu proyecto adquieras &lt;i&gt;deadlines&lt;/i&gt; para terminar ciertos trabajos (y gente que los haga por ti) no quiere decir que debas dejar de estar activamente involucrado en tu proyecto. Siempre mantente cerca, escuchando, aprendiendo y mejorando... Y cuando ya no puedas mantenerte cerca de las manos que llevan a cabo tus sueños (imaginemos que algún día tienes una empresa de millones de trabajadores) siempre lleva métodos de monitoreo y regulación que puedas resumir para ti mismo.&lt;br /&gt;
&lt;br /&gt;
Todo eso por un lado, por otro lado, vuelvo a lo mismo: Nunca dejes de ser inventivo, nunca dejes de probar nuevas características o funcionalidades en ése código, nunca dejes de jugar con los ingredientes de determinado pastel... Si dejas de trabajar tus cosas pueden pasar 1 de 2: O se morirán inevitablemente o evolucionarán en algo que no te gustará. Recuérdalo bien, y &lt;b&gt;mantente cerca&lt;/b&gt;, mantente activo. &lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;8.- Empápate del Ambiente&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Este es uno de los puntos más importantes... Como emprendedor, naciste con una perspicacia especial para notar cosas como patrones de conducta, focos de necesidad, nichos de mercado y otras cosas similares... Tienes una idea y sabes que se puede convertir en la siguiente empresa global de la que todos hablen, o bien, el producto que todos tengan. Lo tienes y sabes que puedes hacer que crezca. Todo eso está muy bien, pero recuerda que necesitas conocer a tu competencia, conocer cómo es que tu nicho elegido está viviendo su día con día y cómo es que funcionan las alternativas actuales para la solución del problema/necesidad que planteas (y si no existen, cómo es que tu solución/producto encajaría en la sociedad actual); No pierdas la oportunidad de ir a conferencias, congresos, presentaciones y otro tipo de reuniones donde gente como tu (que disfrute de los mismos intereses o ideas) vaya a estar cerca: Si eres músico, ve a conciertos,&lt;i&gt; master classes&lt;/i&gt; y otros eventos similares, Si eres cheff ve a demostraciones culinarias, Si eres diseñador ve a galerías de arte, eventos culturales y a tiendas de decoración de interiores, Si eres programador ve a algún &lt;i&gt;hackaton&lt;/i&gt; o a algún FLISOL, eeen fin, estamos rodeados de eventos, conferencias, expos, congresos y demás en todos los países, busca los eventos públicos cercanos a ti donde puedas asistir y empápate de lo que te gusta... Yo personalmente les puedo recomendar (para los adeptos a cuestiones tecnológicas) asistir a eventos como el &lt;b&gt;&lt;a href="http://startupweekend.org/" target="_blank"&gt;StartupWeekend&lt;/a&gt;&lt;/b&gt;, yo he asistido a 2 de estos aquí en México y me he llevado experiencias buenas y malas, pero más allá de todo lo importante es que he aprendido mucho y me he divertido también, es un buen evento.&lt;br /&gt;
&lt;br /&gt;
Ahora este punto también se enfoca a algo más profundo: En algún momento tendrás que entender que &lt;b&gt;no te puedes poner&lt;/b&gt; "todos los sombreros" de tu empresa tu solo siempre... Necesitas entender que necesitas aliados que complementen tu visión y que te ayuden a salir adelante. Para no hacer más largo este punto, creo que el video a continuación explicará lo que trato de decir perfectamente:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://img.youtube.com/vi/0JaPaeFYE5U/0.jpg" height="266" width="320"&gt;&lt;param name="movie" value="http://youtube.googleapis.com/v/0JaPaeFYE5U&amp;source=uds" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;embed width="320" height="266"  src="http://youtube.googleapis.com/v/0JaPaeFYE5U&amp;source=uds" type="application/x-shockwave-flash" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;9.- Tu empresa, tu criterio&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Cuando tienes una empresa/proyecto y lo diriges, tienes que tomar decisiones. Algunas vecces serán las correctas, algunas veces no, No puedes estar 100% seguro siempre. Muchas personas tratarán de darte consejos, otras tratarán de imponerte su opinión y otras simplemente no te apoyarán. Independientemente de toda esta gente, tienes que estar consciente de que a final de cuentas, la decisión final la tienes tú y por tanto dependes de tu conocimiento y todo lo tomado de experiencias pasadas para lograr &amp;nbsp;encaminar todo hacia el rumbo que consideres correcto. No olvides escuchar a los demás, pero sólo toma de ellos aquello que te sirva y lo que no, déjalo al viento... Cuando te encuentres en algún tipo de encrucijada en la vida de tu proyecto recuerda sopesar bien las cosas antes de decidir algo, puesto que el futuro del mismo dependerá de la decisión que tomes en ese momento, por pequeña o grande que dicha decisión sea.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;10.- Busca inspiración en donde sea&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Finalmente, recuerda que debes mantenerte creativo. Para hacer esto, lo único que tienes que hacer es &lt;b&gt;mirar a tu alrededor&lt;/b&gt;. Estamos rodeados de fuentes de inspiración donde sea: En casa, en la calle, en el trabajo, en la TV, en los libros... Como todo buen emprendedor, siempre recuerda crear oportunidades y soluciones de la nada (como explican en el video anterior); Y tu principal incentivo creador debería ser tu vida diaria. Toma una idea, cualquiera, (por más loca que parezca) y &lt;b&gt;trabaja para hacerla realidad&lt;/b&gt;. Eso es lo que al final del día, nos convierte en &lt;b&gt;Emprendedores&lt;/b&gt;.&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=18cbFpaXoUg:JUr7GULDsMg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=18cbFpaXoUg:JUr7GULDsMg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=18cbFpaXoUg:JUr7GULDsMg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=18cbFpaXoUg:JUr7GULDsMg:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=18cbFpaXoUg:JUr7GULDsMg:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=18cbFpaXoUg:JUr7GULDsMg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/18cbFpaXoUg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/43523176993461529/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/03/10-consejos-para-jovenes-y-no-tan.html#comment-form" title="7 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/43523176993461529?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/43523176993461529?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/18cbFpaXoUg/10-consejos-para-jovenes-y-no-tan.html" title="10 Consejos para Jóvenes (y no tan jóvenes) Emprendedores Que me gustaría me hubieran dado hace tiempo [VIDEOS]" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-dCpnsdA0brA/UVS3dhLvR1I/AAAAAAAAGb8/PrT_gZoG8KM/s72-c/business-plan.jpg" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/03/10-consejos-para-jovenes-y-no-tan.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4DRHk7cCp7ImA9WhBXFEw.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-1813932485997658748</id><published>2013-03-27T14:04:00.000-06:00</published><updated>2013-03-27T14:42:55.708-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-27T14:42:55.708-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VPN" /><category scheme="http://www.blogger.com/atom/ns#" term="DeepWeb" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="internet" /><category scheme="http://www.blogger.com/atom/ns#" term="Seguridad" /><category scheme="http://www.blogger.com/atom/ns#" term="Navegación Segura" /><title>La Deep Web, Navegar sin dejar rastro y otras cosas similares</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-kutLRO67OF0/UUQ9a7Vg7EI/AAAAAAAAGVc/8tzQCqIVj2Y/s1600/Gas+Mask+Wallpaper+15.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/-kutLRO67OF0/UUQ9a7Vg7EI/AAAAAAAAGVc/8tzQCqIVj2Y/s400/Gas+Mask+Wallpaper+15.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;i&gt;&lt;b&gt;Disclaimer:&lt;/b&gt; La información aquí compartida puede contener datos o material sensible que se puede considerar no apto para los lectores de cualquier país dependiendo la situación legal de la sociedad del mismo. De ninguna manera pretendo con este artículo incurrir en algún tipo de "actividad ilegal" y si en tu país entrar a la deep web o navegar a través de un Proxy/VPN para saltear algún tipo de bloqueo/censura/filtro impuesto(a) por tu ISP, gobierno o similar se considera una falta grave, lo que hagas con lo aquí compartido queda 100% bajo tu responsabilidad. Todo lo que se comprende en este artículo lo entrego como material puramente didáctico sin incitar a que el conocimiento sea aplicado prácticamente por parte de los lectores, me desligo de toda responsabilidad acerca de lo que el lector haga con el conocimiento aquí entregado.&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;i&gt;(Se solicita discreción).&lt;/i&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Parte I: La Deep Web&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
El otro día (ya tiene tiempo) unos amigos visitaron mi casa, compramos algunas cosas, (Entre ellas un six pack de heineken, chapulines, cacahuates fritos y en sí, una montaña de botanas); Preparamos "cerveza de mantequilla" estilo Harry Potter, mandamos pedir unas pizzas, y entre varias cosas que hicimos, uno de ellos me pidió que preparara las computadoras para entrar en la DeepWeb (o, en sus palabras "DeepWebear" jajaja).&lt;br /&gt;
&lt;br /&gt;
Preparé las máquinas y nos metimos a la &lt;i&gt;&lt;b&gt;deep web&lt;/b&gt;&lt;/i&gt;, lo que me motivó a escribir este post que por motivos de trabajo he estado aplazando bastante. Veamos entonces:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;¿Qué es la Deep Web?&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Bueno, la &lt;i&gt;&lt;b&gt;deep web&lt;/b&gt;&lt;/i&gt; es en palabras simples la porción del internet "que no se percibe" a simple vista. Para que se den una idea, Se dice que aproximadamente un &lt;b&gt;85% de toda la información&lt;/b&gt; que hay en lo que se hace llamar "la internet" como red completa se encuentra resguardada dentro de la deep web.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;¿¡Pero cómo!?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Tan solo el internet que vemos se siente "infinito" ¿Cierto? Pues sí, pero eso no es todo lo que hay... Aún cuando la parte del internet que conoces puede albergar UNIVERSOS enteros de información y usuarios navegando diariamente e interactuando al unísono, es realmente un &lt;i&gt;microespacio &lt;/i&gt;en el universo de todo lo que es la internet como red en sí.&lt;br /&gt;
&lt;br /&gt;
Una analogía interesante acerca de esto es la frase que reza:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
En la surface web se navega, En la Deep Web se bucea.&lt;/blockquote&gt;
&lt;br /&gt;
Imagina el internet &lt;b&gt;como un océano&lt;/b&gt;. Todo el internet, absolutamente todo al que accedes por medio de tu navegador normal buscando en google y así, es la web de la superficie y entrar en ella se puede comparar al hecho de navegar en un barco sobre del océano mientras que entrar a la deep web es volver ese barco un submarino y empezar a entrar hacia abajo.&lt;br /&gt;
&lt;br /&gt;
Acá una imagen interesante acerca del asunto:&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-I3glEPbPxIE/UUQyoNeHZ6I/AAAAAAAAGVM/e3EeezuLuuI/s1600/deepweb.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="640" src="http://4.bp.blogspot.com/-I3glEPbPxIE/UUQyoNeHZ6I/AAAAAAAAGVM/e3EeezuLuuI/s640/deepweb.png" width="212" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Click para agrandar&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span style="font-size: large;"&gt;&lt;b&gt;¿Qué hay en la Deep Web?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
En la deep web hay muchísimas cosas, entre ellas información restringida y resguardada sobre temas políticos, sociales, religiosos y demás. También te puedes encontrar con cosas que probablemente no quieras ver, (aquellas que no pueden estar en la web normal) como material de pedofilia, listas de cazarecompensas, enlaces y subastas del mercado negro, videos de snuff, material sobre "temas de ocio" con fundamentos como cosas de ciencia ficción en la vida real, (investigaciones extraterrestres, paranormales, experimentación en humanos y demás); Pero aparte de todo esto la parte interesante de la deep web (a mi manera de ver) radica en los materiales "especiales" compartidos por personas de alrededor del mundo como libros que tratan de temas de alta tecnología u otro tipo de conocimiento al cual no tendrías acceso de manera fácil por otro medio (bueno, dependiendo de tu país o situación social diaria). También hay blogs, foros y sitios sobre seguridad informática, algunos de libre acceso a la información (donde la gente que tiene navegación censurada en sus países puede estar al tanto del mundo real) e incluso algunas secciones y grupos de gente que usa y apoya al software libre entre otros temas... Manuales de hacking, cracking, montaje de servidores y otras cosas interesantes de ese rubro también se pueden encontrar.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;¿Cómo entrar a la Deep Web?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Bueno, eso no lo puedo decir como tal ¿Porqué? Es complicado, verán: Según he escuchado por ahí, en algunos países compartir esta clase de información es ilegal y la verdad (sea cierto o no, porque no me consta) no sé cómo esté la situación en México (que es donde radico) con respecto a este asunto y no me gustaría acarrear problemas de ningún tipo. Lo que sí les puedo decir sin embargo, es que cuando quieran entrar a la deep web por primera vez comiencen su viaje a través de la &lt;b&gt;&lt;a href="http://es.wikipedia.org/wiki/The_Hidden_Wiki" target="_blank"&gt;hidden wiki&lt;/a&gt;&lt;/b&gt; y si quieren usar un buscador usen &lt;b&gt;TORCH&lt;/b&gt;; Sin embargo cabe destacar que navegar por la deep web es muy diferente a navegar por el internet normal, Aún cuando la mentada hidden wiki es un buen punto de referencia e inicio para llegar a diferentes lugares dentro de la Deep Web, la verdad es que SI NO SABES qué estás buscando, navegar será tedioso y aburrido. El internet normal se puede navegar sin tener idea de qué se está buscando, google nos lleva a todos lados con escribir una palabra o dos. En la deep web esto no pasa... Aún cuando está el buscador que mencioné, no es como si pudieras buscar "Expediente del caso Roswell" y te saliera una página con la info que deseas, no.&lt;br /&gt;
&lt;br /&gt;
En este apartado me gustaría pedirles que no entren en la deep web si bajo las jurisdicciones de su gobierno y/o autoridades no es permitido y tampoco lo hagan por morbo o para incurrir en alguna clase de actividad ilegal. Este artículo tiene como fin el informar y entregarles conocimiento que después puede serles útil, pero (de manera muy personal) les pido que por favor no usen su conocimiento para mal. La deep web es un lugar diverso e interesante que puede ser útil algún día, la idea es no irse a por lo malo e irse realmente por lo necesario.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;Algunas Precauciones (Por si entras...)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Es importante que TOMEN SUS PRECAUCIONES. Entrar a la deep web no es algo que puedas hacer de manera descuidada y como si nada. Más allá de protegerte con cosas como un Proxy, un VPN, HTTPS, el Firewall de tu equipo y demás (medidas que veremos en la segunda parte de este artículo sobre seguridad al navegar en general); Es importante que (a mi manera de ver):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Uses un equipo Linux para entrar&lt;/li&gt;
&lt;li&gt;Apagues tu micrófono&lt;/li&gt;
&lt;li&gt;Cubras tu cámara web por completo con cinta&lt;/li&gt;
&lt;li&gt;Uses una cuenta de usuario extra en tu PC que no sea la tuya&lt;/li&gt;
&lt;li&gt;Te asegures de que el Firewall de tu PC está activado&lt;/li&gt;
&lt;li&gt;No compartas tu información personal real en la Deep Web (¡Ni tu Email siquiera!)&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Como medida extra sería bueno que tu disco duro (más que nada solo tus archivos, o tu "carpeta personal" pues en el caso de Linux) estuviera encriptad@.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Parte II: Navegar sin dejar Rastro&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
¿Porqué querrías navegar "sin dejar rastro"? Pues hay varias razones para hacerlo (Entrar a la Deep Web es una, ya que ahí todos los dominios son del tipo "onion", los cuales no se pueden accesar sin estar conectado a través de TOR por ejemplo), querer hacer transacciones bancarias o de otro tipo de manera segura bajo una red Wi-Fi pública o algo así, si alguna vez tienes sospechas de que alguien como el FBI o alguna otra agencia o los transformers o los aliens está rastreando lo que ves en internet etc, todo eso son razones válidas jeje.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="font-size: large;"&gt;¿Cómo hacerlo?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Sencillo: Prácticamente con descargar y usar el &lt;a href="http://www.torproject.org/projects/torbrowser.html.en" target="_blank"&gt;&lt;b&gt;TOR browser bundle&lt;/b&gt;&lt;/a&gt; que automáticamente se encargará de tener todo listo para tu navegación segura a través de la red TOR. Descargamos el indicado para nuestra plataforma, lo extraemos, ejecutamos el script/binario del navegador y Listo! Automáticamente se encargará de que empecemos a navegar usando TOR y nos abrirá una ventana de navegación que nos recordará a Firefox (Pues el TBB está basado en Firefox de hecho).&lt;br /&gt;
&lt;br /&gt;
El navegador del TBB ya trae todo lo que puedes ocupar en cuanto a seguridad para navegar sin miedo (y sin dejar rastro prácticamente) a través de internet. Cosas tan importantes como HTTPS forzado se incluyen directamente, a diferencia de en los navegadores normales. Si a este bundle le añades una conexión a través de VPN como explicamos &lt;b&gt;&lt;a href="http://xenodesystems.blogspot.mx/2013/03/securitykiss-el-hotspot.html" target="_blank"&gt;en este otro post&lt;/a&gt;&lt;/b&gt;, la verdad es que no podrías estar más seguro mientras navegas. Es importante mencionar que si quieres la máxima seguridad así deberías de hacerlo exactamente sin excusa: &lt;b&gt;Tips de arriba + Tor Browser Bundle + Navegación por VPN&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-KDY4_UhpD4k/UVNQmUS3dyI/AAAAAAAAGbU/ZePBuRoSoxk/s1600/TBB.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="436" src="http://3.bp.blogspot.com/-KDY4_UhpD4k/UVNQmUS3dyI/AAAAAAAAGbU/ZePBuRoSoxk/s640/TBB.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span id="goog_1566987615"&gt;&lt;/span&gt;&lt;span id="goog_1566987616"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=OdV75k0MZS0:xYMyd4C1jG8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=OdV75k0MZS0:xYMyd4C1jG8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=OdV75k0MZS0:xYMyd4C1jG8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=OdV75k0MZS0:xYMyd4C1jG8:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=OdV75k0MZS0:xYMyd4C1jG8:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=OdV75k0MZS0:xYMyd4C1jG8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/OdV75k0MZS0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/1813932485997658748/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/03/la-deep-web-navegar-sin-dejar-rastro-y.html#comment-form" title="7 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/1813932485997658748?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/1813932485997658748?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/OdV75k0MZS0/la-deep-web-navegar-sin-dejar-rastro-y.html" title="La Deep Web, Navegar sin dejar rastro y otras cosas similares" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-kutLRO67OF0/UUQ9a7Vg7EI/AAAAAAAAGVc/8tzQCqIVj2Y/s72-c/Gas+Mask+Wallpaper+15.jpg" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/03/la-deep-web-navegar-sin-dejar-rastro-y.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAMSHY9fCp7ImA9WhBQFkk.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-8970013144499113341</id><published>2013-03-18T15:56:00.000-06:00</published><updated>2013-03-18T15:56:29.864-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-18T15:56:29.864-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="fedora" /><category scheme="http://www.blogger.com/atom/ns#" term="multilib errores" /><category scheme="http://www.blogger.com/atom/ns#" term="bug" /><category scheme="http://www.blogger.com/atom/ns#" term="solución" /><title>[SOLUCIÓN] Error "Versiones multilib protegidas" Fedora</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-oi4Y9hgg-sI/T-9t4R1Tl-I/AAAAAAAACvk/Lpj0tnqC7lM/s1600/valessiobrito_Bug.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="141" src="http://1.bp.blogspot.com/-oi4Y9hgg-sI/T-9t4R1Tl-I/AAAAAAAACvk/Lpj0tnqC7lM/s200/valessiobrito_Bug.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Si les ha llegado a salir este error, se debe a que están mezclando paquetes de 32 bits en sus sistemas Fedora de 64 bits y las versiones de unos son más actuales que las de otros, esto quiere decir que por ejemplo, las versiones de los mismos paquetes en 32 bits son más recientes que sus equivalentes en 64 y por eso la instalación suelta error.&lt;br /&gt;
&lt;br /&gt;
Solucionar este error es sencillo:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-E86YIk8NJpE/UUd-yct8ZpI/AAAAAAAAGX0/HIZ50JPp7RE/s1600/multilibs2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="142" src="http://4.bp.blogspot.com/-E86YIk8NJpE/UUd-yct8ZpI/AAAAAAAAGX0/HIZ50JPp7RE/s640/multilibs2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span id="goog_701726250"&gt;&lt;/span&gt;&lt;span id="goog_701726251"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span id="goog_701726250"&gt;Teniendo este &lt;i&gt;output&lt;/i&gt; en la terminal, el error se soluciona instalando exactamente la misma versión que tengamos en 64 bits para la librería/paquete de 32 bits que queremos. Cabe destacar que primero, (antes que nada) debemos de hacer un &lt;b&gt;sudo yum -y update&lt;/b&gt; para ver si las versiones se equiparan.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span id="goog_701726250"&gt;Una vez hayamos actualizado el sistema, supongamos que yo sigo teniendo el mismo error de arriba queriendo instalar "libdrm". Si necesito esa librería en sus versiones de 32 y 64 bits por igual, me fijo que la versión de 64 bits es la &lt;b&gt;2.4.40-1.fc18.x86_64 &lt;/b&gt;y la otra está un poco más actualizada. Para evitar el error, instalaría la de 32 bits explíctitamente pidiendo la &lt;/span&gt;misma versión que hay para 64 bits en el gestor de paquetes, de esta manera estaría haciendo entonces:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;b&gt;sudo yum install libdrm-&lt;span id="goog_701726250"&gt;2.4.40-1.fc18.i686&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;span id="goog_701726250"&gt;En lugar de solo tratar de instalar &lt;b&gt;libdrm.i686&lt;/b&gt;; En caso de tener el mismo error con el mismo paquete después de esto, les recomiendo abstenerse de instalar la versión de la librería para 32 bits a menos que estén COMPLETAMENTE seguros de que es VITAL para que algo más funcione y que eliminar la versión de 64 bits de la misma (porque eso se tendría que hacer) no romperá nada en nuestro sistema.&lt;/span&gt;&lt;b&gt;&lt;span id="goog_701726250"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=ZU5-cNSBGZE:7nNvEq__1xE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=ZU5-cNSBGZE:7nNvEq__1xE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=ZU5-cNSBGZE:7nNvEq__1xE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=ZU5-cNSBGZE:7nNvEq__1xE:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=ZU5-cNSBGZE:7nNvEq__1xE:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=ZU5-cNSBGZE:7nNvEq__1xE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/ZU5-cNSBGZE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/8970013144499113341/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/03/solucion-error-versiones-multilib.html#comment-form" title="0 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/8970013144499113341?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/8970013144499113341?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/ZU5-cNSBGZE/solucion-error-versiones-multilib.html" title="[SOLUCIÓN] Error &quot;Versiones multilib protegidas&quot; Fedora" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-oi4Y9hgg-sI/T-9t4R1Tl-I/AAAAAAAACvk/Lpj0tnqC7lM/s72-c/valessiobrito_Bug.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/03/solucion-error-versiones-multilib.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIGQn47eCp7ImA9WhBQFEo.&quot;"><id>tag:blogger.com,1999:blog-8227124728971566190.post-8966083000589900918</id><published>2013-03-16T17:45:00.000-06:00</published><updated>2013-03-16T17:45:23.000-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-16T17:45:23.000-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RSS" /><category scheme="http://www.blogger.com/atom/ns#" term="alternativas" /><category scheme="http://www.blogger.com/atom/ns#" term="feedly" /><category scheme="http://www.blogger.com/atom/ns#" term="webapps" /><category scheme="http://www.blogger.com/atom/ns#" term="Google Reader" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Se muere Google Reader: ¡Migremos a Feedly!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-q0hMXxDGJK8/UUUDzyUVoII/AAAAAAAAGXc/PNYKT4b597Q/s1600/readerdear.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://1.bp.blogspot.com/-q0hMXxDGJK8/UUUDzyUVoII/AAAAAAAAGXc/PNYKT4b597Q/s400/readerdear.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Así es, después de incontables años de servicio y lealtad, uno de los grandes de la web se nos va: &lt;b&gt;&lt;a href="http://reader.google.com/" target="_blank"&gt;Google Reader&lt;/a&gt;&lt;/b&gt;. ¿El porqué? Ni yo mismo lo entiendo... Pero pues así es esto, hay que evolucionar, cambiar, adaptarse a las vueltas que nos da la vida y a veces, decir adiós a algunas cosas a las que les teníamos mucho mucho cariño.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;b&gt;¿Alternativas?&lt;/b&gt; Hay varias. Sin embargo la mejor de todas ellas es &lt;b&gt;&lt;a href="http://www.feedly.com/" target="_blank"&gt;Feedly&lt;/a&gt;&lt;/b&gt;, un servicio que nació hace tiempo tratando de darle un &lt;i&gt;twist &lt;/i&gt;a la manera en que leíamos nuestros feeds RSS en la web. Migrar a Feedly es sencillo: Sólo inicias sesión con tu cuenta de Google que usas para tu Reader y listo, todo se importará en automático. &lt;b&gt;¿En cuanto al API?&lt;/b&gt; Feedly está trabajando en un &lt;i&gt;fork&lt;/i&gt; del API de Google Reader llamado &lt;b&gt;Normandy&lt;/b&gt;, por medio del cual los &lt;i&gt;third party developers&lt;/i&gt; podrán seguir manteniendo sus aplicaciones basandas en Google Reader funcionando. En resumen, Feedly se convertirá en el nuevo Google Reader a partir del cierre del servicio por parte de la gran G.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Si bien el backend actual de Feedly está basado en Google Reader, ellos nos prometen que la transición de los servidores de google a los propios de ellos será indolora, automática y transparente e incluso nos dan &lt;b&gt;&lt;a href="http://blog.feedly.com/2013/03/14/tips-for-google-reader-users-migrating-to-feedly/" target="_blank"&gt;algunos tips&lt;/a&gt; &lt;/b&gt;para que los recién migrados estén más cómodos en la plataforma.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Por si las dudas, no olvides exportar tu info de Reader usando &lt;b&gt;&lt;a href="http://support.google.com/reader/answer/3028851" target="_blank"&gt;Google Takeout&lt;/a&gt;&lt;/b&gt; para que tengas un respaldo en caso de necesitarlo. Para los que se lo preguntan, Feedly es compatible con móviles y tiene una versión web también, aparte de API y backend propios que actualmente están en desarrollo y estarán terminados antes del cierre de reader.&amp;nbsp;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
NI hablar, no hay excusa, &lt;b&gt;¡Migremos!&lt;/b&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-fq6aFI5Bf44/UUUBSUXhTJI/AAAAAAAAGXU/zbKwT56ZWb4/s1600/Feedly.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="345" src="http://3.bp.blogspot.com/-fq6aFI5Bf44/UUUBSUXhTJI/AAAAAAAAGXU/zbKwT56ZWb4/s640/Feedly.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;b&gt;&lt;a href="http://www.feedly.com/"&gt;&lt;span style="font-size: x-large;"&gt;http://www.feedly.com&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class="blogger-post-footer"&gt;El Contenido está bajo la Licencia: CC-BY-SA&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=wLXAijxjL6k:1yUwbT1j4mk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=wLXAijxjL6k:1yUwbT1j4mk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=wLXAijxjL6k:1yUwbT1j4mk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=wLXAijxjL6k:1yUwbT1j4mk:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?i=wLXAijxjL6k:1yUwbT1j4mk:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?a=wLXAijxjL6k:1yUwbT1j4mk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/XenodeSystemsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/XenodeSystemsBlog/~4/wLXAijxjL6k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenodesystems.blogspot.com/feeds/8966083000589900918/comments/default" title="Enviar comentarios" /><link rel="replies" type="text/html" href="http://xenodesystems.blogspot.com/2013/03/se-muere-google-reader-migremos-feedly.html#comment-form" title="3 comentarios" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/8966083000589900918?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8227124728971566190/posts/default/8966083000589900918?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/XenodeSystemsBlog/~3/wLXAijxjL6k/se-muere-google-reader-migremos-feedly.html" title="Se muere Google Reader: ¡Migremos a Feedly!" /><author><name>Manuel Escudero</name><uri>https://plus.google.com/112481694418464019054</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh4.googleusercontent.com/-dgexD0W3m9U/AAAAAAAAAAI/AAAAAAAAFa0/OYqYOPSPexM/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-q0hMXxDGJK8/UUUDzyUVoII/AAAAAAAAGXc/PNYKT4b597Q/s72-c/readerdear.png" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://xenodesystems.blogspot.com/2013/03/se-muere-google-reader-migremos-feedly.html</feedburner:origLink></entry></feed>
