Обсуждение Викиучебника:Популярные страницы/2014

Материал из Викиучебника — открытых книг для открытого мира
Перейти к навигации Перейти к поиску

Количество просмотров учебников?[править]

Было бы полезно также формировать сводку популярности учебников — учитывая при этом все их подстраницы. Так, ограничившись только лишь приведенными на странице данными по популярным подстраницам, можно сформировать следующую «десятку популярнейших».

Как видно, без учета вклада подстраниц, популярность одностраничных учебников оказывается заметно завышенной.

Просмотров Подстраниц Учебник
658 Microsoft Excel
645 2 Python
580 12 Ruby
498 11 Реализации алгоритмов
452 8 Java
409 8 Язык Си в примерах
406 Общая экономическая теория
364 5 Порт
354 Сборка кубика Рубика
304 Vim

Ivan Shmakov (ов) 06:35, 17 апреля 2015 (UTC)

Я думаю, что это трудно реализуемо. Да и зачем? Это статистистика популярных страниц (не учебников) за прошлый год. Тот же учебник Реализации алгоритмов сейчас активно пишется и дополняется. Я одного не могу понять: почему так популярен учебник Microsoft Excel? Oleg3280 (обсуждение) 15:18, 18 апреля 2015 (UTC)
Видимо, миллионы леммингов точно знают, что делают? )Fantom78 (обсуждение) 15:28, 18 апреля 2015 (UTC)
Прошу соблюдать серьёзный стиль общения. Oleg3280 (обсуждение) 17:02, 18 апреля 2015 (UTC)
  1. В каком смысле «трудно реализуемо»?
  2. Я надеюсь, что в начале следующего года статистика будет обновлена по данным за 20142015 г.
  3. AIUI, ПО Excel упоминается в государственных образовательных стандартах — во всяком случае в РФ. Ни Python, ни Ruby, ни Java этим свойством не обладают.
  4. С другой стороны, если учесть данные по всем подстраницам (а не только популярным), подозреваю, что на первое место вполне могут выйти учебники Ruby и Python.
Ivan Shmakov (ов) 16:48, 18 апреля 2015 (UTC)
Смею заметить коллега, что на ПО от фирмы Майкрософт в плане документооборота не существует стандартов. А вот на открытые форматы -- существует. И даже есть программа перехода на СПО утверждённая правительством РФ. Так что, я бы примечание на этой страничке добавил, мол не тратьте время люди добрые, Эксель -- дело гиблое)))) Что касается python и Ruby, имхо для обучения с натяжкой может подойти только первый по многим соображениям. Хотя надо понимать -- это попса. Fantom78 (обсуждение) 16:52, 18 апреля 2015 (UTC)
Прошу соблюдать серьёзный стиль общения. Oleg3280 (обсуждение) 17:02, 18 апреля 2015 (UTC)
Я прошу прощения за такой стиль общения, но немного иронии не позволяет мне скатиться по такому, имхо, не очень существенному вопросу в "холи вар". Видимо, это обсуждение изначально не для меня. ) Fantom78 (обсуждение) 17:11, 18 апреля 2015 (UTC)
Так это и есть статистика за 2014 год. [1] (эта ссылка на странице статистики и на общем форуме). Oleg3280 (обсуждение) 16:54, 18 апреля 2015 (UTC)
Прошу прощения; имел в виду, разумеется, 2015 г. — Ivan Shmakov (ов) 18:55, 18 апреля 2015 (UTC)
Автор статистики — участник Emaus. Oleg3280 (обсуждение) 16:57, 18 апреля 2015 (UTC)

FTR, у меня в данный момент нет возможности загрузить для обработки порядка 40 GiB «первичных» данных. (К сожалению, отдельные данные по конкретным проектам не размещены на сервере. Еще хуже то, что данные упорядочены по коду языка, а значит информация по русскоязычным проектам появляется ближе к концу .gz-потока.)

Тем, у кого такая возможность есть, предлагаю следующий код на Perl 5. (Может быть использован в форме $ zcat -- pagecounts-2014????-??????.gz | perl -- wikistats.perl > stats.2014. NB: в данной редакции, код не выполняет отсечение страниц вне основных пространств.)

### wikistats.perl

use common::sense;
use English;

require Encode;
require Encode::Locale;
require URI::Escape;

foreach my $io (\*STDOUT, \*STDERR) {
    binmode ($io, ((-t $io)
                   ? ":encoding(console_out)" : ":encoding(locale)"))
        or die ();
}

my (%by_page, %by_book, %book_pages);

## FIXME: the <> form is generally unsafe
while (<>) {
    next
        unless (/^ru\.b\b/i);
    chomp ();
    my ($w_unused, $page_enc, $count, $octets_unused)
        = split (" ", $_, 4);
    my $page
        = Encode::decode_utf8 (URI::Escape::uri_unescape ($page_enc));
    if (index ($page, "\N{REPLACEMENT CHARACTER}") >= 0) {
        warn ("W: Failed to decode page name in: ", $_, "\n");
        next;
    }
    $page
        =~ y/_/ /;
    my ($book)
        = split (/\//, $page, 2);
    $book_pages{$book}++
        unless (exists ($by_page{$page}));
    $by_page{$page}
        += $count;
    $by_book{$book}
        += $count;
}

my @pages
    = sort { $by_page{$b} <=> $by_page{$a}; } (keys (%by_page));
my @books
    = sort { $by_book{$b} <=> $by_book{$a}; } (keys (%by_book));
print ("{| class=\"wikitable sortable\"\n",
       "! Views\n",
       "! Pages\n",
       "! Book\n");
foreach my $book (@books[0 .. 9]) {
    print ("|-\n",
           "| ", $by_book{$book},
           " || ", $book_pages{$book},
           " || [[", $book, "]]\n");
}
print ("|}\n\n",
       "{| class=\"wikitable sortable\"\n",
       "! Views\n",
       "! Book\n",
       "! Page\n");
foreach my $page (@pages[0 .. 9]) {
    my ($book, $sub)
        = split (/\//, $page, 2);
    print ("|-\n",
           "| ", $by_page{$page},
           (defined ($sub)
            ? (" || [[", $book, "]]",
               " || [[", $page, " |", $sub, "]]")
            : ("\n| colspan=2 | [[", $page, "]]")),
           "\n");
}
print ("|}\n");

### wikistats.perl ends here

Пример вывода (для pagecounts-20150418-040000.gz) нижеследует.

Views Pages Book
33 1 HandyCache
27 5 Ruby
19 1 Настройка роутера WL500g Premium
17 13 Реализации алгоритмов
15 15 Служебная:Вклад
12 12 Служебная:Ссылки сюда
10 3 Японский язык
10 1 Заглавная страница
10 1 Microsoft Excel
9 1 Общая экономическая теория
Views Book Page
33 HandyCache FAQ
21 Ruby Сети
19 Настройка роутера WL500g Premium
10 Microsoft Excel
10 Заглавная страница
9 Общая экономическая теория
5 Vim
5 Java
5 Heroes of Might and Magic III Города и расы
5 Японский язык Урок 1

Ivan Shmakov (ов) 18:55, 18 апреля 2015 (UTC)