[Rails] 테이블 명이 헷갈릴 때

이번에 만드는 테이블 중에 LessonData라는 이름의 테이블을 만들어야 했는데 이 경우에 Model 명을 어떻게 지어야 하는 지 헷갈렸다. 모델명이 LessonDatum이 되어야하는지 테이블 명이 LessonDatas가 되고 모델명이 LessonData가 되어야하는 지 헷갈렸는데 일단 결론부터 말하자면 테이블 명을 LessonData, 모델명을 LessonDatum으로 하는 것이 맞았다.

Nokogiri Gem 설치 문제

rubber gem 설치를 하는 도중 nokogiri에 디펜던시가 있어서 nokogiri gem도 설치했어야 했는데 gem이 설치되어 있는데도 불구하고 bundle install 실행 시에 계속 gem을 깔라는 오류가 떠서 거의 이틀동안 구글에 있는 모든 해결 방법을 다 해봤는데 고칠 수 없었고…

Memcached 정리

memcached를 공부하면서 정리.

  1. Chunk와 Slab란

memcached에서 key, value를 저장하는 크기는 이 데이터를 Chunk이라는 단위에 할당한다. (기본값 48kB) Chunk 한개에는 한쌍의 key, value를 담기때문에 60kB의 Chunk에 48kb의 K-V 데이터가 들어가면 12kB는 빈공간으로 낭비된다.

Chunk는 다시 Slab이라는 단위로 묶이는데 이 Slab의 기본 값은 1MB이다. Slab의 Chunk의 사이즈 별로 Class가 나뉘는데 이 Chuck의 사이즈는 factor 크기만큼 곱해지면서 커진다. 기본 Chunk의 사이즈가 48kB이고 factor가 1.25라면 기본 Chunk 사이즈를 가지는 Slab이 class 1이고 다음 사이즈인 48*1.25=60kB의 Chunk를 가지는 Slab이 class 2이다.

Naver 오픈소스 Arcus 정리

네이버에서 오픈 소스 프로젝트로 공개한 Arcus를 공부하면서 알게 된 Arcus의 특징 몇가지를 정리함.

Github에서 Gem 설치하기

dalli 소스를 분석하던 도중 소스를 약간 수정하려고 fork를 해왔는데 이 fork한 gem을 어떻게 설치해야 하는지 몰라서 당황했음.

방법을 좀 찾아보니 git을 클론해와서 gem을 다시 빌드, 설치하면 되는데 정리해보겠음.

Vi 검색 및 치환

애초에 치환이라는 걸 잘 안쓰다가 sublime 쓰다가 Vi로 다시 넘어보니까 치환이 너무 필요했음…

찾아보니까 너무 쉽고 편함. 아니 사실 쉽진않아.. 어쨌든 정리하면.

테스트 주도 개발(TDD)에 대해서

예전에 Rails Tutorial 할때 테스트를 계속 짜면서 이걸 왜 하나 싶었는데 알고보니까 TDD의 장점은 과감한 리팩토링이 가능한 거였다.

튜토리얼은 따라 하는 거라서 리팩토링을 할 일이 없어서 별로 필요성을 못 느꼈었는데 새삼 대단한 걸 느끼고 계속 테스트를 작성하는 버릇을 들여야겠다고 생각함. 유닛 단위의 테스트가 크게 의미있다기 보다는 그 테스트들이 점점 쌓여서 소프트웨어의 무결성을 보장한다는 점이 참 대단. 젤리버스에서 일 할 때도 추후에 수정한 부분이 예상치 못한 부분을 건드려서 버그를 만드는 경우가 많았는데 이런 점을 대부분 막을 수 있을 것 같다. 

리눅스에서 루트 권한 없이 패키지 설치하는 방법

리눅스 초보에서 개발 환경 세팅은 언제나 골치 아프다. 특히 루트 권한을 얻지 못할 때에는 더 심한데 그 이유는

  1. 패키지를 쉽게 설치할 수 있는 yum 같은 패키지 관리자가 루트 권한을 자주 요청하기 때문이고

  2. 그래서 직접 다운로드 받아서 설치하려고 해도 기본적으로 패키지가 설치되는 경로가 루트 권한을 필요로 하기 때문이다.

그래서 루트 권한이 없을 때에는 내가 권한을 모두 가지고 있는 홈 폴더에 설치해야 하는데 이 방법을 적는다.

This Is a Sample Post

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim1 veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.