버킷리스트 만드는데 순서를 거꾸로 해볼라니까 뭔가 되질 않았다!
했던 여러가지 실수들이
- JS 문법을 검색해야 하는데 파이썬 문법을 검색해서 reverse만 나왔다.
- let i = rows.length;로 선언하니 동작하지 않았다.
▶rows.length-1 이어야 동작했다. length-1이면 인덱스 수니까, 5번째여도 4번이기 때문에 그런듯 했다.- i도 i > 0; 으로 선언하니 동작하지 않았다.
▶인덱스가 0부터 시작하기 때문인지, 0번 뺀 나머지는 불러와질 줄 알았는데 이 수식까지 정확하게 맞추지 않으니 아예 데이터가 뜨지 않았다.
영준님이 팬명록 배포때 쓰신 코드를 토대로 JS for문의 역순 문법을 알고는 있었는데, 왜 그렇게 나오는지 궁금해서 하나씩 바꿔봤더니 기가막히게 동작을 안한다. 역시, 세상 쉬운게 없고만🤔
function show_bucket() {
$.ajax({
type: "GET",
url: "/bucket",
data: {},
success: function (response) {
let rows = response['buckets']
for (let i = rows.length-1; i >= 0; i--) {
let bucket = rows[i]['bucket']
let done = rows[i]['done']
let num = rows[i]['num']
@app.route("/bucket/done", methods=["POST"])
def bucket_done():
num_receive = request.form['num_give']
db.bucket.update_one({'name': int(num_receive)}, {'$set': {'num': 1}})
return jsonify({'msg': 'BUCKET 완료!'})
db.bucket.update_one({'name': int(num_receive)}, {'$set': {'num': 1}})
클라이언트에서 서버로 숫자를 넘겨줘도 서버는 다 문자로 받는다. 그러므로 다시 숫자로 받아오려면 num_receive에 int()를 씌워주어야 한다!
자료형만 주의하면 큰 문제는 없을 듯 하다.
으아아아아아 왜안동랜ㅇ래어ㅑㅐ어래야너래얀러애너랴ㅐㄴㅇ!!!!
num_receive = request.form['num_give']
db.bucket.update_one({'name': int(num_receive)}, {'$set': {'done': 1}})
return jsonify({'msg': 'BUCKET 완료!'})
▶왜 안되긴 멍충아 num을 name으로 받아오니까 안되지!!
변수 키값이 num, bucket, done 밖에 없는데 어디 저세상에 있는 변수인 name을 받아오겠다고 하니 될 리가 없었다.
name은 이 구문을 복붙해올때 원본에 있던 키값. 'name':'bobby'였음.
해결했다!!
도중에 DB에서 자료를 삭제했더니 num 순서대로 나오지 않는다. 순차적으로 정렬할 순 없을까?🤔
temp_html.sort()
console.log(temp_html)
->실패!
rows.sort(num)
-> 실패!
{return a.num < b.num ? -1 : a.bum > b.num ? 1: 0})
->실패!
자바스크립트는 배열에서 요소를 꺼내서 정렬하기 때문에 Array.sort가 기본이다. 그렇다면... 여기서 쓸수 있는 배열은 rows인데🤔
rows.sort(function (a, b) {
return a.{num} ? -1 : a.bum > b.num ? 1 : 0})
console.log(rows.sort())
->실패! 이것도 안되넹... 힝구
all_bucket = list(db.bucket.find({}, {'_id': False}).sort({'level': -1, 'xp': -1}))
->으아아 이거 했더니 아예 안나와!!!😭😭😭😭😭😭
https://stackoverflow.com/questions/8109122/how-to-sort-mongodb-with-pymongo
https://stackoverflow.com/questions/64609867/how-do-i-sort-database-data-in-mongodb-javascript-node-js
생각해보면 이 글도 같은 답을 주고 있었는데, 솔루션을 그대로 복붙한 탓에 키값이 내 데이터랑 다른 줄도 모르고 뭐야, 안되잖아😭 했었다.
▶html쪽을 건드릴게 아니라 mongoDB에서 넘겨줄때 애초에 sorted 된 채로 넘겨주면 되는구나! 번호가 중구난방이라 정렬하고 싶었는데, 만족 :)
※다만, 나는 추천해준 방법 중 pymongo 참조하는 것이 불가능해서, 그냥 sort('키값', -1(오름차순)) 을 사용했다.
db.Account.find().sort("UserName")
db.Account.find().sort("UserName",pymongo.ASCENDING)
db.Account.find().sort("UserName",pymongo.DESCENDING)
->나는 왜인지 이 방법을 쓸 수 없었다. 그래서 아랫 방법을 사용!
db.Account.find().sort('UserName', -1)
db.Account.find().sort('UserName', 1)
검색어 : python mongodb sort db.user.find
이제 나의 팬명록을 전세계(?)에 등록할 차례.
aws EC2에서 서버를 슥 대여할 것. 이용할 서버는 Ubuntu 20.04이다.
Linux와 만나는건 처음이네😆
이게 내 서버인가? 호오🤔
리눅스 특: 아무 일도 안 일어나면 잘 된것임!
현재 디렉토리 시점에서의 폴더를 보자 - ls
특정 디렉토리로 이동 - cd (디렉토리 이름) ex) cd sparta
이 폴더 밖으로 나감 - cd ..
파일질라에 올려야 할 파일들 : app.py, static, template(이 안에 index.html이 있을 것)
실수로 venv를 올렸다면 -> 삭제하면 됨.
localhost:5000에 접속이 되지 않는다! -> :5000으로 들어갈 수 있게 열어주지 않아서 그렇다. EC2 콘솔에서 인바운드 규칙을 편집해주자. 이때 여기서 :5000과 :80을 열어줄 것.
:5000은 뭐에요? 어떻게 뗄 수 있어요? :80은요?
네이버는 80포트를 써요. 하지만 우리는 5000포트를 쓰지. 그래서 우리는 깃배쉬 마지막 줄에 포트 5000으로 리다이렉트 해달라는 명령어를 넣었다.
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
localhost:5000에서 :5000을 뗄 수 있는 명령어!
네? 네이버가 80포트 쓰는게 저랑 뭔 상관이에요?
▶http 요청은 기본으로 80포트를 씁니다. 그러나 우리는 5000포트를 쓰고있기 때문에 매번 :5000을 안붙이면 원래는 접속이 안됨.
나도 80포트처럼 편하게 쓰고싶은데!😫
▶그래서 80포트의 요청을 5000포트로 넘겨주는 기능을 걸어 놓았습니다!
-나는 원래 80포트가 아니니 번호를 생략할 수 없는데,
-그래서 80포트 쓰는것처럼 주소만 입력하면 요청은 당연히 80포트로 가지 내 사이트가 뜨는게 아닌데,(내 사이트는 5000포트니까)
-그 요청을 가로채서 5000포트로 넘겨 내 사이트를 요청 결과로 띄워주는것!
즉, 원래 80포트인것처럼, 주소만 입력해도 접속이 되게끔 해주는 것.
어? 잠깐만. 뭐야 나 이거 이해안돼. 뭐야? 뭐지? 일단 잠을 좀 자고 일지를 다시 정리해보자... 어... 뇌가 고장났나보다... 디버깅이 필요하다... 잠시만... ps -ef | grep 'python lihas_brain.py' | awk '{print $2}' | xargs kill 좀 입력하고... 으어어...
수면부족으로 인한 멘붕을 뒤로하고 이해했다! 😆
(이미지 출처 : 합쥐 작가님 https://www.instagram.com/hab__g/)
뭐야, 기껏 배포가 코앞인데 응원 남기기도 저장도 되지 않는다...!! DB에 저장돼있는 데이터도 불러와지지 않는다...!!! 어쩌지...? 뭐가 문제지...? 인덱스 코드를 봐도 다른 분들하고 크게 문제되게 다를건 없는데...? 마음이 얼어붙는다... 🥶🥶🥶🥶
app.py부터 index.html까지 몇번을 다 봤는데도... 문제 없는 것 같은데도... 뭐지? 왜 이러지...? 마음가짐의 문제인가...? 착한 사람만 코멘트 가능...? 지금까지 잘못 살아온 인생에 대한 UP-BO...?
▶답을 찾았다! mongoDB에서 IP를 Network Access 허용하지 않았기 때문!!
이모양으로 살았는데도 다행히 업보는 아니었다
고마워요 즉문즉답!! 역시 선배들이 먼저 축적한 지식...!! 달다!!(?)
12기 동료들이 벌써 100명이 넘은 모양이다. 1등은 언제 승선 하신걸까?🤔
모쪼록 우리 동기들, 같이 무사히 항해를 마쳐 저마다 원하는 곳으로 갈 수 있었으면 :)
네...!!!!🥺🥺🥺🥺🥺
그저 르탄이의 귀여움에 부담도 적다니 들어나 볼까? 싶어 시작했던 내배단 국비수업부터 늘 재미있게 이끌어주신 범규 대표님.
수학과학에 빠삭한 천재들이나 하는줄 알았던 코딩을 배울 수 있게 해주신 덕분에 항해까지 승선할 수 있었다. :9
이렇게 적으니까 되게 홍보글 같지만 제 돈 펑펑 내고 배웁니다🤤...
제게는 스코클이 취향에 잘 맞았고, 비전공 노베이스 입문자 눈높이에 맞춘 설명 덕분에 쉽고 재미있게 배우고 이해할 수 있었다는 개인적 의견입니다.😎
누가 html의 class를 짱구바지로 설명해 주겠습니까... 범규 대표님 수업 듣다가 python.org 같은데 가서 설명 보면 kijul 합니다. 저도 알고싶지 않았..(?)
뭐, 아무튼.
보통 게임은 백엔드 언어인 C++이나 C#으로 만들기 때문에, 마찬가지로 C++ 기반인 언리얼엔진 엔지니어를 희망하는 나는 적성인 프론트엔드와의 선택에서 고민을 하는 중이지만...🙄
일단 지금 마음은... 도와줄 수 있는 전문가가 있을 때 어려운걸 해두지 않으면 혼자서는 영원히 못 할것 같아서, 주특기를 바꾸고 싶진 않다는 입장...인데, 이건 개발자인 애인과 좀더 대화를 해봐야겠다.🤔
우리가 과연 끝까지 살아남아 주특기를 지키고 봄을 맞을 수 있을까?
모쪼록 어떤 길로 가든 항해를 함께 끝마치고 더 넓은 바다에서 만날 수 있었으면 좋겠다. :)
만세!