Coder Social home page Coder Social logo

clio's Introduction

I am Ukrainian. While Russian army invades Ukraine, kills, rapes, destructs, and steals, I am in Kharkiv, my homecity

I am almost useless but I am volunteering to help those in need, and I am staying.

UPD: I've joined Ukrainian Armed Forces in March 2023.

🇺🇦 HELP UKRAINE WIN 🇺🇦

Let the text below become relevant again in other times. image


Developer and writer from Ukraine. Ruby programming language committer.

Mostly interested in lucid code and open data, and writing a Substack about it. The range of “my” topics are united by an urge to understand and explain. Or, the problems of knowledge acquiring (with code) and expressing meaning (with code).

Working on my first Ruby book, working title "41 Ruby Intuitions".

Recent/interesting work

Ruby programming language

Open data

  • Working to an API to the world's common knowledge (based on Wikipedia/Wikidata, but not limited to it):
    • First (discontinued) attempt: molybdenum-99 set of Ruby projects
    • Second (current) attempt: WikipediaQL Python library; writing on it: 0, 1, 2, TBC
  • Spylls: Python spellchecker, almost full port of Hunspell; an explanatory port to understand/show how it works. Series of articles: Rebuilding the spellchecker

Some Ruby libraries

  • time_calc: idiomatic, no-monkeypatching Time/Date math
  • saharspec: set of extensions for RSpec for DRYer specs
  • the_schema_is: ActiveRecord models annotation done right
  • yard-junk: YARD docs linter
  • whatthegem: Console tool for fetching information about gems (stats, usage, recent changes)
  • sho: Experimental "post-framework" views library

Fun and experiments


Full list of projects of various years

clio's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

clio's Issues

падает на индексировании

выглядит так:

23 ноя 21:35:01 INFO: Начато индексирование /Users/mbravo/Sources/clio/result/mbravo
23 ноя 21:35:01 INFO: индексирование /Users/mbravo/Sources/clio/result/mbravo: папки созданы, читаем записи
/Users/mbravo/Sources/clio/vendors/json/common.rb:146:in encode': "\xD0" on US-ASCII (Encoding::InvalidByteSequenceError) from /Users/mbravo/Sources/clio/vendors/json/common.rb:146:ininitialize'
from /Users/mbravo/Sources/clio/vendors/json/common.rb:146:in new' from /Users/mbravo/Sources/clio/vendors/json/common.rb:146:inparse'
from /Users/mbravo/Sources/clio/lib/indexator.rb:172:in block in run' from /Users/mbravo/Sources/clio/lib/indexator.rb:169:ineach'
from /Users/mbravo/Sources/clio/lib/indexator.rb:169:in run' from bin/clio.rb:103:inblock in

'
from bin/clio.rb:88:in each' from bin/clio.rb:88:in'

при этом:

pantouflejr:clio mbravo$ ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin12.5.0]

а также при старте говорило:

/Users/mbravo/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.

Пинг по списку

Так как наш дамп может быть более полным, чем то, что мы можем получить из френдфида, то хочется режим «обновление постов по списку»:

  1. Собрать оглавление json-файлов в локальном дампе.
  2. Пропинговать все посты на предмет обновления.
  3. Если пост жив — забрать его новую версию.
  4. Если поста нет — оставить прошлую версию, но пометить её в теле как «удалён». Эти посты можно не пинговать при следующих запусках.
    1. Запустить индексатор для освежения индекса.

Странная работа с бэкслэшами в пути к каталогу

Баг не особо страшный, но для порядка. Вот это:

ruby bin/clio.rb -i -p C:\Users\David\frf-save\__clio -f davidmz

Выдаёт:

01 Apr 16:48:41 WARN: feedinfo.js есть, а записей нету, может быть не всё загрузили?
01 Apr 16:48:41 INFO: Начато индексирование C:\Users\David\frf-save\__clio/davidmz

Если же использовать прямые слэши:

ruby bin/clio.rb -i -p C:/Users/David/frf-save/__clio -f davidmz

То записи находятся и индексация идёт нормально.

Win7 64

Кронджоб-режим для регулярных обновлений

Сейчас даже при использовании отдельных папок создаётся новый дамп на каждый запуск по 10к записей. Но у этого подхода есть проблемы:

  1. Скачивание долго работает.
  2. Архив фида может быть глубже 10 тысяч.
  3. Предыдущие версии дампа могут содержать старые записи за пределами 10к, и в новых версиях их не будет.

Идеальный архив — это все записи из фида на максимальную глубину, с полным индексом тегов и дат.

Для того, чтобы создать такой полный архив, сейчас приходится записи всех дампов (вручную или не очень) копировать в одну большую папку, от старых версий дампов к новым (чтобы обновления постов с комментариями накатывались корректно).

Хочется, чтобы клио при запуске в крон-режиме:

  1. Засасывала обновления из фида (обычно 100-200 постов хватает).
  2. Сложила их в общую папку.
  3. Запустила индексатор.
  4. Сделала гзип общей папки сегодняшней датой (или каждый пятый день, или седьмой).
  5. Пошла спать до следующего дня.

Докапывает до конца, но не останавливается

28 дек 13:37:52 INFO: Загружено 100 записей, начиная с 9700; дата самой старой — '17 февраля 2009 в 19:21'
28 дек 13:37:57 INFO: Загружено 100 записей, начиная с 9800; дата самой старой — '4 февраля 2009 в 15:31'
28 дек 13:38:05 INFO: Загружено 100 записей, начиная с 9900; дата самой старой — '21 января 2009 в 14:08'
28 дек 13:38:10 INFO: Загружено 100 записей, начиная с 10000; дата самой старой — '2 января 2009 в 23:18'
28 дек 13:38:16 INFO: Загружено 100 записей, начиная с 10100; дата самой старой — '2 января 2009 в 23:18'
28 дек 13:38:21 INFO: Загружено 100 записей, начиная с 10200; дата самой старой — '2 января 2009 в 23:18'
28 дек 13:38:27 INFO: Загружено 100 записей, начиная с 10300; дата самой старой — '2 января 2009 в 23:18'

28 дек 13:38:51 INFO: Загружено 100 записей, начиная с 10400; дата самой старой — '2 января 2009 в 23:18'
28 дек 13:38:57 INFO: Загружено 100 записей, начиная с 10500; дата самой старой — '2 января 2009 в 23:18'
^C^C^C

clio.rb -h displays help-text 2 times

$ ./bin/clio.rb -h
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.
Clio — better Friendfeed backup tool.  by zverok and contributors
=================================================================

    -u, --user           Ваш юзернейм
    -k, --key            Remote key для логина, берётся с http://friendfeed.com/remotekey
    -f, --feeds          Фид(ы) для загрузки, список через запятую: user1,group2,user3 (по умолчанию ваш собственный фид)
    -p, --path           Путь для сохранения фидов, по умолчанию папка result, каждый фид будет лежать в <path>/<feed>
    -l, --log            Путь для записи логов (по умолчанию STDOUT)
    -d, --dates          Флаг для добавления текущей даты в имя папки: <path>/<feed>/<YYYY-MM-DD> (для бакапов по расписанию)
    -i, --indexonly      Только проиндексировать (данные уже загружены)
        --depth          Глубина загрузки (количество новых записей); по умолчанию — максимально возможное
        --zip            Упаковать в архив <path>/<feed>-<YYYY-MM-DD>.zip
    -h, --help           Display this help message.
    -u, --user           Ваш юзернейм
    -k, --key            Remote key для логина, берётся с http://friendfeed.com/remotekey
    -f, --feeds          Фид(ы) для загрузки, список через запятую: user1,group2,user3 (по умолчанию ваш собственный фид)
    -p, --path           Путь для сохранения фидов, по умолчанию папка result, каждый фид будет лежать в <path>/<feed>
    -l, --log            Путь для записи логов (по умолчанию STDOUT)
    -d, --dates          Флаг для добавления текущей даты в имя папки: <path>/<feed>/<YYYY-MM-DD> (для бакапов по расписанию)
    -i, --indexonly      Только проиндексировать (данные уже загружены)
        --depth          Глубина загрузки (количество новых записей); по умолчанию — максимально возможное
        --zip            Упаковать в архив <path>/<feed>-<YYYY-MM-DD>.zip
    -h, --help           Display this help message.

ERROR: Непонятно что скачивать. Укажите параметр --feeds или --user

load.rb падает при попытке скачать юзерпик с remotekey

% ruby bin/load.rb kkapp !!!здесь_remotekey!!!
/home/kappa/work/clio/vendors/simplehttp.rb:57: #Net::HTTPBadRequest:0xb7766440 : 400 : http://friendfeed-api.com/v2/picture/kkapp?size=large (RuntimeError)
from /home/kappa/work/clio/vendors/simplehttp.rb:297:in call' from /home/kappa/work/clio/vendors/simplehttp.rb:297:inhandle_response'
from /home/kappa/work/clio/vendors/simplehttp.rb:323:in do_http' from /home/kappa/work/clio/vendors/simplehttp.rb:388:inget'
from /home/kappa/work/clio/lib/frf_client.rb:40:in raw_request' from /home/kappa/work/clio/lib/frf_client.rb:23:inuserpic'
from /home/kappa/work/clio/lib/frf_client.rb:52:in `extract_feed'
from bin/load.rb:15

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.