При­вет­ствую. Се­год­ня я хо­чу пред­ста­вить свое пер­вое расши­ре­ние (са­мый де­биль­ный пере­вод сло­ва extension) для брау­зе­ра Google Chrome. Я когда-то эту по­дел­ку гугла облил с ног до го­ло­вы дерь­мом, но вре­ме­на из­ме­ни­лись и те­перь хром мой основ­ной брау­зер до­ма, на ра­бо­те и да­же на iMac-е, где он за­ме­нил тор­моз­ной фа­ер­фокс с уродли­вым рен­де­ри­ном и род­ной Safari.

Но, бли­же к де­лу. День на­зад мне по­че­му-то стук­ну­ло на­пи­сать ка­кой-то extension. Идея при­шла са­ма со­бой, когда си­дя­щий за спи­ной то­ва­рищ (не ах­тунг) спро­сил, а когда же вый­дет но­вая се­рия Хау­са, ко­то­рую мож­но бы­ло бы по­смот­реть под пив­ко. По­гуглил - для хро­ма та­кой шту­ки не­бы­ло и вот за па­ру дней вы­ка­тил уже го­то­вую вер­сию. Про­шу лю­бить и жа­ло­вать, Show Forecast. Про­стой ди­зайн, на­строй­ка за 10 се­кунд и у вас уже есть своя лич­ная про­граммка лю­би­мых се­ри­а­лов. Скрин­шо­ты, ссыл­ку на за­груз­ку и бо­лее по­дроб­ное опи­са­ние по­жно найти на стра­ни­це до­пол­не­ний гугла.

Те­перь па­ра слов о тех­ни­че­ской ча­сти. Я, as always, по­пы­тал­ся вы­учить что-то но­вое. Как из­вест­но, все до­пол­не­ния для Chrome пи­шут­ся ба­наль­но на javascript + html. В по­дроб­но­сти про­цес­са я углуб­лять­ся не бу­ду, все и так от­лич­но рас­пи­са­но в офи­ци­аль­ном ма­нуале, про­сто па­ра слов об ин­терес­ных ве­щах. В драф­тах html5 по­яви­лись много но­во­го и ин­но­ва­ци­онно­го, а в том чис­ле и storage, ко­то­рый при­зван за­ме­нить ку­ки­сы для хра­не­ния дан­ных client-side. В хро­ме ре­а­ли­зо­ва­ны 2 под­си­сте­мы хра­не­ния: web storage (и то толь­ко localStorage в ви­де пере­мен­ной-мас­си­ва) и web database. В де­та­ли пер­во­го углуб­лять­ся не бу­ду, это обыч­ное key-value хра­ни­ли­ще для integer и string (bool,float,double,array etc - все это по typeof в сто­ре­дже отда­ва­ло string), а вот вто­рой ме­ха­низм на­много ин­терес­нее, так как пред­став­ляет со­бой пол­но­цен­ный sqlite вну­три брау­зе­ра. Да-да, те­перь в js мож­но пи­сать запро­сы на язы­ке sql. Все это ре­а­ли­зо­ва­но на те­ку­щем эта­пе до­ста­точ­но сы­ро, тран­зак­ции в БД яв­ляют­ся ас­син­хрон­ны­ми без ва­ри­ан­тов. Ре­зультат про­сто отда­ет­ся в callback функ­цию. При­чи­на это­го по­нят­на - нам не нуж­ны за­ви­са­ния брау­зе­ра, но вот на­пи­са­ния ко­да с несколь­ки­ми по­сле­до­ва­тель­ны­ми запро­са­ми это услож­ня­ет и за­медля­ет. Код extension-а я отдель­но вы­кла­ды­вать не бу­ду, ко­му ин­терес­но - ка­чайте crx файл, ме­няй­те расши­ре­ние на zip и смот­ри­те са­ми. Код по­ка очень грязный, если мне бу­дет и дальше это ин­терес­но, ли­бо же на на этот пла­гин бу­дет спрос, то не­пре­мен­но от­ре­фак­то­рю. В лю­бом слу­чае без это­го на те­ку­щей вер­сии пла­ни­ру­е­мую i18n ин­тер­на­ци­о­на­ли­за­цию бу­дет очень неу­доб­но вво­дить. Бу­дут во­про­сы, за­да­вайте без за­зре­ния со­ве­сти на стра­ни­це мо­ду­ля.