Permalink
Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign up
translators/OZON.ru.js
Find file
Copy path
Fetching contributors…
Cannot retrieve contributors at this time
{ | |
"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 **/ |