Shutter is a solid tool for taking screenshots and quickly editing them on linux. Integrating it with Mate isn't a drop in however. This work around allows one to push PrtScn and see a Shutter window witht he screenshot.

First, Install Shutter: http://shutter-project.org/downloads/ then Alter the default mate screenshot tool, mate-screenshot:

sudo mv /usr/bin/mate-screenshot /usr/bin/mate-screenshot.orig

sudo echo "/usr/bin/shutter -f" > /usr/bin/mate-screenshot

sudo chmod +x /usr/bin/mate-screenshot

That's it.

Be reminded about ToDo tasks on opening newTab page. Features: saving favorite tasks, check duplicate tasks, editable tasks etc.

Options: 1. Double click task to edit it 2. Click Checkbox to remove task 3. Click blank star icon to favorite it 4. Click home icon to move the favorite task back to todo task tab etc.

newToDoTab

1 0
mearns asked a question

20 days since last update

My profile hasn't been updated in 20 days. What's going on?

Ésta es una traducción y adaptación del artículo titulado «Code Review Best Practices», escrito y publicado originalmente por Kenvin London el 5 de Mayo de 2015. La traducción fue publicada originalmente el 20 de Mayo de 2015.


En Wiredrive realizamos bastantes revisiones de código. Nunca había hecho una antes de comenzar a trabajar aquí, así que fue una nueva experiencia. Creo que es una buena idea cristalizar algunas de las cosas en las que me enfoco cuando hago revisiones de código, hablando sobre la mejor forma que he encontrado para acercarme a ellas.

Rápidamente, una revisión de código es una discusión entre dos o más desarrolladores a cerca de cambios en el código para solucionar un problema o agregar una nueva característica.

¿Qué observar al hacer una revisión?

Arquitectura / Diseño

  • Principio de la responsabilidad única: La idea de que una clase debe tener una y sólo una responsabilidad, es más difícil de lo que uno podría esperar. Usualmente también aplico éste principio a los métodos: si se tiene que usar una conjunción «y» para terminar de describir lo que un método es capaz de hacer, puede tratarse de un mal nivel de abstracción.
  • Principio abierto/cerrado: Si el lenguaje usado es orientado a objetos, ¿los objetos pueden ser extendidos pero están protegidos para no ser modificados? ¿Qué pasa si necesitamos agregar un atributo, función o pieza de código?
  • Duplicación de código: Prefiero seguir la regla de los «tres strikes». Si el código está replicado una vez, usualmente está bien aunque no me agrade. Si está replicado más de una vez, debe hacerse una refactorización para separar las funciones comunes.
  • Prueba de los ojos entornados: Si entorno los ojos, ¿la forma de éste código se ve idéntica a otras? ¿Hay patrones que pueden indicar otros problemas en la estructura del código?
  • Código en un mejor estado: Si estoy cambiando un área desordenada del código, es tentador agregar un par de líneas y dejarlo así. Recomiendo ir un paso más allá y organizar el código para dejarlo mejor a cómo lo encontré.
  • Errores potenciales: ¿Hay errores de diferencia por un paso? ¿Los ciclos terminan en la forma que se espera? ¿A caso terminarán?
  • Eficiencia: Si se ha implementado un algoritmo en el código, ¿se está usando una implementación eficiente? Por ejemplo, iterar sobre una lista de llaves en un diccionario es una forma ineficiente de buscar el valor deseado.

Estilo

  • Nombres de los métodos: Darle nombre a las cosas es uno de los problemas difíciles en ciencias de la computación. Si un método es llamado obtener_nombre_del_mensaje_en_la_cola y en realidad está hace algo completamente diferente, como sanear el HTML de una entrada, entonces no es un nombre descriptivo para el método y causará confusión.
  • Nombres de variables: foo y bar probablemente no son nombres útiles para estructuras de datos. De forma similar, e no es tan útil comparado con excepcion. Se tan explicito como necesites (dependiendo del lenguaje). Nombres de variable expresivos hacen más fácil entender el código cuando se tiene que volver a leer.
  • Longitud de una función: Mi regla del pulgar es que una función debe tener menos de 20 líneas, aproximadamente. Si veo un método de más de 50 líneas, siento que lo mejor es dividirlo en partes más pequeñas.
  • Longitud de una clase: Creo que las clases deben tener menos de 300 líneas en total, e idealmente menos de 100. Es usual que clases muy largas puedan ser separadas en objetos diferentes, lo que hace más fácil entender el propósito de cada clase.
  • Longitud de un archivo: Es algo variable, dependiendo del lenguaje, pero para lenguajes dinámicos como Python, creo que alrededor de 1,000 líneas de código es lo máximo que deberíamos tener en un archivo. En caso de ser más grande, es una buena señal de que el contenido debe ser dividido en archivos más pequeños y enfocados. Mientras más grande sea un archivo, es más difícil encontrar información.
  • Documentación en comentarios: Para métodos complejos, los que su funcionamiento no es obvio o aquellos con una larga lista de argumentos, ¿hay un comentario (docstring) explicando la función de cada argumento?
  • Código comentado: Es una buena idea remover código que ya no se utiliza y que se ha dejado cómo comentarios.
  • Número de argumentos en un método: Para métodos y funciones, ¿tienen 3 o menos argumentos? Más de 3 probablemente significa que pueden ser agrupados de otra forma.
  • Facilidad de lectura: ¿El código es fácil de entender? ¿Tienen que detenerte frecuentemente durante la revisión para descifrarlo?

Pruebas

  • Cobertura de las pruebas: Me gusta ver pruebas para nuevas características. ¿La pruebas indican que se pensó en ellas antes de escribirlas? ¿Cubren los casos en que habría fallos? ¿Qué tan frágiles son? ¿Qué tan amplias son? ¿Son lentas?
  • Pruebas en el nivel correcto: Cuando reviso las pruebas también me aseguro que estén probando el nivel correcto. En otras palabras, ¿están al nivel suficientemente bajo para corroborar la funcionalidad esperada? El desarrollador Gary Bernhardt (Destroy All Software) recomienda una relación de 95% de pruebas unitarias con un 5% de pruebas de integración. Me he dado cuenta que en proyectos con Django, es fácil crear pruebas de alto nivel por accidente, terminando con un conjunto de pruebas lento, así que es importante mantenerse alerta.
  • Número de objetos simulados: Crear objetos simulados (mocks, dobles) es genial, pero simular todo no lo es. Como regla del pulgar, si hay más de tres objetos simulados en una prueba, el código debe ser reestructurado. Puede ser que la prueba sea demasiado amplia o que la función que evalúa sea demasiado grande. Tal vez no necesite una prueba a nivel unitario y con una prueba de integración sea suficiente. De cualquier forma, es algo que se debe discutir.
  • Cobertura de los requerimientos: Usualmente, como la parte final de una revisión, observo los requerimientos de la historia, tarea o bug que dio origen al código. Si no cubre alguno de los requerimientos, es mejor no aceptar el código antes de que sea enviado a QA.

Revisa tu propio código

Antes de enviar mi propio código, hago un git add de los archivos y/o directorios afectados, y luego ejecuto un git diff --staged para examinar los cambios que aún no he integrado al repositorio. Usualmente busco cosas como:

  • ¿Dejé un comentario o TODO en los cambios?
  • ¿Los nombres de las variables tienen sentido?
  • ...y alguna violación a lo discutido en puntos anteriores.

Quiero estar seguro de que pasaría mi propia revisión de código antes de pedirle a otras personas que lo revisen. También duele menos recibir comentarios de uno mismo que de otros. :P

Manejando las revisiones de otros

He encontrado que la parte humana de la revisión de código ofrece tantos retos como la parte técnica. Aún sigo aprendiendo como manejar ésta parte. Aquí presento algunas aproximaciones que han funcionado cuando discuto sobre código:

  • Haz preguntas: ¿Cómo funciona ese método? ¿Si éste requerimiento cambia, qué más tendría que cambiar? ¿Cómo podemos hacer esto más fácil de mantener?
  • Refuerza y felicita las buenas practicas: Una de las partes más importantes de la revisión de código es recompensar a los desarrolladores por su crecimiento y esfuerzo. Pocas cosas se sienten mejor que recibir el reconocimiento de un compañero. Yo trato de ofrecer la mayor cantidad posible de comentarios positivos.
  • Obtén más detalles en persona: En ocasiones, un cambio en la arquitectura puede ser muy grande y es más fácil discutirlo en persona que a través de comentarios. De forma similar, si la discusión de un punto genera comentarios de ida y vuelta, con frecuencia prefiero retomarlo en persona para finalizar la discusión.
  • Explica el razonamiento: He encontrado que es mejor preguntar si hay alguna alternativa superior y justificar porque es importante arreglarlo. Algunas veces puede haber la sensación de que los cambios sugeridos son superficiales si no hay algún contexto o explicación.
  • Mantén el enfoque en el código: Es fácil tomar de forma personal los comentarios en las revisiones de código, especialmente si nos enorgullecemos de nuestro propio trabajo. No hay que olvidar que las discusiones son acerca de como mejorar la calidad del código y no son específicos a los desarrolladores. Esto disminuye la resistencia.
  • Haz notar los cambios importantes: Es común que ofrezca varias sugerencias, pero no es necesario actuar en todas. Aclarar si es importante arreglar un punto antes de considerarlo terminado es útil tanto para quien revisa como para quien somete el código a revisión. Hace los resultados de la revisión claros y de valor practico.

En cuanto a la mentalidad

Como desarrolladores, somos responsables de crear código funcional y fácil de mantener. Puede ser fácil posponer la segunda parte debido a las presiones para entregar el código. La refactorización no modifica la funcionalidad por diseño, así que no dejes que los cambios sugeridos te desanimen. Mejorar la mantenibilidad del código puede ser tan importante cómo arreglar la línea de código que causa un bug.

Además, recuerda mantener una mente abierta durante las revisiones. Creo que es algo con lo que la mayoría tenemos problemas. Uno puede ponerse a la defensiva porque puede tomarlo personal cuando alguien te dice que tu código podría ser mejor.

Si la persona que revisa el código hace una sugerencia y no tengo una respuesta clara de porque esa sugerencia no debería ser implementada, usualmente hago el cambio. Si me hacen una pregunta acerca de una línea de código, quiere decir que podría confundir a otros desarrolladores en el futuro. Otro beneficio, es que el hacer los cambios puede revelar otros problemas de arquitectura u otros bugs.

(Gracias a Zach Schipono por recomendar que se agregará ésta sección.)

Atención a los cambios sugeridos

Nosotros usualmente dejamos comentarios en cada línea de código con nuestro pensamiento sobre ellas. Yo observo las notas de la revisión en el stash, y al mismo tiempo, jalo el código para hacer los cambios sugeridos. Encontré que con frecuencia olvido los puntos que tengo que atender si no lo hago de inmediato.

Referencias adicionales

Hay bastantes libros en el arte de crear código limpio. He leído menos de los que me gustaría (aunque estoy trabajando en cambiar eso). Estos son algunos de los que están en mi lista:

Son un gran fanático de las charlas, así que aquí al algunas que relacionadas que considero útiles y que recordé mientras escribía ésta entrada:

  • All the Small Things por Sandy Metz: Cubre bien el tema, particularmente desde la perspectiva de escribir código limpio y reutilizable. (Charla en inglés.)
  • How to Design a Good API and Why it Matters de Joshua Bloch: Una API en el sentido y con el significado de se la forma en que una aplicación es construida y cómo interactuamos con ella. Varios de los puntos del vídeo hablan de temas similares a los discutidos en éste documento. (Charla en inglés.)

Discusión en Hacker News.

Screenshot_2015-05-20_17-43-24.jpg

Ésta entrada es una traducción y adaptación de «Trailmix - 4 Reasons To Keep A Development Journal», recuperada e. El contenido se incluye en ésta bitácora con fines informativos y de divulgación. La traducción fue originalmente publicada el 4 de Octubre de 2014.


Usar 60 segundos al día para escribir algunas notas pueden producir impresionantes beneficios profesionales.

  • Difícilmente olvidaras como arreglaste cierto error ¿Alguna vez has encontrado un error y pensado «Sé qué he visto esto antes pero, ¿cómo lo resolví?». Con un diario en el que puedas buscar, esa experiencia desaparecerá.

  • Aprenderás cuáles patrones de diseño funcionan bien cuando el código cambia. La verdadera prueba de un diseño no es cuando lo escribes por primera vez, sino cuando necesitas modificarlo tiempo después. Si tomas nota de cuando tus elecciones de diseño funcionan particularmente bien o si funcionan de manera pobre, pronto construirás un catálogo de técnicas que puedes adoptar y otras que debes evitar. Después de que tu tercer intento por implementar el patrón Observador en la aplicación foo sigue confundiendo a nuevos desarrolladores que se unen al proyecto, aprenderás a meditar antes de usarlo en un futuro.

  • Una lista de tus logros es bastante útil ante una revisión Enviar a tu jefe un correo, una semana antes de una revisión, listando tus mayores logros en los pasados N meses, es una acción recomendable.

  • Te darás cuenta de cuando necesitas cambiar de empleo Como seres humanos, tendemos a tener algunos días buenos y algunos malos. Debido a esto, puede ser difícil detectar tendencias en tu estado de ánimo. Escribir con consistencia puede ayudarte a detectar cuando los días malos son más que los buenos. En ese caso, tal vez sea mejor comenzar a buscar.

Cómo construir el hábito de forma exitosa

Comenzar un diario de desarrollo no es difícil, pero mantener uno lo es. Lo principal para construir el hábito no es la excitación inicial, es la consistencia. El mayor enemigo de la consistencia es el olvido.

Si quieres intentar el construir éste hábito, sería bueno que configures un recordatorio diario durante las primeras semanas. Cuando apagues la alarma, lanza tu editor y escribe una entrada.

Otra opción es una app como Trailmix, que te envía correos cada día, preguntando en lo que has estado trabajando, a los cuales puedes responder directamente para crear automáticamente una entrada en un diario. Además, incluye una entrada anterior en el correo que recibes, ayudando a mantener fresco lo que has aprendido.

También puedes optar por usar la plataforma para blogs Jekyll en conjunto con GitHub Pages, pero requiere de más configuración.

Recursos adicionales

IMG_20141004_193915.jpg

https://www.packtpub.com/packt/free-ebook/thinking-in-javascript

1 0
jalbertbowden made a comment

url inception

http://www.aaron-gustafson.com/notebook/url-inception/

Nowadays there are several professional software present in Web that can easily move your all data of Lotus Notes to Outlook mail client without facing any hassle. If you are also looking for this kind of application, then I would like to mention here a very effective and reliable software called Kernel for NSF to PST converter that easily transfer or converts NSF files of Notes to Outlook PST format.

This software have some more effective Features like..

1)With the help of this tool, you can migrate emails along with their attachments and email details such as tasks, appointments, personal address books, contacts etc from Notes to MS Outlook Personal Folders.

2)By using it, one can save converted files to Exchange server profile.

3) It have interactive and easy-to-use graphical user interfaces

For any other query, you can visit http://www.howconvertnsftopst.convertnsftopst.biz/ convertnsftopst-01.gif

There is a pool of mobile application development companies out there in the market and choosing the best amongst them is a very tough task. There are some things which you need to concentrate on and you will surely be able to pick the right mobile application development company who is well suited to do your work.

  1. Take a close look at their portfolio
  2. Ask them to send you the associated links also
  3. Know the past clients
  4. Look for developers who are innovative
  5. Have an in-detail conversation about the prices charged for creating application choosingappdev.jpg

This tutorial is a walk through for the beginners to quickly get on boarded to Ember.JS and its related Ember CLI build tool

Tutorial link

Find out why users are migrating from Outlook Mac to Outlook 2010 for Windows platform and then know an appropriate solution which will help you to import Mac OLM file to Outlook 2010.

Microsoft for Windows introduced the capabilities of Outlook for Mac users after not much successful Entourage emailing client. This application was popular among users as Outlook 2011 for Mac. It provided all those features that Windows users of Outlook enjoyed. Yet many Mac users want to shift Outlook 2010 for windows. What can be the reason for so many users opting for such kind of decision? Let us discuss the causes behind it and possible solutions that will help them to import Mac OLM file to Outlook 2010 conveniently.

Reasons for Users Migrating to Outlook for users

  • Better search options were not available with Outlook 2011
  • Non availability of folder categorization
  • No dedicated filter operation for searching email messages
  • Prone to virus and often MAC messages get corrupted
  • There are particularly more applications specially meant for Outlook for Windows rather than Outlook for Mac

This is clear that Outlook for Mac failed to impart user-compatible features and this was the very reason for users opting to change to Windows environment. So, let’s now discuss of the proficient solutions that will help users to import the OLM files to PST file format.

Method-1

One way of importing the OLM files of Outlook for Mac 2010 to PST file format of Outlook for Windows is by configuring an IMAP account. The steps for this procedure are given below.

  • Configure an IMAP email account say with Gmail
  • The next step consists of setting the Outlook for Mac account with that of the newly created Gmail IMAP account
  • Synchronization of IMAP account with Outlook for Mac
  • Move all the OLM file data to the IMAP folder of Gmail
  • The next step consists of moving the data from IMAP folder of Gmail to Outlook for Windows
  • The data which will be in Outlook will be eventually in PST file format

Disadvantages

This method takes a lot of time for executing and if the emails are more in number then the method won’t be feasible for users.

Method-2:

If a user’s account has been configured with Outlook 2011 for Mac and possibly with the Outlook account on windows operating system then this method can work out to import the OLM files of Outlook for Mac to Outlook for Windows. Look out for the detailed steps in order to carry out the procedure.

  • First connect the Exchange server mailbox with Outlook on Windows platform in enabled Cached Exchange mode
  • Then use the Powershell cmdlet Export-Mailbox for exporting data from the mailbox of the Exchange server to Outlook PST file format.

Disadvantages

This approach requires the setup of Exchange server which may not be available with all users and simply for importing the OLM files into PST file format they cannot install Exchange server.

Move to A More Efficient Solution

In such cases they can move to an efficient approach of moving the OL files of Mac for Outlook to Outlook 2010 with the help of a feasible solution known as OLM to PST Converter utility. It competently migrates the OLM file data of Mac to Outlook without bringing out any changes in the original format of messages.

http://dns.js.org
http://js.org
http://github.com
https://pages.github.com/

iisexpress-proxy-by-icflorescu.jpg

TL;DR

npm i -g iisexpress-proxy
iisexpress-proxy 51996 to 3000

The story

Are you a .NET developer building mobile web application? Have you ever been frustrated by the fact that there's no easy way to enable IIS Express to accept connections from remote devices?...

Well, join the club. If you're patient enough to dig through the various links coming up on the search above, you'll see that it is possible, but not really straightforward.

However, there's now a much simpler solution available: you can proxy the http traffic to IIS Express using this little Node.js command-line tool I've put together. It's as simple as typing this in the command prompt:

iisexpress-proxy 51996 to 3000

It will show you something like:

IIS Express Proxy 0.1.2
Proxying localhost:51996 to:
- Wi-Fi: 192.168.0.102:3000
- VMware Network Adapter VMnet1: 192.168.192.1:3000
- VMware Network Adapter VMnet8: 192.168.245.1:3000
Listening... [ press Control-C to exit ]

Then you can simply point your tablet or mobile phone at http://192.168.0.102:3000.

Motivation

8 years ago I was doing lots of C#/.NET development. Then I switched to Ruby/RoR, then to Node.js, which I've been using almost exclusively for 3 years. During these last 3 years I've become accustomed to a rich, flourishing, cutting-edge development workflow that just works.

Now I am contemplating the opportunity of working on a large Angujar.js/.NET application. None of those is my technology of choice, but they do seem to be favored by the corporate environment, and after all, that's where the money is.

While Microsoft is slowly reinventing itself, I've come to realize their ecosystem and philosophy are still far from web-developer friendly. For instance, Visual Studio might be a great IDE for building desktop applications, but to be honest I find it rather counter-productive for web development.

However, you can alleviate the pain by borrowing the right tools from the open-source world and especially from the rich Node.js ecosystem.

Sharing is caring

If you like iisexpress-proxy, please don't hesitate to tweet about it!

https://www.youtube.com/watch?v=TjsXqt-UxLo&feature=youtu.be

http://blog.hostilefork.com/where-printf-rubber-meets-road/

A formal piece of document which is essential for gaining degree associated with research work is referred as dissertation.

dissertations.jpg

While preparing dissertation, various issues are faced by students which include:

  • Suitable thesis statement – Students do not give much importance to the thesis statement which is a crucial part of the research. It tells the intention of your dissertation and often statements used are very basic and non-debatable.
  • Suitable literature – Review of literature is another major portion of a dissertation and requires proper research and compilation. Students have hard time preparing this portion due to lack of literary sources.
  • Proper language – A student or researcher may have suitable research findings on a particular dissertation process but it becomes a cumbersome task to convert these findings into proper dissertation due to occurrence of several language related errors.
  • Management of time – While dissertation preparation, students find it difficult to manage time which makes it difficult to complete the dissertation during the time of submission.
  • Proper data – Searching relevant and accurate data which is needed to support the dissertation is also another issue which impacts students while dissertation preparation.

These issues depreciate the quality of dissertation writing and may also lead to various psychological issues like over-stress, insomnia and lack of social connectivity.

So, the students can take support of organizations which provide help associated with dissertation preparation. EssayCorp is one such place which eases the stress of the students and give them affordable service for dissertation writing.

Why choose EssayCorp:

  • Proper formal language – The writers are dedicated in providing the final dissertation with no grammatical errors with use of formal and readable language.
  • Qualified writers – Writers working at the organization have suitable experience and relevant qualification with up to PhD level. So, they are dedicated in delivering final dissertation which is of top notch quality.
  • Analytic thinking based content – Critical thinking is applied by the writers which prepare the dissertation.
  • Originality – All the content used in preparing dissertations is totally original which gives assurance to students that no plagiarism is involved in the process.
  • Interaction with students on regular basis – To ensure that the dissertation writing process is done as per the requirements of the students, the writers remain in touch with students on constant basis.

A dissertation is the most critical entity in a student / researcher’s life. Therefore, students should make sure that the hard work is reflected in the final formal dissertation.

To know more about us, visit here: http://www.essaycorp.com/

Are you guys ever planning to do anything with Sitepoint and/or AirPair? I mean, you guys still have linkages for Code School and Pluralsight individually even though they've merged, so I was rather curious.

rename 's/\d+/sprintf("%03d",$&)/e' *.jpg

1 0
daniellmb shared a code snippet

Creating Custom Fiddler Rules

How can I replace HTTPS traffic from one domain with HTTP from another?

Let's say you have problem on your secure server in production, and you want to debug it, but you can't set up the SSL certificate locally. One solution is to use a custom Fiddler rule to redirect the HTTPS traffic from production to your local development machine over HTTP. The following is a step-by-step walkthrough on how to do just that.

  1. Open Fiddler
  2. In the top menu select Rules > Custom rules

At this point you may be asked: "Would you like to download and install the FiddlerScript Editor?" If this happens:

  1. Choose Yes
  2. Close Fiddler
  3. Install the Editor plugin
  4. Follow the three steps in the first section again

Now you're ready to add custom rules.

  1. From the top menu choose GO > to OnBeforeRequest
  2. Add the following code to the beginning of the function
  3. Save the file and you're done!

// Handle CONNECT Tunnels
if (oSession.HTTPMethodIs("CONNECT"))
{
    oSession["x-replywithtunnel"] = "FakeTunnel";
    return;
 }

// Handle HTTPS requests
var PRODUCTION = "secure.mycompany.com"
var DEVELOPMENT = "dev01.mycompany.com"
if (oSession.isHTTPS &&
   (oSession.HostnameIs(PRODUCTION) || oSession.HostnameIs(DEVELOPMENT))) {
    oSession.fullUrl = "http://" + DEVELOPMENT + oSession.PathAndQuery;
    FiddlerApplication.Log.LogFormat("HTTPS -> HTTP {0}", oSession.fullUrl);
}
1 1
Don Smith made a comment

Relocated

For a while I was maintaining a blog about code-related topics here on Coderbits. I've since consolidated all my blogging, which isn't much, into a single blog and it's being hosted over at blog.locksmithdon.net.

http://www.popgeo.net/?p=69

I've been on a mission to learn R lately. And while I've been thoroughly enjoying the ride, there's nothing like a tangible objective to really turn the learning up to 11, right? Well, I just happen to have some data in SQL Azure that's begging to be mined. This post describes what I did to connect to it from RStudio.

For prosterity, I'm using version 3.1.3 of R inside of RStudio v0.98.1103 on OS X Yosemite (10.10.2). Oh, and I'm a big fan of homebrew, so I'm using it to install some of the important bits.

No DSNs

It's probably worth noting that I'm not using a DSN to connect. I'm just using a normal connection string that lives in the code. This meets my needs better since I'm not deploying to another machine. I also prefer to keep the configuration all together rather than having files scattered in obscure (or even obvious) locations on the filesystem.

Overview

At a high level, this process involves the following steps:

  • Install unixODBC using homebrew
  • Install FreeTDS using homebrew
  • Install RODBC from source using R
  • Connecting to the database

I'm assuming your SQL Azure database is already running and configured. You will need to know the password of the user account that's in the ODBC connection strings provided by Azure. I don't know how to get the password from the Azure interface, or if it's even possible.

Installing unixODBC

This updates homebrew and its formulae, installs wget (you can remove it if you already have it installed), and then installs unixODBC.

brew update && brew install wget unixodbc

Installing FreeTDS

This installs FreeTDS and wires it up to unixODBC.

brew install freetds --with-unixodbc

Installing RODBC

This installs RODBC v1.3-11. Head over here to be sure you're installing the latest version (or at least the latest 1.x) and update the 2 locations in this command as necessary.

wget "http://cran.r-project.org/src/contrib/RODBC_1.3-11.tar.gz" && R CMD INSTALL RODBC_1.3-11.tar.gz

Connecting to the database

Because I'm not using a DSN, there isn't anything to configure. You just need to run a couple of R commands to get the data. First you'll need to grab the ODBC connection string from the Azure portal.

Get the connection string

  • If you're using the old portal, sign in, make sure you're on the right subscription (subscription link at the top of the page), select SQL Databases on the left, select your database name in the list, select Dashboard, and then select the link in the menu on the right side of the page labeled Show connection strings. Copy the ODBC one.

  • If you're using the new portal, sign in, make sure you're on the right subscription (top/right link from the home screen), select Browse in the left menu, select SQL databases, select the name of your database, select Properties, and then select the link labeled Show database connection strings. Select the icon to copy the ODBC connection string to the clipboard.

Getting results

Here are the commands you need to connect and retrieve data.

Create a variable that contains the connection string (replace the driver with "FreeTDS" and add your password):

connection.string <- "Driver={FreeTDS};Server=[your_host].database.windows.net,1433;Database=[your_db];Uid=[your_username]@[your_host];Pwd=[your_password];Encrypt=yes;Connection Timeout=30;" 

Create a database connection:

db <- odbcDriverConnect(connection.string)

Get some data (replace your_table):

data <- sqlQuery(db, "SELECT * FROM [your_table]")

Be sure to check out the RODBC vignette (pdf) and the package docs (pdf) for more information about the R commands available.

0 0
raphaelom made a comment

About Lucene Merge

Lucene store its index using segments and adding new a document is a matter of appending or in case of an update, appending a new version and marking old ones as deleted. This generates a lot of bogus irrelevant data that only hinders information retrieval. To solve this, Lucene cleans itself up using MergePolicies which are strategies to consolidate the index.

This is a video of lucene indexing the wikipedia dump and how the merging occurs upon the threshold, effectively reducing the index size when a new document is added.

I've just recently published a node.js module that wraps the coderbits profile API. It's really simple to use, just install it:

npm install coderbits

and get the data:

var coderbits = require('coderbits');

coderbits('bit', function (error, profile) {
  if (!error) console.log(profile);
});

So if you're planning to do something with node.js and the data provided by coderbits, don't hesitate to use it and leave your opinions, suggestions and bugs found. Pull requests are wellcome.

More info on the module page

Intelligent portfolios for developers and designers.

We build factual up-to-date portfolios from sites you use to showcase your skills, expertise, traits, code, designs, education, and more.


CREATE YOUR FREE PORTFOLIO

RSS feeds

Filter results

Tag

Coder

Full search

Newest opportunities

Newest posts