Як зробити використання Remember The Milk у Chrome

Після реєстрації і перших 15 хвилин захоплення функціоналом, я зрозумів, що використання в браузері мене навряд чи влаштує — зазвичай у моїх сесіях у Firefox досить нескладно заблукати. Звичайно ж, мені захотілося знайти щось на зразок окремої програми для зручної роботи з сервісом. Проте все, що я зумів знайти, або не працювало, або було незручним. Веб-сторінка виявилася кращою за будь-який desktop-додаток! Ну що ж, подумав я — подивимося, чи вийде у мене жити «в Інтернеті».

Після кількох днів використання я дійшов таких висновків:

  • в основному браузері тримати RTM незручно - доведеться використовувати щось інше (IE і Opera відпали з певних причин, тому залишився Chrome, див. наприкінці статті великий update присвячений Firefox)
  • Мрію про окрему програму я реалізував досить просто - створив ярлик на додаток RTM в Chrome
  • Що робити з потенційно можливою відсутністю інтернету — незрозуміло. Ні, я звичайно зрадів підтримці Offline-режиму в самому RTM, але тут же зіткнувся з тим, що для цього потрібен Google Gears, який вже знятий з підтримки. Google Gears я зможу знайти і поставити, але тут з'ясувалося, що Google, не морочаючись, випилили до чортової матері прибрали підтримку Gears з Chrome. Даунгрейдити Chrome я не захотів, знайшов плагін Gears для Firefox. З яким RTM також не працює. Так що оффлайн-робота і подальша синхронізація змін при появі інтернету поки залишається недосяжною мрією.

Очевидні незручності з якими довелося зіштовхнутися мені:

  • Жахливий багаторядковий список зі списків/пошукових вкладок
  • Маленьке та незручне поле для пошуку
  • Відсутність зручної підказки щодо операторів пошуку та введення даних — (?) поруч із вікном введення завдання не вважається, оскільки по-перше: потрібно на нього натискати, по-друге: він затуляє частину даних на екрані

Власне кажучи, моїм пошукам як вирішити ці проблеми і буде присвячена частина статті, що залишилася.

Пошуки срібної кулі

Куля знайшлася, причому досить швидко. Нею виявилося розширення для Chrome під назвою A Bit Better RTM

Зовнішній вигляд RTM із встановленим розширенням влаштовував мене практично на 100%, до того ж, порядок списків у лівій колонці можна було змінювати простим перетягуванням! Я із задоволенням поставив собі розширення (не забувши звичайно поскаржитися на те, що встановити його без реєстрації в Google Market'e неможливо)

Ось що вийшло після встановлення розширення:

milk

Дрібниці життя, чи найцікавіше

Залишалася трохи, оскільки я тільки почав користуватися сервісом, тому активно підлаштовував RTM під себе, і сам підлаштовувався під RTM — мені дуже часто доводилося модифікувати та складати пошукові запити, для подальшого їх збереження в «розумні списки». У зв'язку з використанням RTM як додатків у hrome — додаткових вкладок, у яких RTM відкриває підказки з пошукових тегів — були для мене незручні. Рішення було очевидним — розширити рядок пошуку, благо місце для неї було достатньо, і під ним написати всі необхідні пошукові запити.

Спроби швидко написати власне розширення для Chrome успіхом не мали. Послухавши рекомендації з різних знайдених статей перейменувати завантажену розширення з *.crx в *.zip і вивчити його - я марно намагався це саме розширення завантажити, чого Chrome мені вперто не давав зробити, миттєво встановлюючирозширення і ховаючи від мене навіть назву архіву, що скачується.

Однак я знайшов Stylish - розширення для Chrome, яке дозволяло змінювати css-стилі. Зіткнувшись з тим, що я не можу з його допомогою змінити текст на сторінці, я відмовився від цієї витівки.

Спроба №3 – найвдаліша!

Ще однією думкою було поставити GreaseMonkey, і не страждати, але я все-таки знайшов куди Chrome встановив A Bit Better RTM :) Це виявилася папкаC:\Users\%username%\AppData\Local\Google\Chrome \User Data\Default\Extensions\glcdefibajbglmeelclffdbakgjjjopc\0.0.2.11_0\Після розгляду структури розширення з'ясувалося, що воно використовує jQuery, маленький досвід використання якого у мене вже був. І тут у мене виникла ідея — чи не дописати мені розширення, яке вже маю? Про автоматичне оновлення останнього я не замислювався, тому решта була справою паяльника техніки.

Засуваємо рукави

у папці з розширенням було знайдено manifest.json, з якого стало зрозуміло, що для запуску використовується js\aBitBetterRTM_Loader.js, який у свою чергу підвантажує цілу пачку скриптів, останнім з яких є js/init.js, що містить наприкінці наступний код:

Оскільки я не професійний програміст, я не став морочитися з підпискою на закінчення ініціалізації основного коду самого розширення, навіть якби воно й існувало. Я додав до кінця файлу alert(«Hello!»); і перезавантаживши сторінку, отримав очікуване повідомлення :)

remember

Подальше було вже справді справою техніки.

Корявий код і ніякої магії

в кінці init.js був доданий наступний код:

Однак, якщо ви спробуєте використовувати цей код, на вас чекає розчарування. українські літери відображаються неправильно, через невибраного кодування UTF-8. Як правильно поставити UTF-8 у цьому скрипті я швидко не знайшов, але за допомогою першого ж знайденого кодувальника в html-коди виправив проблему всім відомих «кракозябрів» через неправильне кодування. Але хабрапарсер розумний, він конвертує ці символи на українські літери. тому для реального використання беріть цей код, в якому українські символи записані UTF-8 кодами.

І ось він – довгоочікуваний результат

milk

Рядок пошуку став ширшим, під нею з'явилися типи операторів пошуку, для яких при наведенні мишкою ще й виводяться докладні параметри використання.

Під рядком введення задач — з'явилося завдання-приклад, що містить усі можливі варіанти вказівки параметрів задачі, що дозволяє швидко задавати параметри, не відкриваючи незручний div за допомогою.

Все те саме в Firefox

Вже перед публікацією статті я знайшов для Firefox розширення A Bit Better RTM Як з'ясувалося — воно також піддається модифікації, з наступними відмінностями: завантажуємо розширення (благо FireFox дає можливість завантажити *.xpi за допомогою пункту контекстного меню «Зберегти об'єкт як.» після чого відкриваємо його будь-яким архіватором (реально це zip-архів), розпаковуємо content/init.js і додаємо перед останнім рядком >); той же код що і для Chrome. Запаковуємо змінений файл назад і встановлюємо його у Firefox.

milk
Запаковувалася одна з попередніх версій, тому текст під рядком введення відрізняється від Chrome.

Додаткові посилання:

Хардкорна конфа за С++. Ми запрошуємо лише профі.