구글 앱 엔진에서 간단히 데이터 좀 불러오려는데, 위와 같은 에러가 떴다. 코드를 봐도 잘못 작성한 데가 없는데 왜 이럴까 해서 에러를 한 번 다시 살펴보았다.
no matching index found. This query needs this index: - kind: PLPopularity properties: - name: date - name: domain - name: language

아래는 에러를 발생시킨 라인. 

results = PLPopularity.all().filter('date =', date.today()).filter('domain =', domain).order('language').fetch(100)

뭐가 문제인가 싶어 에러 메시지를 구글링해보니 인덱스만 추가해주면 괜찮단다. 응? 난 index.yaml에 분명 database 정의해 놓았는데? 난 이미 내 데이터베이스에 대한 인덱스를 가지고 있는데?


그래서 구글 문서를 찾아보니, 여러개의 필터나 정렬을 사용할 경우 해당 쿼리에 맞는 인덱스를 작성해 주어야 한단다.  

내가 작성해둔 인덱스는 

- kind: PLPopularity
  properties:
  - name: date
  - name: domain
  - name: language
    direction: asc
  - name: num  

이지만, 내 쿼리에서는 num 필드를 사용 안하므로, 아래와 같이 num 필드를 빼고 작성해 주어야 한다. 

- kind: PLPopularity
  properties:
  - name: date
  - name: domain
  - name: language
    direction: asc

direction도 쿼리와 같은 방향으로 설정해 주어야지 그렇지 않으면 인덱스가 없다는 에러가 또 뜬다. 

아래는 인덱스에 관련된 구글 원문.
Why do my queries need to be covered by indexes, and how do I include them?

If you run a query that filters on multiple entity properties or orders results by multiple properties, you will need an index for that query. You must have an index for every query of that kind that you run with your application. The datastore index for a query maintains and updates a list of keys sorted in the manner that the query specifies to allow speedy access to the data in your datastore. A full explanation of datastore indexes can be found in our documentation (Java | Python).

When you develop your application with Google App Engine SDK, every query you run automatically gets indexed when necessary. If you thoroughly test your application before uploading it to your website, all of the indexes your application will need will be included in your application's datastore-indexes.xml (Java) orindex.yaml (Python) files. You may manually add indexes if you find a query that was not covered by your development testing. For more information on how to write indexes for your application, see the index documentation (Java | Python).

출처: http://code.google.com/appengine/kb/general.html#indexes

이름 :
비밀번호 :
홈사이트 :
비밀글 :

일상생활에서 자주 쓰이는 영어 단어를 그림으로 배워보고 싶어서 (그림으로 보는게 효과적인 학습방법이므로) 찾다가 유용한 웹사이트를 발견했다. LanguageGuide란 곳에서 그림으로 영어를 배울 수 있게 잘 정리해두었다.

아래는 메뉴 화면.

사용자 삽입 이미지

아래는 식당에 있는 물건들을 나열해 놓았다. 각 그림에 마우스 커서를 올리면 해당 물건을 가리키는 영단어와 함께 어떻게 읽는지 들려준다. 어떻게 단어를 읽는지 들려준다는 점이 가장 유용한 면이 아닌가 싶다. 영어 단어를 알더라도 직접 사용하려면 액센트가 어디에 오는지 알아야되니 영사전을 찾아서 어떻게 읽는지 찾아보는 경우가 다반사인데 단어를 읽어주니 편리하다.

사용자 삽입 이미지


아래는 부엌1 (부엌 2도 있다)을 선택했을 때의 화면. 부엌에서 오늘 배운 유용한 단어는 saucer (컵 받침대), ladle (국자), spatula (주걱), whisk (달걀 휘젓는 기구), food processor (식품 전동 조리 기구). 미국에 있는 동안은 부엌에서 요리를 자주하는 편이라서 위의 도구들을 쓰면서도 매번 친구들에게 뭐라고 불리는지 다시 물어보곤 했다. 이렇게 직접 찾아보니까 다양한 도구들의 이름도 제대로 익히고 좋구나.

사용자 삽입 이미지



글에 기재한 링크를 놓치신 분을 위하여 주소는 http://www.languageguide.org/영어/

tagged with  영단어, 영어
이름 :
비밀번호 :
홈사이트 :
비밀글 :

근래에 구글 앱 엔진(이하 GAE)에서 프로토타입을 작성할 일이 있어서 GAE의 데이터베이스의 Big Table에서  Full Text Search를 좀 살펴보았다.

매우 제한적이지만 GAE에서도 Full Text Search를 사용할 수 있다.  정확한 단어 매치만 되고, 부분 문자열 검색이나 정규식은 것은 적용되지 않는다.

Full text search를 하는 방법은 아래와 같다.

DB를 정의할 때 db.model 대신에 아래와 같이 search.SearchableModel을 넣어준다.

class Article(search.SearchableModel):
text = db.TextProperty()
...

article = Article(text=...)
article.save()


실제 검색하는 예제는 아래와 같다.

query = article.all().search('a search query').filter(...).order(...)
for result in query:
...

search 만 하려면 full text index가 필요하지 않는데, filter 나 order 까지 하려면 __searchable._text_index라는 인덱스를 index.yaml 에 정의해주어야 한다.

- kind: Article
properties:
- name: __searchable_text_index
- name: date
direction: desc
...

참조:
http://www.google.com/codesearch/p?hl=en&sa=N&cd=1&ct=rc#Qx8E-7HUBTk/trunk/google/appengine/ext/search/__init__.py&q=searchablemodel%20package:http://googleappengine%5C.googlecode%5C.com



wrote at 2010.01.18 01:25 신고
저도 GAE를 조금 들여다보다 아직은 떄가 이른 것 같아 포기했었는데요, 어떤 프로젝트를 하시는지 궁금하네요 ^^
wrote at 2010.01.20 12:55 신고
ESL student를 위한 프로그램을 만들고 있습니다. 데이터를 중심으로 한 접근 방법을 사용하고 있는데요, GAE 가 무료이고 이미 몇 번 프로그램을 올려본 경험이 있어서 GAE에서 작업하고 있습니다. 전 오히려 LAMP가 익숙한데, GAE에서 이것저것 하려면 GAE만의 문제에 계속 부딪치게 되네요. ^^

lifidea님께서는 IR 쪽에 리서치를 하고 계시니 GAE에 적응하시는데 별 어려움이 없으실거라 생각합니다. 주말에 한 번 간단한 홈페이지 올려보세요. Google은 manual을 작성을 잘해두어서 코드만 보고 따라하면 금방 되더라구요. ^^
이름 :
비밀번호 :
홈사이트 :
비밀글 :
호주의 한 회사가 애자일이 뭔지 간단한 동영상으로 만들었네요.

나름 잘 정의한 것 같군요 ^^ 



이름 :
비밀번호 :
홈사이트 :
비밀글 :
스프린트 백로그를 프로젝트에 도입해보았다.

사용자 삽입 이미지

위의 simple sprint backlog는 애자일 소프트웨어 홈페이지에서 가져왔다. 템플릿이 간단하게 잘 만들어져 있어서 내가 위에서 편집해야 했던 것은,
  • 타이틀
  • 태스크
  • 노력 추정치 (efforts)
였다. 그리고, 사용하다보니 필요하다고 생각하는 부분들을 추가했다.
  • 스프린트 시작일
  • 태스크에 대한 노트
  • 태스크의 개발 상태 (색상으로 표시)
그래서 하나의 스프린트 주기(2주)를 지난 백로그의 모습이 아래와 같아졌다.

사용자 삽입 이미지

일이 진행됨에 따라서 필요한 일들이 추가되서 스코프가 증가하기도 하고, 필요한 정보가 존재하지 않아서 불가능하다고 판단되는 태스크들은 스코프에서 빠지게 되었다. 그러한 정보들도 백로그에 기록되었다. Day 4에 보면 일을 더 했음에도 불구하고 그래프는 증가하였는데, 새로운 일이 추가되었기 때문이고, Day 11에 보면 일의 양이 갑자기 줄어든 것을 볼 수 있다.

현재 3개의 스프린트 주기를 끝냈는데, 향상 시켜야할 점들은 아래와 같다.
  • Day 0를 추가하여 프로젝트에 착수하기 전의 일의 추정치를 기록해두면 좋을 것 같다.
  • Task를 얼마나 세분화 시켜야하는지 잘 모르겠다.
혹시 백로그를 써보신 분이 있으시다면 피드백 주시면 감사하겠습니다.
wrote at 2008.12.13 10:18 신고
학교 프로젝트에 적용하시는 건가요? 한국 돌아오셨던 걸로 기억하는데요. ㅎㅎ
wrote at 2008.12.13 12:26 신고
아, 기억해주시니 감사합니다. 마지막 학기 마치고 있지요.
학교 다니면서 State Surge라는 회사에서 일하고 있는데, 거기서 맡은 일들에 적용해보고 있습니다. 혼자서 적용시켜 보고 있는거라 조언을 구할 데가 마땅치 않아서 곤란해하고 있습니다. ^^;
재훈님의 블로그는 언제나 깔끔하고 좋군요. 폰트도 크고. 근래에 이것저것 바꿔보려 하는데 티스토리는 마음에 드는게 없어서 확! 워드프레스로 옮겨버릴까라는 고민도 하고 있습니다. 직접 스킨을 짜기는 너무 번거로운 일이군요 -_- 옮기는 것도 만만치 않은 번거로움이지만서도...ㅜㅜ
wrote at 2008.12.15 14:40 신고
제 블로그는 진화의 역사지요. 스킨은 거의 안 바꾸고 생각날 때마다 폰트를 바꿔보고 메뉴를 추가했다 빼보고 그럽니다. 스킨은 일년에 한번 정도밖에 안 바꿔요. 귀찮아서요. ㅎㅎ
이름 :
비밀번호 :
홈사이트 :
비밀글 :
프로그램 설치할 필요 없고 팝업창 안 뜨고 여러개의 메뉴를 선택하지 않아도 됩니다.
http://www.speedtest.net/

접속하면 아래와 같은 첫 페이지가 뜹니다.

사용자 삽입 이미지

노란색으로 현재 자신이 접속한 지역 근처의 테스팅 서버를 추천해줍니다. 서울을 선택하면 테스트가 시작 됩니다. (드롭다운 박스로, 서울 경기도 인천 강원도 충청북도... 선택할 필요 없어요 ㅡㅡ;)

사용자 삽입 이미지

그럼 위와 같이 다운로드 스피드가 측정이 시작되고, 그림으로 어느정도인지 표시해줍니다.

사용자 삽입 이미지

이제 업로드까지 완료된 화면입니다.

제 현재 인터넷 상태가 원활한 편이 아니라서 한 번 측정해보았더니 역시나 느리군요.

참고로 위 웹사이트는 구글에서 internet speed test 라고 검색했을 때 제일 위에 나온 사이트였습니다.

'On the Web' 카테고리의 다른 글

스프린트 백로그 사용 후기  (3) 2008.12.09
인터넷 속도 측정 추천 사이트 (설치할 필요 없어요)  (2) 2008.11.30
웹 혁신을 위한 동력  (0) 2008.08.17
순수근무시간  (0) 2008.08.14
tagged with  인터넷속도측정
wrote at 2008.12.01 22:56 신고
예전에는 서울 서버 없어서 일본 서버로 속도를 쟀는데, 서울 서버가 생겨서 더 정확히 측정하게 되어서 좋네요.
wrote at 2008.12.03 10:46 신고
호오 역시 세레님은 예전부터 이용하고 계셨군요 ^^
이름 :
비밀번호 :
홈사이트 :
비밀글 :




핵심은 사용자들이 원하는 서비스를 제공하는 것이라고 생각한다. 진부한 얘기일까?

중력가속센서와 터치패드를 잘 활용한 iPhone이 좋은 예라고 생각한다. 기존의 휴대폰 기술을 답습하고 그냥 신기술만 끼워넣는 것이 아니라 사용자들이 원하는 걸 고민한 흔적이 보이는 iPhone이 좋은 예이다. 무엇인가 굉장한 것을 개발하는 것이 아니라 있는 기술을 어떻게 잘 활용하는가 그리고 사용자들이 원하는 건 화려한 신기술이 아니라 그 신기술로 혹은 있는 기술들로 그들의 요구를 충족시켜주는 것이다.

ASUS의 P5E3는 운영체제로 부팅하지 않고, 컴퓨터만 켜면 바로 웹 서핑이 가능하도록 해준다. 비단 웹 서핑뿐만 아니라, 스카이프, 웹 기반 메신저들도 사용할 수 있다.

이러한 고민이 웹을 더 발전시킨다고 생각한다. 정말로 사람들이 원하는 걸 만들어내는 것. Joel의 글에서도 볼 수 있듯이, 사용자들이 환호하는 것은 flickr, delicious, picasa, tripit, ebay 등이지 정말로 어려운 기술이 어떻게 되었건 그들의 삶과는 상관이 없다.

웹이 최고이고 모든 것이 다 웹으로 가야한다고 생각하진 않는다.
하지만 정보의 접근성이라는 측면에서 웹으로 옮겨지면 좋은 것들이 많이 있다고 생각한다. 그런 면들을 잘 활용해서 우리의 삶을 더욱 편리하게 만들려는 고민이 많이 이루어져야 한다.

tagged with  
이름 :
비밀번호 :
홈사이트 :
비밀글 :
살려주오 근무시간이 너무 길어 뷁
아무리 하드코어로 일하는 나지만 이건 너무하잖아!!

MoDOT 정규 근무시간 아침 7시부터 오후 4시 반
State Surge 근무시간 오후 6시부터 저녁 10시 혹은 잠들기 직전

샌프란에 한 번 놀러 갔다왔더니 State Surge 일이 너무 많아졌어 -_-
갑자기 "QA 는 이제부터 니 책임이다. 니가 다 해라." 라고 하다니!!
그러고서 "우리 4~5명 정도 프로그래머 더 고용할 생각이야" 라니!!!

결코 새로 고용된 프로그래머가 나보다 경력이 적지 않을텐데 말이지. 그럼 엄청나게 생산되는 코드를 내가 다 검사해야하는 건가!!

현재 실제로 사용중인 코드들도 이미 충분히 sql error를 양산해주고 있다고 -_-;

일이 많아지면 QA 한 명 내놓으라 그래야지.

오늘도 일에 파묻혔다.
기껏 지원한 회사는 해당 포지션을 안 뽑기로 했다고 하고. (분명 돈도 엄청 들여서 여기저기 웹사이트에 올렸을거면서)
monster.com에 구직 하나 올리는 비용은 4~5만원 정도인걸로 기억한다.

'On the Web' 카테고리의 다른 글

웹 혁신을 위한 동력  (0) 2008.08.17
순수근무시간  (0) 2008.08.14
다양한 프로그래밍 언어에 대해서  (5) 2008.07.22
프로그래머를 격려해주는 소프트웨어 팀  (3) 2008.06.29
이름 :
비밀번호 :
홈사이트 :
비밀글 :
현재 프로그래밍 언어로 ASP.Net+C#, Java, PHP, Javascript+XML (for Yahoo Widget) 을 사용하고 있는데, 요즘 드는 생각은 "다 그게 그거 같다" 문법과 용도가 다를뿐 결국 다 같아보인다. 물론 툴도 다르고 함수도 다르고 곳곳이 다르지만, "뭉뚱그려 생각하기"를 잘하는 Asian으로서는 다 그게 그거 같아 보인다는 것.
프로그래밍을 짜는 핵심은 결국 같은게 아닐까? 그게 가장 중요시 되는거지, 세세한 문법 자체는 큰 차이를 보이지 않는거 아닐까? 프로그래밍을 잘한다는 건 프로그래밍하는 습관이 좋다는 게 아닐까? 실용주의 프로그래머는 단지 하나의 언어만을 잘하는 사람이 아니듯이.
아직 초보 개발자라서 이런 생각이 드는 걸지도. 나중에 중급에 올라가게 되면 프로그래밍 언어간의 차이점을 잘 알게 되면 다른 생각을 할지도 모르지만, 현재로서는 비슷해 보인다. 그래서 다른 언어를 사용하는데에 별 두려움도 없고.
tagged with  프로그래밍언어
wrote at 2008.07.24 01:39 신고
일단 저는 프로그래머가 아니지만, 공감합니다.
한편, 앞으로 경험이 쌓이면서, "프로그래밍 언어는 다 같은 거다."와 "이 언어는 다른 것과 달라."를 시계추처럼 오가지 않을까 싶습니다.
마치 "바로 이 여자야."와 "여자는 다 똑같아."를 오가듯이 말이죠.
wrote at 2008.07.27 01:26 신고
그걸 제 철학에 비유하자면, 역시 경험은 많을 수록 좋다고 생각해요. 해보지 않고는 어느 쪽이 좋은지 알 수 없으니깐요.
wrote at 2011.01.31 19:19 신고
ㅋㅋㅋ 나도 요새 회사에서 새로 php를 하고 있어
니말대로 언어라는게 도구더라구 ㅋ
wrote at 2011.02.04 06:11 신고
흠...내가 이런 글도 썼구나. 요새는 다른 툴 사이의 차이점을 이해하기 시작했어.

프로그래밍 대회 하나 참가하는게 있는데, 3문제 중에 하나를 파이썬으로 짰더니 시간 초과했어 -_- 다 풀고서 0점 맞았다 ;;
wrote at 2011.04.26 16:10 신고
헐.... 개발하는데 오래 걸려서? 아님 느려서?
이름 :
비밀번호 :
홈사이트 :
비밀글 :
사용자 삽입 이미지

from http://www.modot.org/widgets/
지난 며칠간 만든 위젯들.
내가 이 일을 할당받았을 시에는 다른 사람들이 구글 가젯으로만 만들고 있었는데 (가젯: 특정 웹사이트에만 붙일 수 있는 위젯, 위젯은 어느 곳에나 붙일 수 있다.) 위젯으로도 만들 수 있을 것 같아서 의견을 제시했더니 "할 수만 있다면 마음껏 해봐라"라고 해주었다. 이것저것 시도해보다가, WidgetBox로 몇 개 만들어봤는데, 잘 나와서 내가 만든 위젯이 홈페이지에 올라가게 되었다. (신난다!!)
근데 이것보다 더 좋았던 것은, 본인들도 분명 내가 위젯을 만들기 전에 구글 가젯으로 이것저것 많이 만들어놨음에도 불구하고, 나에게 모든 공을 돌려줬다는 것이다. 들어온지 겨우 2주 된 인턴에게 모든 공을 돌려줘서 매우 고무되었다.
그 후에 만든게 오른쪽 하단에 있는 구글 가젯인데 (위젯으로 변환시켰다) WidgetBox는 탭을 지원하지 않아서 구글 가젯으로 가서 만들었고, 물론 이번에도 "네 무대이니 네 재량껏 만들어봐라."라고 지원해주어서 하루 종일 뚝딱 뚝딱해서 위젯을 만들어내었다. 이 놈의 가젯이 안 좋은게, 가젯 API를 제공해주어서 편하게 만들 수 있긴한데, HTML 소스로 내려가서 직접 편집을 할 수 없어서 꽤 고생했다. 탭을 만드는건 쉬웠는데, 탭 위에 로고 그림을 붙이기가 쉽지 않았다. 구글 가젯 만들고, publish 한 뒤에 Firebug로 Tab이 속해 있는 <DIV>이 어떤 ID를 가지고 있는지 확인해서 다시 소스로 돌아와서 그 <DIV>을 ID로 찾아내서(getElementByID) DOM object 만져주는 함수로 변경했다. 이 놈이 웃긴게 직접 HTML을 삽입하면 탭 기능이 죽어버린다. 탭 안의 내용이 정적인 데이터가 아니라 RSS로 받아오는 동적 데이터라서 이래저래 번거로웠다.
눈에 거슬리는 구글버튼과 Gadget powered by Google을 떼버리려다가 Terms of Agreement에 어긋나길래 가만히 냅두고, 버튼 하나 만들어서 위젯을 퍼갈 수 있게 만들어 두었다.

또 하나 더 좋았던 건, 이 위젯을 만들기 시작하면서 Cheryl, Randy라는 동료를 처음 만났는데, 와서 내 15인처 모니터를 보더니 (모니터는 작아도 컴퓨터는 무척 빠르다) 너 이런 모니터로 어떻게 작업하냐 첫날 당장 19인치 모니터를 신청해주어서 3일만에 19인치 모니터로 바꿨다. 물론 수퍼바이저의 허락이 필요했는데, 수퍼바이저도 전혀 문제 없이 기꺼이 허락해주었다

간단한 일임에도 동료들이 적극적으로 지원해주고 마음껏 만들어볼 수 있게 해주어서 즐겁게 만들 수 있었다.

tagged with  인턴쉽
wrote at 2008.06.29 13:45 신고
이거 올려놓은 주소도 달아주면, 사람들이 좀더 좋아하지 않을까요?
wrote at 2008.06.30 02:38 신고
링크했어요 ^^
wrote at 2011.01.31 19:19 신고
하악 멋있어~ 몇년 글이긴 하지만 ㅋㅋㅋ
이름 :
비밀번호 :
홈사이트 :
비밀글 :
*1  *2 
count total 268,318, today 1, yesterday 8
달력
«   2018/12   »
            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          
알립니다
I am
분류 전체보기
일상다반사
책 리뷰
On the Web
무술 수련
About me
꼴지 동경대를 가다를 통해..
글 보관함
2011/03, 2011/02, 2010/12, 2010/11, 2010/09,
rss