WizardFactory / BlogSyncer

one write posting all of the world
Apache License 2.0
3 stars 10 forks source link

JUS-48 frontend에 posts를 전달할때 분할하여 전달하도록 개선 #32

Closed kimalec closed 9 years ago

kimalec commented 10 years ago

backend에서 frontend에 posts를 전달할때, 전체 모두를 전달하고 있음.

20~100 사이로 제약하여 전달 필요가 있음.

kimalec commented 9 years ago

https://github.com/WizardFactory/BlogSyncer/commit/7d9e92774630f1b69e6385b6daa11492d1cb4510

https://github.com/WizardFactory/BlogSyncer/commit/85fc835ee2151864c6276ce3887f5179458722e4

https://github.com/WizardFactory/BlogSyncer/commit/39afdef4ffa0a2db9f842dd9c49a3744019deefc

https://github.com/WizardFactory/BlogSyncer/commit/666f705defe3896064ac865596c8700e366bae20

kimalec commented 9 years ago

Sean Kim added a comment - 21/Oct/14 8:24 AM wordpress에 테스트 글 20개 추가 등록 20개로 제약할 생각 (추후 변경 가능) 최신 20개에 로드 후 more버튼 또는 스크롤, 터치가 20번째 글에 도달시에 최신 21~40번째 글을 요청함

Sean Kim added a comment - 21/Oct/14 9:08 AM init시에 startNum과 요청할 reqCnt를 전달한다. startNum과 reqCnt를 가지고 DB에서 data를 가져온후 각 post들을 요청후 렌더링 totalReqNum을 전역으로 가지고 있고, more 클릭시 startNum = totalReqNum + 1을 하여 요청한다. 남아 있는 요청한 개수가 20개가 안되는 부분에 대한 처리 필요함

Sean Kim added a comment - 24/Oct/14 9:41 AM controller.js에서 reqStartNum, reqTotalNum 추가 blogRoutes.js에서 /posts/뒤에 reqStartNum과 reqTotalNum을 받아 blogBot. getPosts 로 넘김 findPostDbByUser대신 findPostDbByUserWithNum로 대체예정 파일로 저장된 DB를 mongodb에서 20개씩 가져오는 방안 마련해야함 nosql은 무엇인가? select로 하면 쉬울텐데... 먼가가 더 있겠지.... nosql을 공부해야겠음.

Sean Kim added a comment - 28/Oct/14 9:13 AM user로 postDB 찾은후 startNum과 totalCnt를 이용하여 frontend로 전달할 funciton 생성성 첫번째는 모아보기에서는 에러남() 두번째 부터는 동작함. 왜 그렇지 디버깅해봐야겠음

Sean Kim added a comment - 29/Oct/14 9:30 AM frontend에 more 버튼 생성 ng-click으로 requestMorePosts function으로 연결 첫번째 request 20개를 요청한 후에 성공적으로 가져온 데이터 개수를 startNum에 더하여 more버튼 클릭시 요청한다. 첫번째 모아보기시 나는 에러 동일하게 나타남. 이것부터 수정해야겠음...

TypeError: Cannot read property 'id' of null
    at http://www.justwapps.com/javascripts/controller.js:225:64
    at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:7976:11
    at wrappedCallback (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:11408:81)
    at wrappedCallback (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:11408:81)
    at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:11494:26
    at Scope.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:12518:28)
    at Scope.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:12330:31)
    at Scope.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:12622:24)
    at done (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:8234:45)
    at completeRequest (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:8439:7) angular.js:9899(anonymous function) angular.js:9899(anonymous function) angular.js:7246wrappedCallback angular.js:11411wrappedCallback angular.js:11408(anonymous function) angular.js:11494Scope.$eval angular.js:12518Scope.$digest angular.js:12330Scope.$apply angular.js:12622done angular.js:8234completeRequest angular.js:8439xhr.onreadystatechange angular.js:8378
Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: post in posts, Duplicate key: object:null
http://errors.angularjs.org/1.2.17/ngRepeat/dupes?p0=post%20in%20posts&p1=object%3Anull
    at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:78:12
    at ngRepeatAction (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:20241:20)
    at Object.$watchCollectionAction [as fn] (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:12230:13)
    at Scope.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:12357:29)
    at Scope.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:12622:24)
    at done (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:8234:45)
    at completeRequest (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:8439:7)
    at XMLHttpRequest.xhr.onreadystatechange (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:8378:11)

Sean Kim added a comment - 30/Oct/14 9:17 AM 위의 에러는 postDB를 구성하는데 약간의 term이 있거나, postdb의 posts의 object가 undefined되어서 생긴 에러 mongo DB로 변경된후 확인 필요 more에서 나오는 에러는 버그임 수정중... reqStartNum 계산 miss 수정 more 버튼 클릭시 20번째부터 20개 요청시 문자열로 인식되어 2020개 긁어오는 버그 수정 Sean Kim added a comment - 01/Nov/14 9:09 AM more 버튼을 누르면 로그상에는 나머지 20개(20개가 안되면 남아있는 개수)를 정상적으로 가져오지만 화면에 출력이 안됨 scope.appy적용후 화면이 나올때도 있으나 아래 에러 발생

Error: [$rootScope:inprog] $digest already in progress
http://errors.angularjs.org/1.2.17/$rootScope/inprog?p0=%24digest
    at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:78:12
    at beginPhase (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:12826:15)
    at Scope.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:12615:11)
    at http://www.justwapps.com/javascripts/controller.js:231:32
    at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:7976:11
    at wrappedCallback (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:11408:81)
    at wrappedCallback (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:11408:81)
    at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:11494:26
    at Scope.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:12518:28)
    at Scope.$digest (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.17/angular.js:12330:31) 

Sean Kim added a comment - 03/Nov/14 9:40 AM 요시미티로 업그레이드후 Port Forwarding 이 안되는 버그 발생 (개발환경 상에서) pfctl을 통해 port forwarding을 할 수 있음 https://gist.github.com/kujohn/7209628 more 버튼 클릭시 $digest already in progress $timeout으로 해결 - $timeout에 대한 정확한 이해가 필요함 Sean Kim added a comment - 04/Nov/14 9:15 AM commit을 위한 정리 각 post별 reply 얻어오는 부분 function으로 분리 merge 후 aboting

KwangHo-Kim-ui-MacBook-Pro:BlogSyncer mis2010$ git merge BlogSyncer/master
Updating 21f7a63..cb6f709
error: Your local changes to the following files would be overwritten by merge:
public/javascripts/controller.js
routes/blogbot.js
Please, commit your changes or stash them before you can merge.
Aborting

아래 사항 commit 후 정상 conflict

module.js:340
    throw err;
          ^
Error: Cannot find module 'mongoose'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/Users/mis2010/workjs/BlogSyncer/app.js:29:16)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)

sudo npm install mongoose 로 mongoose npm 설치 connection 에러 발생

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: failed to connect to [localhost:27017]
    at null.<anonymous> (/Users/mis2010/workjs/BlogSyncer/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:549:74)
    at emit (events.js:106:17)
    at null.<anonymous> (/Users/mis2010/workjs/BlogSyncer/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection_pool.js:150:15)
    at emit (events.js:98:17)
    at Socket.<anonymous> (/Users/mis2010/workjs/BlogSyncer/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/connection.js:533:10)
    at Socket.emit (events.js:95:17)
    at net.js:440:14
    at process._tickCallback (node.js:419:13)

mongod 실행후 앱 동작하나 모아보기시 아래 에러팝업 발생

Error: <!DOCTYPE html><html><head><title></title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Cannot read property '0' of undefined</h1><h2></h2><pre>TypeError: Cannot read property '0' of undefined
    at Function.BlogBot.findPostDbByUserWithCnt (/Users/mis2010/workjs/BlogSyncer/routes/blogbot.js:56:20)
    at Function.BlogBot.getPosts (/Users/mis2010/workjs/BlogSyncer/routes/blogbot.js:634:26)
    at Object.handle (/Users/mis2010/workjs/BlogSyncer/routes/blogRoutes.js:50:21)
    at next_layer (/Users/mis2010/workjs/BlogSyncer/node_modules/express/lib/router/route.js:103:13)
    at Route.dispatch (/Users/mis2010/workjs/BlogSyncer/node_modules/express/lib/router/route.js:107:5)
    at /Users/mis2010/workjs/BlogSyncer/node_modules/express/lib/router/index.js:205:24
    at param (/Users/mis2010/workjs/BlogSyncer/node_modules/express/lib/router/index.js:286:14)
    at param (/Users/mis2010/workjs/BlogSyncer/node_modules/express/lib/router/index.js:298:16)
    at param (/Users/mis2010/workjs/BlogSyncer/node_modules/express/lib/router/index.js:298:16)
    at Function.proto.process_params (/Users/mis2010/workjs/BlogSyncer/node_modules/express/lib/router/index.js:314:3)</pre></body></html>

this.users.length 가 0이 들어옴 왜 그런지 파악해야될 것 같음

Sean Kim added a comment - 05/Nov/14 9:33 AM BlogBot.start가 실행이 안된 것으로 보임 this.users.push(userInfo);가 실행이 안되어서… “start BlogBot” log가 보이지 않음 merge 하기 전의 정상 로그

info: Run BlogBot Task users=0
info: Run BlogBot Task users=0
debug: profile:{"provider":"Wordpress","displayName":"khkim2010","_raw":"{\"ID\":69256753,\"display_name\":\"khkim2010\",\"username\":\"khkim2010\",\"email\":\"khkim2010@gmail.com\",\"primary_blog\":72408697,\"language\":\"ko\",\"token_site_id\":72408697,\"token_scope\":[\"\"],\"avatar_URL\":\"https:\\/\\/1.gravatar.com\\/avatar\\/798a2e28b590ceb74754a210d91e5864?s=96&d=identicon&r=G\",\"profile_URL\":\"http:\\/\\/en.gravatar.com\\/khkim2010\",\"verified\":true,\"email_verified\":true,\"site_count\":1,\"visible_site_count\":1,\"meta\":{\"links\":{\"self\":\"https:\\/\\/public-api.wordpress.com\\/rest\\/v1\\/me\",\"help\":\"https:\\/\\/public-api.wordpress.com\\/rest\\/v1\\/me\\/help\",\"site\":\"https:\\/\\/public-api.wordpress.com\\/rest\\/v1\\/sites\\/72408697\",\"flags\":\"https:\\/\\/public-api.wordpress.com\\/rest\\/v1\\/me\\/flags\"}}}","_json":{"ID":69256753,"display_name":"khkim2010","username":"khkim2010","email":"khkim2010@gmail.com","primary_blog":72408697,"language":"ko","token_site_id":72408697,"token_scope":[""],"avatar_URL":"https://1.gravatar.com/avatar/798a2e28b590ceb74754a210d91e5864?s=96&d=identicon&r=G","profile_URL":"http://en.gravatar.com/khkim2010","verified":true,"email_verified":true,"site_count":1,"visible_site_count":1,"meta":{"links":{"self":"https://public-api.wordpress.com/rest/v1/me","help":"https://public-api.wordpress.com/rest/v1/me/help","site":"https://public-api.wordpress.com/rest/v1/sites/72408697","flags":"https://public-api.wordpress.com/rest/v1/me/flags"}}}}
debug: Fail to find user by provider
debug: userdb: createChild of user=1
debug: user:{"id":1,"providers":[{"providerName":"Wordpress","accessToken":"3Y2%8#poJbJa%&&j8Jv%M5!C*82Je1wAeWJ^VK%09F8fM3tOmEY!mlLBq9^LvK^e","providerId":72408697,"displayName":"khkim2010"}]}
debug: start BlogBot
debug:  sites=[]
debug: find or create blog db of user 1
debug: url=http://www.justwapps.com/Wordpress/bot_bloglist?providerid=72408697&userid=1
debug: Successful!

현재에러 로그

debug: Found user of pName=Wordpress,pId=72408697
debug: Successful!

isNewProvider가 false가 되어 blogBotStart가 호출되지 않음

Alec Kim added a comment - 06/Nov/14 6:30 AM 이거 원래는 postdb를 저장되면서 같이 움직어야 하는 겁니다. 그러니깐 시나리오상으로 새로운 user이거나, provider 가 추가될 경우에만 postdb를 업데이트 하게 되어 있습니다. userdb를 삭제하거나, 임시로 isNewProvider를 항상 true로 해두고 test하면 될겁니다.

Sean Kim added a comment - 06/Nov/14 9:32 AM 11/6일에 반영된 부분 Merge후 기존 코드 수정반영 isNewProvider true로 반영하니 Blogbot이 스타트 됨 하지만 postDB에 저장되는 루틴이 추가되지 않아 확인 불가 이전 fileDB일시에는 확인했음 post를 postDB에 연동후에 pull Request 해야 될 것 같음 JUS-48 : frontend에 posts를 전달할때 분할하여 전달하도록 개선

Sean Kim added a comment - 07/Nov/14 9:25 AM 강제로 isNewProvider를 하여 같은 user가 하나더 생겼음.(findDbByUser시 for문을 두번 돔) db상에서 userid와 blogID가 동일하다면 기존에 덮어써야될 것 같음 db.users.drop()으로 정상동작함 isNewProvider 를 강제로 true한 코드 삭제 pull request 던짐 ( SeanKim2에 push된 3개의 commits) aleckim heroku에 반영되어도 정상적일지 review 부탁드려여. 혹시나해서

Sean Kim added a comment - 16/Nov/14 12:48 AM heroku에 반영되었으므로 resolved

Sean Kim added a comment - 16/Nov/14 12:50 AM JUS-71 에서 more버튼 없이 스크롤로 more기능 진행