반응형

요즘 Superset을 통해 데이터 시각화하는 작업을 진행중인데요. 


해당 오픈소스 클라이언트 쪽을 혹시나 커스터마이징 해야할 일이 있을까 싶어 일단 로컬환경에 셋팅하며 세팅한 내용 포스팅 남겨봅니다.



먼저 SuperSet이란?

Apache프로젝트에 속한 오픈소스 데이터 시각화 툴이고 굉장히 깔끔한 UI와 다양한 차트들을 제공합니다.

깃 레파지토리(Git repo)



Superset 설치

git clone https://github.com/test/test.superset.git
cd test.superset
# Create a virtual environemnt and activate it (recommended)
# 이 부분은 사용하는 IDE에 따라서 자동으로 해주는 경우가 있습니다.
virtualenv venv
source venv/bin/activate
# Install external dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt
# 해당 명령어 수행시 해당 문제가 발생한 경우 
fatal error: too many errors emitted, stopping now [-ferror-limit=]
    20 errors generated.
    error: command 'clang' failed with exit status 1
    ----------------------------------------
Command "/Users/nhnent/IdeaProjects/[[dighty.superset/venv/bin/python3.7]\(http://dighty.superset/venv/bin/python3.7\)](http://dighty.superset/venv/bin/python3.7](http://dighty.superset/venv/bin/python3.7)) -u -c "import setuptools, 
tokenize;__file__='/private/var/folders/72/tlj3dkwx5vx_4tvvmkt9v3nm0000gn/T/pip-install-5sa870m3/thriftpy/setup.py';f=getattr
(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" 
install --record /private/var/folders/72/tlj3dkwx5vx_4tvvmkt9v3nm0000gn/T/pip-record-0derjrrg/install-record.txt 
--single-version-externally-managed --compile --install-headers 
/Users/nhnent/IdeaProjects/[[dighty.superset/venv/bin/../include/site/python3.7/thriftpy]\(http://dighty.superset/venv/bin/../include/site/python3.7/thriftpy\)](http://dighty.superset/venv/bin/../include/site/python3.7/thriftpy](http://dighty.superset/venv/bin/../include/site/python3.7/thriftpy))" failed with error code 1 
in /private/var/folders/72/tlj3dkwx5vx_4tvvmkt9v3nm0000gn/T/pip-install-5sa870m3/thriftpy/
>> pip3 install cython thriftpy  (해당 명령어 실행 후 다시 실행)
pip install mysqlclient
# 위 설치 과정 중 mysqlclient에 문제가 발생한 경우
# https://www.lfd.uci.edu/~gohlke/pythonlibs/ 로 접속하여,  
# 본인의 윈도우 시스템과 python 버전에 맞는 .whl파일 다운로드
# 나의 경우(MAC) > macholib‑1.11‑py2.py3‑none‑any.whl  다운 받음
# pip install [다운받은 whl파일 경로]
# Install Superset in editable (development) mode
pip install -e .
# Create an admin user
fabmanager create-admin --app superset


cd dighty.superset/venv/bin
# Initialize the database python superset db upgrade # Create default roles and permissions python superset init # Load some data to play with python superset load_examples
cd dighty.superset/superset

# Start the Flask dev web server from inside the `superset` dir at port 8088
# Note that your page may not have css at this point.
# See instructions below how to build the front-end assets.
# 해당 flask 명령어 수행 이후 npm 명령어 실행 시켜줘야 css가 안깨짐

flask run -p 8088 --with-threads --reload --debugger

flask 서버만 띄우면 다음처럼 css가 다깨지기때문에 flast서버 띄워논 후 npm으로 빌드해서 dev-server를 띄워준다.


npm run dev-server


짜잔~~~


또 Superset을 사용하다가 삽질한 부분이 생기게 되면 포스팅해보도록 하겠습니다.


Superset 흥해라~!!!

반응형
반응형


맥(MAC)에서 GIF를 쉽게 만들 수 있게 도와주는 앱을 소개합니다.


앱이름은 

GIPHY Capture. The GIF Maker

입니다.


사용법은 아주 간단합니다. 먼저 다운을 받고 설치한 후 실행하면 다음과 같이 창이 열립니다.


해당 창안에서 녹화되는 부분이 GIF로 생성되게 됩니다.


빨간 버튼을 눌러 녹화를 해주면 끝^^



감사합니다:)








반응형
반응형


Heap Dump를 볼 일이 생겨서 Eclipse Memory Analyzer(MAT) 설치 후 실행을 하려고 하는데 다음과 같은 에러가 발생하였다.


'An error has occurred. See the log file~~~'



그래서 해당 위치에 가서 log파일을 열어 보니 다음과 같은 에러가 발생한 상태였다...


!SESSION 2019-01-31 16:45:23.495 -----------------------------------------------

eclipse.buildId=unknown

java.version=1.8.0_151

java.vendor=Oracle Corporation

BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=ko_KR

Framework arguments:  -keyring /Users/nhnent/.eclipse_keyring

Command-line arguments:  -os macosx -ws cocoa -arch x86_64 -keyring /Users/nhnent/.eclipse_keyring


!ENTRY org.eclipse.osgi 4 0 2019-01-31 16:45:27.178

!MESSAGE Application error

!STACK 1

java.lang.IllegalStateException: The platform metadata area could not be written: /private/var/folders/72/tlj3dkwx5vx_4tvvmkt9v3nm0000gn/T/AppTranslocation/2AB9061A-0D7D-4CE6-AA94-5D14138D7687/d/mat.app/Contents/MacOS/workspace/.metadata.  By default the platform writes its content

under the current working directory when the platform is launched.  Use the -data parameter to

specify a different content area for the platform.

        at org.eclipse.core.internal.runtime.DataArea.assertLocationInitialized(DataArea.java:70)

        at org.eclipse.core.internal.runtime.DataArea.getStateLocation(DataArea.java:138)

        at org.eclipse.core.internal.preferences.InstancePreferences.getBaseLocation(InstancePreferences.java:44)

        at org.eclipse.core.internal.preferences.InstancePreferences.initializeChildren(InstancePreferences.java:209)

        at org.eclipse.core.internal.preferences.InstancePreferences.<init>(InstancePreferences.java:59)

        at org.eclipse.core.internal.preferences.InstancePreferences.internalCreate(InstancePreferences.java:220)

        at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferences.java:349)

        at org.eclipse.core.internal.preferences.EclipsePreferences.create(EclipsePreferences.java:337)

        at org.eclipse.core.internal.preferences.PreferencesService.createNode(PreferencesService.java:393)

        at org.eclipse.core.internal.preferences.RootPreferences.getChild(RootPreferences.java:60)

        at org.eclipse.core.internal.preferences.RootPreferences.getNode(RootPreferences.java:95)

        at org.eclipse.core.internal.preferences.RootPreferences.node(RootPreferences.java:84)


구글링 결과 zip압축파일을 푼 실행파일의 위치를 Applications폴더로 이동시켜주어 해결했다는 글을 발견!!!


이에 바로 Documents폴더에서 Applications폴더로 이동 후 실행하니 정상적으로 실행되었다~


혹시나 같은 문제가 발생하시는 분들은 폴더 이동시켜서 실행해보세요:)


반응형
반응형


인텔리제이에서 gradle프로젝트를 import해서 build하는데 자꾸 에러메세지 발생 및 자바코드를 프로젝트내에서 정상적으로 


소스코드로 인식하지 못하는 문제가 있었다.


일반적으로는 intellij의 gradle플러그인을 통해 기본적으로 프로젝트의 소스코드 path를 잡아주어야 하지만 소스코드도 잡지 못하고 


gradle dependency도 정상적으로 로드하지 못해 소스코드도 다 에러가 발생하는 상황.,,..


 이런식으로 소스코드를 인식하지 못한경우 주황색(일반텍스트)파일로 인식한다. 


정상적으로 인식을 했다면   이렇게 파란색으로 클래스파일로 인식을 하여야 정상.


문제의 원인은 intellij 2018.01 버전을 사용하고 있었는데 해당 버전과 gradle최신 버전 사용시 버그가 존재했던 것 같다.


intellij의 버전을 2018.3으로 업데이트 해주니 정상적으로 소스코드도 path도 잘찾아 인식하고 dependency도 잘불러오는 것을 확인했다.......


intellij 버전에 관련된 첫 삽질이라....기록 남겨본다.


정상적으로 intellij에서 gradle프로젝트로 import했다면 gradle창에서 다음과 같이 'Source Sets, Tasks, Run configurations' 디렉토리를 확인할 수 있다.


업데이트 전에는 manager.ectr이외에 그 하위 디렉토리가 보이지 않았다.....


혹시나 intellij(인텔리제이) 사용시 gradle 프로젝트가 정상적으로 import되지 않는다면 inteelij 버전에 맞는 gradle의 버전을 사용하고 있는지 


intellij의 버전이 너무 낮지 않은지 확인해보길 바란다.




반응형
반응형


MAC 재시작 했을 때


자꾸 전에 작업하다가 자동 저장 된 파일이 떠서 귀찮은 경우가 있다.


이때 불필요하게 자동저장된 데이터라면 다음 경로로 가서 삭제해주도록 한다.


PowerPower이외에도 Microsoft제품들의 자동저장된 파일의 경로이다.


Finder "/Users/< username >/Library/Containers/com.microsoft.*


해당 경로 "/Users/< username >/Library/Containers/"로 가보면 다음의 microsoft폴더들을 볼 수 있다.


Powerpoint의 경우 

"/Users/< username >/Library/Containers/com.microsoft.Powerpoint/Data/Library/Preferences/AutoRecovery"


에 가보면 지긋지긋하게 귀찮게 굴었던 자동저장된 파일들이 있는 것을 볼 수 있다. (_autorecover 파일)


시원하게 날려주자~안녕~



반응형
반응형

[ MAC ] mac에 nvm, npm, bower설치하기


웹 패키지 관리를 위해 bower를 설치해볼까 했더니 npm(Node Package Modules)으로 설치하는게 가장 간단해 보여 nvm(Node Version Manager)과 npm을 먼저 깔고 npm으로 설치해보았다.


1. nvm설치 

> curl https://raw.githubusercontent.com/creationix/nvm/v0.30.2/install.sh | bash

명령을 실행하니 "Profile not found" 가 뜨며 정상적으로 설치되지 않았다.

보아하니 경로를 지정할 profile파일이 필요한데 로컬환경에 해당 파일이 없어서 정상적으로 설치가 되지 않았다.


그래서 vi로 ~/.bash_profile을 하나 만든 후 다시 시도


> nvm --version을 해보면 정상적으로 설치되었는지 확인할 수 있다.




2. npm 설치

nvm이 설치되었다면 다음 명령으로 손쉽게 npm을 설치할 수 있다.

nvm install stable


설치가 정상적으로 되었는지 확인하려면 "npm -v"명령을 내려보자


정상적으로 설치된 것을 확인할 수 있다.


3. bower설치 

npm까지 설치가 완료되었다면 bower도 손쉽게 설치가 가능하다.


> npm install -g bower 

로 설치하면 된다.



bower는 프론트 개발에 필요한 라이브러리들을 손쉽게 관리해주는 패키지 관리도구라고 생각하면 이해하기 편하다(마치 백엔드의 maven, gradle과 같은).


아직 사용하는데 익숙하지는 않지만 손쉽게 프론트엔드 라이브러리들을 관리해주는 유용한 도구인만큼 자주사용해보도록 해야겠다.


반응형
반응형


신규 맥북(Mac)을 받아 기존에 사용하던 맥북(Mac)에서 사용하던 메모 앱의 파일들을 옮겨야 하는데 


회사규정상 icloud가 막혀있어 되게 난감한 상황이였다. 


그러다가 'exporter'라는 앱을 발견!!! 보아하니 맥북(Mac)의 메모 파일들을 모두 .txt 파일로 추출해준다.


그래서 한 번 사용해봤더니 정말 간편하다:)


https://itunes.apple.com/us/app/exporter/id1099120373?mt=12




다운 받은 후 앱을 켜서 사용해보자!



저기 가운데 별모양을 누르고 맥북의 노트들을 .txt파일로 추출해 저장할 디렉토리만 설정해주면 끄읕~!



작업이 진행되고 작업이 끝나면 추출된 파일을 볼 수 있다.



짜자안~!!!!


맥북(mac)에 메모 파일을 .txt파일로 추출할 일이 있을 때 써보자~





반응형
반응형
이전에 데이터 처리하는 어플리케이션을 개발할 때 NoSQL로 어떤걸 쓰면 좋을지 조사한 글을 포스팅해본다.
그 당시 고민했던 NoSQL 중 카산드라(Cassandra), HBASE, MongoDB 세 가지로 선정해 조사했었다.
RDBMS? NOSQL?
  • 데이터의 읽기 쓰기 등 퍼포먼스에 치중한다면 NOSQL, 트랜잭션과 같은 정합성 위주의 시스템을 사용한다면 RDBMS
  • RDBMS 컬럼 변경 용이하지 않음, NOSQL 컬럼 변경 용이
  • NOSQL의 경우 sorting, join, grouping, range query, index 매우 취약
  • RDBMS 학습 비용 x
  • NOSQL 학습 비용 소요 (운영시 어떤 장애상황이 생길지 예측이 어려움)
  • NOSQL 가장 큰 장점 (Scale-Out, RDBMS보다 상대적으로 빠른 쓰기/읽기)

NOSQL 분류
[ 키 밸류형 ] redis, memcached, Oracle Coherence
[ 컬럼형 ] Cassandra, HBASE, Cloud Datastore
[ 문서형 ] MongoDB, Couchbase, MarkLogic, PostgreSQL, MySQL, DynamoDB MS-DocumentDB
[ 그래프형 ] Neo4j

DataStore설 명장 점단 점
Cassandra

-Facebook에 의해 2008년 아파치 오픈소스로 공개된 분산 데이터 베이스 (자바 언어 기반) 
-컬럼 단위로 관리되어 컬럼형으로 분류 
-대용량의 데이터 트랜잭션에 대해 고성능 처리가 가능(실제 트위터 MYSQL -> Cassandra로 전환)

-대량으로 쓰기가 발생하는 서비스에 좋음 
-확장성이 뛰어남  
-Apache Foundation에서 개발중이며커뮤니티 활발 
- Scale-Out

-최소 3대 이상 구성(클러스터 환경) 
-복잡한 조건 검색 불가 
-데이터 갱신 및 입력시 Atomic한 처리가 힘듬

HBase

-대량 데이터를 우수한 성능으로 데이터 일관성을 보장하면서 다뤄야 할 때 주로 사용 
-대량 데이터 분석 및 처리를 위해 사용되는 Hadoop의 산하 프로젝트로 시작된 데이터베이스 (HDFS 및 MapReduce등과 함께 사용하기에 최적화) 
-수십 테러바이트가 넘는 빅데이터에 적합

-하둡 기반에서 동작하고 다양한 하둡 의 도구들과 상호 운영성이 좋음
-데이터 일관성 보장 우수(상대적)

-5대 미만에서는 사용할 수 없다(대규모 전용) 
-성능이 좋진 않다 (상대적)

MongoDB

-MongoDB는 10gen 사에서 개발된 높은 성능과 확장성을 가지고 있는 데이터베이스
NoSQL 데이터베이스에서는 문서형 데이터베이스로 분류(C언어 기반)
-데이터를 입력할때 데이터 구조 정보를 포함하여 BSON(JSON을 바이너리화한것)형식으로 저장하고, key value로 사용
-NON-SCHEMA
-비정형 데이터, 파일 데이터등의 스키마프리(Scheme free)모델에서 적합  - SQL 과 비슷한 방식의 쿼리 사용

-스키마 없이 사용 가능 
-SQL 과 비슷한 방식의 쿼리 사용 
-몽고는 쓰기할때 메모리에 먼저 Write 후에
  1분 단위로 Flushing하는 Write back 방식을     사용한기 때문에 write성능이 좋음
-Read시에는 파일의 Index를 메모리에 로딩해   놓고 찾는다(memory mapped file) - 빠름
-다양한 기능 제공

-JOIN이나 트랜잭션 처리가 불가능 
-디스크에 쓰기가 비동기식으로 이루어진다. 때문에 경우에 따라 데이터가 유실될 가능성도 있다.

[ Cassandra & HBase ]

  • 카산드라 클러스터 설정 및 구성이 HBase 클러스터 구성보다 훨씬 쉽다.
  • 카산드라가 일반적으로 write시 5배 이상의 더 나은 성능, read시 4배 이상의 성능을 보인다.

[ Cassandra & MongoDB ]

  • Cassandra 노드가 추가될수록 MonogoDB  보다 훨씬 나은 선형적인 성능 향상을 보인다.
    - 다중 Index가 필요한 구조라면 MongoDB를 선택하고, 데이터 항목 변경이 많고 unique access가 많은 경우라면 Cassandra가 적합
  • http://db-engines.com/en/system/Cassandra;MongoDB

성능비교

https://academy.datastax.com/planet-cassandra/nosql-performance-benchmarks
https://www.datastax.com/nosql-databases/benchmarks-cassandra-vs-mongodb-vs-hbase



반응형
반응형


OSX Server의 경우 curl은 별도 설치가 필요 없지만 wget 은 설치가 필요하다.


물론 설치를 하면 되지만 귀찮다면 curl을 사용하도록 하자.


MAC에서 wget이 안먹힐 떄


curl -O -L '다운받을경로' 를 사용하여 다운받을 수 있다


여기서 끝내면 아쉬우니 간단히 둘의 공통점과 차이점에 대해서 자료를 가져왔다.



[ wget, curl 공통점 ]

둘다 FTP, HTT, HTTPS 로 자료를 전송할 수 있다.

둘다 HTTP POST 요청을 보낼 수 있다.
둘다 HTTP 쿠키를 지원한다.
둘다 스크립트처럼 사용자와 상호작용없이 작동한다. 
둘다 오픈소스이며 무료다.
둘다 90년대부터 시작한 프로젝트이다.
둘다 메타링크를 지원한다.

.

 

[ wget, curl 차이점 ]

1. curl
-  라이브러리 존재 libcurl . 
- 더 다양한 프로토콜 지원
- 더 다양한 플랫폼에서 빌드/작동 가능. 
- 더 다양한 SSL 라이브러리와 SSL 지원.
- 더 활발히 개발 중

2. wget
- 라이브러리 없음.
- Recursive! 재귀적! 가장 큰 장점. 디렉토리 구조와 파일을 그대로 복사해 온다.
- 더 오래되었음 Wget 1995, curl late 1996)
- 100% GPL v3. curl is MIT licensed.

참고 : http://daniel.haxx.se/docs/curl-vs-wget.html

반응형

+ Recent posts