1<!DOCTYPE html> 2<html dir='ltr' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'> 3<head> 4<meta content='width=device-width, initial-scale=1' name='viewport'/> 5<title>Lakmali Erandi Baminiwatta’s blog</title> 6<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> 7<!-- Chrome, Firefox OS and Opera --> 8<meta content='#6dbef3' name='theme-color'/> 9<!-- Windows Phone --> 10<meta content='#6dbef3' name='msapplication-navbutton-color'/> 11<meta content='blogger' name='generator'/> 12<link href='https://blog.lakmali.com/favicon.ico' rel='icon' type='image/x-icon'/> 13<link href='https://blog.lakmali.com/' rel='canonical'/> 14<link rel="alternate" type="application/atom+xml" title="Lakmali Erandi Baminiwatta’s blog - Atom" href="https://blog.lakmali.com/feeds/posts/default" /> 15<link rel="alternate" type="application/rss+xml" title="Lakmali Erandi Baminiwatta’s blog - RSS" href="https://blog.lakmali.com/feeds/posts/default?alt=rss" /> 16<link rel="service.post" type="application/atom+xml" title="Lakmali Erandi Baminiwatta’s blog - Atom" href="https://www.blogger.com/feeds/1621989597321372268/posts/default" /> 17<link rel="me" href="https://www.blogger.com/profile/06183648962849727542" /> 18<!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> 19<meta content='https://blog.lakmali.com/' property='og:url'/> 20<meta content='Lakmali Erandi Baminiwattaâs blog' property='og:title'/> 21<meta content='' property='og:description'/> 22<meta content='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FBW68Ho8lyj5pWTKcTrqlMi8BEUytVPZdEx2cBDtLY9zrVOYOMM23h0ZhdaUd_BRPbfsONsQ8ddxtGxAxCHYy6M4txCzrdVF4EH2QSmPUJevCt6lX2zbYZPvwDqi1L-v1MA8mVcIOMzc/w1200-h630-p-k-no-nu/add-function.png' property='og:image'/> 23<meta content='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7KknO87F4QoYFfOhjGnndOZChe2ZS1JoSo1kfv03ktrvnE22a7ePhgfWe_cnbx8X1Fr-crlr8AwZY77cZTVZFAKVuPVwS7p4od5LeqmCSVF_-DwuHXukN-M07JFCJnblof7NdEgYIMBpR/w1200-h630-p-k-no-nu/script1.png' property='og:image'/> 24<meta content='3a23d322cbcd6fb5' name='yandex-verification'/> 25<style type='text/css'>@font-face{font-family:'Playfair Display';font-style:normal;font-weight:900;font-display:swap;src:url(//fonts.gstatic.com/s/playfairdisplay/v40/nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKfsunDTbtPK-F2qC0usEw.woff2)format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}@font-face{font-family:'Playfair Display';font-style:normal;font-weight:900;font-display:swap;src:url(//fonts.gstatic.com/s/playfairdisplay/v40/nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKfsunDYbtPK-F2qC0usEw.woff2)format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}@font-face{font-family:'Playfair Display';font-style:normal;font-weight:900;font-display:swap;src:url(//fonts.gstatic.com/s/playfairdisplay/v40/nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKfsunDZbtPK-F2qC0usEw.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Playfair Display';font-style:normal;font-weight:900;font-display:swap;src:url(//fonts.gstatic.com/s/playfairdisplay/v40/nuFvD-vYSZviVYUb_rj3ij__anPXJzDwcbmjWBN2PKfsunDXbtPK-F2qC0s.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAX-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;
25src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAz-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAT-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAv-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuHT-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuGb-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAf-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAb-k3Yi128m0kN2.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1D
25BF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:italic;font-weight:300;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOKCnqEu92Fr1Mu53ZEC9_Vu3r1gIhOszmOClHrs6ljXfMMLt_QuAj-k3Yi128m0g.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmZiAr0klQmz24O0g.woff2)format('woff2');unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmQiAr0klQmz24O0g.woff2)format('woff2');unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmYiAr0klQmz24O0g.woff2)format('woff2');unicode-range:U+1F00-1FFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmXiAr0klQmz24O0g.woff2)format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVnoiAr0klQmz24O0g.woff2)format('woff2');unicode-range:U+0302-0303,U+0305,U+0307-0308,U+0310,U+0312,U+0315,U+031A,U+0326-0327,U+032C,U+032F-0330,U+0332-0333,U+0338,U+033A,U+0346,U+034D,U+0391-03A1,U+03A3-03A9,U+03B1-03C9,U+03D1,U+03D5-03D6,U+03F0-03F1,U+03F4-03F5,U+2016-2017,U+2034-2038,U+203C,U+2040,U+2043,U+2047,U+2050,U+2057,U+205F,U+2070-2071,U+2074-208E,U+2090-209C,U+20D0-20DC,U+20E1,U+20E5-20EF,U+2100-2112,U+2114-2115,U+2117-2121,U+2123-214F,U+2190,U+2192,U+2194-21AE,U+21B0-21E5,U+21F1-21F2,U+21F4-2211,U+2213-2214,U+2216-22FF,U+2308-230B,U+2310,U+2319,U+231C-2321,U+2336-237A,U+237C,U+2395,U+239B-23B7,U+23D0,U+23DC-23E1,U+2474-2475,U+25AF,U+25B3,U+25B7,U+25BD,U+25C1,U+25CA,U+25CC,U+25FB,U+266D-266F,U+27C0-27FF,U+2900-2AFF,U+2B0E-2B11,U+2B30-2B4C,U+2BFE,U+3030,U+FF5B,U+FF5D,U+1D400-1D7FF,U+1EE00-1EEFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVn6iAr0klQmz24O0g.woff2)format('woff2');unicode-range:U+0001-000C,U+000E-001F,U+007F-009F,U+20DD-20E0,U+20E2-20E4,U+2150-218F,U+2190,U+2192,U+2194-2199,U+21AF,U+21E6-21F0,U+21F3,U+2218-2219,U+2299,U+22C4-22C6,U+2300-243F,U+2440-244A,U+2460-24FF,U+25A0-27BF,U+2800-28FF,U+2921-2922,U+2981,U+29BF,U+29EB,U+2B00-2BFF,U+4DC0-4DFF,U+FFF9-FFFB,U+10140-1018E,U+10190-1019C,U+101A0,U+101D0-101FD,U+102E0-102FB,U+10E60-10E7E,U+1D2C0-1D2D3,U+1D2E0-1D37F,U+1F000-1F0FF,U+1F100-1F1AD,U+1F1E6-1F1FF,U+1F30D-1F30F,U+1F315,U+1F31C,U+1F31E,U+1F320-1F32C,U+1F336,U+1F378,U+1F37D,U+1F382,U+1F393-1F39F,U+1F3A7-1F3A8,U+1F3AC-1F3AF,U+1F3C2,U+1F3C4-1F3C6,U+1F3CA-1F3CE,U+1F3D4-1F3E0,U+1F3ED,U+1F3F1-1F3F3,U+1F3F5-1F3F7,U+1F408,U+1F415,U+1F41F,U+1F426,U+1F43F,U+1F441-1F442,U+1F444,U+1F446-1F449,U+1F44C-1F44E,U+1F453,U+1F46A,U+1F47D,U+1F4A3,U+1F4B0,U+1F4B3,U+1F4B9,U+1F4BB,U+1F4BF,U+1F4C8-1F4CB,U+1F4D6,U+1F4DA,U+1F4DF,U+1F4E3-1F4E6,U+1F4EA-1F4ED,U+1F4F7,U+1F4F9-1F4FB,U+1F4FD-1F4FE,U+1F503,U+1F507-1F50B,U+1F50D,U+1F512-1F513,U+1F53E-1F54A,U+1F54F-1F5FA,U+1F610,U+1F650-1F67F,U+1F687,U+1F68D,U+1F691,U+1F694,U+1F698,U+1F6AD,U+1F6B2,U+1F6B9-1F6BA,U+1F6BC,U+1F6C6-1F6CF,U+1F6D3-1F6D7,U+1F6E0-1F6EA,U+1F6F0-1F6F3,U+1F6F7-1F6FC,U+1F700-1F7FF,U+1F800-1F80B,U+1F810-1F847,U+1F850-1F859,U+1F860-1F887,U+1F890-1F8AD,U+1F8B0-1F8BB,U+1F8C0-1F8C1,U+1F900-1F90B,U+1F93B,U+1F946,U+1F984,U+1F996,U+1F9E9,U+1FA00-1FA6F,U+1FA70-1FA7C,U+1FA80-1FA89,U+1FA8F-1FAC6,U+1FACE-1FADC,U+1FADF-1FAE9,U+1FAF0-1FAF8,U+1FB00-1FBFF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;
25src:url(//fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmbiAr0klQmz24O0g.woff2)format('woff2');unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmaiAr0klQmz24O0g.woff2)format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(//fonts.gstatic.com/s/roboto/v51/KFOMCnqEu92Fr1ME7kSn66aGLdTylUAMQXC89YmC2DPNWubEbVmUiAr0klQmz24.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}</style> 26<style id='page-skin-1' type='text/css'><!-- 27.skip-navigation { 28background-color: #fff; 29box-sizing: border-box; 30color: #000; 31display: block; 32height: 0; 33left: 0; 34line-height: 50px; 35overflow: hidden; 36padding-top: 0; 37position: fixed; 38text-align: center; 39top: 0; 40-webkit-transition: box-shadow .3s , height .3s , padding-top .3s; 41transition: box-shadow .3s , height .3s , padding-top .3s; 42width: 100%; 43z-index: 900; 44} 45.skip-navigation:focus { 46box-shadow: 0 4px 5px 0 rgba(0,0,0,0.14) , 0 1px 10px 0 rgba(0,0,0,0.12) , 0 2px 4px -1px rgba(0,0,0,0.2); 47height: 50px; 48} 49#main { 50outline: none; 51} 52body { 53overflow-wrap: break-word; 54word-break: break-word; 55word-wrap: break-word; 56} 57.hidden { 58display: none; 59} 60.invisible { 61visibility: hidden; 62} 63.container:after, .float-container:after { 64clear: both; 65content: ""; 66display: table; 67} 68.clearboth { 69clear: both; 70} 71.dim-overlay { 72background-color: rgba(0,0,0,0.54); 73height: 100vh; 74left: 0; 75position: fixed; 76top: 0; 77width: 100%; 78} 79#sharing-dim-overlay { 80background-color: transparent; 81} 82.main-heading { 83position: absolute; 84clip: rect(1px,1px,1px,1px); 85padding: 0; 86border: 0; 87height: 1px; 88width: 1px; 89overflow: hidden; 90} 91.loading-spinner-large { 92-webkit-animation: mspin-rotate 1568.63ms infinite linear; 93animation: mspin-rotate 1568.63ms infinite linear; 94height: 48px; 95overflow: hidden; 96position: absolute; 97width: 48px; 98z-index: 200; 99} 100.loading-spinner-large>div { 101-webkit-animation: mspin-revrot 5332ms infinite steps(4); 102animation: mspin-revrot 5332ms infinite steps(4); 103} 104.loading-spinner-large>div>div { 105-webkit-animation: mspin-singlecolor-large-film 1333ms infinite steps(81); 106animation: mspin-singlecolor-large-film 1333ms infinite steps(81); 107background-size: 100%; 108height: 48px; 109width: 3888px; 110} 111.mspin-black-large>div>div, .mspin-grey_54-large>div>div { 112background-image: url(https://www.blogblog.com/indie/mspin_black_large.svg); 113} 114.mspin-white-large>div>div { 115background-image: url(https://www.blogblog.com/indie/mspin_white_large.svg); 116} 117.mspin-grey_54-large { 118opacity: .54; 119} 120@-webkit-keyframes mspin-singlecolor-large-film { 1210% { 122-webkit-transform: translateX(0); 123transform: translateX(0); 124} 125to { 126-webkit-transform: translateX(-3888px); 127transform: translateX(-3888px); 128} 129} 130@keyframes mspin-singlecolor-large-film { 1310% { 132-webkit-transform: translateX(0); 133transform: translateX(0); 134} 135to { 136-webkit-transform: translateX(-3888px); 137transform: translateX(-3888px); 138} 139} 140@-webkit-keyframes mspin-rotate { 1410% { 142-webkit-transform: rotate(0deg); 143transform: rotate(0deg); 144} 145to { 146-webkit-transform: rotate(360deg); 147transform: rotate(360deg); 148} 149} 150@keyframes mspin-rotate { 1510% { 152-webkit-transform: rotate(0deg); 153transform: rotate(0deg); 154} 155to { 156-webkit-transform: rotate(360deg); 157transform: rotate(360deg); 158} 159} 160@-webkit-keyframes mspin-revrot { 1610% { 162-webkit-transform: rotate(0deg); 163transform: rotate(0deg); 164} 165to { 166-webkit-transform: rotate(-360deg); 167transform: rotate(-360deg); 168} 169} 170@keyframes mspin-revrot { 1710% { 172-webkit-transform: rotate(0deg); 173transform: rotate(0deg); 174} 175to { 176-webkit-transform: rotate(-360deg); 177transform: rotate(-360deg); 178} 179} 180input::-ms-clear { 181display: none; 182} 183.blogger-logo, .svg-icon-24.blogger-logo { 184fill: #ff9800; 185opacity: 1; 186} 187.widget.Attribution { 188margin-top: 1em; 189text-align: center; 190} 191.widget.Attribution .blogger img, .widget.Attribution .blogger svg { 192vertical-align: bottom; 193} 194.widget.Attribution .blogger img { 195margin-right: .5em; 196} 197.widget.Attribution div { 198line-height: 24px; 199margin-top: .5em; 200} 201.widget.Attribution .image-attribution, .widget.Attribution .copyright { 202font-size: .7em; 203margin-top: 1.5em; 204} 205.item-control { 206display: none; 207} 208.BLOG_mobile_video_class { 209display: none; 210} 211.bg-photo { 212background-attachment: scroll !important; 213} 214body .CSS_LIGHTBOX { 215z-index: 900; 216} 217.extendable .show-more, .extendable .show-less { 218border-color: #108ee3; 219color: #108ee3; 220margin-top: 8px; 221} 222.extendable .show-more.hidden, .extendable .show-less.hidden { 223display: none; 224} 225.inline-ad { 226display: none; 227max-width: 100%; 228overflow: hidden; 229} 230.adsbygoogle { 231display: block; 232} 233#cookieChoiceInfo { 234bottom: 0; 235top: auto; 236} 237iframe.b-hbp-video { 238border: none; 239} 240.post-body img { 241max-width: 100%; 242} 243.post-body iframe { 244max-width: 100%; 245} 246.post-body a[imageanchor="1"] { 247display: inline-block; 248} 249.byline { 250margin-right: 1em; 251} 252.byline:last-child { 253margin-right: 0; 254} 255.paging-control-container { 256margin-bottom: 16px; 257} 258.paging-control-container .paging-control { 259display: inline-block; 260} 261.paging-control-container .paging-control, .paging-control-container .comment-range-text:after { 262color: #108ee3; 263} 264.paging-control-container .paging-control, .paging-control-container .comment-range-text { 265margin-right: 8px; 266} 267.paging-control-container .comment-range-text:after, .paging-control-container .paging-control:after { 268content: "\b7"; 269cursor: default; 270pointer-events: none; 271} 272.paging-control-container .comment-range-text:last-child:after, .paging-control-container .paging-control:last-child:after { 273content: none; 274} 275.paging-control-container .comment-range-text:after, .paging-control-container .paging-control:after { 276padding-left: 8px; 277} 278.byline.reactions iframe { 279height: 20px; 280} 281.b-notification { 282color: #000; 283background-color: white; 284border-bottom: solid 1px #000; 285box-sizing: border-box; 286padding: 16px 32px; 287text-align: center; 288} 289.b-notification.visible { 290-webkit-transition: margin-top .3s cubic-bezier(0.4,0.0,0.2,1); 291transition: margin-top .3s cubic-bezier(0.4,0.0,0.2,1); 292} 293.b-notification.invisible { 294position: absolute; 295} 296.b-notification-close { 297position: absolute; 298right: 8px; 299top: 8px; 300} 301.no-posts-message { 302line-height: 40px; 303text-align: center; 304} 305@media screen and (max-width: 800px) { 306body.item-view .post-body a[imageanchor="1"][style*="float: left;"], body.item-view .post-body a[imageanchor="1"][style*="float: right;"] { 307float: none !important; 308clear: none !important; 309} 310body.item-view .post-body a[imageanchor="1"] img { 311display: block; 312height: auto; 313margin: 0 auto; 314} 315body.item-view .post-body a[imageanchor="1"][style*="float: left;"] img, body.item-view .post-body .separator[style*="text-align: left"] a[imageanchor="1"] img { 316margin: 0 auto 0 0; 317} 318body.item-view .post-body a[imageanchor="1"][style*="float: right;"] img, body.item-view .post-body .separator[style*="text-align: right"] a[imageanchor="1"] img { 319margin: 0 0 0 auto; 320} 321.post-body a[imageanchor] { 322display: block; 323} 324body.item-view .post-body a[imageanchor="1"] { 325margin-left: 0 !important; 326margin-right: 0 !important; 327} 328body.item-view .post-body a[imageanchor="1"]+a[imageanchor="1"] { 329margin-top: 16px; 330} 331} 332#comments { 333border-top: 1px dashed rgba(0,0,0,0.54); 334margin-top: 20px; 335padding: 20px; 336} 337#comments .comment-thread ol { 338margin: 0; 339padding-left: 0; 340} 341#comments .comment-thread ol { 342padding-left: 0; 343} 344#comments .comment-thread .comment-replies, #comments .comment .comment-replybox-single { 345margin-left: 60px; 346} 347#comments .comment-thread .thread-count { 348display: none; 349} 350#comments .comment {
351list-style-type: none; 352padding: 0 0 30px; 353position: relative; 354} 355#comments .comment .comment { 356padding-bottom: 8px; 357} 358.comment .avatar-image-container { 359position: absolute; 360} 361.comment .avatar-image-container img { 362border-radius: 50%; 363} 364.avatar-image-container svg, .comment .avatar-image-container .avatar-icon { 365border-radius: 50%; 366border: solid 1px #848484; 367box-sizing: border-box; 368fill: #848484; 369height: 35px; 370margin: 0; 371padding: 7px; 372width: 35px; 373} 374.comment .comment-block { 375margin-top: 10px; 376padding-bottom: 0; 377} 378.comment .comment-block { 379margin-left: 60px; 380} 381#comments .comment-author-header-wrapper { 382margin-left: 40px; 383} 384#comments .comment .thread-expanded .comment-block { 385padding-bottom: 20px; 386} 387#comments .comment .comment-header .user, #comments .comment .comment-header .user a { 388color: #626262; 389font-style: normal; 390font-weight: bold; 391} 392#comments .comment .comment-actions { 393background: transparent; 394border: none; 395box-shadow: none; 396color: #108ee3; 397cursor: pointer; 398font-size: 14px; 399font-weight: bold; 400outline: none; 401text-decoration: none; 402text-transform: uppercase; 403width: auto; 404bottom: 0; 405margin-bottom: 15px; 406position: absolute; 407} 408#comments .comment .comment-actions>* { 409margin-right: 8px; 410} 411#comments .comment .comment-header .datetime { 412bottom: 0; 413color: rgba(0,0,0,0.54); 414display: inline-block; 415font-size: 13px; 416font-style: italic; 417} 418#comments .comment .comment-header .datetime { 419margin-left: 8px; 420} 421#comments .comment .comment-header .datetime a, #comments .comment .comment-footer .comment-timestamp a { 422color: rgba(0,0,0,0.54); 423} 424.comment .comment-body, #comments .comment .comment-content { 425margin-top: 12px; 426word-break: break-word; 427} 428.comment-body { 429margin-bottom: 12px; 430} 431#comments.embed[data-num-comments="0"] { 432border: none; 433margin-top: 0; 434padding-top: 0; 435} 436#comments.embed[data-num-comments="0"] #comment-post-message, #comments.embed[data-num-comments="0"] div.comment-form>p, #comments.embed[data-num-comments="0"] p.comment-footer { 437display: none; 438} 439#comment-editor-src { 440display: none; 441} 442.comments .comments-content .loadmore.loaded { 443max-height: 0; 444opacity: 0; 445overflow: hidden; 446} 447.extendable .remaining-items { 448height: 0; 449overflow: hidden; 450-webkit-transition: height .3s cubic-bezier(0.4,0.0,0.2,1); 451transition: height .3s cubic-bezier(0.4,0.0,0.2,1); 452} 453.extendable .remaining-items.expanded { 454height: auto; 455} 456.svg-icon-24, .svg-icon-24-button { 457cursor: pointer; 458height: 24px; 459width: 24px; 460min-width: 24px; 461} 462.touch-icon { 463margin: -12px; 464padding: 12px; 465} 466html[dir=rtl] .rtl-reversible-icon { 467-webkit-transform: scaleX(-1); 468-ms-transform: scaleX(-1); 469transform: scaleX(-1); 470} 471svg:not(:root).touch-icon { 472overflow: visible; 473} 474.touch-icon:focus, .touch-icon:active { 475background-color: rgba(153,153,153,.4); 476border-radius: 50%; 477} 478.touch-icon-button, .svg-icon-24-button { 479background: transparent; 480border: none; 481margin: 0; 482outline: none; 483padding: 0; 484} 485.touch-icon-button .touch-icon:focus, .touch-icon-button .touch-icon:active { 486background-color: transparent; 487} 488.touch-icon-button:focus .touch-icon, .touch-icon-button:active .touch-icon { 489background-color: rgba(153,153,153,.4); 490border-radius: 50%; 491} 492.widget.Profile .default-avatar-wrapper .avatar-icon { 493border-radius: 50%; 494border: solid 1px #848484; 495box-sizing: border-box; 496fill: #848484; 497margin: 0; 498} 499.widget.Profile .individual .profile-img, .widget.Profile .individual .avatar-icon { 500height: 120px; 501width: 120px; 502} 503.widget.Profile .team .profile-img, .widget.Profile .team .avatar-icon, .widget.Profile .team .default-avatar-wrapper { 504height: 40px; 505width: 40px; 506} 507.widget.Profile .individual .default-avatar-wrapper .avatar-icon { 508padding: 25px; 509} 510.widget.Profile .team .default-avatar-wrapper .avatar-icon { 511padding: 8px; 512} 513.snippet-container { 514margin: 0; 515position: relative; 516overflow: hidden; 517} 518.snippet-fade { 519bottom: 0; 520box-sizing: border-box; 521position: absolute; 522width: 96px; 523} 524.snippet-fade { 525right: 0; 526} 527.snippet-fade:after { 528content: '\2026'; 529} 530.snippet-fade:after { 531float: right; 532} 533.post-bottom { 534-webkit-box-align: center; 535-webkit-align-items: center; 536-ms-flex-align: center; 537align-items: center; 538display: -webkit-box; 539display: -webkit-flex; 540display: -ms-flexbox; 541display: flex; 542-webkit-flex-wrap: wrap; 543-ms-flex-wrap: wrap; 544flex-wrap: wrap; 545} 546.post-footer { 547-webkit-box-flex: 1; 548-webkit-flex: 1 1 auto;
549-ms-flex: 1 1 auto; 550flex: 1 1 auto; 551-webkit-flex-wrap: wrap; 552-ms-flex-wrap: wrap; 553flex-wrap: wrap; 554-webkit-box-ordinal-group: 2; 555-webkit-order: 1; 556-ms-flex-order: 1; 557order: 1; 558} 559.post-footer>* { 560-webkit-box-flex: 0; 561-webkit-flex: 0 1 auto; 562-ms-flex: 0 1 auto; 563flex: 0 1 auto; 564} 565.post-footer .byline:last-child { 566margin-right: 1em; 567} 568.jump-link { 569-webkit-box-flex: 0; 570-webkit-flex: 0 0 auto; 571-ms-flex: 0 0 auto; 572flex: 0 0 auto; 573-webkit-box-ordinal-group: 3; 574-webkit-order: 2; 575-ms-flex-order: 2; 576order: 2; 577} 578.centered-top-container.sticky { 579left: 0; 580position: fixed; 581right: 0; 582top: 0; 583width: auto; 584z-index: 50; 585-webkit-transition-property: opacity , -webkit-transform; 586transition-property: opacity , -webkit-transform; 587transition-property: transform , opacity; 588transition-property: transform , opacity , -webkit-transform; 589-webkit-transition-duration: .2s; 590transition-duration: .2s; 591-webkit-transition-timing-function: cubic-bezier(0.4,0.0,0.2,1); 592transition-timing-function: cubic-bezier(0.4,0.0,0.2,1); 593} 594.centered-top-placeholder { 595display: none; 596} 597.collapsed-header .centered-top-placeholder { 598display: block; 599} 600.centered-top-container .Header .replaced h1, .centered-top-placeholder .Header .replaced h1 { 601display: none; 602} 603.centered-top-container.sticky .Header .replaced h1 { 604display: block; 605} 606.centered-top-container.sticky .Header .header-widget { 607background: none; 608} 609.centered-top-container.sticky .Header .header-image-wrapper { 610display: none; 611} 612.centered-top-container img, .centered-top-placeholder img { 613max-width: 100%; 614} 615.collapsible { 616-webkit-transition: height .3s cubic-bezier(0.4,0.0,0.2,1); 617transition: height .3s cubic-bezier(0.4,0.0,0.2,1); 618} 619.collapsible, .collapsible>summary { 620display: block; 621overflow: hidden; 622} 623.collapsible>:not(summary) { 624display: none; 625} 626.collapsible[open]>:not(summary) { 627display: block; 628} 629.collapsible:focus, .collapsible>summary:focus { 630outline: none; 631} 632.collapsible>summary { 633cursor: pointer; 634display: block; 635padding: 0; 636} 637.collapsible:focus>summary, .collapsible>summary:focus { 638background-color: transparent; 639} 640.collapsible>summary::-webkit-details-marker { 641display: none; 642} 643.collapsible-title { 644-webkit-box-align: center; 645-webkit-align-items: center; 646-ms-flex-align: center; 647align-items: center; 648display: -webkit-box; 649display: -webkit-flex; 650display: -ms-flexbox; 651display: flex; 652} 653.collapsible-title .title { 654-webkit-box-flex: 1; 655-webkit-flex: 1 1 auto; 656-ms-flex: 1 1 auto; 657flex: 1 1 auto; 658-webkit-box-ordinal-group: 1; 659-webkit-order: 0; 660-ms-flex-order: 0; 661order: 0; 662overflow: hidden; 663text-overflow: ellipsis; 664white-space: nowrap; 665} 666.collapsible-title .chevron-down, .collapsible[open] .collapsible-title .chevron-up { 667display: block; 668} 669.collapsible-title .chevron-up, .collapsible[open] .collapsible-title .chevron-down { 670display: none; 671} 672.flat-button { 673cursor: pointer; 674display: inline-block; 675font-weight: bold; 676text-transform: uppercase; 677border-radius: 2px; 678padding: 8px; 679margin: -8px; 680} 681.flat-icon-button { 682background: transparent; 683border: none; 684margin: 0; 685outline: none; 686padding: 0; 687margin: -12px; 688padding: 12px; 689cursor: pointer; 690box-sizing: content-box; 691display: inline-block; 692line-height: 0; 693} 694.flat-icon-button, .flat-icon-button .splash-wrapper { 695border-radius: 50%; 696} 697.flat-icon-button .splash.animate { 698-webkit-animation-duration: .3s; 699animation-duration: .3s; 700} 701.overflowable-container { 702max-height: 46px; 703overflow: hidden; 704position: relative; 705} 706.overflow-button { 707cursor: pointer; 708} 709#overflowable-dim-overlay { 710background: transparent; 711} 712.overflow-popup { 713box-shadow: 0 2px 2px 0 rgba(0,0,0,.14) , 0 3px 1px -2px rgba(0,0,0,.2) , 0 1px 5px 0 rgba(0,0,0,.12); 714background-color: #fff8f6; 715left: 0; 716max-width: calc(100% - 32px); 717position: absolute; 718top: 0; 719visibility: hidden; 720z-index: 101; 721} 722.overflow-popup ul { 723list-style: none; 724} 725.overflow-popup li, .overflow-popup .tabs li { 726display: block; 727height: auto; 728} 729.overflow-popup .tabs li { 730padding-left: 0; 731padding-right: 0; 732} 733.overflow-button.hidden, .overflow-popup li.hidden, .overflow-popup .tabs li.hidden { 734display: none; 735} 736.pill-button { 737background: transparent; 738border: 1px solid; 739border-radius: 12px; 740cursor: pointer; 741display: inline-block; 742padding: 4px 16px; 743text-transform: uppercase; 744} 745.ripple { 746position: relative; 747} 748.ripple>* { 749z-index: 1; 750} 751.splash-wrapper { 752bottom: 0; 753left: 0; 754overflow: hidden; 755pointer-events: none; 756position: absolute; 757right: 0; 758top: 0; 759z-index: 0; 760} 761.splash { 762background: hsl(0,0%,80%); 763border-radius: 100%; 764display: block; 765opacity: .6; 766position: absolute; 767-webkit-transform: scale(0); 768-ms-transform: scale(0); 769transform: scale(0); 770} 771.splash.animate { 772-webkit-animation: ripple-effect .4s linear; 773animation: ripple-effect .4s linear; 774} 775@-webkit-keyframes ripple-effect { 776to { 777opacity: 0; 778-webkit-transform: scale(2.5); 779transform: scale(2.5); 780} 781} 782@keyframes ripple-effect { 783to { 784opacity: 0; 785-webkit-transform: scale(2.5); 786transform: scale(2.5); 787} 788} 789.search { 790display: -webkit-box; 791display: -webkit-flex; 792display: -ms-flexbox; 793display: flex; 794line-height: 24px; 795width: 24px; 796} 797.search form { 798z-index: 101; 799} 800.search h3 { 801display: none; 802} 803.search.focused { 804width: 100%; 805} 806.search.focused .section { 807width: 100%; 808} 809.search-expand { 810-webkit-box-flex: 0; 811-webkit-flex: 0 0 auto;
812-ms-flex: 0 0 auto; 813flex: 0 0 auto; 814} 815.search-expand-text { 816display: none; 817} 818.search-close { 819display: inline; 820vertical-align: middle; 821} 822.search form { 823display: -webkit-box; 824display: -webkit-flex; 825display: -ms-flexbox; 826display: flex; 827-webkit-box-flex: 1; 828-webkit-flex: 1 0 0; 829-ms-flex: 1 0 0px; 830flex: 1 0 0; 831border-bottom: solid 1px transparent; 832padding-bottom: 8px; 833} 834.search form>* { 835display: none; 836} 837.search.focused form>* { 838display: block; 839} 840.search .search-input label { 841display: none; 842} 843.centered-top-placeholder.cloned .search form { 844z-index: 30; 845} 846.search.focused form { 847border-color: #ffffff; 848position: relative; 849width: auto; 850} 851.collapsed-header .centered-top-container .search.focused form { 852border-bottom-color: transparent; 853} 854.search-input { 855-webkit-box-flex: 1; 856-webkit-flex: 1 0 1px; 857-ms-flex: 1 0 1px; 858flex: 1 0 1px; 859} 860.search-input input { 861background: none; 862border: none; 863box-sizing: border-box; 864color: #ffffff; 865display: inline-block; 866outline: none; 867width: calc(100% - 48px); 868} 869.search-input input.no-cursor { 870color: transparent; 871text-shadow: 0 0 0 #ffffff; 872} 873.collapsed-header .centered-top-container .search-action, .collapsed-header .centered-top-container .search-input input { 874color: #626262; 875} 876.collapsed-header .centered-top-container .search-input input.no-cursor { 877color: transparent; 878text-shadow: 0 0 0 #626262; 879} 880.search-input input.no-cursor:focus, .collapsed-header .centered-top-container .search-input input.no-cursor:focus { 881outline: none; 882} 883.search-focused>* { 884visibility: hidden; 885} 886.search-focused .search, .search-focused .search-icon { 887visibility: visible; 888} 889.search.focused .search-action { 890display: block; 891} 892.search.focused .search-action:disabled { 893opacity: .3; 894} 895.widget.Sharing .sharing-button { 896display: none; 897} 898.widget.Sharing .sharing-buttons li { 899padding: 0; 900} 901.widget.Sharing .sharing-buttons li span { 902display: none; 903} 904.post-share-buttons { 905position: relative; 906} 907.share-buttons .svg-icon-24, .centered-bottom .share-buttons .svg-icon-24 { 908fill: #707070; 909} 910.sharing-open.touch-icon-button:focus .touch-icon, .sharing-open.touch-icon-button:active .touch-icon { 911background-color: transparent; 912} 913.share-buttons { 914background-color: #fff8f6; 915border-radius: 2px; 916box-shadow: 0 2px 2px 0 rgba(0,0,0,.14) , 0 3px 1px -2px rgba(0,0,0,.2) , 0 1px 5px 0 rgba(0,0,0,.12); 917color: #848484; 918list-style: none; 919margin: 0; 920padding: 8px 0; 921position: absolute; 922top: -11px; 923min-width: 200px; 924z-index: 101; 925} 926.share-buttons.hidden { 927display: none; 928} 929.sharing-button { 930background: transparent; 931border: none; 932margin: 0; 933outline: none; 934padding: 0; 935cursor: pointer; 936} 937.share-buttons li { 938margin: 0; 939height: 48px; 940} 941.share-buttons li:last-child { 942margin-bottom: 0; 943} 944.share-buttons li .sharing-platform-button { 945box-sizing: border-box; 946cursor: pointer; 947display: block; 948height: 100%; 949margin-bottom: 0; 950padding: 0 16px; 951position: relative; 952width: 100%; 953} 954.share-buttons li .sharing-platform-button:focus, .share-buttons li .sharing-platform-button:hover { 955background-color: rgba(128,128,128,0.1); 956outline: none; 957} 958.share-buttons li svg[class^="sharing-"], .share-buttons li svg[class*=" sharing-"] { 959position: absolute; 960top: 10px; 961} 962.share-buttons li span.sharing-platform-button, .share-buttons li span.sharing-platform-button { 963position: relative; 964top: 0; 965} 966.share-buttons li .platform-sharing-text { 967display: block; 968font-size: 16px; 969line-height: 48px; 970white-space: nowrap; 971} 972.share-buttons li .platform-sharing-text { 973margin-left: 56px; 974} 975.sidebar-container { 976background-color: #ffffff; 977max-width: 284px; 978overflow-y: auto; 979-webkit-transition-property: -webkit-transform; 980transition-property: -webkit-transform; 981transition-property: transform; 982transition-property: transform, -webkit-transform; 983-webkit-transition-duration: .3s; 984transition-duration: .3s; 985-webkit-transition-timing-function: cubic-bezier(0.0,0.0,0.2,1); 986transition-timing-function: cubic-bezier(0.0,0.0,0.2,1); 987width: 284px; 988z-index: 101; 989-webkit-overflow-scrolling: touch; 990} 991.sidebar-container .navigation { 992line-height: 0; 993padding: 20px; 994} 995.sidebar-container .widget { 996background: none; 997margin: 0 16px; 998padding: 1em 0; 999} 1000.sidebar-container .widget .title { 1001color: #626262; 1002margin: 0; 1003} 1004.sidebar-container .widget ul { 1005list-style: none; 1006margin: 0; 1007padding: 0; 1008} 1009.sidebar-container .widget ul ul { 1010margin-left: 1em; 1011} 1012.sidebar-container .widget ul li { 1013font-size: 16px; 1014line-height: normal; 1015} 1016.BlogArchive li { 1017margin: 16px 0; 1018} 1019.BlogArchive li:last-child { 1020margin-bottom: 0; 1021} 1022.Label .label-count:before, .BlogArchive .post-count:before { 1023content: '('; 1024} 1025.Label .label-count:after, .BlogArchive .post-count:after { 1026content: ')'; 1027} 1028.Label .label-count, .BlogArchive .post-count { 1029float: right; 1030margin-left: .25em; 1031} 1032.Label li a { 1033display: inline-block; 1034} 1035.widget.Translate .skiptranslate>div { 1036display: block !important; 1037} 1038.widget.Profile .profile-link { 1039background-image: none !important; 1040display: -webkit-box; 1041display: -webkit-flex; 1042display: -ms-flexbox; 1043display: flex; 1044} 1045.widget.Profile .team-member .profile-img, .widget.Profile .team-member .default-avatar-wrapper { 1046-webkit-box-flex: 0; 1047-webkit-flex: 0 0 auto;
1048-ms-flex: 0 0 auto; 1049flex: 0 0 auto; 1050} 1051.widget.Profile .team-member .profile-img, .widget.Profile .team-member .default-avatar-wrapper { 1052margin-right: 1em; 1053} 1054.widget.Profile .individual .profile-link { 1055-webkit-box-orient: vertical; 1056-webkit-box-direction: normal; 1057-webkit-flex-direction: column; 1058-ms-flex-direction: column; 1059flex-direction: column; 1060} 1061.widget.Profile .team .profile-link .profile-name { 1062-webkit-align-self: center; 1063-ms-flex-item-align: center; 1064-ms-grid-row-align: center; 1065align-self: center; 1066display: block; 1067-webkit-box-flex: 1; 1068-webkit-flex: 1 1 auto; 1069-ms-flex: 1 1 auto; 1070flex: 1 1 auto; 1071} 1072.sidebar-container .sidebar-back { 1073cursor: pointer; 1074} 1075.sidebar-container .widget+.widget { 1076border-top: 1px dashed #d3d3d3; 1077} 1078.dim-overlay { 1079background-color: rgba(0,0,0,0.54); 1080z-index: 100; 1081} 1082body.sidebar-visible { 1083overflow-y: hidden; 1084} 1085@media screen and (max-width: 1439px) { 1086.sidebar-container { 1087bottom: 0; 1088position: fixed; 1089top: 0; 1090} 1091.sidebar-container { 1092left: 0; 1093right: auto; 1094} 1095.sidebar-container.sidebar-invisible { 1096-webkit-transition-timing-function: cubic-bezier(0.4,0.0,0.6,1); 1097transition-timing-function: cubic-bezier(0.4,0.0,0.6,1); 1098} 1099.sidebar-container.sidebar-invisible { 1100-webkit-transform: translateX(-284px); 1101-ms-transform: translateX(-284px); 1102transform: translateX(-284px); 1103} 1104} 1105@media screen and (min-width: 1440px) { 1106.sidebar-container { 1107position: absolute; 1108top: 0; 1109} 1110.sidebar-container { 1111left: 0; 1112right: auto; 1113} 1114.sidebar-container .navigation { 1115display: none; 1116} 1117} 1118.dialog { 1119box-shadow: 0 2px 2px 0 rgba(0,0,0,.14) , 0 3px 1px -2px rgba(0,0,0,.2) , 0 1px 5px 0 rgba(0,0,0,.12); 1120background: #ffffff; 1121box-sizing: border-box; 1122padding: 30px; 1123position: fixed; 1124text-align: center; 1125width: calc(100% - 24px); 1126z-index: 101; 1127} 1128.dialog input[type=text], .dialog input[type=email] { 1129background-color: transparent; 1130border-bottom: solid 1px rgba(136,136,136,0.12); 1131border-left: none; 1132border-right: none; 1133border-top: none; 1134color: #888888; 1135display: block; 1136font-family: Roboto, sans-serif; 1137font-size: 16px; 1138line-height: 24px; 1139margin: auto; 1140padding-bottom: 7px; 1141outline: none; 1142text-align: center; 1143width: 100%; 1144} 1145.dialog input[type=text]::-webkit-input-placeholder, .dialog input[type=email]::-webkit-input-placeholder { 1146color: #888888; 1147} 1148.dialog input[type=text]::-moz-placeholder, .dialog input[type=email]::-moz-placeholder { 1149color: #888888; 1150} 1151.dialog input[type=text]:-ms-input-placeholder, .dialog input[type=email]:-ms-input-placeholder { 1152color: #888888; 1153} 1154.dialog input[type=text]::placeholder, .dialog input[type=email]::placeholder { 1155color: #888888; 1156} 1157.dialog input[type=text]:focus, .dialog input[type=email]:focus { 1158border-bottom: solid 2px #108ee3; 1159padding-bottom: 6px; 1160} 1161.dialog input[type=submit] { 1162font-family: Roboto, sans-serif; 1163} 1164.dialog input.no-cursor { 1165color: transparent; 1166text-shadow: 0 0 0 #888888; 1167} 1168.dialog input.no-cursor:focus { 1169outline: none; 1170} 1171.subscribe-popup { 1172max-width: 364px; 1173} 1174.subscribe-popup h3 { 1175color: #626262; 1176font-size: 1.8em; 1177margin-top: 0; 1178} 1179.subscribe-popup div.widget.FollowByEmail h3 { 1180display: none; 1181} 1182.subscribe-popup div.widget.FollowByEmail .follow-by-email-submit { 1183background: transparent; 1184border: none; 1185box-shadow: none; 1186color: #108ee3; 1187cursor: pointer; 1188font-size: 14px; 1189font-weight: bold; 1190outline: none; 1191text-decoration: none; 1192text-transform: uppercase; 1193width: auto; 1194color: #108ee3; 1195display: inline-block; 1196margin: 0 auto; 1197margin-top: 24px; 1198width: auto; 1199white-space: normal; 1200} 1201.subscribe-popup div.widget.FollowByEmail .follow-by-email-submit:disabled { 1202cursor: default; 1203opacity: .3; 1204} 1205@media (max-width:800px) { 1206.blog-name div.widget.Subscribe { 1207margin-bottom: 16px; 1208} 1209body.item-view .blog-name div.widget.Subscribe { 1210margin: 8px auto 16px; 1211width: 100%; 1212} 1213} 1214.tabs { 1215list-style: none; 1216} 1217.tabs li { 1218display: inline-block; 1219} 1220.tabs li a { 1221cursor: pointer; 1222display: inline-block; 1223font-weight: bold; 1224text-transform: uppercase; 1225padding: 12px 8px; 1226} 1227.tabs .selected { 1228border-bottom: 4px solid #ffffff; 1229} 1230.tabs .selected a { 1231color: #ffffff; 1232} 1233body#layout .bg-photo-overlay, body#layout .bg-photo { 1234display: none; 1235} 1236body#layout .page_body { 1237padding: 0; 1238position: relative; 1239top: 0; 1240} 1241body#layout .page { 1242display: inline-block; 1243left: inherit; 1244position: relative; 1245vertical-align: top; 1246width: 540px; 1247} 1248body#layout .centered { 1249max-width: 954px; 1250} 1251body#layout .navigation { 1252display: none; 1253} 1254body#layout .sidebar-container { 1255display: inline-block; 1256width: 40%; 1257} 1258body#layout .hamburger-menu, body#layout .search { 1259display: none; 1260} 1261.centered-top-container .svg-icon-24, body.collapsed-header .centered-top-placeholder .svg-icon-24 { 1262fill: #ffffff; 1263} 1264.sidebar-container .svg-icon-24 { 1265fill: #848484; 1266} 1267.centered-bottom .svg-icon-24, body.collapsed-header .centered-top-container .svg-icon-24 { 1268fill: #848484; 1269} 1270.share-buttons .svg-icon-24, .centered-bottom .share-buttons .svg-icon-24 { 1271fill: #707070; 1272} 1273body { 1274background-color: #6dbef3; 1275color: #888888; 1276font: 15px Roboto, sans-serif; 1277margin: 0; 1278min-height: 100vh; 1279} 1280img { 1281max-width: 100%; 1282} 1283h3 { 1284color: #888888; 1285font-size: 16px; 1286} 1287a { 1288text-decoration: none; 1289color: #108ee3; 1290} 1291a:visited { 1292color: #B33a0d; 1293} 1294a:hover { 1295color: #B33a0d; 1296} 1297blockquote { 1298color: #626262; 1299font: italic 300 15px Roboto, sans-serif; 1300font-size: x-large; 1301text-align: center; 1302} 1303.pill-button { 1304font-size: 12px; 1305} 1306.bg-photo-container { 1307height: 480px; 1308overflow: hidden; 1309position: absolute; 1310width: 100%; 1311z-index: 1; 1312} 1313.bg-photo { 1314background: #ccd9ea url(//themes.googleusercontent.com/image?id=1PViTUnIUSKDy0JJydtqwXOzvZKG0IIJYN8IFx4v__-n881NSni7O3gGUXyMmHxVs8wah) repeat fixed top center /* Credit: lobaaaato (http://www.istockphoto.com/file_closeup.php?id=8321826&platform=blogger) */; 1315background-attachment: scroll; 1316background-size: cover; 1317-webkit-filter: blur(0px); 1318filter: blur(0px);
1319height: calc(100% + 2 * 0px); 1320left: 0px; 1321position: absolute; 1322top: 0px; 1323width: calc(100% + 2 * 0px); 1324} 1325.bg-photo-overlay { 1326background: rgba(0,0,0,.26); 1327background-size: cover; 1328height: 480px; 1329position: absolute; 1330width: 100%; 1331z-index: 2; 1332} 1333.hamburger-menu { 1334float: left; 1335margin-top: 0; 1336} 1337.sticky .hamburger-menu { 1338float: none; 1339position: absolute; 1340} 1341body.item-view .return_link { 1342margin-bottom: 12px; 1343margin-top: 12px; 1344position: absolute; 1345} 1346.search { 1347float: right; 1348position: relative; 1349-webkit-transition-property: width; 1350transition-property: width; 1351-webkit-transition-duration: .5s; 1352transition-duration: .5s; 1353-webkit-transition-timing-function: cubic-bezier(0.4,0.0,0.2,1); 1354transition-timing-function: cubic-bezier(0.4,0.0,0.2,1); 1355} 1356.search form { 1357height: 36px; 1358} 1359.centered-top-container.sticky .search, body.item-view .search { 1360float: none; 1361position: absolute; 1362} 1363.centered-top-container.sticky .search, body.item-view .search { 1364right: 0; 1365} 1366.search_button { 1367-webkit-box-flex: 0; 1368-webkit-flex: 0 0 24px; 1369-ms-flex: 0 0 24px; 1370flex: 0 0 24px; 1371-webkit-box-orient: vertical; 1372-webkit-box-direction: normal; 1373-webkit-flex-direction: column; 1374-ms-flex-direction: column; 1375flex-direction: column; 1376} 1377.search_button svg { 1378margin-top: 0; 1379} 1380body.item-view .search, .centered-top-container.sticky .search { 1381margin-left: 0; 1382position: absolute; 1383} 1384body.item-view .search, .centered-top-container.sticky .search { 1385right: 0; 1386} 1387body.item-view .search.focused, .centered-top-container.sticky .search.focused { 1388width: calc(100% - 50px); 1389} 1390.search { 1391border-bottom: solid 1px rgba(255, 255, 255, 0); 1392z-index: 101; 1393} 1394.search form { 1395-webkit-transition-property: border-color; 1396transition-property: border-color; 1397-webkit-transition-delay: .5s; 1398transition-delay: .5s; 1399-webkit-transition-duration: .2s; 1400transition-duration: .2s; 1401-webkit-transition-timing-function: cubic-bezier(0.4,0.0,0.2,1); 1402transition-timing-function: cubic-bezier(0.4,0.0,0.2,1); 1403} 1404.search.focused form { 1405display: -webkit-box; 1406display: -webkit-flex; 1407display: -ms-flexbox; 1408display: flex; 1409-webkit-box-flex: 1; 1410-webkit-flex: 1 0 1px; 1411-ms-flex: 1 0 1px; 1412flex: 1 0 1px; 1413} 1414.centered-top-placeholder.cloned .search form { 1415z-index: 30; 1416} 1417.search.focused { 1418width: calc(100% - 48px); 1419} 1420.search.focused form { 1421border-color: #ffffff; 1422position: relative; 1423width: auto; 1424} 1425.search.focused form { 1426margin-left: -24px; 1427padding-left: 36px; 1428} 1429.centered-top-container.sticky .search.focused form { 1430border-bottom-color: #757575; 1431} 1432.search-input { 1433height: 48px; 1434} 1435.search-input input { 1436display: block; 1437color: #ffffff; 1438font: 16px Roboto, sans-serif; 1439height: 48px; 1440line-height: 48px; 1441padding: 0; 1442width: 100%; 1443} 1444.search-input input::-webkit-input-placeholder { 1445color: rgba(255, 255, 255, 0.30); 1446} 1447.search-input input::-moz-placeholder { 1448color: rgba(255, 255, 255, 0.30); 1449} 1450.search-input input:-ms-input-placeholder { 1451color: rgba(255, 255, 255, 0.30); 1452} 1453.search-input input::placeholder { 1454color: rgba(255, 255, 255, 0.30); 1455} 1456.search-action { 1457background: transparent; 1458border: none; 1459color: #ffffff; 1460cursor: pointer; 1461display: none; 1462height: 48px; 1463margin-top: 0; 1464} 1465.centered-top-container.sticky .search-action { 1466color: #757575; 1467} 1468.search.focused .search-action { 1469display: block; 1470} 1471.search.focused .search-action:disabled { 1472opacity: .3; 1473} 1474.search .dim-overlay { 1475background-color: transparent; 1476} 1477.page_body { 1478position: relative; 1479z-index: 20; 1480} 1481.blog-name { 1482margin: 24px 0 16px; 1483} 1484.centered-top-container .blog-name { 1485-webkit-transition-property: opacity; 1486transition-property: opacity; 1487-webkit-transition-duration: .5s; 1488transition-duration: .5s; 1489} 1490body.item-view .blog-name { 1491display: -webkit-box; 1492display: -webkit-flex; 1493display: -ms-flexbox; 1494display: flex; 1495-webkit-flex-wrap: wrap; 1496-ms-flex-wrap: wrap; 1497flex-wrap: wrap; 1498margin: 0 48px 27px; 1499} 1500body.item-view .subscribe-section-container { 1501-webkit-box-flex: 0; 1502-webkit-flex: 0 0 auto; 1503-ms-flex: 0 0 auto; 1504flex: 0 0 auto; 1505} 1506.centered-top-container.sticky .blog-name { 1507margin: 0 48px; 1508} 1509.centered-top-container.sticky .blog-name { 1510display: -webkit-box; 1511display: -webkit-flex; 1512display: -ms-flexbox; 1513display: flex; 1514} 1515.centered-top-container.sticky .blog-name #header { 1516-webkit-box-flex: 0; 1517-webkit-flex: 0 1 auto;
1518-ms-flex: 0 1 auto; 1519flex: 0 1 auto; 1520-webkit-box-ordinal-group: 2; 1521-webkit-order: 1; 1522-ms-flex-order: 1; 1523order: 1; 1524overflow: hidden; 1525} 1526.centered-top-container.sticky .Header h1 { 1527overflow: hidden; 1528text-overflow: ellipsis; 1529white-space: nowrap; 1530margin-bottom: -10px; 1531padding-bottom: 10px; 1532} 1533.centered-top-container.sticky .Header h1 { 1534margin-right: -10px; 1535padding-right: 10px; 1536} 1537.centered-top-container.sticky .blog-name .subscribe-section-container { 1538-webkit-box-flex: 0; 1539-webkit-flex: 0 0 auto; 1540-ms-flex: 0 0 auto; 1541flex: 0 0 auto; 1542-webkit-box-ordinal-group: 3; 1543-webkit-order: 2; 1544-ms-flex-order: 2; 1545order: 2; 1546} 1547.centered-top-container.sticky .blog-name, body.item-view .blog-name { 1548box-sizing: border-box; 1549margin-left: 36px; 1550min-height: 48px; 1551opacity: 1; 1552padding-top: 12px; 1553} 1554.search-focused>* { 1555visibility: visible; 1556} 1557.search-focused .hamburger-menu { 1558visibility: visible; 1559} 1560.sticky .search-focused .blog-name, body.item-view .search-focused .blog-name { 1561opacity: 0; 1562} 1563.page_body .centered { 1564box-sizing: border-box; 1565display: -webkit-box; 1566display: -webkit-flex; 1567display: -ms-flexbox; 1568display: flex; 1569-webkit-box-orient: vertical; 1570-webkit-box-direction: normal; 1571-webkit-flex-direction: column; 1572-ms-flex-direction: column; 1573flex-direction: column; 1574margin: 0 auto; 1575max-width: 954px; 1576min-height: 100vh; 1577padding: 24px 0; 1578} 1579.page_body .centered>* { 1580-webkit-box-flex: 0; 1581-webkit-flex: 0 0 auto; 1582-ms-flex: 0 0 auto; 1583flex: 0 0 auto; 1584} 1585.page_body .centered>#footer { 1586margin-top: auto; 1587} 1588.centered-bottom, .centered-top-container, .centered-top-placeholder { 1589padding: 0 16px; 1590} 1591.centered-top { 1592position: relative; 1593} 1594.centered-top-container.sticky { 1595background: #ffffff; 1596box-shadow: 0 0 20px 0 rgba(0,0,0,0.7); 1597box-sizing: border-box; 1598margin-left: 0; 1599} 1600.centered-top-container.sticky .centered-top { 1601margin: 4px auto; 1602max-width: calc(954px - 32px); 1603min-height: 48px; 1604} 1605.page_body.vertical-ads .centered .centered-bottom { 1606width: calc(100% - 176px); 1607} 1608.page_body.vertical-ads .centered .centered-bottom { 1609display: inline-block; 1610} 1611body.item-view .widget.Header, body.item-view #header { 1612margin-bottom: 5px; 1613margin-right: 15px; 1614} 1615body.item-view .sticky .widget.Header { 1616margin-bottom: 0; 1617} 1618.widget.Header h1 { 1619color: #ffffff; 1620font: 900 44px Playfair Display, serif; 1621line-height: normal; 1622margin: 0 0 13px; 1623text-align: center; 1624width: 100%; 1625} 1626.widget.Header h1 a, .widget.Header h1 a:visited, .widget.Header h1 a:hover { 1627color: #ffffff; 1628} 1629body.item-view .widget.Header h1, .centered-top-container.sticky .widget.Header h1 { 1630font-size: 24px; 1631line-height: 24px; 1632margin: 0; 1633text-align: left; 1634} 1635.centered-top-container.sticky .widget.Header h1 { 1636color: #757575; 1637} 1638.centered-top-container.sticky .widget.Header h1 a, .centered-top-container.sticky .widget.Header h1 a:visited, .centered-top-container.sticky .widget.Header h1 a:hover { 1639color: #757575; 1640} 1641.widget.Header p { 1642color: #ffffff; 1643margin: 0 0 13px; 1644opacity: .8; 1645text-align: center; 1646} 1647body.item-view .widget.Header p { 1648margin: 10px 0 0; 1649text-align: left; 1650} 1651.centered-top-container.sticky .widget.Header p { 1652display: none; 1653} 1654.widget .title { 1655line-height: 28px; 1656} 1657.widget.BlogArchive li { 1658font-size: 16px; 1659} 1660.widget.BlogArchive .post-count { 1661color: #757575; 1662} 1663div.widget.Blog .blog-posts .post-outer-container, #page_body div.widget.FeaturedPost { 1664background: #ffffff; 1665min-height: 40px; 1666padding: 30px 40px; 1667width: auto; 1668} 1669.post-outer-container, #page_body div.widget { 1670margin-bottom: 16px; 1671} 1672div.widget.Blog .blog-posts .post-outer-container:last-child { 1673margin-bottom: 0; 1674} 1675div.widget.Blog .blog-posts .post-outer-container .post-outer, .main .FeaturedPost .widget-content { 1676border: none; 1677position: relative; 1678padding-bottom: .25em; 1679} 1680.post:first-child { 1681margin-top: 0; 1682} 1683.post .thumb { 1684float: left; 1685height: 20%; 1686width: 20%; 1687} 1688.post-share-buttons-top, .post-share-buttons-bottom { 1689float: right; 1690} 1691body.item-view .post-share-buttons-bottom { 1692margin-right: 16px; 1693} 1694.post-share-buttons-bottom { 1695margin-right: 24px; 1696} 1697.post-header, .post-footer { 1698color: rgba(97, 97, 97, 0.54); 1699margin: 0; 1700width: inherit; 1701} 1702.post-header, .post-footer { 1703clear: left; 1704} 1705.blog-pager { 1706text-align: center; 1707} 1708.blog-pager a { 1709color: #888888; 1710} 1711.blog-pager a:visited { 1712color: #B33a0d; 1713} 1714.blog-pager a:hover { 1715color: #B33a0d; 1716} 1717.post-title { 1718font: 900 28px Playfair Display, serif; 1719max-width: calc(100% - 48px); 1720} 1721.post-title, .post-title a, .post-title a:visited, .post-title a:hover { 1722color: #626262; 1723} 1724.post-title { 1725margin: 0 0 8px; 1726} 1727.post-title { 1728float: left; 1729} 1730.post-title a { 1731font: 900 36px Playfair Display, serif; 1732} 1733.post-body { 1734color: #757575; 1735font: 15px Roboto, sans-serif; 1736line-height: 1.6em; 1737margin: 1.5em 0 2em; 1738display: block; 1739} 1740.post-body img { 1741height: inherit; 1742} 1743.PopularPosts { 1744background-color: #fff8f6; 1745padding: 30px 40px; 1746} 1747.PopularPosts .item-content { 1748color: #757575; 1749} 1750.PopularPosts a, .PopularPosts a:visited, .PopularPosts a:hover { 1751color: #B33a0d; 1752} 1753.PopularPosts .post-title, .PopularPosts .post-title a, .PopularPosts .post-title a:visited .PopularPosts .post-title a:hover { 1754color: #212121; 1755font-size: 18px;
1756font-weight: bold; 1757line-height: 24px; 1758} 1759.FeaturedPost img { 1760margin-top: 2em; 1761} 1762.FeaturedPost .snippet-container { 1763margin: 2em 0; 1764} 1765.FeaturedPost .snippet-container p { 1766margin: 0; 1767} 1768.post-body .snippet-thumbnail { 1769float: left; 1770margin: 0; 1771margin-right: 2em; 1772max-height: 128px; 1773max-width: 128px; 1774} 1775.FeaturedPost .snippet-thumbnail { 1776float: none; 1777height: auto; 1778margin-bottom: 2em; 1779margin-right: 0; 1780overflow: hidden; 1781max-height: calc(600px + 2em); 1782max-width: 100%; 1783text-align: center; 1784width: 100%; 1785} 1786.FeaturedPost .snippet-thumbnail img { 1787width: 100%; 1788} 1789.post-body .snippet-thumbnail img, .FeaturedPost .snippet-thumbnail img { 1790max-width: 100%; 1791} 1792.byline { 1793color: rgba(97, 97, 97, 0.54); 1794display: inline-block; 1795line-height: 24px; 1796margin-top: 8px; 1797vertical-align: top; 1798} 1799.PopularPosts .jump-link { 1800float: right; 1801margin-top: 16px; 1802} 1803.flat-button.ripple .splash { 1804background-color: rgba(16,142,227,0.4); 1805} 1806.flat-button.ripple:hover { 1807background-color: rgba(16,142,227,0.12); 1808} 1809.byline.post-author:first-child { 1810margin-right: 0; 1811} 1812a.timestamp-link, a:active.timestamp-link, a:visited.timestamp-link { 1813color: inherit; 1814font: inherit; 1815text-decoration: inherit; 1816} 1817.byline.reactions .reactions-label { 1818line-height: 22px; 1819vertical-align: top; 1820} 1821div.byline.post-share-buttons { 1822position: relative; 1823display: inline-block; 1824margin-top: 0; 1825width: 100%; 1826} 1827.byline.post-share-buttons .sharing { 1828float: right; 1829} 1830.post-share-buttons { 1831margin-left: 0; 1832} 1833div.clear-sharing { 1834min-height: 24px; 1835} 1836.comment-link { 1837color: #108ee3; 1838position: relative; 1839} 1840.comment-link .num_comments { 1841margin-left: 8px; 1842vertical-align: top; 1843} 1844#comment-holder .continue { 1845display: none; 1846} 1847#comment-editor { 1848margin-bottom: 20px; 1849margin-top: 20px; 1850} 1851#comments h3.title, #comments .comment-form h4 { 1852position: absolute; 1853clip: rect(1px,1px,1px,1px); 1854padding: 0; 1855border: 0; 1856height: 1px; 1857width: 1px; 1858overflow: hidden; 1859} 1860div.post-filter-message { 1861background-color: rgba(0,0,0,0.7); 1862color: #fff; 1863display: table; 1864margin-bottom: 16px; 1865width: 100%; 1866} 1867div.post-filter-message div { 1868display: table-cell; 1869padding: 15px 28px; 1870} 1871div.post-filter-message div:last-child { 1872padding-left: 0; 1873text-align: right; 1874} 1875div.post-filter-message a { 1876white-space: nowrap; 1877} 1878div.post-filter-message .search-query, div.post-filter-message .search-label { 1879font-weight: bold; 1880color: #108ee3; 1881} 1882#blog-pager { 1883margin: 2em 0; 1884} 1885#blog-pager a { 1886color: #ffffff; 1887font-size: 14px; 1888} 1889.blog-name .subscribe-section-container { 1890margin-bottom: 32px; 1891text-align: center; 1892-webkit-transition-property: opacity; 1893transition-property: opacity; 1894-webkit-transition-duration: .5s; 1895transition-duration: .5s; 1896} 1897body.item-view .blog-name .subscribe-section-container, .centered-top-container.sticky .blog-name .subscribe-section-container { 1898margin: 0 0 8px; 1899} 1900.centered-top-container.sticky #header { 1901margin-bottom: 8px; 1902} 1903.centered-top-container.sticky #header { 1904margin-right: 8px; 1905} 1906.centered-top-container.sticky .centered-top.search-focused .subscribe-section-container, body.item-view .centered-top.search-focused .subscribe-section-container { 1907opacity: 0; 1908} 1909.subscribe-button { 1910border-color: #ffffff; 1911color: #ffffff; 1912} 1913.sticky .subscribe-button { 1914border-color: #757575; 1915color: #757575; 1916} 1917.blog-name .PageList .overflowable-contents { 1918width: 100%; 1919} 1920.centered-top-container.sticky .PageList { 1921display: none; 1922} 1923.blog-name .PageList h3.title { 1924color: #ffffff; 1925margin: 8px auto; 1926text-align: center; 1927width: 100%; 1928} 1929.blog-name .PageList { 1930margin-top: 16px; 1931padding-top: 8px; 1932text-align: center; 1933} 1934.tabs { 1935margin: 0 auto; 1936padding: 0; 1937} 1938.tabs li { 1939margin: 0 8px; 1940} 1941.overflow-button a { 1942padding: 12px 8px; 1943} 1944.tabs li a, .overflow-button a { 1945color: #d3d3d3; 1946font: 700 normal 15px Roboto, sans-serif; 1947} 1948.overflow-popup .tabs li { 1949text-align: left; 1950} 1951.overflow-popup li a { 1952color: #757575; 1953display: block; 1954padding: 8px 20px; 1955} 1956.overflow-popup li.selected a { 1957color: #212121; 1958} 1959a.report_abuse { 1960font-weight: normal; 1961} 1962.widget.Label ul { 1963list-style: none; 1964padding: 0; 1965} 1966.widget.Label li, .widget.Label span.label-size, .byline.post-labels a { 1967background-color: #016fff; 1968border: 1px solid #016fff; 1969border-radius: 15px; 1970display: inline-block; 1971margin: 4px 4px 4px 0; 1972padding: 3px 8px; 1973} 1974.widget.Label li a, .byline.post-labels a { 1975color: #ffffff; 1976} 1977.main div.widget.PopularPosts { 1978padding: 16px 40px; 1979} 1980div.widget.PopularPosts, div.widget.PopularPosts h3.title a { 1981color: #757575; 1982font: 15px Roboto, sans-serif; 1983} 1984.widget.ReportAbuse, div.widget.PopularPosts .post+.post { 1985border-top: 1px dashed #d3d3d3; 1986} 1987div.widget.PopularPosts h3.post-title { 1988margin-bottom: 0; 1989} 1990div.widget.PopularPosts h3.title { 1991font-size: 14px; 1992margin: 0; 1993} 1994.PopularPosts .byline { 1995color: rgba(0, 0, 0, 0.54); 1996} 1997.PopularPosts .post-header .byline { 1998font-size: .9em; 1999font-style: italic; 2000margin-top: 6px; 2001} 2002div.widget.PopularPosts .item-content { 2003margin-top: 24px; 2004} 2005div.widget.PopularPosts ul { 2006list-style: none; 2007padding: 0; 2008margin: 0; 2009} 2010div.widget.PopularPosts .post {
2011padding: 20px 0; 2012} 2013div.widget.PopularPosts div.item-thumbnail { 2014float: left; 2015margin-right: 32px; 2016} 2017div.widget.PopularPosts div.item-thumbnail img { 2018height: 88px; 2019padding: 0; 2020width: 88px; 2021} 2022.inline-ad { 2023margin-bottom: 16px; 2024} 2025.desktop-ad .inline-ad { 2026display: block; 2027} 2028.adsbygoogle { 2029overflow: hidden; 2030} 2031.vertical-ad-container { 2032width: 128px; 2033} 2034.vertical-ad-container { 2035float: right; 2036margin-right: 16px; 2037} 2038.vertical-ad-container .widget.AdSense+.widget.AdSense { 2039margin-top: 16px; 2040} 2041.vertical-ad-placeholder, .inline-ad-placeholder { 2042background: #ffffff; 2043border: 1px solid #000; 2044opacity: .9; 2045vertical-align: middle; 2046text-align: center; 2047} 2048.vertical-ad-placeholder { 2049height: 600px; 2050} 2051.inline-ad-placeholder { 2052height: 90px; 2053} 2054.vertical-ad-placeholder span, .inline-ad-placeholder span { 2055margin-top: 290px; 2056display: block; 2057text-transform: uppercase; 2058font-weight: bold; 2059color: #626262; 2060} 2061.vertical-ad-placeholder span { 2062margin-top: 290px; 2063padding: 0 40px; 2064} 2065.inline-ad-placeholder span { 2066margin-top: 36px; 2067} 2068.Attribution { 2069color: #e3e3e3; 2070} 2071.Attribution a, .Attribution a:hover, .Attribution a:visited { 2072color: #ffffff; 2073} 2074.Attribution svg { 2075fill: #ffffff; 2076} 2077.sidebar-container { 2078box-shadow: 1px 1px 3px rgba(0,0,0,.1); 2079} 2080.sidebar-container, .sidebar-container .sidebar_bottom { 2081background-color: #ffffff; 2082} 2083.sidebar-container .navigation, .sidebar-container .sidebar_top_wrapper { 2084background-color: #ffffff; 2085} 2086.sidebar-container .sidebar_top { 2087overflow: auto; 2088} 2089.sidebar-container .sidebar_bottom { 2090width: 100%; 2091padding-top: 16px; 2092} 2093.sidebar_top .widget.Profile { 2094padding-bottom: 16px; 2095} 2096.sidebar-container .widget:first-child { 2097padding-top: 0; 2098} 2099.widget.Profile { 2100margin: 0; 2101width: 100%; 2102} 2103.widget.Profile h2 { 2104display: none; 2105} 2106.widget.Profile h3.title { 2107color: rgba(97, 97, 97, 0.52); 2108margin: 16px 32px; 2109} 2110.widget.Profile .individual { 2111text-align: center; 2112} 2113.widget.Profile .individual .profile-link { 2114padding: 1em; 2115} 2116.widget.Profile .individual .default-avatar-wrapper .avatar-icon { 2117margin: auto; 2118} 2119.widget.Profile .team { 2120margin-bottom: 32px; 2121margin-left: 32px; 2122margin-right: 32px; 2123} 2124.widget.Profile ul { 2125list-style: none; 2126padding: 0; 2127} 2128.widget.Profile li { 2129margin: 10px 0; 2130} 2131.widget.Profile .profile-img { 2132border-radius: 50%; 2133float: none; 2134} 2135.widget.Profile .profile-link { 2136background: transparent; 2137border: none; 2138box-shadow: none; 2139color: #108ee3; 2140cursor: pointer; 2141font-size: 14px; 2142font-weight: bold; 2143outline: none; 2144text-decoration: none; 2145text-transform: uppercase; 2146width: auto; 2147color: #212121; 2148font-size: .9em; 2149margin-bottom: 1em; 2150opacity: .87; 2151overflow: hidden; 2152} 2153.widget.Profile .profile-link.visit-profile { 2154background: transparent; 2155border: none; 2156box-shadow: none; 2157color: #108ee3; 2158cursor: pointer; 2159font-size: 14px; 2160font-weight: bold; 2161outline: none; 2162text-decoration: none; 2163text-transform: uppercase; 2164width: auto; 2165border-style: solid; 2166border-width: 1px; 2167border-radius: 12px; 2168cursor: pointer; 2169font-size: 12px; 2170font-weight: normal; 2171padding: 5px 20px; 2172display: inline-block; 2173line-height: normal; 2174} 2175.widget.Profile dd { 2176color: rgba(97, 97, 97, 0.54); 2177margin: 0 16px; 2178} 2179.widget.Profile .location { 2180margin-bottom: 1em; 2181} 2182.widget.Profile .profile-textblock { 2183font-size: 14px; 2184line-height: 24px; 2185position: relative; 2186} 2187body.sidebar-visible .page_body { 2188overflow-y: scroll; 2189} 2190body.sidebar-visible .bg-photo-container { 2191overflow-y: scroll; 2192} 2193@media screen and (min-width:1440px) { 2194.sidebar-container { 2195margin-top: 480px; 2196min-height: calc(100% - 480px); 2197overflow: visible; 2198z-index: 32; 2199} 2200.sidebar-container .sidebar_top_wrapper { 2201background-color: #ffffff; 2202height: 480px; 2203margin-top: -480px; 2204} 2205.sidebar-container .sidebar_top { 2206display: -webkit-box; 2207display: -webkit-flex; 2208display: -ms-flexbox; 2209display: flex; 2210height: 480px; 2211-webkit-box-orient: horizontal; 2212-webkit-box-direction: normal; 2213-webkit-flex-direction: row; 2214-ms-flex-direction: row; 2215flex-direction: row; 2216max-height: 480px; 2217} 2218.sidebar-container .sidebar_bottom { 2219max-width: 284px; 2220width: 284px; 2221} 2222body.collapsed-header .sidebar-container { 2223z-index: 15; 2224} 2225.sidebar-container .sidebar_top:empty { 2226display: none; 2227} 2228.sidebar-container .sidebar_top>*:only-child { 2229-webkit-box-flex: 0; 2230-webkit-flex: 0 0 auto;
2231-ms-flex: 0 0 auto; 2232flex: 0 0 auto; 2233-webkit-align-self: center; 2234-ms-flex-item-align: center; 2235-ms-grid-row-align: center; 2236align-self: center; 2237width: 100%; 2238} 2239.sidebar_top_wrapper.no-items { 2240display: none; 2241} 2242} 2243.post-snippet.snippet-container { 2244max-height: 120px; 2245} 2246.post-snippet .snippet-item { 2247line-height: 24px; 2248} 2249.post-snippet .snippet-fade { 2250background: -webkit-linear-gradient(left,#ffffff 0%,#ffffff 20%,rgba(255, 255, 255, 0) 100%); 2251background: linear-gradient(to left,#ffffff 0%,#ffffff 20%,rgba(255, 255, 255, 0) 100%); 2252color: #888888; 2253height: 24px; 2254} 2255.popular-posts-snippet.snippet-container { 2256max-height: 72px; 2257} 2258.popular-posts-snippet .snippet-item { 2259line-height: 24px; 2260} 2261.PopularPosts .popular-posts-snippet .snippet-fade { 2262color: #888888; 2263height: 24px; 2264} 2265.main .popular-posts-snippet .snippet-fade { 2266background: -webkit-linear-gradient(left,#fff8f6 0%,#fff8f6 20%,rgba(255, 248, 246, 0) 100%); 2267background: linear-gradient(to left,#fff8f6 0%,#fff8f6 20%,rgba(255, 248, 246, 0) 100%); 2268} 2269.sidebar_bottom .popular-posts-snippet .snippet-fade { 2270background: -webkit-linear-gradient(left,#ffffff 0%,#ffffff 20%,rgba(255, 255, 255, 0) 100%); 2271background: linear-gradient(to left,#ffffff 0%,#ffffff 20%,rgba(255, 255, 255, 0) 100%); 2272} 2273.profile-snippet.snippet-container { 2274max-height: 192px; 2275} 2276.has-location .profile-snippet.snippet-container { 2277max-height: 144px; 2278} 2279.profile-snippet .snippet-item { 2280line-height: 24px; 2281} 2282.profile-snippet .snippet-fade { 2283background: -webkit-linear-gradient(left,#ffffff 0%,#ffffff 20%,rgba(255, 255, 255, 0) 100%); 2284background: linear-gradient(to left,#ffffff 0%,#ffffff 20%,rgba(255, 255, 255, 0) 100%); 2285color: rgba(97, 97, 97, 0.54); 2286height: 24px; 2287} 2288@media screen and (min-width:1440px) { 2289.profile-snippet .snippet-fade { 2290background: -webkit-linear-gradient(left,#ffffff 0%,#ffffff 20%,rgba(255, 255, 255, 0) 100%); 2291background: linear-gradient(to left,#ffffff 0%,#ffffff 20%,rgba(255, 255, 255, 0) 100%); 2292} 2293} 2294@media screen and (max-width: 800px) { 2295.blog-name { 2296margin-top: 0; 2297} 2298body.item-view .blog-name { 2299margin: 0 48px; 2300} 2301body .centered-bottom { 2302padding: 8px; 2303} 2304body.item-view .centered-bottom { 2305padding: 0; 2306} 2307.page_body .centered { 2308padding: 10px 0; 2309} 2310body.item-view .widget.Header, body.item-view #header { 2311margin-right: 0; 2312} 2313body.collapsed-header .centered-top-container .blog-name { 2314display: block; 2315} 2316.widget.Header header { 2317padding: 0; 2318} 2319.widget.Header h1 { 2320font-size: 23.467px; 2321margin-bottom: 13px; 2322} 2323body.item-view .widget.Header h1, body.collapsed-header .centered-top-container .widget.Header h1 { 2324text-align: center; 2325} 2326body.item-view .widget.Header p { 2327text-align: center; 2328} 2329.blog-name .widget.PageList { 2330padding: 0; 2331} 2332body.item-view .centered-top { 2333margin-bottom: 5px; 2334} 2335.search-input, .search-action { 2336margin-bottom: -8px; 2337} 2338.search form { 2339margin-bottom: 8px; 2340} 2341body.item-view .subscribe-section-container { 2342margin: 5px 0 0; 2343width: 100%; 2344} 2345div.widget.Blog .blog-posts .post-outer-container, #page_body.section div.widget.FeaturedPost, div.widget.PopularPosts { 2346padding: 16px; 2347} 2348div.widget.Blog .blog-posts .post-outer-container .post-outer { 2349padding: 0; 2350} 2351.post:first-child { 2352margin: 0; 2353} 2354.post-body .snippet-thumbnail, div.widget.PopularPosts div.item-thumbnail { 2355margin: 0 3vw 3vw 0; 2356} 2357.post-body .snippet-thumbnail img { 2358height: 20vw; 2359width: 20vw; 2360max-height: 128px; 2361max-width: 128px; 2362} 2363div.widget.PopularPosts div.item-thumbnail img { 2364height: 20vw; 2365width: 20vw; 2366max-height: 88px; 2367max-width: 88px; 2368} 2369.post-title { 2370line-height: 1; 2371} 2372.post-title a { 2373font-size: 18px; 2374} 2375#page_body.section div.widget.FeaturedPost h3 a { 2376font-size: 22px; 2377} 2378.mobile-ad .inline-ad { 2379display: block; 2380} 2381.page_body.vertical-ads .vertical-ad-container, .page_body.vertical-ads .vertical-ad-container ins { 2382display: none; 2383} 2384.page_body.vertical-ads .centered .centered-top, .page_body.vertical-ads .centered .centered-bottom { 2385display: block; 2386width: auto; 2387} 2388div.post-filter-message div { 2389padding: 8px 16px; 2390} 2391} 2392@media screen and (min-width:1440px) { 2393body { 2394position: relative; 2395} 2396body.item-view .blog-name { 2397margin-left: 48px; 2398} 2399.page_body { 2400margin-left: 284px; 2401} 2402.search { 2403margin-left: 0; 2404} 2405.search.focused { 2406width: 100%; 2407} 2408.sticky { 2409padding-left: 284px; 2410} 2411.hamburger-menu { 2412display: none; 2413} 2414body.collapsed-header .page_body .centered-top-container { 2415padding-left: 284px; 2416padding-right: 0; 2417width: 100%; 2418} 2419body.collapsed-header .centered-top-container .search.focused { 2420width: 100%; 2421} 2422body.collapsed-header.item-page .centered-top-container .search.focused { 2423width: calc(100% - 50px); 2424} 2425body.collapsed-header .centered-top-container .blog-name { 2426margin-left: 0; 2427} 2428body.item-view.collapsed-header .centered-top-container .blog-name { 2429margin-left: 40px; 2430} 2431} 2432 2433--></style> 2434<style id='template-skin-1' type='text/css'><!-- 2435body#layout .hidden, 2436body#layout .invisible { 2437display: inherit; 2438} 2439body#layout .navigation { 2440display: none; 2441} 2442body#layout .page, 2443body#layout .sidebar_top, 2444body#layout .sidebar_bottom { 2445display: inline-block; 2446left: inherit; 2447position: relative; 2448vertical-align: top; 2449} 2450body#layout .page { 2451float: right; 2452margin-left: 20px; 2453width: 55%; 2454} 2455body#layout .sidebar-container { 2456float: right; 2457width: 40%; 2458} 2459body#layout .hamburger-menu { 2460display: none; 2461} 2462--></style> 2463<style> 2464 .bg-photo {background-image:url(\/\/themes.googleusercontent.com\/image?id=1PViTUnIUSKDy0JJydtqwXOzvZKG0IIJYN8IFx4v__-n881NSni7O3gGUXyMmHxVs8wah);} 2465 2466@media (max-width: 480px) { .bg-photo {background-image:url(\/\/themes.googleusercontent.com\/image?id=1PViTUnIUSKDy0JJydtqwXOzvZKG0IIJYN8IFx4v__-n881NSni7O3gGUXyMmHxVs8wah&options=w480);}} 2467@media (max-width: 640px) and (min-width: 481px) { .bg-photo {background-image:url(\/\/themes.googleusercontent.com\/image?id=1PViTUnIUSKDy0JJydtqwXOzvZKG0IIJYN8IFx4v__-n881NSni7O3gGUXyMmHxVs8wah&options=w640);}} 2468@media (max-width: 800px) and (min-width: 641px) { .bg-photo {background-image:url(\/\/themes.googleusercontent.com\/image?id=1PViTUnIUSKDy0JJydtqwXOzvZKG0IIJYN8IFx4v__-n881NSni7O3gGUXyMmHxVs8wah&options=w800);}} 2469@media (max-width: 1200px) and (min-width: 801px) { .bg-photo {background-image:url(\/\/themes.googleusercontent.com\/image?id=1PViTUnIUSKDy0JJydtqwXOzvZKG0IIJYN8IFx4v__-n881NSni7O3gGUXyMmHxVs8wah&options=w1200);}} 2470/* Last tag covers anything over one higher than the previous max-size cap. */ 2471@media (min-width: 1201px) { .bg-photo {background-image:url(\/\/themes.googleusercontent.com\/image?id=1PViTUnIUSKDy0JJydtqwXOzvZKG0IIJYN8IFx4v__-n881NSni7O3gGUXyMmHxVs8wah&options=w1600);}} 2472 </style>
2473<script async='async' src='//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js'></script>
vendor: 1 bytes, line 2473
2473
2474<script type='text/javascript'>
vendor: 374 bytes, lines 2474-2479
2474 2475 (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 2476 (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 2477 m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 2478 })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); 2479 ga('create', '
2479UA-28559733-2
vendor: 31 bytes, lines 2479-2480
2479', 'auto', 'blogger'); 2480
2480ga('blogger.send', 'pageview'); 2481 </script>
vendor: 1 bytes, line 2481
2481
2482<script async='async' src='//www.gstatic.com/external_hosted/clipboardjs/clipboard.min.js'></script>
2482 2483<link href="//alexgorbatchev.com/pub/sh/current/styles/shCore.css" rel="stylesheet" type="text/css"> 2484<link href="//alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css" rel="stylesheet" type="text/css">
2485<script src="//alexgorbatchev.com/pub/sh/current/scripts/shCore.js" type="text/javascript"></script>
vendor: 1 bytes, line 2485
2485
2486<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushCpp.js" type="text/javascript"></script>
vendor: 1 bytes, line 2486
2486
2487<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js" type="text/javascript"></script>
vendor: 1 bytes, line 2487
2487
2488<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js" type="text/javascript"></script>
vendor: 1 bytes, line 2488
2488
2489<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js" type="text/javascript"></script>
vendor: 1 bytes, line 2489
2489
2490<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js" type="text/javascript"></script>
vendor: 1 bytes, line 2490
2490
2491<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js" type="text/javascript"></script>
vendor: 1 bytes, line 2491
2491
2492<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js" type="text/javascript"></script>
vendor: 1 bytes, line 2492
2492
2493<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js" type="text/javascript"></script>
vendor: 1 bytes, line 2493
2493
2494<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js" type="text/javascript"></script>
vendor: 1 bytes, line 2494
2494
2495<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js" type="text/javascript"></script>
vendor: 1 bytes, line 2495
2495
2496<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js" type="text/javascript"></script>
vendor: 1 bytes, line 2496
2496
2497<script src="//alexgorbatchev.com/pub/sh/current/scripts/shBrushPerl.js" type="text/javascript"></script>
vendor: 1 bytes, line 2497
2497
2498<script language='javascript'> 2499SyntaxHighlighter.config.bloggerMode = true; 2500SyntaxHighlighter.config.clipboardSwf = 'http://alexgorbatchev.com/pub/sh/current/scripts/clipboard.swf'; 2501SyntaxHighlighter.all(); 2502</script>
2502 2503<meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/> 2504<meta name='google-adsense-platform-domain' content='blogspot.com'/> 2505 2506<!-- data-ad-client=ca-pub-5423369479100645 --> 2507 2508</head> 2509<body class='version-1-0-1 variant-indie_orange'> 2510<a class='skip-navigation' href='#main' tabindex='0'> 2511Skip to main content 2512</a> 2513<div class='page'> 2514<div class='bg-photo-overlay'></div> 2515<div class='bg-photo-container'> 2516<div class='bg-photo'></div> 2517</div> 2518<div class='page_body'> 2519<div class='centered'> 2520<div class='centered-top-placeholder'></div> 2521<header class='centered-top-container' role='banner'> 2522<div class='centered-top'> 2523<button class='svg-icon-24-button hamburger-menu flat-icon-button ripple'> 2524<svg class='svg-icon-24'> 2525<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_menu_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2526</svg> 2527</button> 2528<div class='search'> 2529<button aria-label='Search' class='search-expand touch-icon-button'> 2530<div class='flat-icon-button ripple'> 2531<svg class='svg-icon-24 search-expand-icon'> 2532<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_search_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2533</svg> 2534</div> 2535</button> 2536<div class='section' id='search_top' name='Search (Top)'><div class='widget BlogSearch' data-version='2' id='BlogSearch1'> 2537<h3 class='title'> 2538Search This Blog 2539</h3> 2540<div class='widget-content' role='search'> 2541<form action='https://blog.lakmali.com/search' target='_top'> 2542<div class='search-input'> 2543<input aria-label='Search this blog' autocomplete='off' name='q' placeholder='Search this blog' value=''/> 2544</div> 2545<input class='search-action flat-button' type='submit' value='Search'/> 2546</form> 2547</div> 2548</div></div> 2549</div> 2550<div class='clearboth'></div> 2551<div class='blog-name container'> 2552<div class='container section' id='header' name='Header'><div class='widget Header' data-version='2' id='Header1'> 2553<div class='header-widget'> 2554<div> 2555<h1> 2556Lakmali Erandi Baminiwatta’s blog 2557</h1> 2558</div> 2559<p> 2560</p> 2561</div> 2562</div></div> 2563<nav role='navigation'> 2564<div class='clearboth no-items section' id='page_list_top' name='Page List (Top)'> 2565</div> 2566</nav> 2567</div> 2568</div> 2569</header> 2570<div> 2571<main class='centered-bottom' id='main' role='main' tabindex='-1'> 2572<h2 class='main-heading'>Posts</h2> 2573<div class='main section' id='page_body' name='Page Body'><div class='widget FeaturedPost' data-version='2' id='FeaturedPost1'> 2574<div class='widget-content'> 2575<div role='feed'> 2576<article class='post' role='article'> 2577<h3 class='post-title'><a href='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html'>Boomi Mapping - Removing special chars from an input</a></h3> 2578<div class='post-share-buttons post-share-buttons-top'> 2579<div class='byline post-share-buttons goog-inline-block'> 2580<div aria-owns='sharing-popup-FeaturedPost1-byline-6436251793846287620' class='sharing' data-title='Boomi Mapping - Removing special chars from an input'> 2581<button aria-controls='sharing-popup-FeaturedPost1-byline-6436251793846287620' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-FeaturedPost1-byline-6436251793846287620' role='button'> 2582<div class='flat-icon-button ripple'> 2583<svg class='svg-icon-24'> 2584<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_share_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2585</svg> 2586</div> 2587</button> 2588<div class='share-buttons-container'> 2589<ul aria-hidden='true' aria-label='Share' class='share-buttons hidden' id='sharing-popup-FeaturedPost1-byline-6436251793846287620' role='menu'> 2590<li> 2591<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=6436251793846287620&target=' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html' role='menuitem' tabindex='-1' title='Get link'> 2592<svg class='svg-icon-24 touch-icon sharing-link'> 2593<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_link_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2594</svg> 2595<span class='platform-sharing-text'>Get link</span> 2596</span> 2597</li> 2598<li> 2599<span aria-label='Share to Facebook' class='sharing-platform-button sharing-element-facebook' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=6436251793846287620&target=facebook' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html' role='menuitem' tabindex='-1' title='Share to Facebook'> 2600<svg class='svg-icon-24 touch-icon sharing-facebook'> 2601<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_facebook_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2602</svg> 2603<span class='platform-sharing-text'>Facebook</span> 2604</span> 2605</li> 2606<li> 2607<span aria-label='Share to X' class='sharing-platform-button sharing-element-twitter' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=6436251793846287620&target=twitter' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html' role='menuitem' tabindex='-1' title='Share to X'> 2608<svg class='svg-icon-24 touch-icon sharing-twitter'> 2609<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_twitter_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2610</svg> 2611<span class='platform-sharing-text'>X</span> 2612</span> 2613</li> 2614<li>
2615<span aria-label='Share to Pinterest' class='sharing-platform-button sharing-element-pinterest' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=6436251793846287620&target=pinterest' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html' role='menuitem' tabindex='-1' title='Share to Pinterest'> 2616<svg class='svg-icon-24 touch-icon sharing-pinterest'> 2617<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_pinterest_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2618</svg> 2619<span class='platform-sharing-text'>Pinterest</span> 2620</span> 2621</li> 2622<li> 2623<span aria-label='Email' class='sharing-platform-button sharing-element-email' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=6436251793846287620&target=email' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html' role='menuitem' tabindex='-1' title='Email'> 2624<svg class='svg-icon-24 touch-icon sharing-email'> 2625<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_email_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2626</svg> 2627<span class='platform-sharing-text'>Email</span> 2628</span> 2629</li> 2630<li aria-hidden='true' class='hidden'> 2631<span aria-label='Share to other apps' class='sharing-platform-button sharing-element-other' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html' role='menuitem' tabindex='-1' title='Share to other apps'> 2632<svg class='svg-icon-24 touch-icon sharing-sharingOther'> 2633<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_more_horiz_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2634</svg> 2635<span class='platform-sharing-text'>Other Apps</span> 2636</span> 2637</li> 2638</ul> 2639</div> 2640</div> 2641</div> 2642</div> 2643<div class='post-header'> 2644<div class='post-header-line-1'> 2645<span class='byline post-timestamp'> 2646<meta content='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html'/> 2647<a class='timestamp-link' href='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html' rel='bookmark' title='permanent link'> 2648<time class='published' datetime='2019-07-17T14:54:00+09:30' title='2019-07-17T14:54:00+09:30'> 2649July 17, 2019 2650</time> 2651</a> 2652</span> 2653</div> 2654</div> 2655<div class='snippet-thumbnail'> 2656<img alt='Image' sizes='(min-width: 954px) 842px, (min-width: 801px) calc(100vw - 112px), calc(100vw - 64px)' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FBW68Ho8lyj5pWTKcTrqlMi8BEUytVPZdEx2cBDtLY9zrVOYOMM23h0ZhdaUd_BRPbfsONsQ8ddxtGxAxCHYy6M4txCzrdVF4EH2QSmPUJevCt6lX2zbYZPvwDqi1L-v1MA8mVcIOMzc/s320/add-function.png' srcset='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FBW68Ho8lyj5pWTKcTrqlMi8BEUytVPZdEx2cBDtLY9zrVOYOMM23h0ZhdaUd_BRPbfsONsQ8ddxtGxAxCHYy6M4txCzrdVF4EH2QSmPUJevCt6lX2zbYZPvwDqi1L-v1MA8mVcIOMzc/w256-h162-p-k-no-nu/add-function.png 256w, https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FBW68Ho8lyj5pWTKcTrqlMi8BEUytVPZdEx2cBDtLY9zrVOYOMM23h0ZhdaUd_BRPbfsONsQ8ddxtGxAxCHYy6M4txCzrdVF4EH2QSmPUJevCt6lX2zbYZPvwDqi1L-v1MA8mVcIOMzc/w512-h325-p-k-no-nu/add-function.png 512w, https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FBW68Ho8lyj5pWTKcTrqlMi8BEUytVPZdEx2cBDtLY9zrVOYOMM23h0ZhdaUd_BRPbfsONsQ8ddxtGxAxCHYy6M4txCzrdVF4EH2QSmPUJevCt6lX2zbYZPvwDqi1L-v1MA8mVcIOMzc/w945-h600-p-k-no-nu/add-function.png 945w, https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FBW68Ho8lyj5pWTKcTrqlMi8BEUytVPZdEx2cBDtLY9zrVOYOMM23h0ZhdaUd_BRPbfsONsQ8ddxtGxAxCHYy6M4txCzrdVF4EH2QSmPUJevCt6lX2zbYZPvwDqi1L-v1MA8mVcIOMzc/w1684-h1069-p-k-no-nu/add-function.png 1684w'/> 2657</div> 2658<div class='post-snippet snippet-container r-snippet-container'> 2659<div class='snippet-item r-snippetized'> 2660 Dell Boomi mapping shape provides numerous ways to modify/enrich an input via functions. In this post I am going to show how I validated and removed special chars from an input using Scripting and do it along with another string function. The user defined functions available with mapping, allows us to apply sequence of functions to the input. In this example, I am going to use it. Use Case: I have tw
2660o input strings coming from the source profile (first_name and last_name), which I want to first concatanate together and then remove non-alphanumeric characters if present. Solution In your map, add an User Defined function and add two inputs; first_name, last_name.  Add User Defined function into the map Added inputs to the user defined function As the first step, add a function "String Concat" under the  "String" category.  Specify first_name and last_name as the inputs. Also set a delimiter, if you need a one. In my case, I want to concatena... 2661</div> 2662<a class='snippet-fade r-snippet-fade hidden' href='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html'></a> 2663</div> 2664<div class='post-bottom'> 2665<div class='post-footer float-container'> 2666<div class='post-footer-line post-footer-line-1'> 2667<span class='byline post-comment-link container'> 2668<a class='comment-link' href='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html#comments' onclick=''> 2669<svg class='svg-icon-24 touch-icon'> 2670<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_mode_comment_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2671</svg> 2672<span class='num_comments'> 26732 comments 2674</span> 2675</a> 2676</span> 2677</div> 2678<div class='post-footer-line post-footer-line-2'> 2679</div> 2680<div class='post-footer-line post-footer-line-3'> 2681</div> 2682</div> 2683<div class='jump-link flat-button ripple'> 2684<a href='https://blog.lakmali.com/2019/07/boomi-mapping-removing-special-chars.html' title='Boomi Mapping - Removing special chars from an input'> 2685Keep reading 2686</a> 2687</div> 2688</div> 2689</article> 2690</div> 2691</div> 2692</div><div class='widget Blog' data-version='2' id='Blog1'> 2693<div class='blog-posts hfeed container'> 2694<article class='post-outer-container'> 2695<div class='post-outer'> 2696<div class='post'>
2697<script type='application/ld+json'>{ 2698 "@context": "http://schema.org", 2699 "@type": "BlogPosting", 2700 "mainEntityOfPage": { 2701 "@type": "WebPage", 2702 "@id": "https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html" 2703 }, 2704 "headline": "Boomi Mapping - User Defined function based on list of elements in a collection","description": "Recently I came across a requirement to validate all the elements in a collection and return an output based on that. Let me explain it wit...","datePublished": "2019-07-17T14:54:00+09:30", 2705 "dateModified": "2019-07-17T14:54:26+09:30","image": { 2706 "@type": "ImageObject","url": "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7KknO87F4QoYFfOhjGnndOZChe2ZS1JoSo1kfv03ktrvnE22a7ePhgfWe_cnbx8X1Fr-crlr8AwZY77cZTVZFAKVuPVwS7p4od5LeqmCSVF_-DwuHXukN-M07JFCJnblof7NdEgYIMBpR/w1200-h630-p-k-no-nu/script1.png", 2707 "height": 630, 2708 "width": 1200},"publisher": { 2709 "@type": "Organization", 2710 "name": "Blogger", 2711 "logo": { 2712 "@type": "ImageObject", 2713 "url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/h60/", 2714 "width": 206, 2715 "height": 60 2716 } 2717 },"author": { 2718 "@type": "Person", 2719 "name": "Lakmali" 2720 } 2721}</script>
2721 2722<a name='5590038839026175758'></a> 2723<h3 class='post-title entry-title'> 2724<a href='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html'>Boomi Mapping - User Defined function based on list of elements in a collection</a> 2725</h3> 2726<div class='post-share-buttons post-share-buttons-top'> 2727<div class='byline post-share-buttons goog-inline-block'> 2728<div aria-owns='sharing-popup-Blog1-byline-5590038839026175758' class='sharing' data-title='Boomi Mapping - User Defined function based on list of elements in a collection'> 2729<button aria-controls='sharing-popup-Blog1-byline-5590038839026175758' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-Blog1-byline-5590038839026175758' role='button'> 2730<div class='flat-icon-button ripple'> 2731<svg class='svg-icon-24'> 2732<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_share_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2733</svg> 2734</div> 2735</button> 2736<div class='share-buttons-container'> 2737<ul aria-hidden='true' aria-label='Share' class='share-buttons hidden' id='sharing-popup-Blog1-byline-5590038839026175758' role='menu'> 2738<li> 2739<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=5590038839026175758&target=' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html' role='menuitem' tabindex='-1' title='Get link'> 2740<svg class='svg-icon-24 touch-icon sharing-link'> 2741<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_link_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2742</svg> 2743<span class='platform-sharing-text'>Get link</span> 2744</span> 2745</li> 2746<li> 2747<span aria-label='Share to Facebook' class='sharing-platform-button sharing-element-facebook' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=5590038839026175758&target=facebook' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html' role='menuitem' tabindex='-1' title='Share to Facebook'> 2748<svg class='svg-icon-24 touch-icon sharing-facebook'> 2749<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_facebook_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2750</svg> 2751<span class='platform-sharing-text'>Facebook</span> 2752</span> 2753</li> 2754<li> 2755<span aria-label='Share to X' class='sharing-platform-button sharing-element-twitter' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=5590038839026175758&target=twitter' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html' role='menuitem' tabindex='-1' title='Share to X'> 2756<svg class='svg-icon-24 touch-icon sharing-twitter'> 2757<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_twitter_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2758</svg> 2759<span class='platform-sharing-text'>X</span> 2760</span> 2761</li> 2762<li> 2763<span aria-label='Share to Pinterest' class='sharing-platform-button sharing-element-pinterest' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=5590038839026175758&target=pinterest' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html' role='menuitem' tabindex='-1' title='Share to Pinterest'> 2764<svg class='svg-icon-24 touch-icon sharing-pinterest'> 2765<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_pinterest_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2766</svg> 2767<span class='platform-sharing-text'>Pinterest</span> 2768</span> 2769</li> 2770<li> 2771<span aria-label='Email' class='sharing-platform-button sharing-element-email' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=5590038839026175758&target=email' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html' role='menuitem' tabindex='-1' title='Email'> 2772<svg class='svg-icon-24 touch-icon sharing-email'> 2773<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_email_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2774</svg> 2775<span class='platform-sharing-text'>Email</span> 2776</span> 2777</li> 2778<li aria-hidden='true' class='hidden'> 2779<span aria-label='Share to other apps' class='sharing-platform-button sharing-element-other' data-url='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html' role='menuitem' tabindex='-1' title='Share to other apps'> 2780<svg class='svg-icon-24 touch-icon sharing-sharingOther'> 2781<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_more_horiz_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2782</svg> 2783<span class='platform-sharing-text'>Other Apps</span> 2784</span> 2785</li> 2786</ul> 2787</div> 2788</div> 2789</div> 2790</div> 2791<div class='post-header'> 2792<div class='post-header-line-1'> 2793<span class='byline post-timestamp'> 2794<meta content='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html'/> 2795<a class='timestamp-link' href='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html' rel='bookmark' title='permanent link'> 2796<time class='published' datetime='2019-07-17T14:54:00+09:30' title='2019-07-17T14:54:00+09:30'> 2797July 17, 2019 2798</time> 2799</a> 2800</span> 2801</div> 2802</div> 2803<div class='container post-body entry-content' id='post-snippet-5590038839026175758'> 2804<div class='snippet-thumbnail'> 2805<img alt='Image' sizes='(max-width: 800px) 12vw, 128px' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7KknO87F4QoYFfOhjGnndOZChe2ZS1JoSo1kfv03ktrvnE22a7ePhgfWe_cnbx8X1Fr-crlr8AwZY77cZTVZFAKVuPVwS7p4od5LeqmCSVF_-DwuHXukN-M07JFCJnblof7NdEgYIMBpR/s320/script1.png' srcset='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7KknO87F4QoYFfOhjGnndOZChe2ZS1JoSo1kfv03ktrvnE22a7ePhgfWe_cnbx8X1Fr-crlr8AwZY77cZTVZFAKVuPVwS7p4od5LeqmCSVF_-DwuHXukN-M07JFCJnblof7NdEgYIMBpR/w32-h32-p-k-no-nu/script1.png 32w, https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7KknO87F4QoYFfOhjGnndOZChe2ZS1JoSo1kfv03ktrvnE22a7ePhgfWe_cnbx8X1Fr-crlr8AwZY77cZTVZFAKVuPVwS7p4od5LeqmCSVF_-DwuHXukN-M07JFCJnblof7NdEgYIMBpR/w64-h64-p-k-no-nu/script1.png 64w, https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7KknO87F4QoYFfOhjGnndOZChe2ZS1JoSo1kfv03ktrvnE22a7ePhgfWe_cnbx8X1Fr-crlr8AwZY77cZTVZFAKVuPVwS7p4od5LeqmCSVF_-DwuHXukN-M07JFCJnblof7NdEgYIMBpR/w128-h128-p-k-no-nu/script1.png 128w, https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7KknO87F4QoYFfOhjGnndOZChe2ZS1JoSo1kfv03ktrvnE22a7ePhgfWe_cnbx8X1Fr-crlr8AwZY77cZTVZFAKVuPVwS7p4od5LeqmCSVF_-DwuHXukN-M07JFCJnblof7NdEgYIMBpR/w256-h256-p-k-no-nu/script1.png 256w'/> 2806</div> 2807<div class='post-snippet snippet-container r-snippet-container'> 2808<div class='snippet-item r-snippetized'> 2809 Recently I came across a requirement to validate all the elements in a collection and return an output based on that. Let me explain it with an example. I have a XML document containing information about users including a collection to indicate the roles of the person. Source Document <users> <user> <first_name></first_name> <roles> <role> admin </role> <role> subscriber </role> <role> creator </role> </roles> </user> </users> Destination Document I want to map this into a destination profile which has elements to indicate whther the user is an admin or a subsriber. <users> <user> <isAdmin> true </isAdmin> <isSubscriber> true </isSubscriber> <user> <users> </users> In order to achieve this I have to write a map funtion. But for a map funtion, we can't input a collection. If we map the "roles" collect... 2810</div> 2811<a class='snippet-fade r-snippet-fade hidden' href='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html'></a> 2812</div> 2813</div> 2814<div class='post-bottom'> 2815<div class='post-footer float-container'> 2816<div class='post-footer-line post-footer-line-1'> 2817<span class='byline post-comment-link container'> 2818<a class='comment-link' href='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html#comments' onclick=''> 2819<svg class='svg-icon-24 touch-icon'> 2820<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_mode_comment_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2821</svg> 2822<span class='num_comments'> 2823Post a Comment 2824</span> 2825</a> 2826</span> 2827</div> 2828<div class='post-footer-line post-footer-line-2'> 2829</div> 2830<div class='post-footer-line post-footer-line-3'> 2831</div> 2832</div> 2833<div class='jump-link flat-button ripple'> 2834<a href='https://blog.lakmali.com/2019/07/boomi-mapping-user-defined-function.html' title='Boomi Mapping - User Defined function based on list of elements in a collection'> 2835Keep reading 2836</a> 2837</div> 2838</div> 2839</div> 2840</div> 2841</article> 2842<div class='desktop-ad mobile-ad'> 2843<div class='inline-ad'>
2844<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
2844 2845<!-- java-wisdom_page_body_Blog1_1x1_as --> 2846<ins class="adsbygoogle" 2847 style="display:block" 2848 data-ad-client="ca-pub-5423369479100645" 2849 data-ad-host="ca-host-pub-1556223355139109" 2850 data-ad-host-channel="L0007" 2851 data-ad-slot="5370813279" 2852 data-ad-format="auto"></ins>
2853<script> 2854(adsbygoogle = window.adsbygoogle || []).push({}); 2855</script>
2855 2856</div> 2857</div> 2858<article class='post-outer-container'> 2859<div class='post-outer'> 2860<div class='post'>
2861<script type='application/ld+json'>{ 2862 "@context": "http://schema.org", 2863 "@type": "BlogPosting", 2864 "mainEntityOfPage": { 2865 "@type": "WebPage", 2866 "@id": "https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html" 2867 }, 2868 "headline": "Java Switch statements : Executing same code for two values without redundant code","description": "This is something I learnt recently. Assume that you want to execute the same code when the switch variable value is one of multiple values...","datePublished": "2019-02-13T10:41:00+10:30", 2869 "dateModified": "2019-02-13T10:41:52+10:30","image": { 2870 "@type": "ImageObject","url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/w1200/", 2871 "height": 348, 2872 "width": 1200},"publisher": { 2873 "@type": "Organization", 2874 "name": "Blogger", 2875 "logo": { 2876 "@type": "ImageObject", 2877 "url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/h60/", 2878 "width": 206, 2879 "height": 60 2880 } 2881 },"author": { 2882 "@type": "Person", 2883 "name": "Lakmali" 2884 } 2885}</script>
2885 2886<a name='3747434347649601506'></a> 2887<h3 class='post-title entry-title'> 2888<a href='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html'>Java Switch statements : Executing same code for two values without redundant code</a> 2889</h3> 2890<div class='post-share-buttons post-share-buttons-top'> 2891<div class='byline post-share-buttons goog-inline-block'> 2892<div aria-owns='sharing-popup-Blog1-byline-3747434347649601506' class='sharing' data-title='Java Switch statements : Executing same code for two values without redundant code'> 2893<button aria-controls='sharing-popup-Blog1-byline-3747434347649601506' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-Blog1-byline-3747434347649601506' role='button'> 2894<div class='flat-icon-button ripple'> 2895<svg class='svg-icon-24'> 2896<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_share_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2897</svg> 2898</div> 2899</button> 2900<div class='share-buttons-container'> 2901<ul aria-hidden='true' aria-label='Share' class='share-buttons hidden' id='sharing-popup-Blog1-byline-3747434347649601506' role='menu'> 2902<li> 2903<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=3747434347649601506&target=' data-url='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html' role='menuitem' tabindex='-1' title='Get link'> 2904<svg class='svg-icon-24 touch-icon sharing-link'> 2905<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_link_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2906</svg> 2907<span class='platform-sharing-text'>Get link</span> 2908</span> 2909</li> 2910<li> 2911<span aria-label='Share to Facebook' class='sharing-platform-button sharing-element-facebook' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=3747434347649601506&target=facebook' data-url='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html' role='menuitem' tabindex='-1' title='Share to Facebook'> 2912<svg class='svg-icon-24 touch-icon sharing-facebook'> 2913<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_facebook_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2914</svg> 2915<span class='platform-sharing-text'>Facebook</span> 2916</span> 2917</li> 2918<li> 2919<span aria-label='Share to X' class='sharing-platform-button sharing-element-twitter' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=3747434347649601506&target=twitter' data-url='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html' role='menuitem' tabindex='-1' title='Share to X'> 2920<svg class='svg-icon-24 touch-icon sharing-twitter'> 2921<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_twitter_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2922</svg> 2923<span class='platform-sharing-text'>X</span> 2924</span> 2925</li> 2926<li> 2927<span aria-label='Share to Pinterest' class='sharing-platform-button sharing-element-pinterest' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=3747434347649601506&target=pinterest' data-url='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html' role='menuitem' tabindex='-1' title='Share to Pinterest'> 2928<svg class='svg-icon-24 touch-icon sharing-pinterest'> 2929<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_pinterest_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2930</svg> 2931<span class='platform-sharing-text'>Pinterest</span> 2932</span> 2933</li> 2934<li> 2935<span aria-label='Email' class='sharing-platform-button sharing-element-email' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=3747434347649601506&target=email' data-url='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html' role='menuitem' tabindex='-1' title='Email'> 2936<svg class='svg-icon-24 touch-icon sharing-email'> 2937<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_email_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2938</svg> 2939<span class='platform-sharing-text'>Email</span> 2940</span> 2941</li> 2942<li aria-hidden='true' class='hidden'> 2943<span aria-label='Share to other apps' class='sharing-platform-button sharing-element-other' data-url='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html' role='menuitem' tabindex='-1' title='Share to other apps'> 2944<svg class='svg-icon-24 touch-icon sharing-sharingOther'> 2945<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_more_horiz_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2946</svg> 2947<span class='platform-sharing-text'>Other Apps</span> 2948</span> 2949</li> 2950</ul> 2951</div> 2952</div> 2953</div> 2954</div> 2955<div class='post-header'> 2956<div class='post-header-line-1'> 2957<span class='byline post-timestamp'> 2958<meta content='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html'/> 2959<a class='timestamp-link' href='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html' rel='bookmark' title='permanent link'> 2960<time class='published' datetime='2019-02-13T10:41:00+10:30' title='2019-02-13T10:41:00+10:30'> 2961February 13, 2019 2962</time> 2963</a> 2964</span> 2965</div> 2966</div> 2967<div class='container post-body entry-content' id='post-snippet-3747434347649601506'> 2968<div class='post-snippet snippet-container r-snippet-container'> 2969<div class='snippet-item r-snippetized'> 2970 This is something I learnt recently. Assume that you want to execute the same code when the switch variable value is one of multiple values. This can be dine without repeating the same code in multiple case statements. For example consider below code. There two case statements that check value for 3 or 4, executes same code block.  We can do this without duplicating the code. switch ( number ) { case ( 1 ): System . out . println ( "Number is 1" ); break ; case ( 2 ): System . out . println ( "Number is 2" ); break ; case ( 3 ): System . out . println ( "Number is 3 or 4" ); break ; case ( 4 ): System . out . println ( "Number is 3 or 4" ); break ; default : System . out . println ( "Number is not 1, 2, 3 or 4" ); break ; } See below. switch ( number ) { case ( 1 ): System . out . println ( "Number is 1" ); break ; case ( 2 ): System... 2971</div> 2972<a class='snippet-fade r-snippet-fade hidden' href='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html'></a> 2973</div> 2974</div> 2975<div class='post-bottom'> 2976<div class='post-footer float-container'> 2977<div class='post-footer-line post-footer-line-1'> 2978<span class='byline post-comment-link container'> 2979<a class='comment-link' href='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html#comments' onclick=''> 2980<svg class='svg-icon-24 touch-icon'> 2981<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_mode_comment_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 2982</svg> 2983<span class='num_comments'> 2984Post a Comment 2985</span> 2986</a> 2987</span> 2988</div> 2989<div class='post-footer-line post-footer-line-2'> 2990</div> 2991<div class='post-footer-line post-footer-line-3'> 2992</div> 2993</div> 2994<div class='jump-link flat-button ripple'> 2995<a href='https://blog.lakmali.com/2019/02/java-switch-statements-executing-same.html' title='Java Switch statements : Executing same code for two values without redundant code'> 2996Keep reading 2997</a> 2998</div> 2999</div> 3000</div> 3001</div> 3002</article> 3003<div> 3004<div class='inline-ad'>
3005<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
3005 3006<!-- java-wisdom_page_body_Blog1_1x1_as --> 3007<ins class="adsbygoogle" 3008 style="display:block" 3009 data-ad-client="ca-pub-5423369479100645" 3010 data-ad-host="ca-host-pub-1556223355139109" 3011 data-ad-host-channel="L0007" 3012 data-ad-slot="5370813279" 3013 data-ad-format="auto"></ins>
3014<script> 3015(adsbygoogle = window.adsbygoogle || []).push({}); 3016</script>
3016 3017</div> 3018</div> 3019<article class='post-outer-container'> 3020<div class='post-outer'> 3021<div class='post'>
3022<script type='application/ld+json'>{ 3023 "@context": "http://schema.org", 3024 "@type": "BlogPosting", 3025 "mainEntityOfPage": { 3026 "@type": "WebPage", 3027 "@id": "https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html" 3028 }, 3029 "headline": "Java: Difference between Conditional and Bitwise AND operator - \u0026 vs \u0026\u0026","description": "There two AND operators in Java that we can use. \u0026amp; - Bitwise AND operator \u0026amp;\u0026amp; - Conditional AND operator. In Java both abov...","datePublished": "2019-02-12T11:16:00+10:30", 3030 "dateModified": "2019-02-12T11:17:25+10:30","image": { 3031 "@type": "ImageObject","url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/w1200/", 3032 "height": 348, 3033 "width": 1200},"publisher": { 3034 "@type": "Organization", 3035 "name": "Blogger", 3036 "logo": { 3037 "@type": "ImageObject", 3038 "url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/h60/", 3039 "width": 206, 3040 "height": 60 3041 } 3042 },"author": { 3043 "@type": "Person", 3044 "name": "Lakmali" 3045 } 3046}</script>
3046 3047<a name='4533578666229421651'></a> 3048<h3 class='post-title entry-title'> 3049<a href='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html'>Java: Difference between Conditional and Bitwise AND operator - & vs &&</a> 3050</h3> 3051<div class='post-share-buttons post-share-buttons-top'> 3052<div class='byline post-share-buttons goog-inline-block'> 3053<div aria-owns='sharing-popup-Blog1-byline-4533578666229421651' class='sharing' data-title='Java: Difference between Conditional and Bitwise AND operator - & vs &&'> 3054<button aria-controls='sharing-popup-Blog1-byline-4533578666229421651' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-Blog1-byline-4533578666229421651' role='button'> 3055<div class='flat-icon-button ripple'> 3056<svg class='svg-icon-24'> 3057<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_share_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3058</svg> 3059</div> 3060</button> 3061<div class='share-buttons-container'> 3062<ul aria-hidden='true' aria-label='Share' class='share-buttons hidden' id='sharing-popup-Blog1-byline-4533578666229421651' role='menu'> 3063<li> 3064<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4533578666229421651&target=' data-url='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html' role='menuitem' tabindex='-1' title='Get link'> 3065<svg class='svg-icon-24 touch-icon sharing-link'> 3066<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_link_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3067</svg> 3068<span class='platform-sharing-text'>Get link</span> 3069</span> 3070</li> 3071<li> 3072<span aria-label='Share to Facebook' class='sharing-platform-button sharing-element-facebook' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4533578666229421651&target=facebook' data-url='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html' role='menuitem' tabindex='-1' title='Share to Facebook'> 3073<svg class='svg-icon-24 touch-icon sharing-facebook'> 3074<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_facebook_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3075</svg> 3076<span class='platform-sharing-text'>Facebook</span> 3077</span> 3078</li> 3079<li> 3080<span aria-label='Share to X' class='sharing-platform-button sharing-element-twitter' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4533578666229421651&target=twitter' data-url='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html' role='menuitem' tabindex='-1' title='Share to X'> 3081<svg class='svg-icon-24 touch-icon sharing-twitter'> 3082<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_twitter_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3083</svg> 3084<span class='platform-sharing-text'>X</span> 3085</span> 3086</li> 3087<li> 3088<span aria-label='Share to Pinterest' class='sharing-platform-button sharing-element-pinterest' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4533578666229421651&target=pinterest' data-url='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html' role='menuitem' tabindex='-1' title='Share to Pinterest'> 3089<svg class='svg-icon-24 touch-icon sharing-pinterest'> 3090<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_pinterest_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3091</svg> 3092<span class='platform-sharing-text'>Pinterest</span> 3093</span> 3094</li> 3095<li> 3096<span aria-label='Email' class='sharing-platform-button sharing-element-email' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4533578666229421651&target=email' data-url='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html' role='menuitem' tabindex='-1' title='Email'> 3097<svg class='svg-icon-24 touch-icon sharing-email'> 3098<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_email_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3099</svg> 3100<span class='platform-sharing-text'>Email</span> 3101</span> 3102</li> 3103<li aria-hidden='true' class='hidden'> 3104<span aria-label='Share to other apps' class='sharing-platform-button sharing-element-other' data-url='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html' role='menuitem' tabindex='-1' title='Share to other apps'> 3105<svg class='svg-icon-24 touch-icon sharing-sharingOther'> 3106<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_more_horiz_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3107</svg> 3108<span class='platform-sharing-text'>Other Apps</span> 3109</span> 3110</li> 3111</ul> 3112</div> 3113</div> 3114</div> 3115</div> 3116<div class='post-header'> 3117<div class='post-header-line-1'> 3118<span class='byline post-timestamp'> 3119<meta content='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html'/> 3120<a class='timestamp-link' href='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html' rel='bookmark' title='permanent link'> 3121<time class='published' datetime='2019-02-12T11:16:00+10:30' title='2019-02-12T11:16:00+10:30'> 3122February 12, 2019 3123</time> 3124</a> 3125</span> 3126</div> 3127</div> 3128<div class='container post-body entry-content' id='post-snippet-4533578666229421651'> 3129<div class='post-snippet snippet-container r-snippet-container'> 3130<div class='snippet-item r-snippetized'> 3131 There two AND operators in Java that we can use. & - Bitwise AND operator && - Conditional AND operator. In Java both above operators can be used in if conditions. However there is a difference how each works. Let's see with an example. (x != 0) & (x > 1)  - With bitwise AND, it evaluates both (x !=0) and (x >
3131 1) conditions. Then takes the AND of the two results. (x != 0) && (x > 1)   - With conditional AND, it first valuates (x !=0) and only if it is true, (x > 1) condition will be evaluated. Then takes the AND of the two results. If (x!= 0) was false, it simply returns false. What is the problem with using & in a condition? There are cases where we can only execute a condition only some other condition is true. See the example below. (x != 0) & (3/x  > 1) - This will throw an exception if the x=0. So for such cases we can only use &&. So in summary, it is always advisable to use conditional AND (... 3132</div> 3133<a class='snippet-fade r-snippet-fade hidden' href='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html'></a> 3134</div> 3135</div> 3136<div class='post-bottom'> 3137<div class='post-footer float-container'> 3138<div class='post-footer-line post-footer-line-1'> 3139<span class='byline post-comment-link container'> 3140<a class='comment-link' href='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html#comments' onclick=''> 3141<svg class='svg-icon-24 touch-icon'> 3142<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_mode_comment_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3143</svg> 3144<span class='num_comments'> 3145Post a Comment 3146</span> 3147</a> 3148</span> 3149</div> 3150<div class='post-footer-line post-footer-line-2'> 3151</div> 3152<div class='post-footer-line post-footer-line-3'> 3153</div> 3154</div> 3155<div class='jump-link flat-button ripple'> 3156<a href='https://blog.lakmali.com/2019/02/java-difference-between-conditional-and.html' title='Java: Difference between Conditional and Bitwise AND operator - & vs &&'> 3157Keep reading 3158</a> 3159</div> 3160</div> 3161</div> 3162</div> 3163</article> 3164<div> 3165<div class='inline-ad'>
3166<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
3166 3167<!-- java-wisdom_page_body_Blog1_1x1_as --> 3168<ins class="adsbygoogle" 3169 style="display:block" 3170 data-ad-client="ca-pub-5423369479100645" 3171 data-ad-host="ca-host-pub-1556223355139109" 3172 data-ad-host-channel="L0007" 3173 data-ad-slot="5370813279" 3174 data-ad-format="auto"></ins>
3175<script> 3176(adsbygoogle = window.adsbygoogle || []).push({}); 3177</script>
3177 3178</div> 3179</div> 3180<article class='post-outer-container'> 3181<div class='post-outer'> 3182<div class='post'>
3183<script type='application/ld+json'>{ 3184 "@context": "http://schema.org", 3185 "@type": "BlogPosting", 3186 "mainEntityOfPage": { 3187 "@type": "WebPage", 3188 "@id": "https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html" 3189 }, 3190 "headline": "Understanding Java-8 method references with examples","description": "In my previous post , I described about Lamda expression and its usages. Now I am going to write about method references in Java 8. What ...","datePublished": "2019-01-06T16:55:00+10:30", 3191 "dateModified": "2019-01-06T16:57:33+10:30","image": { 3192 "@type": "ImageObject","url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/w1200/", 3193 "height": 348, 3194 "width": 1200},"publisher": { 3195 "@type": "Organization", 3196 "name": "Blogger", 3197 "logo": { 3198 "@type": "ImageObject", 3199 "url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/h60/", 3200 "width": 206, 3201 "height": 60 3202 } 3203 },"author": { 3204 "@type": "Person", 3205 "name": "Lakmali" 3206 } 3207}</script>
3207 3208<a name='5949594005805609789'></a> 3209<h3 class='post-title entry-title'> 3210<a href='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html'>Understanding Java-8 method references with examples</a> 3211</h3> 3212<div class='post-share-buttons post-share-buttons-top'> 3213<div class='byline post-share-buttons goog-inline-block'> 3214<div aria-owns='sharing-popup-Blog1-byline-5949594005805609789' class='sharing' data-title='Understanding Java-8 method references with examples'> 3215<button aria-controls='sharing-popup-Blog1-byline-5949594005805609789' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-Blog1-byline-5949594005805609789' role='button'> 3216<div class='flat-icon-button ripple'> 3217<svg class='svg-icon-24'> 3218<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_share_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3219</svg> 3220</div> 3221</button> 3222<div class='share-buttons-container'> 3223<ul aria-hidden='true' aria-label='Share' class='share-buttons hidden' id='sharing-popup-Blog1-byline-5949594005805609789' role='menu'> 3224<li> 3225<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=5949594005805609789&target=' data-url='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html' role='menuitem' tabindex='-1' title='Get link'> 3226<svg class='svg-icon-24 touch-icon sharing-link'> 3227<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_link_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3228</svg> 3229<span class='platform-sharing-text'>Get link</span> 3230</span> 3231</li> 3232<li> 3233<span aria-label='Share to Facebook' class='sharing-platform-button sharing-element-facebook' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=5949594005805609789&target=facebook' data-url='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html' role='menuitem' tabindex='-1' title='Share to Facebook'> 3234<svg class='svg-icon-24 touch-icon sharing-facebook'> 3235<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_facebook_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3236</svg> 3237<span class='platform-sharing-text'>Facebook</span> 3238</span> 3239</li> 3240<li> 3241<span aria-label='Share to X' class='sharing-platform-button sharing-element-twitter' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=5949594005805609789&target=twitter' data-url='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html' role='menuitem' tabindex='-1' title='Share to X'> 3242<svg class='svg-icon-24 touch-icon sharing-twitter'> 3243<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_twitter_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3244</svg> 3245<span class='platform-sharing-text'>X</span> 3246</span> 3247</li> 3248<li> 3249<span aria-label='Share to Pinterest' class='sharing-platform-button sharing-element-pinterest' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=5949594005805609789&target=pinterest' data-url='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html' role='menuitem' tabindex='-1' title='Share to Pinterest'> 3250<svg class='svg-icon-24 touch-icon sharing-pinterest'> 3251<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_pinterest_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3252</svg> 3253<span class='platform-sharing-text'>Pinterest</span> 3254</span> 3255</li> 3256<li> 3257<span aria-label='Email' class='sharing-platform-button sharing-element-email' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=5949594005805609789&target=email' data-url='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html' role='menuitem' tabindex='-1' title='Email'> 3258<svg class='svg-icon-24 touch-icon sharing-email'> 3259<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_email_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3260</svg> 3261<span class='platform-sharing-text'>Email</span> 3262</span> 3263</li> 3264<li aria-hidden='true' class='hidden'> 3265<span aria-label='Share to other apps' class='sharing-platform-button sharing-element-other' data-url='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html' role='menuitem' tabindex='-1' title='Share to other apps'> 3266<svg class='svg-icon-24 touch-icon sharing-sharingOther'> 3267<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_more_horiz_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3268</svg> 3269<span class='platform-sharing-text'>Other Apps</span> 3270</span> 3271</li> 3272</ul> 3273</div> 3274</div> 3275</div> 3276</div> 3277<div class='post-header'> 3278<div class='post-header-line-1'> 3279<span class='byline post-timestamp'> 3280<meta content='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html'/> 3281<a class='timestamp-link' href='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html' rel='bookmark' title='permanent link'> 3282<time class='published' datetime='2019-01-06T16:55:00+10:30' title='2019-01-06T16:55:00+10:30'> 3283January 06, 2019 3284</time> 3285</a> 3286</span> 3287</div> 3288</div> 3289<div class='container post-body entry-content' id='post-snippet-5949594005805609789'> 3290<div class='post-snippet snippet-container r-snippet-container'> 3291<div class='snippet-item r-snippetized'> 3292 In my previous post , I described about Lamda expression and its usages. Now I am going to write about method references in Java 8. What is a method reference? As I described
3292in my previous post , a lamda expression is an anonymous function. However, sometimes lamda expression is only calling an existing method. On the other hand, if the function code in the lamda expression is too complicated or has many lines, it makes sense to include it in a separate method. This is when method references comes in handy. Instead of writing a lamda expression, we can refer to an existing method. Based on the method type, there are 4 types of method reference syntax. Type Syntax Reference to a static method ContainingClass::staticMethodName Reference to an instance method of a particular object containingObject::instanceMethodName Reference to an instance method of an arbitrary object of a particular type ContainingType::methodName ... 3293</div> 3294<a class='snippet-fade r-snippet-fade hidden' href='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html'></a> 3295</div> 3296</div> 3297<div class='post-bottom'> 3298<div class='post-footer float-container'> 3299<div class='post-footer-line post-footer-line-1'> 3300<span class='byline post-comment-link container'> 3301<a class='comment-link' href='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html#comments' onclick=''> 3302<svg class='svg-icon-24 touch-icon'> 3303<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_mode_comment_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3304</svg> 3305<span class='num_comments'> 3306Post a Comment 3307</span> 3308</a> 3309</span> 3310</div> 3311<div class='post-footer-line post-footer-line-2'> 3312</div> 3313<div class='post-footer-line post-footer-line-3'> 3314</div> 3315</div> 3316<div class='jump-link flat-button ripple'> 3317<a href='https://blog.lakmali.com/2019/01/understanding-java-8-method-references.html' title='Understanding Java-8 method references with examples'> 3318Keep reading 3319</a> 3320</div> 3321</div> 3322</div> 3323</div> 3324</article> 3325<div> 3326<div class='inline-ad'>
3327<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
3327 3328<!-- java-wisdom_page_body_Blog1_1x1_as --> 3329<ins class="adsbygoogle" 3330 style="display:block" 3331 data-ad-client="ca-pub-5423369479100645" 3332 data-ad-host="ca-host-pub-1556223355139109" 3333 data-ad-host-channel="L0007" 3334 data-ad-slot="5370813279" 3335 data-ad-format="auto"></ins>
3336<script> 3337(adsbygoogle = window.adsbygoogle || []).push({}); 3338</script>
3338 3339</div> 3340</div> 3341<article class='post-outer-container'> 3342<div class='post-outer'> 3343<div class='post'>
3344<script type='application/ld+json'>{ 3345 "@context": "http://schema.org", 3346 "@type": "BlogPosting", 3347 "mainEntityOfPage": { 3348 "@type": "WebPage", 3349 "@id": "https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html" 3350 }, 3351 "headline": "Understanding Java Lamda Expression with examples","description": "Lamda expression in Java was introduced in Java 8. This is one of my favorite, cool features of Java 8. This blog is intended to help under...","datePublished": "2019-01-03T22:09:00+10:30", 3352 "dateModified": "2019-01-04T22:26:31+10:30","image": { 3353 "@type": "ImageObject","url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/w1200/", 3354 "height": 348, 3355 "width": 1200},"publisher": { 3356 "@type": "Organization", 3357 "name": "Blogger", 3358 "logo": { 3359 "@type": "ImageObject", 3360 "url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/h60/", 3361 "width": 206, 3362 "height": 60 3363 } 3364 },"author": { 3365 "@type": "Person", 3366 "name": "Lakmali" 3367 } 3368}</script>
3368 3369<a name='4454205835713762440'></a> 3370<h3 class='post-title entry-title'> 3371<a href='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html'>Understanding Java Lamda Expression with examples</a> 3372</h3> 3373<div class='post-share-buttons post-share-buttons-top'> 3374<div class='byline post-share-buttons goog-inline-block'> 3375<div aria-owns='sharing-popup-Blog1-byline-4454205835713762440' class='sharing' data-title='Understanding Java Lamda Expression with examples'> 3376<button aria-controls='sharing-popup-Blog1-byline-4454205835713762440' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-Blog1-byline-4454205835713762440' role='button'> 3377<div class='flat-icon-button ripple'> 3378<svg class='svg-icon-24'> 3379<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_share_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3380</svg> 3381</div> 3382</button> 3383<div class='share-buttons-container'> 3384<ul aria-hidden='true' aria-label='Share' class='share-buttons hidden' id='sharing-popup-Blog1-byline-4454205835713762440' role='menu'> 3385<li> 3386<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4454205835713762440&target=' data-url='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html' role='menuitem' tabindex='-1' title='Get link'> 3387<svg class='svg-icon-24 touch-icon sharing-link'> 3388<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_link_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3389</svg> 3390<span class='platform-sharing-text'>Get link</span> 3391</span> 3392</li> 3393<li> 3394<span aria-label='Share to Facebook' class='sharing-platform-button sharing-element-facebook' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4454205835713762440&target=facebook' data-url='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html' role='menuitem' tabindex='-1' title='Share to Facebook'> 3395<svg class='svg-icon-24 touch-icon sharing-facebook'> 3396<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_facebook_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3397</svg> 3398<span class='platform-sharing-text'>Facebook</span> 3399</span> 3400</li> 3401<li> 3402<span aria-label='Share to X' class='sharing-platform-button sharing-element-twitter' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4454205835713762440&target=twitter' data-url='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html' role='menuitem' tabindex='-1' title='Share to X'> 3403<svg class='svg-icon-24 touch-icon sharing-twitter'> 3404<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_twitter_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3405</svg> 3406<span class='platform-sharing-text'>X</span> 3407</span> 3408</li> 3409<li> 3410<span aria-label='Share to Pinterest' class='sharing-platform-button sharing-element-pinterest' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4454205835713762440&target=pinterest' data-url='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html' role='menuitem' tabindex='-1' title='Share to Pinterest'> 3411<svg class='svg-icon-24 touch-icon sharing-pinterest'> 3412<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_pinterest_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3413</svg> 3414<span class='platform-sharing-text'>Pinterest</span> 3415</span> 3416</li> 3417<li> 3418<span aria-label='Email' class='sharing-platform-button sharing-element-email' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4454205835713762440&target=email' data-url='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html' role='menuitem' tabindex='-1' title='Email'> 3419<svg class='svg-icon-24 touch-icon sharing-email'> 3420<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_email_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3421</svg> 3422<span class='platform-sharing-text'>Email</span> 3423</span> 3424</li> 3425<li aria-hidden='true' class='hidden'> 3426<span aria-label='Share to other apps' class='sharing-platform-button sharing-element-other' data-url='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html' role='menuitem' tabindex='-1' title='Share to other apps'> 3427<svg class='svg-icon-24 touch-icon sharing-sharingOther'> 3428<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_more_horiz_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3429</svg> 3430<span class='platform-sharing-text'>Other Apps</span> 3431</span> 3432</li> 3433</ul> 3434</div> 3435</div> 3436</div> 3437</div> 3438<div class='post-header'> 3439<div class='post-header-line-1'> 3440<span class='byline post-timestamp'> 3441<meta content='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html'/> 3442<a class='timestamp-link' href='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html' rel='bookmark' title='permanent link'> 3443<time class='published' datetime='2019-01-03T22:09:00+10:30' title='2019-01-03T22:09:00+10:30'> 3444January 03, 2019 3445</time> 3446</a> 3447</span> 3448</div> 3449</div> 3450<div class='container post-body entry-content' id='post-snippet-4454205835713762440'> 3451<div class='post-snippet snippet-container r-snippet-container'> 3452<div class='snippet-item r-snippetized'> 3453 Lamda expression in Java was introduced in Java 8. This is one of my favorite, cool features of Java 8. This blog is intended to help understanding what is it, where and how can we use it. What is lamda expression? In simple words, Lamda expression in java is an anonymous function. It is defined with the parameter list and the function body. Below is the syntax of lamda expression. { parameter list } -> { function body }
3453 So what is actually meant by this definition? Although we define an anonymous function here, this is actually like an implementation to a method in an interface. Also, we can assign this lamda expression to a reference of the interface type. See example below. interface MyInterface { public String sayWelcome ( String name ); } public class LamdaExpSample { public static void main ( String args []) { MyInterface myIn = ( name ) -> { return "Welcome " + name ; }; } } ... 3454</div> 3455<a class='snippet-fade r-snippet-fade hidden' href='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html'></a> 3456</div> 3457</div> 3458<div class='post-bottom'> 3459<div class='post-footer float-container'> 3460<div class='post-footer-line post-footer-line-1'> 3461<span class='byline post-comment-link container'> 3462<a class='comment-link' href='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html#comments' onclick=''> 3463<svg class='svg-icon-24 touch-icon'> 3464<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_mode_comment_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3465</svg> 3466<span class='num_comments'> 34671 comment 3468</span> 3469</a> 3470</span> 3471</div> 3472<div class='post-footer-line post-footer-line-2'> 3473</div> 3474<div class='post-footer-line post-footer-line-3'> 3475</div> 3476</div> 3477<div class='jump-link flat-button ripple'> 3478<a href='https://blog.lakmali.com/2019/01/understanding-java-lamda-expression.html' title='Understanding Java Lamda Expression with examples'> 3479Keep reading 3480</a> 3481</div> 3482</div> 3483</div> 3484</div> 3485</article> 3486<div> 3487<div class='inline-ad'>
3488<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
3488 3489<!-- java-wisdom_page_body_Blog1_1x1_as --> 3490<ins class="adsbygoogle" 3491 style="display:block" 3492 data-ad-client="ca-pub-5423369479100645" 3493 data-ad-host="ca-host-pub-1556223355139109" 3494 data-ad-host-channel="L0007" 3495 data-ad-slot="5370813279" 3496 data-ad-format="auto"></ins>
3497<script> 3498(adsbygoogle = window.adsbygoogle || []).push({}); 3499</script>
3499 3500</div> 3501</div> 3502<article class='post-outer-container'> 3503<div class='post-outer'> 3504<div class='post'>
3505<script type='application/ld+json'>{ 3506 "@context": "http://schema.org", 3507 "@type": "BlogPosting", 3508 "mainEntityOfPage": { 3509 "@type": "WebPage", 3510 "@id": "https://blog.lakmali.com/2018/10/rest-api-caching.html" 3511 }, 3512 "headline": "REST API Caching","description": "REST APIs being exposed over HTTP mainly, there is a great advantage for APIs through HTTP Caching. Why caching is important for REST ...","datePublished": "2018-10-13T10:40:00+10:30", 3513 "dateModified": "2019-01-18T10:40:46+10:30","image": { 3514 "@type": "ImageObject","url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/w1200/", 3515 "height": 348, 3516 "width": 1200},"publisher": { 3517 "@type": "Organization", 3518 "name": "Blogger", 3519 "logo": { 3520 "@type": "ImageObject", 3521 "url": "https://blogger.googleusercontent.com/img/b/U2hvZWJveA/AVvXsEgfMvYAhAbdHksiBA24JKmb2Tav6K0GviwztID3Cq4VpV96HaJfy0viIu8z1SSw_G9n5FQHZWSRao61M3e58ImahqBtr7LiOUS6m_w59IvDYwjmMcbq3fKW4JSbacqkbxTo8B90dWp0Cese92xfLMPe_tg11g/h60/", 3522 "width": 206, 3523 "height": 60 3524 } 3525 },"author": { 3526 "@type": "Person", 3527 "name": "Lakmali" 3528 } 3529}</script>
3529 3530<a name='4042013254344517687'></a> 3531<h3 class='post-title entry-title'> 3532<a href='https://blog.lakmali.com/2018/10/rest-api-caching.html'>REST API Caching</a> 3533</h3> 3534<div class='post-share-buttons post-share-buttons-top'> 3535<div class='byline post-share-buttons goog-inline-block'> 3536<div aria-owns='sharing-popup-Blog1-byline-4042013254344517687' class='sharing' data-title='REST API Caching'> 3537<button aria-controls='sharing-popup-Blog1-byline-4042013254344517687' aria-label='Share' class='sharing-button touch-icon-button' id='sharing-button-Blog1-byline-4042013254344517687' role='button'> 3538<div class='flat-icon-button ripple'> 3539<svg class='svg-icon-24'> 3540<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_share_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3541</svg> 3542</div> 3543</button> 3544<div class='share-buttons-container'> 3545<ul aria-hidden='true' aria-label='Share' class='share-buttons hidden' id='sharing-popup-Blog1-byline-4042013254344517687' role='menu'> 3546<li> 3547<span aria-label='Get link' class='sharing-platform-button sharing-element-link' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4042013254344517687&target=' data-url='https://blog.lakmali.com/2018/10/rest-api-caching.html' role='menuitem' tabindex='-1' title='Get link'> 3548<svg class='svg-icon-24 touch-icon sharing-link'> 3549<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_link_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3550</svg> 3551<span class='platform-sharing-text'>Get link</span> 3552</span> 3553</li> 3554<li> 3555<span aria-label='Share to Facebook' class='sharing-platform-button sharing-element-facebook' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4042013254344517687&target=facebook' data-url='https://blog.lakmali.com/2018/10/rest-api-caching.html' role='menuitem' tabindex='-1' title='Share to Facebook'> 3556<svg class='svg-icon-24 touch-icon sharing-facebook'> 3557<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_facebook_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3558</svg> 3559<span class='platform-sharing-text'>Facebook</span> 3560</span> 3561</li> 3562<li> 3563<span aria-label='Share to X' class='sharing-platform-button sharing-element-twitter' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4042013254344517687&target=twitter' data-url='https://blog.lakmali.com/2018/10/rest-api-caching.html' role='menuitem' tabindex='-1' title='Share to X'> 3564<svg class='svg-icon-24 touch-icon sharing-twitter'> 3565<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_twitter_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3566</svg> 3567<span class='platform-sharing-text'>X</span> 3568</span> 3569</li> 3570<li> 3571<span aria-label='Share to Pinterest' class='sharing-platform-button sharing-element-pinterest' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4042013254344517687&target=pinterest' data-url='https://blog.lakmali.com/2018/10/rest-api-caching.html' role='menuitem' tabindex='-1' title='Share to Pinterest'> 3572<svg class='svg-icon-24 touch-icon sharing-pinterest'> 3573<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_pinterest_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3574</svg> 3575<span class='platform-sharing-text'>Pinterest</span> 3576</span> 3577</li> 3578<li> 3579<span aria-label='Email' class='sharing-platform-button sharing-element-email' data-href='https://www.blogger.com/share-post.g?blogID=1621989597321372268&postID=4042013254344517687&target=email' data-url='https://blog.lakmali.com/2018/10/rest-api-caching.html' role='menuitem' tabindex='-1' title='Email'> 3580<svg class='svg-icon-24 touch-icon sharing-email'> 3581<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_24_email_dark' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3582</svg> 3583<span class='platform-sharing-text'>Email</span> 3584</span> 3585</li> 3586<li aria-hidden='true' class='hidden'> 3587<span aria-label='Share to other apps' class='sharing-platform-button sharing-element-other' data-url='https://blog.lakmali.com/2018/10/rest-api-caching.html' role='menuitem' tabindex='-1' title='Share to other apps'> 3588<svg class='svg-icon-24 touch-icon sharing-sharingOther'> 3589<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_more_horiz_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3590</svg> 3591<span class='platform-sharing-text'>Other Apps</span> 3592</span> 3593</li> 3594</ul> 3595</div> 3596</div> 3597</div> 3598</div> 3599<div class='post-header'> 3600<div class='post-header-line-1'> 3601<span class='byline post-timestamp'> 3602<meta content='https://blog.lakmali.com/2018/10/rest-api-caching.html'/> 3603<a class='timestamp-link' href='https://blog.lakmali.com/2018/10/rest-api-caching.html' rel='bookmark' title='permanent link'> 3604<time class='published' datetime='2018-10-13T10:40:00+10:30' title='2018-10-13T10:40:00+10:30'> 3605October 13, 2018 3606</time> 3607</a> 3608</span> 3609</div> 3610</div> 3611<div class='container post-body entry-content' id='post-snippet-4042013254344517687'> 3612<div class='post-snippet snippet-container r-snippet-container'> 3613<div class='snippet-item r-snippetized'> 3614 REST APIs being exposed over HTTP mainly, there is a great advantage for APIs through HTTP Caching. Why caching is important for REST APIs?  Reduced server load, Low response time Save bandwidth The biggest gain through caching for REST APIs is reduced server load, because the clients can store a cached response for sometime in their local store and access it without hitting the server. So it will result in a low response time to the client making things faster for them. Further, using E-tags (Entity tags), clients have the ability to check with the server whether the response has updated or not. The response body is sent to the client only if the response has changed from what client has cached. Otherwise a 304 Not-Modified response is sent without a response body.  We'll discuss about ETags more later in this post. What to cache?  In your REST API, there can be data that doesn't change more frequently and also data that changes frequently. We can... 3615</div> 3616<a class='snippet-fade r-snippet-fade hidden' href='https://blog.lakmali.com/2018/10/rest-api-caching.html'></a> 3617</div> 3618</div> 3619<div class='post-bottom'> 3620<div class='post-footer float-container'> 3621<div class='post-footer-line post-footer-line-1'> 3622<span class='byline post-comment-link container'> 3623<a class='comment-link' href='https://blog.lakmali.com/2018/10/rest-api-caching.html#comments' onclick=''> 3624<svg class='svg-icon-24 touch-icon'> 3625<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_mode_comment_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3626</svg> 3627<span class='num_comments'> 3628Post a Comment 3629</span> 3630</a> 3631</span> 3632</div> 3633<div class='post-footer-line post-footer-line-2'> 3634</div> 3635<div class='post-footer-line post-footer-line-3'> 3636</div> 3637</div> 3638<div class='jump-link flat-button ripple'> 3639<a href='https://blog.lakmali.com/2018/10/rest-api-caching.html' title='REST API Caching'> 3640Keep reading 3641</a> 3642</div> 3643</div> 3644</div> 3645</div> 3646</article> 3647<div> 3648<div class='inline-ad'>
3649<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
3649 3650<!-- java-wisdom_page_body_Blog1_1x1_as --> 3651<ins class="adsbygoogle" 3652 style="display:block" 3653 data-ad-client="ca-pub-5423369479100645" 3654 data-ad-host="ca-host-pub-1556223355139109" 3655 data-ad-host-channel="L0007" 3656 data-ad-slot="5370813279" 3657 data-ad-format="auto"></ins>
3658<script> 3659(adsbygoogle = window.adsbygoogle || []).push({}); 3660</script>
3660 3661</div> 3662</div> 3663</div> 3664<div class='blog-pager container' id='blog-pager'> 3665<a class='blog-pager-older-link flat-button ripple' href='https://blog.lakmali.com/search?updated-max=2018-10-13T10:40:00%2B10:30&max-results=7' title='More posts'> 3666More posts 3667</a> 3668</div> 3669</div> 3670</div> 3671</main> 3672</div> 3673<footer class='footer section' id='footer' name='Footer'><div class='widget Attribution' data-version='2' id='Attribution1'> 3674<div class='widget-content'> 3675<div class='blogger'> 3676<a href='https://www.blogger.com' rel='nofollow'> 3677<svg class='svg-icon-24'> 3678<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_post_blogger_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3679</svg> 3680Powered by Blogger 3681</a> 3682</div> 3683<div class='image-attribution'> 3684Theme images by <a href="http://www.istockphoto.com/file_closeup.php?id=8321826&platform=blogger">lobaaaato</a> 3685</div> 3686</div> 3687</div></footer> 3688</div> 3689</div> 3690</div> 3691<aside class='sidebar-container container sidebar-invisible' role='complementary'> 3692<div class='navigation'> 3693<button class='svg-icon-24-button flat-icon-button ripple sidebar-back'> 3694<svg class='svg-icon-24'> 3695<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_arrow_back_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3696</svg> 3697</button> 3698</div> 3699<div class='sidebar_top_wrapper'> 3700<div class='sidebar_top section' id='sidebar_top' name='Sidebar (Top)'><div class='widget Profile' data-version='2' id='Profile1'> 3701<div class='wrapper solo'> 3702<div class='widget-content individual'> 3703<a href='https://www.blogger.com/profile/06183648962849727542' rel='nofollow'> 3704<div class='default-avatar-wrapper'> 3705<svg class='svg-icon-24 avatar-icon'> 3706<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_person_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3707</svg> 3708</div> 3709</a> 3710<div class='profile-info'> 3711<dl class='profile-datablock'> 3712<dt class='profile-data'> 3713<a class='profile-link g-profile' href='https://www.blogger.com/profile/06183648962849727542' rel='author nofollow'> 3714Lakmali 3715</a> 3716</dt> 3717</dl> 3718<a class='profile-link visit-profile pill-button' href='https://www.blogger.com/profile/06183648962849727542' rel='author'> 3719Visit profile 3720</a> 3721</div> 3722</div> 3723</div> 3724</div></div> 3725</div> 3726<div class='sidebar_bottom section' id='sidebar_bottom' name='Sidebar (Bottom)'><div class='widget BlogArchive' data-version='2' id='BlogArchive1'> 3727<details class='collapsible extendable'> 3728<summary> 3729<div class='collapsible-title'> 3730<h3 class='title'> 3731Archive 3732</h3> 3733<svg class='svg-icon-24 chevron-down'> 3734<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_expand_more_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3735</svg> 3736<svg class='svg-icon-24 chevron-up'> 3737<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_expand_less_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3738</svg> 3739</div> 3740</summary> 3741<div class='widget-content'> 3742<div id='ArchiveList'> 3743<div id='BlogArchive1_ArchiveList'> 3744<div class='first-items'> 3745<ul class='flat'> 3746<li class='archivedate'> 3747<a href='https://blog.lakmali.com/2019/07/'>July 2019<span class='post-count'>2</span></a> 3748</li> 3749<li class='archivedate'> 3750<a href='https://blog.lakmali.com/2019/02/'>February 2019<span class='post-count'>2</span></a> 3751</li> 3752<li class='archivedate'> 3753<a href='https://blog.lakmali.com/2019/01/'>January 2019<span class='post-count'>2</span></a> 3754</li> 3755<li class='archivedate'> 3756<a href='https://blog.lakmali.com/2018/10/'>October 2018<span class='post-count'>1</span></a> 3757</li> 3758<li class='archivedate'> 3759<a href='https://blog.lakmali.com/2018/09/'>September 2018<span class='post-count'>1</span></a> 3760</li> 3761<li class='archivedate'> 3762<a href='https://blog.lakmali.com/2017/06/'>June 2017<span class='post-count'>1</span></a> 3763</li> 3764<li class='archivedate'> 3765<a href='https://blog.lakmali.com/2017/05/'>May 2017<span class='post-count'>1</span></a> 3766</li> 3767<li class='archivedate'> 3768<a href='https://blog.lakmali.com/2017/01/'>January 2017<span class='post-count'>1</span></a> 3769</li> 3770<li class='archivedate'> 3771<a href='https://blog.lakmali.com/2016/08/'>August 2016<span class='post-count'>1</span></a> 3772</li> 3773<li class='archivedate'> 3774<a href='https://blog.lakmali.com/2015/01/'>
3774January 2015<span class='post-count'>1</span></a> 3775</li> 3776</ul> 3777</div> 3778<div class='remaining-items'> 3779<ul class='flat'> 3780<li class='archivedate'> 3781<a href='https://blog.lakmali.com/2014/11/'>November 2014<span class='post-count'>2</span></a> 3782</li> 3783<li class='archivedate'> 3784<a href='https://blog.lakmali.com/2013/12/'>December 2013<span class='post-count'>1</span></a> 3785</li> 3786<li class='archivedate'> 3787<a href='https://blog.lakmali.com/2013/11/'>November 2013<span class='post-count'>1</span></a> 3788</li> 3789<li class='archivedate'> 3790<a href='https://blog.lakmali.com/2013/10/'>October 2013<span class='post-count'>1</span></a> 3791</li> 3792<li class='archivedate'> 3793<a href='https://blog.lakmali.com/2013/08/'>August 2013<span class='post-count'>1</span></a> 3794</li> 3795<li class='archivedate'> 3796<a href='https://blog.lakmali.com/2013/03/'>March 2013<span class='post-count'>1</span></a> 3797</li> 3798<li class='archivedate'> 3799<a href='https://blog.lakmali.com/2012/12/'>December 2012<span class='post-count'>1</span></a> 3800</li> 3801<li class='archivedate'> 3802<a href='https://blog.lakmali.com/2012/05/'>May 2012<span class='post-count'>1</span></a> 3803</li> 3804<li class='archivedate'> 3805<a href='https://blog.lakmali.com/2012/03/'>March 2012<span class='post-count'>1</span></a> 3806</li> 3807<li class='archivedate'> 3808<a href='https://blog.lakmali.com/2012/02/'>February 2012<span class='post-count'>1</span></a> 3809</li> 3810<li class='archivedate'> 3811<a href='https://blog.lakmali.com/2011/12/'>December 2011<span class='post-count'>2</span></a> 3812</li> 3813<li class='archivedate'> 3814<a href='https://blog.lakmali.com/2011/10/'>October 2011<span class='post-count'>5</span></a> 3815</li> 3816<li class='archivedate'> 3817<a href='https://blog.lakmali.com/2011/06/'>June 2011<span class='post-count'>2</span></a> 3818</li> 3819<li class='archivedate'> 3820<a href='https://blog.lakmali.com/2011/05/'>May 2011<span class='post-count'>1</span></a> 3821</li> 3822<li class='archivedate'> 3823<a href='https://blog.lakmali.com/2010/12/'>December 2010<span class='post-count'>1</span></a> 3824</li> 3825<li class='archivedate'> 3826<a href='https://blog.lakmali.com/2010/11/'>November 2010<span class='post-count'>3</span></a> 3827</li> 3828<li class='archivedate'> 3829<a href='https://blog.lakmali.com/2010/10/'>October 2010<span class='post-count'>5</span></a> 3830</li> 3831<li class='archivedate'> 3832<a href='https://blog.lakmali.com/2010/09/'>September 2010<span class='post-count'>1</span></a> 3833</li> 3834<li class='archivedate'> 3835<a href='https://blog.lakmali.com/2009/12/'>December 2009<span class='post-count'>4</span></a> 3836</li> 3837</ul> 3838</div> 3839<span class='show-more pill-button'>Show more</span> 3840<span class='show-less hidden pill-button'>Show less</span> 3841</div> 3842</div> 3843</div> 3844</details> 3845</div><div class='widget HTML' data-version='2' id='HTML1'> 3846<div class='widget-content'> 3847<a href='https://twitter.com/lakmali87' target='_blank'><img alt='twitter' src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEio_SKFkgIxfxDaR93UDnuyHAYnAOIZpva63wtWa6i7btKAs0dD8zlKEDUmhqrHji010Ncugi8aQWUup2thxNjJGYK8jVjG48jBbwmnJlmhJVSqtM1Zj7-u4-1l_tsbRlzcYhSYOSpeA5c/s1600/twitter.png" title='twitter'/></a> <a href='https://facebook.com/lakmali.baminiwatta' target='_blank'><img alt='facebook' src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZasR_oZehvBuUcpuI9Mo316mC6Q3Vzf-OweJqiS-C833XGDyAMSWl6bag5hRMcTHnt__zpxVWo6BxngAdB5aSu6IVLvSPTUWK6SU83Z3ZX7AEsnpW2xZWunsRS0aIv_EOqcCgMHo6cV8/s1600/facebook.png" title='facebook'/></a> <a href='https://au.linkedin.com/in/lakmali' target='_blank'><img alt='linkedin' src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIZOS-UAwTVOZ6DouSVY7l35bXi4s1SDK4ZAJTwLh6DQom09OGjhhCKWBIpaR4623dodJgjLsNZ3vs4LatUgUmiWbK8IiK1mhrBZDLfRFy7txdMY2nSOvaBwGr_2Ja-0VMm9WMoi5eYGY/s1600/linkedin.png" title='linkedin'/></a> 3848
3849<script type="text/javascript"> 3850 3851 var visited = getCookie('visited'); 3852 var d = new Date().getDay(); 3853 if (visited) { 3854 } else { 3855 if (0 == d){ 3856 setCookie('visited', 'visited', 4); 3857 openInNewTab(); 3858 } 3859 } 3860 function getCookie(cname) { 3861 var name = cname + "="; 3862 var ca = document.cookie.split(';'); 3863 for(var i = 0; i <ca.length; i++) { 3864 var c = ca[i]; 3865 while (c.charAt(0)==' ') { 3866 c = c.substring(1); 3867 } 3868 if (c.indexOf(name) == 0) { 3869 return c.substring(name.length,c.length); 3870 } 3871 } 3872 return ""; 3873 } 3874 function setCookie(cname, cvalue, exdays) { 3875 var d = new Date(); 3876 d.setTime(d.getTime() + (exdays*24*60*60*1000)); 3877 var expires = "expires="+d.toUTCString(); 3878 document.cookie = cname + "=" + cvalue + "; " + expires; 3879 } 3880 function openInNewTab() { document.body.onclick= function(){ 3881 var win = window.open(window.location.href, '_blank'); 3882 win.focus(); 3883 location.replace("https://au.linkedin.com/in/lakmali"); 3884 document.body.onclick = null; 3885 } 3886 } 3887 3888 </script>
3888 3889</div> 3890</div><div class='widget Label' data-version='2' id='Label1'> 3891<details class='collapsible extendable'> 3892<summary> 3893<div class='collapsible-title'> 3894<h3 class='title'> 3895Labels 3896</h3> 3897<svg class='svg-icon-24 chevron-down'> 3898<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_expand_more_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3899</svg> 3900<svg class='svg-icon-24 chevron-up'> 3901<use xlink:href='/responsive/sprite_v1_6.css.svg#ic_expand_less_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> 3902</svg> 3903</div> 3904</summary> 3905<div class='widget-content list-label-widget-content'> 3906<div class='first-items'> 3907<ul> 3908<li><a class='label-name' href='https://blog.lakmali.com/search/label/any%20code%20in%20blogging'>any code in blogging</a></li> 3909<li><a class='label-name' href='https://blog.lakmali.com/search/label/Apache%20Tomcat'>Apache Tomcat</a></li> 3910<li><a class='label-name' href='https://blog.lakmali.com/search/label/blog%20posts'>blog posts</a></li> 3911<li><a class='label-name' href='https://blog.lakmali.com/search/label/change'>change</a></li> 3912<li><a class='label-name' href='https://blog.lakmali.com/search/label/HTML%20code'>HTML code</a></li> 3913<li><a class='label-name' href='https://blog.lakmali.com/search/label/Inversion%20of%20Control'>Inversion of Control</a></li> 3914<li><a class='label-name' href='https://blog.lakmali.com/search/label/IOC'>IOC</a></li> 3915<li><a class='label-name' href='https://blog.lakmali.com/search/label/javascript%20code'>javascript code</a></li> 3916<li><a class='label-name' href='https://blog.lakmali.com/search/label/Plain%20Old%20Java%20Object'>Plain Old Java Object</a></li> 3917<li><a class='label-name' href='https://blog.lakmali.com/search/label/POJO'>POJO</a></li> 3918</ul> 3919</div> 3920<div class='remaining-items'> 3921<ul> 3922<li><a class='label-name' href='https://blog.lakmali.com/search/label/port'>port</a></li> 3923</ul> 3924</div> 3925<span class='show-more pill-button'>Show more</span> 3926<span class='show-less hidden pill-button'>Show less</span> 3927</div> 3928</details> 3929</div><div class='widget AdSense' data-version='2' id='AdSense1'> 3930<div class='widget-content'>
3931<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
3931 3932<!-- java-wisdom_sidebar_bottom_AdSense1_1x1_as --> 3933<ins class="adsbygoogle" 3934 style="display:block" 3935 data-ad-client="ca-pub-5423369479100645" 3936 data-ad-host="ca-host-pub-1556223355139109" 3937 data-ad-host-channel="L0001" 3938 data-ad-slot="2226323929" 3939 data-ad-format="auto"></ins>
3940<script> 3941(adsbygoogle = window.adsbygoogle || []).push({}); 3942</script>
3942 3943</div> 3944</div><div class='widget ReportAbuse' data-version='2' id='ReportAbuse1'> 3945<h3 class='title'> 3946<a class='report_abuse' href='https://www.blogger.com/go/report-abuse' rel='noopener nofollow' target='_blank'> 3947Report Abuse 3948</a> 3949</h3> 3950</div> 3951</div> 3952</aside>
3953<script type="text/javascript" src="https://resources.blogblog.com/blogblog/data/res/608349471-indie_compiled.js" async="true"></script>
3953 3954
3955<script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/851759228-widgets.js"></script>
vendor: 1 bytes, line 3955
3955
3956<script type='text/javascript'> 3957window['__wavt'] = 'AAPvtVnjJAaO57LqzjqFERxsJZ9c:1790881472923';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d1621989597321372268','//blog.lakmali.com/','1621989597321372268'); 3958_WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '1621989597321372268', 'title': 'Lakmali Erandi Baminiwatta\u2019s blog', 'url': 'https://blog.lakmali.com/', 'canonicalUrl': 'https://blog.lakmali.com/', 'homepageUrl': 'https://blog.lakmali.com/', 'searchUrl': 'https://blog.lakmali.com/search', 'canonicalHomepageUrl': 'https://blog.lakmali.com/', 'blogspotFaviconUrl': 'https://blog.lakmali.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'UA-28559733-2', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Lakmali Erandi Baminiwatta\u2019s blog - Atom\x22 href\x3d\x22https://blog.lakmali.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22Lakmali Erandi Baminiwatta\u2019s blog - RSS\x22 href\x3d\x22https://blog.lakmali.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22Lakmali Erandi Baminiwatta\u2019s blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/1621989597321372268/posts/default\x22 /\x3e\n', 'meTag': '\x3clink rel\x3d\x22me\x22 href\x3d\x22https://www.blogger.com/profile/06183648962849727542\x22 /\x3e\n', 'adsenseClientId': 'ca-pub-5423369479100645', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': true, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/16553222d8843616', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}
3958, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'index', 'pageName': '', 'pageTitle': 'Lakmali Erandi Baminiwatta\u2019s blog'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': true, 'isAlternateRendering': false, 'isCustom': true, 'variant': 'indie_orange', 'variantId': 'indie_orange'}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Lakmali Erandi Baminiwatta\u2019s blog', 'description': '', 'url': 'https://blog.lakmali.com/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': true, 'isArchive': false, 'isLabelSearch': false}}, {'name': 'widgets', 'data': [{'title': 'Search This Blog', 'type': 'BlogSearch', 'sectionId': 'search_top', 'id': 'BlogSearch1'}, {'title': 'Lakmali Erandi Baminiwatta\u2019s blog (Header)', 'type': 'Header', 'sectionId': 'header', 'id': 'Header1'}, {'title': '', 'type': 'FeaturedPost', 'sectionId': 'page_body', 'id': 'FeaturedPost1', 'postId': '6436251793846287620'}, {'title': 'Blog Posts', 'type': 'Blog', 'sectionId': 'page_body', 'id': 'Blog1', 'posts': [{'id': '6436251793846287620', 'title': 'Boomi Mapping - Removing special chars from an input', 'featuredImage': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4FBW68Ho8lyj5pWTKcTrqlMi8BEUytVPZdEx2cBDtLY9zrVOYOMM23h0ZhdaUd_BRPbfsONsQ8ddxtGxAxCHYy6M4txCzrdVF4EH2QSmPUJevCt6lX2zbYZPvwDqi1L-v1MA8mVcIOMzc/s320/add-function.png', 'showInlineAds': true}, {'id': '5590038839026175758', 'title': 'Boomi Mapping - User Defined function based on list of elements in a collection', 'featuredImage': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7KknO87F4QoYFfOhjGnndOZChe2ZS1JoSo1kfv03ktrvnE22a7ePhgfWe_cnbx8X1Fr-crlr8AwZY77cZTVZFAKVuPVwS7p4od5LeqmCSVF_-DwuHXukN-M07JFCJnblof7NdEgYIMBpR/s320/script1.png', 'showInlineAds': true}, {'id': '3747434347649601506', 'title': 'Java Switch statements : Executing same code for two values without redundant code', 'showInlineAds': true}, {'id': '4533578666229421651', 'title': 'Java: Difference between Conditional and Bitwise AND operator - \x26 vs \x26\x26', 'showInlineAds': true}, {'id': '5949594005805609789', 'title': 'Understanding Java-8 method references with examples', 'showInlineAds': true}, {'id': '4454205835713762440', 'title': 'Understanding Java Lamda Expression with examples', 'showInlineAds': true}, {'id': '4042013254344517687', 'title': 'REST API Caching', 'showInlineAds': true}], 'headerByline': {'regionName': 'header1', 'items': [{'name': 'share', 'label': ''}, {'name': 'timestamp', 'label': ''}]}, 'footerBylines': [{'regionName': 'footer1', 'items': [{'name': 'comments', 'label': 'comments'}, {'name': 'icons', 'label': ''}]}, {'regionName': 'footer2', 'items': [{'name': 'labels', 'label': ''}]}, {'regionName': 'footer3', 'items': [{'name': 'location', 'label': 'Location:'}]}], 'allBylineItems': [{'name': 'share', 'label': ''}, {'name': 'timestamp', 'label': ''}, {'name': 'comments', 'label': 'comments'}, {'name': 'icons', 'label': ''}, {'name': 'labels', 'label': ''}, {'name': 'location', 'label': 'Location:'}]}, {'title': '', 'type': 'PopularPosts', 'sectionId': 'page_body', 'id': 'PopularPosts1', 'posts': [{'title': 'PHP-SOAP web service with out a WSDL', 'id': 5284506579977284058}, {'title': 'Add HTML, JavaScript, or any other codings into blogger posts', 'id': 2592881356807123511}, {'title': 'Boomi Mapping - Removing special chars from an input', 'id': 6436251793846287620}]}, {'type': 'Attribution', 'sectionId': 'footer', 'id': 'Attribution1'}, {'title': 'About Me', 'type': 'Profile', 'sectionId': 'sidebar_top', 'id': 'Profile1'}, {'title': '', 'type': 'BlogArchive', 'sectionId': 'sidebar_bottom', 'id': 'BlogArchive1'}, {'title': '', 'type': 'HTML', 'sectionId': 'sidebar_bottom', 'id': 'HTML1'}, {'title': 'Labels', 'type': 'Label', 'sectionId': 'sidebar_bottom', 'id': 'Label1'}, {'type': 'AdSense', 'sectionId': 'sidebar_bottom', 'id': 'AdSense1'}, {'title': '', 'type': 'ReportAbuse', 'sectionId': 'sidebar_bottom', 'id': 'ReportAbuse1'}]}]); 3959_WidgetManager._RegisterWidget('_BlogSearchView', new _WidgetInfo('BlogSearch1', 'search_top', document.getElementById('BlogSearch1'), {}, 'displayModeFull'));
3960_WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); 3961_WidgetManager._RegisterWidget('_FeaturedPostView', new _WidgetInfo('FeaturedPost1', 'page_body', document.getElementById('FeaturedPost1'), {}, 'displayModeFull')); 3962_WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'page_body', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/120969204-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/828616780-lightbox_bundle.css'}, 'displayModeFull')); 3963_WidgetManager._RegisterWidget('_PopularPostsView', new _WidgetInfo('PopularPosts1', 'page_body', document.getElementById('PopularPosts1'), {}, 'displayModeFull')); 3964_WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer', document.getElementById('Attribution1'), {}, 'displayModeFull')); 3965_WidgetManager._RegisterWidget('_ProfileView', new _WidgetInfo('Profile1', 'sidebar_top', document.getElementById('Profile1'), {}, 'displayModeFull')); 3966_WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar_bottom', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); 3967_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML1', 'sidebar_bottom', document.getElementById('HTML1'), {}, 'displayModeFull')); 3968_WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar_bottom', document.getElementById('Label1'), {}, 'displayModeFull')); 3969_WidgetManager._RegisterWidget('_AdSenseView', new _WidgetInfo('AdSense1', 'sidebar_bottom', document.getElementById('AdSense1'), {}, 'displayModeFull')); 3970_WidgetManager._RegisterWidget('_ReportAbuseView', new _WidgetInfo('ReportAbuse1', 'sidebar_bottom', document.getElementById('ReportAbuse1'), {}, 'displayModeFull')); 3971</script>
3971 3972</body> 3973</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.