본문 바로가기

소프트웨어-이야기

[AWS]Beanstalk이란 나는 1년정도 BeanStalk을 사용하고 있다. 처음에는 BeanStalk가 어떤 역할을 하는 서비스인지 궁금해서 찾아봤었는데, 이해가 잘 되지 않았었다. 그래서 내가 경험한 빈스톡에 대해서 정리해보고자 한다. BeanStalk이란? 빈스톡은 Docker 컨테이너를 기반으로 애플리케이션을 쉽게 배포하고, 운영하고, 관리하는걸 도와주는 AWS 서비스다. 별도의 서비스 사용료는 없고, 사용한 AWS 리소스 만큼 비용이 과금된다고 한다. 특징 초기 세팅기본적으로 필요한 환경을 몇번의 클릭으로 서버 셋팅을 할 수 있다.- 예를 들면 원하는 루비 버전과 패신저를 설정하면, 인스턴스에 직접 들어가서 설치하지 않아도 빈스톡이 알아서 환경을 구성해준다. - 그런데 최신 버전의 언어를 지원하지 않는 경우도 있다. 이런..
[Docker]docker에서 bundle 데이터가 캐싱되는 상황 개발 / 테스트 환경을 위한 서버에 도커로 레일즈를 올릴 때, 수정 사항이 생길 때마다 배포를 하게 된다. 이 때, bundle install이 매번 실행되면 gem들이 설치될 때까지 매번 기다려야 한다. 그래서 레일즈 개발하는 분들이 아래의 페이지처럼 bundle install을 통해 생성된 gem들을 이미지로 묶어버리는 방법을 찾아 정리해두었다. http://ilikestuffblog.com/2014/01/06/how-to-skip-bundle-install-when-deploying-a-rails-app-to-docker/ 이렇게 Dockerfile을 수정해줘야 한다 저기.. Gemfile을 ADD해주고... bundle install을 해주는 부분을 추가해줘야한다. 한번 Dockerfile을 돌렸..
[Spark]User Define Function spark에서 sql을 날릴 때, 사용자가 커스텀하게 만든 함수를 사용할 수 있게 하는 방법이 있다. SPARK의 UDFs ( User-Defined Functions ) 개념을 사용하면 된다. UDF는 우리가 피요한 새로운 컬럼 기반의 함수를 만들어준다. User Define Functions는 데이터셋을 가공해주는 Spark SQL DSL의 함수들을 확장시켜준다. 아래처럼 쓰면 된다고 한다. udf 함수에 내가 정의한 함수의 파라미터를 넘겨주면 된다. val dataset = Seq((0, "hello"), (1, "world")).toDF("id", "text") // Define a regular Scala function val upper: String => String = _.toUpperCa..
[Spark]DataFrame을 S3에 CSV으로 저장하기 S3에 Dataframe을 CSV으로 저장하는 방법 val peopleDfFile = spark.read.json("people.json") peopleDfFile.createOrReplaceTempView("people") val teenagersDf = spark.sql("SELECT name, age, address.city FROM people WHERE age >= 13 AND age
카드형 Swipe 라이브러리 리서치 피파 게임 같은 이미지가 웹페이지에서 슥슥 움직이는 그런 라이브러리를 찾고 있다. 1. Swiper 데모 사이트 : http://idangero.us/swiper/demos/#.WKvi-BKLT_Q깃허브 : https://github.com/thebird/Swipe 뭔가.. 삐까뻔쩍해보이지 않는다. 2. Hammer JS 사이트 : http://hammerjs.github.io/ 유용해보이지만, 모바일에 최적화된 인터랙티브 라이브러리여서 PC에서는 부적합하다 3. js-swipe-cards 데모 사이트 : http://apeatling.com/demos/js-swipe-cards/깃허브 : https://github.com/apeatling/javascript-swipe-cards 음.. 역시 모바일에서..
[Spark] 여러개의 로그 파일 한번에 읽어오기 제플린 노트북에서 데이터 소스를 가져올 때, DataFrameReader Class를 주로 사용한다. 아래의 코드 처럼, DataFrameReader의 함수들을 사용해서 구조화되어있는 파일을 읽어들이면 DataFrame을 리턴된다. spark.read.json("s3n://jimin-bucket/a/*") spark.read.parquet("s3n://jimin-bucket/a/*") 그런데 파일을 하나하나 가져오기 보다는 여러 파일리스트를 한번에 가져오고 싶을 때가 있다.이때는 MutableList에 파일 목록들을 담아서, 이를 매개변수로 보내주면 된다. -----------------------------------------------------------------------------------..
[Spark] S3에 파일이 존재하는지 확인하기 Zeppelin 노트북에서 데이터소스를 불러올 때, AWS S3에 올려둔 파일들을 가져다가 사용한다.그런데 만약 없는 파일을 읽어들이려고 하는 경우, 에러가 발생한다.만약 일자별로 쌓인 로그 파일을 한번에 가져와서 읽을 필요성이 있다고 생각해보자. val fileList = MutableList("s3n://jimin-bucket/folder1/20170202/*", "s3n://jimin-bucket/folder1/20170203/*", "s3n://jimin-bucket/folder1/20160204/*") spark.read.json(fileList:_*) 만약 20170203 폴더에 file1이 없는 경우, 파일을 읽어들일 수 없어 에러가 난다.이런 경우, fileList 변수에는 실제로 존재하는..
레일즈 엔진 (Rails Engine) 레일즈 애플리케이션 프로젝트가 여러개 있을 때, 공통으로 사용하는 함수나 상수가 있으면 ruby gem을 사용하면 된다. 그런데 공통으로 사용하는 view가 여러개 있으면 어떻게 할까?공통으로 사용하는 함수가 Model이라면?공통으로 사용하는 함수가 레일즈를 기반으로한다면? 이럴 때는 Gem으로 공통 라이브러리를 관리하기에는 한계가 있다. 이런 상황에 필요한 레일즈 기능은 Engine이다. 처음에 레일즈 Engine을 알게된 배경은, 리멤버의 블로그를 통해서였다.리멤버 개발 블로그 - Rails Engine을 이용한 Zeus 프로젝트 레일즈 엔진은 레일즈를 모듈처럼 쪼개놓은 것 같은 느낌이다.내가 만들고 있는 레일즈 애플리케이션에 엔진을 끼워넣는 느낌으로 사용하는거다.- 공통적으로 사용하는 컨트롤러를 만..