Mac Terminal의 Home, End키의 기본 세팅이 스크롤 최상단/최하단 (좀 더 정확하게 말하면 버퍼의 최상단/최하단)으로 이동이 됩니다.
하지만 일반적인 상황에선 현재 줄의 처음과 끝으로 가는 용도로 많이 사용하죠.
(여기서 OSX에 불만 하나.. 왜 프로그램마다 Home, End 동작이 틀리냐고.. Home, End만 틀린게 아님. 틀린키 무지 많음.)
평상시에는 그냥 그러려니 하고 별 문제 없이 쓰지만, 막상 필요한 순간이 오면 참 짜증이 나는.. 뭐 그런 기능입니다.
2011/10/30 18:39TRACKBACK FROM 월풍도원(月風道院) - Delight on the Simple Life
맥에서 rvm(Ruby Version Manager)를 이용한 ruby on rails 개발 환경 구축 방법입니다.맥 OS X에 rvm을 이용해 ruby on rails 개발 환경 구축하기맥 OS X에서 루비 설치하기우선 터미널에서 아래의 커멘드를 이용해 RVM(Ruby Version Manager)을 설치합니다.$ bash < <(curl -s...
Rails 3.1부터 prototype.js가 아닌 jQuery와 CoffeeScript가 Default로 탑재되어 있다.
만약 jQuery가 아닌 prototype.js를 계속 사용하고자 할 경우,
rails new [APP_NAME] -j prototype
해주면 된다.
새로 추가된 Gems
sass: haml에 포함되어 있던 sass가 독립되어 나왔다.
coffee-script
uglifier: JS를 하나의 파일로 합쳐준다.
jquery-rails
디렉토리 구조 변경
Public아래에 있던 Javascript, Stylesheets, Images가
/app/assets/ 로 이동되었다.
그러므로 웹엔진(Nginx등)에서 Js, Css, Image를 Rails한테 안넘기고 직접 처리하도록 세팅이 되어 있었다면, 관련 부분은 수정이 있어야 한다
Sprockets
application.css, application.js에 보면
//= require jquery
처럼 주석처리된 require들이 있는데, 이건 주석이 아니라 sprockets의 require(include)하는 문법이므로 해당 구문을 삭제하면 include가 안된다.
Migration
migration file의 change 메소드가 추가되었다.
과거에는 up, down으로 메소드가 분리되어 있었지만, change로 통합되었다.
하지만 종종 제대로 동작하지 않을때도 있는데 그럴땐 up, down을 만들어서 사용하면 된다.
그리고 :belongs_to가 추가되었는데, 과거 relationship을 같게 될 경우 직접 index key(article_id:integer)를 만들어 줬었다.
3.1 에서는 belongs_to를 이용하면 되는데.
rails g scaffold comment article:belongs_to body:text
이렇게 써주면되며, belongs_to로 만들면 add_index도 시켜준다.
Console
콘솔에서 DB Query가 노출이 되었는데.. 상황에 따라선 이게 과잉친절이 될 수 도 있을 듯 하다.
Active Record
:has_many에서 :through를 다중깊이까지 사용할 수 있게 되었다.
그리고 :through에서 :dependent 도 지원을 한다.
:as 가 추가되었다.
default_scope가 block으로 처리할 수 잇게 되었으며 lambda, method를 사용할 수 있다.
Windows에서 개발을 할때는 무조건 Edit+만 사용했었다. (PHP뿐만 아니라 RoR할때 조차도!)
그 이유는
10년 넘게 사용해왔다는 점.
정식 라이센스를 보유하고 있다는 점.
베타 테스터라는 이유. (개발자와 100통이 넘는 메일을 주고 받았다.)
도 있었지만,
10년 가까이 사용해오다보니 왠만한 단축키는 거의 다 외우고 있었고
직접 단축키를 할당하는 등의 커스터마이징도 많이 되어 있었고
무엇보다 막강한 편집기능 때문이었다.
막강한 편집기능의 간략한 예를들면..
주석 추가/제거
현재 케럿에서 앞/뒤로 줄 삭제
현재 줄 복사/삭제
현재 줄을 위/아래로 이동
현재 단어 삭제
캐럿기준 앞뒤 문자 바꾸기
이것 정말 쏠쏠한 기능이다. 고속으로 타이핑 하다보면 철자의 앞뒤를 바꾸는 경우가 있는데 이 기능을 실행하면 앞뒤 문자를 바꿔준다. 예를들어 form인데 from으로 쳤다고 하자. o와 r 사이에 캐럿을 놓고 Ctr+T(단축키는 정확히 기억이..) 누르면 form으로 짠!
등등등 Edit+ 편집메뉴에 있는 모든 기능을 능수능란하게 사용하다 보니 RoR을 할때도 Textmate보다 Edit+로 하는게 비교도 안되게 빨랐다. (개발툴을 능숙하게 사용하는것도 개발자의 능력임을 잊지말자!)
그러다 몇년전 OSX로 넘어오면서 어쩔 수 없이 Textmate로 넘어왔는데, 이건 뭐 도저히 작업속도가 안나오는 것이다.
뭐 Textmate도 그럭저럭..
사람들이 Textmate에 훅~가는 멋진 기능중 하나가 바로 "코드 자동완성"인데.. 사실 이거 Edit+에도 있다.
사실 Textmate가 좀 더 미려하고, Smart한것은 인정! 하지만 개발속도에 영향을 줄 정도는 아니다.
어쩌다 보디 Edit+ 찬양글이 되어가고 있는데, 10년을 쓴 Edit+인데 Textmate가 성에 안차는걸 어떻하랴..
돌아와서, Textmate의 막강한 기능이 바로 커스터마이징이다. 내가 필요한 기능이 있으면 만들어서 추가해버리면 된다. 물런 Edit+도 가능하지만 한계가 명확하다.
Textmate가 제공하는 기본 편집기능도 Edit+만큼은 아니지만 나름 괜찮은 기능들을 제공한다.
다만 Text Bundle에 숨겨져 있다는게 문제.
그러므로 Textmate로 개발을 해야 하는 개발자라면 시간을 투자해서 Text Bundle과 자기가 사용하는 Language의 Bundle을 처음부터 끝까지 여러번 살펴보는것을 권장한다.
(다시한번 말하지만, 개발툴을 능숙하게 사용하는것도 개발자의 능력임을 잊지말자!)
Bundle의 단축키를 수정할 수 있으므로 자주 쓸법한 녀석은 단축키를 지정해 놓는것이 편하다.
이런것중 유용한것 하나가 "줄 끝 공백 제거"같은 기능이 있는데.. 단축키가 할당되어 있지 않다.
필자의 경우 ⌃. 으로 단축키를 할당해서 쓰고 있다.
단축키가 이미 꽉 차 있거나, 단축키가 너무 많거나 혹은 휴먼 메모리가 딸려서 외우지 못할경우 Bundle Item ⌃⌘T (Bundles → Select Bundle Item)을 찾아서 실행하면 된다.
Textmate 편집 단축키
필자가 자주 애용하는 편집 기능은
⌥⌘.(마침표): HTML 안닫힌 태그 있으면, 닫힌 태그 입력
⌃⇧,(쉼표): HTML 태그 생성
⌃⇧.(마침표): Language의 시작, 출력, 주석 등등 (Bundle에 따라 틀림)
⌘/: 주석 추가,제거
⌃W: 단어 선택
⌃⇧K: 줄 삭제
⌃⇧D: 줄 복사
⌃⌘↑↓: 줄 이동
⌘F: 검색
⌘G: 다음 검색
⇧⌘G: 이전 검색
⌃⌘F: 모두 변환
⌥⌘F: 변환하고 찾기
Bundle에 있는 기능도 있고, Edit 메뉴등에 있는 기능도 있다.
막상 써보니 그리 많지는 않은데 빼먹은것들이 꽤 있을듯한다. 누락된것은 생각이 나거나 새로 발견하는 것들은 계속 추가할 예정이다.
Database Authenticatable: encrypts and stores a password in the database to validate the authenticity of anuser while signing in. The authentication can be done both through POST requests or HTTP Basic Authentication.
Token Authenticatable: signs in a user based on an authentication token (also known as "single access token"). The token can be given both through query string or HTTP Basic Authentication.
마지막으로 login form(in views)에 email이 아닌 name으로 id입력을 받도록 수정해주면 된다.
5.5 controller customized (after signup) 얼마전 찾아보니, 1.2.rc에 이 기능이 추가되었다고 한다. https://github.com/plataformatec/devise/wiki/How-To:-Redirect-after-registration-(sign-up) 아래 쓴 내용은 이제 필요 없을듯.
더보기
회원가입 후 lading page 보여줄려고 관련된 delegate를 찾았는데.. 없다.
로그인 후, 로그아웃 후, 회원 정보 수정 후 는 있는데.. 회원 가입 후 만 없다.
해결하자니 귀찮고, 그냥 restful-authentication으로 갈까 고민하다가 잠깐의 삽질끝에 해결
controller에 Devise::RegistrationsController를 상속받는 RegistrationsController.rb 만들고 입맛에 맛게 수정하면 된다.
RegistrationsController.rb
class RegistrationsController < Devise::RegistrationsController
def create
build_resource
if resource.save
# set_flash_message :notice, :signed_up
render :text => "i just want landing page. :("
# sign_in_and_redirect(resource_name, resource)
else
clean_up_passwords(resource)
render_with_scope :new
end
end
end
이렇게만 한다고서 해결되지 않는다. Routes도 함께 수정을 해줘야 한다.
Routes.rb
get 'signup' => 'registrations#new', :as => :new_user_registration
post 'signup' => 'registrations#create', :as => :user_registration
여기서 웃긴건 controller name을 user로 해버리면 mission template된다.
꼭 registrations으로 해야 한다.
(controller name is must "Registrations")
- 알아낸게 아까워서 github wiki에다가 요 내용 추가할 계획. ㅎㅎ
6. Usage
6.1 restful-authentication에서 login_reqired와 같은 역활을 하는 authenticate_user!
2011/10/20 19:41TRACKBACK FROM 월풍도원(月風道院) - Delight on the Simple Life
windows 7 x64환경의 ruby 1.9.2에 mysql2 gem 설치하는 방법입니다.windows 7환경의 ruby 1.9.2에 mysql2 gem 설치하기gem을 설치하는 방법은 간단합니다.gem install mysql2하지만 안타깝게도 저의 64비트 윈도우 환..
2011/10/30 18:39TRACKBACK FROM 월풍도원(月風道院) - Delight on the Simple Life
맥에서 rvm(Ruby Version Manager)를 이용한 ruby on rails 개발 환경 구축 방법입니다.맥 OS X에 rvm을 이용해 ruby on rails 개발 환경 구축하기맥 OS X에서 루비 설치하기우선 터미널에서 아래의 커멘드를 이용해 RVM(Ruby Version Manager)을 설치합니다.$ bash < <(curl -s...
코드 설명을 세세하게 하면 싫어하실것 같아 간략하게 코드 설명을 하겠습니다.
Subscript의 writer_id를 이용하는 새로운 관계(belongs_to)를 만듭니다.
그리고 그 만든 관계명을 User에서 writer_id로 User를 불러와야 하는 곳(:subscriptions)의 :source로 써준 것이죠.
좀 찜찜하지만 이런식으로도 구현할 수 있습니다.
class User < ActiveRecord::Base
has_many :subscripts, :dependent => :destroy def subscriptions ids = self.subscripts.collect { |s| s.writer_id } User.find(ids) end
end
확장성의 제약이 있겠지만, 사용하는것에는 큰 문제점이 없을듯 하네요
하지만.. 그래도 역시 찜찜하죠? ㅎㅎ
여담>
지금 딱 새벽 6시 20분이네요. 오랜만에 와이프 아침밥이나 해주고 자야겠네요 ㅎㅎ (라고 말하고 기절하기)
댓글을 달아 주세요