일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- uploader
- TIP
- transaction
- max중첩
- test
- carrierwave
- Linux
- Ruby on Rails
- programmingTip
- RoR
- Scala
- rubyonrails
- 삽질기
- mysql
- fileUploader
- Rails
- fixture
- 점심영어스터디
- activerecord
- apache spark
- form
- Migration
- java
- Hadoop
- Ruby
- 전화영어
- minitest
- Shell
- programming
- share
- Today
- Total
목록개발이야기 (27)
아침바라기의 이야기
최근에 인상깊게 읽은 소프트웨어 장인 내용에서 발췌해서 적어본다. 이책을 처음 읽으면서 메모로 남겨둔 내용이다. 회사를 고를때 꼭 해봐야 할 질문이란다. 1. 나의 커리어로 부터 나는 무엇을 원하는가? 2. 이를 성취하기 위한 다음 단계는 무엇인가? 3. 이 일은 나의 커리어 방향과 맞는가? 4. 내가 이회사에 줄 가치는 얼마나 되는가? 5. 이 투자에 대한 이익은 얼마인가? 6. 이 투자는 얼마나 지속되야 하는가? 7. 내가 되려는 프로페셔널에 이르는데 이 일은 어떻게 도움이 되는가? 8. 이 일에서 나는 자율성,통달, 목적의식을 가질 수 있나? 9. 고용주와 생산적인 동반자 관계를 맺을 수 있나? 양측 모두 가치를 얻고 행복할 수 있나? 소프트웨어 장인 중
루비에는 여러가지 배열 생성 방법이 있다. 먼저 기본적인 배열 생성법이다. 보통 가장 많이 사용하는 방법이다. 아래처럼 배열을 선언해준다. arr = ["a", "b", "c", "d"] # 빈 배열 생성 arr2 = [] Array 클래스의 new를 이용해서 배열을 생성하는 방법도 있다. arr_by_new = Array.new # [] nils_arr = Array.new(2) # [nil, nil] # true 값으로 초기화한다. true_arrs = Array.new(2, true) # [true, true] 다차원 배열을 만들고 싶다면? block을 이용해서 배열을 생성하면 된다. 그리고 각 배열을 Hash로 초기화 싶다면? 마찬가지다. arrs = Array.new(2) { Array.new(..
Ruby 2.2.0 기준으로 작성해보겠다. 루비를 처음 접할땐, 같은지 비교하는 메소드와 연산이 도합 4개나 되서 햇갈렸었다. (주로 다뤘던 자바는 두개로 단순한데 반해 루비는 4개씩이나 제공한다.) 각각의 용도에 대해 한번 정리를 해봤다. == (일반 비교) 일반적인 같은 값 비교 연산자. 보통 자식 클래스에서 override해서 많이 사용한다. ruby에서 값 비교할때 주로 사용하는 연산자가 바로 이것이다. 아래는 test case로 만든 예제다. 재밌는 점은 Hash의 경우 키값만 가지고 비교를 한다. def test_generic_equality str = "a" assert_true str == str assert_true str == str.clone assert_true 1 == 1.0 nu..
오늘 회사에서 하이브를 설치할 기회가 있었다. 테스트 데이터로 쓰기 위해 운영 데이터 일부를 개발 HDFS에 직접 마이그레이션을 했다. 그런데, 테이블 구조도 동일하고, 데이터도 있는데 hive콘솔에서 조회하면 0건으로 나오는 것이었다. 알고보니 하이브는 메타스토어(주로 MySQL)에 테이블의 파티션 정보(이 테이블엔 어떤 파일들에 데이터가 저장되어 있는가...하는 정보)를 저장하기 때문이었다. 즉 직접 데이터를 때려 넣었기 때문에 메타 스토어에서 파티션 정보가 없다. 그러니 하이브는 내가 밀어 넣은 데이터는 없다고 얘기하는 것이다. 이렇게 직접 파일로 데이터를 넣는 경우 파티션을 재생성 해줘야 hive에서 문제 없이 조회할 수 있었다. 아래와 같은 명령어를 사용해서 테이블의 파티션 정보 재생성해야 한다..
지난번 포스트에 이어 다시한번 carrierwave gem를 다룬다. 최근 필자는 난감한 상황에 봉착했다. 데드라인이 얼마 안남은 프로젝트에서 미를 추구하는 우리의 아름다운 분들이 웹 페이지마다 썸네일 크기를 제각각으로 만들었다. 물론 거기에 디바이스 종류(PC, 모바일기기 등등)에 따라 썸네일 사이즈가 요동치는 것은 물론이다. (이른바 썸네일 지옥이 시작된것이니...OTL) Carrierwave에서 제공하는 업로더 예제를 그대로 사용해보려고 했다. 이리저리 따져봤다. 썸네일 1개당 이미지 업로더 클래스가 1개. 그리고 기기별로 version 추가. 기기별 version 추가는 어차피 피할 수 없다. (기기별 대응은 하다보면 더러워질 수 밖에 .-_-) 그러면, 기기별로 version을 만드는건 피할 수..
오늘은 오래된 레일즈 이디엄 포스팅을 공유해보고자 한다. 이디엄은 코드레벨에서 자주 재사용하는 코딩 로직이라 할 수 있다. 이런 이디엄은 간결하면서도 (왠만하면) 가독성이 높고 효과적인 코드를 만들어준다. 두 가지 이디엄만 원문에서 뽑아서 포스팅 해본다.(항목이나 내용은 좀 바뀔 수 있음) 1) 3항 연산자 대신 try (in erb) api docs에 살펴보면, try는 파라미터로 넘기는 심볼로 된 이름의 메소드를 수행시킨다. 일반적인 메소드와는 달리 메소드가 없어도 NoSuchMethodException을 발생 시키지 않는다, 원래코드 다시 쓴 코드 참고 : http://api.rubyonrails.org/v3.0.8/classes/Object.html#method-i-try 2) object가 ni..
오늘 소개할 내용은 30가지 자바 프로그래밍 팁과 초심자를 위한 best practices이다. 최근 유명인이 페북에 언급하여 화제가 되고 있는 내용이기도 함. 대충 요약해서 보면 아래와 같다.원문에 가보면 소스도 있고 좀더 쉽게 설명되어 있으니 원문을 꼭 읽자.요약본보고 꼭 원문을 보자 제발...아래는 내가 한번 보고 적어본것이다 1. null 대신 빈 컬렉션을 리턴해라 2. String은 신중하게 사용해라- String 객체 생성 비용은 비싸다 3. 불필요한 객체는 생성마라- 자바의 메모리 사용은 비싸기 때문에 가급적 초기화할때 한번만 생성하자. 4. 배열과 ArrayList는 용도에 따라 사용하자- 배열은 개수가 고정인 대신 액세스가 빠르고 ArrayList는 개수는 동적이면서 추가 수정이 쉽다.-..
레일즈(Rails) 파일업로드 Gem 중 많이 쓰이는 것은 3가지다.1. Paperclip 2. Carrierwave 3. dragonfly 레일즈 툴박스 참고추측컨데, 업로드 사용이 간편한 Gem일수록 사용률이 높은듯하다. 그런데 안타깝게도 내가 사용하는건 2번 carrierwave라 이 내용에 대해 설명하고자 한다. 이 파일 업로더는 기능이 다양하다는 장점을 가지고 있다. 그럼 carrierwave 기본 사용법에 대해 알아보자. 우선 설치방법이다. 설치방법 설치 방법은 심플하다 1. gem을 인스톨 $ gem install carrierwave 2. Gemfile에 추가 gem 'carrierwave' 사용방법 그럼 이제 어떻게 사용하지?예를 들어 설명해보겠다.모 웹사이트 구축중에 사용자 프로필에 프..
요즈음 회사에서 레일즈로 프로젝트를 진행하고 있다. 최근의 경험을 공유해보고자 글을 쓴다.erb 파일에서의 레일즈의 폼은 아래와 같이 구성한다.(스케폴드 해보면 바로 나온다.ㅎㅎ) 이러면 레일즈가 아래처럼 HTML로 렌더링 해준다.이 폼을 submit 해보자.그러면 submit 타켓 controller의 @model.param1에 값이 들어간다. 보통 레일즈 쓰다보면 이쯤에서 구현이 끝난다. 그럼 모든 문제해결?! 그러면 내가 이글을 안쓰지.을 할 수는 없다.업무를 진행하다보면 기획자의 아름다운 요구사항으로 인해, 아래와 같은 얘기를 듣는다 "요 페이지에서 버튼누르면 입력 컬럼이 추가되도록 만들어주세요!""...." 요 말인 즉슨 AJAX 통신을 하든가, 아니면 form 하나로 객체 여러 개를 컨트롤러로..