Search
Write a publication
Pull to refresh
57
0

User

Send message

Python Tips, Tricks, and Hacks (часть 3)

Reading time6 min
Views49K
В этой части статьи рассматриваются уловки для выбора одного из двух значений на основе логического условия, передача и получение произвольного числа аргументов функций, а также распространенный источник ошибок — тот факт, что дефолтные значения аргументов функции вычисляются только один раз.
Читать дальше →

ABC: Always Be Coding (не переставай программировать)

Reading time5 min
Views75K


Как получить работу инженера?

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

# x = количество компаний, в которых ты проходил собеседования

# y = количество предложений о работе, которые ты получил

рейтинг = 100 * log(x) * y / x



Если твой рейтинг < 90, обязательно прочти это. Если > 120, возможно, тебе это не нужно, но, все равно прочти.

Читать дальше →

Python на Хабре

Reading time7 min
Views454K
Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше? А дальше я стал искать материал для изучения…
Читать дальше →

Пишем красивый идиоматический Python

Reading time4 min
Views113K

Иногда сложно найти в Сети правильные, а главное актуальные «best practices» для языка. Документация, конечно же, содержит всю необходимую информацию, но отсеять нужную вещь в абзацах подробного (на то она и документация) описания довольно сложно. Но недавно мне улыбнулся поиск Google, и я наткнулся на очень полезные «паттерны» языка Python от одного из core разработчиков — Raymond Hettinger.

Примечание: Все рекомендации даны в нескольких вариантах: сначала идут самые «плохие» варианты, а дальше предлагается лучшая альтернатива. Актуально для версии языка 2.7, отличия для версии 3.3 читайте в примечаниях к конкретному «паттерну».
Читать дальше →

Мульти-хостинг django приложений с помощью nginx + uwsgi + virtualenv

Reading time6 min
Views12K
Задача: развернуть несколько django-проектов, использующих разные версии django и разные версии питона на одном сервере.

Инструкция приводится для ОС Ubuntu 12.04.
Читать дальше →

Менеджер версий python

Reading time5 min
Views96K
Иногда полезно держать несколько версий python на одной машине. Допустим для разработки двух проектов нам необходима вторая и третья ветка python. Или вы поддерживаете проект который использует старую версию python.

Обычно для этого мы используем виртуальное окружение virtualenv или же обертку для него virtualenvwrapper. Об этом я рассказывать не буду, так как есть уже много подобных статей, да и в документациях к самим утилитам все очень хорошо объяснено. Достаточно только забить virtualenv или virtualenvwrapper в поисковик.
Но в дополнение к ним я хочу рассказать в этой статье про менеджер версий python. Кому любопытно прошу под кат.
Читать дальше →

Как работает yield

Reading time6 min
Views729K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ

Python Tips, Tricks, and Hacks (часть 2)

Reading time6 min
Views134K
Содержание

Списки. Свёртка списка (reduce). Прохождение по списку (range, xrange и enumerate). Проверка всех элементов списка на выполнение условия (all и any). Группировка элементов нескольких списков (zip). Еще несколько операторов для работы со списками. Продвинутые логические операции с типом set.
Словари. Создание словаря с помощью именованных аргументов. Преобразование словаря в список и обратно. «Dictionary Comprehensions».
Читать дальше →

Quickpong — разработка сетевой игры на основе фреймворка Twisted

Reading time6 min
Views17K
Разработал и запустил на домене quickpong.com онлайн версию игры Pong. В игре (by design) реализован только режим мультиплейера, то есть игра идет не против искусственного интеллекта, а против другого человека.

Игра представляет из себя клиент-серверное приложение, серверная часть написана на питоновском фреймворке Twisted, клиентская — на флэшовом фреймворке FlashPunk.

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

Python: советы, уловки, хаки (часть 1)

Reading time8 min
Views265K
Предлагаю читателям «Хабрахабра» перевод статьи «Python Tips, Tricks, and Hacks». Статья будет полезна на начальном и среднем этапах изучения Python.

Хотите писать более лаконичный и читаемый код? Вы хотите уместить как можно больше смысла в одно выражение? Считаете, что прочитать о нескольких уловках лучше, чем провести остаток жизни за чтением документации? Вы обратились по адресу. Мы начнем с маленьких уловок, которые вы уже могли встретить, если немного работали с Python. Но я обещаю, что ближе к концу статьи вас ожидает больше безумных вещей.

Содержание

1. Маленькие уловки. Четыре типа кавычек. Правдивость различных объектов. Проверка на вхождение подстроки. Красивый вывод списка. Целочисленное деление и деление с плавающей точкой. Лямбда-функции.
2. Списки. Генераторы списков и выражения-генераторы.
Читать дальше →

Строим стенд для подготовки к CCIE при помощи IOU Web Interface

Reading time3 min
Views56K
Данная статья посвящена созданию собственного виртуального стенда для подготовки к лабораторной работе CCIE RS.

Как известно подготовка к экзамену CCIE является своеобразным подвигом в сетевом мире. Для успешной сдачи кандидат должен вложить уйму ресурсов: времени и денег. Помимо оплаты за сам экзамен необходимо, оплатить учебные материалы, оплатить поездку и.т.д. Одной из статей затрат является организация учебного стенда для подготовки. Рассматривая популярную топологию INE из одноименного воркбука, видно, что понадобится 9 роутеров и 4 свитча. Перечислю классические способы реализации в порядке убывания стоимости:

1. Покупка полного стенда домой из старого железа на ebay.
2. Аренда стойки.
3. Смесь виртуальных роутеров из GNS3 и реальных коммутаторов.
4. IOU.

Про плюсы и минусы каждого из методов уже писали на хабре. Остановимся на самом дешевом (что выгодно, если ваш работодатель не оплачивает вам обучение).
Прежде чем поставить задачу и начать её выполнение стоит упомянуть, что использование IOU не законно, если ты не сотрудник Cisco. Даже для обучения.

Задача статьи: организовать учебный стенд используя топологию INE и веб интерфейс для IOU.

Читать дальше →

Универсальная система мониторинга Zabbix — введение

Reading time4 min
Views438K
LogoВ любой сети, где есть больше, чем один сервер, очень полезно бывает иметь перед глазами полную картину происходящего. В крупных сетях, где количество хостов переваливает за несколько десятков, следить за каждым в отдельности — непосильная задача для администраторов. Для облегчения задачи наблюдения применяются системы мониторинга, и я расскажу об одной из них, которой на Хабре не посвящено ни одной полноценной статьи.

И так, встречайте: Zabbix.
И что он из себя представляет?

Масштабируя Zabbix

Reading time11 min
Views157K
Zabbix logoТех, кто использует или собирается использовать Zabbix в промышленных масштабах, всегда волновал вопрос: сколько реально данных сможет Заббикс «переварить» перед тем как окончательно поперхнется и подавится? Часть моей недавней работы как раз касалось этого вопроса. Дело в том, что у меня есть огромная сеть, насчитывающая более 32000 узлов, и которая потенциально может полностью мониториться Заббиксом в будущем. На форуме давно идут обсуждения о том, как оптимизировать Zabbix для работы в больших масштабах, но, к сожалению, мне так и не удалось найти законченное решение.

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

Сварка оптических волокон. Часть 1: кабели и их разделка, оптический инструмент, муфты и кроссы, коннекторы и адаптеры

Reading time25 min
Views606K

Волокна заряжены в сварочный аппарат

Здравствуйте, читатели Хабра! Все слышали про оптические волокна и кабели. Нет нужды рассказывать, где и для чего используется оптика. Многие из вас сталкиваются с ней по работе, кто-то разрабатывает магистральные сети, кто-то работает с оптическими мультиплексорами. Однако я не встретил рассказа про оптические кабели, муфты, кроссы, про саму технологию сращивания оптических волокон и кабелей. Я — спайщик оптических волокон, и в этом (первом своём) посте хотел бы рассказать и показать вам, как всё это происходит, а также часто буду в своём рассказе отвлекаться на прочие смежные с этим вещи. Опираться буду в основном на свой опыт, так что я вполне допускаю, что кто-то скажет «это не совсем правильно», «вот тут неканонично».
Материала получилось много, поэтому возникла необходимость разбить топик на части.
В этой первой части вы прочтёте про устройство и разделку кабеля, про оптический инструмент, про подготовку волокон к сварке. В других частях, если тема окажется вам интересной, я расскажу про методы и покажу на видео сам процесс сращивания самих оптических волокон, про основы и некоторые нюансы измерений на оптике, коснусь темы сварочных аппаратов и рефлектометров и других измерительных приборов, покажу рабочие места спайщика (крыши, подвалы, чердаки, люки и прочие поля с офисами), расскажу немного про крепёж кабелей, про схемы распайки, про размещение оборудования в телекоммуникационных стойках и ящиках. Это наверняка пригодится тем, кто собирается стать спайщиком. Всё это я сдобрил большим количеством картинок (заранее извиняюсь за paint-качество) и фотографий.
Осторожно, много картинок и текста.

Часть 2 здесь.
Читать дальше →

Подборка манифестов из мира IT

Reading time5 min
Views33K
У меня есть увлечение — я собираю разные манифесты и призывы из мира IT. На данный момент собрал уже достаточно много, поэтому решил опубликовать их с моими комментариями.

В статье описаны:
  1. Manifesto for Agile Software Development
  2. Agile Manifesto — IBM version
  3. MoreAgile Manifesto
  4. Agile Manifesto 2.1
  5. Manifesto for Half-Arsed Agile Software Development
  6. Declaration of Interdependence
  7. Programming, Motherfucker
  8. Software Craftsmanship Мanifesto
  9. DevOps Manifesto


Читать дальше →

Тяжелый FPV-квадрокоптер — продолжение: APM 2.5 и активный подвес для камеры

Reading time5 min
Views176K


Часть первая — в которой я придумал и построил свой квадрокоптер.

Продолжаю рассказ о своем квадрокоптере. Со времени опубликования первой статьи я налетал немало часов, и проделал множество модификаций на коптере. Обо всех мелких деталях рассказывать — будет долго, да и малоинтересно. Поэтому ограничусь основными изменениями, а именно:
  • Новый полетный контроллер — простенькая платка Crius MultiWii SE уступила место новому ArduPilot Mega 2.5, резко улучшив летные характеристики и добавив коптеру некое кол-во продвинутых фич.
  • Активный подвес для камеры — GoPro теперь не жестко закреплена, а установлена на стабилизирующем подвесе, который удерживает ее в горизонтальном положении при любом положении коптера.
  • Новые моторы — в связи с выросшим весом коптера (а также с внезапной смертью одного из старых моторов) были установлены новые, болеe мощные и значительно более качественные моторы.
  • Отдельная FPV-камера — GoPro теперь используется толькo для записи, для полета через видеоочки используется отдельная жестко монтированная камера.

Но обо всем по порядку…
Под катом многo текста и видео с подвеса

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

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

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

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

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

Подробнее

Курс лекций «Стартап». Питер Тиль. Стенфорд 2012. Занятие 19

Reading time18 min
Views82K

Весной 2012 г., Питер Тиль (Peter Thiel), один из основателей PayPal и первый инвестор FaceBook, провел курс в Стенфорде — «Стартап». Перед началом Тиль заявил: «Если я сделаю свою работу правильно, это будет последний предмет, который вам придется изучать».

Один из студентов лекции записывал и выложил транскипт. В данном хабратопике mg1 переводит девятнадцатое занятие, редактор astropilot.

Занятие 1: Вызов будущего
Занятие 2: Снова как в 1999?
Занятие 3: Системы ценностей
Занятие 4: Преимущество последнего хода
Занятие 5: Механика мафии
Занятие 6: Закон Тиля
Занятие 7: Следуйте за деньгами
Занятие 8: Презентация идеи (питч)
Занятие 9: Все готово, а придут ли они?
Занятие 10: После Web 2.0
Занятие 11: Секреты
Занятие 12: Война и мир
Занятие 13: Вы — не лотерейный билет
Занятие 14: Экология как мировоззрение
Занятие 15: Назад в будущее
Занятие 16: Разбираясь в себе
Занятие 17: Глубокие мысли
Занятие 18: Основатель — жертва или бог
Занятие 19: Стагнация или сингулярность?
Читать дальше →

Information

Rating
Does not participate
Location
Тбилиси, Грузия, Грузия
Date of birth
Registered
Activity