From db03535ee91b25ffcf1b58ebbedb05d8689ebcda Mon Sep 17 00:00:00 2001 From: Klemek Date: Tue, 18 Jun 2019 19:54:58 +0200 Subject: [PATCH] Initial commit --- .gitattributes | 2 ++ .gitignore | 2 ++ README.md | 73 ++++++++++++++++++++++++++++++++++++++++++++++++ uml/article.png | Bin 0 -> 19574 bytes uml/article.txt | 28 +++++++++++++++++++ uml/root.png | Bin 0 -> 15363 bytes uml/root.txt | 27 ++++++++++++++++++ uml/rss.png | Bin 0 -> 10359 bytes uml/rss.txt | 17 +++++++++++ uml/webhook.png | Bin 0 -> 13397 bytes uml/webhook.txt | 22 +++++++++++++++ 11 files changed, 171 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 README.md create mode 100644 uml/article.png create mode 100644 uml/article.txt create mode 100644 uml/root.png create mode 100644 uml/root.txt create mode 100644 uml/rss.png create mode 100644 uml/rss.txt create mode 100644 uml/webhook.png create mode 100644 uml/webhook.txt diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2d2b47d --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea +node_modules \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a30a6d7 --- /dev/null +++ b/README.md @@ -0,0 +1,73 @@ +# GitBlog.md (WIP) +> This is a work in progress, some information written here might not be true yet. + +A static blog using Markdown pulled from your git repository. + +## Flow + +![root](./uml/root.png) + +![article](./uml/article.png) + +![webhook](./uml/webhook.png) + +![rss](./uml/rss.png) + +## Installation +**1. Download the latest version from the repo** +```bash +git clone https://github.com/klemek/gitblog.md.git +``` +**2. Create your config file** +```bash +cd gitblog.md +cp config.example.json config.json +``` +then edit the config.json file with your values : +> default values for config.json +````json +{ + "node_port": 3000, + "data_dir": "data", + "modules" : { + "plantuml" : true, + "rss": true, + "webhook": true + }, + "home" : { + "index" : "index.ejs" + }, + "article" : { + "index" : "index.md" + }, + "rss" : { + "endpoint" : "/rss", + "length" : 10 + }, + "webhook" : { + "endpoint": "/webhook", + "secret_file": "git_secret" + } +} +```` +**3. Create and init your git source** + +You need to [create a new repository](https://github.com/new) on your favorite Git service. + +```bash +#gitblog.md/ +cd data +git remote add origin +git push -u origin master +``` + +**4. Refresh content with a webhook (optional)** + +At first start, a `git_secret` file will be generated, use it to create a new webhook as following : + +* Payload URL : `https:///webhook` +* Content type : `application/json` +* Secret : `` +* Events : Just the push event + +On GitHub, webhooks can be created in the `Settings/Webhooks` part of the repository. \ No newline at end of file diff --git a/uml/article.png b/uml/article.png new file mode 100644 index 0000000000000000000000000000000000000000..59b76f32843c4f031bc731d56be8f243a6ae836b GIT binary patch literal 19574 zcma&ORb15F8$BwBfCvJEARWWdjdThODIwhw(nv`oDLIr3rGRuwqtYoU-60av(%p47 zzQ1$M|KePn3qH!sclPXf_I}p0*4iLmD$C+vkz(DucMnHi4z70Z9!eniS;a&JuTYA+ z7K4A7T%>heUOPB?zA?9OxhHFGZ~oTA#oUbA)RWrE#l=yGgTwKSiM@-f-5d7T4tDsQ zg5;ouAJ!T=F8}xI_fSAH9-j?Wf7nky$7?KG_9I?F!{GQ71UsftNTDx*zEs6AcuB~1 zVq7&xTiZ6jn|c^NZ_diZ*`yl9y7 zf`@qSan@x~^dWNN>j)NMfCdSriEE}e4>iZP+o6$!<%FKwV8OMgf6NY+miv`3Gx^EH zc%F6OIT0Hu;w1N@ZSgGX{;mr*X*UUsx4%CD%`74RZP)U!R4~4E%bTeD86{B-4Z~JX zr(>JRi<>8F%1U&*93f7!Vp%=Offc$mPuTJZrn0}}Y7JDo_lLUM!tjrYZ1TMsn&sB* zUwmyB+w@6M%9xnQ*&+W*Pdk}7vn%$F@EwYH$w3{l_e6@yWsHbBwMbDTk6ywKymCWf!tE-ZbxHVV@(Y_Oel>4Ksb)B`d4vR=fyB8tck5&1#9 z#l-vHvmn{u~&i0X41(J$eyuypgL3Kkz^W&f_#=;Ww4%Q6Da99>&I26HnJzgTS&POK=Q62}?NVSS94@bf^4iEPB@C=Cg-Vp!$m8>8q2MtavEUEC+v1+YRAXNS*c^gzG5zfVBj~MEk>jYyF>lQ>E(HRuRQR}tEwhq;2)^OPYw=7 zVszseRJ4?T<*QJ&hQYG>jE;|wqobqCwQOu{rR!bS22%0AC_;&ujQp-$zwIP=!-{Ew zoLWlst0%_CX;xDlnv!^|W8W$`;w?~$dgbKiBEF@I`@K4gq@kf8cb`HR=`JJzv z%B=O2RmXq)?_VqP8Z!%v!T{wsAp2JJUxBU8AW!mKUr!h1>-~TS@6OnN!yF8I}`Pav$L~viEPEi#aH69YI{05%r8&2 z6A}`j2OHx>I+~7zOkkiah)GRa*=UWqR5WOK9MH-~-MNaD-|eQ#cL(nk?s zezl}RA9pA;Mtl7^`Utb?AIW8_P zuPE6EN>QwcFE2i_S4C}1mQn4YJqr&8QT9X{3IFd$6^1YU@8^j;T=n12zqkK;q_ZG7 zIk~;P{m-92{xZR#p&t_yx%ENN+5{XN93*lWQ9>Z7@o+fY%* zZ7gInR?g9E;B)Dg=#Po|>({V^#IAsV$YdDtJpDE)vC>{^jPc%|`IS|Bf=g!BeC3Xl zjTKbNZZoE0ohQ-|-T)feuBYVWLai~@5U38Nm`KIjl{b5sC&SSc!prVug@p%u#E-Gr z^iRZMzX+ic>B#Tw+&AW5h%D9zpT5?gEHlCg`JC$Kv%mO?7Y}*G>VEpe|M6#Dt_rkb z8vbgUau;KH-uim#UFMz(gEHfcV_rP9H~;8sT<$6-c|fw#HCQW6Vfr zUb0%BE}G(Rh>ALAa-78&TOffzAdGwR(|rpBW!oVTZY5F%PI?Q^7w%mo6|a?*AKMax z#Z)mcysdXI(msw7E=+7`*^l~m{lKPzV<7CXt`ed{jUwRRu16YYUg?1ftO_S;RZ)nwj71B1HhDV@;J+lc#AEPHN+wahuG2#=!SCRJN4TNi+!M&jQ1xhV@N8?>>vB7zbfr z45ldr_^ZBo!^%P>okWQEvvssF-rL>1A4)Y6NiJnd!n=W6S~|O)ts1Y3#5{RW92pdp zKp#M}o=Vye4d-ToJU~-)a{OE1`V`*AQKRwh(lRhGQ1_Ox$6Ic!Xz~SEbj1f!rcO?t zT-4P5#~-r#LgA&Q&BuGhZ;0Qw6peH{k&~yTi1`R@f^Ww~c>8o6ZExC0!s^`E?sq+W z^yu|hka%v80#c`_D4?D7ptblk^}T^F*dt5R8CzjBk2Z4M1JTT2FPPCl!1 z@qDG1Dl{&O1vb#jSH3TUPPY($=WpqR>n&qEe!Oq)iL)Bb3l{ZqX`_GovGjLUu(bq~ zqb!r1o!vV^Mb$zY`g8u)4kI*r&x;2|qS?3fDZ4k~xvs9zPc>C1oybt!qcF7fb)>!h zH6HEHm8GQ$#|0h)yd~zZIKn81mt0dz@8HmVdTI*n?eYWF_*x{U1v0SB*`Y~LBhLN& zo8>LZ4RSA5$i=GJc9J_tyA(TF_>=-^JXL;+UjXS%6&B?D2!l|FHONoLCsfwvmTfmQ z%%pz)EYQPyw|LY^Z*aZ8|M}C*)BApG?3jT53LnK`cOC;h`uLD6pggq8*m@P$}V}w|3`m zNi%*pd}JTIJyK_Hg_yQbXjW;m$d83JXd4(B{*r^MuF7Y%h2s96nzAw_Fd-28joLMDKvj)H4yY7Pu=czHHvE$~wnY4r!-fA{q% z{}h@n6?$Sj(HB=mDRfjDH~OgFz3hE=ARPmP*VfeJvVO5jdh}Da3DI|T-@kW|_WGkV zJ3BkSUdd*3rd5@b3yX@X^nUj3Vr8aw);RnV+V*b;GW0pwNN?1kuF*sDVU3{YUS2uy ztb&4=omrzGj8LQPxkbMVYtCrr>kHQj@o;V`$oRy>^lx{o!vIrWqvwh-awY?|08S|C zb0=Z*pZo|UQ~di#2P0HjLPDb0?}@n>4C~=}fnmL6q;tE@`26B+$o!%@*bj`<#$O{| zXseSEF7t0`f*F#^x=6k}Tj0(ZeJg0QC)OIo8!Uf%OERg~&7 zS0`yF?FD;SA}cl)a@Q+O$hE=kUz-CYcJ-I;Xot^Odg_K6dYYQ%4!2v29e(@|vCS=I zt8Fd2WWdJLg#5r~i4IGsJ;+E5N*TT(zep81l+$wB5et)_;tTS4_Vtjp%hii#0V(tR_UD z5gjKYpbQs;6KKCdZa8Q z(n%16y&1U*)t_`xo9K&^45BX?e_*WHF)`1#tsoSQa+^&N0|U1pefE;dsM1Si^)$39 zepuIGeyhBB^#=uoz$9gPZTAh6lBCpa2!)hno;B~gt|EZi%+1YaUgc9$n~SxFDE9^cqTa6TcwdiwZ6;;wxbVKsAhvHbTFW0NzJ zn+Vg_?x;AU`Ik0fv4I%;-vIzvJyEc;v(wShSxOOb$FX!XsO2uefAs@oPxCEUArq7E z7Vja;se4g`0*-U%`sjTW%ySx3&1#-o0^+ysw~a>wwxfAUe0+SI#UQ5?QWc0ZT0sUN zczD#Vq^M>lrxj_c@lOBEU!sGO6Q!%?DCJ7&$OXX=r$wKYF_h=Xq0oz%#&>_Qxs55V zD`p5mzyMHi@T`x|{7cH%?VIZ|6ea=xsBHzB1D~f7Spr2gx()+2*G134Hgd@Z)AzlJ z;G1l}b=+@AX=2%~PD^WlN%}$9WKt5@1BI)rtK`o__}+-HFp#b!Ng48uqDYTJ{r#)U z8_ri>g5x)gT*Tw0j7-Qu^h38DClwq-wOg;JEu|-1)lMGzNgTxSseq?nwe&=lpU3$@ zh{H>hvq+M|>7E3Mbe}3}80;k{W;`M)%5I`cK~XX2_5ne6lLQ4A!20g)2MSG}PA8Wc z49?(E_dj`P1~G0=q2%6TXy zu1+88Xu3_AcIWQ~g~5+dgvLfa+t;yI4u|GRO%GDSEbyfvU%a)xdH&?A({_vF7zW7H zn&J?r2`tdFUQQt{pAImWeHh`e3tSKgN}Iw+QGc8~usp4(<{|2^;bu)EXYtC(-{gVA zEkXhwJ*O2IcU?V-z>?xW@JU*DfK73d-0htqmxV4`P%ynFv|}=EXb~6iK-~pQShPN< zdU1pZ$h$)}sz$ixjfJehd ztXlG14Ko&!Ktu~m+U!~eAG`Q=RsB^SAbCcWh%XP*+7EDe?>gjA3RDHo!tIi&7hPVwB)igb_WgGr3NH|Z_O@cXdKTE%vXGP;VKb3%MqIpkc`wc zu}Bkxl|RWrRPChhV&Nkntnw?n@6GwzGmF0G_uL(1WIC6+KG@pYS`Mb+FeA{6y!SiG zP1=~rRu&clG>_MkMLgdc8yg!MQba$qoBj@pzM6Hn1l&(J9mha`1>dQnDjn*m$YrHQFsjqx7y5#|RVd~&(!d@~ zB`zi?s7nK(F0ZU4G@)MliKK-_`q$UjUpW6DMGf?=ePL@$m(`vAVw~$fD(dn!_3`8v z$5)`c!M!i1w13IrqiF6+a{e-&S+L?fvazvAZm9ApU3wyRI{F^o;sho&X5090(lbj9 zLme}-9Jz^nmGo@c52#1R)l-{S=K$WBTR}9JKZ^-?D6pi5Q$N0BIW_3F2nx00QRUZn^ zq$7yV&(2yL15+PJsm#g5O(y-33w9WCM7w%=FAL0a4YQIQ+QK$~nNp##@c2ympu#eXL^GUCQ#UuhK7!z%t*w$G4rKgE zefja)tLy89_;Efg6sE?jS`7+<{ev_Ldu3iQM=?d(WgyltAEBbmr1z&)>p}#Dg>U!T zaG~D2bD}NMnt`c>0}~w`9dmPYhiiiliExPJ3Xa;!qqr?@n7WQ;)|v+{r&oMHi%1b#pu?3!IidwW(R-_&cAl_Gi1 z-Po;-*xo?T-NS6YcXjKJ|Cs=bS_LaCt4&`NQ8-MVHN&34nW2fbL%n>!|4LOADapN` z_J}_xWOrch-L5FC(*#7Z@vDURc*eU?NU(Q*3rwMB%qs^0{g_<95$ruRVWfw9UO7i= z>?FM(n&v)>Rxz=t7tfVg(7r4xDyqgsZT9L} zuJcII7SzHAA5xo73bP@|#ob%G*A#D#{M&j^@)?xlIeQn8cLlkSHA9vQi_RBv7LXbX z_$Cr4z5oE)htcz1PJ_KSfTP8miy7=bt?}-NtiCw-xO6UnhFnIG3a35xJ5C1{VlRo{ zcWB&3tTty_VV|$;>r2K*Q2h8s5iDF2izwBH!C4!^I^oFlX8ziE?xtn^aoWLJm4`ZW+{beEGMYjeGUJxdaR(nr9uJPkzfrDdew} ztn~c>gTPeSKCWtwhiLpRiofhI^xur3lENnj>I!iHW_+jWTq;dlI@(M8@n% zo2F9Jl)}o&3Pqk?!TlmWU%{3S=g&#L0dVW0lJ&ajMt53-5W@K&T24@xkfo+GuvJ(Aj!oj<3TrDn{D)va&Kt`6K7+Y_l%@!UzS| z;LM?+mjjTR3){X5%o02*1l{J46Tb9u4~4 z#L?xa`Z71lKvX*snZLeSwvkHSt3C&Z3ld zk$`%LFflRJ*4F0cvYq56C&_Va_UmfLeZZ3fOx~B)7amPwHy^ZM|bxS6N4jl%ouh*y2Pj3ULO+0LpFu3@nc&li} zxqkqte$@eQX5M%>AiQOh$>KwJX`VHTxq5$GE4JGV)Y1+R&;Y&$IeyW(tO^o|+KOQ1TH^+pd%jfcBAzAEvIgU1d$HhupZ82i552LUoNSO5W z_~!cZcPyNZJEEPpGH;$gw>bRssL<_MNEXk>nzDc#KKfx0-%r+5`Ek=>h-vuG^9h&y z48~_P!*QMaC8HQ;{J&R{VSrDMmHPmD|A(4KxKvm^2iGb2K7b|F%!gP2ZBI_lFd(p5 zMeapou<}j!5^!j_q{KoIV@%?X>t8Z>VaNbiYpD^$I*S|>d`KF%XeaN)OTYh=3WgNZ zAg;rYAc+YBwSiO?L)6mteVM}KQh8_`HPTr2?c0N)OsVaytvdv;vf>KTJ(GlmMP7aV zJCObTHP2_O9p-ly7vEF7JJ}+kpeT8s1(F?r8K$!O`o9D2V`RDUbr*xgpqwUB`?@Py zZUS)ketx$zGX{yg@?+doO5;%ykaek_d%Y?X)Htu#OUj{ZzUxqKPt)i?Z+l3RZ{qHQl7JzLl#^x zA9c>wyW=M4Xg+;)$E+Uno@yS~(IbvB!Ty-Ke(Cbw}NY5qZ=QFfgTU(Q+RsZ-^R`#*mEDQrhcLIjw`wu^3z>x5Z(YC_+`t8uo zlTRD+@kvRDy)b-Qc*HS4Jr!PmT2Lx9Z7NFb3zJpeWm*SCJCU1tnKHp!vQveYMSoppX-V2^=c3<0cNNvtq~ zNms{&L&6K~pzDZUDuD(zQ{GE`h@)fU>%I{~AigLA)nG zCVBb8MoRquA#Ef)8A}-+zDph}w^r+AF3Wrv07dXrIIqp4K zVQ(cJu(QK%HLCGEGt+1LIv-uzVEq9_`Djl$N_tk$PQRGG;-~h*I0kUWREvYc6coV+ z-HXK`pA_Elg`;WPp7fT`CXSnTONMJ|YqpZhp`i%9``oay_Mziegx9w6q2@0KTCG_T za?7(7y^Y5{>5IR4i?HRPvjeg@$HUWAI#J%Lr4S2A=rAW5v3y(Wk{`X8a34%)3&9+* zcz(X7Zc#h)GxD1bB+02_qe|fuE&?qwmi*OI&eq$R+2L#fXd;X|*5+fAg}S}Hy@Uix zp{l2+r>m=L#M||g?cab9PIi>gB;Ecb2_eZ-*qUqn?JakdQ;|+-401ev^xwIsvZM>b zzQI*}i(w&ZOwl^Qi^#;f!q*mB+Yq7>WqElC-k!lhS*5~)0xQ+LexL_-gcEiuLSL|G z&1xYG>)k|;$JAG)pnqjLom%8#08eb6zt63spC>5#Lb~$z{s(g|E-s)~707#Fx3Z3i zbcIJm)B_RA$f%44ai=f>B#9s~?WnmvP>0BOLuqNHzl!->kOKrKB&3I}8_}4ve+Bk& zE@6>RdOq#zaKW zP2vFkVUzY69J55~%C>S@@^SQdb{6MmEXC|EiJ3V z9?7Ze>$9}Bg!2?vaw90lzd_Rne6TE5}3RXSu35j$l1ppPNOUcFWsxGLv# z*$u*5dJhKSOAPR`q-37PR!KCBrmK^#t8G3CHB6Z`Zg>eZzgFvC=*+- z&X+B!JcmP-{eaEmYL85l#D$rW*g7`tlv&)bqOR`ZM<7P=*9-dL#;+-BZG7`g4RDD3 zBbyqN@J?d}D8hI6R}7;G&iMSGcDgLcJkNUqvvuJ>B(-Vx9hOZSsL~HfF9Px5%6H&Bf6uZtCY(m6cr9=%JY8g(1NjjE+v8N`8HibtI=JFJBgw3n0Sq zo`wIUBmA9-{`Gc*A?DK4@kd-)Z>hac-k`RgNuTv{XuqiR24cw0Ot-3^8EfOaTcS#W z23so$VM1Z+*y@Wji^9~)_$kX0El9(gigsKD^W+}^Ml12)Hg z42JSVRq!#@94vRRXL@T#?D@3IdaPm`?NT>WVQOm@^Q-Zu6Uy2(#^t{a5Sf{m6wc0SX@N3jv6=%y%g6S{d$p_#h+WZN^zmfx4BK&rjIlA+#O;3D2HJQ?pc88={)&k1zP`lL%02p4wS zl2cY5=~d_U$K@A?3T}O^TaFVy;YmiMzhOG+N4hZ$!SApZ*p!+ctNe0)N}c$O-w%PaE*sqSi_UJlNj)KtGHtSIL9<@9q&A+m`^ zrAC8RBg(MylG;#k!=pxFOW&R0#j>-Rrz-KB! z@p2`#aZvd=aj%}hP&MIZ=*Qj(;hh7|QgivS?^P)tNn9q&AkN1m9f`nc1 z?D`*W5d(I|Z# zvoYEd(AchjRZxI8#wK8Nrs)wezlF@5w4tO7bV4KESn6tKuXHX7x1_RVdxhXjird(= z+pnYGI+NBB`&H|VlPzJ?P^0aF|D2fX;9=F9bDcs$AV5542&F^l89a0QjZ2V-4Bs6f zEzSg~>J0beeJLj=r_QC+B!v&WzV3OGrYr82tA}j9BZtk{PN@^_tgO`gY&SoC5I}z8 z*nRr+^M{l%W;g=Dl?GBv7%0$yd_GjU*h{kO`+2Xpelcuvu#VxPf#EZ^30{DNmsf;? zzdUuaoishdg?(UK0#f-L7?aM(WJjLGieb(3It@HdZ(icJnCNm!saC*7^+5{>l0cip zuK&9ih#MVmkqBFqvxcd@NG_!k@lSt1hH=Zl#3YX=Yh|0AqxoiJbdoYrusSq2Cd~O= z44jQKLgB@W2a(1Hn2+vI_;1qSds-`&t0U)6%gI&eBjwxikHJcOk_Ki7RGGa7HFb3q zicjJXqa^PYg|*X*Mqx=pkZ>5j{L!OGZ;+;ZRMs)DYdC)7_!@AJVT&%wvDHbm-O57UI~d+7_b8n~}1mT9oV1 zBWkR4=;WYFHtQnfwLXJiT`O)4YDGQ1(0u&#(c3M`L%S@0s>+16&`?oPQ9(h$-oEsv zldrtp^x9ay&;OxQ)U!gen$^FB3UFy@U66ce5XBlVU$cmSwlRfoCZfDVZ&pxy`0gw~n5lugh!l zXKzFcgXHB4A@y$CUK?NX0aw(U$o2>udyLb^)s;7rzD+~-+G=l%l8m0`T)JCu>dzvcRa>7Z{LaRMmqj;o(xU7?hfDV|9rr#XpPhhXSDTKx96@y_4x$n%pJKfQhBpmc|){-8up4*UN z5n<>t7X%C;%5$}4uK7RTfD0VtoiBa?#%ftscS7j_oV*f8^tQ>-jtkcpx6+bhfSG%HZ~jxM@}3Vzqoj|OB` zRabY)Ir(5ENm4!a+RYgk60Fl*jO`RKz5Oi~^upM9H3Vyqc+ZclgiP=HRgV{X0+W-^IG1 zXFre)-Aa;1waxE<@C(#YY`Gj~Y|({DO8Wfd*sn(@H+>jOPZcNcL6IEBEm%k)2B5p1wn-!GCgxX^$<)u4Ro?O4|1=*x;TD7g`P5+ zp8U*mAf8D*D=W(wiw*|M$;;colk%cLHcbCXaqWG1b*8(&>kWD&)6v;+y?RUEXJnD+ z#}1A-lNNMCpY#GFNM$$wW@5&XtG-)(w22sT=80c9_m|uBzTqiz6TVl@Fffr;YKi<}3Cf5z1$r8!7gQ-#gHU+Z} z$!*@$2v#`&reoH*QqPS=yfpMb0@in>wfNublj5VOY6 zo1X}I!sMWZYzdpE!~ax6yCQW7TPr*yoTvm8^e8fYp?qVY8sH3D#wg8`gGLY-JQK3A zD*_THQHZ^nSPa}{=x;`4641Ivr~%V$ME+gm_T{RSz9_oDCk}b|^_NBs88h#epHHHs5j613#^duRRvu_jQEkF@lflFG|1N zv^47*7;tlQv%iKZCvxJ9fo;ZjJ0=t7&6n_%8qo&_G5XsJqrbmj$#c;;R!$c%m^>j> zg24YNWT?}mc`mir*QcnWq9QC@51fa}sY1sC+>@1%uqK!^Xifln&~ z)RK&*Cdwpoe0(mmFbRefdIaNZ4ZV599;t?1M+q=n6*cuJK)4;Mp1;9tNb=QxeykD^KJW@Vo*s6Ofali-4r0dreeN8wX5b#U&*xOzJOR4prJt z4vOEBFVxl5`TO59kpIYT*xJ^X%i}@X|A{MGDjTnb849RVT@4Kwq`jj9anIE2=&#A2 zw=hJXET{z2Ka-Tks#{yLeMJzl=`AlUsq5+@Fno=T|J?bYm!G*Uvc4lBx8DA#*4#Yx@9pFv2QifVuu2K1(Nd)cA)?*aq%R?3@ zUy8AggvplDSADW(0-AZx`~)T~z7F91t@%RfqNy#PXr=Tqwztj2yJ0+C{(x?if!TDv zN_GxGVm+3oO?b-6^d$$cWgJQ!*WE&j_D8Rkhd=|B9N*#JTq)cgca*X~a3t%jqR*=o zF@HjT`(($T83phj zyVE@15q%%v_wcZRIZ2Y&I=PaR2Zqm0rG;og@zoqgD`KQ=!Awh~=RuGABPt{(>j?x-+u(BL{y?=lD1Xbbp#rQd?EMZ4mFQPtam2ZfnNF}_pvz+uxHzcL@$)rc2u8MqHL9L34tgBR3qUUUgbTyZ%>_6E zXsJoKCBuMA2V^O5BXNPlRN)2i1Y$lWoeiJ(tLT{1n*R*AH>{U3z|og*o{?RXd8bjnC+^kA4(MPly)R^@1$JI4fXP9{CBE zjqqPr3^#zz;E#WpDP7pdvK$`{y7FRtaz;CCFHo%vIN-G1a=58LH$L`|JiFD?V?UH| zX5sen_uI4_&6R_0h`V@>rUCy&A4We8^v+EJQ5Bj93}+Uw^8N`D4F$PKuqT*Qf1nyZ zu1;;o+hiLzDNEw#j{dea_5%CUpmr1tX^kmRZX*necpImFkR^fbvF)pR8Ca1i{CF5Q z7bG|&gmj7&lp1ZGK0ZE`HLLH;`A=)3vqv-Ms1>OGsPrQ5o?4jP%SR6(Cnx{zJj6Yd z$2|B`PQI?eS_LG4);nb@c`^it%yA?4#YYQsbD+S-CnjoXYuna1sGbb~SjQ@+iH_{+ z$cL`+e0zWQxVE%(a8y)35Hi%%)b3?FuMN=1wE5U7^r(H7-A^jR8WnuK`V7p>GZ?a! zC$ug$B}E_HV|Z<9dM_J*uusyslp;fp^S}hRp24&U76Kcp94raZDgEEt$FYD^cyPtxG82+Vk z&f;Ourpfp$5KslgSi#W8-{E(u6^ zPXOdoRe|y%=s?s#4;oMBMq4FVKCYN~DOT@EHmG|%L|66c_nEMa{aGvrtJKlvw^{y) zJU}B6aHMYKPAV=f9q8(k^^MEUrfuc7pNV;#OJ9)#Kq?s-82}<|U8WA-1r-;0nF+xlhpy6pjtHi4$!W&^6Q18M< zqTrUBU;=H|GIY1TzfbTCW*W#A`1Md84p~6il0S2r{m zwD~Ng=@>UR0T2V!PBRL6!0=K$n$rcNtG4@{7!%_N5J1FJ4x1ZZR&pL4nM8F*Q*;_F zvJX!EQD_V9-{R4ALR0ae${8m>mFB0SJ@i z`f*^kaoL8KjIAiW1K^wg68fwaa?5QF4-ZlPp9lZSFGWVKiV|D_zaK~*WR`4L4c-u1!83qz zNC)XYeL#En7XJ4^*O{ourB!V;FvS^(-~^F_5)38%`3VqzUs=vT2%Kd5?sx~Gz_igt z@DvHm6BXpnfAa9N*s!=Y%7PVil2I;pG<;Z7h4`q!@7+N6QO zN8`Flj_Fw?FuH$_YHVCi1%@_SB<~zsdMWZJpd5lI{;4CU0sQhVugQAU2!tBltOmuF zYI80wyl@WHu|GL5Q{aOJ!9%d<*KaObHgXrVqC1^M!8M^|Gx~dGdh`2WY)GfO+J3B{ zFKf*6R>AEyg3CZ2c*qaBCMUI}nn%9By1FYMoRB}Krc)@jW@qihXXNJI-duCNd*C^}wFQHRY_Or3Ee&05LtTZQyC}Zr{--`|!#;R!}r2NWDXV`v1pPbdIwx>qZ)wb7i&iY;L z05VKHa1RLRfjt@*8>>N~aIFbynoV$sZcdb>*!?Rua?wDoK4se-O9$9aQ0(~Y!gezN z0C^Nxz+D#eZ@`9>81Aeds@mEZ_Z9$ro7o$g0Lcb$FeLs3_D}8wXu=g9iinCj{pR-^ z%&wz_d@3p_>Db3_X#&1bq{`CrGEDg++1HykOW*trIPh$4f=hb$TtMb=(nLW)!OD+& zoO@Fk@|Yt0Cpc67-2P9x)Cs0I+U3j0g0=&WY-^^Lz(Up6x2Yk}4OoZYjggO*+{LCD z>Kuu^G7Owuflp|s;!{)ENM7nl=a?e+TnA6rM=_9-rPti^1E9<)7kb@^&4gnAwjEsL zqZWDBQ=d|TZk|hNbpQv)UZ;(OL_i_SNAdWJqOVm|T4C*lsi~>nkr5HSFE|>%gNt`M zuRs=#4Lr%n!g`fcq4Y%##LTJ;6y?$RZ^$Xk)Oa{d6RjNUgA4(L*K@FU_mK)-G%+@T zQx<2@yrKM6VK>1K(pKg^{+!Sk4?6FP%LCcOyDv-T1km^+oBm0SDra>02Dl-YPS41Q ziL{+4R&^W#=h@&PF7LYDU4+stARP)h?VkFp$^n%tQ`nwW9z&%lS(buL+@THC;9{bIhdH(kykZDeLcR~~iykm2Y%jU9v1y;fF$++#TEQ0(o~Yf(La69| zw0f;3Sptw16zHawh@3LfQIaS5*Y6AHFz_nFr7BTF0M3Z0G^3*sd<#D$vVDM%Sph|c zTy@`zd!y-ibaA{ndDnl!jBG{dxr|q4dpq0-rB&khX=mhXKYbhY ze;YkA9v(r&203|gO;qzZ;PjF2_I5YpivA zuFkmZZ$Q3b`E0dl{9)Os*>kPyHx>g#pO9R1Mp=mxY`^|w-WSv|QSK)>PH2PxgBZvJ z1`^c@W{%p@rAyR8qP!k)z$VWf==JV|>l;e<| zUxAhlI5&QlmXmy25_&vO(5RjnLHlq1=~bY_3IPEDO7@^8nOPH3J`BJcCofEZq?Tyk zOj5Z;rG6ReK>j;LoT-ss-3H!~%P-tHCU3uWd+klQk|kfENB#FMJ$}Qt)}g3QM>?|0 zi^#7RWdPFBH%rjoO~}vB@)}6zi$8yu?0iY~2nhU+yB=#z+%dWpuYo1)Eii?6dJ6vQ z5Rn8FU{4LN61y^*cVnNym4eTysemhH^E*wpQol>7B##hg+$7Ni`1np!e-pU*7+p^e z_!|6yZ<1ap>ZeG|{)D~*qD)FsQc|l}r^0$P53t!}H(mhD-1S6J4h>y5Da=df7svMv zI;#5|>-<{VIBqB=TFvh|HawTQ@eFm_?~?8b3|Qo-q7SPwzi-Mv2b&y*%zLkb_Luy8NpZhYcHq-F zKt^5ktoK5&U+4dE>EsKHf#aPcK7jcH=(MbKOYT8rdHim_jbnVsHQQXLox|jaNp_?cP@7+CtYKg9Xfa)4 z_4zm0>E|n#(Vf2^6NzUlOjIg-&G!W$cRi|2Do>zAh{>!qkv#N_7a*h zkh$Ym|1DM>B#!d*yMAEG#He=J?zeVq$xcCIv40VTGum<=#jfV_wWY?4df7c0ZMVG5 zT~=LMOUp*V-k96Xg;dgi9pE9{A^B1f67l$>zO3?pz>6E=LskLqvefVyu>02Om31}y z8h`w8(_3w;_3wLga1f5SS67Ej>_WQsW}W|D0|EK~F*5n4r@w!EIa}*r({fpPAM1Y0 zqQn!ixoUPT%g2{nxhg1x(^FOc`yM#t%QsuS?{c1uC$s-~k&?Z~6z)b1;_y2!OfR+B zbGL0VOmpS3%6bG2Jek`+UVw`Uh263x|CSw~AAPBQi|8ro0Qi1p(Q~L$#=m6+ALr4E z#y}$sVZZU}Vg0W!(CNE&;Sk;BgVBVta9XWY@7?=my}(I9eKmS&^uIw21MkV*0&f5J zFcSX#->xBY$|MAaHh+L4mm6M-M^~X{oskGGp^MhWN{~I`Z6#{Rn()JgS zm;v;fuC7k`pQ|L+Zm!`caIK`yJ_8slA{+~8`6Epf|N62yNXf8Hq}lj~5&q%c0)j^B z!u~fAeeSP{*N7DT=F8J&ErH{U;~%qif(wy87gz4e$~>_PXF3!D<&(KDxRnN!!7%SG z8xsrpdSkS@?^34n+0C5omqjQ6O9v|IK$_BX;^x`#2HIk*=L-X4@IY5kUjDy+rih}UkjLg^;87!;e=J-$>VH0c zm3G`Os5lO6r_Ur8pp7c~74{_`=ewlg6d5@?+Ny2hp{W`*FJA#y_e|b6Ib<%xmdXF$ z`CQfNFsS-s&~S29;H3Xo&#F9Wm9r;}#6Q5_yY z|NijJI%bgdiRpj^P-E-%A6Zr@t1N*tS-|YG%u&f!_xZWEZIwwseu`|hfQY8KE?OB} zdt`Ung9B&R-oLcenAdqx*gS}@H!B6^yy3c`{9*qC)yzibmE98>&x7lQi8rg#|G)|u zY=ue}YI1-E1(X7wTLX=AFr|Ua0p`CFPnG|IdsZ3XNGGVOiRbCTQzO{m7)ZT3&*lEQ z$kyNO-F{*zYG8?56FR!jK@x0K!JKx;I>u>VOlJcZz1{;>6t|nFKXQ9?X;td!GO*=a z0)Y)F;9?0MpEF@z?oMe+-V-+h53~T=mbs*~F6K;9A2KNCM>{1q_H>Di0crmRsiIuAvXK#mHGGa2Y6ifaeJSw|aQ` z-vW* zA987yEgV2s05{uP>}!wYQv|JwQFBu|Wt0u75y4IXk@$EZmjXAjKuCmpfd|uo!x>6~ z{0cV?UCYFEuLYiKF78RZXEN!;C7{k@2KiE+DLWt8q)z#GW;SrI4KI)xa{C-nOf1Lb eOj-B!KXaIWM7`LFo=V^eU<{tFelF{r5}E)6??wp# literal 0 HcmV?d00001 diff --git a/uml/article.txt b/uml/article.txt new file mode 100644 index 0000000..9116053 --- /dev/null +++ b/uml/article.txt @@ -0,0 +1,28 @@ +@startuml + +title Article + +cloud web + +node nodejs { + TCP -right- [express] + [showdown] +} + +package data { + package "2019/06/18" { + component index [ + index.md + image.png + ... + ] + } +} + +web -down-> TCP : 1. /2019/06/18/title +express -down-> index : 2. fetch +index -up-> showdown : 3. markdown +showdown -left-> express : 4. html +express -up-> web : 5. html + +@enduml \ No newline at end of file diff --git a/uml/root.png b/uml/root.png new file mode 100644 index 0000000000000000000000000000000000000000..dc68055b15f644c06af6eda1eee1af320493c408 GIT binary patch literal 15363 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 literal 0 HcmV?d00001 diff --git a/uml/root.txt b/uml/root.txt new file mode 100644 index 0000000..3f40ccc --- /dev/null +++ b/uml/root.txt @@ -0,0 +1,27 @@ +@startuml + +title Homepage + +cloud web + +node nodejs { + TCP -right- [express] +} + +package data { + component index [ + index.ejs + style.css + ... + ] +} + +database list + +web -down-> TCP : 1. root +express -down-> index : 2 +index --> express : 3 +list -left-> express : 3 +express -up-> web : 4. html + +@enduml \ No newline at end of file diff --git a/uml/rss.png b/uml/rss.png new file mode 100644 index 0000000000000000000000000000000000000000..8b2d4b81924b07080db52798e9f133bae18bc3d6 GIT binary patch literal 10359 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

-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 WA?=f^C2$20Lsd~zp TCP : 1. /rss +list -left-> express : 2. +express -up-> web : 3. xml + +@enduml \ No newline at end of file diff --git a/uml/webhook.png b/uml/webhook.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d84609e6b1d1c35587860b6c8214b8edda5d2b GIT binary patch literal 13397 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 literal 0 HcmV?d00001 diff --git a/uml/webhook.txt b/uml/webhook.txt new file mode 100644 index 0000000..78fc865 --- /dev/null +++ b/uml/webhook.txt @@ -0,0 +1,22 @@ +@startuml + +title Refresh content + +cloud web + +node nodejs { + TCP -right- [express] +} + +package data { + +} + +database list + +web -down-> TCP : 1. /webhook +express -down-> data : 2. git pull +data -up-> express : 3. files data +express -right-> list : 4. writes + +@enduml \ No newline at end of file