All Projects โ†’ endlessdev โ†’ rankr

endlessdev / rankr

Licence: MIT License
๐Ÿ‡ฐ๐Ÿ‡ท Realtime integrated information analysis service

Programming Languages

typescript
32286 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to rankr

Crawlertutorial
็ˆฌ่Ÿฒๆฅต็ฐกๆ•™ๅญธ๏ผˆfetch, parse, search, multiprocessing, API๏ผ‰- PTT ็‚บไพ‹
Stars: โœญ 282 (+1242.86%)
Mutual labels:  crawler, parse
Laravel Parse
A Parse SDK bridge for Laravel 5
Stars: โœญ 116 (+452.38%)
Mutual labels:  parse, realtime
Nodefony Starter
Nodefony Starter Node.js Framework
Stars: โœญ 95 (+352.38%)
Mutual labels:  realtime, sequelize
Skrape.it
A Kotlin-based testing/scraping/parsing library providing the ability to analyze and extract data from HTML (server & client-side rendered). It places particular emphasis on ease of use and a high level of readability by providing an intuitive DSL. It aims to be a testing lib, but can also be used to scrape websites in a convenient fashion.
Stars: โœญ 231 (+1000%)
Mutual labels:  crawler, parse
ara
Ara is a golang server for real-time public transport data exchange, using the SIRI protocol.
Stars: โœญ 12 (-42.86%)
Mutual labels:  realtime
csync-server
No description or website provided.
Stars: โœญ 14 (-33.33%)
Mutual labels:  realtime
vue-input-streaming
A Vue2 Input Streaming RealTime And Two Way Data Binding Broadcasting with Pusher
Stars: โœญ 24 (+14.29%)
Mutual labels:  realtime
dijnet-bot
Az รถsszes szรกmlรกd mรฉg egy helyen :)
Stars: โœญ 17 (-19.05%)
Mutual labels:  crawler
plow
A high-performance HTTP benchmarking tool with real-time web UI and terminal displaying
Stars: โœญ 2,851 (+13476.19%)
Mutual labels:  realtime
ESP32AudioFramework
Dual core concurrent multi-task processing of continuous real-time audio on the ESP-32
Stars: โœญ 35 (+66.67%)
Mutual labels:  realtime
LemonDeer
Make m3u8 parse and video download as white magic.
Stars: โœญ 38 (+80.95%)
Mutual labels:  parse
snapcrawl
Crawl a website and take screenshots
Stars: โœญ 37 (+76.19%)
Mutual labels:  crawler
codes-scratch-crawler
่ฏปไนฆ็ฌ”่ฎฐใ€Š่‡ชๅทฑๅŠจๆ‰‹ๅ†™็ฝ‘็ปœ็ˆฌ่™ซใ€‹๏ผŒ่‡ชๅทฑๆ•ฒ็š„ไปฃ็ ใ€‚ไธป่ฆ่ฎฐๅฝ•ไบ†็ฝ‘็ปœ็ˆฌ่™ซ็š„ๅŸบๆœฌๅฎž็Žฐ๏ผŒ็ฝ‘้กตๅŽป้‡็š„็ฎ—ๆณ•๏ผŒ็ฝ‘้กตๆŒ‡็บน็ฎ—ๆณ•๏ผŒๆ–‡ๆœฌไฟกๆฏๆŒ–ๆŽ˜
Stars: โœญ 44 (+109.52%)
Mutual labels:  crawler
bots-zoo
No description or website provided.
Stars: โœญ 59 (+180.95%)
Mutual labels:  crawler
o1heap
Constant-complexity deterministic memory allocator (heap) for hard real-time high-integrity embedded systems
Stars: โœญ 119 (+466.67%)
Mutual labels:  realtime
TumblTwo
TumblTwo, an Improved Fork of TumblOne, a Tumblr Downloader.
Stars: โœญ 57 (+171.43%)
Mutual labels:  crawler
common-words
Updated list of the 100 most common words in the English language. Useful for excluding these words from arrays.
Stars: โœญ 13 (-38.1%)
Mutual labels:  parse
fefe
Validate, sanitize and transform values with proper TypeScript types and zero dependencies.
Stars: โœญ 34 (+61.9%)
Mutual labels:  parse
indieweb-search
Source code for the IndieWeb search engine.
Stars: โœญ 16 (-23.81%)
Mutual labels:  crawler
html-query
A fluent and functional approach to querying HTML
Stars: โœญ 48 (+128.57%)
Mutual labels:  crawler


๋Œ€ํ•œ๋ฏผ๊ตญ ํฌํ„ธ์‚ฌ์ดํŠธ ๊ฒ€์ƒ‰์–ด ๊ธฐ๋ฐ˜
์‹ค์‹œ๊ฐ„ ํ†ตํ•ฉ์ •๋ณด๋ถ„์„ ์„œ๋น„์Šค


์‹œ์ž‘ํ•˜๊ธฐ

์˜์กด์„ฑ ์„ค์น˜

๋ณธ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„  ์˜์กด์„ฑ ์™ธ๋ถ€ ๋ชจ๋“ˆ๋“ค์„ ์„ค์น˜ํ•ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.
์•„๋ž˜์˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์˜์กด์„ฑ ๋ชจ๋“ˆ์„ ์„ค์น˜ํ•ด์ฃผ์„ธ์š”.

$ npm install

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์‹คํ–‰

ํฌ๋กค๋ง์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด, ์ด ์‚ฌํ•ญ์„ ๊ฑด๋„ˆ๋›ฐ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค.

ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํฌ๋กค๋ง ๋ณธ ์„œ๋ฒ„์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์•„๋ž˜์™€ ๊ฐ™์ด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹คํ–‰์‹œ์ผœ์ฃผ์„ธ์š”.

$ sequelize db:migrate --env [database env]

๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์—

  1. sequelize-cli์™€ mysql์„ npm์„ ํ†ตํ•ด ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•ด์ฃผ์„ธ์š”.
  2. ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๋ณด๋ฅผ .env์™€ config/config.json ํŒŒ์ผ์— ๊ธฐ์ˆ ํ•ด์ฃผ์„ธ์š”. (์˜ˆ์ œ .env.example, .config.example.json ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•ด ์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.)

์„œ๋น„์Šค ์‹คํ–‰

TypeScript ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ts-node๋ฅผ ํ†ตํ•˜์—ฌ ๋ณ„๋„์˜ ํŠธ๋žœ์Šค ์ปดํŒŒ์ผ๋ง ์—†์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

$ npm start

ํฌ๋กค๋Ÿฌ์™€ ๊ฐ™์ด ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”.

$ npm run start-with-crawler

Rankr REST API

๊ฐ ํฌํ„ธ์‚ฌ์ดํŠธ์˜ ์ธ๊ธฐ๊ฒ€์ƒ‰์–ด๋ฅผ ๊ธฐ๋ฐ˜ํ•œ ๊ฐ€๊ณต๋ฐ์ดํ„ฐ๋ฅผ REST API ํ˜•์‹์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
ํ•ด๋‹น API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์•„๋ž˜์˜ ๋ณธ ์„œ๋ฒ„์˜ API๋ฅผ ์ด์šฉํ•ด์ฃผ์„ธ์š”.

https://api.rankr.kr/v1

RANK API (prefix : /rank)

๊ฐ ํฌํ„ธ์‚ฌ์ดํŠธ์˜ ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด๋ฅผ ์‘๋‹ต๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GET(/naver) Naver ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด

๋„ค์ด๋ฒ„์˜ ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด๋ฅผ PC ์›นํŽ˜์ด์ง€์—์„œ HTMLํŒŒ์‹ฑ์„ ๊ฑฐ์ณ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

Example Response

{
"resultCode": 200,
"rankType": "naver",
"requestDate": "2017-06-05T13:04:50.186Z",
"data": [
    {
      "rank": 1,
      "title": "์ œ๋ณด์ž๋“ค"
    },
  ...
  ]
}

ํ•ด๋‹น ํฌํ„ธ์‚ฌ์ดํŠธ์—์„œ ๊ธ‰์ƒ์Šน ํŠธ๋ž˜ํ‚น ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ ๋ณ€๋™์‚ฌํ•ญ ํŒŒ๋ผ๋ฏธํ„ฐ (e.g status, value)๊ฐ€ ์ œ์™ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์šฉํ•˜์‹ค๋•Œ ์ฐธ๊ณ ํ•˜์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

GET(/daum) Daum ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด

๋‹ค์Œ์˜ ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด๋ฅผ PC ์›นํŽ˜์ด์ง€์—์„œ HTMLํŒŒ์‹ฑ์„ ๊ฑฐ์ณ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

Example Response

{
"resultCode": 200,
"rankType": "daum",
"requestDate": "2017-06-05T13:04:50.186Z",
"data": [
    {
      "rank": 1,
      "title": "์ œ๋ณด์ž๋“ค",
      "value": "244",
      "status": "up"
    },
  ...
  ]
}

GET(/nate) Nate ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด

๋„ค์ดํŠธ์˜ ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด๋ฅผ PC ์›นํŽ˜์ด์ง€์—์„œ HTMLํŒŒ์‹ฑ์„ ๊ฑฐ์ณ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

Example Response

{
"resultCode": 200,
"rankType": "nate",
"requestDate": "2017-06-05T13:04:50.186Z",
"data": [
    {
      "rank": 1,
      "title": "์ œ๋ณด์ž๋“ค",
      "value": "244",
      "status": "up"
    },
  ...
  ]
}

ํ•ด๋‹น ํฌํ„ธ์‚ฌ์ดํŠธ๋Š” Daum์˜ ๊ฒ€์ƒ‰์—”์ง„๊ณผ ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณง Deprecate ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

GET(/zum) Zum ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด

Zum์˜ ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด๋ฅผ PC ์›นํŽ˜์ด์ง€์—์„œ HTMLํŒŒ์‹ฑ์„ ๊ฑฐ์ณ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

Example Response

{
"resultCode": 200,
"rankType": "zum",
"requestDate": "2017-06-05T13:04:50.186Z",
"data": [
    {
      "rank": 1,
      "title": "์ œ๋ณด์ž๋“ค"
    },
  ...
  ]
}

Analytics API (prefix : /analytics)

๊ฐ ํฌํ„ธ์‚ฌ์ดํŠธ์˜ ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด์˜ ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ์— ๊ธฐ๋ฐ˜ํ•œ ๋ถ„์„๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GET(/recent) ์ตœ๊ทผ 1์‹œ๊ฐ„ ํ‰๊ท  ํ†ต๊ณ„

ํฌ๋กค๋ง์ด ์ง„ํ–‰๋˜๋Š” ๋ชจ๋“  ํฌํ„ธ์‚ฌ์ดํŠธ์˜ ๊ธ‰์ƒ์Šน ์ธ๊ธฐ๊ฒ€์ƒ‰์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ๊ทผ 1์‹œ๊ฐ„ ์ด๋‚ด์˜ ํ‚ค์›Œ๋“œ ์ค‘ ๋ˆ„์  ์ง„์ž…์ˆ˜์™€ ํ‰๊ท  ์ˆœ์œ„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ƒ์œ„ 10๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Example Response

[
 {
    "title": "ํ˜„์ถฉ์ผ",
    "rank_count": 3911,
    "rank_avg": 7.2646
 },
...
]

GET(/recent) ์ตœ๊ทผ 24์‹œ๊ฐ„ ํ‰๊ท  ํ†ต๊ณ„

ํฌ๋กค๋ง์ด ์ง„ํ–‰๋˜๋Š” ๋ชจ๋“  ํฌํ„ธ์‚ฌ์ดํŠธ์˜ ๊ธ‰์ƒ์Šน ์ธ๊ธฐ๊ฒ€์ƒ‰์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ๊ทผ 24์‹œ๊ฐ„ ์ด๋‚ด์˜ ํ‚ค์›Œ๋“œ ์ค‘ ๋ˆ„์  ์ง„์ž…์ˆ˜์™€ ํ‰๊ท  ์ˆœ์œ„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Example Response

[
 {
    "title": "ํ˜„์ถฉ์ผ",
    "rank_count": 3911,
    "rank_avg": 7.2646
 },
...
]

GET(/search/:keyword) ํŠน์ • ํ‚ค์›Œ๋“œ ๋ถ„์„

๊ฐ ํฌํ„ธ์‚ฌ์ดํŠธ์˜ ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด์˜ ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ํŠน์ • ํ‚ค์›Œ๋“œ์˜ ๋ถ„์„๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Example Response

{
  "naver": [{
    "createdAt": "2017-06-04T13:23:00.000Z",
    "rank_crawl_idx": 46100,
    "rank": 2,
    "title": "๊ฐ€์ธ"
  },
  ...
  "daum" : [...],
  "zum" : [...]
}

News API (prefix : /news)

GET(/search/:keyword) ํŠน์ • ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰๋œ ๋‰ด์Šค ํŒŒ์‹ฑ

๋„ค์ด๋ฒ„ ํ†ตํ•ฉ ๋‰ด์Šค RSS๋ฅผ ์ด์šฉํ•˜์—ฌ ํŠน์ • ํ‚ค์›Œ๋“œ๋กœ ๊ฒ€์ƒ‰๋œ ๋‰ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Example Response

[
  {
    "title": "์ฃผ์ง€ํ›ˆ, \"์‚ฌ๋ž‘ํ•  ์‹œ๊ฐ„๋„ ์•„๊นŒ์šด๋ฐ ํ™”๋‚ผ ์‹œ๊ฐ„์ด ์–ด๋””์žˆ๋ƒ\"...๋Œ€๋งˆ์ดˆ ๊ถŒ์œ  ํญ๋กœํ•ด๋„?",
    "link": "http://www.ujnews.co.kr/news/articleView.html?idxno=267173",
    "description": "์‚ฌ์ง„=๋ฐฉ์†ก์บก์ณ ์ฃผ์ง€ํ›ˆ, \"์‚ฌ๋ž‘ํ•  ์‹œ๊ฐ„๋„ ์•„๊นŒ์šด๋ฐ ํ™”๋‚ผ ์‹œ๊ฐ„์ด ์–ด๋””์žˆ๋ƒ\"...๋Œ€๋งˆ์ดˆ ๊ถŒ์œ  ํญ๋กœํ•ด๋„ ๊ทธ๋Ÿด๊นŒ ๊ฐ€์ˆ˜ ๊ฐ€์ธ์ด ์ฃผ์ง€ํ›ˆ์˜ ์ง€์ธ์—๊ฒŒ ๋Œ€๋งˆ์ดˆ๋ฅผ ๊ถŒ์œ  ๋ฐ›์€ ์‚ฌ์‹ค์„ ํญ๋กœํ•ด ๋…ผ๋ž€์ด ๋œ ๊ฐ€์šด๋ฐ ๊ณผ๊ฑฐ ์—ฐ์ธ ๊ฐ€์ธ์— ๋Œ€ํ•œ ์ฃผ์ง€ํ›ˆ์˜...",
    "pubDate": "in 9 hours",
    "author": "์šธ์‚ฐ์ข…ํ•ฉ์ผ๋ณด",
    "category": "์„น์…˜์—†์Œ",
    "thumb": "http://imgnews.naver.net/image/thumb/5354/2017/06/05/27019.jpg"
  },
  ...
]

ํฌ๋กค๋Ÿฌ

ํฌ๋กค๋Ÿฌ๋Š” ๋ณธ ์„œ๋น„์Šค๊ฐ€ ์ง€์›ํ•˜๋Š” ๊ฐ๊ฐ์˜ ํฌํ„ธ์‚ฌ์ดํŠธ๋ฅผ 1๋ถ„์— ํ•œ๋ฒˆ์”ฉ ์ ‘์†ํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๊ธ‰์ƒ์Šน ๊ฒ€์ƒ‰์–ด๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์›ํ™œํ•œ ๊ด€๋ฆฌ ๋ฐ ํ™œ์šฉ์„ ์œ„ํ•˜์—ฌ Sequelize ORM์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋„๋ก ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์•ž์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ถ”๊ฐ€๋‚˜ ์ˆ˜์ •์€ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ฐ ๋ชจ๋ธ์„ ์ˆ˜์ •ํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ

์‹œ๊ฐํ™” ์›น ํŽ˜์ด์ง€

Narin(@narincorp) ์—์„œ ๊ณต์‹์ ์œผ๋กœ ์ง„ํ–‰๋˜๊ณ ์žˆ๋Š” ์‹œ๊ฐํ™” ์›นํŽ˜์ด์ง€ ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”.
Vue.js์™€ TypeScript ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Go to Github Repository

๋งˆ์ผ์Šคํ†ค

  • ๊ตฌ๊ธ€ ํŠธ๋ Œ๋“œ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต
  • ์‹œ๊ฐํ™” ์›น ํŽ˜์ด์ง€ (ํ˜„์žฌ ๊ฐœ๋ฐœ์ค‘)
  • ๋‰ด์Šค ์ฝ˜ํ…์ธ  ํŒŒ์‹ฑ ๋ฐ ํฌ๋กค๋ง
  • ๋‰ด๋Ÿด๋„คํŠธ์›Œํฌ ๊ตฌ์ถ• ๋ฐ ์„œ๋น„์Šค ํ™œ์šฉ
  • ๊ธ€๋กœ๋ฒŒ ํ™” (์ค‘๊ตญ, ์ผ๋ณธ)

๋ผ์ด์„ผ์Šค

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

Copyright ยฉ 2017 Narin inc.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].