Pull to refresh
4
0
Александр @nynepro

User

Send message

Тестирование. Начало

Reading time4 min
Views125K

Привет. В этой серии постов я попробую рассказать про тестирование кода на питоне, в частности проектов django. Мы рассмотрим модульное тестирование (юнит-тесты), статический анализ кода и некоторые подводные камни тестирования веб-сайтов.

Вводную часть о пользе тестирования опустим — код, покрытый тестами, становится мягким и шелковистым, про это только ленивый еще не читал / писал.
Читать дальше →
Total votes 130: ↑119 and ↓11+108
Comments16

NumPy, пособие для новичков. Часть 1

Reading time19 min
Views243K
NumPyLogoNumPy — это расширение языка Python, добавляющее поддержку больших многомерных массивов и матриц, вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами.

Первая часть учебника рассказывает об основах работы с NumPy: создании массивов, их атрибутах, базовых операциях, поэлементном применении функций, индексах, срезах, итерировании. Рассматриваются различные манипуляции с преобразованием формы массива, объединение массивов из нескольких и наоборот — разбиение одного на несколько более мелких. В конце мы обсудим поверхностное и глубокое копирование.
Читать дальше →
Total votes 69: ↑65 and ↓4+61
Comments39

Почему читабельность кода имеет значение?

Reading time7 min
Views5.2K
Понятно, что напрашивающийся (и правильный) ответ — «Потому что код приходится не только писать, а и читать». Едва ли этот ответ стоит целого поста, но автор им не ограничивается.

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

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

Разработчики не только пишут код — большую часть нашего времени мы добавляем, убираем и редактируем небольшие его фрагменты, фактически вносим мелкие изменения в огромный код. Независимые фрагменты кода, написанные с нуля, попадаются редко — если, конечно, мы не начинаем новый проект. Большинство наших проектов — наследие многих поколений разработчиков до нас. Что бы мы ни делали — добавляли новую функциональность или изменяли старую — нам приходится читать код, чтобы выяснить, какая команда что делает и как лучше всего реализовать нашу задумку. Даже при работе над совершенно независимым модулем или классом, как только мы написали первые строки, нам приходится возвращаться к ним снова и снова, чтобы вплетать в них новый код.

Читать дальше →
Total votes 80: ↑65 and ↓15+50
Comments28

PyGTK: потоки и магия обёрток

Reading time9 min
Views5.4K
Всем хорош GTK+, но наблюдается большая проблема при работе с ним в многопоточных приложениях. Сам по себе GTK является thread-safe, но требуя принудительной блокировки со стороны пользователя. Вторая проблема заключается в том, что блокировка реализована через мутексы, и вы должны вызывать блокировку строго один раз, иначе ваш код «зависнет» на linux, прекрасно при этом работая на windows.
Как бороться?
Total votes 29: ↑27 and ↓2+25
Comments9

Что такое Ogre 3D и как его едят

Reading time4 min
Views27K
Ogre 3D – это кросс-платформенное SDK для создания графических приложений. Она имеет довольно обширные возможности, такие как полная поддержка OpenGL и Direct3D, полная совместимость с платформами Windows, Linux, Mac OS X и iOS, поддержка широкого выбора файловых форматов, продвинутая система частиц, программирования GPU и всех шейдерных языков высокого уровня и многое другое.

Если стало интересно, то прошу под кат.
Читать дальше →
Total votes 54: ↑46 and ↓8+38
Comments23

Dropbox — продолжаем меряться

Reading time3 min
Views13K
Скучно работается… Ну что же. попытаемся ещё больше автоматизировать то что предлагалось тут и здесь =)

На этот раз у нас остаётся лишь basy-скрипт. который позволяет довольно просто и вполне интерактивно нащёлкать себе рефералов. Да, MAC адрес автоматически обновляется, поэтому необходимость в виртуальной машине по сути отпадает… Хотя я бы всё же рекомендовал производить манипуляции со скриптом на ней. Ну просто потому что в процессе своей работы скриптик периодически затирает конфиг дроп-бокса.

Смотрим чего вышло и что с этим делать…
Читать дальше →
Total votes 180: ↑132 and ↓48+84
Comments73

Dropbox – получаем 9GB за один час

Reading time3 min
Views13K

Буквально пару дней назад я столкнулся той же проблемой, что и товарищ, приславший прошлую статью, а именно – как на халяву заиметь (да побольше) свободного пространства на Dropbox’e?
Лично мне, мое же решение кажется более изящным и практичным, а вам лишь остается сделать свой собственный выбор.
Читать дальше →
Total votes 133: ↑90 and ↓43+47
Comments78

Как и почему следует разбивать диск в никсах

Reading time3 min
Views64K
Один из довольно частых вопросов на различных околониксовых ресурсах — вопрос о том, какую схему разбивки дисков использовать. С виду простой вопрос на самом деле таит в себе множество подводных камней. Если, конечно же, дело касается серверов. На десктопах все гораздо скучнее и серее.

Универсального решения в данном вопросе нету, просто есть некоторые аспекты, которыми следует руководствоваться при выборе схемы разбивки.
Читать дальше
Total votes 236: ↑213 and ↓23+190
Comments141

Настройка сервера для django-проектов с нуля

Reading time6 min
Views41K
Хочу поделиться опытом настройки сервера для django-проектов. Так вышло, что мне часто приходится настраивать с нуля VPS-сервера для запуска на них django-сайтов. Как-то мне в голову пришла идея записать пошагово процесс настройки. Оказалось, что “по бумажке” выполнять эти рутинные операции гораздо проще и быстрее — все нюансы записаны, трудно что-то упустить. Дальше больше — я превратил инструкцию в самостоятельный shell-скрипт — запустил и сервер готов. Я думаю, некоторым python-разработчикам, особенно начинающим, будет полезно ознакомиться с содержимым скрипта. С некоторыми доработками вы, возможно, захотите использовать его в своей практике.
Читать дальше →
Total votes 111: ↑100 and ↓11+89
Comments56

Лучшие шрифты для программирования

Reading time4 min
Views247K
Статья написана в 2009 году, и с тех пор многое изменилось, в том числе появились некоторые альтернативные шрифты для программирования, например, Anonymous Pro.

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

Я выкладываю список из десяти моноширинных шрифтов, готовых к использованию. Некоторые из них идут в комплекте с современными операционными системами, но большинство можно бесплатно скачать из интернета. Отдельные, в том числе Consolas, являются частью коммерческого ПО.
Читать дальше →
Total votes 178: ↑161 and ↓17+144
Comments193

Тюнинг Canabalt

Reading time7 min
Views2.6K
Была предпринята попытка сохранить оригинальную орфографию, шутки и пунктуацию. И, да, данный пост — перевод статьи создателя Canabalt, не думайте, что игру создал я.

image

[Эта статья рассматривает технические особенности, соотношения и размеры Flash версии игры Canabalt. Читатель, будь осторожен, статья содержит спойлеры и большое количество цифр!]

Друзья часто спрашивают меня: думал ли я о том, чтобы выложить исходный код моей Flash игры Canabalt в интернет на растерзание и изучение. Они думают, что для людей будет полезно увидеть, как в игре организована физика и другие вещи. Но я отношусь с опасением к этой идее, на это у меня есть несколько причин, например: исходный код игры написанный за 5 дней, представляет из себя кошмарный и отвратительный спагетти-код, который вряд ли поможет кому-нибудь. Поэтому, из чувства гордости по поводу первого дня рождения Cannabalt, я подумал: «почему бы не написать статью, в которой бы рассказывалось о том, как внутри всё устроено?»
Читать дальше →
Total votes 62: ↑60 and ↓2+58
Comments30

Поддержка гибридных графических карт

Reading time3 min
Views9.8K
В последнее время на рынке ноутбуков появляется всё больше и больше моделей, содержащих не одну, а сразу две графические карты. Первая обычно от Intel, малопроизводительная и не жадная к батарее, и вторая от NVIDIA или ATI, берущая на себя тяжёлые задачи и требовательные игры, в то же время очень прожорливая в отношении к заряду батареи. Практически всё время работает первая графическая карта, вторая начинает работать, как только в ней возникает необходимость, и находится в отключённом состоянии всё остальное время.

Поддержкой Windows производители озаботились в полной мере, что не удивительно. Всё работает практически «из коробки», достаточно поставить нужный набор драйверов.

Под Linux пока что не всё так гладко.
Total votes 40: ↑39 and ↓1+38
Comments29

Как управлять виртуальными машинами, если их много

Reading time6 min
Views18K
После того, как у нас вышли в релиз еще несколько проектов, а количество тикетов в трекере на тему «создать пользователя, развернуть виртуалку, дать доступ» превысило все мыслимые пределы, назрела необходимость что-то менять.
Задача: организовать рабочее окружение linux для нескольких команд разработчиков и тестировщиков. Общее количество виртуальных машин — три-четыре десятка.

image
Читать дальше →
Total votes 75: ↑69 and ↓6+63
Comments36

Учим bash-скрипты, пишем Sokoban

Reading time4 min
Views138K
Мне кажется, что на свете еще есть люди, которые хорошо знают несколько языков программирования, но при этом не пишут скриптов для bash, потому что скриптовый язык bash выглядит для них слишком странным. Чтобы доказать, что bash — это несложно, я написала игру Сокобан (или Грузчик, кому как нравится), и хочу рассказать, как она работает.
Краткая справка по bash, скриншот игры, исходный код и ссылка на файл - под катом
Total votes 170: ↑164 and ↓6+158
Comments67

Установка и настройка rtorrent+rutorrent+nginx+php-fpm в Arch Linux

Reading time5 min
Views18K

Предыстория


Для работы с торрентами я достаточно долго использовал ktorrent. Сей клиент мои потребности в удобном управлении закачками удовлетворял полностью, пока я не заметил, что на популярных торрентах загрузка процессора доходила до 50% (а с uTP — ещё больше), а потребление памяти в и без того жирном KDE стало неприятно бросаться в глаза.

Было решено сменить KDE на xfce (это отдельная история), а программу для торрентов подобрать с хорошим функционалом и удобным управлением. Перепробовав transmission, deluge и rtorrent, я остановлися на последнем.

О том, как настроить rtorrent+rutorrent+nginx+php-fpm, и будет под катом.
Читать дальше →
Total votes 62: ↑50 and ↓12+38
Comments50

Gnome 3 — конец близок?

Reading time5 min
Views42K
Как-то один мой знакомый обречённо рассказывал, что вскоре будет подыскивать другой дистрибутив для работы. По его словам, разработчики Ubuntu собирались провести смелый эксперимент по замене классического gnome на интерфейс Unity. Сам я на этот счёт не особо волновался, так-как пересел с Ubuntu на Fedora уже довольно давно. Но, на всякий случай, порылся в интернете — узнал, что ждёт мой дистрибутив. Как выяснилось, Fedora 15 должна была основываться на долгожданном Gnome 3.

Читать дальше →
Total votes 112: ↑91 and ↓21+70
Comments192

Улучшаем GNOME 3

Reading time2 min
Views98K
Привет, Хабралюди!

image

После обновления своего дистрибутива (Russian Fedora) я столкнулся с большим количеством проблем в GNOME 3. В этой статье я постараюсь описать все, собранные мной, методы их решения. Кому интересно, под кат!
Читать дальше →
Total votes 77: ↑60 and ↓17+43
Comments115

Реализация графов и деревьев на Python

Reading time17 min
Views284K
Продолжаем публикацию наиболее интересных глав из книги Magnus Lie Hetland «Python Algorithms». Предыдущая статья расположена по адресу habrahabr.ru/blogs/algorithm/111858. Сегодня же речь пойдет об эффективной работе с графами и деревьями и особенностях их реализации в Python. Базовая терминология теории графов уже обсуждалась (например здесь: habrahabr.ru/blogs/algorithm/65367), так что я не включил часть главы о терминах в эту статью.

Реализация графов и деревьев


Многие задачи, например, задача обхода точек по кратчайшему маршруту, могут быть решены с помощью одного из мощнейших инструментов — с помощью графов. Часто, если вы можете определить, что решаете задачу на графы, вы по-крайней мере на полпути к решению. А если ваши данные можно каким-либо образом представить как деревья, у вас есть все шансы построить действительно эффективное решение.
Читать дальше →
Total votes 63: ↑61 and ↓2+59
Comments24

Процессный подход к проектированию интерфейсов

Reading time8 min
Views6K
На хабрахабре регулярно публикуются статьи о юзабилити. Некоторые вещи, которые в них говорятся обычно достаточно очевидны, некоторые требуют серьезной подготовки. Однако во всех них чего-то не хватает.

А не хватает одной детали – если юзабилити занимается удобством пользования, то почему никто не обращает внимания на само использование? Не на кнопочки в интерфейсе, а на сам процесс работы с сервисом от начала и до конца. Причем как внешними пользователями, так и внутренними, что может быть даже более важно.

Если вам интересна такая проблематика, пойдем дальше и рассмотрим процессный подход к проектированию информационных систем, куда конечно же относятся и вопросы юзабилити.
Читать дальше →
Total votes 57: ↑51 and ↓6+45
Comments20

ConfigParser и Unicode

Reading time3 min
Views17K
В Python есть очень удобный модуль для сохранения и чтения ini-подобных конфигурационных файлов, который называется ConfigParser.

У меня при его использовании возникла проблема, связанная с сохранением в файл Unicode-строк. В некоторых трудноуловимых случаях (например, у меня это проявилось при работе приложения под Windows XP) при чтении или записи таких параметров выскакивает ошибка конвертации строк.

В интернете мне не удалось найти готовых решений, хотя вопросов о том «как сделать чтобы всегда работало» довольно много — обычно отвечают в духе «просите автора модуля это исправить».

Хочу предложить свое решение для тех, кто использует Python 2.X — оно довольно простое и помогает решить эту проблему.

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

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Registered
Activity