Pull to refresh
110
0
Евгений @Jenyay

Пользователь

Send message

Создание Python-обвязки для библиотек, написанных на C/C++, с помощью SIP. Часть 2

Reading time 24 min
Views 4.2K
В первой части статьи мы рассмотрели основы работы с утилитой SIP, предназначенной для создания Python-обвязок (Python bindings) для библиотек, написанных на языках C и C++. Мы рассмотрели основные файлы, которые нужно создать для работы с SIP и начали рассматривать директивы и аннотации. До сих пор мы делали обвязку для простой библиотеки, написанной на языке C. В этой части мы разберемся, как делать обвязку для библиотеки на языке C++, которая содержит классы. На примере этой библиотеки мы посмотрим, какие приемы могут быть полезны при работе с объектно-ориентированной библиотекой, а заодно разберемся с новыми для нас директивами и аннотациями.
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Comments 2

Создание Python-обвязки для библиотек, написанных на C/C++, с помощью SIP. Часть 1

Reading time 29 min
Views 18K
Иногда во время работы над проектом на языке Python возникает желание использовать библиотеку, которая написана не на Python, а, например, на C или C++. Причины для этого могут быть разные Во-первых, Python — язык замечательный, но в некоторых ситуациях недостаточно быстрый. И если вы видите, что производительность ограничена особенностями языка Python, то имеет смысл часть программы написать на другом языке (в этой статье мы будем говорить про C и C++), оформить эту часть программы в виде библиотеки, сделать Python-обвязки (Python bindings) поверх нее и использовать полученный таким образом модуль как обычную Python-библиотеку. Во-вторых, часто случается ситуация, когда вы знаете, что есть библиотека, которая решает требуемую задачу, но, к сожалению, эта библиотека написана не на Python, а на тех же C или C++. В этом случае также мы можем сделать Python-обвязку над библиотекой и пользоваться ей, не задумываясь о том, что библиотека изначально не была написана на Python.
Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Comments 0

Optlib. Реализация генетического алгоритма оптимизации на Rust

Reading time 27 min
Views 13K
В этой статье описывается библиотека optlib, предназначенная для решения задач глобальной оптимизации на языке Rust. На момент написания этой статьи в этой библиотеке реализован генетический алгоритм нахождения глобального минимума функции. Библиотека optlib не привязана к конкретному типу входных данных для оптимизируемой функции. Также библиотека построена таким образом, что при использовании генетического алгоритма можно легко менять алгоритмы скрещивания, мутации, отбора и другие этапы работы генетического алгоритма. По сути генетический алгоритм собирается как бы из кубиков.
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Comments 20

О разработке одного desktop-приложения на Python

Reading time 14 min
Views 39K

Всем привет. В этой статье я хочу рассказать о разработке программы с открытым исходным кодом для оффлайнового хранения заметок — OutWiker. Этим проектом я занимаюсь в свободное время, первая версия программы вышла в далеком 2010 году, и OutWiker до сих пор продолжает развиваться. Так уж исторически сложилось, что кодом я занимаюсь практически в одиночку (хотя изредка получаю полезные отдельные патчи), но зато пользователи активно участвуют в переводе программы на свой родной язык и иногда присылают стили оформления для страниц, которые затем я включаю в сборку. А уж о том, сколько интересных идей они присылают, и говорить не стоит.


Что такое OutWiker


Когда-то я писал об этой программе на Хабре, но это было так давно, что прежде чем говорить об особенностях внутреннего устройства и процесса разработки, нужно сказать, что представляет собой программа с точки зрения пользователя. Все ссылки, связанные с проектом даны в конце статьи. Итак, OutWiker — это программа для хранения заметок в виде дерева, в англоязычном интернете такой софт обычно называют outliner (поэтому у программы такое название). Среди более известных «коллег» OutWiker с подобным функционалом можно назвать Zim, WikidPad, CherryTree, и множество других (ну и, разумеется, org mode для Emacs). Логичный вопрос с точки зрения пользователя — чем OutWiker отличается от других представителей древовидных записных книжек. На данный момент, по прошествии такого количества времени с момента начала разработки, я уже не готов развернуто сравнить весь этот софт. В стародавние времена я перепробовал десятки outliner-ов, штук пять использовал достаточно долгое время, но везде чего-то не хватало, хотелось одну возможность взять из WikidPad, другую — из викидвижка, который может работать оффлайново и т.д. Поэтому в качестве ответа на такой вопрос просто перечислю основные особенности, которыми обладает OutWiker.



Читать дальше →
Total votes 52: ↑52 and ↓0 +52
Comments 35

Книга Леонарда Сасскинда «Битва при черной дыре»

Reading time 3 min
Views 23K
Как же здорово иногда почитать качественные книги, в которых на популярном языке рассказывается о сложных научных теориях. Конечно, после таких книг нельзя говорить, что ты разбираешься в этих теориях, но получить хотя бы общее представление о них полезно. Одной из таких замечательных книг является «Битва при черной дыре» физика-теоретика Леонарда Сасскинда. Второе название книги «Мое сражение со Стивеном Хокингом за мир, безопасный для квантовой механики».

Стержень книги — это научный спор автора и его сторонников со Стивеном Хогингом (и его сторонников) по вопросу о том, пропадает ли информация, попавшая в черную дыру бесследно, или все-таки каким-то образом ее можно оттуда извлечь (теоретически). Хокинг считал, что информация пропадает, но это значит, что в этом случае должен переставать работать один из основных принципов квантовой механики, что обеспокоило Сасскинда и его друга, лауреата Нобелевской премии Герарда ’т Хоофта (интересно, что означает такой апостроф в начале фамилии?) Сасскинд пытался доказать, что информацию можно извлечь (опять же, теоретически), собрав частицы, которые образуются при испарения черной дыры. Самое интересное, что это самое испарение черных дыр предсказал и обосновал все тот же Хокинг в далеком 1974 году, и сейчас это излучение носит его имя.



Сасскинд рассказывает, как в течение долгих лет (начиная с 1983 года и до двухтысячных годов) появлялись различные теории, которые между собой взаимодействовали, и которые в результате помогли ответить на поставленный вопрос, разумеется, в пользу автора книги. Книга Леонарда Сасскинда Битва при черной дыре icon smile Самое замечательное во всей этой истории то, что этот спор был чисто научный, не перерос полемику и не сказался на отношениях между двумя сторонами.


Читать дальше →
Total votes 29: ↑24 and ↓5 +19
Comments 22

OutWiker. Open Source программа для хранения заметок

Reading time 2 min
Views 29K
Привет, хабравчане.

На днях я выложил новую версию программы для хранения заметок OutWiker. Когда-то, больше года назад, я уже писал про нее на Хабре, за это время программа много раз обновлялась, обрастала новыми возможностями, что уже нет смысла сравнивать последнюю версию программы с ее (поза)прошлогодней версией.



OutWiker — это кроссплатформенная (Windows, Linux) программа для хранения заметок в виде дерева. Распространяется OutWiker с открытыми исходниками. Особенностью программы является то, что все записи хранятся не в одном файле, а структура формируется из вложенных файлов и папок. Кроме того, программа поддерживает несколько типов страниц: простые текстовые страницы, страницы, где для оформления заметок используется HTML и страницы в формате викинотации (напоминающую pmWiki).
Читать дальше →
Total votes 83: ↑74 and ↓9 +65
Comments 67

Outwiker 1.0.0 release

Reading time 3 min
Views 930
Этот пост можно считать продолжением поста про программу OutWiker, которая предназначена для хранения заметок в виде дерева. Напомню, что основное отличие этой программы от большинства других подобных прог — это хранение заметок не в виде отдельных файлов, а в виде директорий. Кроме того, к каждой заметке можно прикреплять файлы, а затем ссылаться на них из самой заметки, например, чтобы показывать прикрепленные картинки. А еще программа поддерживает вики-нотацию, хотя есть и другие типы заметок (HTML и простой текст).

Прошлый пост был посвящен выходу первой бета-версии, а на этот раз, спустя полгода, очередную версию уже не стыдно назвать релизом — основные возможности в ней реализованы, а дальше уже можно обрастать фичами, планы на которые довольно обширные, и заниматься улучшением интерфейса. За время своего развития на данный момент программа пережила три альфа-версии и три бета-версии.

Для начала пара скриншотов:

Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Comments 18

OutWiker 1.0 beta 1

Reading time 2 min
Views 1.7K
Всем привет.

Долгое время я подбирал для себя программу для хранения заметок в виде дерева. Программ таких уйма, но в каждой что-то мне не нравилось. Основными пожеланиями в таких программах было: чтобы они хранили заметки в виде директорий на диске, а не в одном файле базы и возможность прикрепления многих файлов к каждой странице. И вот, поняв, что программу, которая меня бы полностью устроила, я не найду, несколько месяцев назад начал делать свою программу для хранения заметок — OutWiker. Сейчас она имеет версию 1.0 beta 1 (до этого уже было несколько альф, но релизом я ее пока считать не стал, потому что перед релизом хочу добавить в нее еще некоторые возможности).

Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Comments 41

Книга Джошуа Кериевски «Рефакторинг с использованием шаблонов»

Reading time 3 min
Views 4.2K
Дочитал на днях сабжевую книжку. Вышла она еще в 2008 году (а предыдущее издание и того раньше), но мне она попалась только недавно. По идее, читать ее надо было бы после книги Фаулера «Рефакторинг. Улучшение существующего кода», на которую Кириевски постоянно ссылается, но до Фаулера я пока не добрался, хотя это и не особо затруднило чтение. Вторая книга, которую лучше всего прочитать заранее, это «Приемы объектно-ориентированного проектирования. Паттерны проектирования» банды четырех.

Суть книги «Рефакторинг с использованием шаблонов» состоит в том, что в книге автор собрал 27 довольно сложных рефакторингов, большинство которых предназначены для того, чтобы как можно более безболезненно ввести в архитектуру программы паттерны, описываемые в книге банды четырех. Как пишет в начале Кириевски, часто он начинает программировать без использования паттернов до тех пор пока этот участок кода не надо расширять, тогда он принимается за рефакторинг. Правда, в книге есть еще один рефакторинг, который наоборот избавляет код от использования синглтонов (автор называет болезнь, когда используют синглтоны по любому поводу, синглтонизмом и предлагает открыть общество анонимных синглтоников).
Читать дальше →
Total votes 66: ↑57 and ↓9 +48
Comments 26

Тоби Сегаран «Программируем коллективный разум»

Reading time 3 min
Views 10K
Знаете, люблю я книжки про всякие интересные алгоритмы, и вот недавно попалась еще одна такая книжка.

Книга «Программируем коллективный разум» в основном посвящена алгоритмам классификации и кластеризации, хотя есть главы, посвященные другим темам вроде создания собственного поисковика, генетическим алгоритмам и генетическому программированию. Почти все описанные алгоритмы применяются в духе Web 2.0, используя анализ поведения пользователей на разных сайтах, которые предоставляют свой API. Но что особенно приятно удивило, так это то, что все примеры написаны на языке Python.


Вот какие алгоритмы описываются в книге:


  • Коллаборативная фильтрация. Или, говоря человечески языком, алгоритмы, которые могут рекомендовать вам какие-то покупки, сайты или музыку в зависимости от оценок, которые вы поставили другим подобным вещам. По таким алгоритмам работает навязывание покупок в интернет-магазинах или подбор музыки на last.fm. В конце главы приводится пример, который будет рекомендовать вам ссылки из сервиса del.icio.us.
  • Алгоритмы группировки (кластеризации). Создаваемый пример анализирует RSS-каналы блогов и пытается их автоматически разделить на группы в виде дерева в зависимости от частоты слов, которые попадаются в блоге. Заодно Сегаран рассказывает как можно сделать так, чтобы названия блогов расположились на плоскости кучками в зависимости от их близости в плане рассматриваемых тем.
  • Отдельная глава посвящена построению поисковиков – созданию паука и, самое главное, рассматриваются алгоритмы ранжирования ссылок, в том числе и с учетом ссылок страниц друг на друга, создавая, таким образом, аналог Google PageRank. Еще интересно, что в этой же главе есть пример, где для выдачи наиболее релевантных ссылок используется нейронная сеть, которая обучается по мере того как пользователь щелкает на понравившиеся ему ссылки.

Читать дальше →
Total votes 73: ↑67 and ↓6 +61
Comments 29

Улучшим регулярные выражения

Reading time 7 min
Views 5.2K
После прочтения книги про регулярные выражения (далее просто РВ) у меня появились кое-какие мысли по поводу их читаемости. Когда РВ только появлялись, и в них было довольно мало условных обозначений вроде \d, \w и тому подобных, то, наверное, все было не так страшно, хотя уже тогда стоило задуматься о наглядности. Сейчас чтение кода с РВ — это тихий ужас. Нет, если РВ короткое, то особых проблем нет, но по мере их усложнения и появления различных скобок все становится просто кошмарно. Ситуация усугубляется тем, что в некоторых языках (не будем указывать пальцем) постоянно приходится удваивать слеши.

Кроме того в той нотации РВ, которая сейчас используется в большинстве языках программирования, в некоторых, казалось бы простых ситуациях, приходится выкручиваться с помощью различных финтов. Первый пример, что пришел в голову — составить регулярное выражение если «abc», то затем НЕ «xyz».

Читать дальше →
Total votes 22: ↑10 and ↓12 -2
Comments 10

История развития электродинамики. Электростатика

Reading time 6 min
Views 5.6K
В прошлом посте развернулась целая дискуссия по поводу того, нужны ли здесь подобные статьи, но так как к этому моменту я уже подготовил продолжение, то решил его все-таки выложить.

В продолжение начатой недавно темы про историю развития электродинамики, поговорим теперь про электростатику.

Читать дальше →
Total votes 18: ↑12 and ↓6 +6
Comments 18

История развития электродинамики. Магнетизм

Reading time 4 min
Views 3.4K

Два года назад для аспирантуры писал реферат по истории развития электродинамики. А тут про него вспомнил и решил сделать из него несколько записей в блоге, чего добру пропадать. :) Правда, пока готовил этот пост от реферата мало что осталось в первозданном виде, но это даже хорошо. А то тогда мне главное было его сдать, а теперь можно зарыться во всякие интересные книжки и ссылки и дополнить его интересными фактами.


Читать дальше →
Total votes 84: ↑68 and ↓16 +52
Comments 40

Прочитал книгу вслух — в тюрьму

Reading time 2 min
Views 485
Сегодня на компьюленте прочитал новость про очередную выходку копирастов. Суть новости в том, что издателям теперь не нравится возможность голосового чтения электронных книг от Amazon (функция Read-To-Me). Пока, к счастью, за чтение вслух никого не посадили, копирасты просто требуют для себя возможности отключать эту функцию для некоторых книг. Но судя по тому, что Amazon под них прогнулась и уже дала возможность отключать Read-To-Me, то копирасты могут пойти и дальше.
Уже представляю себе недалекое будущее, когда родители не смогут прочитать своему ребенку вслух книгу, потому что это нарушает аффтарские права. Наверняка устроят показательный процесс, растянутый на пару лет против одинокой мамаши (по аналогии с тем, что устроил RIAA), будут доказывать, что из-за нее никто не покупает книги Донцовой или какой-нибудь другой Марининой, да и вообще на нее повесят очередной мировой кризис. Авторы в обнимку с издателем пустят слезу перед телекамерой, скажут, что свой последний лексус они купили на последние деньги и теперь им не на что жить. Мамашу наверняка лишат родительских прав, ведь нарушение авторских прав — это хуже убийства. Ребенка, которому читали книгу, разумется, отправят в детдом особого режима, ведь он тоже участвовал в преступлении — слушал как ему читают книгу. С ним придется работать психологам или психиатрам, чтобы он забыл нелицензионно услышанную книгу. Ведь если он ее забудет, то есть шанс, что в будущем, когда его выпустят из сумасшедшего дома, есть шанс, что он эту книгу купит, и авторы опять смогут позволить себе купить дачу, как это было до нарушения аффтарских прав этим ребенком.
Возможно, при покупке книг придется читать длинную лицензию и выбирать те, книги, которые можно читать вслух, или наоборот про себя. Чтобы издатели могли легче судить нарушителей, при покупке книг придется предъявлять паспорт, как при подключении к сотовым операторам. Может быть к книгам будет прилагаться специальный чип с микрофоном, который будет слушать что творится в окрестности и, если услышит, что читают эту книгу (к тому времени уже можно будет подтянуть распознавание звуков на должный уровень), то будет вызывать специальный отдел полиции, который тут же скрутит нарушителя и отправит его в Сибирь валить лес.
Дальнейшим шагом копирастов должен стать запрет любых устройств с динамиками, ведь через них можно читать книги или, что самое страшное, слушать музыку. А вдруг вы решите послушать книгу или музыку вместе с друзьями, а они не заплатили издателям? Этого допустить никак нельзя. Есть, правда, в этом один плюс, может быть тогда в метро не будет “меломанов”, слушающих музыку на весь вагон. Их, разумеется, всех расстреляют, но что делать, искусство требует жертв.
В общем, что-то у меня с утра оптимистичное настроение.
Total votes 54: ↑46 and ↓8 +38
Comments 15

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity