gnuboard jQuery 버전 문제

2015. 2. 12. 17:18 from Dev/etc

그누보드로 된 사이트를 업데이트 하다 bootstrap을 적용하려고 해보고 있는데, 이상하게 안되어서 헤매다 알고 보니 그누보드5 배포판은 jQuery 버전 1.8.3을 기본으로 하고 있네요.

아시다시피 bootstrap3는 jQuery 버전이 좀 높아야 되지요.. 현재 stable version은 2.1.3이고, 최소 1.11 대 이상은 되어야 기타 jQuery의 플러그인까지도 이용가능할 것으로 보입니다.

혹시 그누보드에 jQuery 버전 높은 거를 이용해도 되나? 하고 단순히 생각했었는데, 이런. 1.8.3과 2 사이에는 넘사벽이 있네요. major update가 한두번 있다 보니 그누보드의 javascript 부분을 상당히 많이 뜯어고치기 전에는 1.8.3을 그냥 이용하는 수밖에 없는 거로 결론을 냈습니다;;

괜히 2.1.3 로드해봤다, 1.11 로드해봤다.. 이 기능은 되는데 저 기능은 안되고 삽질만 몇 시간 동안 했네요.

Posted by banasun :

공익 아이디어 - 그린하우스, 이마트가격추적기

2015. 2. 7. 16:18 from IT

오늘은 한겨레21에서 읽은 기사입니다. 

미국 고등학생이 개발한 chrome extension인 그린하우스, 국내 오늘의 유머에 올라온 이마트 가격추적기에 대한 기사네요.

출처: http://media.daum.net/economic/others/newsview?newsid=20150207142006599


빅데이터 시대 - 사실 이전에 data mining으로 한참 뜨던 이슈가 이름만 바꾼 것 같다는게 개인적인 생각인데 - 에서 데이터를 가리고 숨기는 것도 쉽지는 않지만, 데이터의 바다 속에서 연관된 데이터들을 모으고 보관하고 이용하는 것 또한 쉽지 않지요.

간단한 로봇 크롤링으로 자료 긁어와서 가공하는 단계는 이제 지나갔고 - 막는 방법도 점점 발달하는 듯 - 이제 API처럼 데이터를 표준화하여 서비스 하도록 강제하거나(민주적인 사회라면 이게 더 편하겠지요. 정보 공개를 강제해야 하고 공개되는 정보가 맞는 것인지 확인할 수 있어야하지만요), 아니면 여러 소스에서 데이터를 모아서 인공지능으로 의미를 파악하고 판단하는 것이 필요할 것 같습니다.

아마 그린하우스는 정치인들의 정치자금 내역 데이터를 공개하는 곳에서 가져올 것 같고(확인은 못했습니다만), 이마트 가격추적기는 로봇으로 이마트 사이트의 가격들을 싹 훑어서 가격정보를 해석해서 저장 후에 서비스하는 것이겠지요.

오유 베스트오브베스트 게시글 : http://www.todayhumor.co.kr/board/view.php?table=bestofbest&no=192233

오늘 이마트 가격추적기 보니 얼마전부터 이마트에서 막은 것 같다는 댓글들이 나오던데, 이런 앱들이 공익적인 가치를 얼마나 실현했는지를 보아야 하는데 왜 오히려 영업방해 같은 거 걸리진 않을까 걱정을 해야 하는지.. 참 어렵네요.

Posted by banasun :

pip으로 mysql-connector-python 설치

2015. 2. 7. 01:06 from Dev/python

binary로 설치할 때는 http://dev.mysql.com/downloads/connector/python/에서 OS별로 다운받아서 설치하면 됩니다.

제 Mac에서는 python2와 3을 동시에 사용하고 있어서.. pip으로 설치하는 방법을 찾았습니다:


pip3.4 install --allow-external mysql-connector-python mysql-connector-python


3rd party pip repo라 옵션이 붙어야 하는 것 같습니다.

Posted by banasun :

[python] euc-kr 파일을 읽어서 utf-8로 작업할 때

2015. 2. 6. 01:55 from Dev/python

정말이지 이놈의 encoding은..

며칠전에 우편번호를 db에 집어넣어야 하는데.. 받은 데이터가 euc-kr입니다.

바꾸어 주는 방법은 간단합니다. file handler를 fh라 할 때, readline()으로 읽어오면 한줄만 넣어주면 됩니다 :

line = fh.readline()

line = unicode(line, 'euc-kr').encode('utf-8')

이렇게 해주시면 됩니다.

왜 네이버 웹툰 '하루3컷'이 생각이 날까요? ㅋㅋ

Posted by banasun :

laravel + mongodb 개발

2015. 2. 5. 23:55 from Dev

소규모 프로젝트 하나를 진행할 게 있었는데 환경을 어떻게 할까 고민하다 laravel을 적용하였습니다. 개인적으로는 code igniter는 스타일이 좀 안맞다고 해야 하나.. 하여튼 안친해지더라구요. 그래서 얼마전부터 눈팅하던 laravel을 써보기로 하였습니다.
뭐 framework을 새로운 거로 하는 김에 데이터베이스도 mongodb로. 결과는 엄청 헤맸습니다, 처음엔요. 그런데 너무 재미있게 했습니다.

자세한 환경은 다음에 포스팅하기로 하고(모바일 티스토리앱 처음 깔고 써보는 중이라;;) 느낌만 일단 적으면, laravel은 php framework를 도입하겠다면 꼭 추천드립니다. 아직 국내 개발자 커뮤니티가 충분하진 않다는게 좀 있지만 영어로는 관련 라이브러리나 문서도 많고요.

국내에서 laravel의 가장 큰 적은 php 버전입니다. 대부분의 호스팅업체는 아직 php 5.3 버전이지요. Laravel은 5.4 이상이라 독립서버거나 가상서버가 아니면 이용하기 어렵습니다.

Laravel의 기본 db는 mysql입니다. 하지만 mongodb를 붙여서도 기본 orm인 eloquent와 잘 붙더군요. Mysql보다 차라리 더 낫다고 느껴질 정도입니다.

Laravel은 작년에 php framework 평가에서 1위를 했습니다. 물론 평가하는 사람 주관이 있겠습니다만 여러 평가에서 CI는 지는 해(?)라는 의견이 다수 있지요. 굳이 CI로 잘하는데 laravel로 옮겨타는 건 바람직하진 않지만 새로운 시도를 한다면 laravel이 나쁘지 않다!가 오늘의 결론입니다. 데탑에서 썼으면 좀더 자세히 쓸텐데 모바일이라.. 자세한 내용은 천천히 프로젝트 정리하며 올리겠습니다. 페이퍼웍은 개발끝난 다음에 하는 것이 한국에서 개발자 본연의 자세(잉?)거든요 ㅋㅋ

Posted by banasun :

[gnuboard] editor로 작성한 글에서 img만 뽑아오기

2015. 2. 3. 16:14 from Dev/etc

그누보드 이용할 때, 에디터를 이용하지 않고 이미지를 따로 업로드한 경우는 그누보드의 모든 기능을 다 쓸 수 있습니다. 썸네일 작성이라든가, latest를 이용해서 최신글을 뽑아올 때라든가 말이지요.


그런데 DHTML편집기를 이용한 경우에는 wr_content의 소스에서 이미지를 따로 떼어와서 작업했었죠. 그런데 오늘 '어, 그거 함수 있어'하는 얘기를 들었습니다.


common.lib.php에 있는 get_editor_image 라는 녀석입니다.


$arrImgs = get_editor_image($list[$i]['wr_content'], false);


이런식으로 DHTML편집기로 작성된 wr_content를 넘겨주면 정규식을 이용해서 img 소스를 추출해줍니다. 두번째 인수를 false로 하면 url만, true로 하면 img tag 자체를 리턴해줍니다.


preg_match_all을 이용하기 때문에 리턴값은 array이고, 여기서 골라서 이용하면 됩니다.

Posted by banasun :

네이버와 다음 블로그 검색 순위..

2015. 2. 3. 12:45 from IT

그동안 블로그 유입 트래픽을 보면 압도적으로 네이버가 많았습니다. "뭐 그야 검색 트래픽이 네이버로 완전히 쏠렸으니 그런거 아닌가"하고 넘어갈 수도 있는 문제이긴 한데, 그래도 대충 "검색 트래픽 점유율과 비슷하게는 나와주어야 하는 거 아닌가?" 하는 의문이 들었습니다. 아래 그림은 Google Analytics 앱으로 본 제 블로그 유입 경로입니다.



왜냐하면 제 블로그 검색 유입은 그림처럼 네이버에 완전 편중되어 있으니까요. 술 마시며 얘기할 때는 네이버 엄청 디스하면서 정작 블로그는 네이버에 의존하게 되니 이율배반이지요. 제 블로그는 개인적으로 심심할 때 쓰는거라 트래픽 떨어지면 글 쓰는 재미가 좀 떨어지는 것뿐이지만 생계형으로 한다면 엄청난 스트레스겠지요.


그래서 시간이 날 때 네이버, 다음 블로그 랭킹을 확인할 수 있는 서비스를 검색하여 보았습니다. 앱으로 나온 것도 하나 있고(사실 앱은 예전에 써보고 안써봐서 이름이 정확하게 기억은 안남), 꽤 서비스가 큰 것 같은 블로그차트(http://www.blogchart.co.kr/)라는 곳도 있고 그러네요.


블로그차트로 확인해보니, 오.. 블로그 순위가 1만등 이내입니다. 정말?


그런데 "So what?"이라는 의문이 들었습니다. 그래서 찾은 곳이 키위(http://www.mykeywords.co.kr)라는 곳입니다.


여기는 조금 어설퍼 보이는 면도 있긴 한데.. 그래도 네이버와 다음 검색 순위를 정확히 알 수 있어서 좋네요. 게다가 앱과는 다르게 일정 기간 동안의 변동 내역도 알 수 있어서 도움이 됩니다.


며칠 동안 여기서 키워드 순위 변동을 살펴보니.. 제 트래픽 유입이 왜 네이버로 쏠려있는지 감이 왔습니다.


"아. 내 키워드가 (혹은 글쓰는 스타일이) 왠지는 모르겠지만 네이버에서 이쁨을 받는구나"


확실히 공들여 쓴 포스팅은 어디에서나(구글에서도) 검색 순위가 높습니다. 이건 당연한 거지만..

의외로 제 포스팅들은 같은 키워드도 네이버는 꽤 상위(1~10등)가 많은데, 다음은 20등 바깥, 40~50등 언저리입니다. 이러니 다음에서 들어오는 검색이 당연히 적을 수밖에 없지. 그래도 티스토리에서 블로그를 쓰는데 다음이 더 높아야 하는 거 아닌가 ㅋㅋ 하는 생각도 드네요.

아래는 제 블로그에서 몇가지 키워드 중 하나의 며칠 동안 순위 변동에 대한 결과입니다.

아니.. 1등하다 2등으로 떨어지다니. ㅜㅜ



하여튼 기왕 블로그를 운영하는 거니까.. 좀 전략도 생각해보면서 어떤게 더 좋은지 실험도 해보면서 해야겠네요.

실험 결과는 의미있는 결과가 나오면 공유하도록 하겠습니다. ^^


UPDATES:

차트 기능이 추가되어서 제가 요새 밀고 있는 키워드 차트를 붙여보았습니다.

상위권의 포스팅은 꾸준히 자기 랭킹을 유지하는데, 두번째 글은 아주 널을 뛰네요 ㅋㅋ



Posted by banasun :

인공지능 기사 작성

2015. 1. 30. 10:49 from IT

인공지능 발전 척도를 테스트하는 방법 중 하나는 다음과 같은 것이 있다:

질문을 하는 사람과 대답을 하는 사람(혹은 인공지능 컴퓨터) 사이를 커텐으로 가린 후, 사람이 질문을 하는데 이에 대한 대답을 듣고 커텐 너머에 있는 것이 사람인지 컴퓨터인지를 구분하는 것인데 단순히 생각한다면 "그걸 왜 모르지?"라고 할 수 있다. 하지만 이미 점점 그 구분이 어려워지는 단계를 넘어가고 있다.



인공지능으로 대체 불가능한 영역은 어디까지이지? 당연히 창작, 예술, 교육과 같은 영역이 떠오른다. 잠깐만, 창작은 불가능한가? 오늘자 지디넷코리아 기사("AP의 애플 실적 기사, 알고보니 로봇이 썼네")가 있다. 물론 창작은 아니지만 대량의 자료를 이용하여 필요한 부분만을 추출하고 적절한 문장으로 만들어내는 것은 이미 가능하다. 아니 인간보다 더 낫지 않을까?

Posted by banasun :

[php] openweathermap.org의 API를 이용한 현재 기상정보 보여주기

2015. 1. 29. 15:43 from Dev/php

예전에 openweathermap.org에서 제공하는 기상 정보를 이용하는 방법에 대해서 간단하게 올렸었습니다. (링크)

무료로 이용할 수 있는 날씨 정보 API가 별로 없는데, 이곳 서비스는 안정적으로 잘 이용하고 있습니다.

오늘은 간단하게 객체화 시킨 소스를 보여드리겠습니다. 언제나 그렇듯이 잘못된 부분이나 더 개선할 부분이 있으면 알려주세요. ^^



class Weather {

	const API_URL_CURRENT = "http://api.openweathermap.org/data/2.5/weather?lat=37.56826&lon=126.977829&units=metric&APPID=<발급받은 아이디>";
	const API_URL_FORECAST = "http://api.openweathermap.org/data/2.5/forecast/daily?lat=37.56826&lon=126.977829&cnt=5&units=metric&APPID=<역시 발급받은 아이디>";

	public static function get_current_weather() {
		$c = curl_init(self::API_URL_CURRENT);
		$options = array(
			CURLOPT_HEADER => false,
			CURLOPT_RETURNTRANSFER => true
		);
		curl_setopt_array($c, $options);
		$data = curl_exec($c);
		curl_close($c);
		
		if (isset($data) && $data) {
			$data_obj = json_decode($data);
			$result = array(
				'current_temp' => $data_obj->main->temp,
				'temp_min' => $data_obj->main->temp_min,
				'temp_max' => $data_obj->main->temp_max,
				'desc' => $data_obj->weather[0]->main,
				'icon' => "http://openweathermap.org/img/w/{$data_obj->weather[0]->icon}.png",
				'status' => 'ok'
			);
			return $result;
		}
	}
	
	public static function get_weather_forecast() {
		$c = curl_init(self::API_URL_FORECAST);
		$options = array(
			CURLOPT_HEADER => false,
			CURLOPT_RETURNTRANSFER => true
		);
		curl_setopt_array($c, $options);
		$data = curl_exec($c);
		curl_close($c);
		
		return json_decode($data);
	}
}

$w = Weather::get_current_weather();
echo "現在 " . number_format($w['current_temp'], 1) . "℃";


php 파일을 만드신 다음에 원하는 곳에 include만 해주면 간단한 날씨 아이콘과 현재 기온이 그림처럼 출력됩니다.

위 예제는 서울을 기준으로 했으니 다른 도시라면 lat, lon을 바꾸어주셔야 합니다.


이미지 아이콘도 $w['icon']으로 이용하실 수 있습니다만, 이쁜 아이콘이 아니라 pass. ㅋㅋ



여기에 가시면 오픈소스 날씨 관련 아이콘이 있습니다

erikflowers/weather-icons



기상 예측에 대해서도 일단 정보를 가져오는 부분은 코딩을 해 놓았습니다. json 객체이니 보시고 입맛에 맞게 이용하시면 됩니다.

Posted by banasun :

MySQL-python 설치하기 (Ubuntu)

2015. 1. 21. 17:53 from Dev/python

Ubuntu에서 mysql-python 설치하는 방법입니다. 아무것도 깔려있지 않은 깨끗한(?) 서버 상태일 때를 가정한 것입니다.



sudo apt-get install python-pip
sudo apt-get install python-dev
sudo apt-get install libmysqlclient-dev
sudo pip install MySQL-python

pip이 설치되어 있다면 1행은 건너 뛰셔도 됩니다.

Posted by banasun :