áá±á¬ááºáá
áºáá±á·ááœáẠá¡ááŒá®ážáááºážáá¬áá°ážá¡ááœáẠáá»áŸá±á¬ááºáá¬ážáá±áá±á¬ JavaScript developer áá
áºáŠážááᯠáá»áœááºá¯ááºá¡ááºáá¬áá»á°ážáá²á·áááºá á¡ááºáá¬áá»á°ážááœááºáá«ááŸáááá·áº áá¯ááºáá±á¬áºááá¯ááºáááºáá
áºáŠážááẠHTTP áá±á¬ááºážááá¯áá»ááºáá
áºáá¯ááŒá¯áá¯ááºááá·áº áá¯ááºáá±á¬ááºáá»ááºáá
áºáá¯ááᯠáá»áŸá±á¬ááºáá¬ážááẠáá±á¬ááºážááá¯ááŒá®áž áá¡á±á¬ááºááŒááºáá«á á¡ááŒáááºáá±á«ááºážáá»á¬ážá
áœá¬ áááºá
ááºážááŒáá·áºáá«á
áá°á áá¯ááºáá±á«áºááŸá¬ áá¯ááºááᯠááá¯ááºááá¯ááºáá±ážáá¬ážáá¬ááá¯á· á¡áá®ážá ááºáá¯á¶áž áá áºáá¯áá¯ááœá²ááá¯á· áá¯á¶áá±á¬ááºáá«áááá·áºáááºá áá°áᬠáá®ááá á¹á ááᯠáá±á¬ááºážáá±á¬ááºážáá¬ážáááºááŒá±á¬ááºáž ááá¯ážááá¯ážááŸááºážááŸááºáž ááŒáá²á·áááºááá¯áááºá áá«ááá¯á· á¡áá±á¬áºáá±áž áá»á±áááºááœá¬ážáááá·áºáááºá ááá¯á·áá±á¬áº áá¶ááá±á¬ááºážá áœá¬áá²á áá°ááẠá¡á±á¬ááºááŒááºáá±á¬ á¡ááŒá±áá áºáá¯ááᯠááŸá¬áááœá±á·áá²á·áá±á ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠáááºážá¡á¬áž á áááºááŸá¯ááºááŸá¬ážá áœá¬ áá±ážááŸááºáᬠá¡áá¯ááºá¡áááºážáááºááá¯ááá¯ááœááºáá°á á±ááẠáá¯á¶ážááŒááºáᬠááááá»á¬ážáá±á«áºááœáẠáááºáá±á¬ááºáá¬ážááá·áº áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á¡ááŒá ẠááŒááºáá±á«áºááŒááºážááŸáá·áºá¡áá° áá¯ááºáá±á¬ááºáá»ááºááᯠááŒá±á¬ááºážáá²ááẠáá±á¬ááºážááá¯áá²á·áááºá
ááŒá
áºáá»ááºáá±á¬á·á áá¯ááºáááºá áá°á¡áááºá áá®ááá¯áá¯ááºááœá± ááœá±á·áá°ážáᬠáááºááŸá¬ážáááºá áá±áá°áá»á¡á¬ážááŒáá·áº ááá¯áá±áá¬á á¡áá¬á¡á¬ážáá¯á¶áž áááºááá¯á·áá¯ááºáá±á¬ááºáááºááᯠáá°áááááºá áá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáááºááŸá¬ ááá±á¬ááá¬ážááᯠáá¬ážáááºááá±á¬áá±á«ááºááŸá¯ááᯠááŒáááá·áº á¡ááŒá±áá
áºáá¯á áá¯á¶ááŒááºážáá
áºáá¯ááŒá
áºáááºá ááá¯á·áá±á¬áºáááºáž áá¯ááºáá±á«áºááœáẠááá¯ááºá
á¬ážááŸááºáá±á¬ááºáž áá±ážáá²á·ááá·áº áá¯ááºááẠáá¯á¶ážá á¡áááá¹áá«ááºáááŸááá±á JavaScript ááœáẠáááºááá·áºááááá»á¬ážáá«ááŸááááºááŸáá·áº áááºáááºá á¡ááœááºááŸááºážáááºážáá±á¬ á¡ááœá±ážá¡ááŒááºááŸáááŒá®áž áááºážááá¯á· áá¬ááŒá±á¬áá·áº ááá¯á¡ááºááŒá±á¬ááºáž á¡ááŸááºáááẠááŸááºážááŒááá¯ááºááŒááºáž áááŸááá±á á¡áááºáááºážá¡ááœáẠá€á¡áá¬ááẠááœáá·áºááœáŸááºááá¯ááºáááá·áºáááºááŒá
áºáá±á¬áºáááºáž áá°ááẠá
á®áá®áá¬áá¬áá°ážááŸáá·áº áááá·áºáá±á¬áºáá±á¬á·áá«á á€áá±á¬á·ááºáá²áá±ážáá¬ážáá°ááẠááŸá¯ááºááœá±ážáá±á¬ááááá»á¬ážááŸáááá·áºááœááºážáááºááœáẠá¡ááŸá¬ážáá»á¬ážááᯠáááºááá¯á·ááŒááºáááºááá¯ááºáááºááŒá
áºááŒá®áž áá°áá¬ááá¯á¡ááá¡áá»áá¯ááºáá±á¬ááºáá²á·áááºááᯠá¡ááŒá¬ážáá°áá»á¬ážá¡á¬áž ááŸááºážááŒááá¯ááºáááºáááºážá
Developer áá»á¬ážááẠá¡áááºááá·áºáá¯ááºáá¬ážáá±á¬áá¯ááºááᯠááá¯ááºááá¯ááºáááºáá±ááŒáááºáᯠáá°ááá«áááºá
ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá ááºá¡ááœááºáž áá»áœááºá¯ááºááá¯á·ááẠáá»áá¯ážááœá¬ážááá¯ááºáá±á¬áá á¹á ááºážáá»á¬ážááᯠá¡ááŒá²áááŒááºááŒá¯á¶ááœá±á·áá±ááá«áááºá áá¯ááºá¡ááá¯ááºážá¡á áá»á¬ážááᯠá¡ááŒáááºááá¯ááºáž ááŒááºáá±ážááẠáááá¯á¡ááºá á±ááẠáá»áœááºá¯ááºááá¯á·ááẠáá¯ááºá¡ááá¯ááºážá¡á áá»á¬ážááᯠááœáŸá²ááŒá±á¬ááºážáá±ážáá«áááºá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·áá¡á¬áá¯á¶á á°ážá áá¯ááºááŸá¯ááᯠá¡á¬áá¯á¶á áá¯ááºááŒááºážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠáááááá¬áᬠáááºáá±ááŒááá¯ááºáá±á¬ á¡áá¬áá áºáá¯á¡ááŒá Ạáá»áœááºá¯ááºááá¯á·ááŸáá·áº á¡áá¯ááºáá¯ááºáá±á¬ á¡ááŒá®ážáááºáá¯ááºááᯠááŒáá·áºááŸá¯ááẠ- á¡á¬ážáá¯á¶ážááẠááŒá áºááá·áºááá±á¬ááºááŒá áºáááºáᯠáá»áœááºá¯ááºááá¯á· ááá¯ážááá¯ážááŸááºážááŸááºáž áá°ááá«áááºá
áá»á¬ážáá±á¬á¡á¬ážááŒáá·áº áááºážááẠá¡áá¯ááºááŒá áºáááºáá±á¬áºáááºáž á¡áá¬áá»á¬áž ááŸá¯ááºááœá±ážáá¬áá±á¬á¡áá«ááœáẠá ááºááŒááºááᯠáá±ážáááºááẠááá¯áá¬ážáááºáááºá
ááá¯á·ááŒá±á¬áá·áºá á¡ááŒá®ážáááºáž developer áá¬áá°ážá¡ááœáẠáá»áœááºá¯ááºááá¯á·á ááá¯ááºá á¬ážááŸááºáá±á¬ááºážááẠáááááááºá¡áá¬áá»á¬ážááᯠááááááá¯ááºáááá áááºááŸá¬ážá á±áááºáᯠáá°ááá«áááºá áá áºá á¯á¶áá áºáá±á¬ááºá áá¯ááºáá±áá¬ááœáẠáá áºá á¯á¶áá áºáá±á¬ááºá áá¯ááºáá áºáᯠááŒá áºáá±á«áºáá¬áá±á¬á¡áá«ááœáẠáááºážááá¯á·ááᯠáááºááá¯á·ááá¯ááºááœááºááŒá±ááŸááºážááááºááᯠá¡ááŒá¶á¥á¬ááºááŸááá±á¬ááºážááŸáááá¯ááºáá±á¬áºáááºáž áá±áá°áá»ááá±á¬ááá¬ážááᯠáá¬ážááááºáá² á¡ááºáá¬áá»á°ážá ááºááœáẠáááºážááᯠáá°á·ááá¯ááºáá° ááŒááºáááááá¯ááºáá«á áá°ááẠá¡ááá¯ááºážá¡á ááᯠááŸáá¯á¶ážáá¬ážááŒáá·áº ááŸááºáááá±ááá¯ááºááẠ- áááºáá²áááºááá¯ááºáá±á
return new Promise((resolve, reject) => {
functionWithCallback((err, result) => {
return err ? reject(err) : resolve(result);
});
});
áá«áááºáž áá¯ááºáá²á·áááºá áá«ááá¯á·á¡á¬ážáá¯á¶áž áá áºáá»áááºáá»áááºááŸá¬ ááŒá®ážáá²á·áᬠááŒá áºááá¯ááºáááºá áááºážááá¯á·ááẠááá¯áá±áá¬ááœáẠá¡áá¬á¡á¬ážáá¯á¶áž áááºááá¯á·áá¯ááºáá±á¬ááºáá²á·áááºááᯠáá±áá°áá» á áááºáá°ážááŸááá¯á¶áá»áŸááŒáá·áº áá±á¬ááºááá¯ááºážááœáẠáááºážááá¯á·áá¯ááºáááºážááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºááẠáááºážááá¯á·ááẠáá¯ááºáá áºáá¯á¡á¬áž ááá¯ážááŸááºážá áœá¬ á¡ááœááºáá»ááºáá²á·áááºá ááá¯á·áá±á¬áº developer ááẠá¡ááá¯áá«ááá±á¬ááá¬ážááᯠá¡ááŸááºááááºáá¬ážáááºáá«áá áá°ááẠáááºááá·áºá¡áá¬ááá¯áá»áŸ ááŸááºáááá±ááẠáááá¯á¡ááºáá« - áááºážááᯠááá¯ážááŸááºážá áœá¬ááááá¯ááºááŒá®ážá áá°ááá¯á¡ááºááá»áŸááᯠáá¯ááºááŒáá·áº á¡ááœááºááá° ááŒááºáááºáá¯ááºáá¯ááºááá¯ááºáááºááŒá áºáááºá
á¡ááŒá áºááá¯ááŒááºááœá¬ážáá«á
2012 áá¯ááŸá
áºááœááºá ááŸá±á·áá¯á¶ážáá±á¬ááºáá»á¬áž ááœáŸááºážááá¯ážáá»á¯ááºááá¯ááºááŸá¯ ááá±á«áºáá±ážáá±á¬á¡áá« jQuery ááẠááá¹áá¬ááᯠá¡á¯ááºá
áá¯ážáá²á·ááŒá®áž á
á¬á¡á¯ááºááá¯áááºáá²á·áááºá
á á¬á¡á¯ááºááẠá á¬áááºáá°ááᯠáááºážááá¯á·áááá¯ááºááá¯áẠjQuery ááá¯á¡á ááŸáááºáá®ážáááºážááᯠáááºááŒá¬ážáá±ážááŒá®áž á á¬ááŒáá·áºááá¯ááºááááºáá®ážááŸá¯áá®ááá¯á· áŠážáááºááœá¬ážá á±ááá·áº á¡ááœá±ážááŒá áºá ááºááŸáá·áºáááºáááºá áá°ážááŒá¬ážáá±á¬ááá¯ážááœááºážááááŒááºááŸá¯ááᯠáá±ážáá«áááºá áááŒá¬áá±ážáá®ááŸá áºáá»á¬ážá¡ááœááºážá jQuery ááẠáááºážáááááºáá¬áááºááŒá®ážááŸá¯ááᯠáá¯á¶ážááŸá¯á¶ážáá²á·ááá±á¬áºáááºáž áá»áœááºá¯ááºááẠá á¬á¡á¯ááºááᯠá¡ááŒá¶ááŒá¯áá±áá²ááŒá áºáááºá áá°ááá²á·áááºáááºááŒá®áž áá»áœááºáááᯠá¡ááááá¯ááºáá¯á¶ážá¡áá¬á áá®á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá»áœááºáááá¯ááºááá¯áẠááœá±ážááŒá®áž á áœá²ááŒá²áá±áá²á·áá¶á á¬ážáá»ááºáá«áá²á á á¬áá±ážáá°áá±á¬áºááŒáá²á·áá±á¬á¡ááá·áºáá»á¬ážááẠáá¯áá¹áááááºážáá¯á¶áá±á«áºááŒá®áž ááŸááºážááŸááºážáááºážáááºážááŒá áºáááŒáá·áº áááºážááá¯áá¬áá¬ážáááºáá«á jQuery ááᯠá¡ááœááºááá°áááºáá®ážááá¯ááºáááºáᯠáá±ážáááºá áœá¬ááœá±ážáá±á¬áááá«áááºá
áá¯ááºáá«áááºá áááºááœá±á·ááŸá¬ áá»áœááºáá±á¬áº áá®ááá¯áá»áá¯áž áá¬á០ááá¯ááºááá¯ááºáá²á·áá«áá°áž - á¡á²áá«ááᯠá¡áá°ážá¡áá² áá¶ááááºáááºááá¯á· áá»áœááºáá±á¬áº áá¯á¶ážááŒááºáá²á·áá«áááºá áá»áœááºá¯ááºáááá¯ááºááá¯ááºááŒá±ááŸááºážáááºážáá»á¬ážááẠááá¯ážááŸááºážááŒá®áž áá¯á¶á¡ááœááºážáá±áá¯á¶áááŒá®áž áá»áœááºá¯ááºáááºáá»áŸá±á¬á·ááá¯ááºáá«áááºá jQuery ááᯠááẠáá»ááºá áá á¯á¶ááŸááẠáá¯á¶ááŒááºááẠááá¯á¡ááºááá·áº ááŸááºáááºáá±á¬ áá¯ááºáá±á¬ááºááŸá¯ááœáẠáá»áœááºá¯ááºááẠááááááá¯ááºááᯠáááºááŸá¬ážáá±á¬á¡áá¬áá»á¬ážá¡ááŒá Ạááœá²ááŒá¬ážáá¬ážáááºá áá±á¬ááºááá¯ááºážááœááºá á€á á¬ááŒáá·áºááá¯ááºá á ááºááŒááºáá»á¬ážááᯠá á°ážá ááºážáá±á·áá¬áá¬ááœáẠá¡áá»áááºááŒá¯ááºážáá®ážáááºááá¯ááºáá±á¬áºáááºáž áááºážááᯠblack box áá áºáá»áá¯ážá¡ááŒá áºáᬠá¡áá¯á¶ážááŒá¯áá²á·áááºá
áá«áá±ááá·áº áá®á á¬á¡á¯ááºááá¯áááºáááºáž áá»áœááºáááᯠáááŒá¬ážáá°áá áºáá±á¬ááºááᯠááŒá áºá á±áá²á·áááºá á¡áááºážá¡ááŒá áºáá¯ááºááᯠá áááºáááºááŸá¯ááŒá®áž ááŒá±ááŸááºážáá»ááºáá»á¬ážá áœá¬ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááẠá¡ááŸááºááááºááẠá¡ááœááºááœáá·áºáááºážááŒááºáá¬ááŒá±á¬ááºáž ááœá±á·ááŸááá²á·áááºá áá¯ááºáá«áááºá áá®ááá¯áá»áá¯áž áá áºáá¯áá¯ááᯠááá¯áá·áºáá¬áᬠááœá±ážáá¬á ááá°áá²á· áá¬ááºáááºážáá«á ááá¯á·áá±á¬áº áááºážááẠá¡ááŒá¬ážáá°áá»á¬ážááá¯ááºááᯠáá±á·áá¬ááŒá®áž áá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºá¡áá¬áá áºáá¯áá¯ááᯠáááŸááá¬á á±ááẠáá°áá®áá±ážááá·áº ááŸáááŒá®ážáá¬ážááŒá±ááŸááºážáááºážáá»á¬ážááᯠááŒááºáá¯ááºáá±ážáá«áááºá
áááºáááŸááá±á¬ááŸá¯á¶á·áá±á¬áºááŸá¯ááŸáá·áº áááºá áááºááááá¬ážááááá·áºáá¯á¶á á¶áá»á¬ážááẠáá±á¬á·ááºáá²áá±ážáá¬ážáá°á¡ááŒá Ạááá·áºááá¯ááŒá±á¬ááºážáá²á á±áááºááŒá áºáááºá áááºá¡ááŒá²áááºážá¡áá¯á¶ážááŒá¯áá±ááá·áº ááŸá±á¬áºá¡áááºááá¬áá áºáá¯á¡ááŒá Ạáááºááœá±ážáá±á·ááŸáááá·áº á¡á¶á·ááŒááœááºá á¬ááŒáá·áºááá¯ááºááẠááŸá±á¬áºááá¬ááœáẠáá¯á¶ážáá¡áá¯ááºááá¯ááºáá±á¬áºáááºáž ááŒá¿áá¬ááᯠáá±á«á·áá±á«á·áá«ážáá«ážááŸáá·áº á¡áááºážá¡ááŒá áºáá»áá» ááŒá±ááŸááºážáá±ážáááºááᯠáááºááœá±á·áááá·áºáááºá
áá áºáá«áá áºáá¶ááœáẠáááºááẠáá¯ááºááᯠáá áºááá·áºááŒá®ážáá áºááá·áº ááœá²ááŒááºážá áááºááŒá¬áᬠáá¯ááºááᯠáá»á±á¬áºááœá¬ážááááºááŒá áºáá±á¬áºáááºážá á€áááºážááŒáá·áº áá±ážáááºááŒá®áž áááááºáááºáž ááŒá±ááŸááºážáá»á¬ážááŒáá·áº ááœá±á·áá»á¬ážááŒááºážááŒáá·áº á á¬áá±ážáá°á ááŒá±ááŸááºážáá»ááºáá®ááá¯á· ááŒááºááœá¬ážááá¯ááºáá«áááºá áááºážááẠcoding áá¯ááºáááºážá ááºáá²ááá¯á· ááá¯ááá¯áááºááŸáá¯ááºážá áœá¬ ááá¯ážáááºážááá¯ááºá á±ááŒá®áž ááá·áºááá¯ááºááá¯ááºááŒá±ááŸááºážáá»ááºáá»á¬ážááᯠáááŸááá¬á á±ááẠááá¯ááá¯áá¯á¶ááŒááºááŸá¯áá±ážáááºááŒá áºáááºá
áááááœá± áá²á· ááááá¯á¶áž á¡áá¯ááºá áá¯ááºáá¯ááºážááá±á¬á· ááá·áºá ááºáá²á· ááŸá±á¬áºááá¬áá²á·áá°áá¯á¶ááááºá ááá¯á·áá±á¬áẠáááºážááá¯á·ááẠáá°áá®áá±á¬ááŒááºáá±á«áºááŸá¯áá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶áá¬ážááŒá±á¬ááºáž ááááŸááá²á·áááŒá®áž áá»áœááºá¯ááºááááá¯ááááºáá±á¬áááẠáá±á¬ááºááá¯ážáá»ááœá¬ážáááºá ááá¯á·ááŒá±á¬áá·áº áá¯ááºážáá±á«áºááá¯ááŸá¯áá»á¬ážá០áá»áœááºá¯ááºááá¯á·ááᯠáááºáááºááẠáááºááœááºááá·áº áá¯á¶á á¶ááᯠáá¯ááºážáá±á«áºááá¯ááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á áááºážááá¯ááºááá¯áẠá¡áá±á¬ááºá¡ááẠáá±á¬áºáá±ááŒááºážááŒá áºáááºá
áá«á áá®ááá á¹á ááᯠááá°áá®áá²á· áá»ááºáá¯á¶ážááœá±áá²á· ááŒáá·áºááá¯á· áá°áá®áá±ážáá²á·ááŒá®áž áá«á áá«á·ááŸá±á·ááŸá¬ ááœá²ááŸá¬ážáá±áá²á· áá¯ááºá¡ááá¯ááºážá¡á ááá¯ááºáá°ážá áá«á·ááááŸá¬ áááºáá±á¬á·á០áá¬ážááááºááá¯ááºáá²á· áá¬ážááŒá áºáá¬ážáá²á· ááŸá¯ááºááœá±ážááŸá¯ááœá±ááᯠáá¬ážáááºáá¬á á±áááºá áá«ááœá±áᬠáááá»ááºá áááºááŒááºážááŒááŸá¯áá²á· áááºááŸáá¯ááºážá áœá¬ ááŸá áºááŒáŸá¯ááºááŸá¯ááŒá±á¬áá·áº ááŒá¿áá¬áááŸááá² áá¬ážáááºááá¯ááºáá²á· áá¯á¶á á¶ááœá±áá»ááºážáá«áá²á á€áááºááŸá¬ áá°ááá¯á·ááẠáá¯ááºáá¯ááºááẠáááºáá°ááŒá®áž áá±á¬á·ááºáá²áá±ážáá¬ážáá°áá»á¬ážá¡ááŒá ẠááŒá®ážááœá¬ážáá¬áá¯á¶ááŒá áºáááºá
á€áá®ážááᯠááŒááºáááºáá®ááœááºáá«á
ááá¯á·ááŒá±á¬áá·áº ááŸá±á·áááºááŒá®áž áá®ážáá»á¬ážááᯠááŒááºáááºáá®ááœááºáá«- ááá·áºááá¯ááºááá¯ááºáá±áᬠbinding áá¯ááºááá¯áá±ážáá«á ááŒááºááœááºážááŒá
áºááááá
áºáá¯áááºáá®ážáá« ááá¯á·ááá¯áẠááá·áºááá¯ááºááá¯ááºááŒááºáááºá
á®áá¶ááá·áºááœá²ááŸá¯ááŒá±ááŸááºážáá»ááºááᯠááŒá¯áá¯ááºáá«á
á€á¡áá¬á¡á¬ážáá¯á¶ážááá¯áááºáá°áá»áŸá¡áá¯á¶ážáááŒá¯áááºá¡áá±ážáááŒá®ážáá« - ááá¯á·áá±á¬áºááá¯áááºáááºááá¯á·ááŒá¯áá¯ááºááááºááá¯áááááºá áááºáááá¯ááºááá¯ááºááá±á¬áá»ááºáá»á¬ážááœáẠááá¯ááá¯á·áá±á¬ááá¯ážáááºááŸá¯áá»á¬ážááᯠáá±á¬ááºááá¯ááºážááœááºá¡áá¯á¶ážááŒá¯áááºá¡ááœáá·áºá¡áá±ážááá«áá áá±áá¯áá»á¡á¬ážááŒáá·áº áá±á¬ááºážááœááºáá«áááºá áááºááẠáááºážááá¯á·ááᯠááœá¶á·ááŒáá¯ážááá¯ážáááºá
á±ááŒá®áž á¡ááŒá¬ážá¡áá¬áá
áºáá¯áá¯ááᯠáááºáá°ááá¯ááºáááºááŒá
áºáááºá
á€áá±áá¬ááœáẠá¡áááá¡áá»ááºááŸá¬ ááá·áºáá¯ááºááᯠáá¯ááºáá¯ááºáá±ážááá¯á· áá±ážááá¯á·áááºááá¯ááºáá² á¡áá
áºáá
áºáá¯ááᯠáá±á·áá¬áááºááŒá
áºáááºá ááŸáááŒá®ážáá¬ážááŒá±ááŸááºážáá»ááºáá
áºáá¯ááᯠáááºááá¯ááºááá¯ááºá¡áá±á¬ááºá¡áááºáá±á¬áºáá±ážáá¬ážááŒááºážááẠá¡áá±á¬ááºážáá¯á¶ážáááá¯ááááºáá¬áá»á¬ážáá¶á០áááºáá°ááẠá¡áá±á¬ááºážáá¯á¶ážáááºážáááºážááŒá
áºááŒá®áž áááºáá¡áááºá¡áá»ááºážáá»á¬ážááᯠááŒáŸáá·áºáááºáá«á
source: www.habr.com