Викитека:Администрирование: различия между версиями

Содержимое удалено Содержимое добавлено
новая тема
Строка 1:
{{Викитека:Форум/Шапка|ЗКА}}
== Алгоритмы для шаблонов АП ==
Хоть сейчас не участвую в русской Викитеке, и возвращаться не собираюсь (по крайней мере, в ближайшее время), решил написать этот топик в этом разделе.
 
В своё время, когда я только-только начинал работать в Викитеках, я потратил довольно много времени, чтобы разобраться с разными нюансами копирайтных законов, — как российских (которым вынуждена подчиняться русская Викитека, и будут вынуждены подчиняться Викитеки на языках народов России), так и американских (по которым функционирует вообще весь фонд Викимедиа). И мне доводилось по поводу этих нюансов пообщаться с администратором (сейчас неактивным) [[Участник:Hinote|Hinote]], и в ходе переписки с ним мне стало видно, что те "много букав" которые неизбежно возникают в моих постах при пояснении копирайтных обстоятельств, ему как-то не очень понятны... И после того, как он изъявил своё желание "перелопатить" шаблоны АП, с учётом по возможности всех-всех-всех копирайтных обстоятельств — как американского копирайта, так и российского — у меня возникло желание ему в этом помочь своими приобретёнными познаниями по этим вопросам. Причём, видя что громоздкое словесное описание от меня читать ему, наверно, будет слишком тяжко, я решил, что ему может быть будет как-то понятнее описание, составленное на ''языке программирования'', т. к. где-то в переписке на форуме я видел что он говорил что-то навроде того, что работает сейчас программистом (либо работал раньше). И я начал пытаться делать такое описание в коде на знакомом мне языке C++ (я сам не профессиональный программист, хотя работаю в IT и по долгу службы мне приходится взаимодействовать с программистами, и соотв. с программированием сколько-то знаком). Но потом участник Hinote как-то пропал из Викитеки, и я соответственно тот код тоже забросил. И вот недавно, разбирая на компьютере старые файлы, наткнулся в том числе и на него (на этот код), и вспомнил, что ранее в РуВТ некоторые участники, например [[Участник:Badger M.|Badger M.]] (покинувший Викитеку, как и я, но это сейчас не суть), и [[Участник:VadimVMog|VadimVMog]], писали что-то навроде — что, в связи с URAA-restoration, было бы неплохо обновить шаблоны АП, чтобы в них высвечивалось для таких-то авторов, что хоть их работы и вышли в PD по российским законам, но для них тем не менее работы изданные после 1922 находятся не в PD в США, и соответственно в Ру-ВТ публиковать эти работы пока нельзя. Вспомнив про это, я решил-таки доделать этот код, и потестить немного, — подумал что может быть нынешним участникам это пригодится... Доделал, потестил, — вроде всё нормально работает; и решил выложить сюда. Хоть сам Hinote уже не участвует в проекте, но насколько я знаю, часть администраторов тоже знакомы с программированием — [[Участник:Lozman|Lozman]] вроде умеет пишет скрипты на Lua, и [[Участник:Sergey kudryavtsev|Sergey kudryavtsev]] вроде как тоже профессиональный программист — может для них не составит труда аккуратно переписать всё это, например, на Lua и использовать в ВТ — если конечно есть такая возможность и алгоритм выглядит для них понятным и не вызывающим возражений. В общем, вот этот код (в сворачивающемся блоке, дабы не вынуждать созерцать его тем, кому он не интересен), сделан в виде двух функций (одна для получения текста согласно российским законам, вторая — для получения текста согласно американсим; теоретически можно сделать из них Lua-модули, и вызывать их в соотв. местах шаблона АП), добавил для понятности комменты кое-где:
 
{{Начало скрытого блока|Заголовок=printCopyrightRU + printCopyrightUS|Рамка=1px}}
<source lang="cpp">
// currentYear - текущий, нынешний год
// dYear - год смерти
// rYear - год реабилитации; если её не было то можно передавать 0
// isWW - является ли участником / работником во время Великой Отечественной
void printCopyrightRU(int currentYear, int dYear, int rYear, bool isWW)
{
int baseYear = rYear > dYear ? rYear : dYear; // вычисляется год от которого отсчитывается срок охраны
int copyrightTerm = isWW ? 74 : 70; // срок охраны
int endProtectionYear = baseYear + copyrightTerm + 1; // год когда охрана работ, опубликованных до смерти / реабилитации, заканчивается
if(currentYear < endProtectionYear)
std::cout << "В соответствии со статьёй 1281 ГК РФ произведения этого автора, "
<< "впервые опубликованные (или обнародованные) после 7 ноября 1917 года "
<< "(по новому стилю) на территории Российской Федерации или стран, "
<< "правопреемником которых является Российская Федерация (СССР, РСФСР, "
<< "Советская Россия), перейдут в общественное достояние 1 января "
<< endProtectionYear << " года." << std::endl;
else
{
int firstPostmortemProtectionYear = currentYear - copyrightTerm;
int lastPostmortemProtectionYear = baseYear + 70;
int firstPublicatorOwningYear = currentYear - 25; // год начиная с которого действует "ИП публикатора" (25 лет с публикации)
if(currentYear <= lastPostmortemProtectionYear || lastPostmortemProtectionYear >= firstPublicatorOwningYear)
{
std::cout << "Произведения этого автора, впервые опубликованные до 1 января "
<< firstPostmortemProtectionYear
<< " года, находятся в общественном достоянии в России." << std::endl;
}
else if(firstPostmortemProtectionYear <= lastPostmortemProtectionYear)
{
int gapPDstart = lastPostmortemProtectionYear + 1;
int gapPDend = firstPublicatorOwningYear - 1;
if(gapPDstart != gapPDend)
std::cout << "Произведения этого автора, впервые опубликованные до 1 января "
<< firstPostmortemProtectionYear << " года, либо с 1 января "
<< gapPDstart << " года по 31 декабря " << gapPDend
<< " года, находятся в общественном достоянии в России." << std::endl;
else
std::cout << "Произведения этого автора, впервые опубликованные до 1 января "
<< firstPostmortemProtectionYear << " года, либо с 1 января по 31 декабря "
<< gapPDstart << " года, находятся в общественном достоянии в России." << std::endl;
}
else
std::cout << "Произведения этого автора, впервые опубликованные до 1 января "
<< firstPublicatorOwningYear
<< " года, находятся в общественном достоянии в России." << std::endl;
}
}
 
void printCopyrightUS(int currentYear, int dYear, int rYear1996, bool isWW)
{
int baseYear = rYear1996 > dYear ? rYear1996 : dYear;
int copyrightTerm = isWW ? 54 : 50;
int endProtectionYear = baseYear + copyrightTerm + 1;
const int uraaDateYear = 1996;
if(endProtectionYear <= uraaDateYear)
{
int firstPostmortemProtectionYear = uraaDateYear - copyrightTerm;
std::cout << "Произведения этого автора, впервые опубликованные до 1 января "
<< firstPostmortemProtectionYear
<< " года, либо после 31 декабря 2002 года, находятся в общественном достоянии в США." << std::endl;
}
else if(dYear + 71 <= currentYear)
std::cout << "Произведения этого автора, впервые опубликованные до 1 января 1923 года, "
<< "либо после 31 декабря 2002 года, находятся в общественном достоянии в США." << std::endl;
else
std::cout << "Произведения этого автора, впервые опубликованные до 1 января 1923 года, "
<< "находятся в общественном достоянии в США." << std::endl;
}</source>
{{конец скрытого блока}}
 
Если что-то непонятно и отдельные места непонятны — могу попробовать ответить, пишите вопросы здесь, буду некоторое время следить за этой темой... В общем, если у администраторов, или просто "технически подкованных" участников, получится как-то приспособить этот код для нужд РуВТ, — то хорошо; если же нет — то тогда его, как говорится, — "в топку"... --[[Участник:Nigmont|Nigmont]] ([[Обсуждение участника:Nigmont|обсуждение]]) 20:32, 8 апреля 2018 (UTC)
 
== Удалите ==
Ошибочно созданная страница [[Мы все войдём в Отцовский дом/Гусли 1911 года (ВТ)]]. [[Участник:Радион|Радион]] ([[Обсуждение участника:Радион|обсуждение]]) 11:00, 27 марта 2018 (UTC)