Pull to refresh
112
0.5
Юрий Катков @ganqqwerty

Code monkey

Send message

Декомпозируем регулярные выражения

Reading time 7 min
Views 6.7K

Хороший код читается легко, как проза. Многие книги учат нас тому, как важно делить код на небольшие, повторно используемые, легко потребляемые блоки.

Но почему-то, в случае с регэкспами у программистов как будто появляется слепое пятно на чувстве стиля. Вот такая регулярка – совершенно обычное дело:

/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.]((19|20)\d\d)$/

А чо не так-то?
Total votes 28: ↑20 and ↓8 +12
Comments 51

Тысячная избранная статья. Как устроено рецензирование в Википедии

Reading time 8 min
Views 20K


21 апреля русская Википедия выбрала свою тысячную по счету Избранную статью: Двадцать восемь панфиловцев. Так выпало, что писал её, в основном, я. Интересно, что после этого я получил много вопросов о том, по каким критериям выбираются статьи. Пользуясь случаем, хотелось бы рассказать о том, как устроено общественное рецензирование в этом потрясающем краудсорсинговом проекте и как можно поднять свой уровень критического мышления, участвуя в написании энциклопедии.

А давайте ее удалим?


Сначала кто-то пишет маленькую статью, а кто-то другой сразу выставляет ее на удаление. Например, потому что она маленькая. Или потому что она по неактуальной теме.
Создается раздел обсуждения, такой как вот этот.


Обсуждение является не голосованием, а, скорее, дискуссией. Участники ругаются, апеллируя к правилам. Подводящий итоги (судья) взвешивает доводы за и против. Если принимается решение страницу оставить, об этом появляется соответствующая плашка на ее страничке обсуждения. После этого выставить на удаление статью становится значительно сложнее.

Читать дальше →
Total votes 90: ↑83 and ↓7 +76
Comments 119

Google Knowledge Graph Search API заменит Freebase

Reading time 1 min
Views 7.5K
Google выпустил API для своей базы знаний Google Knowledge Graph. Сервис уже выдает данные в формате JSON-LD (LD здесь означает Linked Data, да-да!) и использует типы schema.org. Помимо соблюдения стандартов, радостной новостью является наличие обратной совместимости с Freebase — всегда когда возможно, для идентификации сущностей используются ключи из Freebase. Программный интерфейс Freebase будет доступен в течение еще трех месяцев.
Напомню, что Knowledge Graph — это база знаний, которая в числе прочего формирует вот такие вот инфобоксы в результатах поиска:

image
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Comments 1

Google Freebase закроется в 2015. Все данные перенесут в Wikidata

Reading time 1 min
Views 5.1K
image
Создатели Freebase, открытой базы знаний, купленной Google, сообщили о том, что базу закроют. Однако, закрыть обещают крайне нежно и аккуратно: данные перенесут в Викиданные, сообщество авторов попробуют интегрировать туда же. В официальном блоге разработчики перечисляют дедлайны и возможные трудности, с которыми придется столкнуться во время миграции. Вместе с тем, сообщение содержит массу хороших новостей, например, обещание развивать API Google Knowledge Graph.

Из-за того, что многие факты в Freebase были взяты непосредственно из Википедии, нельзя просто взять и залить дамп Freebase в Викиданные. Одним из базовых принципов Викиданных является наличие ссылок на авторитетные источники. Создатели Freebase предоставят инструменты, позволяющие проверять данные на наличие ссылок, используя Google Search и даже таинственный Google Knowledge Vault.

30 июня сайт и API Freebase будут удалены. На данный момент, база содержит 46 миллионов объектов и почти три миллиарда фактов.
Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Comments 5

Википедия пометит пишущих по заказу

Reading time 2 min
Views 18K
imageОплаченные правки и их авторы в Википедии могут стать более заметными: в Meta-вики обсуждается новая поправка в Условия использования. Если ее примут, участники, пишущие по заказу компаний или конкретных людей (“имеющие потенциальный конфликт интересов”), должны будут честно сообщать другим пользователям, что они работают за деньги, и говорить, на кого работают.

Легализоваться участник может одним из трех способов: рассказать о своем работодателе на своей персональной странице, странице обсуждения или в поле краткого описания изменений.
Сейчас предполагаемая поправка еще находится на обсуждении вики-сообщества. Оставить свой комментарий на странице обсуждения можно до 21 марта. После этого поправка будет передана в Совет попечителей Wikimedia.
Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Comments 27

Базы знаний. Часть 2. Freebase: делаем запросы к Google Knowledge Graph

Reading time 24 min
Views 40K
image
Больше года назад Google объявил, что отныне в их поиске используется таинственная Сеть Знаний (официальный перевод Knowledge Graph). Возможно, не все знают, что значительная часть данных Сети доступна для использования всеми желающими и доступна по прекрасно описанному API. Этой частью является база знаний Freebase, поддерживаемая Google и энтузиастами. В этой статье мы сначала немного подурачимся, а потом попробуем сделать несколько простеньких запросов на языке MQL.
Эта статья — вторая из цикла Базы знаний. Следите за обновлениями.

  • Часть 1 — Введение
  • Часть 2 — Freebase: делаем запросы к Google Knowledge Graph
  • Часть 3 — Dbpedia — ядро мира Linked Data
  • Часть 4 — Wikidata — семантическая википедия

Читать дальше →
Total votes 63: ↑62 and ↓1 +61
Comments 10

Базы знаний. Часть 1 — введение

Reading time 5 min
Views 67K
Одной из причин слабого использования Linked Data-баз знаний в обычных, ненаучных приложениях является то, что мы не привыкли придумывать юзкейсы, видя перед собой только данные. Трудно спорить с тем, что сейчас в России производится крайне мало взаимосвязанных данных. Однако это не значит, что разработчик, создающий приложение для русскоязычной аудитории совсем уж отрезан от мира семантического веба: кое-что всё-таки у нас есть.
image
Основными источниками данных для нас являются международные базы знаний, включающие русскоязычный контент: DBpedia, Freebase и Wikidata. В первую очередь это справочные, лингвистические и энциклопедические данные. Каждый раз когда вам в голову приходит мысль распарсить кусочек википедии или викисловаря — ущипните себя как следует и вспомните о том, что всё, что хранится в категориях, инфобоксах или таблицах, уже распарсено и доступно через API с помощью SPARQL или MQL-интерфейса.

Я попробую привести несколько примеров полезных энциклопедических данных, которые вы не найдете нигде, кроме Linked Data.

Эта статья — первая из цикла Базы знаний. Следите за обновлениями.


Читать дальше →
Total votes 69: ↑66 and ↓3 +63
Comments 29

15-летняя девочка разработала фонарик, питающийся от тепла рук

Reading time 1 min
Views 181K

Проект был предложен канадской девочкой Анной Макосински (Ann Makosinski) для конкурса Google Science Fair. Энергия для фонарика, строго говоря, берется не от тепла рук, а от разности температур: девочка использовала открытый еще в девятнадцатом веке эффект Зеебека.
Удивительно, но выделяемых кожей ладони 57 mW тепла хватило на то, чтобы быть источником для термоэлектрического генератора (на элементах Пельтье) при температуре окружающей среды, отличающейся от температуры руки на 5 градусов, а получившийся фонарик способен выдавать свет интенсивностью 5 FC (около 55 люкс).

Полное описание проекта вы можете прочитать здесь.
Когда Анна выиграет конкурс и получит свои $50000 от Google, она наверняка задумается о том, чтобы наладить массовое производство фонариков: её пилотная модель стоила $26.
Читать дальше →
Total votes 115: ↑98 and ↓17 +81
Comments 185

Semantic Forms для MediaWiki

Reading time 10 min
Views 18K
В прошлый раз я описал функционал плагина Semantic MediaWiki, позволяющего управлять структурированными данными в вашей системе и создавать на их основе различные представления. Ложкой дёгтя здесь является то, что пользователям приходится учить дополнительные элементы разметки.
Сегодня мы поговорим про расширение Semantic Forms, позволяющее сделать вики совсем не похожей на вики и привлечь к работе более широкий круг пользователей.



Напомню, что сердцем Semantic MediaWiki является механизм семантических свойств. Назначение семантического свойства странице хоть и похоже на простое создание вики-ссылки [[имя свойства::значение свойства | что выводить на экран]], но, всё-таки, это новый синтаксис. Вдобавок даже если наши пользователи будут настолько дисциплинированы, что прочитают и вникнут в руководство по созданию свойств, они вряд ли будут называть все термины единообразно.
На моей вики, посвященной историческим личностям половина людей будет описана свойством время рождения, другие участники опишут людей свойством год рождения, а третьи дата рождения. Теперь для того, чтобы получить список исторических личностей и вывести их даты рождения, мне нужно написать три запроса вместо одного:

{{#ask:[[Категория Историческая личность]] | ?Время рождения }}
{{#ask:[[Категория Историческая личность]] | ?Год рождения }}
{{#ask:[[Категория Историческая личность]] | ?Дата рождения }}

Для решения этих проблем применяют шаблоны и формы.
Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Comments 4

Настройка пользовательского интерфейса в стиле MediaWiki

Reading time 2 min
Views 13K
Я расскажу об одной из замечательных возможностей MediaWiki — настройки системных сообщений. Разрозненные куски того, как это делать, попадаются в документации, но всё же прицельный обзор, надеюсь, будет кому-то полезен.

Каждый раз, когда кто-то в коде MediaWiki или своего расширения использует функцию wfMessage (или одну из устаревших функций, например wfMsg), сообщение становится возможным перевести на много-много языков. Это все знают. Что более интересно, так это то, что теперь ваше системное сообщение можно переопределять непосредственно в вики, на посвященной ему страничке.
Читать дальше →
Total votes 11: ↑8 and ↓3 +5
Comments 1

Semantic MediaWiki

Reading time 6 min
Views 42K

Semantic MediaWiki — это расширение, ради которого стоит ставить MediaWiki: оно помогает бороться с бардаком и хаосом, который рано или поздно воцаряется в любой вики-системе.

  • Оно позволяет поддерживать согласованность данных на вики.
  • С его помощью можно обращаться с вики как с базой данных.
  • С его помощью можно генерировать красивые графики, диаграммы и графы на основе вики-данных.
  • Оно позволяет пользователям возможность вводить данные с помощью форм, а не вики-разметки, понижая тем самым порог вхождения для пользователей.

SMW позволяет использовать вики как составную часть системы управления знаниями, с его помощью можно создавать коммерческие системы, которые сочетают простоту вики, четкость коллаборативных баз данных, и лучшее из мира Semantic Web. В общем, это вещь, более чем достойная пристального внимания и подробного обзора.
Читать дальше →
Total votes 70: ↑67 and ↓3 +64
Comments 26

Открыт офис W3C в России

Reading time 1 min
Views 1.5K
image
Долгожданное событие наконец произошло!
В России открыт офис Консорциума W3C .
Офис открыт совместно W3C и Высшей школой Экономики и будет работать на базе университета. Не менее радостной новостью является то, что известный популяризатор инициативы открытых государственных данных и создатель opengovdata.ru Иван Бегтин (хабраюзер ibegtin) стал руководителем направления Linked Data в российском подразделении W3C.
Директором представительства стал Виктор Клинцов.
Читать дальше →
Total votes 39: ↑36 and ↓3 +33
Comments 10

Осенняя школа Semantic Web в ИТМО

Reading time 2 min
Views 2.2K
Порог вхождения в Semantic Web не то, чтобы сильно высок, однако первые пару-тройку недель приходится разгребать ужасную кашу из стандартов, языков, инструментов и внушительного математического аппарата, размышляя над тем, что же из всей этой каши наиболее полезно.
Наши семинары предназначены для тех, кто слышал о семантик вебе, но так и не понял
  1. что это такое,
  2. почему это благо, и, наконец,
  3. как этим пользоваться.
Читать дальше →
Total votes 2: ↑2 and ↓0 +2
Comments 8

Концепт XO-3 от OLPC

Reading time 1 min
Views 1.2K
One Laptop Per Child, первая компания, вознамерившаяся выпустить ноутбук за 100 долларов, выпустила на свет новый концепт. Таблетный ноутбук будет называться XO-3, он будет тонким и будет выглядеть вот так:
image
Читать дальше →
Total votes 12: ↑9 and ↓3 +6
Comments 10

Статический анализ кода C++

Reading time 5 min
Views 33K
Для меня красота C++ заключается, в первую очередь, во вседозволенности и ужасающей мощи языка. Мы можем работать с памятью так же плотно, как и в C, и в то же время имеем такие средства абстракции, как шаблоны и STL, где параметризовать можно что угодно и чем угодно.
Плата за это соответствующая — не всегда вразумительные ошибки компилятора (попробуйте забыть поставить точку с запятой после определения класса), очень большой срок подготовки и обучения программистов, но самое главное — некоторые баги становятся заметными только во время исполнения программы.
Мы хотим больше полезных ворнингов до запуска наших программ. Одно из средств получения желаемого — статический анализ кода. Статический — значит, не запуская программу. Интересны не только вероятные ошибки, случаи undefined behaviour, утечки памяти, но и вещи вроде недоступности/неиспользуемости кода, рекомендации по повышению интуитивности стиля программирования.
Читать дальше →
Total votes 40: ↑38 and ↓2 +36
Comments 43

Поисковая система по C++ ресурсам

Reading time 2 min
Views 6.5K
Не самый популярный, но оттого не менее полезный сервис Google — возможность создать свою поисковую систему. Технология простая — вы отбираете сайты, в которых поисковик будет искать прежде всего, сужая, таким образом область поиска и получая красивые релевантные результаты.
Мне захотелось найти поисковик для C++, но я ничего полезного не увидел. Зашел на Google Custom Search, накидал список сайтов (штук 15, не больше) и увидел, что это хорошо — ищет уже гораздо лучше стандартного гугл-поиска. Вот ссылка на эту мини-искалку. Буду рад, если хабрасиплюсплюсеры помогут мне в развитии и пополнении списка допустимых сайтов. Тут есть следующие варианты:
  • "ха! дык это ведь уже есть!" вы тыкаете меня носом в уже созданный тематический поисковик по C++, я посыпаю голову пеплом, закрываю топик и радостно этим поисковиком пользуюсь,
  • "ура, мы создадим СВОЙ поисковик, с функторами и аллокаторами". Тут видится два разумных варианта. Первый — я раздаю 100 инвайтов желающим присоединиться к наполнению базы сайтов поисковика и они непосредственно включаются в редактирование. Или же можно содать общедоступную и свободно редактируемую страничку (да хоть эту), на которую сваливать все ссылки. Ну а страничка в качестве источника ссылок будет съедаться гуглом.
  • также принимаются предложения по смене системы создания custom search, идеи о том, как можно подключать штуки вроде закладок delicious (или, например, ), помеченных соответствующими тегами, страниц MSDN, URL которых никак не связан с темой, и прочее.
Пока добавлены следующие ресурсы
Total votes 30: ↑24 and ↓6 +18
Comments 23

STL Filter — скрипт для лаконичных ошибок STL

Reading time 3 min
Views 1.7K
STL славится своей способностью заполнять метры экранного пространства сообщениями об ошибках. Надоело смотреть на экран и видеть перлы вроде:

testmap.cpp:25: error: no matching function for call to ‘std::map<int, double, std::less, std::allocator<std::pair<const int, double> > >::map(int, int, int)’
/usr/include/c++/4.3/bits/stl_map.h:175: note: candidates are: std::map<_Key, _Tp, _Compare, _Alloc>::map(const std::map<_Key, _Tp, _Compare, _Alloc>&) [with _Key = int, _Tp = double, _Compare = std::less, _Alloc = std::allocator<std::pair<const int, double> >]
/usr/include/c++/4.3/bits/stl_map.h:165: note: std::map<_Key, _Tp, _Compare, _Alloc>::map(const _Compare&, const _Alloc&) [with _Key = int, _Tp = double, _Compare = std::less, _Alloc = std::allocator<std::pair<const int, double> >]


ну и еще пара десятков строк.

Читать дальше →
Total votes 40: ↑32 and ↓8 +24
Comments 35

Реши задачку, используя один бит памяти!

Reading time 1 min
Views 4.7K
image
Задача, подобная этой на использование совместных ресурсов:
1-го сентября 100 бессмертных эльфийских воркутинских зэков постоили на торжественную линейку и предложили им ускорить процесс своего освобождения. Итак, в тюрьме есть камера с висящей лампочкой. Лампочку можно включить или выключить. Каждый день, начиная с 1-го сентября тюремщик будет запускать одного заключённого в эту камеру. В этот момент зэк сможет увидеть, горит ли лампочка.
У каждого заключенного тюремщик будет спрашивать: «А все ли твои товарищи тут были хотя бы раз?» Если зэк отвечает «нет», игра продолжается.
Если зэк отвечает «да» и это правда — всех выпускают на волю в тундру. Если же это неправда — высшая мера наказания для всех.
Тюремщики могут выбирать заключенных вразброс и с повторениями. Заключенные сидят в одиночных камерах и могут договориться только один раз — 1-го сентября на обеде после торжественной линейки. После этого они сидят в «одиночках» без окон, совсем не видят друг друга и лампочки.
Найти оптимальную стратегию поведения каждого заключенного с тем, чтобы их выпустили пораньше.
Читать дальше →
Total votes 77: ↑65 and ↓12 +53
Comments 252

Classmate/OLPC лагерь. Обучение может быть интересным!

Reading time 12 min
Views 3K

Медиалаборатория и Open Source Linux Lab, подготовившие для вас однажды статью о применение OLPC XO ноутбучков в суровых условиях русского лагеря, продолжают вещать из деревни Старая Пустынь Нижегородской области. Компьютерный лагерь проходил с 10-го по 20-е августа и в этот раз, кроме ребят из четырех нижегородских школ, были и дети программистов, прочитавших о нас в журнальных статьях и блогах.
И в этот раз у нас вдобавок к OLPC XO детские образовательные ноутбуки от титана компьютерной индустрии — фирмы Intel. Итак, Classmate PC, цветы жизни и вправление мозгов!
Много картинок, будьте осторожны.
читать дальше
Total votes 131: ↑103 and ↓28 +75
Comments 101

Альтернативные токены и триграфы в С++

Reading time 1 min
Views 3.5K
Да-да-да, я понимаю, что для того, чтобы знать об альтернативных токенах надо всего лишь заглянуть в пункт 2.5 стандарта. В этом смысле, статья никому не нужна. Еще помню об этом рассказывал тов. Касперски.
Однако, смею предположить, что не совсем все знают, что писать hello world на cpp можно и так:
предаться изврату
Total votes 21: ↑15 and ↓6 +9
Comments 15
1

Information

Rating
1,582-nd
Location
Антарктика
Date of birth
Registered
Activity

Specialization

Frontend Developer, Fullstack Developer
Senior