조금은 쪽팔린 일일 것 같지만 너무나 황당하고 기뻐서 짧게나마 쓴다.


매번 javascript에서 JSON.stringify(jsonObj); 하고나서 읽기가 불편해서 편집기에서 줄바꾸는 개고생을 했는데...


옵션이 있었을줄이야...ㅠ.ㅠ



JSON 객체의 stringify 함수는 기본 파라미터인 json 객체 외에 옵션으로 2개의 인자를 더 넘길 수 잇는데,

두 번째 인자는 일종의 filtering 기능을 하는 파라미터로 json 객체의 key와 value를 파라미터로 받아

지지고 볶은 후 그 결과만 리턴을 해주는 기능을 한다(자세한 것은 이곳 참조 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify). 이 기능도 잘 활용하면 큰 도움이 될 것 같다.


그리고 중요한 마지막 파라미터가 바로 json 포맷의 문자열을 정렬해주는 기능을 한다.

단순히 숫자를 입력하면 space를 숫자만큼 띄우고 그밖에 escape 문자로 '\t' 등을 입력하여 적절한 indent를

줄 수 있다.


다음은 각각 그 예이다.


$('#_query-area').val(JSON.stringify(tableObj));


결과


{"table":[{"name":"우형준","id":"abcd","password":"abcd1234","email":"aaa@bbbl.com","_id":"0"}],"tableName":"UserTable"}


$('#_query-area').val(JSON.stringify(tableObj, null, 4));


결과


{

    "table": [

        {

            "name": "우형준",

            "id": "abcd",

            "password": "abcd1234",

            "email": "aaa@bbb.com",

            "_id": "0"

        }

    ],

    "tableName": "UserTable"

}


역시 공부해야 한다...ㅠ.ㅠ;

저작자 표시
신고

실로 오랜만에 Spring (boot)로 작업을 하려다보니 많은 것이 바뀌었다.

예전에는 그냥 필요한 라이브러리 집어넣고 Ant로 빌드하는게 끝이었는데...


이젠 Maven, gradle, Ivy 등 다양한 빌드 틀들이 존재한다.

그런데 여기서 좀 혼란스러운 것은 바로 의존성 설정...

대부분 프로젝트 생성시 기본적으로 포함이 되지만 나중에 추가하는 경우

어던 이름의 어떤 버전을 설정해야 하는지 막막한 경우가 있다.


그런데 이런 사이트가 있네~!!

이런 고마울데가~ㅠㅠ


http://mvnrepository.com


앞으로 빌드 설정에서 헤맬 일은 없겠네.

저작자 표시
신고

사실 이 내용은 워낙 많은 자료들이 널려있어서 팁이라고 할 것도 없다.

그럼에도 불구하고 이 내용을 적는 것은 정규표현식을 '어떻게' 사용하느냐의 문제를 이야기하고자 함이다.


현재 운영하고 있는 곳에서 태그를 제거하기 위해 사용한 방법은 String.replaceAll이었다.

하지만 몇 번 중복을 하고나니 금방 stackOverflow 오류가 발생을 하였다.

아무래도 재귀적으로 처리되는 정규표현식을 감당하기에 String.replaceAll은 너무 버거운 모양이다.


결국 Pattern 객체와 Matcher 객체를 사용하여 처리하는 함수를 얻어다 처리를 하였더니

오류 없이 정상 처리 되었다.


출처 : http://hoyanet.pe.kr/m/post/1963


private String getText(String content) {

Pattern SCRIPTS = Pattern.compile("<script([^'\"]|\"[^\"]*\"|'[^']*')*?</script>",Pattern.DOTALL);

Pattern STYLE = Pattern.compile("<style[^>]*>.*</style>",Pattern.DOTALL);

// Pattern TAGS = Pattern.compile("<(\"[^\"]*\"|\'[^\']*\'|[^\'\">])*>");

Pattern TAGS = Pattern.compile("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>");

Pattern nTAGS = Pattern.compile("<\\w+\\s+[^<]*\\s*>");

Pattern ENTITY_REFS = Pattern.compile("&[^;]+;");

Pattern WHITESPACE = Pattern.compile("\\s\\s+");

Matcher m;

m = SCRIPTS.matcher(content);

content = m.replaceAll("");

m = STYLE.matcher(content);

content = m.replaceAll("");

m = TAGS.matcher(content);

content = m.replaceAll("");

m = ENTITY_REFS.matcher(content);

content = m.replaceAll("");

m = WHITESPACE.matcher(content);

content = m.replaceAll(" "); 


return content;

}

저작자 표시
신고

서브 프로젝트를 포함시킨 프로젝트를 Archive 하였더니 

Archive type이 iOS App Archive로 안나오고 Generic Xcode Archive로만 나오는 것이었다.


테스트용으로 앱을 배포하려면 iOS App Archive로 되어야 하는데…


구글링을 통해 얻은 답은 Project를 선택한 후 build settings -> Deployment 섹션의 Skip install 항목을

메인 프로젝트에서는 NO로 서브 프로젝트에서는 YES로 해주어야 한다는 것이다.


주의할 것은 target에서 설정하는 것이 아니라 프로젝트에서 설정을 해주어야 한다.


메인 프로젝트 설정


서브 프로젝트 설정


저작자 표시
신고
  1. 승쨩 2014.03.28 11:18 신고

    감사합니다 ㅎㅎ

  2. 봉구군 2015.03.13 14:36 신고

    감사합니다 ^.^

현재 빅데이터 학습을 위한 전초 단계로 '빅데이터'를 만드는 작업을 진행 중이다.

개인의 자격으로 거대 규모의 데이터를 만들어내기란 여간 어려운 것이 아니다.

때문에 일단 의미 있는 분석이 가능한 데이터를 어느 정도 선까지 모으는 것을 목표로 하고 있다.

현재 목표로 하고 있는 것은 대략 100Gb선이다.


그래서 선택한 것이 트위터의 트윗들이다.


특정 키워드로 검색을 했을 경우 검색되는 트윗들을 모아보기로 한 것이다.

이를 분석하면 검색어로 사용된 특정 단어에 대한 분석이 어느정도 가능하지 않겠냐는 판단에서 내린 결정이다.


그래서 Twitter API를 이용하여 작업을 진행 중인데

처음엔 시행착오가 좀 있었다.


우선 기존에 사용해본 적이 있는 REST API 중 search API를 이용하여 데이터 수집을 진행하였다.

그런데 REST API는 한계가 있었다. 기존에 축적된 모든 트위터의 데이터가 대상이 아닌 것이었다.

6~7회 시도를 해 본 결과 대략 1주일치 분량의 데이터를 얻을 수 있었을 뿐 그 이전의 데이터는

가져올 수가 없었다. 1주일 분의 데이터라 해도 약 60~70Mb 정도의 파일 크기가 된다.

게다가 특정 날짜까지의 데이터를 불러오는 옵션이 있는데 계속해서 데이터를 축적하기 위해서는

매일 한 번 정도는 이 날짜를 가장 최근 날짜로 변경을 해야 하고 그렇게 쌓인 파일에는 중복되는

데이터가 거의 대부분이라는 문제가 있었다.


그래서 구글링을 한 결과 REST API 말고 Streaming API라는 것이 있다는 것을 알았다.

REST API가 배치성이라면 Streaming API는 리얼타임이다. 즉 실시간으로 올라오는

트윗 데이터들을 네트워크가 끊기기 전까지 지속적으로 가져오는 것이다. 


타임라인의 데이터를 가져오는 것은 Public stream이라고 하고 여기에는 3가지 옵션이 있다.

각각은 다음과 같다.



이 중 firehose는 상업적 용도로써 이를 이용하기 위해서는 Twitter사와 계약을 맺어야 하고
또 이용료 또한 엄청 비싸다고 한다. 대부분 데이터 리셀러들이 이용을 하고 있는 듯하다.

결국 개인이 사용 가능한 것은 filter나 sample인데 이 API들을 이용해서 가져올 수 있는 데이터의 양은
firehose의 1% 수준이라고 한다.

결국 filter API를 이용해서 데이터를 가져오기로 하고 filter API가 구현된 PHP 소스를 입수하여
데이터 수집을 시작하였다.

그런데 여기도 문제가 있었으니...
리얼타임인데다가 특정 키워드에 대한 내용만 가져오는 것이다보니 데이터 수집 속도가 매우 느리다.
REST API의 search를 이용할 경우 약 하루 하고 반나절 정도면 60~70Mb정도의 데이터가 쌓이는 반면
Streaming API의 filter를 사용하였더니 3일하고도 16시간 정도 지난 현재 겨우 19Mb 정도의 데이터가 쌓였을 뿐이다. 이래가지고 어느세월에 100Gb를 만드나...ㅠ.ㅠ

업친데 덥친 격으로 오늘 아침에 확인을 해보니 어제 오후 6시경부터 401 Unauthorized 에러가 발생을 하여
데이터 수집이 멈춘 상태였다. 다시 실행을 해보아도 계속 401 에러만 발생을 한다.

역시 구글링을 통해 확인한 결과 트위터 서버와의 시간이 안맞아서 생기는 문제란다.
우선 다음 명령어를 터미널에 입력하는 것으로 해결은 되었다.

mazdah$ sudo ntpdate ntp.ubuntu.com

일단 다시 재가동은 되었지만 어느 세월에 충분한 데이터를 쌓을지가 여전히 문제다...
그냥 매일 search를 돌려서 재가공을 해야 하는 것이 더 빠를 것 같도 하고...

그저 현재는 다른 작업도 밀려있으니 잠시 더 기다려 볼 뿐이다...

저작자 표시
신고
  1. 헤이즐 2013.09.05 15:18 신고

    스트리밍에 대한 내용 잘 보았습니다^^
    질문할게 있어서 그런데요. 혹시 트윗 URL을 검색이나 스트리밍으로 받는 방법을 아시나요?
    한참을 찾고 있는데도 잘 모르겠네요;

    • 마즈다 2013.10.08 17:43 신고

      헉...댓글이 달려있을 줄 몰랐네요.
      와서 보시게 될지는 모르겠습니다만...
      일단 트위터에서 트윗된 글 하나 하나에 대한 링크는 만들고 있지 않을 것으로 생각 됩니다.
      결국 API를 통해 글 내용을 가져오는 것 외에 URL을 이용하여 트윗된 내용을 가져오는 것은 힘들 것으로 보여지네요.
      저도 좀 더 확인해보고 새로운 방법이 발견되면 글을 작성하도록 하겠습니다...^^

MAC, OSX, SVN,

최초 작성일 : 2013/07/10 09:00 


맥 OS를 새로 설치하고 SVN 명령을 실행했더니 다음과 같은 오류가 발생한다.


Mazdah-ui-Mac-mini:~ mazdah$ svn
dyld: Library not loaded: /usr/lib/libneon.27.dylib
  Referenced from: /Volumes/MacintoshHD2/Developer/usr/bin/svn
  Reason: image not found
Trace/BPT trap: 5

해결책은 간단했다.
Xcode의 환경설정에서 다운로드 탭으로 간 뒤
command line tool을 다운로드 했더니 해결 되었다...:)




저작자 표시
신고

최초 작성일 : 2012/12/04 09:53 


출처 : http://blog.jidolstar.com/trackback/801


Xcode 4에서 라이브러리 파일(*.a)가 ignore 처리되어 SVN에 등록되지 않습니다. Xcode상에서도 해당 라이브러리 파일은 I로 표시되고, unignore 버튼을 눌러도 처리되지 않습니다. 할 수 없이 터미널 상에서 다음과 같은 명령을 사용해 강제 처리해야합니다.

lib.a를 추가해야 한다면 다음과 같이 터미널에서 실행하세요.

$ cd /lib.a가 있는 폴더

$ svn add lib.a 
A  (bin)  lib.a

$ svn st
A       lib.a

$ svn commit -m 'lib.a 를 추가함'

한번만 처리해 두시면 *.a 파일과 씨름하지 않아도 됩니다. ^^

저작자 표시
신고

최초 작성일 : 2012/08/17 10:13


출처 : Seorenn SIGSEGV

파인더에서 숨은 파일 보기

터미널을 열고 다음 커맨드를 입력한다.
defaults write com.apple.finder AppleShowAllFiles TRUE
그리고 파인더를 재기동해야 하는데 역시 터미널에서 아래 명령을 입력하면 된다.
killall Finder

숨은 파일 다시 안보이게 하기

다시 원래대로 돌리려면 TRUE 대신 FALSE로 설정하면 된다. 역시나 터미널에서 아래 커맨드를 입력한다.
defaults write com.apple.finder AppleShowAllFiles FALSE
물론 이 경우도 파인더를 재기동 해야 한다.
killall Finder

저작자 표시
신고

최초 작성일 : 2012/05/11 10:09 



str = str.replaceAll("&nbsp;", "") //공백태그 제거
.replaceAll("<meta[^>]*(/)?>", "") //meta 태그 제거
.replaceAll("<style[^>]*>(.*?)</style>", "")  //css제거
.replaceAll("<script[^>]*>(.*?)</script>", "") //스크립트 제거
.replaceAll("<!--[^>]*-->", "")                  //주석처리 제거
.replaceAll("<(/)?(b|B)(r|R) ?/?>", "\n")
.replaceAll("</(p|P)>", "\n")
.replaceAll("<(/)?([a-zA-Z]*)(\\s[a-zA-Z]*=[^>]*)?(\\s)*(/)?>", "")  //html태그 제거
.replaceAll("<o:p>", "")
.replaceAll("</o:p>", "\n")
.replaceAll("(<\\?(xml|XML))[^>]*/>", "");

[출처] HTML 태그 제거|작성자 모과나무

 

저작자 표시
신고

최초 작성일 : 2010/08/01 23:35 


최근 Xcode4 preview2를 다운받아 설치한 후 시험 삼아 기존 프로젝트를

돌려보기도 한데다가 iPhotoDiary를 개발하고 앱스토어에 등록하기 위해 여러
provisioning profile을 설치한 관계로 개발 환경이 약간 복잡하게 꼬여버렸다.

1차 등록 신청한 iPhotoDiary는 한 곳에서 crash가 발생하여 reject 당했고
그래서 우선은 테스트 중이던 Xcode4에서 수정을 하여 다시 등록하려고 했다.
그런데 앱스토어 등록을 위한 distribution profile을 통해 building을 수행하니
결과물이 생성되지 않는 것이었다. build 디렉토리에 아무 것도 생기지 않았다.
이 부분도 확실하게 원인을 찾아야 하겠으나 아직 제대로 파악을 못한 상태다.
(그런데 개발용 profile을 선택해서 build & run을 수행하면 정상적으로 디바이스에
설치되어 수행은 되었다.)

결국 다시 Xcode3을 열어 프로젝트를 오픈한 후 distribution profile을 통해 building을 수행하니
정상적으로 결과물이 생성되었다. 그런데 이번에는 디바이스에 설치하여 수행하려 했더니

UUID mismatch detected with the loaded library...

이러한 경고 문구를 뿌리면서 Default.png 화면에서 멎어버리는 것이었다.
여기 저기 확인을 한 결과 디바이스와 SDK의 버전이 일치하지 않아서 발생하는
문제란다.

그러고보니 전날 아이폰의 OS를 4.0.1로 업데이트한 사실이 생각났다.
결국 애플 개발자 센터에서 SDK도 4.0.1로 다운받아 설치하고 다시 수행한 결과
모든 것이 정상적으로 진행되었다.

==========================================

Xcode4의 경우 인터페이스가 상당히 편하게 바뀐 것은 사실이나 아직은 preview2
버전이라 그런지 안정성이나 성능면에서 불안정한 모습을 보이는 것도 사실이다.
특히 메모리 사용량 같은 경우 최고 1GB 이상까지도 올라가는 것은 분명
개선의 여지가 있다고 보여진다. 당분간 Xcode4는 봉인을 해두어야 할 것 같다.

저작자 표시
신고

+ Recent posts

티스토리 툴바