반응형

행복 뒤에는 슬픔이 있고, 슬픔 뒤에는 행복이 있다.
햇빛이 비치는 곳이면 어디든 그늘이 있고,
빛이 있는 곳이면 어두움이 있게 마련이다.
태어남이 있는 곳에 죽음이 있다.
이들을 이겨내는 길은 이들을 없애버리는 데 있는 것이 아니라,
이들을 뛰어넘고 집착으로부터 완전히 자유로워지는데 있다.
-마하트마 간디

 

 

올해도 어김없이 다사다난한 한해가 지나가고 있습니다.
어려웠던 분들은 내년에는 더 좋은 일들이 가득할 것이라는 희망으로,
올해 좋았던 분들은 조금은 경계하는 마음으로
한 해를 되돌아보아야 할 시간입니다.

 

반응형
반응형

프로그램 공부 & 웹에서 구현 : http://www.codecademy.com/

 

 

 

반응형
반응형

Best jQuery Plugins of the Week [15th December-21st December]

 

Best jQuery Plugins of the Week

1. uinit

Developed by Joakim Carrilho de Almeida, uinit is a jQuery plugin that helps in customizing HTML attributes to automate the creation of widgets.

Download

2. jVanilla Menu

jVanilla is a menu jQuery plugin that takes an existing pure CSS drop-down menu and adds enhancements such as animations, submenu levels and timeout delays to it.

best-jquery-plugins

Demo | Download

3. jQuery Responsive Lazy Loader

Developer by J-Et. Martin, Responsive Lazy Loader is a plugin enables users to load images renditions according to CSS display and breakpoint..

best-jquery-plugins

Demo | Download

4. Password Checker

Password Checker by Nicolas Zhao is a jQuery plugin for detecting the strength of the password that a user enters.

Download

5. Snap.svg

Snap.svg is a JavaScript SVG library for the modern web. SVG is a smart way of creating an interactive, resolution-independent vector graphics that will look great on different size screens.

best-jquery-plugins

Demo | Download

6. jQuery Prettychecks Plugin

Prettychecks plugin helps replace the default user agent checkboxes and radios for custom images.

best-jquery-plugins

Download

7. Squishy

Squishy is a best jQuery plugin that automatically resizes text to fit the container with no extra work on your part.

best-jquery-plugins

Download | Demo

8. jQuery dropList

Developed by Dinesh Vadivel dropList is a lightweight jQuery plugin for customizing UI style for drop down list. The plugin has drop list, multi-list and combo list options.

Download

9. Infinite Scroll

Developed by Haralan Dobrev, Infinite Scroll is a jQuery plugin that is fast, bi-directional to help in endless pagination.

Download

10. Succinct

Succint is a tiny jQuery plugin for truncating multiple lines of text. It shortens your text to a specified size and then adds an ellipsis to the end.

best-jquery-plugins

Download | Demo

11. Field Chooser

Developed by Matthew Eagar, field chooser is plugin for dragging and dropping items between two lists with multi-select and keyboard shortcuts.

Download

12. Moa Modal

Moa Modal is a flexible jQuery modal plugin that features custom animation and positioning for users ti make optimum use of it.

best-jquery-plugins

Demo | Download

13. iCheck

iCheck by Damir Sultanov is a highly customizable checkboxes and radio buttons jQuery plugin that comes fully loaded with features like identical inputs across different browsers and devices, touch devices support, provides 32 options to customize checkboxes and radio buttons, and the list continues.

Demo | Download

반응형
반응형

http://www.zdnet.co.kr/column/column_view.asp?artice_id=20131223174623&type=xml

 

SW개발, 제대로 된 코드리뷰가 힘든 이유

 

두달넘게 소프트웨어 개발문화에 관련된 칼럼을 쓰고 있다. 문화란 한쪽이 일방적으로 잘못되었다기 보다는 서로 다른 부분이 많은 것이다. 그러한 우리 문화 중 소프트웨어 개발에 불리한 부분을 짚어보고 같이 고민해보자는 의미로 칼럼을 쓰고 있다.

 

문화란 공동체의 비슷한 생각과 행동이다. 공동체에 속한 사람은 당연히 하는 행동도 다른 문화를 가진 사람들은 지식적으로는 알고 있어도 쉽게 따라하기 정말 어렵다. 개인의 습관은 개인의 의지로 고칠 수 있지만 집단의 문화는 바꾸기가 훨씬 어렵다.

 

그래서 개발문화는 우리가 흔히 알고 있는 것도 제대로 정착시키기가 힘들다. 그중에서 대표적이고 중요한 것이 '리뷰 문화'다.

 

소프트웨어 개발에 있어 가장 중요한 문화 중 하나인 “리뷰문화”가 제대로 정착된 회사를 우리나라에서 찾기란 그렇게 쉬운 일이 아니다. 다들 그 중요성은 알고 있지만 대부분은 시도해보고 포기하기를 반복하곤 한다.

 

왜 그렇게 리뷰가 어려울까?

 

가장 흔히 하는 얘기는 리뷰할 시간이 없다는 것이다. 물론 이것은 단기적으로는 오해지만 이해가 안가는 것은 아니다. 매일 일정에 쫓겨서 간신히 구현만 하기에도 허덕인다. 통계 상으로는 적절한 리뷰를 하는 것이 총 개발시간 및 비용을 절약해 준다고는 하지만 이것은 손에 잡히지 않는 이상의 세계와도 같다.

 

많은 회사들이 리뷰를 특히, 코드리뷰를 강제화하곤 하는데 그 결과 효율적인 리뷰가 되기보다는 의무적인 리뷰로 변질되면서 리뷰에 대한 나쁜 기억만 쌓이게 된다. 그러다보면 리뷰문화가 제대로 정착하지 못하고 포기하거나 강제화 덕에 비효율적이지만 명맥만 유지하게 된다.

 

리뷰문화는 어렵다고 포기해도 될만큼 사소하지 않다.

 

리뷰에는 여러가지 목적이 있다. 오류검출외에 공유, 교육의 목적도 있다. 품질 향상을 위해 리뷰를 하지만 리뷰를 통해서 지식 및 정보가 공유되고 노하우가 전달되며 개발자들이 서로 성장하게 된다. 지식공동체가 리뷰를 통해서 성장하게 되는 것이다. 사실 리뷰를 통하지 않고서는 개발자들의 핵심 역량이 성장하기는 어렵다.

 

리뷰가 활발하지 않다면 혼자서 책보고 인터넷보고 피아노를 배우는 것과 비슷하다. 더 많은 시행착오를 겪어야하며 느리게 성장하거나 좌절하게 된다. 자칫 우물안 개구리가 되거나 자아도취에 빠지기 쉽다. 이런 환경에서는 아마추어가 될 수는 있지만 프로가 되기는 어렵다.

 

그럼 리뷰를 제대로 하려면 어떻게 해야 할까? 리뷰 문화가 잘 정착된 곳에서는 어떻게 리뷰를 하고 있을까?

 

What, When, Who, How 4가 측면으로 살펴보자.

 

What, 무엇을 리뷰하는가?

 

'리뷰'하면 흔히 코드리뷰를 생각한다. 하지만 소스코드만 리뷰를 하는 것은 그렇게 효율적이지 못하다. 설계가 다 된 빌딩을 만들면서 벽돌 쌓는 것만 검토하는 것이다. 설계가 잘못되었다면 이미 되돌릴 수가 없다. 그리고 스펙과 설계가 공유가 안된 상태라면 소스코드를 봐도 리뷰할 것이 별로 없다. 기껏해야 코딩 규칙이나 문법 등 밖에 못본다.

 

코드리뷰보다 더 중요한 것은 스펙과 설계 리뷰다. 스펙과 설계리뷰가 더 어려운 이유는 스펙과 설계를 제대로 작성하지 않기 때문이다. 아무리 스펙과 설계가 없어도 소스코드는 있기 때문에 코드리뷰는 항상 할 수 있다. 스펙과 설계를 제대로 작성하고 충분히 리뷰를 해야 한다. 코드리뷰 때보다 스펙과 설계 리뷰 시에 더 다양하고 중요한 것을 배우고 공유할 수 있다.

 

When, 언제 리뷰하는가?

 

코드리뷰를 포함해 리뷰의 실패로 이어지는 대표적인 방법은 나중에 몰아서 리뷰를 하는 것이다.

 

피어데스크체크부터 인스펙션까지 코드리뷰의 종류도 여러가지가 있지만 별다른 전략없이 1주나 2주에 한번씩 개발자들이 모여서 지금까지 작성한 코드를 놓고 끝장 리뷰를 하곤 한다. 사전에 검토하지 않고 참석해서 내용을 파악하지도 못하고 장시간 모여 리뷰를 하게 되면 집중력이 떨어지고 형식적인 일이 되기 쉽다. 이렇게 잔뜩 개발을 해 놓고 검토를 한들 고치기도 어렵다.

 

성공적인 리뷰를 하려면 그때 그때 바로 해야 한다. 코드리뷰에서 가장 쉽게 성공할 수 있는 방법중 하나는 소스코드를 등록하기 전에 동료와 모니터를 보면서 5분~10분 정도 검토를 하는 것이다. 고칠 것이 있으면 바로 고칠 수 있다. 이것을피어데스크체크(Peer desk check)라고 하는데 가장 쉽게 적용할 수 있는 방법 중 하나다.

 

이외에도 소스코드를 등록하고 나서 고친 내용을 이메일을 통해서 리뷰를 할 수도 있고 소스코드 리뷰시스템을 이용하면 좀더 수월하게 할 수 있다. 원격지에 있는 개발자와도 리뷰가 가능하다. 중요한 것인 코딩을 하고 즉시 리뷰를 하는 것이다. 물론 몇 시간의 시간 간격이 있지만 다시 고치기에 부담이 없는 시간이다.

 

스펙을 작성하거나 설계를 할 때도 마찬가지다. 다 작성하고나서 한꺼번에 리뷰를 하는 것이 아니라 중간 중간 필요할 때마다 리뷰를 계속 하면서 작성해야 한다. 너무 자주는 아니지만 적절할 때 리뷰를 하는 것이 요령이다.

 

Who, 누가 리뷰하는가?

 

흔히 리뷰를 프로세스로 생각하고 승인을 받도록 한다. 그래서 팀장이나 고참 개발자들이 리뷰를 의무적으로 하도록 한다. 물론 내용적인 검토를 하기 위해서는 그렇게 해도 되지만 팀장이나 고참이 항상 리뷰를 할 수 없을 수도 있고 시간이 안될 수도 있다.

 

리뷰는 목적에 따라 다양한 사람들이 할 수 있다. 코드리뷰는 주로 고참개발자들이 진행하지만 개발자들끼리 서로 리뷰를 할 수도 있다. 내용에 따라서 어려운 것은 특별히 고참개발자를 지정해서 리뷰를 요청할 수도 있고 일반적인 것들은 동료와 같이 리뷰를 해도 공유의 목적을 달성하는 것이고 동료들끼리도 서로 배울 수 있는 것도 많다.

 

스펙과 설계를 작성할 때는 각 분야의 전문가와 리뷰를 한다. 마케팅팀, 영업팀, QA팀 등과 해당 팀과 관련된 내용을 리뷰한다. 특히 설계를 할 때는 아키텍트들의 도움을 받고 특정 기술에 대해서는 해당 기술의 전문가의 리뷰를 받으면서 도움을 얻는다.

 

따라서 리뷰자를 프로세스에 강제로 지정하면 비효율적인 리뷰가 될 수도 있다. 리뷰 내용과 목적에 따라서 적절한 사람이 리뷰를 할 수 있도록 해야 한다.

 

How, 어떻게 리뷰하는가?

 

리뷰는 감사(Audit)가 아니다. 리뷰를 하라고 하면 귀찮아하고 부담스러워하지만 리뷰는 누군가가 나를 도와준다고 생각하면 좋다. 또, 누군가가 나에게 리뷰를 부탁하면 나의 전문성을 가지고 누군가를 도와줘야 하는 일이므로 꼼꼼히 검토를 하고 최선을 다해야 한다.

 

고참이 될 수록 리뷰어(Reviewer)인 경우가 많다. 따라서 고참들은 리뷰를 할 수 있는 시간을 충분히 확보를 해야 한다. 이것을 일은 적게한다고 생각하면 안된다. 코딩 한줄 더 하는 것보다 리뷰를 해주는 것이 전체적으로 이익이기 때문에 그렇게 하는 것이다.

 

리뷰를 하려면 우선 문서가 있어야 한다. 소스코드, 설계문서, 스펙문서가 있어야 한다. 바로 만나서 가볍게 하는 리뷰도 있지만 대부분은 미리 배포가 되고 검토를 한 후에 리뷰를 진행하는 것이 더 효율적이다. 또 항상 만나야 리뷰를 할 수 있는 것도 아니다. 온라인으로도 충분히 리뷰를 진행할 수 있다.

 

가끔은 모여서 하는 리뷰가 훨씬 효율적일 때도 있다. 아키텍처 리뷰와 같은 회의가 그중 하나다. 하지만 많은 리뷰는 온라인으로도 충분히 진행할 수 있다.

 

가끔은 체크리스트를 만들어서 리뷰를 하곤 하지만 체크리스트는 그렇게 효율적이지 못하다. 피아노를 잘 치는 방법 체크리스트 1천개가 있어도 별로 도움이 안된다. 전문가는 10초만 봐도 피아노 치는 방법을 어떻게 바꿔야 하는지 안다.

 

대부분은 경험을 기반으로 리뷰를 하는 것이다. 자신의 경험과 전문적인 지식을 토대로 리뷰를 하고 도움을 주는 것이다. 체크리스트는 간접적인 도움이 될지는 몰라도 체크리스트를 잘 만든다고 해서 누가나 리뷰를 할 수 있도록 하게 할 수는 없다.

 

만약에 리뷰를 잘하고 있는 회사에 개발자가 처음으로 입사를 했다면 자연스럽게 습관으로 익혔을 것이다. 그런데 그렇지 않은 회사에서 3,4년 일하다보면 리뷰를 안하는 것이 완전히 몸에 베이게 된다. 그리고 습관을 바꾸기가 정말 어렵다.

 

세살버릇 여든간다고 하듯 개인적으로도 바꾸기 어렵지만 회사차원에서는 더욱 어렵다. 자율에 맡겨 놓으면 대부분 실패한다. 그렇다고 포기할 수는 없고 프로세스로 강제화하는 것이 시작하는 방법 중 하나다. 이미 리뷰 문화 정착에 실패한 경험이 있는 회사들은 실패의 원인을 잘 찾아야 한다. "이 산이 아닌가보다”가 반복되면 직원들의 거부감만 가득차게 된다.

 

리뷰를 강제화하되 벌칙보다는 포상으로 정착을 유도하는 것이 좋다. 제약사항을 너무 많이 만들어 놓는 것도 좋지 않다. 직원들의 적응 상태를 봐가면서 아주 천천히 한발씩 나가야 한다.

반응형
반응형

Koa: A next-gen Node.js web framework

koa

 

Expressive middleware for node.js using generators

 

Expressive middleware for node.js using generators via co to make web applications and APIs more enjoyable to write. Koa's middleware flow in a stack-like manner allowing you to perform actions downstream, then filter and manipulate the response upstream. Koa's use of generators also greatly increases the readability and robustness of your application.

Only methods that are common to nearly all HTTP servers are integrated directly into Koa's small ~400 SLOC codebase. This includes things like content-negotiation, normalization of node inconsistencies, redirection, and a few others.

No middleware are bundled with koa. If you prefer to only define a single dependency for common middleware, much like Connect, you may use koa-common.

Installation

$ npm install koa

To use Koa you must be running node 0.11.9 or higher for generator support, and must run node(1) with the --harmony flag. If you don't like typing this, add an alias to your shell profile:

alias node='node --harmony'

Another option, if you would like to use koa with node 0.10.x (the current stable branch), or are tired of typing the --harmony flag, is to use gnode to spawn your node instance. However note that performance degrades quickly compared to 0.11.x.

Community

 

반응형
반응형

Myth: A pure CSS preprocessor

myth

Homepage: http://www.myth.io/
GitHub: https://github.com/segmentio/myth

 

Myth

CSS the way it was imagined.

Myth is a preprocess that lets you write pure CSS without having to worry about slow browser support, or even slow spec approval. It's a like CSS polyfill.

Installation

$ npm install -g myth

Usage

$ myth input.css output.css
# Generated output.css from input.css

Why?

Myth lets you write pure CSS while still giving you the benefits of tools like LESS and Sass. You can still use variables and math functions, just like you do in preprocessors. It's like a polyfill for future versions of the spec.

Some of the features in CSS require runtime calculations, which neither Myth nor preprocessors handle, but what Myth does is let you write your code today in the future syntax, so that your code is future-proof. When browsers finally support these features you won't need to rewrite anything, just start using the cascade!

Taking plain CSS as an input also means you can use Myth to re-process anyone else's CSS (or another preprocessors output), adding the browser support you need, without having to re-write the code in a completely different syntax.

Myth is built with Rework so it's incredibly fast, and has a nice Javascript API in addition to the CLI. 

반응형
반응형

감옥에 있다 나오면 작은 것에 감사하게 된다.
언제든지 원할 때 산책하고 길을 건너고 상점에 들어가 신문을 사고
말하고 싶을 때 말하고 말하기 싫으면 말하지 않을 수 있다는 생각에,
자신을 스스로 통제할 수 있는 단순한 행위에...
자유로운 사람은 이런 것에 늘 감사하지 않는다.
사람은 속박을 당한 뒤에야 그런 것을 기쁘게 받아들인다.
- 넬슨 만델라, ‘나 자신과의 대화’에서

 

 

사소한 일에 감사할 줄 알고 그 마음을 표현할 때
그 순간부터 인생은 천국이 됩니다.
그러나 안타깝게도 소중한 것을 잃고 나서야
그 소중함을 깨닫게 되는 경우가 너무나 많습니다.
감사도 기술입니다.

반응형
반응형
'우리 영원히!'


그래서인지 우리는
'영원히'라는 말을 유난히도 좋아한다.
사랑하는 사람을 만났을 때도 영원히 사랑한다
하고, 우정을 나눌 때도 영원히 변치 말자 한다.
행복한 순간에는 그 순간이 영원하기를 바란다.
인간의 삶이 유한함을 알면서도 원래 있었던
영원한 시간을 누릴 수 있는 삶을
그리워하는 것이다.


- 한홍의《시간의 마스터》중에서 -


* 인생이 유한하기 때문에
영원을 더욱 꿈꾸며 사는지도 모르겠습니다.
한 번 정을 주면 죽을 때까지, 아니 죽어서도
영원하기를 꿈꿉니다. 돌처럼, 박제된 동물처럼
굳어진 채로 영원한 것이 아니라, 나무처럼
계속 자라면서 꽃처럼 철마다 새롭게
피어나면서 영원하기를 꿈꿉니다.
'우리 영원히!'



 

반응형

'생활의 발견 > 아침편지' 카테고리의 다른 글

새해에는...  (0) 2013.12.28
"아래를 내려다보지 말라"  (0) 2013.12.27
별이 빛나는 밤  (0) 2013.12.25
'참 좋은 당신'  (0) 2013.12.24
무당벌레  (0) 2013.12.23

+ Recent posts