Как стать автором
Обновить
111
Карма
0.1
Рейтинг
Юрий Катков @ganqqwerty

Code monkey

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

Время прочтения 7 мин
Просмотры 5.7K
PHP *JavaScript *Программирование *Java *Регулярные выражения *
Туториал

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

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

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

А чо не так-то?
Всего голосов 28: ↑20 и ↓8 +12
Комментарии 51

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

Время прочтения 8 мин
Просмотры 20K
Копирайт Научно-популярное Краудсорсинг
Туториал


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

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


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


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

Читать дальше →
Всего голосов 90: ↑83 и ↓7 +76
Комментарии 119

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

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

image
Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 1

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

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

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

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

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

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

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

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

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

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

Читать дальше →
Всего голосов 63: ↑62 и ↓1 +61
Комментарии 10

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

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

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

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


Читать дальше →
Всего голосов 69: ↑66 и ↓3 +63
Комментарии 29

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

Время прочтения 1 мин
Просмотры 181K
Электроника для начинающих

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

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

Semantic Forms для MediaWiki

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



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

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

Для решения этих проблем применяют шаблоны и формы.
Читать дальше →
Всего голосов 34: ↑33 и ↓1 +32
Комментарии 4

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

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

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

Semantic MediaWiki

Время прочтения 6 мин
Просмотры 41K
Семантика *
Туториал

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

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

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

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

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

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

Время прочтения 2 мин
Просмотры 2.1K
Семантика *
Порог вхождения в Semantic Web не то, чтобы сильно высок, однако первые пару-тройку недель приходится разгребать ужасную кашу из стандартов, языков, инструментов и внушительного математического аппарата, размышляя над тем, что же из всей этой каши наиболее полезно.
Наши семинары предназначены для тех, кто слышал о семантик вебе, но так и не понял
  1. что это такое,
  2. почему это благо, и, наконец,
  3. как этим пользоваться.
Читать дальше →
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 8

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

Время прочтения 1 мин
Просмотры 1.1K
Учебный процесс в IT
One Laptop Per Child, первая компания, вознамерившаяся выпустить ноутбук за 100 долларов, выпустила на свет новый концепт. Таблетный ноутбук будет называться XO-3, он будет тонким и будет выглядеть вот так:
image
Читать дальше →
Всего голосов 12: ↑9 и ↓3 +6
Комментарии 10

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

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

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

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

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

Время прочтения 3 мин
Просмотры 1.5K
C++ *
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> >]


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

Читать дальше →
Всего голосов 40: ↑32 и ↓8 +24
Комментарии 35

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

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

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

Время прочтения 12 мин
Просмотры 2.9K
Учебный процесс в IT

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

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

Время прочтения 1 мин
Просмотры 3K
Ненормальное программирование *
Да-да-да, я понимаю, что для того, чтобы знать об альтернативных токенах надо всего лишь заглянуть в пункт 2.5 стандарта. В этом смысле, статья никому не нужна. Еще помню об этом рассказывал тов. Касперски.
Однако, смею предположить, что не совсем все знают, что писать hello world на cpp можно и так:
предаться изврату
Всего голосов 21: ↑15 и ↓6 +9
Комментарии 15
1

Информация

В рейтинге
2 957-й
Откуда
Антарктика
Дата рождения
Зарегистрирован
Активность

Специализация

Frontend Developer, Fullstack Developer
Senior