Доделал режим исследования — плагин для google chrome.

Плагин для google chrome — позволяет сохранять вебстраницы со связями в goldfish (goldfish.meteor.com).

Инструкция по установке:

  1.  Скачиваем файл отсюда
  2. Сохраните файл расширения в любую папку или на рабочий стол.
  3. Идем в «Настройки» -> «Дополнительные инструменты» -> «Расширения»
  4. Перетащите сохраненный файл расширения «helper_last.crx» на страницу расширений.
  5. Нажмите кнопку «Добавить».
  6. После этого появится значок GoldFish (рыбка в панели расширений)

Можно поставить плагин из исходников — отсюда.

Далее плагин нужно настроить.

 

Для этого кликаем правой кнопкой мышки на значок «рыбки», в выпадающем меню выбираем «Параметры».

Скопировать и вставить поля Base url, Authorization token, UserId.

Там же есть краткая инструкция:

1. чтобы начать исследование нужно, указать имя плота и нажать кнопку Start в выпадающем окне плагина
2. После этого создается плот
3. На него нужно добавить страницу, кнопкой Add (в том числе и первую страницу, при Start станица не добавляется)
4. После этого на данный плот добавится нодшейп
5. Все переходы из этой вкладки будут также сохраняться (со связями)
6. Если нужно добавить не связанную вкладку — просто еще раз нажать кнопку Add
7. Чтобы закончить исследование нужно нажать кнопку Stop

 

Плагин это основное, что сделано, но не единственное  — например, я победил замыкания — практически по всем задачам, которые запускались по крону.

пример

@getWebPageAnnotations = ->
  console.log '@getWebPageAnnotations'
  for user in Meteor.users.find('profile.hypothes': '$exists': true).fetch()
    nodes = Nodes.find(
      proccessed_by_hypothes: $ne: true
      external_type: 'url').fetch()
    for node in nodes 
      Meteor.http.get "https://...", (err, res) ->
        res = JSON.parse(res.content)
        console.log res
        for token in res.rows
          ...
          createLink('annotation', node._id, nodeTo, node.users, 'auto')

Как видим, тут идет итерация по юзерам, потом по нодам, а потом для каждого нода делается Http запрос.

В таком виде работало неверно, в node всегда записывалось последнее значение.

Исправляется через применение функции.

@getWebPageAnnotations = ->
  console.log '@getWebPageAnnotations'
  for user in Meteor.users.find('profile.hypothes': '$exists': true).fetch()
    nodes = Nodes.find(
      proccessed_by_hypothes: $ne: true
      external_type: 'url').fetch()
    for node in nodes 
      fn = ((node) -> 
        Meteor.http.get "https://...", (err, res) ->
          res = JSON.parse(res.content)
          console.log res
          for token in res.rows
            ...
            createLink('annotation', node._id, nodeTo, node.users, 'auto')
      )(node)

Тут мы объявляем функцию fnв цикле и тут же вызываем ее с параметром node, таким образом node фиксируется для каждой итерации.

Таких ошибок, к сожалению, у меня было много.

 

Что еще мешало вести все заметки в GoldFish — все начинало тормозить из-за того, что ризонер и прочее создавал много нодов. Часть ошибок было связано с замыканиями (см выше), а часть с тем, что не было разделения на ноды созданные вручную и автоматом.

Опять же, наивная ошибка: получалось, что добавление нового нода с типом урл, могло вызвать волну добавлений нодов ризонером.