Pull to refresh
0
0
Send message

Подборка бесплатных инструментов для разработчиков

Reading time 28 min
Views 186K
Сегодня мы представляем вашему вниманию адаптированную подборку инструментов (в том числе облачных) для разработчиков, которые позволяют создавать по-настоящему качественные проекты. Здесь представлены исключительно SaaS, PaaS и IaaS сервисы, предоставляющие бесплатные пакеты для разработчиков инфраструктурного ПО.

Читать дальше →
Total votes 96: ↑89 and ↓7 +82
Comments 38

PyTest

Reading time 24 min
Views 357K

Предисловие


По историческому призванию я 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
Comments 11

«Альфа-банк» меняет SMS на USSD-сообщения

Reading time 2 min
Views 22K
«Альфа-банк» продолжает переделывать «Альфа-клик»: теперь там появилось предупреждение для пользователей, что вскоре одноразовые пароли пользователям будут отправляться не по SMS, а передаваться посредством USSD.


Читать дальше →
Total votes 22: ↑18 and ↓4 +14
Comments 63

Ruby: cheatsheet для изучения

Reading time 14 min
Views 59K
Это — статья-roadmap-cheatsheet для изучающих Ruby. Вместо того, чтобы рассказывать очередной how-to я постараюсь расписать все те вещи, которые, на мой взгляд, можно изложить кратко и емко, с упором на то, что программисту пришедшему с других языков и платформ может показаться не очевидным, антипоисковым и просто затратным по времени на изучение без подсказок — на остальное просто дам ссылки. Не смотря на то, что в природе существует множество туториалов/кастов/книг/чего угодно по чему угодно — именно такого формата мне самому всегда не хватает. И по сути, это те вещи, которые чаще всего рассказываю при вопросах «а как оно вообще?», «с чего начать?», «а как делается такая вот штука?», «а какой gem лучше?». Кстати, пока работал над этой статьей на Хабре появилась похожая про Python — видимо, идея витает в воздухе.
Читать дальше →
Total votes 49: ↑49 and ↓0 +49
Comments 20

Twitter Bootstrap и SharePoint. Как заставить Bootstrap корректно работать под SP

Reading time 4 min
Views 12K

Зачем использовать Bootstrap?


Разрабатывая и дорабатывая решения на основе SharePoint, я всё больше стал сталкиваться с повышенными ожиданиями пользователей от стандартных форм создания и редактирования элементов. Всех окружают такие удобные и привычные Яндекс, Gmail, Facebook, VK и другие. Симпатичные, быстрые и понятные интерфейсы стали нормой. Многие ожидают интерфейсы подобного уровня и в корпоративных системах.
Читать дальше →
Total votes 10: ↑8 and ↓2 +6
Comments 10

Канцерогенные излучения. Скандалы, интриги, расследования!

Reading time 4 min
Views 6.6K
На днях пришлось мне разослать по всей компании письмо. Думаю, что у каждого админа были, есть и будут на обслуживании идиоты, расставляющие кактусы вокруг монитора и одевающие «антикомпьютерные очки».
Для таких индивидуумов и было написано письмо. Остальные просто посмеялись.

Текст письма под катом.
Читать дальше →
Total votes 138: ↑129 and ↓9 +120
Comments 76

Теперь Jolicloud на базе Chrome

Reading time 3 min
Views 1.8K
imageJolicloud, один из выдающихся проектов в сфере облачных операционных систем, только что выпустила свою новую платформу на базе движка Chrome. Новая операционная система уже имеет в наличии более 600 веб-приложений, готовых для решения повседневных задач. Также система отличается быстротой и поддержкой HTML5. Особенно интересен этот факт перехода со старого движка Mozilla на новый, в свете того, что Google сам собирается вскоре выпустить Chrome OS для нетбуков, заручившись поддержкой производителей железа. Будут ли успешны попытки open source проекта Jolicloud занять нишу и предоставит пользователю интересную альтернативу? Или же эта ОС станет еще одним провальным проектом в гонке за первенство в облачных системах?

Jolicloud всегда была компанией, за которой было интересно наблюдать. Задолго до того, как Google публично анонсировала свою нетбук-ориентированную ОС, Jolicloud уже смоделировала и предоставила свое будущее, в котором компьютеры запускают приложения, работающие в интернете, а не в локальной среде. Jolicloud OS обещает внести новое понятие в использовании компьютера, и это понятие — «облачность».

С крайне простым интерфейсом Jolicloud позволяет запускать браузер и использовать такие приложения, как Twitter, Facebook, Gmail, Skype, Boxee, Meebo, Dropbox и сотни других приложений. К сожалению или нет, точно то же самое будет делать и Google Chrome OS. И абсолютно точно к несчастью Jolicloud, Chrome OS будет иметь за плечами силу бренда компании Google.

Так что же остается Jolicloud?
Читать дальше →
Total votes 34: ↑25 and ↓9 +16
Comments 11

Учите японские азбуки

Reading time 2 min
Views 5.3K
Если вам необходимо или интересно учить японский язык, то, вы вероятно, начнете с изучения слоговых азбук, хираганы и катаканы. Для этого я с удовольствием пользовался программой iKana, но многие мои знакомые не могут сделать того же, потому что разработчик пишет софт только для Mac OS X (да ещё и берет за это 12 €).

Я всегда считал, что изучение слов незнакомого языка «по карточкам», да ещё в виде интерактивного теста — самый эффективный и гиковский способ.

Поэтому я набросал небольшой сайтик, http://tr.im/learnkana, где можно потренироваться в изучении символов каны. Поначалу вы не будете иметь ни малейшего понятия, какой знак перед вами. Просто выбирайте тот вариант, который вам кажется верным, а через некоторое время вы начнете запоминать их, и правильных ответов станет больше. Когда вы сможете легко проходить первый тест, переходите ко второму, а потом к третьему, и так далее.
Читать дальше →
Total votes 130: ↑112 and ↓18 +94
Comments 174

Приручение Notepad++

Reading time 5 min
Views 6.3K
Уже пару лет использую Notepad++ в качестве основного текстового редактора. До него была ColdFusion Studio 4.5.2, которая очень даже устраивала. Вот только она небесплатная и несколько тяжеловесная. Лицензионнной Студии нынче у меня нет, а пользоваться варезом при наличии фришных альтернатив давно кажется мне неправильным. Кроме того, ломалка к Студии (loader) определяется антивирусами как малварь (разбираться желания не было, к тому же антивирусы вечно норовят этот лоадер снести, что не добавляет комфорта в работе). Переходить на всякие варианты на базе Eclipse желания не было и нет: терпеть не могу тяжеловесный софт. По совету друзей попробовал Notepad++ aka NPP, понравилось. Особенно порадовало, что несколькими движениями NPP превращается в близкое подобие любимой CFStudio. Время от времени пробовал ряд других редакторов (например, несколько из этого списка: http://en.wikipedia.org/wiki/Comparison_of_text_editors), ничто не приглянулось. Вернулся к уже привычному Notepad Plus Plus.

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

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

Итак, что нам нужно, чтобы обустроить NPP и сделать его местом, пригодным для жизни
  1. Плагин Explorer, чтобы ходить по файловой системе, не вылезая из NPP (привык в CFStudio, удобно)
  2. Клавиатурные шорткаты для часто используемых конструкций вроде   и HTML-тегов.
  3. Подсветка синтаксиса (мне нужен синтаксис CFML, помимо прочих).
  4. Контекстная справка (по тому же CFML).
  5. Автоматическое закрытие тегов.

Читать дальше →
Total votes 36: ↑27 and ↓9 +18
Comments 54

What is Tumblr?

Reading time 2 min
Views 28K

За последние 3 дня около 10 моих друзей (как виртуальных, так и реальных) зарегистрировались на тумблере, что навело меня на мысль о том, что этот сервис станет вскоре очень популярным. Несмотря на полностью английский интерфейс, и практически отсутствие главного признака вебдваноль – комментариев – сервис растет не по дням, а по часам. Несмотря на это, я с удивлением обнаружил, что на хабре нет ни одной публикации, рассказывающей толком что такое Tumblr. Итак, что же это такое?
Читать дальше →
Total votes 119: ↑91 and ↓28 +63
Comments 115

Вардрайвинг в MAC OS X

Reading time 5 min
Views 96K


Стандартом де-факто в вардрайвинге обычно считается система Linux (модифицированные драйвера, Kismet в связке с aircrack-ng). Но немногие знают, что в маке есть мощные инструменты для взлома аудита безопасности беспроводных сетей, ни чуть не уступающие, а во многом и превосходящие по функционалу Linux-аналоги.
UPD: Описанные в статье инструменты на сегодняшний день устарели. Рекомендуется использовать Linux

Читать дальше →
Total votes 93: ↑82 and ↓11 +71
Comments 89

Настраиваем внешний вид Windows 7

Reading time 4 min
Views 344K
В последнее время я стал замечать, что большая часть пользователей «семерки» используют стандартную тему оформления, которую разработчики ласково назвали Aero.

На мой взгляд, она излишне ориентирована на планшеты. Об этом нам говорят огромные кнопки управления окном и излишне широкие заголовки и рамки окон — все это придает интерфейсу некоторую громоздкость. Кроме того, разработчики перемудрили с разнообразием цветовой гаммы: все эти прозрачности, переливания, градиенты и прочие изыски создают своеобразный эффект грязи.

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

Поехали!
Total votes 263: ↑181.5 and ↓81.5 +100
Comments 167

oDesk (Upwork). Мой опыт за полтора года

Reading time 12 min
Views 445K
Вот уже полтора года я зарабатываю фрилансом на бирже oDesk. За это время у меня накопилось много материалов по данной теме. В данном топике я собрал все в одну статью и адаптировал для аудитории хабра.
image
Читать дальше →
Total votes 192: ↑185 and ↓7 +178
Comments 321

Скринкаст по Node.JS

Reading time 2 min
Views 11K
Всем привет!

Если вы — разработчик, то вам наверняка известно: большинство полезной документации и скринкастов делается на английском.

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

Хотелось бы поменять эту ситуацию, с вашей помощью, хотя бы в плане Node.JS. Если проект будет успешен, то, возможно, и не только.



Читать дальше →
Total votes 81: ↑70 and ↓11 +59
Comments 23

Советы Google по кодированию на языке Python. Часть первая: советы по программированию

Reading time 13 min
Views 113K

Хай, Хабр!
Сегодня я хочу представить, дорогому хабрасообществу свой первый хабраперевод. Программировать на языке Python — подобно песне. Но еще лучше, когда Ваш код читаем и понятен, а значит чуть более поэтичен, чем обычно бывает производстве. У каждого свои правила и свои стереотипы относительно написания и оформления исходного кода, на каком бы языке он ни был написан. Множество копий сломано о щиты на форумах, но, как ни крути, нельзя не считаться с мнением авторитетных товарищей. Так что сейчас будет представлен перевод первой части стайл-гайда для языка Python от Google. Коснется он именно постулатов написания кода (вторая часть тоже скоро появится, а посвящена она будет форматированию исходного кода). Сразу предупреждаю: тут много (если не большая часть) прописных истин, которые все знают уже давно. Но я искренне надеюсь, что Вы сможете найти тут что-то новое или хотя бы вспомнить старое. Приступим под катом. И pdf тут как тут.
Читать дальше →
Total votes 122: ↑109 and ↓13 +96
Comments 58

Прощай, Zen Coding. Привет, Emmet!

Reading time 5 min
Views 248K

Еще в 2009 году, image Сергей Чикуёнок опубликовал статью, в которой представил новый способ написания HTML и CSS кода. Этот революционный плагин, назывался Zen Coding, он помогал многим разработчикам на протяжении многих лет и в настоящее время вышлел на новый уровень.

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

Для тех, кто предпочитает смотреть, а не читать, вот видео любимых трюков автора.

Читать дальше →
Total votes 152: ↑123 and ↓29 +94
Comments 112

jQuery изнутри — введение

Reading time 6 min
Views 102K
По работе мне несколько раз приходилось участвовать в собеседовании кандидатов на должность клиент-сайдера у нас в компании, смотреть на их познания в Javascript. Удивительно что никто из них не знал толком как же работает jQuery изнутри, даже те, кто отметил свои знания jQuery уровнем «отлично», увы.

У jQuery очень низкий порог вхождения, о нем часто пишут и используют всюду, где только можно (и даже там, где, в общем-то, не нужно), поэтому некоторые даже не смотрят на чистый Javascript. Зачем, мол, его знать, когда есть jQuery, а по нему — тонны примеров и готовых плагинов? Даже на Хабре видел статью про рисование на Canvas, где автор подключил jQuery и использовал его только один раз — для того, чтобы получить доступ к Canvas по его идентификатору. И не считал это чем-то ненормальным.

Извините, отвлекся. Суть поста и следующих частей серии в том, чтобы рассказать о том, как же работает библиотека изнутри и что же в ней происходит по мере выполнения каких-то методов.
Готов и хочу читать дальше
Total votes 149: ↑139 and ↓10 +129
Comments 80

Подключение сторонних инструментов в IntelliJ IDEA на примере pylint

Reading time 2 min
Views 12K
В этом посте я хочу рассказать про довольно интересную фичу IntelliJ IDEA — подключение сторонних утилит, а также продемонстрировать её на довольно типичном примере: я подключу pylint — анализатор кода для python проектов.

External Tools


В IDEA есть интересная возможность использовать сторонние утилиты из интерфейса самой IDE. Добавлять таким образом можно всё что угодно — скрипты, анализаторы кода, средства рендеринга ресурсов и подсчета статистики. И IDEA предоставляет несколько крутых решений, обеспечивающих комфорт использования утилит, которые вы подключите.

Ну что, попробуем подключить какой-нибудь тул?
Читать дальше →
Total votes 28: ↑25 and ↓3 +22
Comments 6

Питон в коробке – venv в python 3.3

Reading time 4 min
Views 152K
Наверняка, большинство из тех, кто разрабатывает или деплоит Python приложения, использует виртуальные окружения. В частности через virtualenv, написанный Ian Bicking.

Идея оказалась так хороша и распространена, что нечто похожее теперь присутствует в Python 3.3 из коробки в виде модуля venv. Он почти такой же, как virtualenv, только немного лучше.
Читать дальше →
Total votes 47: ↑44 and ↓3 +41
Comments 24

Темный Eclipse Juno?

Reading time 1 min
Views 36K
Вы — любитель темных тем для Eclipse?
Да и не только Eclipse, а вообще по жизни?

Я думаю, вам знакома проблема: после обновления с Eclipse 3.X на Eclipse 4.2 Juno, он выглядел, мягко говоря, хреново:


А все почему? А потому-что у нас велосипеда не было.
Но в Juno появился прекрасный байк: CSS стили для SWT виджетов.
Читать дальше →
Total votes 39: ↑28 and ↓11 +17
Comments 20

Information

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