Как стать автором
Обновить
113
0.6
Кул Домов @ganqqwerty

Code monkey

Отправить сообщение

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

Время на прочтение7 мин
Количество просмотров6.8K

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

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

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

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

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

Время на прочтение8 мин
Количество просмотров21K


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

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


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


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

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

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

Время на прочтение1 мин
Количество просмотров7.6K
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 мин
Количество просмотров5.1K
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 мин
Количество просмотров41K
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 мин
Количество просмотров67K
Одной из причин слабого использования 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 мин
Количество просмотров18K
В прошлый раз я описал функционал плагина 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 мин
Количество просмотров42K

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Время на прочтение3 мин
Количество просмотров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> >]


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

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

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

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

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

Время на прочтение12 мин
Количество просмотров3K

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

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

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

Информация

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

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

Frontend Developer, Fullstack Developer
Senior