달력

082017  이전 다음

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  

http://localhost:8080으로 화면을 확인하면 이제 올릴 준비가 되었습니다.


app이 있는 폴더 상위에서 다음과 같이 명령을 입력합니다. 구글 계정 로그인하면 앱이 올라갑니다.

appcfg.py update helloworld/


explorer http://khcuweb.appspot.com 입력하면 IE가 뜨는데, 브라우저 인코딩을 UTF-8로 변경하면 제대로 보입니다. 크롬브라우저에서는 잘 보입니다.


관련: https://developers.google.com/appengine/docs/python/gettingstartedpython27/uploading

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남

다음과 같은 에러 메시지를 만나면 당황하게 됩니다.

  File "C:\Program Files\Google\google_appengine\google\appengine\tools\devappserver2\wsgi_server.py", line 31, in <module>

    from cherrypy import wsgiserver

  File "C:\Program Files\Google\google_appengine\lib\cherrypy\cherrypy\__init__.py", line 70, in <module>

    from cherrypy import _cptools

  File "C:\Program Files\Google\google_appengine\lib\cherrypy\cherrypy\_cptools.py", line 245, in <module>

    from cherrypy.lib import cptools, encoding, auth, static, jsontools

  File "C:\Program Files\Google\google_appengine\lib\cherrypy\cherrypy\lib\static.py", line 7, in <module>

    mimetypes.init()

  File "C:\Python27\lib\mimetypes.py", line 358, in init

    db.read_windows_registry()

  File "C:\Python27\lib\mimetypes.py", line 258, in read_windows_registry

    for subkeyname in enum_types(hkcr):

  File "C:\Python27\lib\mimetypes.py", line 249, in enum_types

    ctype = ctype.encode(default_encoding) # omit in 3.x!

UnicodeDecodeError: 'ascii' codec can't decode byte 0xb1 in position 9: ordinal not in range(128)



C:\Python27\Lib 폴더의 mimetypes.py 249번째 줄에서 발생한 에러입니다.


편집기로 열어서 지우거나 앞에 #을 붙여서 주석처리합니다.

끝!


추가로 메모장에서 한글을 사용하는 경우, 파일 > 다른 이름으로 저장 메뉴를 선택하고 인코딩을 UTF-8로 저장하는 것을 추천합니다.


안녕, World! 보기 쉽지 않네요.



관련 글: http://stackoverflow.com/questions/4237898/unicodedecodeerror-ascii-codec-cant-decode-byte-0xe0-in-position-0-ordinal/4238212#4238212



구글 앱엔진 시작하기 윈도우XP 편


구글 앱엔진 애플리케이션 업로드



저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남

윈도우에서 구글 앱 엔진을 돌려 봤습니다. 파이썬으로 작업을 하면서 삽질을 조금했기 때문에 기록을 남겨봅니다. 현재 구글앱엔진은 파이썬 2.7을 공식 지원합니다. python 3.x은 지원하지 않습니다. 때문에 python27을 다시 설치했습니다.(삽질1)


절차는 다음과 같습니다.

part 1 앱 엔진 등록

1.1 http://appengine.google.com/ 사이트에 구글 계정으로 등록을 합니다. 휴대폰인증이 있습니다.

1.2 앱엔진 애플리케이션을 만듭니다. Application Identifier(예, khcuweb)가 정해지면 http://khcuweb.appspot.com 로 접근하게 됩니다.


part 2 로컬 개발환경

2.1 구글앱엔진 SDK 파이썬 버전을 다운로드 받아서 설치합니다.

2.2 http://python.org 사이트에서 Python 2.7을 다운로드 받아서 설치합니다.

2.3 환경 변수 > 사용자 변수 Path에 C:\Program Files\Google\google_appengine\ 경로 추가된 것 확인

2.4 환경 변수 > 시스템 변수 Path에 C:\Python27;C:\Python27\Scripts; 경로를 추가합니다.


part 3

3.1 helloworld.py 만들기

3.2 app.yaml 만들기

3.3 dev_appserver.py helloworld.py 실행하기 

윈도우 XP에서 UnicodeDecodeError 발생하는데, 이에 관해서는 다음 글에 올리겠습니다.












저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남

일간워스트가 오늘 핫이슈입니다. 일워( http://ilwar.com ) 사이트는 일베처럼 놀지 말자고 만든 일종의 패러디 사이트입니다. 제로보드로 뚝딱 만들어서 올렸다가 레이니걸님은 트위터를 주로 이용하는 것으로 알고 있는데, 15분만에 호스팅의 트래픽을 넘어섰다고 합니다.

우여곡절을 일간워스트 개장기(http://blog.rainygirl.com/?p=1266)라는 블로그 글로 올리셨는데, 여기에서 기술적으로 배울 점이 아주 많이 있다고 생각합니다.


블로그의 기술적인 내용을 요약해 봅니다.

1. "어짜피 XE 로 사이트 만드는거 10분이면 끝나는데 간단히 해볼까"

2. "15분만에 접속자가 몰리며 호스팅업체의 CPU제한이 초과되어 호스팅이 정지"

3. "유료호스팅으로 일단 옮겨보았습니다. 민영화버튼도 넣고, 일베로고를 그대로 본딴 로고도 적용"

4. "30일 아침, 파이낸셜뉴스에 첫 기사가 나갔습니다.

그리고 네이버 실시간급상승검색어에 이틀 가까이 올라가 있었습니다."

5. "순방문자 백만명은 진작에 돌파했고, 앞자리까지 계속 바뀌며 동시접속자까지도 폭발하고 있었으니 저로서는 황당할 수 밖에 없었습니다."


6. "유료호스팅에서도 결국 트래픽 초과로 사이트가 내려갔습니다. 결국 고민끝에, 자체서버로 돌리기로 결심했죠."

7. "둘쨋날인 12월 30일, 그 트래픽에서 정확히 3배가 늘어났습니다"

8. ...


이하 기술적인 이야기들은, 오늘 저녁 방송에서 특집으로 꾸며집니다.

http://afreeca.com/kenuheo



레이니걸님 새해 복 많이 받으시기 바랍니다.

존경합니다.

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남
TAG ilwar

텍스트 브라우저 lynx

2013.12.30 01:39

http://www.vordweb.co.uk/standards/download_lynx.htm 에서 zip파일 다운로드 받아서 C:\lynx_w32 폴더에 압축 풀린 형태로 만든 후 lynx.bat 를 실행하면 됩니다.


G를 누르고 http://cnn.com/ 에 들어간 모습니다.


텍스트 브라우저의 전설입니다.


저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남
TAG Lynx

time server

2013.12.28 12:44

#time sync

0 2 * * * /usr/sbin/ntpdate -s time.bora.net


저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남
TAG Time

apache/bin/ab.exe 간편하고 쉬운 도구인데, 아파치를 윈도우에 설치해야 한다는 부담이 있죠.

http://www.apachefriends.org/en/xampp-windows.html#641


xampp 패키지에 있는 apache를 이용하면 됩니다.

xampp/apache/bin/ab.exe 를 호출할 수 있습니다.


물론 이것도 180MB라는 무시무시한 zip파일을 다운받아서 압축을 풀어야 합니다.



저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남

구글의 앱 엔진(http://appengine.appspot.com/)은 데이터를 저장할 때 비용이 발생합니다. SQL을 사용하려면 더 비쌉니다.

간단히 데이터를 저장하고 빼는 방법으로 DataStore API를 제공해줍니다. 그리고, 저장된 데이터는 관리자 웹 페이지를 통해서 확인할 수 있습니다.


저장하는 절차는 다음과 같습니다.

1. 환경에서 DatastoreService를 가져옵니다.

2. Key를 만듭니다. Key의 종류와 key 이름을 추가합니다.

3. 레코드는 Entity 클래스를 이용합니다.

4. entity에 key : value 형식으로 기록할 데이터를 입력합니다.

5. Datastore에 entity를 추가합니다.


private static final String KEY_KIND = "Game";

private static final String keyName = "games";


DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();


public void save(Game game) {

Key entityKey = KeyFactory.createKey(KEY_KIND, keyName);


Entity entity = new Entity(KEY_KIND, entityKey);


User firstUser = game.getFirstUser();

User secondUser = game.getSecondUser();


entity.setProperty("first", firstUser.getName());

entity.setProperty("firstchoice", firstUser.getChoice());

entity.setProperty("second", secondUser.getName());

entity.setProperty("secondchoice", secondUser.getChoice());


entity.setProperty("datetime", new Date());

entity.setProperty("ip", game.getIp());


datastore.put(entity);

}



관리자 페이지에서는 다음과 같이 화면이 제공됩니다.




데이터를 꺼내오는 방법은 다음과 같습니다.


1. Key를 만듭니다.

2. Query를 만들면서 정렬순서와 기준 항목을 정합니다.

3. Datastore에서 Query를 이용해서 데이터를 꺼냅니다.

4. Entity 목록을 처리합니다.

public List<Entity> fetchAll() {

Key entityKey = KeyFactory.createKey(KEY_KINDkeyName);

Query query = new Query(KEY_KIND, entityKey).addSort("datetime",

Query.SortDirection.DESCENDING);

List<Entity> games = datastore.prepare(query).asList(

FetchOptions.Builder.withLimit(5));


return games;

}




저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남

html5 웹캠뷰어

2013.10.18 04:29

윈도우에서 찾아 엄청 헤맸는데,

그냥 크롬브라우저로 해결 됩니다.


<html>

  <body>

    <video src="" id="myvideo"  autoplay></video>

    <script type="text/javascript">

      var video = document.getElementById('myvideo');

      navigator.webkitGetUserMedia({video:true}, success); 

    

      function success(stream){

        video.src = window.webkitURL.createObjectURL(stream);

      }

    </script>

  </body>

</html>


from: http://hanury.net/wp/archives/3479





저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남

아주 쉬운 퀴즈 10문제(주관식 2 포함) 입니다.


goo.gl/cwEVYJ


정답은 등록하신 이메일로 보내드립니다.

저작자 표시
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 케누 kenu허광남

티스토리 툴바