본문 바로가기

소프트웨어-이야기

레일즈 엔진 (Rails Engine) 레일즈 애플리케이션 프로젝트가 여러개 있을 때, 공통으로 사용하는 함수나 상수가 있으면 ruby gem을 사용하면 된다. 그런데 공통으로 사용하는 view가 여러개 있으면 어떻게 할까?공통으로 사용하는 함수가 Model이라면?공통으로 사용하는 함수가 레일즈를 기반으로한다면? 이럴 때는 Gem으로 공통 라이브러리를 관리하기에는 한계가 있다. 이런 상황에 필요한 레일즈 기능은 Engine이다. 처음에 레일즈 Engine을 알게된 배경은, 리멤버의 블로그를 통해서였다.리멤버 개발 블로그 - Rails Engine을 이용한 Zeus 프로젝트 레일즈 엔진은 레일즈를 모듈처럼 쪼개놓은 것 같은 느낌이다.내가 만들고 있는 레일즈 애플리케이션에 엔진을 끼워넣는 느낌으로 사용하는거다.- 공통적으로 사용하는 컨트롤러를 만..
레일즈4 + Mass Assignment + Strong Parameter MassAssignmentMassAssignment가 발생할 수 있는 상황 class UserController
리팩토링:루비에디션 오늘부터 읽고있는중...!! 루비 기반 리팩토링 책은 다 번역이 엉망이라서 쳐다도 안봤는데, 읽어보니 번역이 매끄러워서 술술 익힌다 ㅎㅅㅎ 회사에서 일하면서 배운, 리팩토링에 대한 사고방식이랑 같은 내용이 들어가있어서 더 재미있게 잘읽힌다 ㅎㅎ 책을 읽으면서 궁금했던 것들 리스트 * each루프 대신, inject 같은 메서드를 사용하는 것의 장점은 ? ( p. 27, Replace Loop with Collection ) - 간단하다는 점의 구체적인 이유는?
[Spark]DataFrame을 Parquet으로 저장하기 http://spark.apache.org/docs/latest/sql-programming-guide.html 파케이파일로 데이터프레임이 저장되면, 스키마 정보를 유지한 채로 데이터를 저장할 수 있다.위의 코드 예시를 보면, 데이터프레임을 파케이로 저장한 후 => 해당 파케이파일을 읽어들이면 스키마를 유지하고 있어 TempVIew를 생성할 수 있다.
신입 프로그래머에게 유용한 크롬 확장 프로그램 ㅎㅂㅎ ... 1년 전, 소프트웨어 개발 직군에서 일을 시작하기 전에 티아카데미에서 서버 전문가 과정을 들으며 공부를 했었다. 그 때 강사님에게 추천받은 확장 프로그램들을 지금도 아주아주 유용하게 잘 사용하고 있다. 내게 티아카데미에서 배운 것들 중에서 좋았던 것들 중 하나는 이런 팁들을 알게 된 것! 실제로 일 할 때도 다들 이 확장 프로그램을 사용하고 계시기도 한다! 추천하는 프로그램은 툴팁 딕셔너리와 포스트맨이다. 1. Tooltip Dictionary (English-Korean) 설치 링크 : https://chrome.google.com/webstore/search/Tooltip%20Dictionary%20(English-Korean)?hl=ko 마우스 오버 시, 영어 단어를 한글 단어로 보여..
[couchbase]카우치 베이스에서 테이블이란? 카우치베이스와 RDB의 논리적 개념 차이에 대해서 헷갈려서, 찾아봤다. 카우치베이스의 bucket은 RDB의 database의 개념과 유사하다고 한다. 그러면 카우치베이스의 table의 개념은 무엇일까 궁금했다. 카우치베이스에서는 별도의 TABLE이 없다. 때문에 document에 type이라는 속성을 추가해서, 유사한 데이터를 묶어서 관리해주어야 한다. 참고 : http://blog.couchbase.com/10-things-developers-should-know-about-couchbase 위는 카우치베이스 사용할 때 알아야하는 10가지에 대한 포스팅의 캡쳐 이미지이다. 하나의 버킷은 RDBMS에서 database로 볼 수 있다. 때문에 다른 속성을 가진 도큐먼트여도 같은 버킷에 저장되어야 한다. ..
[Ruby]nil? VS blank? VS empty? VS any? VS present? .nil? .blank? .empty? .any? and .present?.nil?.blank?.empty?.any?.present?nilTRUETRUExxfalse[]falseTRUETRUEfalsefalse{}falseTRUETRUEfalsefalse""falseTRUETRUExfalse" "falseTRUEfalsexfalsefalsefalseTRUExxfalse99falsefalsexxTRUE0falsefalsexxTRUEx: NoMethodError가 나는 케이스이다.참고 링크
[Rspec]:all VS :each 차이 before(:all) VS before(:each) before(:all)을 하면 모든 알스펙이 돌기 전에 한번만 블럭을 실행하는 거고, before(:each)는 각각 알스펙이 돌 때 한번씩 여러번 실행되는 걸 의미한다.아래와 같은 케이스일 때 before(:all)을 사용하면 좋았다.카우치베이스 테스트코드를 작성할 때 캐시에 값이 남아있어서 테스트코드가 마구 깨지는 케이스가 있었다. 그래서 각 테스트코드가 돌기전에 캐시들을 flush 해주는 함수를 넣어서, 캐시들을 다 날려버려줬었다. 그런데 flush는 응답속도가 느려서 테스트코드를 돌리는 데에 시간이 많이 걸렸다. 그래서 eache(:all) 블럭 안에 캐시를 flush하는 기능을 넣어서 테스트 코드를 돌릴 때 한번만 캐시를 날리도록 고쳤더니 조..