본문 바로가기

소프트웨어-이야기

[Rspec]:all VS :each 차이 before(:all) VS before(:each) before(:all)을 하면 모든 알스펙이 돌기 전에 한번만 블럭을 실행하는 거고, before(:each)는 각각 알스펙이 돌 때 한번씩 여러번 실행되는 걸 의미한다.아래와 같은 케이스일 때 before(:all)을 사용하면 좋았다.카우치베이스 테스트코드를 작성할 때 캐시에 값이 남아있어서 테스트코드가 마구 깨지는 케이스가 있었다. 그래서 각 테스트코드가 돌기전에 캐시들을 flush 해주는 함수를 넣어서, 캐시들을 다 날려버려줬었다. 그런데 flush는 응답속도가 느려서 테스트코드를 돌리는 데에 시간이 많이 걸렸다. 그래서 eache(:all) 블럭 안에 캐시를 flush하는 기능을 넣어서 테스트 코드를 돌릴 때 한번만 캐시를 날리도록 고쳤더니 조..
[카우치베이스]Insert와 Select의 시간차 금일 과제를 진행하면서 카우치베이스에서 Insert를 하고난 직후에 Select를 하면 Insert했던 값이 반영이 안되는 이슈가 있었다. 왜 그럴까? 이유를 확인한다면 이걸 수정하려면 어떻게 해야할까? 궁금했다. 왜 그럴까?1. insert의 메모리 객체 반영론카우치베이스의 Insert 메서드(add)는 데이터가 디스크에 완전히 반영되기 전에 메모리 객체에 반영되고 나면 성공 메시지를 되돌려 준다. 입력된 데이터는 디스크에 저장되고, 이 데이터가 다시 복제 설정된 개수만큼 다른 노드로 복사되게 된다. >즉, 디스크에 값이 저장되기 전에 true를 리턴해줘서, select를 할 때 직전에 insert 한 값이 바로 반영이 안되었던 거다. (그렇다면 select는 디스크에 직접 접근해서 계산해온다는 거겠지..
[Git] 신입 소프트웨어 엔지니어에게 유용한 Git 명령어 원래는 git을 사용할 때는 소스트리를 사용해서, Git 명령어를 사용하지 않았었다. 그러나 최근에 git에 훅을 추가하면서, 소스트리 사용이 불편해진 케이스가 있었다.Push 전에 도는 Rspec의 실행상태를 보고 싶다거나 할 때는 소스트리보다는 터미널에 Push 명령어를 쓰는게 더 편했다.이 때 사용했던 명령문들을 아래에 정리해보고자 한다. git 상태조회하기git statusgit stage 환경 등을 확인할 수 있다. 나는 소스트리로 원하는 소스코드 Hunk, line을 스테이지로 옮긴 후, 이 변경 사항을 터미널에서 커밋하고는 했었다. 그래서 터미널에서 처음 정상적으로 스테이지에 올라왔는지를 확인하기 위해 저 명령어를 사용하였었다. commit 하기git commit -m 'ABC-123 커밋하..
[리눅스/유닉스] 신입 소프트웨어 엔지니어에게 유용한 명령어 나에게 에버노트는 개발 비법 같은 존재이다 ㅎㅅㅎ 내 에버노트가 사라진다면, 나 또한 사라질 것이다 ㅎㅅㅎ ...오늘은 내 에버노트에서 꾸준히 찾아보는 한 게시물을 블로그로 옮겨볼까 한다. 오늘의 주제는 리눅스 / 유닉스 환경에서 유용한 명령어 정리이다.나같은 리눅스 / 유닉스 환경을 1도 몰랐던... 신입 or 왕초보에게는 유용한 명령어이다 ㅎㅅㅎ 데이터 처리에 유용한 명령어 1. CSV 파일 길이 보기 wc -l 파일명.csv일을 하다보면 데이터를 CSV 파일에 저장해서 사용하고는 한다. 특히, 운영성 업무에서는 데이터를 전달할 때 CSV 파일을 사용하고는 하는 데, 이때 내가 전달하는 데이터의 크기가 몇인지, 길이가 얼마나 되는지 궁금할 때가 있다.이때 'wc -l 파일명' 명령어를 사용하면 손쉽게..
[루비스타일가이드]RUBY String의 to_s와 += 회사에서 최근 품질관리를 위하여 루보콥을 사용하고 있다.어떻게 사용하고 있냐 하면은, git을 커밋할 때 마다 루보콥이 돌고 remote 브랜치에 push를 할 때면 RSPEC이 돈다.그래서 commit 할 때, Rubocop과 Rspec이 도는 것을 이번 주에 처음 해보았다.RSPEC이 REMOTE push 때마다 매번 도는건 여전히 귀찮지만 루보콥이 도는건 꽤 만족한다. 루보콥에서 걸린 것들을 고쳐나가면서, 루비 스타일 가이드를 읽게되니 기존의 소스코드가 아닌 다른 방법으로 루비를 배워가는 기분이여서 좋다 ㅎㅁㅎ 그러면서 알게된 String Class와 관련된 루비 스타일 가이드를 정리해보고자 한다. 1. to_s를 쓰지 말라! [link]"#{object}" 이런식으로 "#{ }" String 형태..
[SPARK]SQLContext / 데이터 프레임에 SQL 날리기 ! SQLContextSparkContext는 Spark SQL을 사용할 때, 시작 지점이라고 볼 수 있다. Spark SQL을 사용할 땐 SparkContext 클래스이거나, 이와 관련된 자식 클래스의 하나일 것이다. 음.. 헷갈린다...암튼... json / csv / parquet 등등의 파일들로 변환된 로그성 데이터들에 SQL문을 날려서 분석하고 싶을 때면 아래의 방식을 사용한다. // 파케이 파일을 읽어온다! 그런데 SQL Context로 읽어온 데이터들은 다 데이터 프레임이다 ! val parquetFile = sqlContext.read.parquet("people.parquet") //파케이 파일을 SQL statement를 날릴 수 있게, 테이블로 등록해준다! parquetFile.regis..
[스파크]DataFrame DataFrame데이터 프레임이란 관계형 데이터베이스의 테이블과 R과 파이썬의 데이터 프레임과 같은 개념이다. (데이터 프레임은 2차원의 배열 구조로 구성되어있다.) DataFrame 특징Spark SQL 옵티마이저로 데이터를 추출할 수 있고, optimization(최적화)를 할 수 있다.자바, 스칼라, R API 함수로 조작할 수 있다. 스파크에서 DataFrame 만들기스파크에서는 구조화된 데이터 파일, HIVE의 테이블, 외부 데이터베이스, RDD의 배열로 데이터프레임을 만들 수 있다. 그리고 Spark SQL을 사용할 때, SQL으로 반환되는 값의 유형은 데이터프레임이다.아래는 공식홈페이지에서 가져온 데이터프레임 만들기 스칼라 예시이다.val sc: SparkContext // An existi..
[Mac]요세미티에 스파크 설치하기 1. JAVA 설치하기오라클 JDK 다운로드 페이지에서 Oracle Java SE Development Kit 7 혹은 8을 설치한다. -> JAVA jdk 8 설치 링크 >참고 : MAC에 JDK 설치하기 2. JAVA HOME 설정하기터미널에 JAVA HOME을 설정하는 아래의 명령어를 입력한다.export JAVA_HOME=$(/usr/libexec/java_home) 그리고 터미널에 아래 명령문을 입력하여 정상적으로 설정되었는지 확인한다.echo $JAVA_HOME요렇게! 3. Homebrew 설치하기터미널에 아래의 명령어를 쳐서 Homebrew를 설치한다. ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/maste..