Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
465 lines (441 sloc) 34.6 KB
{
"translatorID": "73be930f-5773-41b2-a7a1-37c0eeade92f",
"label": "OZON.ru",
"creator": "Mikhail Akimov",
"target": "^https?://www\\.ozon\\.ru/(context/detail/id/|\\?context=search)",
"minVersion": "3.0",
"maxVersion": "",
"priority": 100,
"inRepository": true,
"translatorType": 4,
"browserSupport": "gcsibv",
"lastUpdated": "2017-01-04 20:51:33"
}
/*
OZON.ru Translator
Copyright (C) 2015 Mikhail Akimov
Copyright (C) 2017 Philipp Zumstein
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function detectWeb(doc, url) {
if (ZU.xpathText(doc, '//div[contains(@class, "bContentColumn")]/script[contains(., "Core.Namespace.exp")]')) {
return "book";
} else if (getSearchResults(doc, true)) {
return "multiple";
}
}
function getSearchResults(doc, checkOnly) {
var items = {};
var found = false;
var rows = ZU.xpath(doc, '//a[@itemprop="url" and contains(@href, "/context/detail/id/")]');
for (var i=0; i<rows.length; i++) {
var href = rows[i].href;
var title = ZU.trimInternal(rows[i].textContent);
if (!href || !title) continue;
if (checkOnly) return true;
found = true;
items[href] = title;
}
return found ? items : false;
}
function doWeb(doc, url) {
if (detectWeb(doc, url) == "multiple") {
Zotero.selectItems(getSearchResults(doc, false), function (items) {
if (!items) {
return true;
}
var articles = [];
for (var i in items) {
articles.push(i);
}
ZU.processDocuments(articles, scrape);
});
} else {
scrape(doc, url);
}
}
function scrape(doc, url) {
var script = ZU.xpathText(doc, '//div[contains(@class, "bContentColumn")]/script[contains(., "Core.Namespace.exp")]');
var start = script.indexOf('{');
var end = script.lastIndexOf('}');
var data = script.substring(start, end+1);
var json = JSON.parse(data);
//Z.debug(json.Capabilities.Capabilities);
var item = new Zotero.Item('book');
item.title = json.NameVm.Name;
for (var property in json.Capabilities.Capabilities) {
var name = json.Capabilities.Capabilities[property].Name;
var value = json.Capabilities.Capabilities[property].Value;//this can be either a text string or an array of values (e.g. publisher, authors)
var role = null;
switch (name) {
//All creatorss are handled the same except that the role
//depends on the label and therefore depending on the
//entrypoint of these cases:
case "Редактор":
case "Редакторы":
if (!role) role = "editor";
case "Переводчик":
case "Переводчики":
if (!role) role = "translator";
case "Автор":
case "Авторы":
if (!role) role = "author";
for (var i=0; i<value.length; i++) {
item.creators.push(ZU.cleanAuthor(value[i].Text, role));
}
break;
case "Год выпуска":
item.date = getValue(value);
break;
case "Издательства":
case "Издательство":
item.publisher = getValue(value);
break;
case "ISBN":
item.ISBN = getValue(value);
break;
case "Язык издания":
item.language = getValue(value, true);
break;
case "Количество страниц":
item.numPages = getValue(value);
break;
case "Серия":
item.series = getValue(value);
}
}
if (json.Description && json.Description.FirstBlock) {
item.abstractNote = ZU.cleanTags(json.Description.FirstBlock.Text);
}
item.complete();
}
function getValue(jsonSnippet, normalize) {
var codes = {
'русский': 'ru',
'английский': 'en',
'французский': 'fr',
'немецкий': 'de',
'итальянский': 'it',
'испанский': 'es'
};
if (Array.isArray(jsonSnippet)) {
return jsonSnippet.map(function(obj) { return obj.Text; }).join(", ");
}
if (normalize) {
var t = jsonSnippet = jsonSnippet.trim().toLowerCase();Z.debug(t);
if (codes[t]) {
return codes[t];
}
}
return jsonSnippet
}
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://www.ozon.ru/context/detail/id/87889/",
"items": [
{
"itemType": "book",
"title": "Язык программирования C++",
"creators": [
{
"firstName": "Бьерн",
"lastName": "Страуструп",
"creatorType": "author"
}
],
"date": "1999",
"ISBN": "9785794000313 9785798901272 9780201889543",
"abstractNote": "Книга Бьерна Страуструпа является каноническим изложением возможностей С++, написанным автором этого популярнейшего языка программирования. Помимо подробного описания самого языка, на страницах книги вы найдете множество доказавших свою эффективность подходов к решению разнообразных задач программирования и проектирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С - совместимом ядре С++, так и современный объектно - ориентированный подход к созданию программных продуктов. Данное третье издание бестселлера было существенно переработано автором. С одной стороны, результатом этой переработки стала большая доступность книги для новичков. С другой стороны, текст обогатился сведениями и техниками программирования, которые могут оказаться полезными даже для многоопытных специалистов по С++. Разумеется, не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явныеприведения типов (cast - операторы) и другие. Книга адресована программистам, использующим в своей повседневной работе С++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка `из первых рук`.",
"language": "ru",
"libraryCatalog": "OZON.ru",
"numPages": "991",
"publisher": "Невский Диалект, Бином",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.ozon.ru/context/detail/id/87972/",
"items": [
{
"itemType": "book",
"title": "Объектно - ориентированный анализ и проектирование с примерами приложений на С++",
"creators": [
{
"firstName": "Автор не",
"lastName": "указан",
"creatorType": "author"
},
{
"firstName": "Грэди",
"lastName": "Буч",
"creatorType": "author"
}
],
"date": "1998",
"ISBN": "9780805353402 9785798900671 9785794000177",
"abstractNote": "Книга Гради Буча, признанного эксперта в области объекто - ориентированной методологии разработки программного обеспечения, содержит классическое изложение вопросов анализа и проектирования сложных систем. В первой части книги автор исследует суть фундаментальных понятий ООП (таких как `класс`, `объект`, `наследование`), анализирует концепции, лежащие в основе объектно - ориентированных языков и методик разработки. Вторая часть содержит подробное описание обозначений (известных как `нотация Буча`), давноуже ставших родными для тысяч разработчиков во всем мире. Здесь же автор делится своим богатым опытом организации процесса разработки программ, дает рекомендации по подбору команды и планированию промежуточных релизов. В третьей части изложенные ранее методы применяются для анализа и проектирования нескольких приложений. На глазах у читателя создается каркас соответствующих систем, принимаются принципиальные проектные решения. Книга будет полезна аналитикам и разработчикам программного обеспечения, преподавателям и студентам высших учебных заведений. По сравнению с первым изданием книга несколько дополнена (что отразилось и в названии), все примеры приведены на языке С++.",
"language": "ru",
"libraryCatalog": "OZON.ru",
"numPages": "560",
"publisher": "Невский Диалект, Бином",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.ozon.ru/context/detail/id/117417/",
"items": [
{
"itemType": "book",
"title": "Применение UML и шаблонов проектирования. Введение в объектно-ориентированный анализ и проектирование",
"creators": [
{
"firstName": "Крэг",
"lastName": "Ларман",
"creatorType": "author"
}
],
"date": "2001",
"ISBN": "9785845901255 9780137488803",
"abstractNote": "Те, кто еще не знакомы с вопросами объектно-ориентированного анализа и проектирования, наверняка планируют освоить эту область знаний. Данная книга станет хорошим путеводителем и позволит шаг за шагом пройти путь от определения требований к системе до создания кода. В книге рассматривается унифицированный язык моделирования UML, который является признанным стандартом для описания моделей и обеспечивает возможность общения между разработчиками. Для иллюстрации всего процесса объектно-ориентированного анализа и проектирования в книге приводится исчерпывающее описание реального примера. В нем показано, как перейти от этапа объектно-ориентированного проектирования к созданию кода на языке Java. Книга рассчитана на читателей с различным уровнем подготовки, интересующихся вопросами объектно-ориентированного анализа и проектирования.",
"language": "ru",
"libraryCatalog": "OZON.ru",
"numPages": "496",
"publisher": "Вильямс",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.ozon.ru/context/detail/id/1335648/",
"items": [
{
"itemType": "book",
"title": "Искусство программирования. Том 1. Основные алгоритмы",
"creators": [
{
"firstName": "Дональд Эрвин",
"lastName": "Кнут",
"creatorType": "author"
},
{
"firstName": "Ю.",
"lastName": "Козаченко",
"creatorType": "editor"
},
{
"firstName": "С.",
"lastName": "Тригуб",
"creatorType": "translator"
},
{
"firstName": "Ю.",
"lastName": "Гордиенко",
"creatorType": "translator"
},
{
"firstName": "И.",
"lastName": "Красикова",
"creatorType": "translator"
}
],
"date": "2015",
"ISBN": "9785845919847 9785845900807 9780201896831",
"abstractNote": "Первый том серии книг \"Искусство программирования\" начинается с описания основных понятий и методов программирования. Затем автор сосредоточивается на рассмотрении информационных структур - представлении информации внутри компьютера, структурных связях между элементами данных и способах эффективной работы с ними. Для методов имитации, символьных вычислений, числовых методов и методов разработки программного обеспечения даны примеры элементарных приложений. По сравнению с предыдущим изданием добавлены десятки простых, но в то же время очень важных алгоритмов. В соответствии с современными направлениями исследований был существенно переработан также раздел математического введения.",
"language": "ru",
"libraryCatalog": "OZON.ru",
"numPages": "720",
"publisher": "Вильямс",
"series": "Искусство программирования",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.ozon.ru/context/detail/id/5531965/",
"items": [
{
"itemType": "book",
"title": "Алгоритмы на C++",
"creators": [
{
"firstName": "Роберт",
"lastName": "Седжвик",
"creatorType": "author"
},
{
"firstName": "А.",
"lastName": "Моргунов",
"creatorType": "translator"
}
],
"date": "2011",
"ISBN": "9785845916501 9780321606334",
"abstractNote": "Роберт Седжвик тщательно переписал, существенно расширил и обновил свою популярную книгу, чтобы получилось современное и исчерпывающее описание важных алгоритмов и структур данных. Вместе с Кристофером Ван Виком он разработал новые реализации на C++, которые выражают эти методы в сжатом, но наглядном виде, а также предоставляют программистам практические средства для их проверки в реальных приложениях. \n \nВ книге представлено много новых алгоритмов, а их объяснения гораздо более подробны, чем в предыдущем издании. Новая структура текста и подробные иллюстрации к нему вместе с сопутствующими комментариями значительно улучшают представление материала. Третье издание также содержит удачное сочетание теории и практики, которые делают работу Седжвика бесценным источником сведений для более чем 250 000 программистов! \n \nВ частях 1–4 книги рассматриваются фундаментальные алгоритмы, структуры данных, сортировка и поиск. В ней приведено подробное описание фундаментальных структур данных и алгоритмов для сортировки, поиска и сопутствующих приложений. Хотя, по сути, материал книги применим к программированию на любом языке, реализации Ван Вика и Седжвика используют естественную связь между классами C++ и реализациями абстрактных типов данных (АТД). В части 5 книги рассматриваются алгоритмы на графах, которые играют все более важную роль во множестве приложений, таких как сетевая связность, конструирование электронных схем, составление графиков, обработка транзакций и выделение ресурсов. Каждая часть содержит новые алгоритмы и реализации, усовершенствованные описания и диаграммы, а также множество новых упражнений для лучшего усвоения материала. Акцент на АТД расширяет диапазон применения программ и лучше соотносится с современными средами объектно-ориентированного программирования. \n \nВ этой книге описаны следующие темы \n Подробное описание массивов, связных списков, строк, деревьев и других базовых структур данных Акцентирование внимание на абстрактных типах данных (АТД), модульном программировании, объектно-ориентированном программировании и классах C++ Более 100 алгоритмов сортировки, выбора, реализаций АТД очереди с приоритетами и реализаций АТД таблицы символов (для поиска) Новые реализации биномиальных очередей, многопутевой поразрядной сортировки, рандомизированных BST-деревьев, скошенных деревьев, слоеных списков, многопутевых trie-деревьев, B-деревьев, расширяемого хеширования и многих других методов Больший объем численных характеристик алгоритмов, позволяющих сравнивать их Более 1000 новых упражнений, которые помогают разобраться в свойствах алгоритмов Полный обзор свойств и типов графов Орграфы и DAG-графы Минимальные остовные деревья Кратчайшие пути Сетевые потоки Диаграммы, примеры кода на C++ и подробные описания алгоритмов Настоящее издание предоставляет программистам полный инструментальный набор для реализации, отладки и использования алгоритмов в широком диапазоне компьютерных приложений.",
"language": "ru",
"libraryCatalog": "OZON.ru",
"numPages": "1056",
"publisher": "Вильямс",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.ozon.ru/context/detail/id/2527036/",
"items": [
{
"itemType": "book",
"title": "Искусство программирования. Том 3. Сортировка и поиск",
"creators": [
{
"firstName": "Дональд Эрвин",
"lastName": "Кнут",
"creatorType": "author"
},
{
"firstName": "В.",
"lastName": "Тертышный",
"creatorType": "translator"
},
{
"firstName": "Игорь",
"lastName": "Красиков",
"creatorType": "translator"
}
],
"date": "2014",
"ISBN": "9785845900821 9780201896855",
"abstractNote": "Во втором издании третьего тома содержится полный обзор классических алгоритмов сортировки и поиска. Представленная в нем информация дополняет приведенное в первом томе обсуждение структур данных. Автор рассматривает принципы построения больших и малых баз данных, а также внутренней и внешней памяти. В книге приведена подборка тщательно проверенных компьютерных алгоритмов и представлен анализ их эффективности. Кроме того, специальный раздел посвящен методам оптимальной сортировки и описанию новой теории перестановки и универсального хеширования.",
"language": "ru",
"libraryCatalog": "OZON.ru",
"numPages": "824",
"publisher": "Вильямс",
"series": "Искусство программирования",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.ozon.ru/context/detail/id/23968713/",
"items": [
{
"itemType": "book",
"title": "Алгоритмические трюки для программистов",
"creators": [
{
"firstName": "Генри С. Уоррен",
"lastName": "мл",
"creatorType": "author"
},
{
"firstName": "Игорь",
"lastName": "Красиков",
"creatorType": "translator"
}
],
"date": "2014",
"ISBN": "9785845918383",
"abstractNote": "Книга \"Алгоритмические трюки для программистов\" позволит повысить квалификацию профессиональному программисту, но при этом книга будет понятна и чрезвычайно полезна даже начинающему и даже студенту, тем более что в новом издании появилась масса упражнений, интересных как с теоретической, так и с практической точки зрений. Работа программиста всегда немного хакерство, а также смесь арифметики и логики, особенно это касается программиста, который создает элегантный и эффективно работающий код. В этой книге программист-ветеран IBM Генри Уоррен делится с читателями разнообразными приемами из своей коллекции, пополняемой в течение многих десятилетий работы в области разработки компиляторов и архитектуры компьютеров, прикладного и системного программирования. Большинство из них носят практический характер, хотя некоторые представляют в первую очередь теоретический интерес. \n Автор книги много лет систематически собирал программные перлы, а затем свел их воедино, организовал и снабдил четким описанием. В этой книге слову \"хакер\" возвращено его первозданное значение - человека увлеченного, талантливого программиста, способного к созданию чрезвычайно эффективного и элегантного кода. В книге воплощен пятидесятилетний стаж ее автора в области разработки компиляторов и архитектуры компьютеров. Здесь вы найдете множество приемов для работы с отдельными битами, байтами, вычисления различных целочисленных функций; большей части материала сопутствует строгое математическое обоснование. Каким бы ни был ваш профессионализм - вы обязательно найдете в этой книге новое для себя; кроме того, книга заставит вас посмотреть на уже знакомые вещи с новой стороны. \n В новом издании своей книги автор вновь сумел собрать неотразимую коллекцию программистских трюков, позволяющих программисту писать элегантные и эффективные программы, быстро создавать эффективно работающий код, становясь при этом настоящим, глубоко знающим свое дело профессионалом. Трюки автора в высшей степени практичны, но при этом чрезвычайно интересны, а иногда и просто неожиданны - как решение большой головоломки. Изложенный материал позволит повысить квалификацию даже бывалому программисту, но при этом книга будет понятна и полезна даже начинающему. \n\n Добавления во второе издание включают: \n Новую главу, посвященную циклическому избыточному коду (CRC), включая широко используемый код CRC-32. Новую главу о кодах с коррекцией ошибок (ECC), включая подпрограммы для работы с кодом Хэмминга. Большее количество материала, посвященного делению на константы, включая методы, использующие только сдвиги и сложения. Вычисление остатков от деления без вычисления частного. Более подробное изложение методов подсчета количества единичных битов и ведущих нулевых битов. Подсчет единичных битов в массивах. Новые алгоритмы сжатия и расширения. Алгоритм LRU. Преобразования между числами с плавающей точкой и целыми числами. Программу приближенного вычисления обратного к квадратному корню. Галерею графиков дискретных функций. Появившиеся во втором издании упражнения и ответы к ним. \n\n Об авторе\n Генри Уоррен, мл. имеет пятидесятилетний стаж работы в IBM, его деятельность простирается от IBM 704 до PowerPC и далее. Он работал над рядом военных командно-управляющих систем и над проектом SETL под руководством Джека Шварца (Jack Schwartz) из университета Нью-Йорка. С 1973 года Уоррен занимается компиляторами и архитектурой компьютеров в исследовательском подразделении IBM. В настоящее время он работает над проектами суперкомпьютеров, которые должны достичь быстродействия, измеряемого эксафлопсами (EFLOPS). Генри Уоррен получил докторскую степень в области информационных технологий в университете Нью-Йорка. \n \"Это первая книга, в которой так глубоко раскрыты секреты компьютерной арифметики. В ней есть все известные мне трюки и множество ранее не известных. Эта книга - настоящая находка для разработчиков библиотек и компиляторов, для всех, кто обожает элегантность в программировании. Место этой книги на полке - рядом с книгами Кнута. Все десять лет, прошедших с выхода первого издания, книга была неоценимым помощником в моей работе в Sun и Google. Я просто дрожу от нетерпения познакомиться с новым материалом во втором издании\". Джошуа Блох (Joshua Bloch) \n \"Впервые увидев эту книгу, я решил, что это не то советы по взлому компьютеров, не то набор мелких программистских трюков. И только познакомившись с ней поближе, я понял, что под ее обложкой скрыта целая компьютерная энциклопедия. Второе издание охватывает две большие новые темы, и расширяет коллекцию десятками новых небольших трюков, включая те, которые я тут же применил на практике - например, вычисление среднего двух целых чисел без риска переполнения. Этот хакер действительно умеет принести удовольствие читателю!\" Гай Стил (Guy Steele)",
"language": "ru",
"libraryCatalog": "OZON.ru",
"numPages": "512",
"publisher": "Вильямс",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
},
{
"type": "web",
"url": "http://www.ozon.ru/context/detail/id/6037655/",
"items": [
{
"itemType": "book",
"title": "Клетки",
"creators": [
{
"firstName": "Бенджамин",
"lastName": "Льюин",
"creatorType": "editor"
},
{
"firstName": "Линн",
"lastName": "Кассимерис",
"creatorType": "editor"
},
{
"firstName": "Вишванат Р.",
"lastName": "Лингаппа",
"creatorType": "editor"
},
{
"firstName": "Джордж",
"lastName": "Плоппер",
"creatorType": "editor"
},
{
"firstName": "И.",
"lastName": "Филиппович",
"creatorType": "translator"
},
{
"firstName": "Юрий",
"lastName": "Ченцов",
"creatorType": "translator"
}
],
"date": "2011",
"ISBN": "9785947747942",
"abstractNote": "В книге описаны последние достижения в области клеточной биологии. Ее особенностями можно смело назвать наличие многочисленных богатых иллюстраций и хорошо выверенной современной терминологии, четкую структуру и удобное расположение материала. \n Важное значение в книге придается обсуждению молекулярных основ заболеваний человека и перспективных направлений исследований в этой области науки. \n\n Для студентов и аспирантов медико-биологических специальностей, начинающих и продолжающих изучение клеточной биологии, а также для исследователей, нуждающихся в современной информации по цитологии, и преподавателей.",
"language": "ru",
"libraryCatalog": "OZON.ru",
"numPages": "952",
"publisher": "Бином. Лаборатория знаний",
"series": "Лучший зарубежный учебник",
"attachments": [],
"tags": [],
"notes": [],
"seeAlso": []
}
]
}
]
/** END TEST CASES **/
You can’t perform that action at this time.