{"id":820,"date":"2013-04-17T16:54:15","date_gmt":"2013-04-17T09:54:15","guid":{"rendered":"http:\/\/blog.iwayvietnam.com\/tuanta\/?p=820"},"modified":"2014-01-21T09:18:16","modified_gmt":"2014-01-21T02:18:16","slug":"danh-gia-kha-nang-phat-trien-cua-mot-du-an-foss","status":"publish","type":"post","link":"https:\/\/blog.iwayvietnam.com\/tuanta\/2013\/04\/danh-gia-kha-nang-phat-trien-cua-mot-du-an-foss\/","title":{"rendered":"\u0110\u00e1nh gi\u00e1 kh\u1ea3 n\u0103ng ph\u00e1t tri\u1ec3n c\u1ee7a m\u1ed9t d\u1ef1 \u00e1n PMTDNM"},"content":{"rendered":"<p>T\u00ednh \u0111\u1ebfn th\u1eddi \u0111i\u1ec3m n\u00e0y, c\u00f3 t\u1edbi tr\u00ean d\u01b0\u1edbi 400,000 d\u1ef1 \u00e1n ph\u1ea7n m\u1ec1m t\u1ef1 do ngu\u1ed3n m\u1edf tr\u00ean to\u00e0n th\u1ebf gi\u1edbi, v\u00e0 nhi\u1ec1u d\u1ef1 \u00e1n m\u1edbi \u0111\u01b0\u1ee3c ph\u00e1t sinh m\u1ed7i ng\u00e0y; t\u1eeb nh\u1eefng d\u1ef1 \u00e1n thu h\u00fat h\u00e0ng ng\u00e0n, h\u00e0ng ch\u1ee5c ng\u00e0n, th\u1eadm ch\u00ed h\u00e0ng tr\u0103m ng\u00e0n l\u1eadp tr\u00ecnh vi\u00ean, t\u1edbi nh\u1eefng d\u1ef1 \u00e1n ch\u1ec9 v\u1edbi duy nh\u1ea5t 1 ng\u01b0\u1eddi ph\u00e1t tri\u1ec3n. C\u00e2u h\u1ecfi \u0111\u1eb7t ra l\u00e0 l\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh \u0111\u01b0\u1ee3c ti\u1ec1m n\u0103ng ph\u00e1t tri\u1ec3n, h\u01b0\u1edbng t\u1edbi th\u00e0nh c\u00f4ng c\u1ee7a m\u1ed9t d\u1ef1 \u00e1n PMTDNM (kh\u00f4ng ph\u00e2n bi\u1ec7t d\u1ef1 \u00e1n l\u1edbn\/nh\u1ecf, d\u1ef1 \u00e1n m\u1edbi\/l\u00e2u n\u0103m&#8230;). M\u1ed9t trong c\u00e1c ph\u01b0\u01a1ng ph\u00e1p \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng nhi\u1ec1u nh\u1ea5t l\u00e0 ph\u01b0\u01a1ng ph\u00e1p &#8220;T\u00ednh ch\u1ec9 s\u1ed1 kh\u1ea3 n\u0103ng m\u1ed9t d\u1ef1 \u00e1n PMTDNM \u0111ang tr\u00ean con \u0111\u01b0\u1eddng d\u1eabn t\u1edbi Th\u1ea5t b\u1ea1i &#8211; Points of FAIL&#8221;.<\/p>\n<p>B\u00e0i vi\u1ebft n\u00e0y \u0111\u1ec1 c\u1eadp \u0111\u1ebfn ph\u01b0\u01a1ng ph\u00e1p n\u00e0y c\u00f9ng chi ti\u1ebft v\u1ec1 c\u00e1ch t\u00ednh \u0111i\u1ec3m PoF (Points of FAIL) cho m\u1ed9t d\u1ef1 \u00e1n PMTDNM. PoF c\u00e0ng l\u1edbn ngh\u0129a l\u00e0 d\u1ef1 \u00e1n c\u00e0ng \u0111ang ti\u1ebfn g\u1ea7n \u0111\u1ebfn \u0111i\u1ec3m &#8220;Ch\u1ebft&#8221;.Tr\u00ean th\u1ef1c t\u1ebf, m\u1ee5c \u0111\u00edch ch\u00ednh c\u1ee7a h\u1ec7 th\u1ed1ng t\u00ednh \u0111i\u1ec3m PoF l\u00e0 ch\u1ec9 ra c\u00e1c \u0111i\u1ec3m ch\u01b0a t\u1ed1t c\u1ee7a d\u1ef1 \u00e1n PMTDNM, khuy\u1ebfn kh\u00edch m\u1ed7i d\u1ef1 \u00e1n t\u1ef1 \u0111i\u1ec1u ch\u1ec9nh nh\u1eb1m \u0111i \u0111\u1ebfn m\u1ee5c ti\u00eau th\u00e0nh c\u00f4ng cu\u1ed1i c\u00f9ng. C\u00e1c thu\u1ed9c t\u00ednh \u0111\u01b0\u1ee3c xem x\u00e9t cho m\u1ed9t d\u1ef1 \u00e1n c\u00f9ng PoF cho m\u1ed7i thu\u1ed9c t\u00ednh bao g\u1ed3m:<\/p>\n<p><strong>T\u1ed5ng \u0111\u1ed9 l\u1edbn m\u00e3 ngu\u1ed3n (Size):<\/strong><\/p>\n<ul>\n<li>N\u1ebfu \u0111\u1ed9 l\u1edbn m\u00e3 ngu\u1ed3n c\u1ee7a d\u1ef1 \u00e1n &gt;100MB: +5 PoF<\/li>\n<li>N\u1ebfu m\u00e3 ngu\u1ed3n n\u00e9n l\u1ea1i v\u1eabn c\u00f3 \u0111\u1ed9 l\u1edbn &gt;100MB: +5 PoF<\/li>\n<\/ul>\n<p><strong>H\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd m\u00e3 ngu\u1ed3n (Source Control):<\/strong><\/p>\n<ul>\n<li>Kh\u00f4ng c\u00f3 h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd m\u00e3 ngu\u1ed3n c\u00f4ng khai (VD: cvs, svn, bzr, git, hg&#8230;): +10 PoF<\/li>\n<li>C\u00f3 h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd m\u00e3 ngu\u1ed3n c\u00f4ng khai, nh\u01b0ng:\n<ul>\n<li>kh\u00f4ng c\u00f3 web viewer: +5 PoF<\/li>\n<li>kh\u00f4ng c\u00f3 t\u00e0i li\u1ec7u h\u01b0\u1edbng d\u1eabn s\u1eed d\u1ee5ng cho ng\u01b0\u1eddi m\u1edbi: +5 PoF<\/li>\n<li>h\u1ec7 th\u1ed1ng qu\u1ea3n l\u00fd m\u00e3 ngu\u1ed3n t\u1ef1 t\u1ea1o: +30 PoF<\/li>\n<li>tr\u00ean th\u1ef1c t\u1ebf, kh\u00f4ng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng: +50 PoF<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>D\u1ecbch t\u1eeb m\u00e3 ngu\u1ed3n (Building From Source):<\/strong><\/p>\n<ul>\n<li>Kh\u00f4ng c\u00f3 t\u00e0i li\u1ec7u h\u01b0\u1edbng d\u1eabn d\u1ecbch t\u1eeb m\u00e0 ngu\u1ed3n: +20 PoF<\/li>\n<li>C\u00f3 t\u00e0i li\u1ec7u nh\u01b0ng kh\u00f4ng ch\u00ednh x\u00e1c: +10 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh b\u1eb1ng m\u1ed9t shell script t\u1ef1 vi\u1ebft b\u1eb1ng tay: +10 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh b\u1eb1ng c\u00e1ch s\u1eeda tr\u1ef1c ti\u1ebfp v\u00e0o t\u1ec7p c\u1ea5u h\u00ecnh: +20 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n \u0111\u01b0\u1ee3c c\u1ea5u h\u00ecnh b\u1eb1ng c\u00e1ch s\u1eeda th\u1ee7 c\u00f4ng v\u00e0o c\u00e1c t\u1ec7p header: +30 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n kh\u00f4ng c\u1ea5u h\u00ecnh \u0111\u01b0\u1ee3c tr\u01b0\u1edbc khi d\u1ecbch: +50 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n \u0111\u01b0\u1ee3c d\u1ecbch b\u1eb1ng c\u00f4ng c\u1ee5 kh\u00e1c, kh\u00f4ng ph\u1ea3i GNU Make: +10 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n \u0111\u01b0\u1ee3c d\u1ecbch b\u1eb1ng c\u00f4ng c\u1ee5 ngu\u1ed3n \u0111\u00f3ng: +50 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n \u0111\u01b0\u1ee3c d\u1ecbch b\u1eb1ng c\u00f4ng c\u1ee5 t\u1ef1 t\u1ea1o: +100 PoF<\/li>\n<\/ul>\n<p><strong>G\u00f3i k\u00e8m (Bundling):<\/strong><\/p>\n<ul>\n<li>M\u00e3 ngu\u1ed3n ch\u1ec9 ph\u00e1t h\u00e0nh v\u1edbi c\u00e1c d\u1ef1 \u00e1n kh\u00e1c m\u00e0 n\u00f3 ph\u1ee5 thu\u1ed9c v\u00e0o: +20 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n kh\u00f4ng th\u1ec3 d\u1ecbch ri\u00eang n\u1ebfu kh\u00f4ng d\u1ecbch m\u00e3 g\u00f3i k\u00e8m tr\u01b0\u1edbc: +10 PoF<\/li>\n<li>M\u00e3 g\u00f3i k\u00e8m \u0111\u00e3 b\u1ecb ch\u1ec9nh s\u1eeda: +40 PoF<\/li>\n<\/ul>\n<p><strong>Th\u01b0 vi\u1ec7n (Libraries):<\/strong><\/p>\n<ul>\n<li>Ch\u01b0\u01a1ng tr\u00ecnh ch\u1ec9 d\u1ecbch ra th\u01b0 vi\u1ec7n t\u0129nh (static libraries): +20 PoF<\/li>\n<li>Ch\u01b0\u01a1ng tr\u00ecnh c\u00f3 th\u1ec3 d\u1ecbch ra th\u01b0 vi\u1ec7n chia s\u1ebb (shared libraries) nh\u01b0ng kh\u00f4ng \u0111\u00e1nh phi\u00ean b\u1ea3n: +20 PoF<\/li>\n<li>Kh\u00f4ng c\u1ed1 g\u1eafng s\u1eed d\u1ee5ng c\u00e1c th\u01b0 vi\u1ec7n h\u1ec7 th\u1ed1ng (system libraries) s\u1eb5n c\u00f3: +20 PoF<\/li>\n<\/ul>\n<p><strong>C\u00e0i \u0111\u1eb7t h\u1ec7 th\u1ed1ng (System Install):<\/strong><\/p>\n<ul>\n<li>Ch\u01b0\u01a1ng tr\u00ecnh c\u1ed1 g\u1eafng c\u00e0i \u0111\u1eb7t v\u00e0o th\u01b0 m\u1ee5c \/opt ho\u1eb7c \/usr\/local: +10 PoF<\/li>\n<li>Kh\u00f4ng c\u00f3 &#8220;make install&#8221;: +20 PoF<\/li>\n<li>Ch\u01b0\u01a1ng tr\u00ecnh kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng ngo\u00e0i th\u01b0 m\u1ee5c m\u00e3 ngu\u1ed3n: +30 PoF<\/li>\n<\/ul>\n<p><strong>C\u00e1c &#8220;d\u1ecb \u0111i\u1ec3m&#8221; trong m\u00e3 ngu\u1ed3n (Code Oddities):<\/strong><\/p>\n<ul>\n<li>M\u00e3 ngu\u1ed3n s\u1eed d\u1ee5ng d\u1ea5u xu\u1ed1ng d\u00f2ng ki\u1ec3u Windows (&#8220;DOS format&#8221; files): +5 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n ph\u1ee5 thu\u1ed9c v\u00e0o m\u1ed9t t\u00ednh n\u0103ng c\u1ee5 th\u1ec3 c\u1ee7a ch\u01b0\u01a1ng tr\u00ecnh d\u1ecbch: +20 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n ph\u1ee5 thu\u1ed9c v\u00e0o m\u1ed9t l\u1ed7i c\u1ee5 th\u1ec3 c\u1ee7a ch\u01b0\u01a1ng tr\u00ecnh d\u1ecbch: +50 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n ph\u1ee5 thu\u1ed9c v\u00e0o b\u1ea5t c\u1ee9 th\u1ee9 g\u00ec trong b\u1ed9 Microsoft Visual Studio: +100 PoF<\/li>\n<\/ul>\n<p><strong>Giao ti\u1ebfp (Communication):<\/strong><\/p>\n<ul>\n<li>D\u1ef1 \u00e1n kh\u00f4ng c\u00f3 th\u00f4ng b\u00e1o ph\u00e1t h\u00e0nh tr\u00ean nh\u00f3m th\u01b0 (mailing list): +5 PoF<\/li>\n<li>D\u1ef1 \u00e1n kh\u00f4ng c\u00f3 nh\u00f3m th\u01b0: +10 PoF<\/li>\n<li>D\u1ef1 \u00e1n kh\u00f4ng c\u00f3 tr\u00ecnh qu\u1ea3n l\u00fd l\u1ed7i (bug tracker): +20 PoF<\/li>\n<li>D\u1ef1 \u00e1n kh\u00f4ng c\u00f3 website: +50 PoF<\/li>\n<li>L\u00e0 m\u1ed9t d\u1ef1 \u00e1n \u1ea3o (vaporware) tr\u00ean Sourceforge: +100 PoF<\/li>\n<\/ul>\n<p><strong>Ph\u00e1t h\u00e0nh (Releases):<\/strong><\/p>\n<ul>\n<li>D\u1ef1 \u00e1n kh\u00f4ng th\u1ef1c hi\u1ec7n ph\u00e1t h\u00e0nh theo phi\u00ean b\u1ea3n tu\u1ea7n t\u1ef1 (Major, Minor): +10 PoF<\/li>\n<li>D\u1ef1 \u00e1n kh\u00f4ng th\u1ef1c hi\u1ec7n ph\u00e1t h\u00e0nh theo phi\u00ean b\u1ea3n: +20 PoF<\/li>\n<li>D\u1ef1 \u00e1n kh\u00f4ng c\u00f3 ph\u00e1t h\u00e0nh: +50 PoF<\/li>\n<li>D\u1ef1 \u00e1n ch\u1ec9 ph\u00e1t h\u00e0nh d\u01b0\u1edbi d\u1ea1ng m\u1ed9t file g\u1eafn k\u00e8m m\u1ed9t b\u00e0i vi\u1ebft tr\u00ean di\u1ec5n \u0111\u00e0n\/website: +100 PoF<\/li>\n<li>B\u1ea3n ph\u00e1t h\u00e0nh ch\u1ec9 d\u01b0\u1edbi khu\u00f4n d\u1ea1ng .zip: +5 PoF<\/li>\n<li>B\u1ea3n ph\u00e1t h\u00e0nh ch\u1ec9 d\u01b0\u1edbi khu\u00f4n d\u1ea1ng OSX .zip: +10 PoF<\/li>\n<li>B\u1ea3n ph\u00e1t h\u00e0nh ch\u1ec9 d\u01b0\u1edbi khu\u00f4n d\u1ea1ng .rar: +20 PoF<\/li>\n<li>B\u1ea3n ph\u00e1t h\u00e0nh ch\u1ec9 d\u01b0\u1edbi khu\u00f4n d\u1ea1ng .arj: +50 PoF<\/li>\n<li>B\u1ea3n ph\u00e1t h\u00e0nh ch\u1ec9 d\u01b0\u1edbi khu\u00f4n d\u1ea1ng n\u00e9n t\u1ef1 t\u1ea1o: +100 PoF<\/li>\n<li>B\u1ea3n ph\u00e1t h\u00e0nh gi\u1ea3i n\u00e9n kh\u00f4ng v\u00e0o th\u01b0 m\u1ee5c ri\u00eang ch\u1ee9a s\u1ed1 hi\u1ec7u phi\u00ean b\u1ea3n (e.g. glibc-2.4.2\/): +10 PoF<\/li>\n<li>B\u1ea3n ph\u00e1t h\u00e0nh gi\u1ea3i n\u00e9n kh\u00f4ng v\u00e0o th\u01b0 m\u1ee5c ri\u00eang (e.g. glibc\/): +25 PoF<\/li>\n<li>B\u1ea3n ph\u00e1t h\u00e0nh gi\u1ea3i n\u00e9n v\u00e0o m\u1ed9t th\u01b0 m\u1ee5c con m\u1ee9c s\u00e2u (e.g. home\/johndoe\/glibc-svn\/tarball\/glibc\/src\/): +50 PoF<\/li>\n<\/ul>\n<p><strong>L\u1ecbch s\u1eed (History):<\/strong><\/p>\n<ul>\n<li>Ch\u01b0\u01a1ng tr\u00ecnh \u0111\u01b0\u1ee3c r\u1ebd nh\u00e1nh t\u1eeb m\u1ed9t d\u1ef1 \u00e1n kh\u00e1c: +10 PoF<\/li>\n<li>C\u00e1c l\u1eadp tr\u00ecnh vi\u00ean ch\u00ednh kh\u00f4ng tham gia d\u1ef1 \u00e1n cha (trong tr\u01b0\u1eddng h\u1ee3p r\u1ebd nh\u00e1nh): +50 PoF<\/li>\n<li>L\u00e0 ph\u1ea7n m\u1ec1m ngu\u1ed3n \u0111\u00f3ng tr\u01b0\u1edbc khi ngu\u1ed3n m\u1edf h\u00f3a:\n<ul>\n<li>1-2 n\u0103m: +10 PoF<\/li>\n<li>3-5 n\u0103m: +20 PoF<\/li>\n<li>6-10 n\u0103m: +30 PoF<\/li>\n<li>tr\u00ean 10 n\u0103m: +50 PoF<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Gi\u1ea5y ph\u00e9p (Licensing):<\/strong><\/p>\n<ul>\n<li>Gi\u1ea5y ph\u00e9p kh\u00f4ng \u0111\u01b0\u1ee3c ghi trong t\u1eebng t\u1ec7p m\u00e3: +10 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n t\u1ef1 th\u00e2n ch\u1ee9a s\u1ef1 kh\u00f4ng t\u01b0\u01a1ng th\u00edch c\u1ee7a c\u00e1c gi\u1ea5y ph\u00e9p: +20 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n kh\u00f4ng c\u00f3 th\u00f4ng b\u00e1o v\u1ec1 m\u1ee5c \u0111\u00edch c\u1ee7a gi\u1ea5y ph\u00e9p: +30 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n kh\u00f4ng bao g\u1ed3m m\u1ed9t b\u1ea3n sao to\u00e0n v\u0103n gi\u1ea5y ph\u00e9p: +50 PoF<\/li>\n<li>M\u00e3 ngu\u1ed3n kh\u00f4ng n\u00eau r\u00f5 gi\u1ea5y ph\u00e9p: +100 PoF<\/li>\n<\/ul>\n<p><strong>T\u00e0i li\u1ec7u (Documentation):<\/strong><\/p>\n<ul>\n<li>Ch\u01b0\u01a1ng tr\u00ecnh kh\u00f4ng c\u00f3 l\u1ecbch s\u1eed thay \u0111\u1ed5i (changelog): +10 PoF<\/li>\n<li>Ch\u01b0\u01a1ng tr\u00ecnh kh\u00f4ng k\u00e8m theo b\u1ea5t c\u1ee9 t\u00e0i li\u1ec7u n\u00e0o: +20 PoF<\/li>\n<li>Kh\u00f4ng c\u00f4ng b\u1ed1 b\u1ea5t c\u1ee9 t\u00e0i li\u1ec7u n\u00e0o tr\u00ean website: +30 PoF<\/li>\n<\/ul>\n<p><strong>Ch\u1ec9 s\u1ed1 t\u1ed5ng h\u1ee3p (FAIL METER):<\/strong><\/p>\n<ul>\n<li>0 PoF: Ho\u00e0n h\u1ea3o! C\u00e1c ch\u1ec9 s\u1ed1 \u0111\u1ec1u h\u01b0\u1edbng t\u1edbi th\u00e0nh c\u00f4ng!<\/li>\n<li>5-25 PoF: B\u1ea1n \u0111ang l\u00e0m t\u1ed1t, nh\u01b0ng ho\u00e0n to\u00e0n c\u00f3 th\u1ec3 t\u1ed1t h\u01a1n.<\/li>\n<li>30-60 PoF: B\u1ea1n l\u00e0m ch\u01b0a t\u1ed1t. C\u1ea7n c\u1ea3i ti\u1ebfn.<\/li>\n<li>65-90 PoF: B\u1ea1n l\u00e0m r\u1ea5t kh\u00f4ng t\u1ed1t. C\u1ea7n thay \u0111\u1ed5i s\u1edbm (theo c\u00e1c ch\u1ec9 s\u1ed1 b\u1ecb c\u1ed9ng \u0111i\u1ec3m cao \u1edf tr\u00ean).<\/li>\n<li>95-130 PoF: Con t\u00e0u s\u1eafp ch\u00ecm r\u1ed3i!<\/li>\n<li>135+ PoF: D\u1ef1 \u00e1n \u0111\u00e3 ho\u00e0n to\u00e0n th\u1ea5t b\u1ea1i.<\/li>\n<\/ul>\n<p>C\u00f2n ch\u1ea7n ch\u1edd g\u00ec n\u1eefa, h\u00e3y th\u1eed nh\u1ea9m t\u00ednh PoF c\u1ee7a d\u1ef1 \u00e1n PMTDNM c\u1ee7a b\u1ea1n! \ud83d\ude42<\/p>\n<p style=\"text-align: right;\">Ngu\u1ed3n: <a href=\"http:\/\/www.theopensourceway.org\/\" target=\"_blank\">http:\/\/www.theopensourceway.org\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00ednh \u0111\u1ebfn th\u1eddi \u0111i\u1ec3m n\u00e0y, c\u00f3 t\u1edbi tr\u00ean d\u01b0\u1edbi 400,000 d\u1ef1 \u00e1n ph\u1ea7n m\u1ec1m t\u1ef1 do ngu\u1ed3n m\u1edf tr\u00ean to\u00e0n th\u1ebf gi\u1edbi, v\u00e0 nhi\u1ec1u d\u1ef1 \u00e1n m\u1edbi \u0111\u01b0\u1ee3c ph\u00e1t sinh m\u1ed7i ng\u00e0y; t\u1eeb nh\u1eefng d\u1ef1 \u00e1n thu h\u00fat h\u00e0ng ng\u00e0n, h\u00e0ng ch\u1ee5c ng\u00e0n, th\u1eadm ch\u00ed h\u00e0ng tr\u0103m ng\u00e0n l\u1eadp tr\u00ecnh vi\u00ean, t\u1edbi nh\u1eefng d\u1ef1 \u00e1n<a class=\"more-link\" href=\"https:\/\/blog.iwayvietnam.com\/tuanta\/2013\/04\/danh-gia-kha-nang-phat-trien-cua-mot-du-an-foss\/\">Continue reading <span class=\"screen-reader-text\">&#8220;\u0110\u00e1nh gi\u00e1 kh\u1ea3 n\u0103ng ph\u00e1t tri\u1ec3n c\u1ee7a m\u1ed9t d\u1ef1 \u00e1n PMTDNM&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45,6],"tags":[],"class_list":["post-820","post","type-post","status-publish","format-standard","hentry","category-open-source","category-working-tips","entry"],"_links":{"self":[{"href":"https:\/\/blog.iwayvietnam.com\/tuanta\/wp-json\/wp\/v2\/posts\/820"}],"collection":[{"href":"https:\/\/blog.iwayvietnam.com\/tuanta\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.iwayvietnam.com\/tuanta\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.iwayvietnam.com\/tuanta\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.iwayvietnam.com\/tuanta\/wp-json\/wp\/v2\/comments?post=820"}],"version-history":[{"count":5,"href":"https:\/\/blog.iwayvietnam.com\/tuanta\/wp-json\/wp\/v2\/posts\/820\/revisions"}],"predecessor-version":[{"id":862,"href":"https:\/\/blog.iwayvietnam.com\/tuanta\/wp-json\/wp\/v2\/posts\/820\/revisions\/862"}],"wp:attachment":[{"href":"https:\/\/blog.iwayvietnam.com\/tuanta\/wp-json\/wp\/v2\/media?parent=820"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.iwayvietnam.com\/tuanta\/wp-json\/wp\/v2\/categories?post=820"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.iwayvietnam.com\/tuanta\/wp-json\/wp\/v2\/tags?post=820"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}