Giter VIP home page Giter VIP logo

velog-server's Introduction

velog-server

Velog is a blog platform for developers. It provides markdown editor with syntax highlighter enabled. Currently, this service only supports Korean language.

Website link: https://velog.io/

Frontend project of service is at another Repo - velog-client

Project Stack

  • Node.js
  • TypeScript
  • Apollo GraphQL
  • PostgreSQL
  • TypeORM
  • Redis
  • ElasticSearch
  • Koa
  • Serverless
  • AWS
    • Lambda
    • SES
    • API Gateway
    • S3
    • Cloudfront

Running on your machine

Link

velog-server's People

Contributors

cometkim avatar velopert avatar winverse avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

velog-server's Issues

해당 태그에 대한 글이 없지만 태그가 표시되는 문제

스크린샷 2023-05-14 21 01 11

글 작성 후 태그를 달아 글을 출간하였는데, 처음에 제가 설정한 태그는 '🧐 고찰시리즈' 였으나 정작 표시되는 태그는 '😀고찰시리즈'로 표시되어 이를 다시 수정했지만, 변경이 되지않는 문제가 있었습니다.
그리고 다시 태그를 모두 삭제한 뒤 '테스트' 태그를 추가하고 다시 출간하였지만 이번에는 '테스트'라는 태그가 태그 목록에 추가가 되지 않는 현상이 발생해 모든 태그를 삭제하고 글을 올린 상태입니다.

현재는 위와 같이 '😀고찰시리즈'라는 태그에 속한 글이 없지만 태그 목록에서는 게시글이 존재한 것으로 표시되는 문제가 있습니다. (시크릿모드에서는 '😀고찰시리즈'가 '테스트' 태그로 보이네요...)

확인부탁드립니다!

태그 검색 개선이 되었으면 좋겠습니다!

Screen Shot 2020-02-12 at 1 31 05 AM

Screen Shot 2020-02-12 at 1 31 15 AM

이렇게 태그를 검색했는데, 아래 아무것도 검색이 안되는 이미지에서, 실제 게시물에서는 두 태그가 등록이 되어있습니다. 띄어쓰기를 기준으로 태그를 검색하는것이 어떤가 제안해봅니다!!

504 Gateway Time-out

Description

504 Gateway Time-out
접속이 안돼요..

Time

2022-09-26, 오후 12시 52분

📸 ScreenShot

image


image

내 벨로그 클릭 시 아무 것도 보이지 않는 현상

현재 상황은 다음과 같습니다.

  • 내 밸로그 클릭 시 '404 아무 것도 없네요!' 메시지만 보임
  • 새 글 쓰기를 해도 위와 동일한 화면만 보이고 아무 일도 발생하지 않음
  • 설정 란에 들어가도 이름 수정하는 것 외에는 아무 것도 할 수 없음

보이는 화면은 다음과 같습니다.

image

본 오류 발생 전 제가 했던 행동은 다음과 같습니다.

  • 오래 전에 만들었던 동일한 아이디의 계정 삭제.
  • 재 가입 시도 -> 회원가입 창에서 동일한 계정이 있다는 메시지 발생
  • 다른 아이디를 입력한 후 가입 시도 -> 에러 발생 이라는 문구와 함께 아무 일도 발생하지 않음
  • 위와 같은 현상이 지속되어 회원 가입 화면을 빠져 나오니 위와 같은 상황 발생

위 문제를 해결할 수 있는 방법이 있을까요? 확인해주시면 감사하겠습니다.

ElasticSearch view/likes 카운트 sync

이거는...

사실 정기적으로 동기화 하는 작업을 하면 되긴 하는데
그 작업을 하는게 조금 귀찮으므로 급하지도 않고

그래서 생각난 트릭은 10씩 올라갈때마다, 그리고 Like 눌려질때마다 업데이트를 하도록 하면 되겠다.

'부업'이라고 검색 시 에러 페이지가 보입니다.

'부'나 '업'이라고 검색하면 검색이 잘 되는데 '부업'이라고 검색하면 에러 페이지가 나오네요.
다른 검색어는 검색이 잘 되는걸로 보아 서버에서 검색어를 검색하는 과정에서 문제가 발생한다고 생각해 여기에 문의 드립니다.

시리즈 클릭시 404 에러

서로다른 2개의 시리즈를 클릭하면 똑같은 페이지로 넘어가는 현상이 발생했습니다.
그래서 둘중 한개를 삭제했는데, 시리즈 화면에도 남아있고 게시글 출간시에도 해당 시리즈에 추가를 선택할 수 있지만, 시리즈를 클릭하면 404가 뜹니다.

임시글 삭제 실패

어떤 이유에선지 임시글이 삭제 실패합니다.

image

{
	"data": {
		"removePost": null
	},
	"errors": [
		{
			"message": "Response Error",
			"locations": [
				{
					"line": 2,
					"column": 3
				}
			],
			"path": [
				"removePost"
			],
			"extensions": {
				"code": "INTERNAL_SERVER_ERROR",
				"exception": {
					"name": "ResponseError",
					"meta": {
						"body": {
							"_index": "posts",
							"_type": "_doc",
							"_id": "6dbca960-feb0-11e8-aae5-2128745154f6",
							"_version": 1,
							"result": "not_found",
							"_shards": {
								"total": 2,
								"successful": 1,
								"failed": 0
							},
							"_seq_no": 12328,
							"_primary_term": 1
						},
						"statusCode": 404,
						"headers": {
							"content-type": "application/json; charset=UTF-8",
							"content-length": "194"
						},
						"warnings": null,
						"meta": {
							"context": null,
							"request": {
								"params": {
									"method": "DELETE",
									"path": "/posts/_doc/6dbca960-feb0-11e8-aae5-2128745154f6",
									"body": "",
									"querystring": "",
									"headers": {
										"User-Agent": "elasticsearch-js/7.5.1 (linux 4.14.138-99.102.amzn2.x86_64-x64; Node.js v12.13.0)",
										"Content-Length": "0"
									},
									"timeout": 30000
								},
								"options": {
									"warnings": null
								},
								"id": 23
							},
							"name": "elasticsearch-js",
							"connection": {
								"url": "http://ec2-13-125-210-130.ap-northeast-2.compute.amazonaws.com:9200/",
								"id": "http://ec2-13-125-210-130.ap-northeast-2.compute.amazonaws.com:9200/",
								"headers": {},
								"deadCount": 0,
								"resurrectTimeout": 0,
								"_openRequests": 0,
								"status": "alive",
								"roles": {
									"master": true,
									"data": true,
									"ingest": true,
									"ml": false
								}
							},
							"attempts": 0,
							"aborted": false
						}
					},
					"stacktrace": [
						"ResponseError: Response Error",
						"    at IncomingMessage.<anonymous> (/var/task/node_modules/@elastic/elasticsearch/lib/Transport.js:296:25)",
						"    at IncomingMessage.emit (events.js:215:7)",
						"    at IncomingMessage.EventEmitter.emit (domain.js:476:20)",
						"    at endReadableNT (_stream_readable.js:1183:12)",
						"    at processTicksAndRejections (internal/process/task_queues.js:80:21)"
					]
				}
			}
		}
	]
}

Internal server error

@velopert velog 웹페이지에 방문하려 했는데, Internal server error 메세지가 뜨고, 콘텐츠가 안 보입니다.

2021-07-15_20-02-07

2021-07-15_20-03-39

release_updated_at 필드 추가

likes, views 값이 업데이트 될 때에도 updated_at 이 바뀌기 때문에 실제 사용자가 수정해서 바뀐 시각을 트래킹하기 위하여 해당 기능 구현이 필요함.

이 때문에 이번에 사이트맵 lastmod 생략했음.

급하진 않은데.. 언젠간 해야 할 것으로 판단됨

typeorm index & unique

// User.ts
  @Index()
  @Column({ unique: true, length: 255 })
  username!: string;

  @Index()
  @Column({ unique: true, length: 255, nullable: true, type: 'varchar' })
  email!: string | null;

SYNC가 true일 때
unique에는 index가 내장되어 있어서 @Index를 하면 duplicate key 오류가 나오는데

@Column 에서 unique를 빼주거나 @Index({ unique: true }) 또는
@Index를 제거해주고 @Column({ unique: true }) 로 해야 할 것 같습니다.

태그 삭제 시 반영이 되지 않는 현상

발생 이슈

블로그 태그 수정 중에 발견한 이슈입니다.
다음과 같이 있는 태그를 전부 삭제한 뒤 0개가 되도록 수정을 했을 때,
태그가 전부 삭제되지 않는 현상이 발생합니다.

1. before

스크린샷 2023-08-28 오후 6 07 05

2. 태그 삭제 후

스크린샷 2023-08-28 오후 6 07 14 스크린샷 2023-08-28 오후 6 07 21

3. after

스크린샷 2023-08-28 오후 6 08 09

전송 데이터 로그

전송 데이터를 확인해 보니 tags 값으로 이전 결과가 그대로 들어가 있는 것을 확인할 수 있었습니다.

url: https://v2.velog.io/graphql
method: POST
status code: 200
request paylode: {
    // ... 
    variables: {
        // ...
        tags: ["puppeteer"],
        // ...
    }
}

image

글 생성/수정 이후 리다이렉션이 되지 않는 현상

  • 어제부터 벨로그에서 글을 생성하거나 수정을 시도시 원래 되던 리다이렉션이 되지 않습니다
  • 글 생성하기/수정하기 버튼을 누르면 생성, 수정 자체는 되고 있습니다. (리다이렉션만 안됨)
  • 오류 발생전에 썸네일을 여러장 수정했었는데, 이후부터 오류가 발생하고 있습니다.

네트워크 요청 정보랑 결과는 아래와 같습니다. 혹시 해결할 수 있는 방법이 있을까요?
스크린샷 2023-01-17 오전 9 50 19

fetch("https://v2.velog.io/graphql", {
"headers": {
"accept": "/",
"accept-language": "ko,en-US;q=0.9,en;q=0.8,ja;q=0.7,ku;q=0.6",
"content-type": "application/json",
"sec-ch-ua": ""Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": ""macOS"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site"
},
"referrer": "https://velog.io/",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": "{"operationName":"EditPost","variables":{"id":"e58f3fc2-15f5-4652-8cbe-409f448d46e0","title":"State Hook[React]","body":"※ 공식문서를 읽고 정리한 글입니다.\n\n출처:\nhttps://ko.reactjs.org/docs/hooks-state.html","tags":["React"],"is_markdown":true,"is_temp":false,"is_private":false,"url_slug":"State-HookReact","thumbnail":"https://velog.velcdn.com/images/nhs075241/post/a2838e83-e56f-4eb8-bfc0-de41eb43749f/image.png\",\"meta\":{\"short_description\":\"※ 공식문서를 읽고 정리한 글입니다.출처:https://ko.reactjs.org/docs/hooks-state.html"},"series_id":"264206a2-a1fe-468a-b934-3f02dbc7ff65"},"query":"mutation EditPost($id: ID!, $title: String, $body: String, $tags: [String], $is_markdown: Boolean, $is_temp: Boolean, $is_private: Boolean, $url_slug: String, $thumbnail: String, $meta: JSON, $series_id: ID) {\n editPost(id: $id, title: $title, body: $body, tags: $tags, is_markdown: $is_markdown, is_temp: $is_temp, is_private: $is_private, url_slug: $url_slug, thumbnail: $thumbnail, meta: $meta, series_id: $series_id) {\n id\n title\n released_at\n updated_at\n tags\n body\n short_description\n is_markdown\n is_private\n is_temp\n thumbnail\n comments_count\n url_slug\n user {\n id\n username\n profile {\n id\n display_name\n thumbnail\n short_bio\n __typename\n }\n velog_config {\n title\n __typename\n }\n __typename\n }\n comments {\n id\n user {\n id\n username\n profile {\n id\n thumbnail\n __typename\n }\n __typename\n }\n text\n replies_count\n level\n created_at\n level\n deleted\n __typename\n }\n series {\n id\n name\n url_slug\n series_posts {\n id\n post {\n id\n title\n url_slug\n user {\n id\n username\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n __typename\n }\n}\n"}",
"method": "POST",
"mode": "cors",
"credentials": "include"
});

fetch("https://v2.velog.io/graphql", {
"headers": {
"accept": "/",
"accept-language": "ko,en-US;q=0.9,en;q=0.8,ja;q=0.7,ku;q=0.6",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-site"
},
"referrer": "https://velog.io/",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "OPTIONS",
"mode": "cors",
"credentials": "omit"
});

길이가 긴 벨로그 제목

mfwktn wpgks

두 가지 방법이 있습니다.

  • 스타일을 수정할지 (Frontend)
  • 길이 제한을 설정할지 (Backend)

@velopert 님이 선택하셔야 할 것 같습니다.

(본 이슈는 client와 server에 동시에 게시함)

닉네임 변경 후 댓글은 반영 안됨

닉네임 변경 후 게시물 작성자의 유저 네임은 A라는 이름으로 나오는데 댓글을 달았을때 A라는 이름으로 달리는것이 아닌 velog.io/@b의 B로 보입니다.
댓글달 때의 이름도 블로그 닉네임으로 보이게 할 수는 없을까요?

Any plan to implement RSS?

It's hard to follow specific people on velog.

Some notification, like Tistory, would be best in this case but seems not easy because it also requires some UI works.

How about RSS for each user's velog posts? @velopert

Protect your secrets

여기 좀 실제 시크릿들 히스토리에 들어간 것 같은데 괜찮나요.....??

서드파티 시크릿들은 좀 안괜찮을 것 같은데 클라이언트/키 전부 revoke 하시고 깃 히스토리도 한번 밀어버리셔야 되지 않으려나 싶네요 ㅎㅎ;

설정 파일:

커밋 로그:

INFO[2020-02-27T21:51:16Z] No leaks detected. 151 commits audited in 1 second 33 milliseconds 3 microseconds

(이전 velog repo랑 좀 햇갈렸는데 거기도 커밋에 좀 leaked secrets 있네요)

글 작성 후 Tag 수정

글 작성 당시 for example 이라는 태그를 생성했습니다.
글을 배포 후 for exmaple 태그의 각 앞글자를 대문자로 바꿔주고 싶습니다.

수정 에서 기존 태그를 지우고, For Example 이라는 태그를 생성했습니다.
수정을 완료해도 기존에 작성했던 for example 에서 변화하지 않습니다.

수정 - 태그삭제 - 수정완료 - 수정 - 대문자로 생성 - 수정완료

의 단계를 거쳐도 같은 결과입니다.

너무 사소해서.... 이슈를 올려도 될까 싶네요🤔

비공개 게시물 전체공개 전환 불가 오류

안녕하세요 벨로그 아이디 @jayarnim 을 사용하고 있는 유저입니다. 다름이 아니라 며칠 전부터 서포트 벡터 머신 관련 두 가지 게시물이 비공개에서 전체공개로 전환되지 않고 있어 트위터 쪽지 및 구글 메일로 연락드렸으나 미회신 중이셔서 이슈 남깁니다.

해당 게시물 주소는 다음과 같습니다.

http://velog.io/@jayarnim/결정-경계와-Support-Vector-Machine

http://velog.io/@jayarnim/번외-비선형-데이터-세트의-결정-경계-구하기

ElasticSearch 정기 Sync

이걸 하면 포스트 조회 또는 Like에 의한 Sync는 안해도 될 듯 하다. (아마도)

검색 ERROR(사용자 profile이 null이여서 발생)

바로가기
(아래링크로 들어가면 bug가 발생하지않으니, 직접 검색해주시길 바랍니다.)
https://velog.io/search/?q=오더링
https://velog.io/search/?q=서비스
https://velog.io/search/?q=kkam2ya

버그발생

먼저 메인에서 "서비스" 또는 "오더링" 이라고 검색할 시, 에러 페이지와 동시에, 클라이언트 Console창에 게시글 Json이 출력됩니다.

버그내용

TypeError: Cannot read property 'thumbnail' of null

해당 버그는 velog-client/src/components/common/PostCard.tsx 파일의 154줄에서 발생하였으며,
optimizeImage(post.user.profile.thumbnail || userThumbnail,120,) 과정에서 profile이 null이여서 Error가 발생한 것 같습니다. 더 자세하게 알아보니, kkam2ya 라는 User가 Issue의 원인이였으며, 동일하게 kkam2ya라고 검색했을 시에도 동일한 Error가 발생하였습니다. 해당 User의 profile에 대한 정보가 없다고 추측합니다.
(역으로 파다보니, velog-client/src/lib/graphql/user.ts 파일에서 UserProfile이 null입니다.)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.