CINXE.COM
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=yes"/><meta name="generator" content="Gatsby 5.4.2"/><meta data-react-helmet="true" property="og:locale" content="en"/><meta data-react-helmet="true" property="og:site_name" content="LINE ENGINEERING"/><meta data-react-helmet="true" property="og:type" content="website"/><meta data-react-helmet="true" property="og:title" content="Blog - LINE ENGINEERING"/><meta data-react-helmet="true" property="og:author" content="LINE ENGINEERING"/><meta data-react-helmet="true" property="og:description" content="2022-LINE-engineering-site"/><meta data-react-helmet="true" property="og:url" content="https://engineering.linecorp.com/en/blog"/><meta data-react-helmet="true" property="og:image"/><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"/><meta data-react-helmet="true" name="twitter:title" content="Blog - LINE ENGINEERING"/><meta data-react-helmet="true" name="twitter:image"/><meta data-react-helmet="true" name="twitter:description" content="2022-LINE-engineering-site"/><meta data-react-helmet="true" name="twitter:url" content="https://engineering.linecorp.com/en/blog"/><link rel="preconnect" href="https://www.googletagmanager.com"/><link rel="dns-prefetch" href="https://www.googletagmanager.com"/><title data-react-helmet="true">Blog - LINE ENGINEERING</title><link data-react-helmet="true" rel="alternate" type="application/rss+xml" title="Blog - LINE ENGINEERING" href="https://engineering.linecorp.com/en/blog"/><link data-react-helmet="true" href="https://static.line-scdn.net/laicon/edge/11.1/laicon.min.css" rel="stylesheet"/><style>.gatsby-image-wrapper{position:relative;overflow:hidden}.gatsby-image-wrapper picture.object-fit-polyfill{position:static!important}.gatsby-image-wrapper img{bottom:0;height:100%;left:0;margin:0;max-width:none;padding:0;position:absolute;right:0;top:0;width:100%;object-fit:cover}.gatsby-image-wrapper [data-main-image]{opacity:0;transform:translateZ(0);transition:opacity .25s linear;will-change:opacity}.gatsby-image-wrapper-constrained{display:inline-block;vertical-align:top}</style><noscript><style>.gatsby-image-wrapper noscript [data-main-image]{opacity:1!important}.gatsby-image-wrapper [data-placeholder-image]{opacity:0!important}</style></noscript><script type="module">const e="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;e&&document.body.addEventListener("load",(function(e){const t=e.target;if(void 0===t.dataset.mainImage)return;if(void 0===t.dataset.gatsbyImageSsr)return;let a=null,n=t;for(;null===a&&n;)void 0!==n.parentNode.dataset.gatsbyImageWrapper&&(a=n.parentNode),n=n.parentNode;const o=a.querySelector("[data-placeholder-image]"),r=new Image;r.src=t.currentSrc,r.decode().catch((()=>{})).then((()=>{t.style.opacity=1,o&&(o.style.opacity=0,o.style.transition="opacity 500ms linear")}))}),!0);</script><link rel="icon" href="/favicon-32x32.png?v=6d6085f233d02c34273fa8a8849b502a" type="image/png"/><link rel="manifest" href="/manifest.webmanifest" crossorigin="anonymous"/><link rel="apple-touch-icon" sizes="48x48" href="/icons/icon-48x48.png?v=6d6085f233d02c34273fa8a8849b502a"/><link rel="apple-touch-icon" sizes="72x72" href="/icons/icon-72x72.png?v=6d6085f233d02c34273fa8a8849b502a"/><link rel="apple-touch-icon" sizes="96x96" href="/icons/icon-96x96.png?v=6d6085f233d02c34273fa8a8849b502a"/><link rel="apple-touch-icon" sizes="144x144" href="/icons/icon-144x144.png?v=6d6085f233d02c34273fa8a8849b502a"/><link rel="apple-touch-icon" sizes="192x192" href="/icons/icon-192x192.png?v=6d6085f233d02c34273fa8a8849b502a"/><link rel="apple-touch-icon" sizes="256x256" href="/icons/icon-256x256.png?v=6d6085f233d02c34273fa8a8849b502a"/><link rel="apple-touch-icon" sizes="384x384" href="/icons/icon-384x384.png?v=6d6085f233d02c34273fa8a8849b502a"/><link rel="apple-touch-icon" sizes="512x512" href="/icons/icon-512x512.png?v=6d6085f233d02c34273fa8a8849b502a"/><link href="/css/default.css" rel="stylesheet"/><link href="/css/twitter.css" rel="stylesheet"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><div><div id="wrap" class="wrap"><header id="header" class="header "><h1><a href="/en"><svg width="162" height="32" viewBox="0 0 162 32" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M39.4375 23.0005C39.7482 23.0005 39.9996 22.7486 39.9996 22.4373V20.345C39.9996 20.0357 39.7462 19.7818 39.4375 19.7818H33.8147V17.6098H39.4375C39.7482 17.6098 39.9996 17.358 39.9996 17.0467V14.9543C39.9996 14.645 39.7462 14.3911 39.4375 14.3911H33.8147V12.2192H39.4375C39.7482 12.2192 39.9996 11.9673 39.9996 11.656V9.56363C39.9996 9.25436 39.7462 9.00049 39.4375 9.00049H31.1758H31.1647C30.854 9.00049 30.6025 9.25234 30.6025 9.56363V9.57572V9.57673V22.4273V22.4283V22.4373C30.6025 22.7486 30.854 23.0005 31.1647 23.0005H31.1758H31.1768H39.4375Z" fill="black"></path><path d="M8.83492 23.0005C9.14567 23.0005 9.3971 22.7486 9.3971 22.4373V20.345C9.3971 20.0357 9.14366 19.7818 8.83492 19.7818H3.21316V9.56363C3.21316 9.25436 2.95972 9.00049 2.65098 9.00049H0.562176C0.251421 9.00049 0 9.25234 0 9.56363V22.4273V22.4283V22.4373C0 22.7486 0.251421 23.0005 0.562176 23.0005H0.573239H8.83492Z" fill="black"></path><path d="M13.816 9.00049H11.7272C11.4165 9.00049 11.165 9.25234 11.165 9.56363V22.4373C11.165 22.7486 11.4165 23.0005 11.7272 23.0005H13.816C14.1268 23.0005 14.3782 22.7486 14.3782 22.4373V9.56363C14.3782 9.25234 14.1268 9.00049 13.816 9.00049Z" fill="black"></path><path d="M28.0326 9.00052H25.9438C25.633 9.00052 25.3816 9.25237 25.3816 9.56366V17.2099L19.5024 9.25539C19.4883 9.23525 19.4732 9.21611 19.4571 9.19696C19.4561 9.19596 19.4551 9.19394 19.4531 9.19293C19.442 9.18085 19.431 9.16876 19.4189 9.15768C19.4149 9.15465 19.4119 9.15163 19.4078 9.1476C19.3978 9.13853 19.3877 9.13048 19.3777 9.12141C19.3726 9.11738 19.3676 9.11335 19.3626 9.11033C19.3525 9.10328 19.3435 9.09622 19.3324 9.09018C19.3264 9.08615 19.3214 9.08313 19.3153 9.0801C19.3053 9.07406 19.2952 9.06802 19.2841 9.06298C19.2781 9.05996 19.2721 9.05693 19.266 9.05391C19.255 9.04887 19.2439 9.04384 19.2329 9.03981C19.2268 9.03779 19.2208 9.03477 19.2148 9.03276C19.2037 9.02873 19.1926 9.0247 19.1806 9.02167C19.1735 9.01966 19.1675 9.01865 19.1604 9.01664C19.1494 9.01362 19.1383 9.0116 19.1273 9.00959C19.1192 9.00858 19.1112 9.00656 19.1031 9.00556C19.0931 9.00455 19.083 9.00253 19.073 9.00153C19.0629 9.00052 19.0528 9.00052 19.0428 9.00052C19.0367 9.00052 19.0297 8.99951 19.0237 8.99951H16.9469C16.6362 8.99951 16.3848 9.25136 16.3848 9.56265V22.4364C16.3848 22.7477 16.6362 22.9995 16.9469 22.9995H19.0357C19.3465 22.9995 19.5979 22.7477 19.5979 22.4364V14.7931L25.4852 22.7577C25.5254 22.8152 25.5757 22.8625 25.63 22.8998C25.632 22.9008 25.634 22.9028 25.637 22.9038C25.6481 22.9119 25.6602 22.9189 25.6722 22.925C25.6773 22.928 25.6833 22.931 25.6883 22.934C25.6974 22.9391 25.7064 22.9431 25.7155 22.9471C25.7245 22.9512 25.7336 22.9552 25.7426 22.9592C25.7487 22.9612 25.7547 22.9632 25.7607 22.9663C25.7738 22.9713 25.7859 22.9753 25.8 22.9784C25.803 22.9794 25.805 22.9794 25.808 22.9804C25.8553 22.9925 25.9045 23.0005 25.9548 23.0005H28.0316C28.3423 23.0005 28.5937 22.7487 28.5937 22.4374V9.56366C28.5958 9.25237 28.3433 9.00052 28.0326 9.00052Z" fill="black"></path><path d="M47.653 23H57.058C57.229 23 57.362 22.886 57.362 22.696V20.245C57.362 20.055 57.229 19.941 57.058 19.941H50.864V17.357H56.127C56.317 17.357 56.431 17.243 56.431 17.053V14.697C56.431 14.507 56.317 14.393 56.127 14.393H50.864V12.113H56.83C57.001 12.113 57.134 11.999 57.134 11.809V9.358C57.134 9.168 57.001 9.054 56.83 9.054H47.653C47.463 9.054 47.349 9.168 47.349 9.358V22.696C47.349 22.886 47.463 23 47.653 23ZM59.448 23H62.26C62.45 23 62.564 22.886 62.564 22.696V17.946C62.564 16.464 63.267 15.723 64.255 15.723C65.262 15.723 65.699 16.293 65.699 17.699V22.696C65.699 22.886 65.813 23 66.003 23H68.815C69.005 23 69.119 22.886 69.119 22.696V16.426C69.119 14.108 67.77 12.721 65.376 12.721C64.046 12.721 62.925 13.177 62.184 14.089L62.146 13.196C62.146 13.006 62.013 12.911 61.823 12.911H59.448C59.258 12.911 59.144 13.025 59.144 13.196V22.696C59.144 22.886 59.258 23 59.448 23ZM75.9156 27.332C79.0696 27.332 81.4826 25.717 81.4826 22.012V13.196C81.4826 13.025 81.3686 12.911 81.1786 12.911H78.7846C78.6136 12.911 78.4806 13.006 78.4806 13.196L78.4426 14.089C77.7206 13.215 76.6756 12.721 75.4216 12.721C72.6096 12.721 70.7286 14.83 70.7286 17.87C70.7286 20.891 72.6096 23.019 75.4216 23.019C76.4666 23.019 77.3786 22.677 78.0626 22.05V22.525C78.0626 23.836 77.1316 24.482 75.8206 24.482C74.7756 24.482 74.1676 24.064 73.7686 23.494C73.6546 23.342 73.5216 23.285 73.3696 23.342L71.1846 24.026C70.9946 24.083 70.9186 24.197 70.9946 24.387C71.6976 26.23 73.5406 27.332 75.9156 27.332ZM76.2576 20.188C75.0416 20.188 74.1866 19.257 74.1866 17.946C74.1866 16.635 75.0416 15.723 76.2576 15.723C77.4736 15.723 78.3286 16.635 78.3286 17.946C78.3286 19.257 77.4736 20.188 76.2576 20.188ZM85.4018 11.581C86.4658 11.581 87.2828 10.878 87.2828 9.814C87.2828 8.75 86.4658 8.028 85.4018 8.028C84.3378 8.028 83.5208 8.75 83.5208 9.814C83.5208 10.878 84.3378 11.581 85.4018 11.581ZM83.9958 23H86.8078C86.9978 23 87.1118 22.886 87.1118 22.696V13.196C87.1118 13.025 86.9978 12.911 86.8078 12.911H83.9958C83.8058 12.911 83.6918 13.025 83.6918 13.196V22.696C83.6918 22.886 83.8058 23 83.9958 23ZM89.6179 23H92.4299C92.6199 23 92.7339 22.886 92.7339 22.696V17.946C92.7339 16.464 93.4369 15.723 94.4249 15.723C95.4319 15.723 95.8689 16.293 95.8689 17.699V22.696C95.8689 22.886 95.9829 23 96.1729 23H98.9849C99.1749 23 99.2889 22.886 99.2889 22.696V16.426C99.2889 14.108 97.9399 12.721 95.5459 12.721C94.2159 12.721 93.0949 13.177 92.3539 14.089L92.3159 13.196C92.3159 13.006 92.1829 12.911 91.9929 12.911H89.6179C89.4279 12.911 89.3139 13.025 89.3139 13.196V22.696C89.3139 22.886 89.4279 23 89.6179 23ZM106.181 23.19C108.1 23.19 109.924 22.449 110.855 20.72C110.95 20.53 110.874 20.397 110.703 20.321L108.271 19.504C108.119 19.466 107.986 19.504 107.872 19.637C107.511 20.131 106.941 20.359 106.2 20.359C105.25 20.359 104.604 19.808 104.357 18.82H110.855C111.045 18.82 111.159 18.725 111.178 18.535C111.368 15.096 109.544 12.721 106.181 12.721C102.97 12.721 100.899 14.868 100.899 17.946C100.899 21.043 102.97 23.19 106.181 23.19ZM106.143 15.4C107.036 15.4 107.625 15.951 107.815 16.958H104.357C104.566 15.932 105.193 15.4 106.143 15.4ZM117.573 23.19C119.492 23.19 121.316 22.449 122.247 20.72C122.342 20.53 122.266 20.397 122.095 20.321L119.663 19.504C119.511 19.466 119.378 19.504 119.264 19.637C118.903 20.131 118.333 20.359 117.592 20.359C116.642 20.359 115.996 19.808 115.749 18.82H122.247C122.437 18.82 122.551 18.725 122.57 18.535C122.76 15.096 120.936 12.721 117.573 12.721C114.362 12.721 112.291 14.868 112.291 17.946C112.291 21.043 114.362 23.19 117.573 23.19ZM117.535 15.4C118.428 15.4 119.017 15.951 119.207 16.958H115.749C115.958 15.932 116.585 15.4 117.535 15.4ZM124.501 23H127.313C127.503 23 127.617 22.886 127.617 22.696V18.079C127.617 16.597 128.89 15.951 129.897 15.951C130.296 15.951 130.6 16.008 130.866 16.046C131.075 16.084 131.208 15.989 131.208 15.799V13.196C131.208 13.025 131.113 12.911 130.942 12.854C130.733 12.797 130.486 12.778 130.22 12.778C129.023 12.778 127.94 13.215 127.256 14.222L127.199 13.196C127.199 13.006 127.066 12.911 126.876 12.911H124.501C124.311 12.911 124.197 13.025 124.197 13.196V22.696C124.197 22.886 124.311 23 124.501 23ZM134.293 11.581C135.357 11.581 136.174 10.878 136.174 9.814C136.174 8.75 135.357 8.028 134.293 8.028C133.229 8.028 132.412 8.75 132.412 9.814C132.412 10.878 133.229 11.581 134.293 11.581ZM132.887 23H135.699C135.889 23 136.003 22.886 136.003 22.696V13.196C136.003 13.025 135.889 12.911 135.699 12.911H132.887C132.697 12.911 132.583 13.025 132.583 13.196V22.696C132.583 22.886 132.697 23 132.887 23ZM138.51 23H141.322C141.512 23 141.626 22.886 141.626 22.696V17.946C141.626 16.464 142.329 15.723 143.317 15.723C144.324 15.723 144.761 16.293 144.761 17.699V22.696C144.761 22.886 144.875 23 145.065 23H147.877C148.067 23 148.181 22.886 148.181 22.696V16.426C148.181 14.108 146.832 12.721 144.438 12.721C143.108 12.721 141.987 13.177 141.246 14.089L141.208 13.196C141.208 13.006 141.075 12.911 140.885 12.911H138.51C138.32 12.911 138.206 13.025 138.206 13.196V22.696C138.206 22.886 138.32 23 138.51 23ZM154.977 27.332C158.131 27.332 160.544 25.717 160.544 22.012V13.196C160.544 13.025 160.43 12.911 160.24 12.911H157.846C157.675 12.911 157.542 13.006 157.542 13.196L157.504 14.089C156.782 13.215 155.737 12.721 154.483 12.721C151.671 12.721 149.79 14.83 149.79 17.87C149.79 20.891 151.671 23.019 154.483 23.019C155.528 23.019 156.44 22.677 157.124 22.05V22.525C157.124 23.836 156.193 24.482 154.882 24.482C153.837 24.482 153.229 24.064 152.83 23.494C152.716 23.342 152.583 23.285 152.431 23.342L150.246 24.026C150.056 24.083 149.98 24.197 150.056 24.387C150.759 26.23 152.602 27.332 154.977 27.332ZM155.319 20.188C154.103 20.188 153.248 19.257 153.248 17.946C153.248 16.635 154.103 15.723 155.319 15.723C156.535 15.723 157.39 16.635 157.39 17.946C157.39 19.257 156.535 20.188 155.319 20.188Z" fill="black"></path></svg></a></h1><button type="button" class="btn_gnb"><span class="blind">Open/Close</span><span class="bar1"></span><span class="bar2"></span></button><div class="gnb_wrap"><nav id="gnb" class="gnb "><ul class="dep1"><li><a href="/en/blog" class="active">Blog</a></li><li><a href="/en/culture" class="">Culture</a></li><li><a href="/en/opensource" class="">Open Source</a></li><li><a href="/en/careers" class="">Careers</a></li></ul></nav><div class="right_area"><div class="language_list"><button type="button" class="btn" id="gnb-languages"><i id="gnb-languages" class="lar la-earth"></i>English<i id="gnb-languages" class="lar la-caret-down"></i></button><div class="list_layer"><i class="lar la-earth"></i><ul><li><a href="/ko/blog" class="">한국어</a></li><li><a href="/en/blog" class="active">English</a></li><li><a href="/ja/blog" class="">日本語</a></li><li><a href="/zh-hant/blog" class="">繁體中文</a></li><li><a href="/vi/blog" class="">Tiếng Việt</a></li></ul></div></div></div></div><button type="button" class="header_search_open"><i class="las la-search"></i><span class="blind">Search</span></button><div class="header_search"><form><fieldset><legend class="blind">Search</legend><div class="input_area"><button type="submit" class="btn_search"><i class="las la-search"></i><span class="blind">Search</span></button><input type="search" placeholder="Search LINE Engineering" value=""/></div></fieldset></form></div><button type="button" class="header_search_close"><i class="las la-times"></i><span class="blind">Close</span></button></header><div class="notification_banner"><p>As of October 1, 2023, LINE has been rebranded as LY Corporation. Visit the new blog of LY Corporation here: <a href="https://techblog.lycorp.co.jp/en" target="_blank" rel="noopener noreferrer">LY Corporation Tech Blog</a></p></div><div class="search_mask"></div><main id="contents" class="contents"><h1 class="blind">Blog</h1><div class="post_wrap"><div class="post_area"><ul class="post_list"><li class="post_list_item"><h2 class="title"><a href="/en/blog/LY-Corporation-Tech-Blog/">Notice: Moved to "LY Corporation Tech Blog"</a></h2><div class="written_by"><div class="img_profile"><img src="https://vos.line-scdn.net/landpress-content-v2_1761/1666859718584.jpg?updatedAt=1666859719000"/></div><div class="text_area"><a href="/en/blog/author/LINE Engineering" class="text_name">LINE Engineering</a><span class="text_date">2023-10-02</span><p class="text_desc">LINE Engineering Blog official account</p></div></div><p class="desc"><a href="/en/blog/LY-Corporation-Tech-Blog/"><span class="text">As of October 1, 2023, LINE has been rebranded as LY Corporation. Visit the new blog of LY Corporation here: LY Corporation Tech Blog (https://techblog.lycorp.co.jp/en/blog) LY Corporation Tech Blog's RSS You can still read our previous posts on this site. We greatly appreciate your ongoing support.</span></a></p><ul class="text_hashtag"> <!-- -->;</ul></li><li class="post_list_item"><h2 class="title"><a href="/en/blog/line-achieves-openchain-isoiec-5230-certification/">Behind the scenes: LINE's OpenChain certification and improved open source management</a></h2><div class="written_by"><div class="img_profile"><img src="https://vos.line-scdn.net/landpress-content-v2_1761/1666854342112.png?updatedAt=1666854343000"/></div><div class="text_area"><a href="/en/blog/author/LINE Open Source Program Office TF" class="text_name">LINE Open Source Program Office TF</a><span class="text_date">2023-09-27</span><p class="text_desc">We create LINE's OSS policy and culture.</p></div></div><p class="desc"><a href="/en/blog/line-achieves-openchain-isoiec-5230-certification/"><span class="text">Hello, we are the Open Source Program Office TF. The Linux Foundation operates the OpenChain project, which sets the standard specifications for open source management. For about two years, we have been running a large-scale project to apply the standards set by the OpenChain project to LINE. As a result, we have received certification for compliance with ISO/IEC 5230, the international standard for open source management. In this post, we'll first introduce what the OpenChain project is, a</span></a></p><ul class="text_hashtag"> <li><a href="/en/blog/tag/Open Source">Open Source</a></li>;</ul></li><li class="post_list_item"><h2 class="title"><a href="/en/blog/from-hiveql-to-sparksql-troubleshooting/">Fixing issues we've faced while migrating from HiveQL to Spark SQL</a></h2><div class="written_by"><div class="img_profile"><img src="https://vos.line-scdn.net/landpress-content-v2_1761/1692341125763.jpeg?updatedAt=1692349175000"/></div><div class="text_area"><a href="/en/blog/author/Woo-yeong Jeong" class="text_name">Woo-yeong Jeong</a><span class="text_date">2023-09-26</span><p class="text_desc">A data engineer at LINE.</p></div></div><p class="desc"><a href="/en/blog/from-hiveql-to-sparksql-troubleshooting/"><span class="text">Hello. I'm Woo-yeong Jeong, a data engineer from the LINE Plus Messaging Data Eng Dev (NP) team. Recently, I've been working on a task to migrate HiveQL (Hive SQL) jobs to Spark SQL. I primarily used the SQL statement INSERT OVERWRITE TABLE to load data. However, depending on the Spark settings, several issues occurred that did not happen in Hive. In this article, I will introduce what I learned in the process of finding the cause and solution. This article will first introduce the backgrou</span></a></p><ul class="text_hashtag"> <li><a href="/en/blog/tag/Data/AI">Data/AI</a></li>;</ul></li><li class="post_list_item"><h2 class="title"><a href="/en/blog/AES-GCM-SIV-optimization/">How we optimized the AES-GCM-SIV encryption algorithm</a></h2><div class="written_by"><div class="img_profile"><img src="https://vos.line-scdn.net/landpress-content-v2_1761/1668512843446.png?updatedAt=1668512844000"/></div><div class="text_area"><a href="/en/blog/author/Juhong Han" class="text_name">Juhong Han</a><span class="text_date">2023-09-21</span><p class="text_desc">In charge of security technology research and security consulting in the Security R&D team.</p></div></div><p class="desc"><a href="/en/blog/AES-GCM-SIV-optimization/"><span class="text">Hello, this is Juhong Han, who is in charge of security research and consulting in the Security R&D team. There are various security technologies in the world, and among them, cryptographic algorithms are essential for data security. LINE also applies various cryptographic algorithms to protect sensitive data when providing services. And in our team, we are developing cryptographic libraries to make it easier to use for other LINE developers who are not used to cryptographic algorithms. AES-</span></a></p><ul class="text_hashtag"> <li><a href="/en/blog/tag/Security">Security</a></li>;</ul></li><li class="post_list_item"><h2 class="title"><a href="/en/blog/reliable-and-consistent-metric-anomaly-detection-algorithms/">【Internship】Reliable and consistent metric anomaly detection algorithms</a></h2><div class="written_by"><div class="img_profile"><img src="https://vos.line-scdn.net/landpress-content-v2_1761/1695112161414.jpg?updatedAt=1695112162000"/></div><div class="text_area"><a href="/en/blog/author/Fu Xinghong" class="text_name">Fu Xinghong</a><span class="text_date">2023-09-19</span><p class="text_desc"> Messaging Server Dev TeamA</p></div></div><p class="desc"><a href="/en/blog/reliable-and-consistent-metric-anomaly-detection-algorithms/"><span class="text">Nice to meet you! I'm Shin, a rising sophomore at the Massachusetts Institute of Technology studying mathematics and computer science. I'm very grateful to have been given the opportunity to spend an amazing six weeks at the LINE Tokyo office to work on an exciting internship project: "Improving reliability and consistency in metric anomaly detection". Not only was it one of my first few work experiences in the tech industry, it was also my first time in Japan. There were so many learning experi</span></a></p><ul class="text_hashtag"> <li><a href="/en/blog/tag/Server-side">Server-side</a></li><li><a href="/en/blog/tag/monitoring">monitoring</a></li><li><a href="/en/blog/tag/internship">internship</a></li>;</ul></li><li class="post_list_item"><h2 class="title"><a href="/en/blog/untangle-the-threads-between-rxswift-and-combine/">Untangle the threads between RxSwift and Combine</a></h2><div class="written_by"><div class="img_profile"><img src="https://vos.line-scdn.net/landpress-content-v2_1761/1693550459867.jpg?updatedAt=1693550460000"/></div><div class="text_area"><a href="/en/blog/author/Zhihao Zang" class="text_name">Zhihao Zang</a><span class="text_date">2023-09-04</span><p class="text_desc">I am an iOS engineer on the LINE B2B App Dev Team. I work on the LINE app and the LINE Official Account app.</p></div></div><p class="desc"><a href="/en/blog/untangle-the-threads-between-rxswift-and-combine/"><span class="text">Question: What kind of bug can only be easily reproduced on a device as old as an iPhone 7 or older? Hi there. I'm Zhihao Zang, an iOS engineer on the LINE B2B App Dev team. A big part of what we do involves developing and maintaining the LINE Official Account app. Today, I'd like to share our experience (including some of the hurdles we faced) in migrating the LINE Official Account app from using RxSwift to using Combine. Background: RxSwift and Combine We use RxSwift, a Reactive Programming fr</span></a></p><ul class="text_hashtag"> <li><a href="/en/blog/tag/iOS">iOS</a></li><li><a href="/en/blog/tag/Swift">Swift</a></li>;</ul></li><li class="post_list_item"><h2 class="title"><a href="/en/blog/line-live-closing-takeaways-closure-live/">Takeaways from the closure of LINE LIVE</a></h2><div class="written_by"><div class="img_profile"><img src="https://vos.line-scdn.net/landpress-content-v2_1761/1692951560398.jpg?updatedAt=1692951561000"/></div><div class="text_area"><a href="/en/blog/author/Hieu Do Duc" class="text_name">Hieu Do Duc</a><span class="text_date">2023-08-31</span><p class="text_desc">Android Mobile Developer from LTV</p></div></div><p class="desc"><a href="/en/blog/line-live-closing-takeaways-closure-live/"><span class="text">We have carried out the closure of the LINE LIVE app. Given that this app had a substantial user base, with many users potentially having made significant payments within the app, we couldn't abruptly remove the app from the store and cease user support. Some of the challenges we needed to tackle included notifying users, offering compensation, and determining how to secure users' acceptance while preserving their trust in our company and group. The plan Step 1: Notification To widely disse</span></a></p><ul class="text_hashtag"> <li><a href="/en/blog/tag/Server-side">Server-side</a></li><li><a href="/en/blog/tag/LINE LIVE">LINE LIVE</a></li>;</ul></li><li class="post_list_item"><h2 class="title"><a href="/en/blog/mobile-device-management-with-androids-work-profile/">Mobile device management with Android's work profile</a></h2><div class="written_by"><div class="img_profile"><img src="https://vos.line-scdn.net/landpress-content-v2_1761/1690788962367.jpeg?updatedAt=1690788963000"/></div><div class="text_area"><a href="/en/blog/author/Prashant Pol" class="text_name">Prashant Pol</a><span class="text_date">2023-08-28</span><p class="text_desc">Android Engineer at LINE messaging application.</p></div></div><p class="desc"><a href="/en/blog/mobile-device-management-with-androids-work-profile/"><span class="text">Many companys desire a communication medium that keeps their employees connected. To achieve this, they often install a company-specific communication app. This can be done either by providing a new dedicated device to the employee or by implementing a bring your own device (BYOD) policy, where the company asks employees to use their personal devices. Under the BYOD policy, companies require employees to install a mobile device management (MDM) app and activate a work profile. Before, I had a ba</span></a></p><ul class="text_hashtag"> <li><a href="/en/blog/tag/Android">Android</a></li><li><a href="/en/blog/tag/Security">Security</a></li>;</ul></li><li class="post_list_item"><h2 class="title"><a href="/en/blog/from-traditional-cms-to-landpress-content/">Why we're moving from traditional CMS to LandPress Content</a></h2><div class="written_by"><div class="img_profile"><img src="https://vos.line-scdn.net/landpress-content-v2_1761/1690859650275.jpeg?updatedAt=1690859651000"/></div><div class="text_area"><a href="/en/blog/author/Healin Yoon" class="text_name">Healin Yoon</a><span class="text_date">2023-08-25</span><p class="text_desc">Backend developer for LandPress Content on the LINE UIT team</p></div></div><p class="desc"><a href="/en/blog/from-traditional-cms-to-landpress-content/"><span class="text">Two years ago, LINE internally launched LandPress Content, a new headless CMS that improved the structure and performance of existing headless CMS. Since then, several LINE services using traditional CMS have begun retooling to use LandPress Content. In this article, we will look at some things to watch out for when migrating from traditional CMS to headless CMS and what improvements have been made since the migration. How headless CMS came to be First, let's look at the background of headless C</span></a></p><ul class="text_hashtag"> <li><a href="/en/blog/tag/Web Development">Web Development</a></li>;</ul></li><li class="post_list_item"><h2 class="title"><a href="/en/blog/create-figma-translation-plugin-with-vuejs/">How I made a Figma translation plugin with Vue.js after a couple of drinks</a></h2><div class="written_by"><div class="img_profile"><img src="https://vos.line-scdn.net/landpress-content-v2_1761/1680656159922.jpeg?updatedAt=1680659458000"/></div><div class="text_area"><a href="/en/blog/author/Min Seob Kim" class="text_name">Min Seob Kim</a><span class="text_date">2023-07-28</span><p class="text_desc">In charge of backend development at ABC Studio.</p></div></div><p class="desc"><a href="/en/blog/create-figma-translation-plugin-with-vuejs/"><span class="text">Hello. I'm Minseob Kim, a backend developer at LINE ABC Studio. In this post, I'd like to share our recent experience building a Figma translation plugin using Papago. While I won't go into detail on how to build the plugin or go down to the code level, I'll focus on the challenges we faced while building the plugin, how we solved them, and the process we went through as a team. When developing Figma plugins, the Figma Developers site is a good place to start. You'll also need knowledge of HTML</span></a></p><ul class="text_hashtag"> <li><a href="/en/blog/tag/Server-side">Server-side</a></li><li><a href="/en/blog/tag/Front-End">Front-End</a></li>;</ul></li></ul><div class="pagination"><a aria-label="Prev"><i class="la-wp las la-chevron-left"></i></a><a aria-current="page" class="page" hrefLang="en" href="/en/blog">1</a><a aria-current="" class="page" hrefLang="en" href="/en/blog/page/2">2</a><a aria-current="" class="page" hrefLang="en" href="/en/blog/page/3">3</a><a aria-current="" class="page" hrefLang="en" href="/en/blog/page/4">4</a><a aria-current="" class="page" hrefLang="en" href="/en/blog/page/5">5</a><a aria-label="Next" hrefLang="en" href="/en/blog/page/6"><i class="la-wp las la-chevron-right"></i></a></div></div><aside class="sidebar"><div class="search_box"><form role="search" method="GET"><div class="search_input on"><button type="submit" class="btn_search" aria-label="Submit Search for Keyword"><i class="las la-search"></i></button><input type="search" placeholder="Search for Keyword" aria-label="Search for Keyword" value=""/><button type="button" class="btn_clear"><i class="lar la-times"></i></button></div></form></div><div class="post_tags"><h2 class="title">Tags</h2></div></aside></div></main><footer id="footer" class="footer "><div class="footer_inner"><p class="copyright">© LY Corporation</p><ul class="footer_link"><li class="item"><a href="https://line.me/en/terms/policy/" target="_blank">Privacy Policy</a></li></ul><div class="right_area"><div class="footer_menu"><div class="drop_box family_site "><button type="button" class="btn">Family sites<i class="las la-chevron-down"></i></button><div class="list"><ul><li><a href="https://line.me/en/" target="_blank">LINE</a></li><li><a href="https://developers.line.biz/" target="_blank">LINE Developers</a></li><li><a href="https://careers.linecorp.com/" target="_blank">LINE CAREERS</a></li></ul></div></div></div><ul class="footer_sns"><li class="sns_item twitter "><a href="https://twitter.com/LINE_DEV_EN" target="_blank" class="btn"><i class="lapr la-x-com" aria-label="Twitter"></i></a><div class="list"><ul><li><a href="#" target="_blank">[KR]Careers</a></li><li><a href="#" target="_blank">[KR]Careers</a></li><li><a href="#" target="_blank">[KR]Careers</a></li><li><a href="#" target="_blank">[KR]Careers</a></li><li><a href="#" target="_blank">[KR]Careers</a></li><li><a href="#" target="_blank">[KR]Careers</a></li><li><a href="#" target="_blank">[KR]Careers</a></li><li><a href="#" target="_blank">[KR]Careers</a></li><li><a href="#" target="_blank">[KR]Careers</a></li><li><a href="#" target="_blank">[KR]Careers</a></li></ul></div></li><li class="sns_item youtube"><a href="https://www.youtube.com/c/LINEDEV" target="_blank" class="btn"><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="none" viewBox="0 0 30 30"><path fill="#1E1E1E" fill-rule="evenodd" d="M28.403 6.6c.466.466.8 1.045.97 1.679C30 10.619 30 15.5 30 15.5s0 4.88-.627 7.221c-.17.634-.504 1.213-.97 1.679-.465.465-1.045.8-1.682.973C24.375 26 15 26 15 26s-9.375 0-11.72-.627c-.638-.172-1.218-.508-1.683-.973-.466-.466-.8-1.045-.97-1.679C0 20.381 0 15.5 0 15.5s0-4.88.627-7.221c.17-.634.504-1.213.97-1.679.465-.465 1.045-.8 1.683-.973C5.625 5 15 5 15 5s9.375 0 11.72.627c.638.172 1.218.508 1.683.973zm-8.63 8.9l-7.841 4.432v-8.864l7.84 4.432z" clip-rule="evenodd"></path></svg></a><div class="list"><ul><li><a href="#" target="_blank">[KR]Careers</a></li></ul></div></li><li class="sns_item facebook"><a href="https://www.facebook.com/line.developers.jp/" target="_blank" class="btn"><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="none" viewBox="0 0 30 30"><path fill="#1E1E1E" d="M27 15c0-6.624-5.376-12-12-12S3 8.376 3 15c0 5.994 4.387 10.962 10.134 11.852V18.46h-3.065V15h3.065v-2.645c0-3.003 1.78-4.671 4.523-4.671 1.31 0 2.67.247 2.67.247v2.929h-1.508c-1.496 0-1.965.94-1.965 1.878v2.25h3.337l-.532 3.46h-2.805v8.391C22.613 25.962 27 20.994 27 15z"></path></svg></a></li><li class="sns_item github"><a href="https://github.com/line/" target="_blank" class="btn"><svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 30 30" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.2502 4.00006C12.5768 3.99734 9.98981 4.94676 7.95281 6.67819C5.91582 8.40961 4.56198 10.8099 4.13393 13.4488C3.70588 16.0877 4.23161 18.7928 5.61687 21.0794C7.00213 23.3659 9.1564 25.0844 11.6936 25.9269C12.253 26.0304 12.4602 25.6782 12.4602 25.3813C12.4602 25.0843 12.4602 24.4075 12.4602 23.4683C9.33173 24.1589 8.66874 21.9628 8.66874 21.9628C8.46028 21.2821 8.01742 20.6973 7.41874 20.3122C6.40355 19.6216 7.50161 19.6216 7.50161 19.6216C7.85748 19.6719 8.19724 19.8025 8.49517 20.0035C8.7931 20.2045 9.0414 20.4707 9.22123 20.7818C9.37403 21.0589 9.58004 21.3031 9.82744 21.5003C10.0748 21.6976 10.3588 21.844 10.6629 21.9313C10.967 22.0186 11.2854 22.0449 11.5998 22.0088C11.9141 21.9728 12.2182 21.875 12.4947 21.7211C12.538 21.1529 12.783 20.619 13.1853 20.2155C10.6853 19.9324 8.061 18.9655 8.061 14.6561C8.04384 13.5394 8.45677 12.4588 9.21432 11.6382C8.87624 10.6673 8.91569 9.60479 9.32482 8.66166C9.32482 8.66166 10.2709 8.35779 12.4187 9.81497C14.2631 9.30859 16.2098 9.30859 18.0541 9.81497C20.2019 8.35779 21.1411 8.66166 21.1411 8.66166C21.5545 9.60345 21.5965 10.6667 21.2585 11.6382C22.0161 12.4588 22.429 13.5394 22.4118 14.6561C22.4118 18.9793 19.7806 19.9255 17.2737 20.181C17.5425 20.4512 17.7501 20.7761 17.8824 21.1335C18.0146 21.491 18.0685 21.8727 18.0403 22.2528C18.0403 23.7583 18.0403 24.9738 18.0403 25.3398C18.0403 25.7059 18.2406 25.989 18.8138 25.8854C21.343 25.035 23.4879 23.3138 24.8659 21.0288C26.2439 18.7438 26.7653 16.0435 26.3373 13.4097C25.9093 10.7759 24.5595 8.3798 22.5288 6.64876C20.4982 4.91772 17.9186 3.96432 15.2502 3.95862V4.00006Z" fill="#1E1E1E"></path></svg></a><div class="list"><ul><li><a href="#" target="_blank">[KR]Careers</a></li></ul></div></li></ul></div></div></footer></div></div></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script async="" src="https://www.googletagmanager.com/gtag/js?id=UA-88436172-1"></script><script> window.excludeGtagPaths=[/^(?:\/preview\/(?:(?!(?:\/|^)\.).)*?)$/,/^(?:\/do\-not\-track\/me\/too\/)$/]; function gaOptout(){document.cookie=disableStr+'=true; expires=Thu, 31 Dec 2099 23:59:59 UTC;path=/',window[disableStr]=!0}var gaProperty='UA-88436172-1',disableStr='ga-disable-'+gaProperty;document.cookie.indexOf(disableStr+'=true')>-1&&(window[disableStr]=!0); if(!(navigator.doNotTrack == "1" || window.doNotTrack == "1")) { window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-88436172-1', {"anonymize_ip":true,"cookie_expires":0,"send_page_view":false});gtag('config', 'G-Y1FDV7S7C9', {"anonymize_ip":true,"cookie_expires":0,"send_page_view":false}); } </script><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/blog";/*]]>*/</script><!-- slice-start id="_gatsby-scripts-1" --> <script id="gatsby-chunk-mapping" > window.___chunkMapping="{\"app\":[\"/app-0c40ee85ab758ea4166b.js\"],\"component---src-pages-404-js\":[\"/component---src-pages-404-js-5a4932a7de7d21f59d39.js\"],\"component---src-pages-careers-index-js\":[\"/component---src-pages-careers-index-js-f8d4fe11e56c7d0cd94c.js\"],\"component---src-pages-culture-index-js\":[\"/component---src-pages-culture-index-js-f246d66905b6278b8af5.js\"],\"component---src-pages-index-js\":[\"/component---src-pages-index-js-18d180474f1c21a02942.js\"],\"component---src-pages-opensource-index-js\":[\"/component---src-pages-opensource-index-js-e05b030a38d339e1a10b.js\"],\"component---src-pages-page-2-js\":[\"/component---src-pages-page-2-js-1265942a7e886de57f8c.js\"],\"component---src-pages-research-index-js\":[\"/component---src-pages-research-index-js-91691d6cb03d170172e4.js\"],\"component---src-pages-search-index-js\":[\"/component---src-pages-search-index-js-bbd6c3a6b15ce6849ab4.js\"],\"component---src-pages-using-ssr-js\":[\"/component---src-pages-using-ssr-js-74b2f367abf69683ae43.js\"],\"component---src-pages-using-typescript-tsx\":[\"/component---src-pages-using-typescript-tsx-22ebf98dae97fabae578.js\"],\"component---src-templates-blog-blog-list-by-author-js\":[\"/component---src-templates-blog-blog-list-by-author-js-53f309754bce5c097433.js\"],\"component---src-templates-blog-blog-list-by-tag-js\":[\"/component---src-templates-blog-blog-list-by-tag-js-cdf817924fbc97c16334.js\"],\"component---src-templates-blog-blog-list-js\":[\"/component---src-templates-blog-blog-list-js-0d694e721fbe693e3108.js\"],\"component---src-templates-blog-blog-post-js\":[\"/component---src-templates-blog-blog-post-js-85236ed909febc7030af.js\"],\"component---src-templates-interview-interview-list-by-tag-js\":[\"/component---src-templates-interview-interview-list-by-tag-js-8b8cb2443ac1d695b64b.js\"],\"component---src-templates-interview-interview-list-js\":[\"/component---src-templates-interview-interview-list-js-80881aee1ca5ff6a7ce1.js\"],\"component---src-templates-interview-interview-post-js\":[\"/component---src-templates-interview-interview-post-js-8deaa3a12e95b5c67814.js\"],\"component---src-templates-teams-team-list-js\":[\"/component---src-templates-teams-team-list-js-f089ab8763db26727396.js\"],\"component---src-templates-teams-team-post-js\":[\"/component---src-templates-teams-team-post-js-f24225695e6eb1c3e2b6.js\"]}"; </script> <script>window.___webpackCompilationHash="1e34eabdb16d310daa08";</script><script src="/webpack-runtime-eb7d69b061217fbd2b89.js" async></script><script src="/framework-bedfaa99c3f15b46dad7.js" async></script><script src="/app-0c40ee85ab758ea4166b.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html>