diff --git a/Final/141-kibana/kibana.ipynb b/Final/141-kibana/kibana.ipynb new file mode 100644 index 0000000..2a19a6d --- /dev/null +++ b/Final/141-kibana/kibana.ipynb @@ -0,0 +1,1846 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "202b8613-45d4-49c1-affd-f519d3d4779a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ { name: 'default' }, { name: 'github_log' }, { name: 'system' } ]\n" + ] + } + ], + "source": [ + "var openDigger = require('./src/open_digger');\n", + "var query = openDigger.driver.clickhouse.query;\n", + "query(\n", + " `SHOW DATABASES`\n", + ").then(res=>{\n", + " console.log(res);\n", + "})\n", + "function sleep1(delay) {\n", + " var start = (new Date()).getTime();\n", + " while ((new Date()).getTime() - start < delay) {\n", + " continue;\n", + " }\n", + " }\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "9881e058", + "metadata": {}, + "outputs": [], + "source": [ + "const { Octokit } = require(\"@octokit/core\");\n", + "const octokit = new Octokit({\n", + " auth: ''\n", + " })" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "637ec9dc", + "metadata": {}, + "outputs": [], + "source": [ + "star_list = []\n", + "for(let i = 1; i <=3; i ++){\n", + "octokit.request('GET /repos/{owner}/{repo}/stargazers?page=${i}', {\n", + " owner: 'PHPOffice',\n", + " repo: 'PHPExcel',\n", + " headers:{\"Accept\": \"application/vnd.github.v3.star+json\"}\n", + " \n", + " }).then(res=>{\n", + " for(let i of res.data)\n", + " star_list.push(i.starred_at)\n", + " })\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "32f07872", + "metadata": {}, + "outputs": [], + "source": [ + "console.log(star_list.length)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "965f271c-9663-411b-9eaf-567153e3da91", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ { name: 'events' } ]\n" + ] + } + ], + "source": [ + "query(\n", + " `SHOW TABLES from github_log`\n", + ").then(res=>{\n", + " console.log(res);\n", + "});" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "2d6aaf8f-fe0d-4140-a78f-189122932ed0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ { 'sum(cnt)': '439977' } ]\n" + ] + } + ], + "source": [ + "var repo_id = 1644196;\n", + "query(\n", + "`SELECT SUM(cnt) FROM\n", + "(\n", + "SELECT COUNT(*) as cnt FROM github_log.events WHERE repo_id = ${repo_id}\n", + ")`\n", + ").then(res => {console.log(res)});" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "65ca48e0", + "metadata": {}, + "outputs": [], + "source": [ + "var id=1644196;" + ] + }, + { + "cell_type": "markdown", + "id": "27eea3b0", + "metadata": {}, + "source": [ + "任务一" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "fc2ae0aa", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var time_series = []\n", + "for (let year = 2015;year <= 2022; year ++)\n", + " for (let m = 01; m <= 12; m ++)\n", + " {\n", + " \n", + " \n", + " openDigger.driver.clickhouse.query(\n", + " `\n", + " SELECT tmp.repo_id ,\n", + " anyHeavy( tmp.repo_name) as repo_name ,\n", + " COUNT( *) as star_num\n", + "\n", + " FROM \n", + " (select repo_id,repo_name,actor_id,actor_login,type, max(created_at)as created_at from github_log.events GROUP BY repo_id,repo_name,actor_id,actor_login,type) tmp\n", + "\n", + " WHERE tmp.type = 'WatchEvent' and toMonth( tmp.created_at) = ${m} and toYear(tmp.created_at) = ${year} and repo_id = ${id}\n", + " GROUP BY repo_id\n", + "\n", + "\n", + " `\n", + " ).then(x => {\n", + " time_series.push([year,m,x[0]!=null ?parseInt(x[0]['star_num'] ) : 0]) \n", + " // time_series.push({year,m, x[0]!=null ? paresInt(x[0]['star_num']) : 0})\n", + " })\n", + " }\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "71a5b846", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var time_series = []\n", + "for (let year = 2015;year <= 2022; year ++)\n", + " for (let m = 01; m <= 12; m ++)\n", + " {\n", + " \n", + " \n", + " openDigger.driver.clickhouse.query(\n", + " `\n", + " SELECT tmp.repo_id ,\n", + " anyHeavy( tmp.repo_name) as repo_name ,\n", + " COUNT( *) as star_num\n", + "\n", + " FROM \n", + " (select repo_id,repo_name,actor_id,actor_login,type, max(created_at)as created_at from github_log.events GROUP BY repo_id,repo_name,actor_id,actor_login,type) tmp\n", + "\n", + " WHERE tmp.type = 'ForkEvent' and toMonth( tmp.created_at) = ${m} and repo_id = ${id} and toYear(tmp.created_at) = ${year}\n", + " GROUP BY repo_id\n", + "\n", + "\n", + " `\n", + " ).then(x => {\n", + " time_series.push([year,m,x[0]!=null ?parseInt(x[0]['star_num'] ) : 0]) \n", + " // time_series.push({year,m, x[0]!=null ? paresInt(x[0]['star_num']) : 0})\n", + " })\n", + " }\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ada6ab03", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " [ 2020, 3, 522 ], [ 2022, 5, 508 ], [ 2018, 2, 265 ], [ 2021, 11, 532 ],\n", + " [ 2017, 3, 166 ], [ 2022, 10, 0 ], [ 2018, 5, 320 ], [ 2016, 12, 122 ],\n", + " [ 2015, 11, 194 ], [ 2018, 11, 452 ], [ 2015, 12, 174 ], [ 2019, 10, 373 ],\n", + " [ 2016, 11, 139 ], [ 2015, 6, 137 ], [ 2020, 6, 597 ], [ 2022, 3, 412 ],\n", + " [ 2016, 4, 134 ], [ 2021, 7, 1861 ], [ 2017, 6, 181 ], [ 2015, 9, 155 ],\n", + " [ 2020, 12, 656 ], [ 2021, 12, 508 ], [ 2019, 1, 767 ], [ 2015, 8, 129 ],\n", + " [ 2020, 9, 636 ], [ 2022, 11, 0 ], [ 2016, 8, 141 ], [ 2018, 4, 255 ],\n", + " [ 2015, 5, 203 ], [ 2020, 7, 534 ], [ 2017, 8, 164 ], [ 2022, 4, 354 ],\n", + " [ 2015, 4, 137 ], [ 2018, 10, 628 ], [ 2021, 8, 452 ], [ 2018, 3, 274 ],\n", + " [ 2022, 7, 0 ], [ 2019, 5, 533 ], [ 2019, 4, 513 ], [ 2018, 12, 543 ],\n", + " [ 2021, 9, 402 ], [ 2018, 6, 260 ], [ 2015, 3, 189 ], [ 2019, 9, 380 ],\n", + " [ 2016, 5, 113 ], [ 2020, 4, 445 ], [ 2015, 10, 168 ], [ 2019, 7, 500 ],\n", + " [ 2016, 1, 159 ], [ 2022, 9, 0 ], [ 2022, 12, 0 ], [ 2020, 8, 567 ],\n", + " [ 2021, 5, 410 ], [ 2022, 6, 124 ], [ 2019, 2, 642 ], [ 2019, 11, 428 ],\n", + " [ 2022, 1, 499 ], [ 2021, 4, 489 ], [ 2020, 1, 434 ], [ 2017, 7, 137 ],\n", + " [ 2017, 12, 218 ], [ 2017, 2, 163 ], [ 2022, 2, 416 ], [ 2016, 3, 150 ],\n", + " [ 2017, 4, 165 ], [ 2021, 1, 493 ], [ 2015, 7, 108 ], [ 2020, 2, 331 ],\n", + " [ 2016, 7, 132 ], [ 2016, 2, 134 ], [ 2019, 3, 686 ], [ 2017, 9, 162 ],\n", + " [ 2019, 6, 433 ], [ 2016, 6, 128 ], [ 2020, 11, 759 ], [ 2021, 10, 273 ],\n", + " [ 2017, 1, 214 ], [ 2021, 6, 390 ], [ 2018, 7, 280 ], [ 2021, 2, 410 ],\n", + " [ 2018, 9, 1027 ], [ 2015, 2, 160 ], [ 2022, 8, 0 ], [ 2019, 12, 517 ],\n", + " [ 2019, 8, 496 ], [ 2018, 1, 259 ], [ 2020, 5, 1142 ], [ 2016, 9, 217 ],\n", + " [ 2018, 8, 4443 ], [ 2017, 11, 184 ], [ 2015, 1, 160 ], [ 2017, 5, 144 ],\n", + " [ 2020, 10, 668 ], [ 2016, 10, 148 ], [ 2017, 10, 216 ], [ 2021, 3, 1158 ]\n", + "]\n", + "[\n", + " [ 2015, 1, 160 ], [ 2015, 10, 168 ], [ 2015, 11, 194 ], [ 2015, 12, 174 ],\n", + " [ 2015, 2, 160 ], [ 2015, 3, 189 ], [ 2015, 4, 137 ], [ 2015, 5, 203 ],\n", + " [ 2015, 6, 137 ], [ 2015, 7, 108 ], [ 2015, 8, 129 ], [ 2015, 9, 155 ],\n", + " [ 2016, 1, 159 ], [ 2016, 10, 148 ], [ 2016, 11, 139 ], [ 2016, 12, 122 ],\n", + " [ 2016, 2, 134 ], [ 2016, 3, 150 ], [ 2016, 4, 134 ], [ 2016, 5, 113 ],\n", + " [ 2016, 6, 128 ], [ 2016, 7, 132 ], [ 2016, 8, 141 ], [ 2016, 9, 217 ],\n", + " [ 2017, 1, 214 ], [ 2017, 10, 216 ], [ 2017, 11, 184 ], [ 2017, 12, 218 ],\n", + " [ 2017, 2, 163 ], [ 2017, 3, 166 ], [ 2017, 4, 165 ], [ 2017, 5, 144 ],\n", + " [ 2017, 6, 181 ], [ 2017, 7, 137 ], [ 2017, 8, 164 ], [ 2017, 9, 162 ],\n", + " [ 2018, 1, 259 ], [ 2018, 10, 628 ], [ 2018, 11, 452 ], [ 2018, 12, 543 ],\n", + " [ 2018, 2, 265 ], [ 2018, 3, 274 ], [ 2018, 4, 255 ], [ 2018, 5, 320 ],\n", + " [ 2018, 6, 260 ], [ 2018, 7, 280 ], [ 2018, 8, 4443 ], [ 2018, 9, 1027 ],\n", + " [ 2019, 1, 767 ], [ 2019, 10, 373 ], [ 2019, 11, 428 ], [ 2019, 12, 517 ],\n", + " [ 2019, 2, 642 ], [ 2019, 3, 686 ], [ 2019, 4, 513 ], [ 2019, 5, 533 ],\n", + " [ 2019, 6, 433 ], [ 2019, 7, 500 ], [ 2019, 8, 496 ], [ 2019, 9, 380 ],\n", + " [ 2020, 1, 434 ], [ 2020, 10, 668 ], [ 2020, 11, 759 ], [ 2020, 12, 656 ],\n", + " [ 2020, 2, 331 ], [ 2020, 3, 522 ], [ 2020, 4, 445 ], [ 2020, 5, 1142 ],\n", + " [ 2020, 6, 597 ], [ 2020, 7, 534 ], [ 2020, 8, 567 ], [ 2020, 9, 636 ],\n", + " [ 2021, 1, 493 ], [ 2021, 10, 273 ], [ 2021, 11, 532 ], [ 2021, 12, 508 ],\n", + " [ 2021, 2, 410 ], [ 2021, 3, 1158 ], [ 2021, 4, 489 ], [ 2021, 5, 410 ],\n", + " [ 2021, 6, 390 ], [ 2021, 7, 1861 ], [ 2021, 8, 452 ], [ 2021, 9, 402 ],\n", + " [ 2022, 1, 499 ], [ 2022, 10, 0 ], [ 2022, 11, 0 ], [ 2022, 12, 0 ],\n", + " [ 2022, 2, 416 ], [ 2022, 3, 412 ], [ 2022, 4, 354 ], [ 2022, 5, 508 ],\n", + " [ 2022, 6, 124 ], [ 2022, 7, 0 ], [ 2022, 8, 0 ], [ 2022, 9, 0 ]\n", + "]\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "mode": "lines+markers", + "name": "activity", + "y": [ + 160, + 168, + 194, + 174, + 160, + 189, + 137, + 203, + 137, + 108, + 129, + 155, + 159, + 148, + 139, + 122, + 134, + 150, + 134, + 113, + 128, + 132, + 141, + 217, + 214, + 216, + 184, + 218, + 163, + 166, + 165, + 144, + 181, + 137, + 164, + 162, + 259, + 628, + 452, + 543, + 265, + 274, + 255, + 320, + 260, + 280, + 4443, + 1027, + 767, + 373, + 428, + 517, + 642, + 686, + 513, + 533, + 433, + 500, + 496, + 380, + 434, + 668, + 759, + 656, + 331, + 522, + 445, + 1142, + 597, + 534, + 567, + 636, + 493, + 273, + 532, + 508, + 410, + 1158, + 489, + 410, + 390, + 1861, + 452, + 402, + 499, + 0, + 0, + 0, + 416, + 412, + 354, + 508, + 124, + 0, + 0, + 0 + ] + } + ] + } + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "console.log(time_series)\n", + "console.log(time_series.sort())\n", + "openDigger.render.plotly([\n", + " {y: time_series.map(d => d[2]) ,mode: 'lines+markers', name: 'activity'}\n", + " ], ); \n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d16aeb37", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " [ 2015, 1, 61 ], [ 2015, 10, 61 ], [ 2015, 11, 59 ], [ 2015, 12, 54 ],\n", + " [ 2015, 2, 36 ], [ 2015, 3, 59 ], [ 2015, 4, 48 ], [ 2015, 5, 45 ],\n", + " [ 2015, 6, 48 ], [ 2015, 7, 47 ], [ 2015, 8, 48 ], [ 2015, 9, 48 ],\n", + " [ 2016, 1, 44 ], [ 2016, 10, 63 ], [ 2016, 11, 46 ], [ 2016, 12, 40 ],\n", + " [ 2016, 2, 74 ], [ 2016, 3, 72 ], [ 2016, 4, 49 ], [ 2016, 5, 46 ],\n", + " [ 2016, 6, 25 ], [ 2016, 7, 41 ], [ 2016, 8, 43 ], [ 2016, 9, 57 ],\n", + " [ 2017, 1, 51 ], [ 2017, 10, 77 ], [ 2017, 11, 40 ], [ 2017, 12, 56 ],\n", + " [ 2017, 2, 37 ], [ 2017, 3, 44 ], [ 2017, 4, 45 ], [ 2017, 5, 42 ],\n", + " [ 2017, 6, 34 ], [ 2017, 7, 29 ], [ 2017, 8, 53 ], [ 2017, 9, 41 ],\n", + " [ 2018, 1, 38 ], [ 2018, 10, 92 ], [ 2018, 11, 67 ], [ 2018, 12, 55 ],\n", + " [ 2018, 2, 52 ], [ 2018, 3, 42 ], [ 2018, 4, 40 ], [ 2018, 5, 40 ],\n", + " [ 2018, 6, 45 ], [ 2018, 7, 41 ], [ 2018, 8, 401 ], [ 2018, 9, 144 ],\n", + " [ 2019, 1, 88 ], [ 2019, 10, 60 ], [ 2019, 11, 49 ], [ 2019, 12, 73 ],\n", + " [ 2019, 2, 66 ], [ 2019, 3, 80 ], [ 2019, 4, 50 ], [ 2019, 5, 83 ],\n", + " [ 2019, 6, 70 ], [ 2019, 7, 78 ], [ 2019, 8, 69 ], [ 2019, 9, 71 ],\n", + " [ 2020, 1, 72 ], [ 2020, 10, 86 ], [ 2020, 11, 64 ], [ 2020, 12, 83 ],\n", + " [ 2020, 2, 55 ], [ 2020, 3, 71 ], [ 2020, 4, 69 ], [ 2020, 5, 105 ],\n", + " [ 2020, 6, 91 ], [ 2020, 7, 58 ], [ 2020, 8, 70 ], [ 2020, 9, 60 ],\n", + " [ 2021, 1, 59 ], [ 2021, 10, 29 ], [ 2021, 11, 73 ], [ 2021, 12, 65 ],\n", + " [ 2021, 2, 54 ], [ 2021, 3, 76 ], [ 2021, 4, 63 ], [ 2021, 5, 68 ],\n", + " [ 2021, 6, 44 ], [ 2021, 7, 77 ], [ 2021, 8, 62 ], [ 2021, 9, 57 ],\n", + " [ 2022, 1, 57 ], [ 2022, 10, 0 ], [ 2022, 11, 0 ], [ 2022, 12, 0 ],\n", + " [ 2022, 2, 50 ], [ 2022, 3, 56 ], [ 2022, 4, 49 ], [ 2022, 5, 48 ],\n", + " [ 2022, 6, 16 ], [ 2022, 7, 0 ], [ 2022, 8, 0 ], [ 2022, 9, 0 ]\n", + "]\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "mode": "lines+markers", + "name": "activity", + "y": [ + 61, + 61, + 59, + 54, + 36, + 59, + 48, + 45, + 48, + 47, + 48, + 48, + 44, + 63, + 46, + 40, + 74, + 72, + 49, + 46, + 25, + 41, + 43, + 57, + 51, + 77, + 40, + 56, + 37, + 44, + 45, + 42, + 34, + 29, + 53, + 41, + 38, + 92, + 67, + 55, + 52, + 42, + 40, + 40, + 45, + 41, + 401, + 144, + 88, + 60, + 49, + 73, + 66, + 80, + 50, + 83, + 70, + 78, + 69, + 71, + 72, + 86, + 64, + 83, + 55, + 71, + 69, + 105, + 91, + 58, + 70, + 60, + 59, + 29, + 73, + 65, + 54, + 76, + 63, + 68, + 44, + 77, + 62, + 57, + 57, + 0, + 0, + 0, + 50, + 56, + 49, + 48, + 16, + 0, + 0, + 0 + ] + } + ] + } + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "// console.log(time_series)\n", + "console.log(time_series.sort())\n", + "openDigger.render.plotly([\n", + " {y: time_series.map(d => d[2]) ,mode: 'lines+markers', name: 'activity'}\n", + " ], ); \n", + "time_series" + ] + }, + { + "cell_type": "markdown", + "id": "f5ae379d", + "metadata": {}, + "source": [ + "任务二" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "2ef41c80", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var time_series = []\n", + "for (let year = 2015;year <= 2022; year ++)\n", + " for (let m = 1; m <= 12; m ++)\n", + " {\n", + " sleep1(10)\n", + "\n", + " openDigger.driver.clickhouse.query(\n", + "`\n", + "select count(*) as a from github_log.events where repo_id = '1644196' and type = 'IssuesEvent' and action = 'closed' and toMonth(created_at) =${m} and toYear(created_at) = ${year}\n", + "\n", + "`\n", + ").then(x => {\n", + " time_series.push([year,m,x[0]!=null ?x[0]['a'] : 0]);\n", + " })\n", + " }\n", + "\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "9130ef5a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " [ 2015, 1, '186' ], [ 2015, 10, '221' ], [ 2015, 11, '143' ],\n", + " [ 2015, 12, '104' ], [ 2015, 2, '171' ], [ 2015, 3, '168' ],\n", + " [ 2015, 4, '173' ], [ 2015, 5, '192' ], [ 2015, 6, '198' ],\n", + " [ 2015, 7, '205' ], [ 2015, 8, '224' ], [ 2015, 9, '199' ],\n", + " [ 2016, 1, '127' ], [ 2016, 10, '128' ], [ 2016, 11, '107' ],\n", + " [ 2016, 12, '117' ], [ 2016, 2, '143' ], [ 2016, 3, '217' ],\n", + " [ 2016, 4, '175' ], [ 2016, 5, '208' ], [ 2016, 6, '179' ],\n", + " [ 2016, 7, '206' ], [ 2016, 8, '217' ], [ 2016, 9, '192' ],\n", + " [ 2017, 1, '311' ], [ 2017, 10, '150' ], [ 2017, 11, '132' ],\n", + " [ 2017, 12, '153' ], [ 2017, 2, '154' ], [ 2017, 3, '132' ],\n", + " [ 2017, 4, '143' ], [ 2017, 5, '251' ], [ 2017, 6, '169' ],\n", + " [ 2017, 7, '138' ], [ 2017, 8, '173' ], [ 2017, 9, '155' ],\n", + " [ 2018, 1, '162' ], [ 2018, 10, '140' ], [ 2018, 11, '105' ],\n", + " [ 2018, 12, '96' ], [ 2018, 2, '114' ], [ 2018, 3, '135' ],\n", + " [ 2018, 4, '145' ], [ 2018, 5, '138' ], [ 2018, 6, '167' ],\n", + " [ 2018, 7, '194' ], [ 2018, 8, '235' ], [ 2018, 9, '129' ],\n", + " [ 2019, 1, '105' ], [ 2019, 10, '200' ], [ 2019, 11, '59' ],\n", + " [ 2019, 12, '73' ], [ 2019, 2, '86' ], [ 2019, 3, '111' ],\n", + " [ 2019, 4, '130' ], [ 2019, 5, '101' ], [ 2019, 6, '98' ],\n", + " [ 2019, 7, '124' ], [ 2019, 8, '127' ], [ 2019, 9, '78' ],\n", + " [ 2020, 1, '105' ], [ 2020, 10, '176' ], [ 2020, 11, '126' ],\n", + " [ 2020, 12, '214' ], [ 2020, 2, '95' ], [ 2020, 3, '155' ],\n", + " [ 2020, 4, '120' ], [ 2020, 5, '158' ], [ 2020, 6, '169' ],\n", + " [ 2020, 7, '107' ], [ 2020, 8, '130' ], [ 2020, 9, '148' ],\n", + " [ 2021, 1, '129' ], [ 2021, 10, '54' ], [ 2021, 11, '126' ],\n", + " [ 2021, 12, '92' ], [ 2021, 2, '119' ], [ 2021, 3, '146' ],\n", + " [ 2021, 4, '187' ], [ 2021, 5, '110' ], [ 2021, 6, '125' ],\n", + " [ 2021, 7, '104' ], [ 2021, 8, '84' ], [ 2021, 9, '99' ],\n", + " [ 2022, 1, '130' ], [ 2022, 10, '0' ], [ 2022, 11, '0' ],\n", + " [ 2022, 12, '0' ], [ 2022, 2, '259' ], [ 2022, 3, '233' ],\n", + " [ 2022, 4, '91' ], [ 2022, 5, '85' ], [ 2022, 6, '22' ],\n", + " [ 2022, 7, '0' ], [ 2022, 8, '0' ], [ 2022, 9, '0' ]\n", + "]\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "mode": "lines+markers", + "name": "activity", + "y": [ + "186", + "221", + "143", + "104", + "171", + "168", + "173", + "192", + "198", + "205", + "224", + "199", + "127", + "128", + "107", + "117", + "143", + "217", + "175", + "208", + "179", + "206", + "217", + "192", + "311", + "150", + "132", + "153", + "154", + "132", + "143", + "251", + "169", + "138", + "173", + "155", + "162", + "140", + "105", + "96", + "114", + "135", + "145", + "138", + "167", + "194", + "235", + "129", + "105", + "200", + "59", + "73", + "86", + "111", + "130", + "101", + "98", + "124", + "127", + "78", + "105", + "176", + "126", + "214", + "95", + "155", + "120", + "158", + "169", + "107", + "130", + "148", + "129", + "54", + "126", + "92", + "119", + "146", + "187", + "110", + "125", + "104", + "84", + "99", + "130", + "0", + "0", + "0", + "259", + "233", + "91", + "85", + "22", + "0", + "0", + "0" + ] + } + ] + } + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "console.log(time_series.sort())\n", + "openDigger.render.plotly([\n", + " {y: time_series.map(d => d[2]) ,mode: 'lines+markers', name: 'activity'}\n", + " ], ); \n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "efb206e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "var time_series = []\n", + "for (let year = 2015;year <= 2022; year ++)\n", + " for (let m = 1; m <= 12; m ++)\n", + " {\n", + " sleep1(10)\n", + "\n", + " openDigger.driver.clickhouse.query(\n", + "`\n", + "select count(*) as a from github_log.events where repo_id = '1644196' and type = 'IssuesEvent' and action = 'opened' and toMonth(created_at) =${m} and toYear(created_at) = ${year}\n", + "\n", + "`\n", + ").then(x => {\n", + " time_series.push([year,m,x[0]!=null ?x[0]['a'] : 0]);\n", + " })\n", + " }\n" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "82a6d00e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " [ 2015, 1, '237' ], [ 2015, 10, '230' ], [ 2015, 11, '173' ],\n", + " [ 2015, 12, '146' ], [ 2015, 2, '199' ], [ 2015, 3, '206' ],\n", + " [ 2015, 4, '198' ], [ 2015, 5, '214' ], [ 2015, 6, '205' ],\n", + " [ 2015, 7, '193' ], [ 2015, 8, '209' ], [ 2015, 9, '253' ],\n", + " [ 2016, 1, '163' ], [ 2016, 10, '212' ], [ 2016, 11, '156' ],\n", + " [ 2016, 12, '129' ], [ 2016, 2, '185' ], [ 2016, 3, '224' ],\n", + " [ 2016, 4, '192' ], [ 2016, 5, '234' ], [ 2016, 6, '226' ],\n", + " [ 2016, 7, '205' ], [ 2016, 8, '282' ], [ 2016, 9, '225' ],\n", + " [ 2017, 1, '208' ], [ 2017, 10, '159' ], [ 2017, 11, '182' ],\n", + " [ 2017, 12, '172' ], [ 2017, 2, '203' ], [ 2017, 3, '188' ],\n", + " [ 2017, 4, '142' ], [ 2017, 5, '195' ], [ 2017, 6, '175' ],\n", + " [ 2017, 7, '160' ], [ 2017, 8, '190' ], [ 2017, 9, '136' ],\n", + " [ 2018, 1, '161' ], [ 2018, 10, '197' ], [ 2018, 11, '139' ],\n", + " [ 2018, 12, '114' ], [ 2018, 2, '190' ], [ 2018, 3, '180' ],\n", + " [ 2018, 4, '109' ], [ 2018, 5, '144' ], [ 2018, 6, '229' ],\n", + " [ 2018, 7, '186' ], [ 2018, 8, '283' ], [ 2018, 9, '213' ],\n", + " [ 2019, 1, '142' ], [ 2019, 10, '114' ], [ 2019, 11, '101' ],\n", + " [ 2019, 12, '111' ], [ 2019, 2, '125' ], [ 2019, 3, '153' ],\n", + " [ 2019, 4, '139' ], [ 2019, 5, '131' ], [ 2019, 6, '106' ],\n", + " [ 2019, 7, '146' ], [ 2019, 8, '161' ], [ 2019, 9, '148' ],\n", + " [ 2020, 1, '147' ], [ 2020, 10, '154' ], [ 2020, 11, '167' ],\n", + " [ 2020, 12, '172' ], [ 2020, 2, '143' ], [ 2020, 3, '181' ],\n", + " [ 2020, 4, '152' ], [ 2020, 5, '189' ], [ 2020, 6, '185' ],\n", + " [ 2020, 7, '165' ], [ 2020, 8, '173' ], [ 2020, 9, '239' ],\n", + " [ 2021, 1, '171' ], [ 2021, 10, '63' ], [ 2021, 11, '133' ],\n", + " [ 2021, 12, '168' ], [ 2021, 2, '150' ], [ 2021, 3, '217' ],\n", + " [ 2021, 4, '189' ], [ 2021, 5, '134' ], [ 2021, 6, '154' ],\n", + " [ 2021, 7, '126' ], [ 2021, 8, '102' ], [ 2021, 9, '127' ],\n", + " [ 2022, 1, '113' ], [ 2022, 10, '0' ], [ 2022, 11, '0' ],\n", + " [ 2022, 12, '0' ], [ 2022, 2, '94' ], [ 2022, 3, '132' ],\n", + " [ 2022, 4, '125' ], [ 2022, 5, '151' ], [ 2022, 6, '33' ],\n", + " [ 2022, 7, '0' ], [ 2022, 8, '0' ], [ 2022, 9, '0' ]\n", + "]\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "mode": "lines+markers", + "name": "activity", + "y": [ + "237", + "230", + "173", + "146", + "199", + "206", + "198", + "214", + "205", + "193", + "209", + "253", + "163", + "212", + "156", + "129", + "185", + "224", + "192", + "234", + "226", + "205", + "282", + "225", + "208", + "159", + "182", + "172", + "203", + "188", + "142", + "195", + "175", + "160", + "190", + "136", + "161", + "197", + "139", + "114", + "190", + "180", + "109", + "144", + "229", + "186", + "283", + "213", + "142", + "114", + "101", + "111", + "125", + "153", + "139", + "131", + "106", + "146", + "161", + "148", + "147", + "154", + "167", + "172", + "143", + "181", + "152", + "189", + "185", + "165", + "173", + "239", + "171", + "63", + "133", + "168", + "150", + "217", + "189", + "134", + "154", + "126", + "102", + "127", + "113", + "0", + "0", + "0", + "94", + "132", + "125", + "151", + "33", + "0", + "0", + "0" + ] + } + ] + } + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "console.log(time_series.sort())\n", + "openDigger.render.plotly([\n", + " {y: time_series.map(d => d[2]) ,mode: 'lines+markers', name: 'activity'}\n", + " ], ); \n" + ] + }, + { + "cell_type": "markdown", + "id": "fb9a80b2", + "metadata": {}, + "source": [ + "任务三" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "82a61405", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "var time_series = []\n", + "for (let year = 2015;year <= 2022; year ++)\n", + " for (let m = 1; m <= 12; m ++)\n", + " {\n", + " sleep1(100)\n", + "\n", + " openDigger.driver.clickhouse.query(\n", + "`\n", + "select count(*) as a from github_log.events where repo_id = '1644196' and type ='PullRequestEvent' and action = 'opened' and toMonth(created_at) =${m} and toYear(created_at) = ${year}\n", + "\n", + "`\n", + ").then(x => {\n", + " time_series.push([year,m,x[0]!=null ?x[0]['a'] : 0]);\n", + " })\n", + " }\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "67cce1f1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " [ 2015, 1, '220' ], [ 2015, 10, '217' ], [ 2015, 11, '183' ],\n", + " [ 2015, 12, '178' ], [ 2015, 2, '172' ], [ 2015, 3, '138' ],\n", + " [ 2015, 4, '165' ], [ 2015, 5, '224' ], [ 2015, 6, '248' ],\n", + " [ 2015, 7, '260' ], [ 2015, 8, '267' ], [ 2015, 9, '245' ],\n", + " [ 2016, 1, '189' ], [ 2016, 10, '205' ], [ 2016, 11, '135' ],\n", + " [ 2016, 12, '203' ], [ 2016, 2, '231' ], [ 2016, 3, '203' ],\n", + " [ 2016, 4, '225' ], [ 2016, 5, '310' ], [ 2016, 6, '301' ],\n", + " [ 2016, 7, '302' ], [ 2016, 8, '294' ], [ 2016, 9, '211' ],\n", + " [ 2017, 1, '344' ], [ 2017, 10, '318' ], [ 2017, 11, '257' ],\n", + " [ 2017, 12, '300' ], [ 2017, 2, '278' ], [ 2017, 3, '209' ],\n", + " [ 2017, 4, '260' ], [ 2017, 5, '314' ], [ 2017, 6, '298' ],\n", + " [ 2017, 7, '258' ], [ 2017, 8, '277' ], [ 2017, 9, '269' ],\n", + " [ 2018, 1, '323' ], [ 2018, 10, '179' ], [ 2018, 11, '164' ],\n", + " [ 2018, 12, '168' ], [ 2018, 2, '234' ], [ 2018, 3, '208' ],\n", + " [ 2018, 4, '123' ], [ 2018, 5, '234' ], [ 2018, 6, '255' ],\n", + " [ 2018, 7, '273' ], [ 2018, 8, '253' ], [ 2018, 9, '187' ],\n", + " [ 2019, 1, '187' ], [ 2019, 10, '174' ], [ 2019, 11, '159' ],\n", + " [ 2019, 12, '125' ], [ 2019, 2, '153' ], [ 2019, 3, '197' ],\n", + " [ 2019, 4, '181' ], [ 2019, 5, '190' ], [ 2019, 6, '139' ],\n", + " [ 2019, 7, '149' ], [ 2019, 8, '201' ], [ 2019, 9, '135' ],\n", + " [ 2020, 1, '235' ], [ 2020, 10, '269' ], [ 2020, 11, '212' ],\n", + " [ 2020, 12, '256' ], [ 2020, 2, '178' ], [ 2020, 3, '206' ],\n", + " [ 2020, 4, '192' ], [ 2020, 5, '230' ], [ 2020, 6, '209' ],\n", + " [ 2020, 7, '211' ], [ 2020, 8, '241' ], [ 2020, 9, '269' ],\n", + " [ 2021, 1, '235' ], [ 2021, 10, '76' ], [ 2021, 11, '250' ],\n", + " [ 2021, 12, '172' ], [ 2021, 2, '243' ], [ 2021, 3, '190' ],\n", + " [ 2021, 4, '191' ], [ 2021, 5, '204' ], [ 2021, 6, '240' ],\n", + " [ 2021, 7, '191' ], [ 2021, 8, '187' ], [ 2021, 9, '232' ],\n", + " [ 2022, 1, '244' ], [ 2022, 10, '0' ], [ 2022, 11, '0' ],\n", + " [ 2022, 12, '0' ], [ 2022, 2, '244' ], [ 2022, 3, '256' ],\n", + " [ 2022, 4, '170' ], [ 2022, 5, '212' ], [ 2022, 6, '57' ],\n", + " [ 2022, 7, '0' ], [ 2022, 8, '0' ], [ 2022, 9, '0' ]\n", + "]\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "mode": "lines+markers", + "name": "activity", + "y": [ + "220", + "217", + "183", + "178", + "172", + "138", + "165", + "224", + "248", + "260", + "267", + "245", + "189", + "205", + "135", + "203", + "231", + "203", + "225", + "310", + "301", + "302", + "294", + "211", + "344", + "318", + "257", + "300", + "278", + "209", + "260", + "314", + "298", + "258", + "277", + "269", + "323", + "179", + "164", + "168", + "234", + "208", + "123", + "234", + "255", + "273", + "253", + "187", + "187", + "174", + "159", + "125", + "153", + "197", + "181", + "190", + "139", + "149", + "201", + "135", + "235", + "269", + "212", + "256", + "178", + "206", + "192", + "230", + "209", + "211", + "241", + "269", + "235", + "76", + "250", + "172", + "243", + "190", + "191", + "204", + "240", + "191", + "187", + "232", + "244", + "0", + "0", + "0", + "244", + "256", + "170", + "212", + "57", + "0", + "0", + "0" + ] + } + ] + } + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "console.log(time_series.sort())\n", + "openDigger.render.plotly([\n", + " {y: time_series.map(d => d[2]) ,mode: 'lines+markers', name: 'activity'}\n", + " ], ); " + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "fd2a4cc6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "var time_series = []\n", + "for (let year = 2015;year <= 2022; year ++)\n", + " for (let m = 1; m <= 12; m ++)\n", + " {\n", + " sleep1(100)\n", + "\n", + " openDigger.driver.clickhouse.query(\n", + "`\n", + "select count(*) as a from github_log.events where repo_id = '1644196' and type ='PullRequestEvent' and pull_merged = 1 and toMonth(created_at) =${m} and toYear(created_at) = ${year}\n", + "\n", + "`\n", + ").then(x => {\n", + " time_series.push([year,m,x[0]!=null ?x[0]['a'] : 0]);\n", + " })\n", + " }" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "1124be31", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " [ 2015, 1, '173' ], [ 2015, 10, '174' ], [ 2015, 11, '151' ],\n", + " [ 2015, 12, '139' ], [ 2015, 2, '142' ], [ 2015, 3, '116' ],\n", + " [ 2015, 4, '134' ], [ 2015, 5, '172' ], [ 2015, 6, '188' ],\n", + " [ 2015, 7, '223' ], [ 2015, 8, '193' ], [ 2015, 9, '194' ],\n", + " [ 2016, 1, '156' ], [ 2016, 10, '142' ], [ 2016, 11, '106' ],\n", + " [ 2016, 12, '165' ], [ 2016, 2, '178' ], [ 2016, 3, '166' ],\n", + " [ 2016, 4, '173' ], [ 2016, 5, '257' ], [ 2016, 6, '243' ],\n", + " [ 2016, 7, '257' ], [ 2016, 8, '256' ], [ 2016, 9, '161' ],\n", + " [ 2017, 1, '288' ], [ 2017, 10, '259' ], [ 2017, 11, '215' ],\n", + " [ 2017, 12, '242' ], [ 2017, 2, '256' ], [ 2017, 3, '170' ],\n", + " [ 2017, 4, '227' ], [ 2017, 5, '255' ], [ 2017, 6, '237' ],\n", + " [ 2017, 7, '214' ], [ 2017, 8, '266' ], [ 2017, 9, '249' ],\n", + " [ 2018, 1, '261' ], [ 2018, 10, '155' ], [ 2018, 11, '132' ],\n", + " [ 2018, 12, '142' ], [ 2018, 2, '196' ], [ 2018, 3, '176' ],\n", + " [ 2018, 4, '109' ], [ 2018, 5, '188' ], [ 2018, 6, '194' ],\n", + " [ 2018, 7, '250' ], [ 2018, 8, '170' ], [ 2018, 9, '124' ],\n", + " [ 2019, 1, '135' ], [ 2019, 10, '147' ], [ 2019, 11, '96' ],\n", + " [ 2019, 12, '115' ], [ 2019, 2, '106' ], [ 2019, 3, '145' ],\n", + " [ 2019, 4, '150' ], [ 2019, 5, '141' ], [ 2019, 6, '96' ],\n", + " [ 2019, 7, '118' ], [ 2019, 8, '156' ], [ 2019, 9, '97' ],\n", + " [ 2020, 1, '179' ], [ 2020, 10, '219' ], [ 2020, 11, '176' ],\n", + " [ 2020, 12, '242' ], [ 2020, 2, '141' ], [ 2020, 3, '148' ],\n", + " [ 2020, 4, '177' ], [ 2020, 5, '200' ], [ 2020, 6, '157' ],\n", + " [ 2020, 7, '173' ], [ 2020, 8, '188' ], [ 2020, 9, '225' ],\n", + " [ 2021, 1, '165' ], [ 2021, 10, '59' ], [ 2021, 11, '224' ],\n", + " [ 2021, 12, '97' ], [ 2021, 2, '181' ], [ 2021, 3, '155' ],\n", + " [ 2021, 4, '234' ], [ 2021, 5, '148' ], [ 2021, 6, '173' ],\n", + " [ 2021, 7, '160' ], [ 2021, 8, '137' ], [ 2021, 9, '159' ],\n", + " [ 2022, 1, '203' ], [ 2022, 10, '0' ], [ 2022, 11, '0' ],\n", + " [ 2022, 12, '0' ], [ 2022, 2, '212' ], [ 2022, 3, '184' ],\n", + " [ 2022, 4, '137' ], [ 2022, 5, '197' ], [ 2022, 6, '46' ],\n", + " [ 2022, 7, '0' ], [ 2022, 8, '0' ], [ 2022, 9, '0' ]\n", + "]\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "mode": "lines+markers", + "name": "activity", + "y": [ + "173", + "174", + "151", + "139", + "142", + "116", + "134", + "172", + "188", + "223", + "193", + "194", + "156", + "142", + "106", + "165", + "178", + "166", + "173", + "257", + "243", + "257", + "256", + "161", + "288", + "259", + "215", + "242", + "256", + "170", + "227", + "255", + "237", + "214", + "266", + "249", + "261", + "155", + "132", + "142", + "196", + "176", + "109", + "188", + "194", + "250", + "170", + "124", + "135", + "147", + "96", + "115", + "106", + "145", + "150", + "141", + "96", + "118", + "156", + "97", + "179", + "219", + "176", + "242", + "141", + "148", + "177", + "200", + "157", + "173", + "188", + "225", + "165", + "59", + "224", + "97", + "181", + "155", + "234", + "148", + "173", + "160", + "137", + "159", + "203", + "0", + "0", + "0", + "212", + "184", + "137", + "197", + "46", + "0", + "0", + "0" + ] + } + ] + } + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "console.log(time_series.sort())\n", + "openDigger.render.plotly([\n", + " {y: time_series.map(d => d[2]) ,mode: 'lines+markers', name: 'activity'}\n", + " ], ); " + ] + }, + { + "cell_type": "markdown", + "id": "c80a8f58", + "metadata": {}, + "source": [ + "任务四" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "f9e27ce5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "var time_series = []\n", + "for (let year = 2015;year <= 2022; year ++)\n", + " for (let m = 1; m <= 12; m ++)\n", + " {\n", + " sleep1(100)\n", + "\n", + " openDigger.driver.clickhouse.query(\n", + "`\n", + "select count(distinct actor_id) as a from github_log.events where repo_id = '1644196' and toMonth(created_at) =${m} and toYear(created_at) = ${year}\n", + "\n", + "\n", + "`\n", + ").then(x => {\n", + " time_series.push([year,m,x[0]!=null ?x[0]['a'] : 0]);\n", + " })\n", + " }\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "6943b333", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\n", + " [ 2015, 1, '389' ], [ 2015, 10, '442' ], [ 2015, 11, '459' ],\n", + " [ 2015, 12, '409' ], [ 2015, 2, '333' ], [ 2015, 3, '418' ],\n", + " [ 2015, 4, '361' ], [ 2015, 5, '447' ], [ 2015, 6, '384' ],\n", + " [ 2015, 7, '350' ], [ 2015, 8, '354' ], [ 2015, 9, '410' ],\n", + " [ 2016, 1, '416' ], [ 2016, 10, '406' ], [ 2016, 11, '373' ],\n", + " [ 2016, 12, '318' ], [ 2016, 2, '408' ], [ 2016, 3, '419' ],\n", + " [ 2016, 4, '367' ], [ 2016, 5, '365' ], [ 2016, 6, '346' ],\n", + " [ 2016, 7, '365' ], [ 2016, 8, '402' ], [ 2016, 9, '513' ],\n", + " [ 2017, 1, '453' ], [ 2017, 10, '492' ], [ 2017, 11, '428' ],\n", + " [ 2017, 12, '462' ], [ 2017, 2, '383' ], [ 2017, 3, '396' ],\n", + " [ 2017, 4, '376' ], [ 2017, 5, '383' ], [ 2017, 6, '411' ],\n", + " [ 2017, 7, '347' ], [ 2017, 8, '389' ], [ 2017, 9, '364' ],\n", + " [ 2018, 1, '468' ], [ 2018, 10, '976' ], [ 2018, 11, '714' ],\n", + " [ 2018, 12, '798' ], [ 2018, 2, '496' ], [ 2018, 3, '513' ],\n", + " [ 2018, 4, '448' ], [ 2018, 5, '541' ], [ 2018, 6, '539' ],\n", + " [ 2018, 7, '526' ], [ 2018, 8, '5069' ], [ 2018, 9, '1435' ],\n", + " [ 2019, 1, '1074' ], [ 2019, 10, '640' ], [ 2019, 11, '658' ],\n", + " [ 2019, 12, '781' ], [ 2019, 2, '912' ], [ 2019, 3, '963' ],\n", + " [ 2019, 4, '788' ], [ 2019, 5, '805' ], [ 2019, 6, '672' ],\n", + " [ 2019, 7, '802' ], [ 2019, 8, '779' ], [ 2019, 9, '651' ],\n", + " [ 2020, 1, '696' ], [ 2020, 10, '967' ], [ 2020, 11, '1041' ],\n", + " [ 2020, 12, '963' ], [ 2020, 2, '602' ], [ 2020, 3, '826' ],\n", + " [ 2020, 4, '744' ], [ 2020, 5, '1489' ], [ 2020, 6, '905' ],\n", + " [ 2020, 7, '829' ], [ 2020, 8, '860' ], [ 2020, 9, '952' ],\n", + " [ 2021, 1, '777' ], [ 2021, 10, '443' ], [ 2021, 11, '831' ],\n", + " [ 2021, 12, '798' ], [ 2021, 2, '689' ], [ 2021, 3, '1505' ],\n", + " [ 2021, 4, '842' ], [ 2021, 5, '693' ], [ 2021, 6, '683' ],\n", + " [ 2021, 7, '2141' ], [ 2021, 8, '688' ], [ 2021, 9, '663' ],\n", + " [ 2022, 1, '765' ], [ 2022, 10, '0' ], [ 2022, 11, '0' ],\n", + " [ 2022, 12, '0' ], [ 2022, 2, '660' ], [ 2022, 3, '656' ],\n", + " [ 2022, 4, '592' ], [ 2022, 5, '753' ], [ 2022, 6, '241' ],\n", + " [ 2022, 7, '0' ], [ 2022, 8, '0' ], [ 2022, 9, '0' ]\n", + "]\n" + ] + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "mode": "lines+markers", + "name": "activity", + "y": [ + "389", + "442", + "459", + "409", + "333", + "418", + "361", + "447", + "384", + "350", + "354", + "410", + "416", + "406", + "373", + "318", + "408", + "419", + "367", + "365", + "346", + "365", + "402", + "513", + "453", + "492", + "428", + "462", + "383", + "396", + "376", + "383", + "411", + "347", + "389", + "364", + "468", + "976", + "714", + "798", + "496", + "513", + "448", + "541", + "539", + "526", + "5069", + "1435", + "1074", + "640", + "658", + "781", + "912", + "963", + "788", + "805", + "672", + "802", + "779", + "651", + "696", + "967", + "1041", + "963", + "602", + "826", + "744", + "1489", + "905", + "829", + "860", + "952", + "777", + "443", + "831", + "798", + "689", + "1505", + "842", + "693", + "683", + "2141", + "688", + "663", + "765", + "0", + "0", + "0", + "660", + "656", + "592", + "753", + "241", + "0", + "0", + "0" + ] + } + ] + } + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "console.log(time_series.sort())\n", + "openDigger.render.plotly([\n", + " {y: time_series.map(d => d[2]) ,mode: 'lines+markers', name: 'activity'}\n", + " ], ); " + ] + }, + { + "cell_type": "markdown", + "id": "b3d42ff7", + "metadata": {}, + "source": [ + "任务五" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "9d5893de", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2022 [ { a: 246.5, med: 7685.41 } ]\n", + "2021 [ { a: 114.46, med: 180.87 } ]\n", + "2016 [ { a: 50.41, med: 92.97 } ]\n", + "2017 [ { a: 79.23, med: 362.61 } ]\n", + "2015 [ { a: 33.78, med: 71.16 } ]\n", + "2020 [ { a: 115.54, med: 180.22 } ]\n", + "2019 [ { a: 91.77, med: 221.38 } ]\n", + "2018 [ { a: 78.72, med: 158.09 } ]\n" + ] + } + ], + "source": [ + "for(let i = 2015 ; i <= 2022; i++){\n", + " \n", + " openDigger.driver.clickhouse.query(\n", + " `\n", + " select round(avg((issue_closed_at - issue_created_at)/(3600*60) as b) ,2) as a ,round(median((issue_closed_at - issue_created_at) )/3600 ,2) as med from github_log.events where repo_id = '1644196' and type = 'IssuesEvent' and action = 'closed' and b< 10000 and toYear(issue_closed_at) = ${i}\n", + "\n", + " `).then(data=>console.log(i,data))\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "5b8b0909", + "metadata": {}, + "source": [ + "任务六" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "15cf8249", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2019 [ { a: 0.8, b: 7.54 } ]\n", + "2015 [ { a: 0.35, b: 2.93 } ]\n", + "2020 [ { a: 0.86, b: 11.99 } ]\n", + "2021 [ { a: 0.71, b: 10.49 } ]\n", + "2016 [ { a: 0.49, b: 3.29 } ]\n", + "2022 [ { a: 0.79, b: 16.1 } ]\n", + "2018 [ { a: 0.54, b: 3.77 } ]\n", + "2017 [ { a: 0.72, b: 5.03 } ]\n" + ] + } + ], + "source": [ + "\n", + "for(let i = 2015 ; i <= 2022; i++){\n", + " \n", + " openDigger.driver.clickhouse.query(\n", + " \n", + " `\n", + " select round(median(pull_merged_at - issue_created_at )/(3600*60),2) as a,round(avg(pull_merged_at - issue_created_at)/(3600*60),2) as b from github_log.events where repo_id = '1644196' and pull_merged = 1 and toYear(pull_merged_at) = ${i}\n", + "\n", + " `).then(data=>console.log(i,data))\n", + "}" + ] + }, + { + "cell_type": "markdown", + "id": "9ffecaf6", + "metadata": {}, + "source": [ + "任务七" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "a4c6ee89", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Promise { }" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2016 [ { med: 0.07, avg: 35.53 } ]\n", + "2015 [ { med: 0.05, avg: 22.37 } ]\n", + "2021 [ { med: 0.32, avg: 91.81 } ]\n", + "2020 [ { med: 0.29, avg: 91.05 } ]\n", + "2019 [ { med: 0.33, avg: 74.11 } ]\n", + "2017 [ { med: 0.16, avg: 51.6 } ]\n", + "2018 [ { med: 0.16, avg: 52.26 } ]\n", + "2022 [ { med: 1.02, avg: 142.85 } ]\n" + ] + } + ], + "source": [ + "for (let year = 2015; year <= 2022; year++)\n", + "openDigger.driver.clickhouse.query(\n", + "`\n", + "select round(median(a/(3600*60)),2) as med,round(avg(a/(3600*60)),2) as avg from\n", + "(select issue_title,min(issue_comment_created_at),issue_created_at ,min(issue_comment_created_at)-issue_created_at as a from github_log.events\n", + "where repo_id = '1644196' and type = 'IssueCommentEvent' and issue_comment_author_id!= issue_author_id and toYear(issue_comment_created_at) = ${year}\n", + "group by issue_title, issue_id ,issue_created_at) a\n", + "`).then(data=>console.log(year,data));" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c06035bc-e4bc-4c40-a29b-34d75e9470ac", + "metadata": {}, + "outputs": [], + "source": [ + "var startYear = 2015, endYear = 2021;\n", + "var startMonth = 1, endMonth = 12;\n", + "var years = [], months = [];\n", + "for (let i = startYear; i <= endYear; i++) {\n", + " years[i - startYear] = i;\n", + "}\n", + "for (let i = startMonth; i <= endMonth; i++) {\n", + " months[i - startMonth] = i;\n", + "}\n", + "var yms = []\n", + "for(let i = 0; i < years.length; i++) {\n", + " for (let j = 0; j < months.length; j++) {\n", + " yms.push({'y': years[i], 'm': months[j]});\n", + " }\n", + "}\n", + "// 图表横坐标\n", + "yms_axis = yms.map(item => item['y'].toString() + '-' + item['m'].toString())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "JavaScript (Node.js)", + "language": "javascript", + "name": "javascript" + }, + "language_info": { + "file_extension": ".js", + "mimetype": "application/javascript", + "name": "javascript", + "version": "16.13.0" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git "a/Final/141-kibana/\345\210\206\346\236\220\346\212\245\345\221\212.md" "b/Final/141-kibana/\345\210\206\346\236\220\346\212\245\345\221\212.md" new file mode 100644 index 0000000..c44e069 --- /dev/null +++ "b/Final/141-kibana/\345\210\206\346\236\220\346\212\245\345\221\212.md" @@ -0,0 +1,75 @@ +# Kibana 分析报告 + +## 小组分工 + +张翔宇:负责数据处理部分的运行与撰写。 + +伍泰炜:负责报告的整理与撰写。 + +## 项目简介 + +Kibana 是一个基于 Node.js 的 Elasticsearch 索引库数据统计工具,也正是 Elastic 公司旗下的业务线之一。2018 年 10 月 5 日上午 9:30,纽约证券交易所的铃声响起时,Elastic 正式成为一家上市公司。 + +它在 Elasticsearch 集群上索引的内容之上提供可视化功能。它利用 Elasticsearch 的聚合功能,生成各种图表,如柱形图,线状图,饼图等等;而且还提供了操作 Elasticsearch 索引数据的控制台,并且提供了一定的 API 提示。Kibana 还提供了一个被称为 Canvas 的演示工具,允许用户创建幻灯片,直接从 Elasticsearch 中获取实时数据。Elasticsearch、Logstash 和 Kibana 的组合被称为 "Elastic Stack"(以前是 "ELK stack"),可作为产品或服务使用。Logstash 为 Elasticsearch 提供输入流,用于存储和搜索,Kibana 访问数据用于可视化,如仪表盘。Elastic 还提供 "Beats "包,可配置为提供有关各种数据库和应用技术的预制 Kibana 可视化和仪表盘。 + +2021 年 5 月,OpenSearch 发布了 OpenSearch Dashboards 的第一个测试版,这是在 Elastic 停止开源项目并转向专有软件开发后,由 Amazon Web Services 赞助的 Kibana 的 Apache 许可分支。 + +## 版本发布历史 + +Kibana 总计有八个大版本,项目早期他们的发版流程没有那么规范,特别是从 0-3 的四个版本,没有完整的 alpha-beta-rc 这样的流程,但是随着项目的发展,可能也是软件工程知识的普及,社区开始按照规范的方式发布大版本。 + +同样,初期的原型阶段没有完全遵循 semantic versioning 但是在第四个大版本之后越发严谨。 + +## 主要贡献者的构成 + +项目最开始由 [bleskes](https://github.com/bleskes) 于 2013 年下半年创建,他属于早期的维护者。后期不再有开发动态。 + +本项目从 2014 年开始就全面由 [spalger](https://github.com/spalger) 维护,可以看到他在此后的大多数时间段都占有最高的代码贡献。并且,他应该很快成为或者已经是 Elastic 公司的职员。 + +除了 spalger 之外的开发人员流动相当显著,但也非常合理,因为这是一个至今已经 6 年的项目,spalger 能维护这么久是一件非常不容易的事情。 + +特别是有两个时间点,一个是 2016 年底,有许多早期开发者开始离职,并且在这一整年,代码变更数量呈现持续降低的趋势,但是在次年马上吸引了新的开发者,进入下一个增长阶段;另一个是 2019 年底,在这一年有个别到中期对项目具有重大贡献的开发者离职,或者减少了贡献的数量,但同使社区迎来了大量新的开发者并且一直稳定贡献至今。这背后的原因可能就是 Elastic 公司在 2018 上市了,老员工可能发生了调整,并且吸引了大量新员工。 + +因为本项目是 elastic 公司主导的开源项目,主要由公司的员工作为核心开发者进行维护,所以贡献历史有很明显的工作交接的特征。比如从 2020 年开始的前八位贡献最多的开发者,目前都是 elastic 公司的在职员工。相对于一般开源项目,本项目的外部贡献的人次虽然多,但真正的代码量占比不那么大。 + +## CI/CD 的使用情况 + +本项目使用了 jenkins 和 GitHub Action 两种自动化流水线。其中 GitHub Action 的流水线多侧重于 GitHub 相关的功能,例如: + +- 自动给 issue 打标签 +- 修正 version gaps +- 自动化 project 标签 +- 自动化 assign +- 自动测试是否可以编译 + +而 Jenkins 的流水线式多侧重于各类基准测试。 + +## 与PHPExcel的对比 + +由于phpexcel只是一个库,而kibana是一个成熟的app,所以在数值的对比上二者不具有可比性。 + +整体来看,kibana处于一个平稳发展阶段而phpexcel开发者数量不断减少。 + +特别注意的是,kibana在2018年8月份有一个很高的峰值,值得后续的研究。 + +从开发者数量来讲,phpexcel从archive开始就开始走下坡路了,直到0 + +而cabana可以做到讲开发者数量维护在500-1000这个量级,这对于社区来说很重要。 + +Kibana社区其实还分叉出Grafana,后面补充了详细的说明。 + +结合这两个项目分析,我认为活跃的主要因素还是与需求(需要优秀的监控工具)和战略(将phpexcel移到别的苦中)有关。 + + + +## Kibana 与 Grafana 的对比 + +Kibana 和 Grafana 都是知名的日志监控工具,两者颇有渊源。通过 Github 的提交记录我们可以看出 Grafana 最早是 Kibana 3 的分支 ,所以用过 Kibana 3 的人会感觉到 Grafana 的界面风格和 Kibana3 的风格相当一致。 + +回顾 Kibana 的开发历史,2011 年 Rashid Khan 用 PHP 编写了 Kibana 1.0,发现开发过程不流畅,随即第二年用 Ruby 重写实现了 Kibana 2.0,但还是不满意。2013 年,他又用 AngularJS 再次重写。当时的 Kibana3 是一个纯前端 UI 的项目,但随着功能需求越来越复杂,遇到许多问题导致了开发瓶颈。比如,基于浏览器端没有办法保证数据传输安全,并且数据都要传输到浏览器端进行渲染,复杂的监控经常卡死浏览器,很多复杂的功能需求不好在客户端实现。2014 年 Rashid 决定继续重写 Kibana,所以 Kibana3 之后的版本 Kibana4 是完全用 NodeJS 重写的新版。 + +也是大约在 2014 年 Torkel Ödegaard 注意到 Kibana3 项目,他希望将 Kibana 转变成一个时间序列和以图(Graph)为中心的仪表盘工具并且他有一些自己的设计思路,于是就开辟了一个新的项目。Grafana 的名称正是取自 Graph + Kibana。 + +Kibana 本身历经多次重写,功能特性也越来越丰富,此时的 Kibana 已不是一个简单的监控平台,而是一个实时的数据可视化分析平台。同作为业内知名的日志监控工具,两者确实各有千秋,功能也存在不相交的差异化部分,没有一方完全超越对方。如果要做技术选型,得在具体需求的基础上做决策。 + +从 Kibana 的发展历程我们也可以看出,背后支持 Rashid Khan 不停重写改进项目的力量,恐怕不只是 Elastic 公司的重视。更重要的是社区有长期保持活跃,并且有稳定的需求。也正是因为需求不断升级与特化,才会后来诞生了 Grafana,并且两者都能发展得很好。 diff --git a/gitlog.txt b/gitlog.txt new file mode 100755 index 0000000..1bb89db --- /dev/null +++ b/gitlog.txt @@ -0,0 +1,721 @@ +--1651131644--2022-04-28T15:40:44+08:00--GitHub + + +21 0 LICENSE +1 0 README.md +--1651131752--2022-04-28T15:42:32+08:00--GitHub + + +5 1 README.md +--1651593453--2022-05-03T23:57:33+08:00--GitHub + + +152 0 archived_report(1).md +5561 0 part02-analysis.ipynb +--1651916138--2022-05-07T17:35:38+08:00--GitHub + + +2486 0 analysis.ipynb +- - "\350\221\233\350\277\233_\345\221\250\346\226\207\346\240\274_\345\274\200\346\272\220\350\257\276\347\250\213\346\234\237\344\270\255\344\275\234\344\270\232.pdf" +--1652082327--2022-05-09T15:45:27+08:00--GitHub + + +4803 0 alibaba_vlayout.ipynb +--1652324371--2022-05-12T10:59:31+08:00--Kertin + + +- - .DS_Store +- - 14-anko/.DS_Store +0 0 analysis.ipynb => 14-anko/analysis.ipynb +- - "\350\221\233\350\277\233_\345\221\250\346\226\207\346\240\274_\345\274\200\346\272\220\350\257\276\347\250\213\346\234\237\344\270\255\344\275\234\344\270\232.pdf" => "14-anko/\350\221\233\350\277\233_\345\221\250\346\226\207\346\240\274_\345\274\200\346\272\220\350\257\276\347\250\213\346\234\237\344\270\255\344\275\234\344\270\232.pdf" +--1652329954--2022-05-12T12:32:34+08:00--TinyChoo + + +- - .DS_Store +- - 5-Faker/.DS_Store +1713 0 5-Faker/5-Faker.ipynb +- - "5-Faker/\345\210\206\346\236\220\346\212\245\345\221\212.pdf" +--1652330874--2022-05-12T12:47:54+08:00--1012598167 + + +5561 0 11-upterm/upterm.ipynb +152 0 11-upterm/upterm.md +--1652331712--2022-05-12T13:01:52+08:00--1012598167 + + +0 152 archived_report(1).md +0 5561 part02-analysis.ipynb +--1652331895--2022-05-12T13:04:55+08:00--1012598167 + + +75 75 11-upterm/upterm.ipynb +--1652347645--2022-05-12T17:27:25+08:00--GitHub + + +0 4803 alibaba_vlayout.ipynb +--1652348136--2022-05-12T17:35:36+08:00--GitHub + + +1 0 25-vlayout/1.txt +--1652348190--2022-05-12T17:36:30+08:00--GitHub + + +- - 25-vlayout/alibaba_vlayout.docx +5629 0 25-vlayout/alibaba_vlayout.ipynb +--1652348267--2022-05-12T17:37:47+08:00--GitHub + + +0 1 25-vlayout/1.txt +--1652361878--2022-05-12T21:24:38+08:00--GitHub + +--1652363710--2022-05-12T21:55:10+08:00--GitHub + + +- - 25-vlayout/alibaba_vlayout.docx +--1652363745--2022-05-12T21:55:45+08:00--GitHub + + +- - 25-vlayout/alibaba_vlayout.pdf +--1652364076--2022-05-12T22:01:16+08:00--GitHub + +--1652364127--2022-05-12T22:02:07+08:00--GitHub + +--1652373490--2022-05-13T00:38:10+08:00--GitHub + + +- - 4-jQuery-File-Upload/images/1.png +- - 4-jQuery-File-Upload/images/11.png +- - 4-jQuery-File-Upload/images/2.png +- - 4-jQuery-File-Upload/images/3.png +- - 4-jQuery-File-Upload/images/4.png +- - 4-jQuery-File-Upload/images/5.png +- - 4-jQuery-File-Upload/images/6.png +- - "4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\205\263\351\227\255Issue\345\233\276.jpg" +- - "4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\205\263\351\227\255Issue\350\241\250.jpg" +- - "4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\220\210\345\271\266PR\345\233\276.jpg" +- - "4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\220\210\345\271\266PR\350\241\250.jpg" +- - "4-jQuery-File-Upload/images/\346\226\260\345\242\236star\345\222\214fork\345\233\276.jpg" +- - "4-jQuery-File-Upload/images/\346\226\260\345\242\236star\345\222\214fork\350\241\250.jpg" +- - "4-jQuery-File-Upload/images/\346\264\273\350\267\203\347\232\204\345\274\200\345\217\221\350\200\205\346\200\273\346\225\260\345\233\276.jpg" +- - "4-jQuery-File-Upload/images/\346\264\273\350\267\203\347\232\204\345\274\200\345\217\221\350\200\205\346\200\273\346\225\260\350\241\250.jpg" +1770 0 4-jQuery-File-Upload/jquery_file_upload.ipynb +226 0 "4-jQuery-File-Upload/\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652374104--2022-05-13T00:48:24+08:00--GitHub + + +15 15 "4-jQuery-File-Upload/\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652374168--2022-05-13T00:49:28+08:00--GitHub + + +1 1 "4-jQuery-File-Upload/\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652417587--2022-05-13T12:53:07+08:00--GitHub + +--1652417939--2022-05-13T12:58:59+08:00--GitHub + + +1524 0 38-dagger/38-dagger-history.ipynb +63 0 38-dagger/38-dagger-report.md +--1652443778--2022-05-13T20:09:38+08:00--PPParticle + + +1854 0 31-boltdb/31-boltdb.ipynb +--1652452829--2022-05-13T22:40:29+08:00--PPParticle + + +29 29 31-boltdb/31-boltdb.ipynb +--1652455342--2022-05-13T23:22:22+08:00--PPParticle + + +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641191471643.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641541057102.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641541828691.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641542975132.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1645242060496.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652445348371.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652445396411.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652448298683.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652448397772.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652451943654.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275 (1).png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275 (2).png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275 (3).png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275.png" +408 0 "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652456030--2022-05-13T23:33:50+08:00--PPParticle + + +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/2.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/3.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/4.png" +4 4 "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652456165--2022-05-13T23:36:05+08:00--GitHub + + +2 2 "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652505806--2022-05-14T13:23:26+08:00--Chen Lixiang + + +12 1 "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652517460--2022-05-14T16:37:40+08:00--GitHub + +--1652521501--2022-05-14T17:45:01+08:00--bnc1010 + + +2113 0 36-universe/36-universe.ipynb +37 0 36-universe/36-universe.md +--1652527488--2022-05-14T19:24:48+08:00--GitHub + + +6 0 9-pop/pop.md +--1652527777--2022-05-14T19:29:37+08:00--GitHub + + +0 6 9-pop/pop.md +--1652528005--2022-05-14T19:33:25+08:00--GitHub + + +11 0 "9-pop/\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652542357--2022-05-14T23:32:37+08:00--GitHub + + +2488 0 23-jquery-cookie/23-jquery-cookie.ipynb +- - 23-jquery-cookie/23-jquery-cookie_report/picture/active_developer_per_month.png +- - 23-jquery-cookie/23-jquery-cookie_report/picture/fork_per_month.png +- - 23-jquery-cookie/23-jquery-cookie_report/picture/issue_close_per_month.png +- - 23-jquery-cookie/23-jquery-cookie_report/picture/issue_open_per_month.png +- - 23-jquery-cookie/23-jquery-cookie_report/picture/pr_merge_per_month.png +- - 23-jquery-cookie/23-jquery-cookie_report/picture/pr_open_per_month.png +- - 23-jquery-cookie/23-jquery-cookie_report/picture/star_per_month.png +224 0 23-jquery-cookie/23-jquery-cookie_report/project_analysis_report.md +--1652578804--2022-05-15T09:40:04+08:00--liuxin + + +1730 0 26-caffe2/caffe2-history.ipynb +124 0 26-caffe2/caffe2-report.md +--1652579081--2022-05-15T09:44:41+08:00--liuxin + + +9 1 26-caffe2/caffe2-report.md +--1652579273--2022-05-15T09:47:53+08:00--liuxin + + +13 10 26-caffe2/caffe2-report.md +--1652579400--2022-05-15T09:50:00+08:00--liuxin + + +9 9 26-caffe2/caffe2-report.md +--1652586138--2022-05-15T11:42:18+08:00--liuhao + + +559 0 1-angular.js/1-angularjs.ipynb +361 0 1-angular.js/1-angularjs.md +--1652591033--2022-05-15T13:03:53+08:00--kyang + + +- - .DS_Store +- - .DS_Store => 10-RxJS/.DS_Store +1564 0 10-RxJS/rxjs.ipynb +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515105541533.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110021476.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110117777.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110312401.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110357936.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110832284.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110852749.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515111048439.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515111351039.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515111421679.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515120157171.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515120225448.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515120249775.png" +157 0 "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.md" +--1652592742--2022-05-15T13:32:22+08:00--GitHub + + +1 1 "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.md" +--1652595570--2022-05-15T14:19:30+08:00--Kx Chen + + +1391 0 2-edex-ui/edex-ui.ipynb +102 0 2-edex-ui/edex-ui.md +--1652598607--2022-05-15T15:10:07+08:00--GitHub + + +1 0 27-golang/dep +--1652598641--2022-05-15T15:10:41+08:00--GitHub + + +0 1 27-golang/dep +--1652598667--2022-05-15T15:11:07+08:00--GitHub + + +1 0 27-golang-dep +--1652598696--2022-05-15T15:11:36+08:00--GitHub + + +0 1 27-golang-dep +--1652598846--2022-05-15T15:14:06+08:00--GitHub + + +1 0 golang-dep/1 +--1652598907--2022-05-15T15:15:07+08:00--GitHub + + +0 1 golang-dep/1 +--1652598957--2022-05-15T15:15:57+08:00--GitHub + + +1 0 27-golang-dep/1 +--1652599185--2022-05-15T15:19:45+08:00--GitHub + + +1741 0 27-golang-dep/golang_dep.ipynb +- - 27-golang-dep/golang_dep.pdf +--1652599201--2022-05-15T15:20:01+08:00--GitHub + + +0 1 27-golang-dep/1 +--1652602387--2022-05-15T16:13:07+08:00--GitHub + + +1 0 29-iscroll +--1652602439--2022-05-15T16:13:59+08:00--GitHub + + +0 1 29-iscroll +--1652602776--2022-05-15T16:19:36+08:00--GitHub + + +1 0 29-iscroll/members +--1652603048--2022-05-15T16:24:08+08:00--GitHub + + +2211 0 29-iscroll/29-iscroll.ipynb +121 0 29-iscroll/29-iscroll.md +--1652603063--2022-05-15T16:24:23+08:00--GitHub + + +0 1 29-iscroll/members +--1652614345--2022-05-15T19:32:25+08:00--foursevenlove + + +1915 0 24-vmware-archivekubeless/vmware-archivekubeless.ipynb +51 0 "24-vmware-archivekubeless/\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652616098--2022-05-15T20:01:38+08:00--niuyuean + + +3466 0 18-send/analysis.ipynb +- - 18-send/pic/analysis1.png +- - 18-send/pic/analysis2.png +- - 18-send/pic/analysis3.png +- - 18-send/pic/analysis4.png +- - 18-send/pic/analysis5.png +- - 18-send/pic/contributor.png +91 0 "18-send/\346\234\237\344\270\255\344\275\234\344\270\232.md" +--1652616279--2022-05-15T20:04:39+08:00--niuyuean + + +5 5 "18-send/\346\234\237\344\270\255\344\275\234\344\270\232.md" +--1652616565--2022-05-15T20:09:25+08:00--niuyuean + + +0 0 18-send/{analysis.ipynb => send.ipynb} +1 1 "18-send/\346\234\237\344\270\255\344\275\234\344\270\232.md" => 18-send/send.md +--1652621070--2022-05-15T21:24:30+08:00--VictoryBlue + + +- - .DS_Store +3871 0 30-turbolinks/Analysis.ipynb +- - 30-turbolinks/report.pdf +--1652621381--2022-05-15T21:29:41+08:00--VictoryBlue + + +- - .DS_Store +535 722 30-turbolinks/Analysis.ipynb +--1652621530--2022-05-15T21:32:10+08:00--GitHub + + +1 0 39-marp/111 +--1652621562--2022-05-15T21:32:42+08:00--GitHub + + +1418 0 39-marp/39-marp-analysis.ipynb +377 0 39-marp/39-marp-report.md +--1652621619--2022-05-15T21:33:39+08:00--GitHub + + +0 1 39-marp/111 +--1652623523--2022-05-15T22:05:23+08:00--GGEthan + + +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 1.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 10.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 2.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 3.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 4.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 5.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 6.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 7.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 8.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 9.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled.png +- - 6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/newplot.png +- - "6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/\346\210\252\345\261\2172022-05-15_20.05.21.png" +3322 0 6-streisand/6-streisand.ipynb +303 0 6-streisand/6-streisand.md +- - 6-streisand/6-streisand.pdf +--1652624367--2022-05-15T22:19:27+08:00--GGEthan + + +21 21 LICENSE +5 5 README.md +--1652626105--2022-05-15T22:48:25+08:00--CE1999 + + +1984 0 33-Sourcetrail/33-Sourcetrail.ipynb +169 0 33-Sourcetrail/33-Sourcetrail.md +- - 33-Sourcetrail/33-Sourcetrail.pdf +- - 33-Sourcetrail/assets/image-20220515101326515.png +- - 33-Sourcetrail/assets/image-20220515101835843.png +- - 33-Sourcetrail/assets/image-20220515102209855.png +- - 33-Sourcetrail/assets/image-20220515102545169.png +- - 33-Sourcetrail/assets/image-20220515103723450.png +- - 33-Sourcetrail/assets/image-20220515104251603.png +- - 33-Sourcetrail/assets/image-20220515111356484.png +- - 33-Sourcetrail/assets/image-20220515111445361.png +- - 33-Sourcetrail/assets/image-20220515221113738.png +--1652627361--2022-05-15T23:09:21+08:00--GitHub + + +2756 0 13-material.ipynb +248 0 13-material.md +--1652627735--2022-05-15T23:15:35+08:00--massami + + +1637 0 35-SimianArmy/SimianArmy.ipynb +114 0 35-SimianArmy/SimianArmy.md +--1652629728--2022-05-15T23:48:48+08:00--zhouhuahui + + +83 0 "7-normalizer/paularmstrong-normalizer\345\210\206\346\236\220\346\212\245\345\221\212.md" +3540 0 "7-normalizer/\351\242\230\347\233\2562\345\210\206\346\236\220.ipynb" +--1652635465--2022-05-16T01:24:25+08:00--xgdyp + + +2762 0 20-PHPExcel/analysis.ipynb +2847 0 "20-PHPExcel/\345\274\200\346\272\220\350\257\276\347\250\213\346\234\237\344\270\255\344\275\234\344\270\232.md" +--1652687310--2022-05-16T15:48:30+08:00--GitHub + + +0 11 "9-pop/\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652687387--2022-05-16T15:49:47+08:00--GitHub + + +1 0 "9-pop/\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652687436--2022-05-16T15:50:36+08:00--GitHub + + +161 0 9-pop/Pop.md +--1652687459--2022-05-16T15:50:59+08:00--GitHub + + +0 1 "9-pop/\345\210\206\346\236\220\346\212\245\345\221\212.md" +--1652693688--2022-05-16T17:34:48+08:00--GitHub + + +1865 0 9-pop/facebook-pop.ipynb +- - 9-pop/image-20220516024051955.png +- - 9-pop/image-20220516024747107.png +- - 9-pop/image-20220516024945002.png +- - 9-pop/image-20220516030214712.png +- - 9-pop/image-20220516044927033.png +- - 9-pop/image-20220516082152120.png +--1652694623--2022-05-16T17:50:23+08:00--GitHub + + +2 0 9-pop/Pop.md +--1652695054--2022-05-16T17:57:34+08:00--GitHub + + +- - 9-pop/image-1.png +- - 9-pop/image-2.png +- - 9-pop/image-3.png +- - 9-pop/image-4.png +- - 9-pop/image-5.png +--1652695475--2022-05-16T18:04:35+08:00--GitHub + + +9 7 9-pop/Pop.md +--1652695495--2022-05-16T18:04:55+08:00--GitHub + + +- - 9-pop/image-1.png +--1652695507--2022-05-16T18:05:07+08:00--GitHub + + +- - 9-pop/image-2.png +--1652695517--2022-05-16T18:05:17+08:00--GitHub + + +- - 9-pop/image-3.png +--1652695527--2022-05-16T18:05:27+08:00--GitHub + + +- - 9-pop/image-4.png +--1652695535--2022-05-16T18:05:35+08:00--GitHub + + +- - 9-pop/image-5.png +--1652695862--2022-05-16T18:11:02+08:00--GitHub + + +- - 9-pop/image-20220516024051955.png +- - 9-pop/image-20220516024747107.png +- - 9-pop/image-20220516044927033.png +--1652715258--2022-05-16T23:34:18+08:00--GitHub + + +1 0 28-magnetW/.data +--1652715329--2022-05-16T23:35:29+08:00--GitHub + + +2018 0 28-magnetW/28-magnetW.ipynb +- - 28-magnetW/28-magnetW.pdf +--1652715351--2022-05-16T23:35:51+08:00--GitHub + +--1652762862--2022-05-17T12:47:42+08:00--GitHub + +--1652762930--2022-05-17T12:48:50+08:00--GitHub + +--1652762985--2022-05-17T12:49:45+08:00--GitHub + +--1652763041--2022-05-17T12:50:41+08:00--GitHub + +--1652763087--2022-05-17T12:51:27+08:00--GitHub + +--1652763144--2022-05-17T12:52:24+08:00--GitHub + +--1652763251--2022-05-17T12:54:11+08:00--GitHub + +--1652764411--2022-05-17T13:13:31+08:00--xgdyp + + +- - 20-PHPExcel/.DS_Store +0 2762 20-PHPExcel/analysis.ipynb +1476 0 20-PHPExcel/phpexcel.ipynb +--1652772160--2022-05-17T15:22:40+08:00--GitHub + + +- - .DS_Store +--1652772335--2022-05-17T15:25:35+08:00--GitHub + +--1652772419--2022-05-17T15:26:59+08:00--GitHub + +--1652772585--2022-05-17T15:29:45+08:00--GitHub + +--1652772655--2022-05-17T15:30:55+08:00--GitHub + +--1652772706--2022-05-17T15:31:46+08:00--GitHub + +--1652772810--2022-05-17T15:33:30+08:00--GitHub + +--1652773254--2022-05-17T15:40:54+08:00--GitHub + +--1652773295--2022-05-17T15:41:35+08:00--GitHub + +--1652773327--2022-05-17T15:42:07+08:00--GitHub + +--1652773482--2022-05-17T15:44:42+08:00--GitHub + +--1652773544--2022-05-17T15:45:44+08:00--GitHub + +--1652773605--2022-05-17T15:46:45+08:00--GitHub + +--1652773659--2022-05-17T15:47:39+08:00--GitHub + +--1652859576--2022-05-18T15:39:36+08:00--GitHub + +--1652862166--2022-05-18T16:22:46+08:00--GitHub + + +- - .DS_Store +--1652862375--2022-05-18T16:26:15+08:00--xiaoya + + +- - 14-anko/.DS_Store +- - 20-PHPExcel/.DS_Store +- - 5-Faker/.DS_Store +0 0 {1-angular.js => Midterm/1-angular.js}/1-angularjs.ipynb +0 0 {1-angular.js => Midterm/1-angular.js}/1-angularjs.md +0 0 {11-upterm => Midterm/11-upterm}/upterm.ipynb +0 0 {11-upterm => Midterm/11-upterm}/upterm.md +0 0 13-material.ipynb => Midterm/13-material/13-material.ipynb +0 0 13-material.md => Midterm/13-material/13-material.md +0 0 {14-anko => Midterm/14-anko}/analysis.ipynb +- - "14-anko/\350\221\233\350\277\233_\345\221\250\346\226\207\346\240\274_\345\274\200\346\272\220\350\257\276\347\250\213\346\234\237\344\270\255\344\275\234\344\270\232.pdf" => "Midterm/14-anko/\350\221\233\350\277\233_\345\221\250\346\226\207\346\240\274_\345\274\200\346\272\220\350\257\276\347\250\213\346\234\237\344\270\255\344\275\234\344\270\232.pdf" +- - {18-send => Midterm/18-send}/pic/analysis1.png +- - {18-send => Midterm/18-send}/pic/analysis2.png +- - {18-send => Midterm/18-send}/pic/analysis3.png +- - {18-send => Midterm/18-send}/pic/analysis4.png +- - {18-send => Midterm/18-send}/pic/analysis5.png +- - {18-send => Midterm/18-send}/pic/contributor.png +0 0 {18-send => Midterm/18-send}/send.ipynb +0 0 {18-send => Midterm/18-send}/send.md +0 0 {2-edex-ui => Midterm/2-edex-ui}/edex-ui.ipynb +0 0 {2-edex-ui => Midterm/2-edex-ui}/edex-ui.md +0 0 {20-PHPExcel => Midterm/20-PHPExcel}/phpexcel.ipynb +0 0 "20-PHPExcel/\345\274\200\346\272\220\350\257\276\347\250\213\346\234\237\344\270\255\344\275\234\344\270\232.md" => "Midterm/20-PHPExcel/\345\274\200\346\272\220\350\257\276\347\250\213\346\234\237\344\270\255\344\275\234\344\270\232.md" +0 0 {23-jquery-cookie => Midterm/23-jquery-cookie}/23-jquery-cookie.ipynb +- - {23-jquery-cookie => Midterm/23-jquery-cookie}/23-jquery-cookie_report/picture/active_developer_per_month.png +- - {23-jquery-cookie => Midterm/23-jquery-cookie}/23-jquery-cookie_report/picture/fork_per_month.png +- - {23-jquery-cookie => Midterm/23-jquery-cookie}/23-jquery-cookie_report/picture/issue_close_per_month.png +- - {23-jquery-cookie => Midterm/23-jquery-cookie}/23-jquery-cookie_report/picture/issue_open_per_month.png +- - {23-jquery-cookie => Midterm/23-jquery-cookie}/23-jquery-cookie_report/picture/pr_merge_per_month.png +- - {23-jquery-cookie => Midterm/23-jquery-cookie}/23-jquery-cookie_report/picture/pr_open_per_month.png +- - {23-jquery-cookie => Midterm/23-jquery-cookie}/23-jquery-cookie_report/picture/star_per_month.png +0 0 {23-jquery-cookie => Midterm/23-jquery-cookie}/23-jquery-cookie_report/project_analysis_report.md +0 0 {24-vmware-archivekubeless => Midterm/24-vmware-archivekubeless}/vmware-archivekubeless.ipynb +0 0 "24-vmware-archivekubeless/\345\210\206\346\236\220\346\212\245\345\221\212.md" => "Midterm/24-vmware-archivekubeless/\345\210\206\346\236\220\346\212\245\345\221\212.md" +0 0 {25-vlayout => Midterm/25-vlayout}/alibaba_vlayout.ipynb +- - {25-vlayout => Midterm/25-vlayout}/alibaba_vlayout.pdf +0 0 {26-caffe2 => Midterm/26-caffe2}/caffe2-history.ipynb +0 0 {26-caffe2 => Midterm/26-caffe2}/caffe2-report.md +0 0 {27-golang-dep => Midterm/27-golang-dep}/golang_dep.ipynb +- - {27-golang-dep => Midterm/27-golang-dep}/golang_dep.pdf +0 0 {28-magnetW => Midterm/28-magnetW}/.data +0 0 {28-magnetW => Midterm/28-magnetW}/28-magnetW.ipynb +- - {28-magnetW => Midterm/28-magnetW}/28-magnetW.pdf +0 0 {29-iscroll => Midterm/29-iscroll}/29-iscroll.ipynb +0 0 {29-iscroll => Midterm/29-iscroll}/29-iscroll.md +0 0 {30-turbolinks => Midterm/30-turbolinks}/Analysis.ipynb +- - {30-turbolinks => Midterm/30-turbolinks}/report.pdf +0 0 {31-boltdb => Midterm/31-boltdb}/31-boltdb.ipynb +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641191471643.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641191471643.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641541057102.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641541057102.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641541828691.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641541828691.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641542975132.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1641542975132.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1645242060496.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1645242060496.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652445348371.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652445348371.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652445396411.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652445396411.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652448298683.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652448298683.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652448397772.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652448397772.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652451943654.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/1652451943654.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/2.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/2.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/3.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/3.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/4.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/4.png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275 (1).png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275 (1).png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275 (2).png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275 (2).png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275 (3).png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275 (3).png" +- - "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275.png" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/typora-user-images/\344\270\213\350\275\275.png" +0 0 "31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212.md" => "Midterm/31-boltdb/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212/\351\241\271\347\233\256\345\210\206\346\236\220\346\212\245\345\221\212.md" +0 0 {33-Sourcetrail => Midterm/33-Sourcetrail}/33-Sourcetrail.ipynb +0 0 {33-Sourcetrail => Midterm/33-Sourcetrail}/33-Sourcetrail.md +- - {33-Sourcetrail => Midterm/33-Sourcetrail}/33-Sourcetrail.pdf +- - {33-Sourcetrail => Midterm/33-Sourcetrail}/assets/image-20220515101326515.png +- - {33-Sourcetrail => Midterm/33-Sourcetrail}/assets/image-20220515101835843.png +- - {33-Sourcetrail => Midterm/33-Sourcetrail}/assets/image-20220515102209855.png +- - {33-Sourcetrail => Midterm/33-Sourcetrail}/assets/image-20220515102545169.png +- - {33-Sourcetrail => Midterm/33-Sourcetrail}/assets/image-20220515103723450.png +- - {33-Sourcetrail => Midterm/33-Sourcetrail}/assets/image-20220515104251603.png +- - {33-Sourcetrail => Midterm/33-Sourcetrail}/assets/image-20220515111356484.png +- - {33-Sourcetrail => Midterm/33-Sourcetrail}/assets/image-20220515111445361.png +- - {33-Sourcetrail => Midterm/33-Sourcetrail}/assets/image-20220515221113738.png +0 0 {35-SimianArmy => Midterm/35-SimianArmy}/SimianArmy.ipynb +0 0 {35-SimianArmy => Midterm/35-SimianArmy}/SimianArmy.md +0 0 {36-universe => Midterm/36-universe}/36-universe.ipynb +0 0 {36-universe => Midterm/36-universe}/36-universe.md +0 0 {38-dagger => Midterm/38-dagger}/38-dagger-history.ipynb +0 0 {38-dagger => Midterm/38-dagger}/38-dagger-report.md +0 0 {39-marp => Midterm/39-marp}/39-marp-analysis.ipynb +0 0 {39-marp => Midterm/39-marp}/39-marp-report.md +- - {4-jQuery-File-Upload => Midterm/4-jQuery-File-Upload}/images/1.png +- - {4-jQuery-File-Upload => Midterm/4-jQuery-File-Upload}/images/11.png +- - {4-jQuery-File-Upload => Midterm/4-jQuery-File-Upload}/images/2.png +- - {4-jQuery-File-Upload => Midterm/4-jQuery-File-Upload}/images/3.png +- - {4-jQuery-File-Upload => Midterm/4-jQuery-File-Upload}/images/4.png +- - {4-jQuery-File-Upload => Midterm/4-jQuery-File-Upload}/images/5.png +- - {4-jQuery-File-Upload => Midterm/4-jQuery-File-Upload}/images/6.png +- - "4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\205\263\351\227\255Issue\345\233\276.jpg" => "Midterm/4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\205\263\351\227\255Issue\345\233\276.jpg" +- - "4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\205\263\351\227\255Issue\350\241\250.jpg" => "Midterm/4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\205\263\351\227\255Issue\350\241\250.jpg" +- - "4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\220\210\345\271\266PR\345\233\276.jpg" => "Midterm/4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\220\210\345\271\266PR\345\233\276.jpg" +- - "4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\220\210\345\271\266PR\350\241\250.jpg" => "Midterm/4-jQuery-File-Upload/images/\346\211\223\345\274\200\345\222\214\345\220\210\345\271\266PR\350\241\250.jpg" +- - "4-jQuery-File-Upload/images/\346\226\260\345\242\236star\345\222\214fork\345\233\276.jpg" => "Midterm/4-jQuery-File-Upload/images/\346\226\260\345\242\236star\345\222\214fork\345\233\276.jpg" +- - "4-jQuery-File-Upload/images/\346\226\260\345\242\236star\345\222\214fork\350\241\250.jpg" => "Midterm/4-jQuery-File-Upload/images/\346\226\260\345\242\236star\345\222\214fork\350\241\250.jpg" +- - "4-jQuery-File-Upload/images/\346\264\273\350\267\203\347\232\204\345\274\200\345\217\221\350\200\205\346\200\273\346\225\260\345\233\276.jpg" => "Midterm/4-jQuery-File-Upload/images/\346\264\273\350\267\203\347\232\204\345\274\200\345\217\221\350\200\205\346\200\273\346\225\260\345\233\276.jpg" +- - "4-jQuery-File-Upload/images/\346\264\273\350\267\203\347\232\204\345\274\200\345\217\221\350\200\205\346\200\273\346\225\260\350\241\250.jpg" => "Midterm/4-jQuery-File-Upload/images/\346\264\273\350\267\203\347\232\204\345\274\200\345\217\221\350\200\205\346\200\273\346\225\260\350\241\250.jpg" +0 0 {4-jQuery-File-Upload => Midterm/4-jQuery-File-Upload}/jquery_file_upload.ipynb +0 0 "4-jQuery-File-Upload/\345\210\206\346\236\220\346\212\245\345\221\212.md" => "Midterm/4-jQuery-File-Upload/\345\210\206\346\236\220\346\212\245\345\221\212.md" +0 0 {5-Faker => Midterm/5-Faker}/5-Faker.ipynb +- - "5-Faker/\345\210\206\346\236\220\346\212\245\345\221\212.pdf" => "Midterm/5-Faker/\345\210\206\346\236\220\346\212\245\345\221\212.pdf" +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 1.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 10.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 2.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 3.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 4.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 5.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 6.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 7.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 8.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled 9.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/Untitled.png +- - {6-streisand => Midterm/6-streisand}/6-streisand 41f84b9ea1c24a7eaee76647a534062a/newplot.png +- - "6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/\346\210\252\345\261\2172022-05-15_20.05.21.png" => "Midterm/6-streisand/6-streisand 41f84b9ea1c24a7eaee76647a534062a/\346\210\252\345\261\2172022-05-15_20.05.21.png" +0 0 {6-streisand => Midterm/6-streisand}/6-streisand.ipynb +0 0 {6-streisand => Midterm/6-streisand}/6-streisand.md +- - {6-streisand => Midterm/6-streisand}/6-streisand.pdf +0 0 "7-normalizer/paularmstrong-normalizer\345\210\206\346\236\220\346\212\245\345\221\212.md" => "Midterm/7-normalizer/paularmstrong-normalizer\345\210\206\346\236\220\346\212\245\345\221\212.md" +0 0 "7-normalizer/\351\242\230\347\233\2562\345\210\206\346\236\220.ipynb" => "Midterm/7-normalizer/\351\242\230\347\233\2562\345\210\206\346\236\220.ipynb" +0 0 {9-pop => Midterm/9-pop}/Pop.md +0 0 {9-pop => Midterm/9-pop}/facebook-pop.ipynb +- - {9-pop => Midterm/9-pop}/image-20220516024051955.png +- - {9-pop => Midterm/9-pop}/image-20220516024747107.png +- - {9-pop => Midterm/9-pop}/image-20220516024945002.png +- - {9-pop => Midterm/9-pop}/image-20220516030214712.png +- - {9-pop => Midterm/9-pop}/image-20220516044927033.png +- - {9-pop => Midterm/9-pop}/image-20220516082152120.png +--1652874580--2022-05-18T19:49:40+08:00--GitHub + + +- - .DS_Store +--1653369934--2022-05-24T13:25:34+08:00--GitHub + + +- - 10-RxJS/.DS_Store +--1653379686--2022-05-24T16:08:06+08:00--GitHub + +--1653391580--2022-05-24T19:26:20+08:00--bifenglin + + +- - .DS_Store +421 0 Midterm/17-incubator-weex/homework.ipynb +108 0 "Midterm/17-incubator-weex/\345\274\200\346\272\220\350\257\276\347\250\213\346\234\237\344\270\255\344\275\234\344\270\232.md" +--1653487490--2022-05-25T22:04:50+08:00--GitHub + +--1653577911--2022-05-26T23:11:51+08:00--xiaoya + + +0 0 {10-RxJS => Midterm/10-RxJS}/rxjs.ipynb +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515105541533.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515105541533.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110021476.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110021476.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110117777.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110117777.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110312401.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110312401.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110357936.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110357936.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110832284.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110832284.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110852749.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515110852749.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515111048439.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515111048439.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515111351039.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515111351039.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515111421679.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515111421679.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515120157171.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515120157171.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515120225448.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515120225448.png" +- - "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515120249775.png" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.assets/image-20220515120249775.png" +0 0 "10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.md" => "Midterm/10-RxJS/\345\274\200\346\272\220\346\234\237\344\270\255\346\212\245\345\221\212.md" +--1653577954--2022-05-26T23:12:34+08:00--GitHub + + +- - .DS_Store +--1653817881--2022-05-29T17:51:21+08:00--xgdyp + + +27 2828 "Midterm/20-PHPExcel/\345\274\200\346\272\220\350\257\276\347\250\213\346\234\237\344\270\255\344\275\234\344\270\232.md"