728x90
반응형
- 2023-05-18: Ver. 0.8.0.
- 2023-03-12: Ver. 0.7.5.
- 2022-07-12: Ver. 0.5.3.
- 2021-04-19: Ver. 0.3.0.
- 2017-07-04: Ver. 0.1.11.
- 2015-02-07: Ver. 0.1.10.
- 2014-08-29: Log-in page.
로그인 없이 multireco mode 들어가면, 별점 줄때 "로그인이 필요합니다." 메세지 보내고 로그인 페이지로 보내기. 추가로 로그인, 가입 후 바로 원래 multireco mode 페이지로 돌아올 수 있도록 만들기.
로그인, 세션 풀리는 이유 알려주기. (보안에 문제될라나?) desc 작성할때도 미리보기 보여주자? (이거 key value 로 나눠서 업데이트 된 부분만 refresh 하도록.) Recos 가져올때 갯수제한을 1000개 정도로 잡을까? 너무 한꺼번에 엄청 많이 요청하면 안좋긴 할테니... (그런데 나눠서 보내는데 드는 computic power (substring(0, end1000) 같은 명령어가 필요할텐데, end1000 을 기록해두면 빠르긴 하겠지만 이거 기록하는데 new reco, del reco, edit reco 등에 모두 end1000 update 하는 코드도 넣어야 함.) 생각하면 그냥 다 보내주는게 더 싸게 먹힐것도 같은데...) 그 이후꺼 가져올때나 검색할땐 버튼 누르도록. (검색이 javascript 단에서 할때가 있고, server 단에서 할때가 있고 할듯?)
: uri title 만 가져오고 나중에 전체 data 를 가져오는 방법도 있음. desc : bring, copy user_I 뭐 이런 명령어 만들어서 다른 사람 description 가져오기. (이거 생각보다 까다롭네. 유저가 이해하기 쉽도록 동작을 해야 하는데...)
desc statistics 를 만들어서 처리할까? 그냥 hard copy 가 나을듯 여러 면에서.. (수정도 쉽게 되고, 통계도 내기 쉬울듯? Format 화를 해서 사소하게 틀린 desc 는 하나로 통합되어서 stat 이 나와야 함.) 각 계정이나 IP 별로 request 가 얼마나 들어왔는지, traffic 을 얼마나 썼는지 등을 알아내고 저장해서 하루에 너무 많은 traffic 을 쓴 경우 접속을 차단합시다. (DDOS 공격 차단?) 이미지 URI 이후 해쉬값까지 가져오기? (페이스북/구글이 불펌을 막는 방법인듯. 어차피 hash 값도 계속 바뀔거 같아서 의미가 없을듯.) Reco edit/delete 할 때, last update date 확인해서 다른 창에서 edit 가 이루어진 뒤 다시 edit request 가 온거면 확인창 띄우도록 디자인해야 할듯. 외부로 퍼갈때 cat onclick 이나 twitter, facebook 공유 이런게 다 제대로 동작하도록 하는 html code 쏴주기? UriList 순서 바꿀때, text 형태로 sublimetext 처럼 drag 이후 ctrl+shift+위아래 화살표로도 이동되도록 해볼까? 다른 text 편집키는 다 preventDefault() 로 막고. 몇가지만 키가 먹히도록 디자인? Youtube list 에서 중복 v 가 안들어가도록 처리? 이건 유투브 재생될때 reco 같이 보여주는거 하면서 하면 될듯? 현재 열린 cat 이 catList 에서 스크롤 바깥에 있을때 중앙으로 (? 그냥 in view 로?) 옮겨오기? catList 에서 subCat 들 padding-left 형식으로? 줄바꿈이 일어나면 왼쪽 맞춤이 깨지네. img 이거나 video 인데 URI 가 ".jpg/.mp4" 이렇게 안끝날때도 처리하는 방법을 만들어 놓을까? Toggle ES (Expand/Shrink) 버튼 만들까? 전체 ES 를 toggle 하는 버튼. Twitter 처럼 새로 업데이트 되는 reco 들 있으면 받아서 page 도 업데이트 해줄까? 주기적으로 server 에 update 된거 있는지 요청을 보내야 하는듯? (이건 급한것도 아니고 필수요소는 아니니..) FileMapWithVar 의 경우 variable 먼저 처리하고 이 처리한 곳 안에 lang 관련 대체할 것들이 있으면 또 대체하도록? 이거 뭔가 복잡해져서 효율이 안나올것도 같고? jquery 나 여러군데에 쓰일 code 같은 경우 [--jquery.js--] 같은걸로? 브라우저에 cashe 되어 있을 경우 다시 요청을 안보내긴 할텐데... 어떻게 해놓는게 더 통신비용을 절감시킬래나?
: 이거 그냥 구현해 놓은뒤에 쓰고싶은 방식대로 선택해서 쓰면 될거 같긴 함. 바로바로 reco 가 되는 페이지 들도 만들어봐야 할듯? 평가하고 싶은 리스트들을 주르륵 나열해놓고 한꺼번에 점수를 매긴다음 한꺼번에 reco 하는 식으로. 남의 페이지에서 reco 를 가져오는게 아주 간단하게 이루어지지 않아서... 하나의 cat 안에 UriList 가 너무 많아지면 어떻게 처리할까나? (나중에는 문제가 커질듯도 한데... 해결하긴 해야할듯.) defaults 불러올때 "ORDER BY `count` DESC LIMIT 5" 형태로 매번 불러오는건 느릴것도 같은데, def update 할때마다 top 5 만 따로 저장해놓으면서 update 할까나? (동작은 당장 하니까.) subCats 안의 UriList 들까지 모두 보여주기. CatList 에서 cat 이름 바꾸기 가능하게? (이거 javascript 로 대부분 처리해놓고, reco/put 에 명령어 주르륵 보내면 될듯? 더 복잡해질라나? 그냥 changeCatName 으로 보내서 따로 server 에서 처리하는게 더 나을듯? 이건 대따 복잡할거 같으니까 천천히 생각합시다.) recentRecoers : "text" 로 저장할게 아니라 "bigint" (long) ArrayList 같은 byte 로 저장해야 더 속도가 빠를듯??? fixed video 가 붙으면 sidebar (in Phone view) 가려지지 않도록 위에 padding 될만한거 붙이기? HOME 각 cat 별로 최근 recoes 3개씩 뽑아내기? Merge 관련해서도 생각해봐야 할때인듯. (youtube 같은 pattern 형식도 있을테고, 그닥 패턴이 없은는 URI 도 같은걸 가르킬 때가 있을듯. 언제라도 해결하긴 해야할듯.) Reco comment 에 up/down vote 가능하게... Up 이면
sumSim+=120; nSim++;
120 은 너무 많은가? Down 이면 sumSim+=0; nSim++;
이러면 될라나? 이거 따로 기록해둬야 나중에 이 factor 수정하기 쉬워질거 같긴한데... Cats 별로 다 따로따로 up/down 이 되어야 해서... 더 복잡해지기만 할듯도 하고. 중간에 error 없이 잘 계산되었는지 확인하려면, 기록이 되어있긴 해야할거 같고. 고민 좀 더 해봐야 하겄네.
### Users and Contents
어떤식으로 database 를 구성할지 계속 고민해 봐야 함.
특히나 user 쪽은 어떻게 보안을 향상시킬지를... Log 만 기록해 놓으면 무작위식으로 로그인 시도하는걸 못막을거 같고, 비번이 연속해서 5번 이상 틀리면 로그인을 막아놓고 이메일 확인을 다시 시킨다던지.
로그인 시도들 (실패한 것들 포함) 볼 수 있는 페이지를 만들어야 할듯. '다음'에서 제공했던것도 같고...
### Account/settings page
프로필 편집, 암호 바꾸기, 아이디 바꾸기 등 Settings 페이지도 만들어야 함.
### List up (ideas)
우선 순위 정하는거 까다롭다. 전체적인 그림도 봐야하고, 먼 미래에 어떤 모습이 되어야 하는지도 생각하느라 ㅡ,.ㅡ;;;; 막상 결과물을 빠르게 보여주려면 가장 핵심적인 부분에 집중해서 우선 코딩을 해놔야 하는데, 코딩은 시간/노력이 많이 드는 일이라... 진도가 느리게 느껴지네.
그래프를 예쁘게 보여줘야 함. 전체 평점 분포랑. 내 neighbor 의 평점 분포랑. 평균치는 안보여주는게 나을지도?
그냥 내 reco points 가지고만 neighbors 를 찾기보단 내가 좋아하는 사람을 선택할수도 있게 해줘야 할듯? 괜찮은 reco comment 에 추천을 해주는 식? 그리고 서로 소통도 되게 해야 함. reco comment 에 댓글 식으로 반응이 보여야 할듯? 내 reco 가 얼마나 퍼졌는지도 숫자로 알려주면 좋겠고... 얼마나 많은 사람들이 봤는지도 느끼게 해줘야 할 듯 싶고.
내게 reco 가 오면 그 사람의 카테고리로 가서 전체적인 것들을 볼수도 있게 해줘야 할듯? MAMA 영상이 추천이 들어왔는데, 다른 영상들도 궁금하다. 이러면? MAMA 영상을 다 정리해 놓은 사람도 있을테니 그 사람의 music--MAMA category 화면을 보여주는 식. 아님 이 URI 자체를 추천을 주던가? 추천이 왔을때 몇 사람의 reco 가 나에게 보여질테니 그 reco 의 categories 에 a link 가 있어서 찾아갈 수 있게하면 될듯?
FinTech 도 접목시키자? 개인적인 경제 철학을 간단하게라도 보여주면 좋을듯? DailyPoints 같은 게임적인 요소도 좀 넣고...
소통을 이어주는 것도 중요한 목표라서. reply table 도 만들어야 할듯? 다른 사람의 comment 에 연쇄적인 reply 로 chat 이 가능하게? 해당 URI 에 대한 반응들은 recent recoers 가져와서 보여주면 되겠고. 뭐 해당 URI 의 글쓴이에게 궁금한 것이나, 이 URI 에 관심있는 다른 사람들에게 무언가를 물어볼수도 있을테고... 이럴 경우 내 reco 만 정리해 놓는걸로는 부족할듯하니까.
plug-in, widget: 이건 다른 문서에 좀 써놓은거 같은데...
docuK 활용한 블로그 서비스까지 통합적으로 제공하고 싶긴한데... (디자인은 다양화 되어야 할듯. 너무 획일적이면 매력이 없어 ㅡㅡ;;;;)
`#related URIs: 음악 같은 것 저장할때 대표 youtube URL 로 reco URI 를 저장하고 comment 에 #related tag 로 관련된 URI 들을 한꺼번에 저장할 수 있게 해야할듯? (특히나 중복해서 평가하고 싶지 않을 경우 이런걸 활용하면 좋을듯 함. Server 에서는 자동적으로 해당 related URIs 에 대한 reco 를 subCat (predesigned: --) 에 저장하면 좋을듯.) related URIs 들도 동영상은 쏴주는게 좋겠고. SubCat 내에서 새로운 추천이 떴을때 찾아주는 기능도 괜찮을거 같고...
기업/벤쳐에서 to do list 같은 것들도 이렇게 저장해놓으면 괜찮을듯도 하고... 공개해도 되는 것들만. (비공개 옵션은 github 처럼 돈받고 팔까?) 중요도를 개개인이 평가할 수 있을테니, 통계내기도 좋고. 어떤 동료가 나랑 비슷한 평가를 했는지도 알 수 있고. 같이 공유되는/합의된 의견은 description 에 넣고, 개인의견은 comment 에 넣는 식으로...
##[.hiden] Done (애ㅜㄷ)
### 정리하기 전
유튜브 타이틀 안 긁어지는 거 해결해야 함
뉴 레코 카테고리 아래 마진 주기
```
A client has connected!: 32
Time: 2024-08-13 00:01:36
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
User-Agent.length: 111
Referer: https://recoeve.net/user/kipid/mode/multireco?cat=[IT/Programming]--코딩 테스트 (Coding Test)&PRL=0.80&PRR=1.00
userId: kipid
Referer Host: recoeve.net
Referer Allowed: true
query: null
Method: POST
Absolute URI: https://recoeve.net/reco/getH1
User IP: 175.212.158.53:4713
Local Address: 172.31.35.249:443
Session passed?: false
User ID: kipid
Accept-Language:ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Lang: ko
/reco/:toDo :: toDo=getH1
https://leetcode.com/problems/number-of-1-bits/description/
Aug 13, 2024 12:01:37 AM io.vertx.core.impl.ContextImpl
SEVERE: Unhandled exception
java.lang.NullPointerException: Cannot invoke "java.lang.Throwable.getMessage()" because the return value of "io.vertx.core.AsyncResult.cause()" is null
at recoeve.http.RecoeveWebClient.lambda$findTitles$2(RecoeveWebClient.java:177)
at io.vertx.ext.web.client.impl.HttpContext.handleDispatchResponse(HttpContext.java:402)
at io.vertx.ext.web.client.impl.HttpContext.execute(HttpContext.java:384)
at io.vertx.ext.web.client.impl.HttpContext.next(HttpContext.java:362)
at io.vertx.ext.web.client.impl.HttpContext.fire(HttpContext.java:329)
at io.vertx.ext.web.client.impl.HttpContext.dispatchResponse(HttpContext.java:291)
at io.vertx.ext.web.client.impl.HttpContext.lambda$null$7(HttpContext.java:512)
at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:279)
at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:261)
at io.vertx.core.impl.ContextInternal.lambda$runOnContext$0(ContextInternal.java:59)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:173)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:166)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:566)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
```/
OS 별로 파일 위치 다르게 설정하기
클래스 패스 추가하기
Moving to the azure cloud from AWS.
```
// 아직도 로그인 풀림.
A client has connected!: 154
Time: 2024-08-02 08:53:09
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
User-Agent.length: 111
Referer: https://recoeve.net/user/kipid/mode/multireco?cat=[IT/Programming]--국비 지원 코딩/공부&PRL=0.80&PRR=1.00&Go=햣
userId: kipid
Referer Host: recoeve.net
Referer Allowed: true
query: null
Method: GET
Absolute URI: https://recoeve.net/sessionIter
User IP: 175.212.158.53:1773
Local Address: 172.31.35.249:443
Session passed?: false
User ID: kipid
Accept-Language:ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Lang: ko
/:fileName :: fileName=sessionIter
tNow:2024-08-02 08:53:09.0
from:2024-08-01 07:15:41.0
lessThanInSeconds:30240000
result0:false
result:true
iter: Expired.
A client has connected!: 155
Time: 2024-08-02 08:53:09
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
User-Agent.length: 111
Referer: https://recoeve.net/user/kipid/mode/multireco?cat=[IT/Programming]--국비 지원 코딩/공부&PRL=0.80&PRR=1.00&Go=햣
userId: kipid
Referer Host: recoeve.net
Referer Allowed: true
query: null
Method: POST
Absolute URI: https://recoeve.net/account/log-in/remember-me.do
User IP: 175.212.158.53:1773
Local Address: 172.31.35.249:443
Session passed?: false
User ID: kipid
Accept-Language:ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Lang: ko
Error: sW. sH.
rmbdI:
rmbdT:
rmbdAuth:
rmbdToken:
Sended 'Failed' with Set-Cookie of deleting rmbd cookie. (Fail in remembering the user.)
```/
Session 유지 기간을 50주로 늘림.
```
// 로그아웃 되는 현상 로그.
Time: 2024-08-01 07:12:38
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
User-Agent.length: 111
Referer: https://recoeve.net/user/kipid/mode/multireco?cat=[IT/Programming]--국비 지원 코딩/공부&PRL=0.80&PRR=1.00
userId: kipid
Referer Host: recoeve.net
Referer Allowed: true
query: null
Method: GET
Absolute URI: https://recoeve.net/sessionIter
User IP: 175.212.158.53:1325
Local Address: 172.31.35.249:443
Session passed?: false
Accept-Language:ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Lang: ko
/:fileName :: fileName=sessionIter
tNow:2024-08-01 07:12:38.0
from:2024-07-31 06:16:00.0
lessThanInSeconds:604800
result0:false
result:true
iter: Expired.
```/
React 로 간단한 것부터 천천히 다 바꾸기.
Daily-mix 도 ToR 에서 검색 되도록... daily-mix 한계치 두지 말기. (이건 너무 복잡해져서 포기.)
Share a URI through button 으로 reco 할 때, URI 길이가 길면 이상하게 동작.
예시: https://kipid.tistory.com/entry/브라우저에서-자동-비밀번호-완성-Auto-password-completion-일-때-이를-파악해서-바로-로그인-시켜주는-방법
maxMatchScore 계산할때 space, tab, enter 뛰어넘으면서 빠르게 찾기. (효율 극대화.)
뒤로가기 앞으로 가기 눌렀을때, multireco mode toggle 이 제대로 안됨. (제대로 해결됐나? 의문이...)
Space 두개 이상일때 " " 로 교체해서 띄어쓰기랑 코드 블록 같은거 제대로 표현하기. Tab 도 마찬가지로 2 space 처리.
유튜브 포스트 uri handle. 유튜브 계정 페이지도.
단어 외우기 구현하기.
로그인 안했을때나 초기 유저들 용으로 남의 페이지에 갔을때 multireco cats Fuzzy Search list 에 해당 user CatList 도 포함시켜주자. (kipid-catList 도 추가.)
Neighbors mode 에서 multireco mode 로 갈 때 제대로 동작 안함.
font-size 키웠을때, sidebar 가 튀어나와있는 문제 발생함.
/reco?uri=... 같은 uri 일 때, uri 유지시켜주기. New Reco 를 닫으면 그때야 /user/kipid?cat=... 으로 바뀌도록.
Initial open 때 desc 의 #related uriRendered 가 두 번 일어나는듯? Q, W 로 이동시키면 다시 정상적으로 한번만 뜨긴 함. (왜 그랬었는지 잘 파악이 안됨.)
%20 이랑 + 처리가 이상하게 되네? 어거지로 해결하긴 함. 함정이 있을수도 있긴...
단축키 등 설정할 때 e.keyCode (deprecated) => e.code 로 바꾸기.
log-in.html 페이지에서 언어 바꿀때 잘 동작하도록 만들기. (?lang=ko) 같은건 html 파일 불러올땐 괜찮은데, 그 내부에 있는 js 파일 가져올때 lang 을 제대로 인식 못한채 불러옴. 따라서 cookie 를 저장하고 요청하는 방식으로 해결.
Youtube list URI 일 때, ToR click 이랑 Q, W 움직이는게 제대로 동작 안하는듯한... 하나 전꺼가 보이는듯?? (conciseURIs 로 따로 get-Recos 를 해서 어긋난거인듯?)
\#originalURI 가 uri 가 길지 않을때도 생김.
URI 길 때, originalURI 가 제대로 안써지는듯.
Reco edit 해서 새로운 cat 추가하면 반영이 안됨. Uncategorized 를 추가했는데, 새로운 reco 가 안보임.
Reco/Multireco 시 Cats 카테고리 선택방법: 퍼지서치 이용 방법. Delete. Multicategory ";" 구분자.
Initial open 때 cat 옮기면 fs.currentIndex 가 안바뀌는듯?
Go 도 ToR 처럼 query 창 띄우기 가능하게.
URI reset 버튼 추가하기 (다 지워주는)
Page open 하고 바로 reco 하면 reco 된게 제대로 안보이는듯?
자동 넘기기 cookie 에 저장.
새로운 cat 에 reco 할 때, cat 추가가 안됨. "IT--국비 지원 코딩" 일 때 첨부가 안됐음. 그리고 new reco 하면 No reco 라고 뜰때가 있는듯. URI 가 길때 redirect 로 처리되는 URI 가 No reco 로 보여지는듯?
moveAllTo 로 cats 옮기고나면, Point 가 object Object 로 표시됨.
Point range 바꾸면, 첫 ToR 이 클릭이 안되고 이전거가 계속 떠있는듯.
Q, W 로 빠르게 이동시킬 때, youtube 나 기타 링크들의 uriRendering 이 안되는듯? 마지막이나 처음에 갔을때만 rendering 이 안되는듯도... ToR 첫번째랑 마지막일때, Q, W 누르면 setTimeout 걸림.
recoByOnlyStar 할 때 scrollTop play list 로 됨.
youtube-API update from player_api to iframe_api. Youtube js 항상 load 해놓기.
목록에 필터된 모든 레코들 한꺼번에 이동하기. 눌렀을때 $new_reco.show() 로 결과 보여주기.
Sort z-index 올리기.
Move filtered all recos in ToRs to the different cats at once. 결과가 테이블로 보였다가 바로 사라짐. 어딘가 error-msg 를 만들어서 계속 보여주도록 해놔야 할듯. (이거 new-reco 에서 보일듯?)
Session Expired 일 때 다시 제대로 로그인 시켜주기.
Daily-mix 나 Get Recoms 누르면 inListPlay 가 새로고침 됨. m.doFSToRs 를 좀 바꿔야 할듯?
\#start 00:30 #end 03:24 가능하게 하기. 유튜브나 video 일때만 가능할듯?
Multireco mode 일 때, cat 옮기면 loading 이 안됨.
Empty base cat 못하도록 막기.
00:?00:00 seekTo 유튜브 function 실행시켜주기. inListPlay 에서만...
$contents 에도 daily-mix 버튼 누른 뒤면 recoms 가 섞여들어가게 할까나? 이건 하지 말자.
Referer 저장 document.referer 랑 server 에서 referer 체크하는거 둘 다 봐서 적당히 저장하기. Not empty 인걸로...
Daily Mix 에서 reco 하면 selected 가 풀려서 playlist 가 제대로 안돌아감. 처음으로 돌아감.
처음 load 할 때, ToR 이 두번 refresh 되는듯?
Get Recoms 누르면 scrollTop 이 제대로 동작 안함.
Search Lyrics in genius.com 구현.
iframe 삽입 방법설명.
setInterval 로 하면 여러번 호출 됐을때 id 가 계속 바뀌어서 clearInterval 이 마지막 call 것만 멈추게 하는듯. setTimeout 써야 하나?
Point range 조정하면 Z 키 눌리는 scroll 되는듯? (뭐 떄문이었지? 쥐도 새도 모르게 해결됐네.)
Cat UriList 가 남아있어서 그런지, reco delete 를 한 후에도 "1개의 레코가 있습니다."로 뜨는듯? 다 지웠는데도? m.fsToRsInRangeCheck(), m.refreshFSToRs(cat) 살펴봐야 할듯. 의도적으로 안지운거긴 한듯. 그냥 놔둘까?
Stat redirect 안됨. 에러? 뭔뜻이지??? 대충만 적었더니 뭔 에러인지 모르겄넹. (getH1 말하는거면 해결. url redirect 후 BlogStat POST 하는거여도 해결.)
Recoms 에 double counting 되는 문제 해결. 같은 유저의 다른 카테고리들, multi categorized 된 reco 의 경우 두 번 이상 count 됨.
Google OAuth2.0 log-in 구현하기. (어렵네 이거...) Sign-up 은 아이디 받아야해서 어려울듯? 가능한가 이것도? 아이디도 받고 auth 도 받아내면서 가입시키는게?
CatList order change 이후 change Cat 이 이상하게 먹힘.
스포티파이 DailyMix 처럼 그냥 list 듣다가 recoms 에서 하나 가져와서 list 재생해주는 등. Recom 이 자연스럽게 들어오도록도 해주면 좋을듯.
Recoms 에 cmt 도 배달 되도록. Sim 이 높은 사람 cmt 부터 주루륵...
Sort 이후 fsGo 가 이상해질거 같은데, update catAndI when sort is saved.
CatList 에 a href="/pathname" 붙이지 말기.
skip false.
파일 in memory 로 CDN 까지 처리.
ToR 에서 아래 위 화살표로 움직일때 selected 가 풀림. (m.currentIndex to fs.currentIndex)
putCats, delCats 가 제대로 동작 안함. 같은 카테고리가 두개가 나타난다던지, 카테고리 클릭이 안먹힌다던지 함.
V=Move filtered all ToRs recos to the different cats at once.
pure 숫자 URI 막기.
FS 에서 ESC 눌렀을때, button-mode removeClass("enabled") 시키기.
영어로 설명하는 영상 찍어서 따로 cat=Manual 만들어서 정리하기.
ToR 바뀔때마다 URL 바꿔주기. ToR=some&lang=..
FS Go 에 두번 fullList 가 push 되는듯?
URI 가 긴 경우 redirect 로 저장이 잘 안되는듯?
Stash 버튼 구현해놓기. Recoms 에서...
Cat 옮겨다닐때마다 ToR 이 켜지는데, 막읍시다. (display:inherit)
copy to clipboard 할 때, alert 로 하지 말고 textarea 로 띄우기.
검색 google 에서 "site:recoeve.net/user/kipid 검색어" 식으로 검색 대신 해주는거 input 만들어 주기.
여러개 uri 놓고서 투표하는거 (예를 들면 카라 엔딩 사진들 모아놓고 어떤 의상이 가장 예뻤는지 점수 메기는식?) 만들어서 홍보에 활용할까? 이게 mode/multireco 일듯.여러 URI 한꺼번에 stat 볼 수 있도록, path=/recostat?uri=... 에서 uri 에 /user/kipid?cat=SomeCat 들어오면 이 SomeCat 에 있는 URI 들 모두의 stat 을 정리해서 보여주면 좋을듯? 너무 많은 URI 를 한꺼번에 통계내면 서버 부하가 클테니 첫 100개 정도의 stat 만? /recostat?uri=... 형태로 접속하면, 해당 uri 에 대한 reco list 들 보여주기. Recentest 순서대로. URI, title, cats, uri rendered, desc, cmts with points/id 등 나열. 말 그대로 statistics of reco on uri=... ads.txt 는 뭐 쏴줘야 하는거지? 어디에 쓰이는거야? 요청이 들어왔었음. Crawling 해서 각 URI 의 title, desc, cats 같은것들 defaults 쏴주기. 첫 recoer 에게 reco 할거 같은 URI 받으면 그때 crawler 가 동작해서 title, desc 등 긁어오면 될듯? (Crawling 하는 법을 아직 몰라서... 배우는데 좀 걸릴듯?) 아래에 있는 레코 올릴때, 삭제 후 리레코 하면 되는데... 이게 순조롭게 안됨. Edit Del 버튼으로 남아있고 ToR 에서도 위치 안바뀌고 등등. 언어별로 한국어는 카카오톡, 일본은 라인, 중국은 WeChat? 등으로 바꿔줘야 할듯도? 미국은 뭐 쓰지? 인스타 다이렉트 메세지 보내는것도 추가. hide recoed ones. Show only unrecoed on mine. (아직 multireco 에서만 동작.) UriList sort : 정렬 가능하도록. Reco title 순서대로 정렬, Reco 한 날짜순으로 정렬. Point/점수 순으로 정렬 등. 오름차순/내림차순 가능하게. (이건 위 아래 화살표 표시해서 버튼 하나로 toggle 되도록 하면 될듯? 구글 스프레드시트 참고.) 정렬 후 Save this order 도 있어야 할듯? path=
/changeOrders/UriList
로 구현.UriList 순서 바꿀때 Set of URIs 가 같은지 한번은 체크 해야함.
중간 몇개만 바꿀때는 substring(start, end) 잡아서 이 내에서만 Set of URIs 체크하고 이 부분만 순서 바꿔서 저장해주는 방식이 되어도 됨. (그런데 이런 경우가 거의 없을거라서... 그냥 넘어가고 다음에 생각하는게 좋을듯?) :: Title 순으로 정렬만 빠졌음. 이것도 하긴 해줘야 할듯? List Play 에 있는 reco 를 수정하면 재생되는게 되돌려지면 안되는데... 뭐가 바꼈길래 이렇게 됐지? (어찌 해결했는지 모르게 해결됐네.) Search recos over multiple cats. 설명서. 구글 spreadsheet 으로부터 multireco 하기. format(URI), format(cats) 등도 제대로 해주면서... 각 reco on a uri 에서 max sim "user cat" 을 골라내야 함. cats 가 multi 일때. (애초에 이렇게 구현 한듯.) m.fsGotoCats.fullList[cat].down 이 제대로 동작 안하는듯? (m.fsGotoCats.fullList[i] 랑 [cat] 이랑 다른걸 가리키고 있는듯?) RecoStat 에 tInitial 저장해 놓고, 최근에 reco 된 것들 위주로만 추천해 주는 기능도 추가. tFirst 가 1년 내의 reco 인지, 일주일 내의 reco 인지, infinite 인지, 1시간 내의 reco 인지 판단해서 골라서 추천해 줄 수 있도록 만들자. (tLast 로 check.) 별 드래그 reco/edit 할 때, list play 쪽에 $(".reco") 도 해당되는 uri 라면 update 해주기. (해줘도 그만 안해줘도 그만인듯한...) mode/multireco 로 접속해도 그냥 mode="" 일때랑 똑같이 load 됨. mode/neighbors 일땐 get-Neighbors 가 잘 동작하는데, 일단 페이지 로딩 된 다음 B 키 누르면 neighbors 가 안보임. (해결 됐나?) Save this order 구현하기. /redirect/ 구현 및 reco response with proper resetting uri, desc... Table of Recos 정렬하기. sort by points desc/asc, sort by title asc/desc. sort by tFirst asc/desc. URI>255 일때 처리를 깔끔하게 해주자. 사용자한테 알아서 하라고 맡기는건 좀 아닌듯. 기본 URI 는 substring(0, 255) 짜리로 cut 하고. desc 의 첫번째 "#originalURI https://.................................엄청긴-URI\n\n\n\n" 추가하거나 해서 해결하면 될듯? 아니다. 이것보단 redirect https://recoeve.net/redirect/[0-9a-f]{16} Long.toString(Long.MAX, 16) 이 몇글자지? 16글자 "7fffffffffffffff" 음수까지 되니까 "fff..."까지. 가사 포멧화하기 (genius.com), Formatting the lyrics (from genius.com) User 의 reco on the URI 가 존재하든 안하든 overwrite, put 은 reco on the URI 가 없을때만 동작, change 는 reco on the URI 가 이미 있을때만 동작.
file:///C:/Recoeve/Recoeve%20progress.html 열리나? Local file 로 열때는 열리는데 upload 하고 블로그에서 열면 안열리는듯?
m.fsGotoCats rehandled.
유튜브, 틱톡, 트위터, 페이스북, 네이버, 다음, 특히 내 레코이브, #related 에 홍보 및 설명서 동영상 올리기. HashTag 도 잘 활용하면서...
subCat 을 처음 열 때 expand 가 안됨. (async await hell 로 해결하긴 했는데... 참 javascript 못나게 동작하는듯.)
ToRs, Go 가 안나타남.
goto-cats 에 onclick, catList .cat 에 onmouseup 설정하기.
duplicate asign??? m.doFSGotoCats saved, m.doGotoCatsFSGo removed.
cat move 에 a href 빼기. (클릭시 이상하게 작동함.)
One Tip: just one or two sentence 로 한가지 팁 랜덤으로? 주기적으로 바꾸면서? 보여주기. (일단 Tip0 해놓긴 했음. 여러개 넣어놓고 random 0~1 돌리고 Math.floor() 로 갯수 맞춰서 돌려 보여주면 될듯?
Go to Cats 에서 m.currentCat selected 처리하기. Load 가 된 cats 들도 색을 다르게 입혀주면 좋을듯.
남의 페이지에서 내 reco 가 보여지는 경우가 있음. (해결 됐나? 뭐 때문이었는지가 정확히 파악이 안되어가지고......)
multi cats 로 수정하면, currentCat 의 ToR 이 update 안되는듯?
Shuffle 이후에 reco 는 ToR 에서 제일 위에 올라가지 않음. (해결한듯? 테스트는 해봐야 됨.)
cats input 한 다음 몇 초 뒤 다시 cats 로 focus 가 호출되는듯???
원래대로 키가 제대로 동작 안함. (뭐 때문인지 모르겠네. localStorage 나 location.search 에 있는게 영향을 주는거 같긴한데... 이건 초반에만 이루어 지는거 아닌가? setInterval 걸려있나 계속?) 이건 에러 확인하기도 짱나네;;; (N count++ 하는게 이상한 if 안에 있었음.)
Multireco mode 에서 아래서부터 위로 갈때, scroll auto 가 잘 안먹히는듯? (수정 해보긴 했는데, 이게 더 잘 동작할래나? $elem.replaceWith() 에서 $elem 이 one parent 를 가지는게 아니라면 $elem.outerHeight() 가 계산이 안되는건가?)
Unrecoed count 해서 알려주기.
#hashURI 로 바로 접근할때, youtube 나 tiktok 이 늦게 load 되면서 scroll 이 살짝 일어나고 윗쪽의 get more recos... 가 click trigger 되면서 의도치 않은 scroll 을 발생시킴. (youtube display:none 제거해서 우선 대충 해결.)
Floating key 에 PRR 이 약간 안쪽으로 되어 있음. (left, width from em to % 로 해결.)
Expand 가 안되어 있음. Reco/Edit 할 때. (해결 됐을듯? id 에 i 대신 cat name 으로 바꿔서.)
Points 오른손 잡이용으로... 그리고 설정에서 왼손잡이 용 CSS 를 구현해서 toggle 해주는 기능 추가하자. (왼손잡이용은 패스...)
PRL, PRR cookie 에 바로 저장시키기.
CatList order 바꾼 다음 cat 클릭하면 이상한데가 selected 됨. (i 가 아니라 cat name 으로 id 설정해서 해결.)
연도별로 노래 정리하기. (알바 시키자. 내가 하니 formatting 같은 프로그래밍도 할 수 있었던듯? 같이 일할땐 뭐가 가장 귀찮은 작업인지, 프로그램밍으로 쉽게 해결되는 건지 소통 필수일듯.)
genius lyrics pattern 파악해서 format 화 시키는거 만들기.
Log-out 과정 UX 향상시키자.
Admin page (user: kipid is admin): Who has signed-up?
Log out from all 하면, 세션이나 리멤버 동작이 이상함.
이웃 없으면 동글뱅이 돌리지 말고 알려주기. (서버에서 에러난거 였음.)
One Tip: just one or two sentence 로 한가지 팁 랜덤으로? 주기적으로 바꾸면서? 보여주기.
$('link[rel="canonical"]') 바꿔주기 cat 이나 mode 바뀔때마다.
/reco?cats=... 있으면 첫번째 cat 으로 m.currentCat open.
h1 이랑 defTitle 겹치면 둘 중 h1 한개만 보여주기.
남의 페이지에 reco 해도 print 됨. m.myPage query 로 해결.
/recostat?uri=... 페이지 만들기.
이웃 자르고 업데이트 하고, 몇달이 지났으면 full scan 다시한번 하고 등등 Neighbor 관리 잘 동작하도록 하기. Computing resource 덜 잡아먹으면서도 추천은 제대로 적당히 잘 동작하게.
Log-out from all devices 구현하자.
New Reco 한건 수정하면 $contents 에서는 변화가 안됨. Edit 해서 desc 수정했는데, $contents 의 .reco 가 수정이 안되어 있음. New reco 한걸 수정한거긴 한데... 왜 안되지?
Cats 가 추가 된 다음. m.fsCats 나 m.fsGotoCats 가 이상하게 동작하는거 같음. 하나씩 밀려서 검색이 된다던지... 김채원 검색했는데, --Links 로 찍힌적이 있음.
```
<div class="cat" id="cat-170" style="margin-left: 1em;"><span class="noEC"></span><a href="/user/kipid?cat=%5BMusic%2FBreak%5D--IVE" class="baseCat" onclick="return m.openCat('[Music/Break]--IVE', event)">IVE</a></div>
```/
\#show-URI 에서 delayed-src 하지 말기. $window.trigger 가 안먹혀서 잘 동작 안할떄가 많음. 아니면 $window.trigger("scroll") 을 쏴줍시다. (setTimeout 써줘야 할수도?)
Youtube 에 list 붙은건 #related 에서만은 toA link 로 만듭시다. rendering 하지말고.
https://www.youtube.com/watch?v=fgmp-x5l2X4&list=PLRuT2fbeGaFaJCwz2V-ItLHs4HjFAam4t&index=2
input_uri 에서도 변형 안되게 자동으로 됨. (신가하게 짜놔서 이게 되네. 나이스.)
desc, cmt 에서 #related 에 빈 엔터 들어가면 undefined 로 뜸 해결하자.
Sidebar toggle 및 $window.on("resize") 시 적절히 동작하게 하기.
틱톡 레코 가능하게.
건강, 과학 cat promoting 에 추가하기.
docuK share to recoeve 에서 m.recoCats 설정해놓으면 cats 도 채워진 링크로 연결되도록.
F, D 로 움직일떄 #HashURI 로 되도록. 지금은 #reco-9 이렇게 동작할때도 있음.
Mail recoeve@gmail.com 으로 바꾸기.
sessionIter 에서 틀리면 cookie 지우도록 addCookie 가 있는거 같은데, rmbdI cookie 로 재도전 할 수 있도록 지우진 맙시다. (이런 구현은 안되어 있는거 같긴한데...)
emptifyRecoInNewReco 할 때, localStorage 도 clear.
AWS TCP 0 port 부터 다 열기.
Promotion/홍보 문구 바꾸고, 편의점 폐기들로도 홍보하기.
BlogStat recoeve.net 에도 적용해서 statistics 분석 합시다.
Reco to mine 에서 points 안채워지는거랑 my reco shown 에서 delayed-src 처리 안되는거 해결하자.
Floating keys Show/Hide 의 short key 설정하기. E=69
To my page 의 short key 설정하기. A=65
Neighbor sim=0 일땐 지워주기.
tScanAll 이 더 최근에 된거 위주로 neighbor, neighborRev update.
user-page.html 에서 getStrOfNeighbors 요청하면 neighbor, neighborRev 두개가 다 오므로 nSim 이 높은걸로 골라서 써야 함.
탈퇴하는 페이지 만들기. (우선 메일로만 요청 받아서 수동처리 하기. 보낸 메일과 user_email 같은지 꼭 확인 후 지우자.)
점수 분포도 보여주기?
Cats 바꾸는거 간단하게 여러개 동시에 쉽게 할 수 있도록 디자인하기.
edit 이후에 $reco.replaceWith($newReco) 가 되어서 그런지, G/T 에서 scroll to reco 가 안먹힘.
Account 부분 만들기. styles (bright/dark, font-size, font-family, line-height, and so on), shortkeys, settings, log-out 등이 들어가야 함. UI 만들어야. (우선 대충 #head 에 집어넣음. log-out, shortkeys 만.)
Server 의 time zone : Universial 로 어느 지역에서 서비스하던지 일치하는 시간 같도록. 그리고 javascript 단에서 time lap 은 바꾸도록?
Session iter 틀리면 log-out 시키기. (Log-out 시키고는 있는데 왜이리 로그인이 자주 풀리지? ㅡ,.ㅡ;;; 유저 경험을 안좋게 만드는거 같은데... 빨리 고쳐야. sessionPassed 일 때만 server 단의 session, auth 지우기로 해결.)
로그인 안한채로 User page 에 왔다면 Account 부분에 Log-in 버튼 만들기. 여기서 back path 가 필요할듯? 오 back path= empty 해놓으면, 로그인 이후 다른 페이지로 이동 안하게 해놓으면 될듯? 이러면 reco/do 같은거에서도 바로 로그인 시키고 하던일 계속 하게 가능할래나?
Timezone 설정해 놓을 수 있게. Language 옆에 버튼 넣어놓으면 될듯. 이것도 Fuzzy Search 도 같이 동작하도록 디자인 하자.
.bright 에서 G/T/C/M 에서 글자 검정인거 해결하기.
추천해주기. Neighbor 통한 추천.
Neighbor userCat 에서 cat=uncategorized, 즉 empty "" 일 때, "\tp" 붙여서 trim() 에 지워져 오동작 하는거 막기. (더 수정해야 할게 있나? 잘 판단이 안서네.)
추천할거 없을때 표시해주기.
멀티레코 모드랑 기본 그냥 클래스만 토글하는걸로...
Get Recoms 일때, $contents 가만 놔두기.
Get Recoms 할 때 원 뺑글뺑글 도는거 로딩중인것 보여주기.
추천 weighted max 값 작게 표시하기.
Multireco recoByOnlyStars 로 reco change 할때, oldCats, newCats 포함관계 잘 설정해서 overwrite (cats is changed.) 되도록 만들기.
Go 이후 filter button 만들어서 Go 에 찾아진 것들만 모아서 보여주도록 만들자?
스트레이 키즈 팬은 스트레이 키즈 노래 먼저 찾아서 reco 하고 싶을텐데 이게 쉽게 되도록??????? (보류. 복잡해지기만 할듯. 이득은 적고.)
HTML 단에서도 multireco with recoByOnlyStars 로 reco 했을때, catUriList 도 바뀌고 다 잘 바뀌도록 디자인. (그냥 reco 할때도 cats 따라서 catUriList 다운 받고 uri 추가해주고 등이 되도록 잘 디자인. catUriList 에서 delete 는 하지 말고 추가만 잘 해주자. 이전 옮기기 전 cat 에서도 우선 recos 가 보이도록. 이게 구현하기도 더 쉽고, 유저 경험도 더 좋을듯?)
기본 모드일때도 남의 페이지에서 내 reco 정보 가져와서 포인트 채워주기.
cat 한번에 다 바꾸는 것도 구현할까? 한개씩 옮기면 sim 계산을 여러번에 걸쳐서 해야 하는데, 한방에 한가지 cat 의 UriList 의 cat 만 전체적으로 바꾸면 Neighbor user_from cat_from user_to cat_to 에서 cat_from, cat_to 만 바꾸면 되긴 하는데... 이건 좀 미루긴 하자. 당장 필요한건 아닌듯. (Multireco mode 에서 점수 바꾸면 한번에 하나씩 바꿀수는 있음.)
Reco 이후 $new_reco 가 안닫혀서 setInterval 해놨었는데... 바꿔야 할듯? 왜 안닫혔던거지?
Multireco mode 에서 cats 를 replace 할지 add 할지 선택 가능하도록 2가지 옵션만 있으면 될듯? 기본적으로 add 가 되도록 만들어 놓자. multireco cats 가 정해지면, 특정 URI 의 reco 가 이 cats 를 기존 cats 에서 더 포함하도록. (보류. 그냥 덮어 씌우는 걸로 통일.)
이웃모드나 그냥, 멀티레코 모드갈때 scrollTop 적당하게... contents?
처음 가입한 사람에게 multireco 할만한 /user/kipid?cat=[Music/Break]--K-Pop&mode=multireco 페이지 같은것들 리스트 카테고리 분류없음에 넣어주고, 그 카테고리 분류없음 페이지 바로 보여주기.
누구의 의견도 들어가지 않은 MAMA 동영상 모음이라던지 이런 페이지도 만들어주면 좋을듯? 평가하고 싶을때가 있을텐데... 다른 누군가가 정리해 놓은거에서 자신이 평가를 하면 뭔가 이 사람한테 영향을 받아서 자신의 평점이나 comment 가 결정될수도 있을테니. 아주 깔끔하게 그냥 영상만 모아서 보여주고. reco 가 쉽게 되도록 페이지를 만들어주면 좋을듯 함. 큰 이슈가 있을때마다 페이지를 예쁘게 만들어 줘야 할듯. CSS3 쓰고 막 이러면서??: 음 이건 promotion 용으로 한번씩 만들면 괜찮을거 같긴한데... 기본적으로는 그냥 user 들이 만들어서 자신의 reco page 퍼다 나르는 식으로 하라고 해야할듯. 사람들이 어떤식으로 reco 를 할지를 생각해 봅시다.
- 브라우저 add-on 처럼 만들어줘서 해당 사이트에 접속했을 때 바로 reco 할 수 있다면 좋겠고. (iframe 이랑 pop-up 식의 reco 화면으로 억지로 해결할수는 있을텐데... iframe 으로 load 안되게 막아놓는 사이트들도 많고 해서 어려워보임. 또한 a href 링크 타고 이동할때는 그냥 창에 열린다는게 add-on 보다 못한 점일듯. 그런데 애드온은 깔 사람이 그리 많지 않을테고...)
- facebook, twitter widget 처럼 in pop-up 으로 공유할 수 있는 js 만들어서 배포해줘야 할듯. 각 사이트가 알아서 심도록? 이 경우에 URI 랑 Title, Desc 등은 자동으로 채워지도록 해주는게 좋은데.... Category 도?
- 다른 사용자가 잘 정리해 놓은 reco page 에서 보면서 자신의 reco 를 업데이트 할 경우도 많을듯. (MAMA 동영상들 잘 모아놓은 사람이 있다고 한다면 여기 찾아가서 자신이 좋아한 영상 reco 하는 식.)
:: 조금 다르게 구현한게 cats 들을 눌른 것들만 Fuzzy Search (Go) 에 차례대로 넣어놓고 이 내에서 cats :: title 형태로 찾을 수 있게 구현해놓음. 대충의 cats 를 기억했다가 load 해놓고 내가 찾고 싶었던걸 찾는 식. F, D 로 scroll 이동할때 hashURI 표시해주기. 멀티레코 모드에서 자기걸로 reco 해 가는 동영상 promotion in kipid's blog 에 삽입하기. Screen width 파악해서 font-size default 조정해주기. 여러 포스팅들 영어로도 업로드 하기. (최저임금 환산기/계산기랑 텐서란 무엇인가? 정도... 기타 잘 팔릴거 같은 글들 위주로 번역해서 올리기.) docuK 에 recoeve.net 광고 삽입하기. PointsRange 랑 이런것들 cookie 에 저장해놓기?? Server 로 보낼 필요 없는 데이터들이긴 한데... secure cookie 에 넣으면 읽어들일수도 없는건가? (secure cookie 는 javascript 로 못 읽어드림. https 로 접속했을 때에만 javascript 로 읽어들일 수 있을듯? 이건 테스트 안해봐서 모르겄음.) 아니면 Local Storage API 를 써야하긴 하는데... 새로운 reco 가 들어왔을때 YoutubeList 도 update. 아래에서부터 scroll up 해갈 때, scrollTop 잘해줘서 아래로부터 천천히 reco 들 읽어나갈 수 있게 하기. 카톡으로 공유하기 할때 카카오 개발자 설정에 등록 안된 uri 는 링크가 안걸림. 두가지 옵션으로 해결하자. recoeve.net 이랑 YouTube 는 개발자 설정에 등록해서 그대로 공유해주고 다른 uri 들은 ?cat=...#uriEncoded 으로 연결해서 해당 uri 로 go 되도록. 유튜브도 가사 같이 봐야 하니까 recoeve.net 쪽으로 유도할까나? It is recommended that the compiler be upgraded. 자바 compiler upgrade 필요함.
C:\Recoeve\classes\recoeve\http\NaverMail.class: major version 62 is newer than 61, the highest major version supported by this compiler.
Reco 작성하다가 로그인 문제 생기거나 rmb 가 안되었을때, 작성 중이었던 URI, title, description, comment 등 쿠키에 저장했다가 다시 New reco 했을 때 채워주기. (Grip review 작성시 불편했던 점에서 아이디어 얻었음.) (제대로 짠건지 테스트는 해봐야함.)
아래에서 부터 drag 해서 올라올 때, scrollTop 적절하게 해주기. (.to-be-executed 의 inView 가 screen 1/3 위쪽에서 trigger 된 거라면, scrollHeight 전과 load 후 비교해서 scrollTop(원래 scrollTop + load 후 - 전) 해주기.) 이것도 보류...
기존 reco edit/del 할때, URI 자동으로 바꿔주는 것 때문에 edit/del 이 사라지고 reco 버튼으로 뜸. 고치자. (보류 급한거 아니라..)
그리고 현재 페이지 바로 공유할 수 있게 SNS share 버튼 fixed 로 어딘가 (floating keys?) 에 붙여놓고...
local storage 이용 좀 하자. MDN :: Web - API - Window - localStorage
온라인에서 다운받은 파일의 경우 원도우가 자동적으로 읽고 쓰는거에 제약을 좀 걸어놓는듯? 보안 문제 때문에? SEE 로 정리합시다. jquery.js sendFile 이 왜 계속 안되나 엄청 곤란했었음. 화도 나고 ㅡ.,ㅡ
레코 수정 후 #new-reco 가 안닫힘. (setTimeout 으로 해결 될라나?)
Under construction.java 해서 오류잡아야할때 이걸 vertx run 해놓자.
Sign-up 에서 아래와 같은 에러가 남. 가입은 된건데 따로 에러가 난건가? 가입이 안된듯
```
Time: 2023-06-11 10:45:10
Referer: https://localhost/account/log-in?goto=/user/kipid?cat=&lang=ko
Referer Host: localhost
Referer Allowed: true
Method: POST
Absolute URI: https://localhost/account/sign-up
User IP: 0:0:0:0:0:0:0:1:3445
Local Address: 0:0:0:0:0:0:0:1:443
Cookie: hideFK : y
PRL : 0.82
PRR : 1.00
lang : ko
Session passed?: false
Lang: ko
/account/:toDo :: toDo=sign-up
tToken:2023-06-11 10:45:08
token:866c9572777abff56ef2b244ca82f3684392560a613c2bacb0ec9ab48275deb9288bc5d95bb0efce7aacde8029c67f721c300e4f596e070ab5ae64d523d7e270f2522857684c35e1afc30d4de16a5988eff85156dfe051b64237a0632d13dc818939946ed373b28435d77aecc6c1311a71c5f0e2cf1389f2e17b07f92f4ea736
id:Sophy
email:Sophy.5912@gmail.com
now:2023-06-11 10:45:10
from:2023-06-11 10:45:08
newC:true, tokenC:true, timeC:true
Exception: java.sql.SQLException: Cannot convert class java.time.LocalDateTime to SQL type requested due to java.lang.ArrayIndexOutOfBoundsException - Index 4 out of bounds for length 4
java.sql.SQLException: Cannot convert class java.time.LocalDateTime to SQL type requested due to java.lang.ArrayIndexOutOfBoundsException - Index 4 out of bounds for length 4
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
at com.mysql.cj.jdbc.ClientPreparedStatement.setObject(ClientPreparedStatement.java:1682)
at com.mysql.cj.jdbc.result.UpdatableResultSet.setParamValue(UpdatableResultSet.java:482)
at com.mysql.cj.jdbc.result.UpdatableResultSet.syncUpdate(UpdatableResultSet.java:1164)
at com.mysql.cj.jdbc.result.UpdatableResultSet.updateBoolean(UpdatableResultSet.java:1292)
at com.mysql.cj.jdbc.result.UpdatableResultSet.updateBoolean(UpdatableResultSet.java:1283)
at recoeve.db.RecoeveDB.checkAuthToken(RecoeveDB.java:358)
at recoeve.http.Recoeve.lambda$start$17(Recoeve.java:569)
at io.vertx.core.impl.future.FutureImpl$1.onSuccess(FutureImpl.java:91)
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60)
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211)
at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23)
at io.vertx.core.http.impl.HttpEventHandler.handleEnd(HttpEventHandler.java:79)
at io.vertx.core.http.impl.Http2ServerRequest.handleEnd(Http2ServerRequest.java:198)
at io.vertx.core.http.impl.Http2ServerStream.handleEnd(Http2ServerStream.java:198)
at io.vertx.core.http.impl.VertxHttp2Stream.lambda$new$1(VertxHttp2Stream.java:62)
at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:255)
at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:134)
at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:55)
at io.vertx.core.impl.DuplicatedContext.emit(DuplicatedContext.java:158)
at io.vertx.core.http.impl.VertxHttp2Stream.onEnd(VertxHttp2Stream.java:140)
at io.vertx.core.http.impl.Http2ServerStream.onEnd(Http2ServerStream.java:123)
at io.vertx.core.http.impl.VertxHttp2Stream.onEnd(VertxHttp2Stream.java:135)
at io.vertx.core.http.impl.Http2ConnectionBase.onDataRead(Http2ConnectionBase.java:317)
at io.vertx.core.http.impl.Http2ServerConnection.onDataRead(Http2ServerConnection.java:44)
at io.netty.handler.codec.http2.Http2FrameListenerDecorator.onDataRead(Http2FrameListenerDecorator.java:36)
at io.netty.handler.codec.http2.Http2EmptyDataFrameListener.onDataRead(Http2EmptyDataFrameListener.java:49)
at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onDataRead(DefaultHttp2ConnectionDecoder.java:307)
at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readDataFrame(DefaultHttp2FrameReader.java:415)
at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:250)
at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:159)
at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:173)
at io.netty.handler.codec.http2.DecoratingHttp2ConnectionDecoder.decodeFrame(DecoratingHttp2ConnectionDecoder.java:63)
at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:393)
at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:453)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at io.vertx.core.http.impl.VertxHttp2ConnectionHandler.channelRead(VertxHttp2ConnectionHandler.java:416)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1383)
at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1246)
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1295)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1623)
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
at com.mysql.cj.NativeQueryBindings.setObject(NativeQueryBindings.java:516)
at com.mysql.cj.jdbc.ClientPreparedStatement.setObject(ClientPreparedStatement.java:1677)
... 62 more
SQLState: S1000
Error Code: 0
Message: Cannot convert class java.time.LocalDateTime to SQL type requested due to java.lang.ArrayIndexOutOfBoundsException - Index 4 out of bounds for length 4
Cause: java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
at com.mysql.cj.NativeQueryBindings.setObject(NativeQueryBindings.java:516)
at com.mysql.cj.jdbc.ClientPreparedStatement.setObject(ClientPreparedStatement.java:1677)
at com.mysql.cj.jdbc.result.UpdatableResultSet.setParamValue(UpdatableResultSet.java:482)
at com.mysql.cj.jdbc.result.UpdatableResultSet.syncUpdate(UpdatableResultSet.java:1164)
at com.mysql.cj.jdbc.result.UpdatableResultSet.updateBoolean(UpdatableResultSet.java:1292)
at com.mysql.cj.jdbc.result.UpdatableResultSet.updateBoolean(UpdatableResultSet.java:1283)
at recoeve.db.RecoeveDB.checkAuthToken(RecoeveDB.java:358)
at recoeve.http.Recoeve.lambda$start$17(Recoeve.java:569)
at io.vertx.core.impl.future.FutureImpl$1.onSuccess(FutureImpl.java:91)
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60)
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211)
at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23)
at io.vertx.core.http.impl.HttpEventHandler.handleEnd(HttpEventHandler.java:79)
at io.vertx.core.http.impl.Http2ServerRequest.handleEnd(Http2ServerRequest.java:198)
at io.vertx.core.http.impl.Http2ServerStream.handleEnd(Http2ServerStream.java:198)
at io.vertx.core.http.impl.VertxHttp2Stream.lambda$new$1(VertxHttp2Stream.java:62)
at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:255)
at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:134)
at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:55)
at io.vertx.core.impl.DuplicatedContext.emit(DuplicatedContext.java:158)
at io.vertx.core.http.impl.VertxHttp2Stream.onEnd(VertxHttp2Stream.java:140)
at io.vertx.core.http.impl.Http2ServerStream.onEnd(Http2ServerStream.java:123)
at io.vertx.core.http.impl.VertxHttp2Stream.onEnd(VertxHttp2Stream.java:135)
at io.vertx.core.http.impl.Http2ConnectionBase.onDataRead(Http2ConnectionBase.java:317)
at io.vertx.core.http.impl.Http2ServerConnection.onDataRead(Http2ServerConnection.java:44)
at io.netty.handler.codec.http2.Http2FrameListenerDecorator.onDataRead(Http2FrameListenerDecorator.java:36)
at io.netty.handler.codec.http2.Http2EmptyDataFrameListener.onDataRead(Http2EmptyDataFrameListener.java:49)
at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder$FrameReadListener.onDataRead(DefaultHttp2ConnectionDecoder.java:307)
at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readDataFrame(DefaultHttp2FrameReader.java:415)
at io.netty.handler.codec.http2.DefaultHttp2FrameReader.processPayloadState(DefaultHttp2FrameReader.java:250)
at io.netty.handler.codec.http2.DefaultHttp2FrameReader.readFrame(DefaultHttp2FrameReader.java:159)
at io.netty.handler.codec.http2.DefaultHttp2ConnectionDecoder.decodeFrame(DefaultHttp2ConnectionDecoder.java:173)
at io.netty.handler.codec.http2.DecoratingHttp2ConnectionDecoder.decodeFrame(DecoratingHttp2ConnectionDecoder.java:63)
at io.netty.handler.codec.http2.Http2ConnectionHandler$FrameDecoder.decode(Http2ConnectionHandler.java:393)
at io.netty.handler.codec.http2.Http2ConnectionHandler.decode(Http2ConnectionHandler.java:453)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at io.vertx.core.http.impl.VertxHttp2ConnectionHandler.channelRead(VertxHttp2ConnectionHandler.java:416)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1383)
at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1246)
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1295)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1623)
```/
```
USE recoeve0.1;
SELECT `i`, `class` FROM `Users` WHERE `email`="Sophy.5912@gmail.com";
DELETE FROM `CatList` WHERE `user_i`=100000058;
DELETE FROM `UriList` WHERE `user_i`=100000058;
DELETE FROM `LogInLogs` WHERE `user_i`=100000058;
DELETE FROM `UserSession` WHERE `user_i`=100000058;
DELETE FROM `UserSession1` WHERE `user_i`=100000058;
DELETE FROM `UserRemember` WHERE `user_i`=100000058;
DELETE FROM `Recos` WHERE `user_i`=100000058;
DELETE FROM `Users` WHERE `i`=100000058;
```/
deleteUser testing.
```
mysql> SELECT `i`, `class` FROM `Users` WHERE `email`="Sophy.5912@gmail.com";
+-----------+-------+
| i | class |
+-----------+-------+
| 100000001 | 6 |
+-----------+-------+
```/
```
Exception: java.sql.SQLException: Before start of result set
java.sql.SQLException: Before start of result set
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:130)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:98)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:90)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:64)
at com.mysql.cj.jdbc.result.ResultSetImpl.checkRowPos(ResultSetImpl.java:532)
at com.mysql.cj.jdbc.result.UpdatableResultSet.checkRowPos(UpdatableResultSet.java:203)
at com.mysql.cj.jdbc.result.ResultSetImpl.getObject(ResultSetImpl.java:1322)
at com.mysql.cj.jdbc.result.ResultSetImpl.getInt(ResultSetImpl.java:830)
at com.mysql.cj.jdbc.result.ResultSetImpl.getInt(ResultSetImpl.java:851)
at recoeve.db.RecoeveDB.deleteUser(RecoeveDB.java:497)
at recoeve.db.RecoeveDB.main(RecoeveDB.java:2417)
SQLState: S1000
Error Code: 0
Message: Before start of result set
User and associated UserClass are deleted successfully. : false
```/
AWS 의 timezone Korea 로 바꾸기.
changePwd.html 부분 검색엔진에 검색되지 않게 만들기.
logs 볼 수 있는 URI 만들자. MySQL 들어가서 확인하는거 귀찮은듯. 안귀찮네?ㅋ logs 기록할때 enter 없이 기록하자. 줄바꿈 되니까 table 이 깨지네.
robots.txt 수정. Disallow: /account/changePwd
점수 수정하면 catUriList 가 한개로 변하나? [My Blog]--[Music/Break]--츄츄 들어가서 점수 하나 바꿨더니? 아니다 점수 range 가 아래쪽으로 되어 있던 거구나. 암튼 iteration 이 $numbers_of_recos 에 프린트 되는거 console.log() 로.
lang.txt 업데이트 하기. 특히나 a href 링크 같은거 들어간 것들.
Reco 후 닫기랑. 수정 후 닫기가 제대로 동작 안함.
url lang 바꾸는거 자꾸 멘 마지막에 추가로 lang=ko&lang=de 처럼 연속해서 붙음. m.pathOfCat 써서 cat 이랑 mode, hash 값도 유지한채로 lang 만 바뀌도록 디자인하자.
뒤로가기 누를때 의도대로 안움직임. cat 도 잘 안바뀌고, Go, ToRs 도 제멋대로인듯. 함 확인해 보고 고쳐야할듯.
New reco toggle 도 pushState 해서 뒤로가기 누르면 닫히고 열리는거 history 쌓이도록.
New Reco 버튼 class="enabled" toggle 되도록 만들기. $window.trigger("keyDown") 이용.
javascript 분리하기. prepare.js 에 여러군데에서 쓰일 function 들 모아놓기. window.m.fns...
첫 로드할때도 history.replaceState 로 state data 적절히 넣어놓자. 뒤로가기 누를때 첫 화면으로 갈 수 있게.
로그인 페이지로 이동합니다. 할 때 유저가 설명글을 충분히 읽을 시간 주기. 대충 27초. Lucky number.
fixed widget 도 fontsize 조절 영향 받게 하기 width 도 em 으로 설정.
AWS 안쓰는 계정 탈퇴하기. 요금이 조금씩 나갔었네 ㅡ,.ㅡ;;;
shareSNS 할때, recoeve.net#URI 로 공유하자. 가사도 보이고 내 서비스도 홍보되고 일석이조인듯.
user-page.html 열 때, search ?cat=... hash #URI 처리하기. 해당 cat 에서 바로 #URI 로 Go click 효과.
openCat 할때 보여줄 reco list 가 없으면 이전에 load 됐던 recoPlaying 이 그대로 남아있음. Emptify 시키자.
Reco list play 할 때, 특정 조건 (해당 reco detail 내의 scroll 위치라면) 에서는 scrollTop 으로 적당하게 scrollTop 해주고, lyrics 펴서 주기. scrollTop 할때 play position 따라서 다르게 동작하도록.
쿠키 PRL, PRR toFixed(2) 로 저장하기. (자동으로 round 됨. 반올림. 정확한 사람이 하는식의 반올림은 아니지만...)
Go, ToRs 에서 뒤로가기 누르면 ESC 누른 효과내기. pushState 를 할까나? (m.goOn, m.ToRsOn)
lang 선택하는거 숨겨놓기. 잘못 클릭하는 경우를 방지하기 위해.
뮤비는 보지 않고 음악만 듣는 경우라면, 데이터 요금과 배터리를 아끼기 위해 목록재생 화면을 아래버튼으로 숨기세요.
When you just listen to music without seeing videos, to save data transfer fee and battery, hide list play with the below toggle button.
Go, ToRs 이동시키면 z-index 더 상위로 오도록 만들자. 이동시킬때가 아니라 toggle 될때만 더 상위로 오도록 했음.
Go, ToRs 윗쪽에 작게 "Fuzzy search (Go)", "Table of Recos" 표시해주기.
Multireco toggle 할 때, 불필요하게 cost CPU 하는거 줄이기. ($stars.on(...) 같은)
Go 는 이제까지 load 한 모든 userRecos 에서 검색하도록 하자. Point range 도 거르지 말고 동작하게. txt 는 "cat :: title" 형태로 fs 검색.Go 로 특정 reco on cat=... and URI=Some... 으로 갈 때 window.location.href=pathName?cat=...#SomeURIEncoded 같은 형태로 해당 reco 로 바로 갈수 있도록 디자인. pushState 이용. Cat 이 바뀌어야 되는 경우도 잘 동작하도록. (#SomeURI 는 보류.) 별 드래그 reco 할 때, < > 버튼 만들어줘서 0.1 point 씩 조절할 수 있도록 하자. Short Keys 에 B 추가. B: See neighbors. 멀티레코할때 점수를 바꾸는중입니다. 안뜨는거. 몇초뒤에 메세지는 지우는게 좋을듯. (지우는건 보류.) /mode/multireco?cat=... 으로 바로 접속하면 제대로 load 안됨. m.currentCat 업데이트 후 오픈캣. 언어 바꾸는 링크 제대로 처리하기. Multireco 모드에서 별 드래그로 점수 바꿀때, Recoing to yours; Changing your points; Changed your points; You are not logged-in 등 표시해주기. multireco mode 로 처음 접속할때, 별 드래그들 안보임. sync and await 써서 해결. multireco mode 변환할 때 새 reco 들 안보이는거 해결하기. New reco 이거나 Edit/Delete reco 일 때, ToRs/Go update 바로 해주기. // TODO 주석 처리한것들 하기. 대부분 translate. cats 지우기/Delete 버튼 만들기. 해당 cursor 위치에 있는 cat 하나를 지워주기. ";" 포함. Reco 를 Delete 했을때, fs.fullList[uri].deleted=true 같은걸로 처리할까나? Undo 할 수 있게? 추가로 deleted $reco.addClass("deleted"). css 는 border 붉은계열로 해놓자. 첫 로딩때 openCat from searchVars 가 제대로 동작 안함. 아래 코드 빼서 해결하긴 했는데, 이 query 넣으면 안되는건가? =ㅇ= ``` if (window.history.state?.cat===cat) { return false; } ```/ Short keys onclick=$window.trigger 등록. Reco to mine, Toggle lyrics 등 번역해주기. 언어 추가. fixed position 으로 갈 때, instagram 만 width 줄이고 나머진 width 키우기. cats 에서 화살표 위아래 키로 cat 선택되도록 만들기. tab 키도. copy to clipboard, ctrl+c. and 카카오톡 공유 버튼 추가하기 블로그 글 "동영상 연속 재생하기"에 recoeve 추천하는 내용 추가하기. Multireco mode 일 때, 인스타그램 높이 비율 좀만 높이자 아래쪽이 조금 잘리네. (
height:4em; padding-bottom:150%
로 해결함.)
그리고 ?mode=multireco 이렇게 하지 말고, /user/kipid/mode/multireco?cat=[Music/Break]&lang=ko 이런 식으로 바꿀까?
[href]=[protocol]//[hostname]:[port][/pathname][?search][#hash]에서 search 부분 alphabetical order 로 정렬해서 항상 일관된 URI 가 되도록 만들자. search 부분 cat=, lang= (이 순서대로) 만 쓰자. 나머진 다르게 해결하고... Reco edit 한 다음 delayed elems 가 update 가 제대로 안되는듯? 매번
m.delayedElems=$("[delayed-src], [delayed-bgimage], .to-be-executed");
로 불러들여서 해결.
cat without reco 열때 뭔가 새로고침이 되는데... 해결합시다. (뭐 때문인지 잘 모르겄네 ㅡㅡ...) 이거 얼떨결에 해결 된듯도???
No reco 인 cat 열 때, playlist 비우기.
Browser width 판단해서 point range width 를 적절히 조정해주기. 왼쪽 카테고리 드레그랑 안겹치게...
Reco list play 에서 cat 바꾸면 비어있는 경우 (해당 점수 range 내의 reco 가 없는 경우도), reco list play 를 clear 하기. 그리고 youtube 라면 바로 play 해주고, youtube 가 아니라면 auto skip 안되도록 디자인. (setTimeout 이 안되도록.)
a_log_in onclick return 으로 처리하기.
Cat 의 UriList 의 마지막 reco of inRange/shown 가 YouTube URI 라면 재생대기 (cue), YouTube 가 아니라면 그 reco 만 보여주고 stop.
sidebar-dragger 안가리게 side2 쪽에 padding-left:1em 정도 띄웠음.
stars/points error 나는거 해결. m["5stars-width"]
복구.
fuzzy search 위치 이동 가능하게 디자인하기. Clear text 버튼도.
docuK 도움말 (docuK all in one, docuK SEE (Super Easy Edit)) 에 fuzzy search 구현해놓기. (이게 핵심 기능일듯. 다들 버튼 찾느라 바쁘고 익히느라 바쁘고 한데 단순 검색만으로 사용법을 알아낼 수 있으니까.)
docuK 에 fuzzy search 코드 prepare.js 에 내부적으로 넣어놓기. 대부분의 글에서 fuzzy search 가 되도록...
레코이브 설명서/Help/도움말 만들기 + fuzzy search 구현해놓기.
HTTPS SSL 암호화 때문인지 K-Pop 같은 recos 불러올때 시간이 너무 걸림... 이거 어찌 해결해야 하지? 그냥 http protocol 써야 하나? ㅡ,.ㅡ;; http 도 느린거 같은데... 내 컴퓨터가 느려진건가? 통신이 느려진건가? 서버 컴퓨터가 느려진건가? =ㅇ= 알수없네. (다시 빨라지긴 했는데... 인증서 등록 초반이라 느렸던건가? 왜 인증서 초기등록땐 느린거지?)
Fuzzy search 할때 string 이 길어지면 기하 급수적으로 느려짐. 해결하자.
URI 통일성 있게 만들기. /user/kipid/mode/multireco?cat=[Music/break]&lang=ko
등으로.
Cat 열면 최근 recos 바로 load 해놓기. $(".to-be-executed").eq(0).trigger("click")
으로 해결.
Cookie 에서 recoeve.net style 불러오기 저장하기.
Fuzzy search 에서 preventDefault() 를 특정 key 에서만 막아야 할듯?
multireco mode 일 때 description 특히 #related 보이게 만들기.
Stick to the left top 일 때, 인스타 같이 길쭉한 애들이 overflow 나길래 .fixed 의 width 를 줄였음. 아님 div 를 한겹 덧씌워서 scroll 되도록 만들까나???
Instagram iframe ratio height width 별로 다르게? 그냥 height:4em; padding-bottom:150%
로 하니까 어떤 size 에서든 잘 보이는듯.
https RSA key 를 돈 주고 사야 인증된 https 로 뜨는듯? 지금은 warning 이 뜸. SSL HTTPS 인증서 (Certificate) 등록. https://www.sslcert.co.kr/products/Ads?g_matchtype=b&g_device=c&g_network=g&g_c=629748691824&g_keyword=ssl%20%EC%9D%B8%EC%A6%9D%EC%84%9C&g_adposition=&gclid=CjwKCAiAxvGfBhB-EiwAMPakqh3PjiZHSz5j2nz-R5tAxTcV-SvF3w3jHoqBdMo6nsd258vmKAKnshoCJw8QAvD_BwE
lang 한문 추가.
'else' after 'if' with newLine.
Recoeve.net 장부 (Money flow) 공개하기.
reco, multireco Fuzzy Search Cat 통합. (비슷한 코드라 하나로 합쳐서 동작되도록 고침.)
Cats ("#input-cats", "multireco-input-cats") 넣을 때 클릭으로 ;
, Later
등 클릭하면 fuzzy search 도 적절히 다시 rendering 되도록. .add-txt
, .replace-cat
, m.completeCat()
등으로 해결. Cats default 버튼으로 입력할때, ; 구분자 내에서 replace 되도록 만들자. 지금은 그냥 ctrl+v 됨.
URI path=/reco?uri=...&cats=... 같은 걸로 접근했을 때, log-in 안되어 있으면 /account/log-in?goto=... 으로 보내기.
유튜브의 Access-Control-Allow-Origin 문제: https://stackoverflow.com/questions/51480196/youtube-embeded-video-error-no-access-control-allow-origin (그냥 놔둘까나? Youtube API 에서도 뭘 설정해줘야 하는듯???) 일반 iframe 에서는 embed/...?origin=https://recoeve.net
넣어서 해결.
Style 바꾸는거 가능하도록 (Dark, Bright, + Blue, Pink? 같은것도?). DocuK 비슷하게... cookie 에 저장하고 page load 할 때 저장된 style 적용.
로그인 및 가입할때 ID(아이디)/email(이메일) trim 후 요청하기.
HTTPS, HTTP 둘 다 listen 하도록 만들기.
multireco.html disabled.
접속한 User ID 출력해주기.
favicon.ico 변경. https://icon-icons.com/ko/아이콘/r-자-알파벳/208984
placeholder 언어별로 처리.
Mobile 일때 2 컬럼으로 레코들 보이게 하자.
Cookie secure 로 바꾸기.
Auto skip 할때, Auto skip 버튼 enabled 되어있는지 한번 더 체크한 후 다음 reco 로 넘어가기. (지금은 setTimeout 으로 넘기는듯?)
Https 로. (RSA key 를 돈 주고 사야 인증된 https 로 뜨는듯? 지금은 warning 이 뜸.)
Auto skip default enabled 로 바꾸기.
카톡으로 공유하기 추가. (아직 미완)
Cats fuzzy search 가 거꾸로 나오는거 해결.
Forgot password 에서 이메일 * 처리하기. 보안을 위해...
네이버 kipid84 비번 어려운걸로 바꾸기. 메일 보내는거 구글에서 네이버로 갈아타기. (Gmail.java -> NaverMail.java)
Cat 새로운거에 reco 할때 new-reco 가 안닫히는 버그 있음. m.myRecos[""], m.userRecos[""] 의 defs 문제였음. 해결.
Defaults stat 만들어놓기.
Defaults stat 에서 count 0 짜리 지우기. Ranking (defSet) 따로 저장해두기. (빠른 속도를 위해)
log print 지우기. (충분히 테스트 후)
Shuffle 뒤에 목록 검색 후 되돌아오면 원래순서대로 오지말고 이전 shuffle 로 돌아오게 하기.
Exception: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '13:27:11' at line 1
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '13:27:11' at line 1
timestamp 에러도 계속 나는듯 하고... 이거 어찌 해결했더라?
Recoeve settings 에 정리해 놓자.
Shuffle 이후 첫번째걸로 scrollTop.
Cat 추가되면 Cat fuzzy search 가 먹통됨.
Cat 새로 만들거나 지우거나 하면 FSCat 이 제대로 동작 안하는듯?
Fuzzy Search 가 Fulllist 추가되거나 지워질때도 잘 동작하도록 전체적으로 손 좀 봐야할듯.
Fuzzy search 검색어 지우면서 되돌아갈때, selected li 가 보이도록 scrollTop 해주자.
😀❤ 이런 이모티콘 들어가면 reco 가 안되네? Encoding 문제인가???: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x80\xE2\x9D...' for column 'uriList' at row 1
이게 뭔 에러다냐???
utf8mb4 로 encoding 바꾸기. Emoji 같은거 저장 가능. uri, title, cats, desc, cmt 에 모두 쓸 수 있음. ?mode=multireco 만들기. Multireco 에서 Points (Stars) on click 으로도 동작하도록. 인스타그램 reel 로 된것 퍼올때 처리하기. "클릭 - 왼쪽 위 고정위치로" 글씨 크기 늘리기. 언어 ko 일때, Session 처리가 제대로 안되는거 해결. (뭐 때문이었지? 잘 모르겠음. 다시 발생하지 않는거 같아서 우선 넘어감.) cat 옮길때, ToRs 의 첫번째 li playlist 로 cue 하기. Auto skip 버튼 만들기. javascript disable 되어 있을때, javascript enable 로 바꿔주세요. 메세지 쏘기. 메세지 있는 걸 그냥 html 로 작성하고 javascipt 로 지웁시다. /account/log-in?goto=/user/kipid%3Fcat%3D%5BMusic/Break%5D--KARA--%uC5EC%uC2E0%uB2D8
unescape 만 먹히네. decodeURIComponent: URIError: URI malformed 뜨고... 뭐가 문제일까나? encodeURIComponent() 로 바꿨음. floating-key 부분 버튼들 마진 0 조정. edit button, lyrics button 마진 0 조정. (.reco .button {}) robots.txt 생성. 전으로, 앞으로, 목록 등 버튼 margin 추가하기.
Exception: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '22:59:28' at line 1
https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_allow_invalid_dates
https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html
```[.lang-sql]
SET GLOBAL sql_mode = "ALLOW_INVALID_DATES";
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;
```/
M : Multireco mode 단축키 만들기.
log 에서 Absolute URI 한글 unencode 해주기.
ToR 검색했을때, selected 유지되도록 디자인.
rmbd 이후 token 이 안바뀌는듯? 한번 rmb 뒤에 다음번이 token error 가 남.
뭐 때문인지 모르겠네;;;; cookie 가 안바뀌는거 같은데.
Exception: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '08:12:41' at line 1
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '08:12:41' at line 1
무슨 에러인지 모르겠네 ㅡ.ㅡ;;; rmbd 되는거 봐서는 저장은 되는거 같긴한데... 대충 넘어가야겠음.
youtube 나 video 가 아닐때 그냥 7초뒤 넘어가기로 한거 바꾸기. 그대로 머무르고, uri render 해서 보여주기.
ESC 나 selected click again 으로 빠져나갈때도 ToR button toggle 되게 하기. $window.trigger 이용하자.
Floating keys 에 To my page 추가하기.
FileMap class 에서 바로 lang 뽑아낼 수 있게 함수 만들기.
Point range 를 cookie 에 저장하기.
ToR not visible 일때 scrollTop 안먹히는거 해결하기. (잠깐 visible 로 바꾸고, scroll 뒤 다시 숨기기.)
Playlist ToC 구현하기. 재생목록, 선택하면 재생, Fuzzy search 로 filtering 등.
ToR, Go (Fuzzy Search) 두번 누르면 다시 숨기기.
Session 도 단방향 hash 로 암호화. (아직 완벽하진 않음.)
to-be-executed 로 scroll trigger 나열해서 load 하는걸로...
to be executed 다른 방식으로 구현.
Go 도 맞춰서 구현.
log-in page 에서 ?goto=/path 들어가면 로그인 후 이 페이지로 이동시키기.
sidebar dragger 및 버튼으로 show/hide.
유튜브 URI 통일 시키기.
Z index 조정해서 영상 순서대로 재생 가능하게.
스마트폰을 위해서 ; "--" 키 등 출력되는 버튼 만들어주자.
암호 바꾸기, 암호/비밀번호 잊어버렸을때 해결.
Reco list play 정리. YouTube API 가 필요할때 delayed loading 되도록 만들고, "Toggle reco list play" 버튼이 깔끔하게 동작하도록 UX 를 만듬.
/reco?uri=...&title=... 형태로 접속하면 reco 화면 띄우기. (로그인이 안되어 있을 경우도 잘 처리되도록.)
desc 에 padding 없애기. div.p 같은데에다가 padding left/right 넣어놓고, related video 같은거 들어갈때는 꽉차도록 바꿉시다.
youtube API 나 twitter API, MathJax API 등은 필요할 때만 load 되도록 디자인 합시다.https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html#sqlmode_allow_invalid_dates
https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html
: script addChild 이런거 써서? Reco 를 10여개 정도만 html 로 만들고 (range 에 있는것만?) 나머지는 scroll event 로 delayed load 되도록. desc format 화 해봅시다. DISQUS 정리한거 참고해서 하면 좋을듯? desc 쪽에 "#2015년" 이런식으로 시작하는게 있으면 error 나는듯? 왜 때문이지??? "# abc" 같은걸 어찌 처리하고 있는지 잘 살펴봐야 할듯? Change orders 에서 cancel 눌렀을때, expand/shrink 기억해서 맞추기. subCatCollapsed, subCatExpanded input_cats 제대로 동작하도록 만들기. URI http://blog.naver.com/alsn76/220235940614 의 points 바꾸는데 error 가 뜸. (이런 문제가 꽤 있었던거 같긴한데... 로그인 유지 문제도 해결해야 하고.)
: updateNeighbor 쪽에 문제가 있었던듯? Mobile first form 으로. 로그인 유지 시키기. (얼추 해놓긴 했는데... 제대로 동작하는지 확인해봐야 함. 대충은 해결한거 같긴 한데... rmbd cookie 는 있고, session cookie (I, tCreate, tCjs) 가 없을때가 문제일듯?) Youtube 말고 그냥 파일로 올린 영상도 연속재생 되도록 만들어 볼까나? 그 이외에도 다른 동영상 서비스들 API 도 좀 구현해볼까나?
: 이거 API 들을 안줘서 거의 불가능 ㅡ..ㅡ;;; 그냥 mp4 등 동영상 파일 URI 같은 경우는 유투브랑 같이 낑겨넣을수는 있을거 같긴한데... reco 에서 cat 부분 클릭하면 해당 cat 으로 이동되도록 onclick 구현. lang 선택 클릭하면 ?lang=xx 로 가서 user-page 보여주는게 아니라 cat 도 유지되도록 합시다. Youtube playlist 에서 list 갯수가 아마 64개로 제한이 있는듯? 이것도 감안해서 처리해야 할듯. 아예 Youtube playlist 쓰는게 아니라 그냥 end event 만 받아서 매번 다음 영상을 cue/load 하는 식으로 동작하게 하는게 나을거 같기도. 카테고리가 추가되거나 삭제되었을때, fuzzy search cats 도 업데이트. (삭제되었을때는 빼지 말까나? 어차피 새로고침하면 사라지긴해도 당장 session 에서는 쓸수도 있으니까?) Cat Fuzzy search 할때 본인 CatList 참조해서 하기. (지금은 user page 꺼 참고해서 하도록 되어있음.) 드디어(?) 하나의 cat 안의 reco 들을 다 html 화 하는거에서 느려기지기 시작함? 140여개 넘어가니까 이러는듯? K-Pop cat 인데... lyrics 가 많아서 그런지도? reco 들을 10개정도만 초반에 html 화 하고, 이후 것들은 on("scroll") 혹은 TOC, Go 로 갈때 delayed 되어서 html 화 하기. URI
http://videofarm.daum.net/controller/video/viewer/Video.html?vid=v51d2A2lLEE82M01juM41L1&play_loc=daum_storyball
rendering 할때 autoplay 처리랑 play_loc 이 없을때 영상 재생이 안되는거. (후자는 해결이 안될거 같긴한데, 왜 때문인지라도 정리 좀 해놔야 할듯.)
우선 기존 code 들 정리 한번.
Fuzzy search 더 검색에 가까운거대로 정렬? 이건 뭔 알고리즘을 적용해야 할까나?
instagram 이 이제 "instagram.com" 에서 "www.instagram.com" 으로 바뀜. 이거 iframe 으로 바꾸는 rendering 에 포함시켜야 함. (그런데 왜 바꾼거지?)
fake favicon.icon (favicon request 가 쓸데없이 너무 많은듯해서 이렇게 해봄. ajax 요청때도 favicon request 를 보내는듯??? 그냥 접속해도 favicon 요청이 3~5번이 오던데...)
Vert.x 3.0.0 으로 upgrade. listen host 를 ip "172.31.13.32" 로 제한.
Server 암호 바꾸기? AWS 가서 바꿔야 하는듯??? (윈도우 admin 암호 바꾸는 거였음. 뭔가 zc.qq.com 같은데에서 해킹이 들어온듯도???)
long 에 음수 들어가면, Long.toHexString(long i) 랑 Long.parseLong(str, 16) 이랑 충돌 일어남.: Exception in thread "main" java.lang.NumberFormatException: For input string: "ffffffffffffffff"
toString(str, 16) 으로 해결. SNS sharing 을 a href target="_blank" 링크로 만들어주기? 이미지도 외부 referer 에서 보이도록 해줄까? lang 부분도 a href with onclick 으로 만들자. .rC padding-bottom pb>70 일때는 position change 끄자. (추가로 soundcloud pb:40% 로 함.) Reco 에서 cats 에 a href onclick 구현해 놓읍시다. (CSS 도 조금 바꿔줘야할듯 하고, current cat 일 경우는 그냥 클릭을 disable 되도록 만듭시다. 그런데 긁어서 퍼갈땐 다시 클릭이 되도록 만들어야 할텐데...) Ted, soundcloud.com 영상도 iframe 으로 처리되도록. desc 에 related URI 들 formatURI 한번 돌린 뒤 처리하기. naver iframe URI 들어오면 적절하게 처리하기.
: tag 형식의 URI 가 들어오면, $() 으로 처리한 다음에 attr("src") 뽑아내서 처리함. myCatList 관련해서 update. (Reco to mine 할때나 reco/edit/del 할때에 myCatList, 특히 catFSFullList 가 잘 업데이트 되도록.) $change_catList_order_cancel 에서 selected cat 유지되도록. Cat 에 wheel click 했을때 새창에 띄워지도록 만듭시다. wheel click event 가 scroll 있을경우 trigger 가 잘 안되는듯? 그냥 dblclick event 에 새창띄우기 되도록 만들까? Wheel click 으로 동작하게 할거 아니면 그냥 하지 맙시다. UX 가 이상해질듯.
: single click 하고 double click 따로 동작하게 하는 방법은 stackoverflow.com - Jquery bind double click and single click separately 참조. 여기 답변이 제일 쓸만한듯.
: a tag with onclick 으로 해결. cats 여러개일때 하나만 수정해도 다른 cat 에서의 UriList 에서도 top 으로 가버리네?
: 이거 RecoeveDB.java 에서도 수정해야 함. i result
1 deleted
/user/kipid?cat=[Music/Break]--KARA--Fan%20site:1596 Uncaught TypeError: Cannot read property 'length' of undefined 에러 해결하기.
: 새로운 cat 이 추가되거나 지워질때 약간 이상하게 동작하네. reco delete 이후에 처리가 아직 제대로 안동작 하는듯? 제대로 안짜놨음. ``` // eve.deleteCatsUriFromList 에서 while (cat!==null&&(!eve.catUriList[cat]||eve.catUriList[cat]["UriList"].length===0)&&eve.deleteCat(cat)) { cat=eve.getSuperCat(cat); } // Uncaught TypeError: Cannot read property 'length' of undefined 에러난듯? // 해결된건가? 계속 테스트를 해봐야 할듯. ```/ String error (str===null||string===undefined) 를 (!str) 로 바꿈. youtube 등 regex 에서 ?search 부분 더 유연하게 처리하기. list 가 들어올때도 있는데... 이것도 처리. Delayed load 를 좀 더 유연하게 (flexible) 동작하게 업그레이드 합시다. class="to-be-executed" onclick="" (cmt/desc 같은데에 js 삽입 못하도록 onclick 에다가 넣어버릴까?) 같은거 만들어서 이 elem 가 걸리면, 어떠한 function 을 수행, 즉 trigger("click") 하도록 디자인. iframe 막기.
: 대충 구현하긴 했는데, 좀 더 깔끔하게 만들 필요는 있을듯. a href tag 에서 target="_blank" 추가? 이거 deprecated 되었다고 보긴 했는데... 불만이 많아져서 다시 부활한듯? n 눌렀을때 e.preventDefault() 넣어야할듯? URI 쪽에 n 이 입력되네? fixed video 위치를 왼쪽으로 바꾸고. lyrics 를 right align 으로 바꿉시다.
: 좀만 이상태로 써보다가 바꾸자. eve.recoToEve 에서 for (var prop in recoK) {} 로 처리. jQuery $.fn 에서 function 호출할때 바로 $(this) 가져오는 방법 없나?
: 없는듯? 뭐 엄청 빨라질거 같지도 않으니 포기? 그냥 this 자체가 $this 인건가??? 헐... this 가 jQuery element 였구나;;; 숫자들 user 에게 explicit 하게 보여주는 것들이 아니라면 string 으로 변환시 hex 씁시다. (더 빠른 처리를 위해... 그닥 빨라지는 정도는 크게 차이는 없을거 같긴한데... 그래도 뭐ㅋ)
: RecoeveDB.java 에서 cookie 쪽에 저장되는 I 랑 rmbdI 만 바꾸긴 했는데.. 딴건 없겠지? (Recoeve.java 에서도 뭐 바꿔줘야 하나?, RecentRecoers.java 에서도 바꿈.) iframe 을 embed 로 바꾸기. (뭔 차이지???)
: embed 는 delayed loading 이 안되는거 같아서 다시 iframe 으로. FileMap 에서 imgMap 만들어서 img 쏴주기. new-reco 가 띄워지면 URI 쪽으로 focus and trigger("keyup"). Scroll down 쪽만 pad 적용해서 미리 delayed load 받도록 하자. side 를 margin 이나 padding 으로 처리하지 말고 그냥 element scroll 되도록? 이러면 delayed load 도 바뀌어야 할지도???
: 이거 iframe 에서 스크롤이 먹통되는 등 안좋은 점이 많아서... (다시 읽어보니 무슨 뜻으로 쓴건지 모르겠네 ㅡ,.ㅡ;;;) Toggle Lyrics 안먹히는거 처리. 한번 클릭시에는 disable 만들고 1초뒤에 푸는걸로... UriList 도 따로 delayed load 합시다. (지금은 user-page.html 쏴줄때 각 cat 에 해당하는 UriList 도 한꺼번에 다 쏴줌.) Default max Points (eve.fullPts) 10 으로 해놓자. uriToA 에서 eve.escapeHTML(decodeURIComponent(uri)) 하기. $html.on("mouseup") 에 touchend 도 넣기. jquery 최신버전으로 업그레이드. Change CatList Order 부분 전체적으로 수정
: updateCatFS 수정해야 하고. change_catList_order fail 했을때 처리. Cat 옮길때, $contents 에 Loading... 으로 만든뒤, 새 reco 들이 다운 되면 html replace 합시다. Delay 가 있으니까 UX 가 좋지 못한듯. 모든 delayed elems 가 load 되면 scroll.delayedLoad 가 off 되는데, 새로운 reco 들어오거나 해서 [delayed-src] 가 있는게 들어올 경우 다시 켭시다. New Reco 혹은 Edit 에서 ESC 누르면 Close 되도록? Ctrl+Enter 치면 바로 reco/edit button 이 click 되도록? (트위터에서는 이렇게 동작함.) Range 정하는거 discrete 하게 말고 그냥 움직이도록. (숫자 표시만 toFixed(1) 정도로 만들까?) Points 가 없는 걸 보일지 말지도 선택할 수 있도록 버튼 하나 추가. "Show recos without point" 버튼이 될듯? Appsurprise 가 URI 에 들어가면 iframe 으로 쏴주도록.
: img 처리하는것도 pattern 바꿈. New reco 를 하거나 reco edit 했을때, reco cats 에 현재 URL cat 이 포함되어 있다면 전체를 refresh 하지 말고, 추가된 reco 혹은 수정된 reco 만 수정하는식으로 합시다. URI 가 255 자 넘어가면 error 남. : Count bytes (UTF8) in textarea using javascript, 2010-05-17, asked by mcintyre321. Reco 마다 twitter, facebook 으로 uri, title, cmt 정도 forwarding 할 수 있게 해놓을까나?
: cmt 는 낑기기 힘들듯도? myPage 인지 확인해서 twitter 만이라도 구현해 놓을까? Facebook 은 이런 기능 자체를 지원 안하는거 같고... 한글 초성검색 가능하도록 만들기. 한/영 키를 잘못 눌렀을때도 한/영 키 변환 예측해서 fuzzy search 하기. Youtube playlist 바뀌었을때만 reload 되도록. str.replace functions 에서 에러 처리 해놓자. URI 에 무언가 들어갔다가 empty 로 돌아오면 undefined 가 채워지네? 해결됐던건가? 우선 업데이트 해보고 문제 계속 발생하면 고치자.
: 고쳐진듯? 뭐 reco 정리하면서 더 확인하긴 해야할듯. 당장은 별 문제 없어보임. desc 가 empty 이면 표시하지 않기. Points 0 점이면 별 표시 아예 하지 않기. CatList 보여줄때 초기상태는 가장 최상위 cat 들만 보이고 나머지는 hide 된 상태에 있도록 만들자. 하지만 하위 cat 들은 다 expand 상태에 있어서 클릭 한방이면 하위 cat 은 한꺼번에 보이도록. 숨겨진 cat 을 열어야 하는 URL 로 접근하면 자동으로 이 cat 이 보이도록 parents().show() 해줘야 할듯. reco update 따라서 fuzzy search list 들 update 해줘야 함. reco/edit 했을때 후속 처리가 잘 안되고 있음. 숫자를 직접 편집했을때, 별점 위치 움직이기. New reco 작성할때, cats=empty 이고 path search 에 cat 이 있으면 이 cat 을 자동으로 채워넣어 놓도록 합시다. .replace-reco-eve 인것만 색 입히는걸로. input 들 두줄로 넘어가면 height 늘어나도록 css 설정.
: 이거 설정이 까다롭네;;; input 을 그냥 textarea 로 다 바꿔버릴까? 엔터나 format 만 따로 처리해주면 될듯? 로그인 때 lang 선택하면 cookie 에 lang 정보 저장해놓기. javascript eve.strToArray 에서도 class StrArray.java 와 마찬가지로 boolean colMap, boolean rowMap 받아서 처리하는걸로 합시다? user-page.html 이랑 log-in.html 의 언어팩 [--var--] lang.txt 설정. lang.txt transpose 하자. GitHub 에서 변화 추적하기가 힘듬. (1 line 이 길어져서 truncated 한채 보여줌.) 그리고 var name 정렬할때도 transpose 해놓은 상태가 더 좋은듯. 이거 JAVA 에서 lang Map code 도 바꿔야함. class StrArray.java colMap, rowMap 선택사항으로 되도록 만듬. URI 가 video 에 해당하는 URI (.mp4) 라면 video tag 로. URI 가 image 에 해당하는 URI 라면 image 표시해주기. (예를 들면 끝이 .jpg/.png 등으로 끝난다던지. hostname=imgur.com 이라던지가 있을듯.) map URI 는 어찌 못하겠음.
: google 은 개인 authorization 이 필요한듯 싶고, daum 껀 image 로 쏴주긴 하는데... 어차피 통일성 있게 reco 가 안될거라서 추천에 도움이 안될테니 하지 맙시다. daum video id 길이 따라서 '$' 가 붙을때가 있고 안붙을때가 있음. 보안상 이유로 < > 으로 처리된 URI escapeHTML 하지 않기. script 넣을수도 있을테니. URL search 에 lang 이 들어가 있으면 javascript cookie 로 저장하도록. log-in.html 에서 error msg 띄우는거 버튼 위로 만들고. 새로운 에러가 아래쪽에 update 되도록 만들자. user-page.html CSS @media query 더 세분화. sidebar width 변화를 좀 더 세분화 해주면 좋을듯? Button disable 시킬때, button 모양 disable 에 맞춰서 회색빛 같은걸로 바꿔주기. button disabled=true 는 button tag 에서만 먹히는듯. div.button 으로 구성한 것들은 addClass("disabled") 식으로 바꿨음. css 에 넣고. rmbd cookie 는 path=/account/log-in 으로 되어 있어서. session 이 끝났을때 rmbd 로 다시 session 유지 가능한지 확인하려면 redirect 로 /account/log-in 으로 보내야만 함. Chrome 에서라도 scroll style 바꿔줄까? user-page.html body background 조정. Del 버튼 이후 처리가 제대로 안되고 있음. Emptify 이후 lastURI 도 비워주는거 깜빡한듯. New reco x button 약간 올리기? 미디어 쿼리로 width 별로 위치조정을 할까?
: 그냥 놔두자. 더 지저분해질듯. user-page.html foot padding 조정하기. 스마트폰에서 input 에서 input 작성한 다음 "다음" 키 누르면 다음 input 으로 제대로 이동할래나? 이거 확인 필요.
: 스마트폰은 input 에서 키패드에 다음 버튼이 생성되는데, 실제로 쏘는 키값은 탭이 아니라 엔터인듯? 엔터에 next input 으로 가도록 해놔야겄네. (아이폰에서는 또 다를수도 있을거 같기도 하고;;;) docuK 인코딩이 뭔가 이상하네? docuK.js 파일 받아서 처리할때 encoding 정보가 없어서 멋대로 처리하는듯?
: script tag 에 charset 붙였음. sessionPassed==false 일때, db.varMapUserPage 가 어떻게 처리되는지 확인필요. (아마 user id 같은건 empty 로 들어가도록 잘 짜여져 있을거임.)
: cookie 에 "I" 가 없으면 {--user id--} 랑 {--index--} 에 emtpy 채워짐. title 에 userId 표시. password 에서 엔터 눌렀을 때 바로 로그인 button click 되도록? 그닥 급한건 아닐듯. user-page.html 각 element 에 tabindex 넣기. (New reco 띄워져 있을때 순환되도록 할 수 있나? 좀 테스트 해보고 넣어야 할듯?) Vertx HTTP Server 에서 listen 이후 제대로 종료되지 않으면 port 가 이전 실행된 Server 에 묶여있음. 이거 어떻게 unbound/release 시키지?
: Vertx verticle 실행중인 window console 찾아서 정지시키는 방법밖에 없을듯? signed-up.html 남은 시간 바뀌도록. log-in.html sign-up 에서 input 들 valid 하지 않을때 바로 button disable 풀리도록. log-in.html 로그인 암호 "Password is being encrypted." errorMsg 로 화면에 보여주기. 추가로 error msg 전반적으로 수정. log-in.html input 들에 tabindex 넣기.
: 스마트폰에서 "다음" 클릭이 제대로 먹힐래나 이제? 로그인 페이지 스타일 좀 바꾸자. 완전 dark 하게 가거나. 좀 세련되게? to-user-page.html 같은 redirecting 대신 javascript window.history.replaceState 로 처리하자. 쓸데없이 통신량만 늘어나고 sessionCheck 도 반복하게 되는듯.
: rmbd cookie 의 path 문제 때문에 redirecting 도 가끔 필요하긴 한듯? 스마트폰에서 동작확인 다시. (이건 뭐 꾸준히 한번씩 해야할듯.) log-in.html page 에도 foot 넣기. Recoeve version 이랑 supports 링크 등 들어가는. fuzzy search 할때 space 가 space 를 검색하는게 아니라 하나 건너띄고 검색하도록 만들자. "p m" 이걸 검색한다면 "pm" 은 검색에 안걸리지만 "pam", "[Physics/Math]" 등은 걸리도록.
: Regular Expressions - Match Anything 은 다음 참고 stackoverflow.com - Regular Expressions - Match Anything. 화살표 버튼 바꾸자. Encoding 문제인지 뭔지 스마트폰에서는 깨지거나 안보임. From ▾▸ to ▼▶. New Reco 버튼 단축키 (N) 으로 만들기. Recoeve.net Development progress reports.html 작성 및 공지. Recoeve.net Guides.html 만들기. 특히나 cat format, desc format 등 잘 설명해줘야 할듯? 아예 Reco page 에서 ? 버튼 클릭하면 연결되도록? 아니면 in pop-up 으로 뜨거나. user-page.html 에서 foot style 변경. user-page.html 에서 div#new-reco 위치 변경. z-index 추가. Foot 에 버전표시. MySQL connection 문제 대충 해결한거 같긴한데.. 제대로 해결된건지 내일쯤 다시 확인해봐야 함.
: 해결된듯? Remember me 가 제대로 안돌아가는듯 하긴 하지만... 이건 다른 문제인가? remember-me.html 에서 location.href 도 같이 보내던거 삭제. (이거 Referer 체크로 대체하는게 더 좋을듯도 하고, 이걸 체크하는게 별 필요도 없는거 같아서.) 스마트폰에서 동작확인.
: 스마트폰 갤럭시s 에서는 브라우저가 꾸져서 그런가 이상하게 동작하는게 많네. (Change orders 도 잘 안먹히고, get-Recos 도 제대로 동작을 잘 안하는듯.) Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
: MySQL 로그인이 8시간 (=28800sec) 동안 아무런 query 가 없으면 풀리나보네? =ㅇ=;;; http://redutan.blogspot.kr - No operations allowed after connection closed 오류 해결, 2013-12-19
dev.mysql.com - 5.1.4 Server System Variables - #wait_timeout 우선 wait_timeout 을 3일 (=259200sec) 로 바꿔놓자? 해결된듯? MySQL my.cnf 파일 변경. MySQL dir 들이 잘못되어 있었음. Youtube 이어서 재생이 뭔가 막혔네?
: 다시 그냥 되는데? 유투브에서 자체적으로 고친듯? method HEAD 요청은 뭐지? 검색엔진들 봇이 들어오는건가?
: 웹서버가 응답시 리소스의 내용은 보내지 않고 HEADER만 보낸다. 즉, 해당 Resource가 존재하는지? 혹은 문제가 없이 제대로 처리가 되는지를 확인할 수 있을것 같다. dialup.egloos.com - GET, POST외 HTTP의 기본 method들에 대해... /robots.txt 도 만들어야 할듯?
: 크롤러 (Crawler) 에 대한 지침용이라 그닥 필요없을듯. 강제하는것도 아니라서... support.google.com - robots.txt 파일에 대해 자세히 알아보기
support.google.com - robots.txt 파일 만들기 user page 를 로그인 안한 사람도 볼 수 있도록 해놔야 할까? 막아놔야 할까? 초기에는 막지말고, 조금 규모가 커지면 막자. 트위터나 페이스북도 막는듯? 규모가 커진 뒤 가입 유도하려면 이래야 할듯... HTTP request path 에 ".." 들어갈 경우 처리?
:
if (path.contains("..")) { path="invalid.html"; }
같은 처리를 해야할래나? 뭐 그냥 invalid 로 갈듯?
JAVA 랑 Javascript 에서 String split() 명령어가 어떻게 다른지 정리 좀 해놓자.: C:\Users\강수\Documents\DaumCloud\Blog\IT\String.split() in JAVA and Javascript.html 에 대충만 우선 정리함. path=="/" 일때, sessionPassed==false 이면 log-in page 바로 쏴주는걸로 합시다. URL 이상한건 my-page.html 처럼 replaceState 로 처리하고. URL 구조 정리하자. favicon.ico 만들기+파일보내기. Recoeve.java 에서 path type=final String 으로. 바뀌면 안되는거니까. 분석할땐 다른 변수 도입해서 조작. print log 에서 referer 확인할까나? 다른 URL 에서 reco/edit/delete 요청을 할 수 있는지? iframe 가능한지 등등 테스트 해봐야 함. get-Recoes 를 get-Recos 로 바꾸기. (일관성있게 reco 복수형은 recos 로 쓰자.) Recoeve.java verticle 에서 변하면 안되는 것들 final 로 지정하기. Console 에 log 찍는거 단순화. cat 이동했을때, URL 이 일치하지 않으면 pushState 가 되도록. 스마트폰에서 별점 드래그 되도록 만들기. (mousedown 이랑 touchstart 등이 pointerdown 등으로 통합될 수 있는듯? 좀 공부해야 알 수 있을듯.)
: 대충 해놓긴 했는데 해결 됐을래나? Cat 에 reco 가 아무것도 없을때 표시해주기. (최하위 cat 에 reco 가 없으면 자동으로 지워지긴 함. 상위 cat 들의 경우 empty 라는걸 명시적으로 보여주긴 해야할듯.) id=new-reco 에서 오른쪽 위 X (exit/close) 버튼 위치 조정? 스마트폰에서 별점 이동이 잘 안먹힘. 누구 페이지인지 왼쪽 위에 표시를 할까? (지저분할거 같기도 하지만;;;) New Reco 이후 title, cat 이 empty 되어야 함. Sign up 이후 뜨는 메세지 페이지 적절히 바꾸기. (redirecting 을 해주거나 log-in page link 를 줘야할듯?) 접속 로그 찍는거에 시간도 찍히도록 해놓자 우선. Javascript error 해결하기 : eve.escapeAMP - Cannot read property 'replace' of undefined 내 페이지일때랑 다른 사람 페이지일때 구분해서, 같은 html 파일로 같이 처리되도록? 다른 사람의 페이지에서 어떻게 동작하는지 좀 확인해 보긴 해야할듯. Recoeve progress.html 정리하기. E-mail verification 보낼때, host=recoeve.net 으로 바꾸기. E-mail verification 내용 조금 더 수정. HTML style (font 등) 수정. "This is alpha test service. Please give us feedbacks, error reports, and suggestions." 등의 문구 foot 에 추가하기. Category 입력할 때, sublime text 자동 완성처럼 pmp 입력하면 "[Physics/Math]--Physics" 같은 리스트들이 떠서 선택 되도록 만들기. Javascript 로 짜야 할듯? 어떻게 짜야할지 공부 좀 해봐야할듯. 무식하게는 category list 의 모든 가능성을 indexing 으로 저장해 놓고 뽑아 쓰는 것일텐데... "abcde" 가 있으면 "a", "b", "c", "d", "e", "ab", "ac", "ad", "ae", "bc", "bd", "be", "cd", "ce", "de", "abc", "abd", "abe", "acd", ...... 이런식으로.
조금 더 체계적으로는 {"abcde":{"a", "b", "c", "d", "e"}} chainning 이나 recursive 쓰면 될거 같은데?
: chainning 쓰면 더 복잡해지는거 같아서 그냥 regex 검색으로 당장은 해결. defDesc 관련. format 화. SEE? deleteCatsUriFromList : 우선 UriList 에서만 URI 가 지워지도록 해놨는데... Reco 를 지우거나, Reco cats 를 바꿀때 빈 cat 들은 자동으로 지우도록. 지워졌을 경우 superCat 들도 비었는지 check 하면서 지워나가야 함. 별 형태로 value 를 줄 수 있게 해야할듯? Text 로 입력했을 때에도 시각적으로 ratio 를 보여줘야 하고... (이것도 조금 나중에 생각할까?) 우선 sim 계산도 서버에서 처리하도록 만들어 놓자. http-url 입력하면 제목이랑 내용 자동으로 쏴주는 기능은 여기 저기 많은데... (twitter, facebook, kakao story, and so on) 이거 어찌 구현한걸까? Crawling (? 용어가 맞나?) 으로 그냥 자체 db 구현한건가? 그냥 구글 같은 검색엔진에 http-url 검색해서 제일 위에 뜨는 애들 제목, 내용, 날짜 긁어와서 쏴주는 식일지도 모르고. 귀차니즘 쩌는 사용자들을 위해서 자동으로 채워줘야 할텐데 말이지.
: 이건 def tables 로 어느정도 해결 중. 다국어 지원도 생각해 봐야. Excel 같은 걸로 정리해서 한번에 업데이트 가능하게 구상해야 할듯?
: FileMapWithVar 로 해결 중. lang 처리하는거 조금 더 깔끔하게 만들기. [--bad--] 를 먼저 찾고, replace 하는 식으로. 아무것도 없으면 default 로만 있고. log-in.html 에서 log-in.js, log-in.css 불러올때 에러. 그냥 / 로 접속할때도 /account/log-in 으로 접속하도록 해놨는데, 이때 js, css 등이 제대로 load 안되는듯. => Redirect 로 해결. URI 는 항상 consistant 하게 유지되도록 이런식으로 만들자. eve.myPage 인지 확인해서 New reco 아래쪽에 내 reco 표현하기, edit 되도록 만들기. Log-out 이후 log-in 페이지로 다시 이동하도록. Reco 수정/삭제 New Reco button 만들기. Reco put/change/delete 되면, HTML 에서도 CatList, UriList 업데이트 하기. do: overwrite (reco 가 있으면 바뀐것들 change, 없으면 put) , reco (reco 가 없을 경우에만 새로운 reco put) , change (reco 가 있을 경우에만 바뀐것들 change) , delete (reco 가 있을 경우 삭제) 등 가능하게? cats 작성할때 fuzzy search 구현해주기. Cursor 위치 및 ";" 위치 따라서 적절한 위치에 fuzzy search list 가 띄워지도록? pushState 넣기. 해당 URL 로 접속했을때 같은 화면 보여지도록 만들기. uri 가 입력되면 내 reco 관련 정보와 default 에 관한 정보들 가져와서 적절히 처리해주기. CatList 위치 이동 UI/UX. (서버에서 에러났을때 처리빼고는 거의 다 함.) Fuzzy search 만들기. (Table of Contents 같은 역할도 함.) 유투브 영상 한꺼번에 재생하기. playlist, loop. (shuffle, loop, 1-loop 등 버튼. Points 몇점 이상만 표시할때 playlist 도 맞춰서 바꾸기.) points 몇점 이상의 reco 만 표시하는 UI/UX. cmt, desc 등 empty 일때 표시하지 않기. 별점이나 point range 이동할때, 마우스 드래그가 text selection 으로 넘어가는거 해결. youtube restricted in your country 같은 에러 떴을때 다음 리스트 재생하도록. val, points 별로 표시하기. uri <a href link> 만들기. desc 분석해서 lyrics 등 JSON 자료 만들기. 그걸로 페이지 이쁘게 꾸미기. Show/Hide subCats 계층 구조 만들기. 단축키 만들기. (F, D 키만 우선.) cat 누르면, 그 안의 uriList recoes 보여주기. Ajax 로 catList 뽑아오기. Ajax 로 uriList 뽑아오기. Ajax 로 recoes on uriList 뽑아오기. Category tree 구조. JAVA class CatList. => 대충 만듬. Reco 할 때 recent recoers 에게 나를 neighbor 로 put 시키는 작업도 해야할듯? (곰곰히 생각해보니 내 neighbor 만 put 해서는 제일 먼저, 혹은 초기에 reco 를 한 사람들이 다른 사람들의 neighbor 가 되기 쉽지 않음. 이런 사람들이 다른 새로운 URI 도 찾아서 reco 할 확률이 높은데 말이지.) => 했음. ### Domain 신청 및 관리 2015-04-28 : 가비아의 네임플러스 서비스를 이용 recoeve.net 을 AWS Server 의 Public/Elastic IP 52.7.5.247 와 연결하였음. 2014-11-20 : https://recoeve.net 도메인 신청했음. 2년동안만 신청한거라 2년뒤엔 반드시 갱신해야 함. 호스팅 업체 https://www.gabia.com/ 에서 신청했음. 주문번호 REG20141120-406721D
41,800원 (VAT 포함)
네임서버
ns.gabia.co.kr 211.234.118.50
ns1.gabia.co.kr 121.78.117.39
ns.gabia.net 110.45.166.50 ### Server 2015-04-28 : AWS (Amazon Web Services) - EC2 (Elastic Compute Cloud) 를 이용하여 서버 구성. 2015-05-04 : 12개월간은 공짜일줄 알았는데, Total: $6.17 결제요청이 왔네? 뭐지? ㅡ..ㅡ;;;
문의 넣어놓긴 했는데, 이상한거에서 테클 들어와서 씁쓸하다. 뭐 당장 별 큰 돈은 아니지만...
Amazon Elastic Compute Cloud running Linux/UNIX - $0.013 per On Demand Linux t2.micro Instance Hour 411 Hrs $5.34
EBS - $0.10 per GB-month of General Purpose (SSD) provisioned storage - US East (Northern Virginia) 8.275 GB-Mo $0.83
쓰지도 않는 Linux instance 에서 왠 요금이... EBS 는 또 뭐여? ### Log-in and Sign-up page Sign-up 에서 error 뜨는데...
Exception: com.mysql.jdbc.NotUpdatable: Result Set not updatable
뭐 때문에 나는 에러지? ㅡ..ㅡ : 1. pstmtGetUserIndexToPut 부분이 문제였던듯. 2. Gmail 보내는것도 약간 문제였고. 아무튼 해결.
2014-12-22 : 단방향 암호화 Hash 구현 했음.
User database: malicious attack을 막는 방법 좀 강구. authToken. Remember me 구현. Cookie에서 뭔가 처리해야 할듯?
Remember me 를 여러 device (5개까지만?) 에서 할수도 있게 해야 할듯?
### Logs (알수없는 접속들)
IP location 확인 사이트: https://www.iplocation.net/ip-lookup
2023-03-02: Recoeve-01 비공개 글인데 여기서 어떻게 타고 들어왔지? ㅡ,.ㅡ;;; 카카오 개발자/직원인가? 알수없는 접속들도 좀 정리해놔야겠다.
```
A client has connected!: 2
Time: 2023-03-02 00:05:52
Referer: https://kipid.tistory.com/entry/Recoeve-01
Referer Host: kipid.tistory.com
Referer Allowed: true
Method: GET
Absolute URI: http://recoeve.net/account/verify/id/verification-Key
User IP: 114.119.135.212:54168
// Singapore 라고 나오네 ㅡ,.ㅡ;;; 뭐지?
Local Address: 172.31.35.249:80
Cookie:
Session passed?: false
Lang: en
Sended 'Please log in first to verify your account.'.
A client has connected!: 6
Time: 2023-03-02 00:29:50
Referer: https://kipid.tistory.com/
Referer Host: kipid.tistory.com
Referer Allowed: true
Method: GET
Absolute URI: https://recoeve.net/user/kipid?cat=[IT/Programming]--App--Editor--Sublime Text Packages
User IP: 147.47.7.6:51290
// Seoul National University 라고 뜨네. 이건 또 뭐야? Referrer 가 아무래도 내 블로그 sublime text 글인듯?
Local Address: 172.31.35.249:443
Cookie:
Session passed?: false
Lang: en
Sended user-page.html
```/
##[.hiden] Rocoeve 철학
자동으로 소통 이어주기 : Recos, Votes 분석해서 자동으로 이어주기. 전문지식은 소수가 관심을 가지고 연구할 수 밖에 없으니... 연예, 가십성, 단순/자극적인거 말고. 정말 필요한 것들이 발전될 수 있도록. (뭐가 중요한지는 주관적인 면이 크니까, minor 한 집단끼리 잘 연결해주는 식.)
Block 없애기, Abusing 막기 : 이야기하기 싫은 사람들과의 소통은 어느정도 줄이긴 해주더라도 완전히 차단하는식은 아닌듯. Abusing 계정들은 확실하게 차단해줘야함. (시스템으로 버거우면 고소 같은거 통해서라도.)
Minor report 존중하기 : 반대되는 의견도 어느정도 전달은 되도록.
Slow and Sincere communication : SEE docuK 같은 것들 이용해서 정리된 형태로 소통 및 발전이 되도록. (뭐 간단한 채팅/feedback이 즉각적으로 이루어지는 것도 필요하긴 할듯. 그냥 "Recos on URI" 를 정리해서 보여주면 될라나? 블로그 서비스 제공하면서?)
One way talk 지양하기 : 트위터에서 유명인에게만 멘션이 몰리는 식 막기. 어차피 다 답변도 못할테니... "reply on other users' Reco" 같은건 지양하자. 멘션 날리는것도 빼는게 좋을듯?
Lock-in 효과 지양 : 유명한 사람이 더 유명해지도록 하는 시스템이 안되도록. 각 개인이 모두 중요해 지도록. 자신의 neighbor 를 자신이 결정하는 식. 자신이 누구의 neighbor 가 될지도 자신이 결정하는 식. Reco 에 좋은 comment 를 남기거나, 자신이 좋아하는 사람들의 취향을 자신이 따라가거나. (자신이 지지하는 정치인들과 비슷한 사람들이 자신의 부모가 되고 친구고 시부모, 장인장모가 되라는 식임. 이런 지지는 시간따라, 상황따라 바뀌는 것이니.)
가장 게으른 형태로 Reco 가 가능하도록 : 남들이 정리해 놓은 category 를 찾아가서 골라 잡는다거나 하는식으로. Reco 는 언제나 쉬워야 함. 최초 접근은 엄청 쉬워야 하고. 꽤나 정성들여 정리하고 싶은 사람들 맘에도 들어야 할테고. (이것도 최대한 최소의 노력을 들여서 최대 성과/결과가 나오도록.)
새로운 update 정보들 알아서 잘 찾아주기 : 추천을 잘 해주는건 기본인데, 이미 reco 를 해놓은 것들에서도 내 neighbor 들의 새로운 반응이나 URI 내부에서의 변화, 직접 URI 에 관계된 다른 URI 들을 찾아준다던지 하는 식으로...
그냥 Reco 만 하면 자동으로 이 reco 를 보고싶어 하는 사람들을 찾아서 전달해 주는 식이어야 함. 보통 트위터나 페이스북 같은 경우는 자신의 팔로워나 친구로 등록 된 사람들이 봐주기를 원해서 (뭐 그냥 개인이 떠들고 싶어서 신경 안쓰고 떠드는 경우도 많긴 하지만) 글을 작성하는 경우가 많을텐데... 그래서 리트윗 많이될만한거, like 많이 받을만한것만 고르고 고민하고 하면서 글을 눈치보면서 쓰는 경우가 많은듯. Recoeve 는 남 눈치보지 말고 본인이 누구인가 (Who am I?) 를 찾아가도록 해줘야. 이미 지인들이 아닌 자신과 비슷한 사람들과 연결되어서 더 자기 자신을 잘 찾을 수 있도록 도와주는. (뭐 악마는 악마끼리, 천사는 천사끼리 연결될래나? 뭐 악마/천사 구분도 0 아니면 1 은 아니니까... 괜찮은 사람들과 연결되고 싶으면 본인이 괜찮은 사람이 되어야 하겄지...)
익명성이 어느정도 보장되면서, 본인 reco 에 어느정도 책임도 지는 식으로 닉세탁 같은게 쉽게는 안되도록... (완전 세탁하고 싶으면 새로 계정을 파면 됨. 닉 바꾸는거야 fin 내면서 바꾸도록 해주면 될듯?)
## RRA
- Recoeve.net
- Introducing what we are making : Recoeve.net, 2014-12-02
- kipid's blog :: HTML docuK format ver. 2.1;
// Updated regularly
Etc.
728x90
반응형
'[Recoeve.net]' 카테고리의 다른 글
Time zone table | setting (1) | 2024.09.15 |
---|---|
Recoeve.net 퍼가는 법 (iframe) 및 reco 공유하는 법 (3) | 2024.09.10 |
Career Portfolio - 이강수 (0) | 2024.08.27 |
단어 외우기 앱 구현 (Memorizing App) in Recoeve.net (0) | 2024.08.04 |
Recoeve.net IR (Investor Relations) 투자 발표 (5) | 2024.06.14 |
음악 플레이리스트 (Music Playlist) 만들기 in Recoeve.net (0) | 2024.05.07 |
Search what you don't know, and save it to Recoeve.net. And get recoms from automatically added neighbors. (0) | 2024.02.13 |