Node.js에서 가장 잘 될 수 있는지 확인
라는 것으로 2018년 첫 번째 기사입니다.
요전날 송년회에서 지인으로부터 「Node.js의 기사를 조사하면 n0bisuke씨의 기사가 잘 나옵니다」라고 말해져, 이야기의 흐름에서 어쩌면 Node.js 관련으로 제일 기사 쓰고 있는 것은 나일지도 모른다 라는 이야기가 되었습니다.
Node.js계 쿠마에서는 @ Yosuke _ 후루카와 회장을 비롯한 강한 사람들이 있으므로, 제가 제일이라고 하는 것은 어려운 상황입니다. 그렇지만 적어도 기사수만으로도 제일이라고 기쁘다고 생각해 조사해 보았습니다.
그리고, Qiita의 이것을 오로지 분석하고 랭킹 로 좋아요 몇 랭킹등을 분석하고 있어 재미있다고 생각한 것도 동기 부여의 하나입니다.
할 일과 거절
Qiita의 Node.js 태그에서 기사 게시물을 누가 가장 쓰고 있는지를
Node.jsで
조사한다.이른바 에고 검색입니다. 사실, Node.js에서 기사를 조사한다면 좋아하는 숫자 등으로 Contribution이 많은 사용자와 기사를 참고하는 것이 좋다고 생각합니다. 또, 나도 포함해 Qiita 이외로 쓰고 있는 것에 관해서는 계상하고 있지 않기 때문에 실 데이터라고는 말하기 어렵습니다.
또한 데이터는 2018년 1월 2일 기준으로 됩니다.
조사 방법
Qiita 태그로 검색하여
https://qiita.com/tags/Node.js/items?page=1
의 URL에서 스크래핑합니다. Qiita의 사양이 바뀌면 같은 코드에서는 움직이지 않을지도 모릅니다만 죄송합니다.page=2,page=3... 라고 차례로 취득해 가, Author의 유저명이 몇 히트 하는지로 랭킹 해 봅니다.
그건 그렇고, 배열을 계산할 때 count-array-values이 유용했습니다.
Node.js 버전은 9.3.0입니다.
mkdir qiita-node
cd qiita-node
npm init -y
touch app.js
npm i --save count-array-values axios
app.js
'use strcit';
const axios = require('axios');
const tag = process.env.TAG || 'Node.js';
const BASE_URL = `https://qiita.com/tags/${tag}/items?page=`;
const count = require('count-array-values');
let data = [];
const getAuthorList = async (pageid) =>{
try {
const res = await axios.get(BASE_URL+pageid);
const html = res.data;
const parts = html.match(/"url_name":"(.*?)"/g);
for(let i = 0,len = parts.length; i < len; i++){
const name = parts[i].match(/"url_name":"(.*?)"/)[1];
data.push(name);
}
console.log(`${pageid} page done`);
getAuthorList(++pageid);
} catch (error) {
console.log('All done');
console.log(count(data));
}
}
getAuthorList(1);
pageid가 1(1페이지째) 상태의 리스트를 취득해 배열 추가했으면, pageid를 인크리먼트 해 다음의 페이지를 취득합니다. 이것을 반복해 에러가 되면 페이지의 끝까지 취득할 수 있었다고 하고 결과를 계산해 출력합니다.
try...catch
에서 마지막 페이지를 넘으면 catch에 들어가 종료하는 재귀 함수로 하고 있습니다.Nefry 태그 살펴보기
Node.js 태그라고 하면 조금 시간이 걸렸으므로, 우선 시험에 Nefry 태그 로 검색해 보겠습니다.
$ TAG=Nefry node app.js
1 page done
2 page done
All done
[ { value: 'wamisnet', count: 20 },
{ value: 'n0bisuke', count: 6 },
{ value: 'HiroyukiYasui', count: 2 },
{ value: 'BlueTone', count: 2 },
{ value: 'minwinmin', count: 2 },
{ value: '5_21maimai', count: 1 },
{ value: 'tokutoku393', count: 1 },
{ value: 'ukk0', count: 1 },
{ value: 'mascii', count: 1 },
{ value: 'ShirataHikaru', count: 1 },
{ value: 'mogya', count: 1 },
{ value: 'koyomi_minaduki', count: 1 } ]
@wamisnet 님이 20 기사
@ 0 비스케 은 6개의 기사에서 2위였습니다.
순위
사용자 이름
기사 수
1
@wamisnet
20
2
@ 0 비스케
6
3
@ 히로 유키 쉬운
2
3
@BlueTone
2
3
@minwinmin
2
랭킹이 잘 잡혔기 때문에 같은 요령으로 Node.js도 말해 보겠습니다.
Node.js 태그
긴장의 순간이네요(수수께끼)
$ node app.js
1 page done
2 page done
・
・
・
259 page done
260 page done
All done
[ { value: 'n0bisuke', count: 164 },
{ value: 'masato', count: 58 },
{ value: 'mysticatea', count: 52 },
{ value: 'kjunichi', count: 45 },
{ value: 'akameco', count: 36 },
{ value: 'you21979@github', count: 26 },
{ value: 'toshirot', count: 26 },
{ value: '_takwat', count: 23 },
{ value: 'ms2sato', count: 23 },
{ value: '59naga', count: 22 },
{ value: 'sasaplus1', count: 22 },
・
・
・
... 2181 more items ]
순위
사용자 이름
기사 수
1
@ 0 비스케
164
2
@ 마사토
58
3
@mysticatea
52
4
@k 주니치
45
5
@akameco
36
6
@you21979 @github
26
6
@ Toshiro t
26
8
@_takwat
23
8
@ ms2 사토
23
10
@59naga
22
10
@sasaplus1
22
그래서 훌륭하게 내가 Node.js의 기사 수로는 톱이었습니다! (자연 을라든지 말할 것 같습니다만)
소감
왠지 기사수만으로는 1위인 생각이 들었습니다만, 예상 이상으로 2위의 사람과의 차이가 있었구나라는 감상입니다.
같은 느낌으로 다른 태그에서도 조사할 수 있으므로 다른 태그 랭킹을 만들어 보고 싶은 사람의 참고가 되면 다행입니다.
랭킹 붙이는 것으로, 활발하게 기사 발신이 행해지게 되는 계기가 되면 기쁘네요.
모두가 Node.js 태그를 올리자 ~
그럼!
Reference
이 문제에 관하여(Node.js에서 가장 잘 될 수 있는지 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/n0bisuke/items/f14c772a0d6dec512af1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)