Pull to refresh
2
0
Nickolay @Nickolay

User

Send message

Наш опыт работы с Django, или 10 полезных модулей, облегчающих жизнь

Reading time4 min
Views38K
Бесценный опыт работы с Django, или Django для блондинок, брюнеток и всех-всех-всехПоследние 15 недель мы активно работали над проектом «Стиллион», первым нашим мейнстрим-проектом, написанным на Django. Был приобретен интересный опыт, которым мы хотели бы поделиться с сообществом.
Статья, прежде всего, будет интересна новичкам в Django.
За катом список полезных плагинов, которые мы использовали, и ещё немного клёвых фич
Total votes 108: ↑100 and ↓8+92
Comments59

Настройка среды nanoCAD для опытных пользователей

Reading time9 min
Views22K
Рано или поздно у опытного пользователя появляется необходимость расширить штатный функционал САПР своими скриптами и командами, автоматизирующими каждодневную рутину – мы регулярно получаем запросы на тему «как создать свое меню?», «как зарегистрировать свою команду?», «как прописать скрипт в среде nanoCAD?». В этой статье мы решили объединить типовые вопросы и подробно продемонстрировать на несложном примере как пользователь может настроить платформу nanoCAD под себя и сделать ее чуть более функциональной.



В качестве примера возьмем задачку по организации библиотеки .dwg-файлов — у каждого пользователя за время работы накапливается достаточно материалов, которые в последующей работе используются как типовые решения: элементы из старых чертежей, базы блоков и т.д. Мы рассмотрим один из возможных вариантов организации своей библиотеки блоков в среде nanoCAD, и параллельно покажем как зарегистрировать произвольную скрипт-функцию в меню и командной строке. По аналогии вы сможете написать более сложные скрипты и автоматизировать работу по другим направлениям (например, по расчетам, по графическим построениям, по связи с базой данных и т.п.)…
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments3

PyTest

Reading time24 min
Views360K

Предисловие


По историческому призванию я SQL-щик. Однако судьба занесла меня на BigData и после этого понесла кривая — я освоил и Java, и Python, и функциональное программирование (изучение Scala стоит в списке). Собственно на одном из кусков проекта встала необходимость тестирования кода на Python. Ребята из QA посоветовали для этих целей PyTest, но даже они затруднились толком ответить чем этот зверь хорош. К сожалению, в русскоязычном сегменте информации по данному вопросу не так уж и много: как это используют в Yandex да и все по-хорошему. При этом описанное в этой статье выглядит достаточно сложно для человека начинающего путешествие по этой стезе. Не говоря уже об официальной документации — она приобрела для меня смысл лишь после того, как я разобрался с самим модулем по другим источникам. Не спорю, там написаны интересные вещи, но, к сожалению, совсем не для старта.

Юнит-тестирование Python


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

Вводная по необходимым знаниям


На описываемый момент знания Python у меня были достаточно поверхностны — я писал кое-какие несложные модули и знал стандартные вещи. Но при столкновении с PyTest мне пришлось пополнять багаж знаний декораторами тут и тут и конструкцией yield.

Преимущества и недостатки PyTest


1) Независимость от API (no boilerplate). Как код выглядит в том же unittest:

Код
import unittest

class TestUtilDate(unittest.TestCase):
    def setUp(self):
        #init_something()
        pass
        
    def tearDown(self):
        #teardown_something()
        pass
        
    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')
        
    def test_isupper(self):
        self.assertTrue('FOO'.isupper())
        
    def test_failed_upper(self):
        self.assertEqual('foo'.upper(), 'FOo')
        
if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(TestUtilDate)
    unittest.TextTestRunner(verbosity=2).run(suite)


То же самое в PyTest:

Код
import pytest

def setup_module(module):
    #init_something()
    pass

def teardown_module(module):
    #teardown_something()
    pass

def test_upper():
    assert 'foo'.upper() == 'FOO'
    
def test_isupper():
    assert 'FOO'.isupper()
    
def test_failed_upper():
    assert 'foo'.upper() == 'FOo'


2) Подробный отчет. В том числе выгрузка в JUnitXML (для интеграции с Jenkins). Сам вид отчета может изменяться (включая цвета) дополнительными модулями (о них будет позднее отдельно). Ну и вообще цветной отчет в консоли выглядит удобнее — красные FAILED видны сразу.

image

3) Удобный assert (стандартный из Python). Не приходится держать в голове всю кучу различных assert'ов.

4) Динамические фикстуры всех уровней, которые могут вызываться как автоматически, так и для конкретных тестов.

5) Дополнительные возможности фикстур (возвращаемое значение, финализаторы, область видимости, объект request, автоиспользование, вложенные фикстуры)

6) Параметризация тестов, то есть запуск одного и того же теста с разными наборами параметров. Вообще это относится к пункту 5 «Дополнительные возможности фикстур», но возможность настолько хороша, что достойна отдельного пункта.

7) Метки (marks), позволяющие пропустить любой тест, пометить тест, как падающий (и это его ожидаемое поведение, что полезно при разработке) или просто именовать набор тестов, чтобы можно было запускать только его по имени.

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

9) Возможность запуска тестов написанных на unittest и nose, то есть полная обратная совместимость с ними.

Про недостатки, пусть их и не много, могу сказать следующее:

1) Отсутствие дополнительного уровня вложенности: Для модулей, классов, методов, функций в тестах есть соответствующий уровень. Но логика требует наличие дополнительного уровня testcase, когда та же одна функция может иметь несколько testcase'ов (например, проверка возращаемых значений и ошибок). Это частично компенсируется дополнительным модулем (плагином) pytest-describe, но там встает проблема отсутствия соответствующего уровня фикстуры (scope = “describe”). С этим конечно можно жить, но в некоторых ситуациях может нарушать главный принцип PyTest — «все для простоты и удобства».

2) Необходимость отдельной установки модуля, в том числе в продакшене. Все-таки unittest и doctest входят в базовый инструментарий Python и не требуют дополнительных телодвижений.

3) Для использования PyTest требуется немного больше знаний Python, чем для того же unittest (см. «Вводная по необходимым знаниям»).

Подробное описание модуля и его возможностей под катом.
Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments11

Создание канала с автопостингом в Телеграме без единой строчки кода

Reading time4 min
Views161K

Вступление


Предупреждаю сразу: технического в статье очень мало. Это практически пошаговая инструкция для не очень сведующих в техническом плане пользователей. Для людей сведущих (и тех, кому лень читать много текста), приведу две ссылки: Telegram Bots API + IFTTT Maker Channel.

Теперь подробнее. Думаю, все слышали про мессенджер Telegram. Вероятно, многие даже знают про нехитрый API для создания ботов в этом мессенджере. Кроме того, не так давно в T появилась возможность создавать так называемые «каналы» (channels), упрощающие мгновенную рассылку сообщений практически любому количеству подписавшихся на канал лиц. Наконец, самая свежая новость: ботов стало можно добавлять в качестве администраторов в каналы, то есть такие рассылки стало можно делать автоматизированно.

Думаю, не надо объяснять, что это открывает довольно широкие возможности для различных сервисов. Например, у меня довольно быстро получилось сделать следующее:
  • три канала (@RedditTop, @r_pics, @gone_wild — осторожно, последний с «взрослым» контентом), которые ежечасно импортируют топовые посты с Реддита (и двух его сабреддитов);
  • ещё канал, делающий то же с постами с 9GAG;
  • и, наконец, завел хитрого бота @JamesBot, который анонимно пересылает все сообщения, написанные ему, в общий канал (@secret_ru, @secret_en, @secret_es, @secret_ar или @secret_fa — в зависимости от языка). Получился анонимный чат средней степени трэшовости.

Уже после создания всех этих ботов и каналов мне пришло в голову, что простейший автоимпорт постов откуда-то «снаружи» можно наладить вообще без всякого кода и хостинга — буквально минут за 5. На помощь нам придет прекрасный сервис IFTTT — If This Then That, имеющий множество интеграций с социальными сетями и прочими сервисами. Правда, к сожалению, прямой интеграции с Телеграмом у него (пока?) нет — зато есть т.н. IFTTT Maker Channel, позволяющий делать простые HTTP(S)-запросы при срабатывании триггера. К сожалению, мы не сможем принимать сообщения, отправленные боту (входящие запросы IFTTT Maker принимать может, но, увы, только в строго определенном формате) — интерактива не выйдет. Зато сможем по срабатывании любого события (например, новый твит или пост в FB):
  • публиковать сообщение в канале,
  • отправлять сообщение в заранее выбранный чат (куда добавлен наш бот),
  • отправлять сообщение заранее указанному пользователю (который добавил себе бота).
Читать дальше →
Total votes 29: ↑25 and ↓4+21
Comments16

10 приложений для изучения Python на Android-устройствах

Reading time5 min
Views184K
В процессе изучения языка мы обычно пользуемся ПК для работы с соответствующими приложениями, средами, программами, читаем книги, используем массовые онлайн курсы. Сейчас, когда смартфоны с нами всегда и везде, грех не воспользоваться их возможностями для усвоения знаний по программированию или их усовершенствования.
image
В процессе изучения языка программирования, в частности Python, я считаю, что нужна погружаться в него полностью. Лозунг: «Ни дня без кода!» я дополняю, ну если ни кодить, то хотя бы почитать об этом. Для того чтобы не выходить из ритма в условиях, когда нужно в жизни сделать многое, но некогда, а хотелось бы учить Python, мобильный приложения помогут не тратить зря время в транспорте, во время ожиданий и т.д.Предлагаю список приложений из Google Play для изучения Python на Android-устройствах, которые помогут не только получить знания, но и проверить свой уровень по Python.Три из ниже перечисленных приложений я обязательно советую студентам при изучении Python: Learn Python, Quiz&Learn Python и Python Challenge. Ну теперь подробнее.
Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments6

Графики в GTK#

Reading time2 min
Views2.7K
У меня неоднократно возникала потребность строить в своих приложениях простые графики, но каждый раз под рукой не оказывалось подходящего инструмента. В этот раз я обнаружил библиотеку NPlot, которая показалась мне достаточно удобной.
Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments1

Паттерны проектирования для человеков.

Reading time4 min
Views29K
Была задача в максимально короткие сроки (зачет нужно было сдавать) человеку далекому от программирования объяснить паттерны на самом простом уровне.
В результате баланса простоты изъяснения и адекватности, образовалась эта шпаргалка.
Просьба оценить эту самую адекватность и простоту.
Читать дальше →
Total votes 36: ↑28 and ↓8+20
Comments23

Программная статья: религиозные войны

Reading time2 min
Views405
Есть такое развлечение в сети – устраивать религиозные войны. Многие думают '600й мерс – круто', но мало кто его водил. Просто как-то кто-то сказал, что круто, да и все. И если кто-то скажет, что БМВ выпустила прекрасную модель, то будут протестовать всячески, вот просто непреклонно протестовать.
Читать дальше →
Total votes 93: ↑59 and ↓34+25
Comments72

Имена системных цветов в CSS

Reading time2 min
Views1.6K
C несказанной радостью обнаружил, что в стандарте CSS2 есть поддержка системных цветов. Думаю таблица ниже будет интересна всем кто когда-нибудь пытался откатить значения CSS до дефолтных. Вся эта радость подходит для всех браузеров начиная с IE 5 и Netscape 5.

Название цвета Описание
ActiveBorder Active window border.
ActiveCaption Active window caption.
AppWorkspace Background color of multiple document interface.
Background Desktop background.
ButtonFace Face color for three-dimensional display elements.
ButtonHighlight Dark shadow for three-dimensional display elements (for edges facing away from the light source).
ButtonShadow Shadow color for three-dimensional display elements.
ButtonText Text on push buttons.
CaptionText Text in caption, size box, and scrollbar arrow box.
GrayText Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.
Highlight Item(s) selected in a control.
HighlightText Text of item(s) selected in a control.
InactiveBorder Inactive window border.
InactiveCaption Inactive window caption.
InactiveCaptionText Color of text in an inactive caption.
InfoBackground Background color for tooltip controls.
InfoText Text color for tooltip controls.
Menu Menu background.
MenuText Text in menus.
Scrollbar Scroll bar gray area.
ThreeDDarkShadow Dark shadow for three-dimensional display elements.
ThreeDFace Face color for three-dimensional display elements.
ThreeDHighlight Highlight color for three-dimensional display elements.
ThreeDLightShadow Light color for three-dimensional display elements (for edges facing the light source).
ThreeDShadow Dark shadow for three-dimensional display elements.
Window Window background.
WindowFrame Window frame.
WindowText Text in windows.

Пример: тест системных цветов
Total votes 50: ↑43 and ↓7+36
Comments18

Осторожно, скользко! Играемся с изображением в ПХП. Эффект мокрого пола.

Reading time1 min
Views751
Как реализовать эффект мокрого пола?

А все очень просто!

Надо всего лишь зайти под “cut” и посмотреть… =)

Задача: реализовать эффект мокрого пола

Решение: PHP + GD
Читать дальше →
Total votes 32: ↑27 and ↓5+22
Comments27

Озвучка закрытия и открытия крышки ноутбука и синтез речи в Ubuntu

Reading time3 min
Views1.4K
Можно заставить ноутбук разговаривать при открытии и закрытии крышки, это поднимет настроение вам и повеселит ваших друзей.

Выглядеть это будет примерно так: видео на youtube.

Причем речь мы будем синтезировать, то есть, вы пишите текст, а ноутбук будет это произносить. Естественно, таким образом вы сможете настроить, что именно будет произносить ваш ноутбук, когда вы закрываете крышку.

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

Краткий обзор лучших средств для построения графиков и диаграмм.

Reading time1 min
Views3.7K
Из всех наведенных примеров мне больше всего понравился Open Flash Chart. Который я заслужено поставил на первое место. Все остальные, мне показались тоже не плохими но для работы я выбрал именно Open Flash Chart.
Open Flash Chart – FLASH компонент для построения диаграмм. Он имеет много настроек и легко взаемодействует с PHP, Perl, Python, Java, Ruby on Rails, and .Net. Также может читать данные с .txt файлов.

смотреть другие скрипты для построения графиков и диаграмм
Total votes 21: ↑21 and ↓0+21
Comments14

Альтернативные потоки данных в NTFS или как спрятать блокнот

Reading time2 min
Views56K

Введение


Поддержка альтернативных потоков данных (AltDS) была добавлена в NTFS для совместимости с файловой системой HFS от Macintosh, которая использовала поток ресурсов для хранения иконок и другой информации о файле. Использование AltDS скрыто от пользователя и не доступно обычными средствами. Проводник и другие приложения работают со стандартным потоком и не могут читать данные из альтернативных. С помощью AltDS можно легко скрывать данные, которые не могут быть обнаружены стандартными проверками системы. Эта статья даст основную информацию о работе и определении AltDS.
продолжение
Total votes 97: ↑93 and ↓4+89
Comments53

Разговорный английский за месяц

Reading time5 min
Views21K
Перепечатано с моего ЖЖ.

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

Читать дальше →
Total votes 9: ↑6 and ↓3+3
Comments220

Библиотека шпаргалок для разработчика

Reading time1 min
Views1K
На сайте http://www.addedbytes.com/, имевшем раньше более приятное имя (ILoveJackDaniels.com), можно найти отличные шпаргалки на темы:

* ASP / VBScript
* CSS
* HTML Character Entities
* HTML
* JavaScript
* Microformats
* mod_rewrite
* MySQL
* PHP (V1)
* PHP (V2)
* Regular Expressions
* RGB Hex Colour Chart
* Ruby on Rails
* SQL Server
* World of Warcraft

коллекция пополняется. Как видно — есть шпаргалки и для геймеров:)
Total votes 20: ↑13 and ↓7+6
Comments1

Версия для печати: HTML vs CSS vs JavaScript

Reading time3 min
Views1.9K
В век современных технологий, когда все больше и больше сайтов поддерживает Google Gears, или другие способы оффлайнового просмотра документов, создание вменяемых версий для печати отходит на второй план. Тем не менее, огромное количество «мастодонтных» пользователей упрямо распечатывают страницы сайтов, чтобы потом почитать в дороге или дома. Параллельно, естественно, матеря на чем свет стоит разработчиков сайтов, которые не смогли предусмотреть вменяемый способ распечатать только нужную информацию.

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

Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments27

Приложения Linux на Windows? Легко!

Reading time1 min
Views1.3K
Сегодня, Ulteo объявила о начале бета-теста нового приложения, Ulteo Virtual Desktop.
Ulteo Virtual Desktop – это новая система от Ulteo, которая позволяет запускать в среде Windows различные приложения Linux, в том числе Firefox, Openoffice, Kopete и Konqueror.

Также, эта система предлагает различные сервисы, которые доступны в Ulteo Application System. Это включает в себя автоматические системные обновления, обновления программ, синхронизация документов и данных через Интернет с Ulteo.

После установки Ulteo Virtual Desktop предлагает специальное меню, которое позволяет запускать самые разные open-source приложения.

Что важно, приложения могут получать доступ к файловой системе Windows и имеют доступ к принтерам. Звук также поддерживается.

Производительность приложений – сильное место данного решения. Это не обычная вирутализация, а использование специального ядра Linux для запуска приложений.

Читать дальше →
Total votes 32: ↑29 and ↓3+26
Comments54

Видео об OpenID на русском

Reading time1 min
Views726
Давно хотел сделать подобный ролик, и вот, наконец дошли руки.
За 3 минуты рассказывается о том, что такое OpenID и как начать им пользоваться. Рекомендуется для младшего и среднего интернет-возраста ;)

Ютуб сж(ев)ал некоторые надписи, но разобрать можно.
Total votes 43: ↑38 and ↓5+33
Comments40

A списки todo действительно работают.

Reading time2 min
Views2.2K
Когда по неким причинам в жизни я стал раздолбаем и несобранной сущностью, то использование списков todo действительно помогло собраться. Спасибо хабралюдям за рекомендацию. Однако, мои todo отличаются от стандартных и описанных ранее, вполне возможно, что описание того, как я их веду поможет разработчикам соответсвующего софта, ну, или другим людям побыстрее найти оптимальную для себя форму их ведения.

Читать дальше →
Total votes 38: ↑35 and ↓3+32
Comments73

Philips Xenium 9@9k: два месяца на одной зарядке

Reading time1 min
Views3.4K
Philips Xenium 9@9kТелефоны Philips давно зарекомендовали себя, как исключительно живучие и неприхотливые аппараты, сочетающие в себе кроме того много других привлекательных качеств. Правда для меня каждая новая модель обязательно была лишена чего-то неуловимо мне необходимого: не устраивал дизайн, или разбалансированная техническая начинка, или цена, оправдать которую для себя было сложно. Но, похоже, настал тот час, когда Philips воплотил-таки мои мечты о телефоне на каждый день и на века. В Россию начались поставки телефона Xenium 9@9k.

Главная особенность этого агрегата — увеличенный вдвое по сравнению с прошлыми рекордсменами срок работы от одной подзарядки. В режиме ожидания он составляет 2 месяца (!), а в режиме разговора — 17 часов. Также могучая батарейка позволит вам слушать музыку во встроенном MP3-плеере в течение 35 часов. Чего в общем должно хватить, чтобы заслушать все содержимое флешки на 2 Гб (в комплекте идет 128 Мб MicroSD). А еще там есть радио. А еще он симпатичный. И небольшой. А еще его рекомендованная цена — 4 000 рублей.

Теперь, когда вы уже полезли в интернет в поисках мест, где его можно купить (за мной будете!), стоит заметить, что с конца 2006 года все производство мобильных телефонов под маркой Philips принадлежит компании China Electronics Corporation. Самый, пожалуй, европейский бренд — китайский. Но молодцы ведь, а!
Total votes 39: ↑35 and ↓4+31
Comments83

Information

Rating
Does not participate
Location
Железногорск, Красноярский край, Россия
Date of birth
Registered
Activity