Pull to refresh
171
0
Алексей Рембиш @Rembish

Python

Send message

Python изнутри. Объекты. Голова

Reading time8 min
Views55K
1. Введение
2. Объекты. Голова
3. Объекты. Хвост
4. Структуры процесса

Продолжаем разбираться во внутренностях Питона. В прошлый раз мы узнали, как Питон переваривает простую программу. Сегодня начнём изучение устройства его объектной системы.

Как я и писал в предыдущем эпизоде (который, кстати, оказался успешным; спасибо всем, ваши просмотры и комментарии буквально заставляют меня двигаться дальше!) – сегодняшний пост посвящён реализации объектов в Python 3.x. Поначалу я думал, что это простая тема. Но даже когда я прочитал весь код, который нужно было прочитать перед тем, как написать пост, я с трудом могу сказать, что объектная система Питона… гхм, «простая» (и точно не могу сказать, что до конца разобрался в ней). Но я ещё больше убедился, что реализация объектов — хорошая тема для начала. В следующих постах мы увидим, насколько она важна. В то же время, я подозреваю, мало кто, даже среди ветеранов Питона, в полной мере в ней разбирается. Объекты слабо связаны со всем остальным Питоном (при написании поста я мало заглядывал в ./Python и больше изучал ./Objects и ./Include). Мне показалось проще рассматривать реализацию объектов так, будто она вообще не связана со всем остальным. Так, будто это универсальный API на языке C для создания объектных подсистем. Возможно, вам тоже будет проще мыслить таким образом: запомните, всё это всего лишь набор структур и функций для управления этими структурами.
Читать дальше →
Total votes 59: ↑59 and ↓0+59
Comments13

Объединяя C++ и Python. Тонкости Boost.Python. Часть вторая

Reading time10 min
Views26K
Данная статья является продолжением первой части.
Продолжаем мучить Boost.Python. В этот раз настала очередь класса, который нельзя ни создать, ни скопировать.
Обернём почти обычную сишную структуру с необычным конструктором.
И поработаем с возвращением ссылки на поле объекта C++, так чтобы сборщик мусора Python его не удалил ненароком. Ну и наоборот, сделаем альтернативный вариант, чтобы Python прибрал мусор после удаления того, что ему отдали на хранение.
Поехали…
Читать дальше →
Total votes 40: ↑39 and ↓1+38
Comments3

Объединяя C++ и Python. Тонкости Boost.Python. Часть первая

Reading time10 min
Views147K
Boost.Python во всех отношениях замечательная библиотека, выполняющая своё предназначение на 5+, хотите ли вы сделать модуль на С++ для Python либо хотите построить скриптовую обвязку на Python для нативного приложения написанного на С++.
Самое сложное в Boost.Python — это обилие тонкостей, поскольку и C++ и Python — два языка изобилующие возможностями, и потому на стыке их приходится учитывать все нюансы: передать объект по ссылке или по значению, отдать в Python копию объекта или существующий класс, преобразовать во внутренний тип Python или в обёртку написанного на C++, как передать конструктор объекта, перегрузить операторы, навесить несуществующие в C++, но нужные в Python методы.
Не обещаю, что в своих примерах опишу все тонкости взаимодействия этих фундаментальных языков, но постараюсь сразу охватить как можно больше частоиспользуемых примеров, чтобы вы не лазили за каждой мелочью в документацию, а увидели все необходимые основы здесь, или хотя бы получили о них базовое представление.
Читать дальше →
Total votes 64: ↑64 and ↓0+64
Comments8

C/C++ plugin for IntelliJ IDEA as OpenSource

Reading time1 min
Views25K
Здравствуйте.

Сегодня, после двух недель ожидания, Advanced Tools опубликовали исходники плагина, если кто не знает, этот плагин дает поддержку C/C++ для IDE которые базируются на IntelliJ платформе(web ide, idea, etc)

Читать дальше →
Total votes 27: ↑24 and ↓3+21
Comments16

Pull request'ы на GitHub или Как мне внести изменения в чужой проект

Reading time6 min
Views497K
По просьбе tulskiy делаю вольный перевод частей официальной документации GitHub'а Fork A Repo и Send pull requests.

Итак, что же такое «запрос на включение (сделанных вами изменений)» (именно так я перевёл pull request)? В официальной документации гитхаба говорится следующее:
Pull request'ы позволяют вам рассказать другим о тех изменениях, которые вы разместили в своём GitHub-репозитории. Как только pull request отправлен, заинтересованные стороны рассматривают ваши изменения, обсуждают возможные правки или даже добавляют дополняющие коммиты, если нужно.

Говоря своим языком: Посылая pull request, вы говорите автору изначального репозитория (и всем заинтересованным лицам): «Смотрите, что я сделал, не хотите ли принять мои изменения и влить их в проект?»
Читать дальше, но теперь уже обо всём по порядку
Total votes 84: ↑80 and ↓4+76
Comments31

Дарю идею сервиса подбора авиабилетов

Reading time1 min
Views780
Отдаю в добрые руки идею сервиса по подбору авиабилетов.

Думаю, многие знают сайт www.anywayanyday.com и ему подобные (сам я к нему отношения не имею и не рекламирую). Он хорош для подбора всевозможных вариантов перелета из пункта А в пункт Б заданного числа. И он отлично справляется с этим с учетом всех возможных вариантов пересадок и т.п.

Но он не учитывает один (как мне кажется — довольно распространенный у нас вариант поиска маршрута) — «а куда можно улететь такого-то числа подешевле?»

Поясню. Скоро новогодние каникулы. Наверняка, многие подумывают о варианте вояжа по какой-нибудь Европе. И в принципе, не слишком важно — куда именно — в Берлин, Копенгаген, Стокгольм или Париж. Хочется всюду, но везде не успеть, да и бюджет не бескочен. Например, вы решили начать свое путешествие из Хельсинки. Куда именно и в каком порядке — не принципиально. Лишь бы билет стоил 2000 рублей. И что вам приходится делать? Поочередно вбивать разные города назначения и смотреть цены. Потом, найдя, например, перелет Хельсинки-Берлин за 2200 руб., вы начинаете поиск, куда можно задешево улететь уже из Берлина и т.п.

В результате, поиск подобных цепочек превращается в унылое занятие.

Вот, собственно, сервис по подбору подобных цепочек с дешевыми перелетами я и предлагаю организовать.
Total votes 38: ↑21 and ↓17+4
Comments17

Опыт спасения кластера Cassandra

Reading time4 min
Views7.6K
Мне довелось спасать ушедший в небытие кластер Cassandra. Это был интересный опыт, которым я бы хотел поделиться, ведь в штатной ситуации большинство баз данных работает одинаково, а вот уровень стресса при падении может отличаться очень сильно.

Читать дальше →
Total votes 77: ↑75 and ↓2+73
Comments23

Python(x, y)

Reading time9 min
Views54K
imagePython(x, y) — набор библиотек и программного обеспечения для численных расчетов, анализа и визуализации данных на основе Python. IDE представлены IDLE, Eclipse и Spyder, основой GUI избран Qt. Я расскажу вкратце о модулях, относящихся к самому Python, приведу несколько примеров их работы. Во время установки можно выбрать только то, что нужно, поэтому стоит разобраться что к этому нужному отнести. Кроме того, рассказ о модулях может пригодиться и сам по себе, поскольку их можно установить и по отдельности. Порядок следования модулей повторяет порядок оригинальной страницы и список чекбоксов установки.
Читать дальше →
Total votes 84: ↑82 and ↓2+80
Comments18

Как я стал нодой

Reading time3 min
Views7K
image
О Фидонете я знал давно. Ещё в далеком 2003 году, получив в своё распоряжение модем на 14400, первым делом я попытался подключиться к Сети Друзей. Но… Не сложилось. Потом появилось подключение к интернету, подписка в режиме read-only через NNTP, но мысль не только читать, но и писать всё равно осталась где-то в подсознании…

Год 2010. Пойнт.


И вот на дворе 2010 год. А если точнее — апрель-месяц. Появляется статья История одного пойнта, что выводит писательскую мысль из коматоза и отправляет на поиски пойнтового адреса у Сергея (2:5020/2140). И вот оно — первое сообщение и первый нетмейл!
Я сразу понял, что радость только начинается…
Читать дальше →
Total votes 168: ↑122 and ↓46+76
Comments216

Устанавливаем и настраиваем LAMP и Trac+SVN на Ubuntu

Reading time4 min
Views16K
Прочитав эту статью, я осознал, что Trac+SVN очень помогут в работе и решил настроить эту связку у себя на машине.

С недавних пор я использую Убунту линукс, потому установка и настройка проходили с учетом особенностей данной системы. LAMP у меня уже был установлен ранее, так же как и inadyn. В итоге я получил достаточно гибкую и удобную систему управления своими проэктами, к которой есть доступ по сети. Интересно, как сделать?
Делюсь опытом
Total votes 25: ↑25 and ↓0+25
Comments34

Обеспечение качества программного продукта

Reading time4 min
Views11K
Дисциплина «Метрология программного обеспечения» входит в учебный план подготовки дипломированных специалистов по направлению 654600 — «Информатика и вычислительная техника» по специальности 220400 — «Программное обеспечение вычислительной техники и автоматизированных систем». Дисциплина изучает проблемы оценки метрических характеристик качества ПО на этапах от разработки спецификаций до завершения отладки и тестирования программного продукта. В курсе рассматриваются критерии, характеристики и метрики качества ПО; особый упор делается на характеристики корректности, надежности и сложности программ. Изучаются формальные модели и методы оценки как статических, так и динамических характеристик качества ПО, позволяющие на различных стадиях разработки выявлять просчеты и дефекты программного изделия. Рассматриваются инструментальные средства поддержки и автоматизации измерения характеристик ПО.
Далее по тексту будет находится краткий обзор инструментов с помощью которых можно анализировать различные характиристики в приложениях созданных на PHP. Данный материал появился на свет в результате некоторых экспериментов в области непрерывной интеграции, и должен был являться частью статьи про непрерывную интеграцию (спойлерить пока не буду, боюсь сглазить) все в том же РНР, но я решил все-таки выделить его в самостоятельный обзор, так как возможно, в последующих статьях я буду ссылаться на него, а так же надеюсь узнать об аналогичных инструментах еще не попавших мне на глаза. Некоторые инструменты уже были рассмотрены достаточно подробно, но тем не менее полного списка всех доступных еще не было.
Читать дальше →
Total votes 127: ↑115 and ↓12+103
Comments43

PHPUnit. Часть 03 Написание тестов для PHPUnit

Reading time9 min
Views50K
Предисловие переводчика
Эта статья продолжает серию переводов официальной документации по PHPUnit на русский язык.
Часть 1, Часть 2

Пример 4.1 демонстрирует как с помощью PHPUnit можно выполнить тестирование операций с массивами PHP. В этом примере показаны базовые соглашения и шаги, свойственные тестам PHPUnit:
Читать дальше →
Total votes 31: ↑23 and ↓8+15
Comments12

Материалы продвинутого уровня по Питону

Reading time5 min
Views44K
PythonВ мире все примерно распределяется в соответствии с принципом Паретто. Меньшая часть — богатые, большая часть — бедные (читающий, ты входишь в золотой миллиард). Тоже касается и материалов о программировании. Порой очень сложно найти хоть что-нибудь не начального уровня.

После прочтения Dive into Python или подобной ей и ознакомления с документацией возникает вопрос, а что читать дальше? Можно обратиться к списку книг на python.org. Там есть раздел Advanced Books, но в нем всего лишь 6 книг (седьмая не выходила), и только одну я бы назвал по-настоящему стоящей.

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

Ниже собраны сложные материлы про Питон, его устройство и возможности. Все на английском (грех, не знать технический английский). Про Dive into Python я слукавил. Большинство приведенных материалов требуют хорошее знание Питона и наличие опыта программирования на нем.

Подробнее
Total votes 136: ↑133 and ↓3+130
Comments23

Склад бесплатных иконок

Reading time1 min
Views164K
Прошелся по закладкам и образовалась такая толстенькая подборочка ресурсов с бесплатными и качественными иконками, с которой спешу поделиться с тобой %username%!

Iconfinder


image


Читать дальше →
Total votes 168: ↑151 and ↓17+134
Comments39

nginx + apache. Кеширование

Reading time4 min
Views20K
Привет, %username%
Тут я хочу рассказать о том, как я настраивал кеширование на одном сервере, точнее VDS. Характеристики сервера: 2000MHz, 2GB RAM, 80Gb HDD, технология виртуализации — OpenVZ.
Было решено использовать Nginx версии 0.7.64. На сервере находилось около 200 сайтов. И несколько высоко нагруженных проектов. Вот эти самые проекты и давали ощутимые тормоза и нагрузку на сервер. Мы будем рассматривать DLE в этом примере.
Читать дальше →
Total votes 79: ↑66 and ↓13+53
Comments38

Новогодний подарок хостерам: Как разместить на сервере 10000 клиентов или даже больше

Reading time4 min
Views1.6K
image

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

Следует отметить, что под клиентом воспринимается обычный аккаунт на LAMP (Linux+Apache+Mysql+PHP), с одним-двумя виртхостами и работающим со всеми опциями php.ini по умолчанию. Основное — это 16MB RAM и 30 сек исполнения. Вполне достаточно для большинства движков — Wordpress, Drupal и Joomla.
Читать дальше →
Total votes 102: ↑83 and ↓19+64
Comments169

Отладка Javascript

Reading time5 min
Views146K
Debug Logo

Многие задают мне один и тот же вопрос:
«Как дебажить этот $%*!%$! JavaScript?».

Так вот, во-первых JavaScript — не $%*!%$! А как я его дебажу — сейчас расскажу.

(Примечание: наверное эта статья больше для новичков. Так что не судите строго)

Читать дальше →
Total votes 192: ↑178 and ↓14+164
Comments78

Исправляем критическую уязвимость на FreeBSD в 4 шага

Reading time1 min
Views842
Наверное многие наслышаны об очень серьёзной уязвимости во FreeBSD (с 7.1 по 8.0), позволяющей получить root-доступ с под обычного пользователя (локально).
Ссылок на эксплоит выкладывать не буду, с целью чтобы было поменьше вредителей, но эксплоит только что собственноручно проверял и убедился в его работоспособности.

Дожидаться пока исправления включат в дерево cvs/svn у меня особого желания нет, да и систему вновь всю пересобирать как-то не очень тянет. Потому, предлагаю вашему вниманию более простой, но такой же эффективный способ исправления проблемы в четыре строчки:

% cd /usr/src/libexec/rtld-elf/
% fetch http://people.freebsd.org/~cperciva/rtld.patch
% cat rtld.patch | patch -p1
% make && make install && make clean

Всех благ!
Total votes 48: ↑41 and ↓7+34
Comments31

Information

Rating
Does not participate
Location
Praha, Hlavni Mesto Praha, Чехия
Date of birth
Registered
Activity