Pull to refresh
0
0
Send message

Простой RSS-клиент на Android

Reading time14 min
Views110K
Пошаговое руководство по созданию RSS-клиента на Android. Статья для начинающих разработчиков.
Android – операционная система для мобильных устройств от Google.
Система очень перспективная и динамично развивается. Базовые навыки разработки будут совсем не лишними.
Осторожно много скриншотов!
Читать дальше →
Total votes 67: ↑64 and ↓3+61
Comments46

Разработка под Android, грабли большие и не очень

Reading time4 min
Views47K
Ниже я попробую описать ряд неприятных особенностей с которыми может столкнуться разработчик для платформы Android. Не все они являются особенностью именно операционной системы Android, но так или иначе шансы встретиться с ними есть.
Читать дальше →
Total votes 99: ↑95 and ↓4+91
Comments58

Устанавливаем последний (4.2.2) Android на старичка HTC Desire S

Reading time4 min
Views380K
HTC Desire S можно справедливо назвать старичком, продается он уже более двух лет. У меня аппарат более полутора лет. Тем не менее — это аппарат с очень неплохой «начинкой», качественным экраном и металлическим корпусом.

Наверняка, как и все поклонники HTC, я тащился от их фирменной оболочки «Sense». Стоковый аппарат включал в себя Android 2.3.5 и Sense 3.0.

Потом была целая эпопея в ожидании официальной прошивки на Android 4, завершенный вариант которой так и не вышел. Еще до выхода этой прошивки «для разработчиков» мои нервы подкосились и «кастомные», неофициальные сборки начали заливаться в телефон одна за другой. Была опробована и официальная с Android 4.0.4. Прошло некоторое время и выбор остановился на CM10.1 с Android 4.2.2 и всеми его прелестями, для которых аппаратного обеспечения устройства вполне хватает.
Читать дальше →
Total votes 29: ↑10 and ↓19-9
Comments23

Плюсы и минусы работы в сфере IT, если ты девушка

Reading time6 min
Views149K
Недавно на Хабре был опубликован пост «Как выглядит рабочий день IT-инженера, если ты девушка». Я была удивлена, что эта тема настолько интересна хабровчанам и мало того, в комментариях многие просят раскрыть сей вопрос более подробно.

Что ж, расскажу свою версию событий.
Читать дальше →
Total votes 226: ↑183 and ↓43+140
Comments133

Не тратьте своё время на дерьмовую работу в стартапе

Reading time21 min
Views73K
Под катом перевод огромной статьи, написанной Майклом Чёрчем и посвящённой стартапам. Статья вызвала необыкновенное бурление… мнений, скажем так, на разных сайтах и агрегаторах, поэтому я решил её перевести на русский и посмотреть на реакцию. Текст ОЧЕНЬ длинный, но также и очень интересный. И несколько пояснений перед чтением: в статье речь идёт об инженере в стартапе, именно с этой позиции всё рассматривать; некоторые финансово-экономические термины, возможно, не очень адекватно удались и я буду рад любым конструктивным поправкам.

То, о чём я хочу рассказать, справедливо для июля 2012 г. 15 лет назад необязательно было так же, и не факт, что будет справедливо через год. Но в данный момент это абсолютно верно для большинства людей в достаточной степени, так что я считаю обязанным высказаться. Нынешний мир ИК-стартапов (ИК=инвестиционный капитал / venture capital) — я его нежно называю ИК-стан — является, мягко говоря, тотально напрасной тратой времени для большинства вовлечённых людей.
Читать дальше →
Total votes 238: ↑221 and ↓17+204
Comments77

Нейронная сеть против DDoS'а

Reading time7 min
Views40K

Предисловие


Некоторые из вас наверняка недавно проходили Stanford'ские курсы, в частности ai-class и ml-class. Однако, одно дело просмотреть несколько видео-лекций, поотвечать на вопросики quiz'ов и написать десяток программ в Matlab/Octave, другое дело начать применять полученные знания на практике. Дабы знания полученые от Andrew Ng не угодили в тот же тёмный угол моего мозга, где заблудились dft, Специальная теория относительности и Уравнение Эйлера Лагранжа, я решил не повторять институтских ошибок и, пока знания ещё свежи в памяти, практиковаться как можно больше.

И тут как раз на наш сайтик приехал DDoS. Отбиваться от которого можно было админско-программерскими (grep / awk / etc) способами или же прибегнуть к использованию технологий машинного обучения.

Далее пойдёт рассказ о создании нейронной сети на Python 2.7 / PyBrain и её применении для защиты от DDoS'а.

Читать дальше →
Total votes 177: ↑174 and ↓3+171
Comments46

Карьера в IT

Reading time9 min
Views35K
Что является основным критерием карьерного успеха? Как попасть на желанную работу, если недостаточно опыта? В этой статье я попытался ответить на эти и другие вопросы, связанные с карьерой IT-специалиста.

Читать дальше →
Total votes 192: ↑167 and ↓25+142
Comments145

Мега-Учебник Flask, Часть 1: «Привет, Мир!»

Reading time6 min
Views578K
Это первая статья в серии, где я буду документировать мой опыт написания веб-приложения на Python, используя микрофреймворк Flask.

Здесь список всех статей в серии:
Часть 1: Привет, Мир!
Часть 2: Шаблоны
Часть 3: Формы
Часть 4: База данных
Часть 5: Вход пользователей
Часть 6: Страница профиля и аватары
Часть 7: Unit-тестирование
Часть 8: Подписчики, контакты и друзья
Часть 9: Пагинация
Часть 10: Полнотекстовый поиск
Часть 11: Поддержка e-mail
Часть 12: Реконструкция
Часть 13: Дата и время
Часть 14: I18n and L10n
Часть 15: Ajax
Часть 16: Отладка, тестирование и профилирование
Часть 17: Развертывание на Linux (даже на Raspberry Pi!)
Часть 18: Развертывание на Heroku Cloud

Моя предыстория


Я разработчик ПО с двузначным числом лет опыта разработки комплексных приложений на нескольких языках. Впервые я познакомился с Python для создания привязок к C++ библиотеке на работе. Вдобавок к Python, я писал веб-приложения на PHP, Ruby, Smalltalk и, верите вы или нет, еще на С++. Из всего этого, я нахожу комбинацию Python/Flask самой гибкой.
Я хочу начать это долгое и удивительное путешествие
Total votes 63: ↑60 and ↓3+57
Comments31

Прокачка debian/ubuntu сервера для маленьких

Reading time9 min
Views185K
Всем привет. Недавно появилась необходимость поднятие VPS на debian 7 за скромные деньги.
О плясках с бубенчиком я бы хотел описать тут в подробностях.
Всё в этом посте было собрано на просторах интернета, доработано, разжевано и скинуто в одну статью.


Выбор пал на https://account.nt-vps.ru/register/ из-за низких цен и неплохой стабильности за эти деньги(правда 2 дня были серьезные проблемы с сетью). Был взят VPS за 5 рублей в сутки(или за 150р в месяц) с небольшими конфигурациями ОЗУ 128mb и 10Гб на диске.

В автоматическом режиме был установлен Debian 7.0 x86-64 Wheezy и VPS была готова к работе.
64 битная сиcтема была выбрана лишь для моих личных нужд, а вам же советую, на этом VPS, ставить x86.

Далее
Total votes 159: ↑119 and ↓40+79
Comments95

Обзор наиболее интересных материалов по анализу данных и машинному обучению №13 (8 — 14 сентября 2014)

Reading time5 min
Views14K

Представляю вашему вниманию очередной выпуск обзора наиболее интересных материалов, посвященных теме анализа данных и машинного обучения. В данном выпуске достаточно много интересных примеров с использованием языков программирования R и Python. Также есть несколько интересных статей, посвященных соревнованиям по машинному обучению. Достаточно много материалов, которые будут интересны новичкам в теме анализа данных и машинного обучения. Традиционно, некоторое количество материалов посвящено теме Data Engineering.

Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments6

Python-digest #35. Новости, интересные проекты, статьи и интервью [27 июля 2014 — 03 августа 2014]

Reading time4 min
Views14K

Дайджест был опубликован ранее, но определенным причинам был исключен с хабра, сейчас же было принято решение вернуть его обратно.
Очередной выпуск новостей из мира Python.
За иллюстрацию к посту, как и раньше, благодарим owlman75, а так же alrusdi за идею дайджестов и за то, что я по прежнему могу публиковать эти дайджесты для вас.
В этом выпуске у нас вот такие интересные новости собрались: свеженькие уязвимости в django, в релизах второй релиз кандидат Django 1.7, APScheduler 3.0, Pylint 1.3 / Astroid 1.2, django-extensions 1.3.9, boto 2.32.0 и еще много интересных библиотек и статей для изучения.
Перейти к дайджесту
Total votes 39: ↑37 and ↓2+35
Comments19

Применение машинного обучения в трейдинге. Часть 2

Reading time6 min
Views21K
Примечание переводчика. Продолжаю перевод серии статей по применению машинного обучения в трейдинге. Предыдущая часть здесь. О любых ошибках и исправлениях пишите в личку.

Как использовать дерево решений для торговли акциями Bank of America.




Предположим вам нравится использовать разнообразные технические индикаторы и вы хотите создать стратегию, которая ищет конкретные высоко-вероятностные возможности на рынке. Что если значение RSI находящееся выше 85 и, одновременно, линия MACD ниже 20, означают хорошую возможность открыть короткую позицию? Вы можете потратить дни/недели/месяцы в попытках вручную просчитать все комбинации ваших индикаторов, а можете использовать дерево решений – мощный и легко интерпретируемый алгоритм.

Для начала давайте разберёмся, как работают дерева решений, затем рассмотрим их использование на примере построения стратегии торговли акциями Bank of America.
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments6

О порядке поиска пакетов и модулей для импорта в Python

Reading time5 min
Views59K
Начать, видимо, следует с того, что речь пойдет об интерпретаторе CPython версии 2.7.x (примеры проверялись на версии 2.7.3).

На официальном сайте имеются описания инструкции import и модулей в Python:

Из них следует, что в Python имеются пакеты (package), модули (module) и имена, определенные в модулях (names). Также следует отметить, что в некоторых частях документации модули называются подмодулями (submodule), если они размещены внутри пакета.

В языке Python инструкция import позволяет импортировать пакеты, модули и имена в пространство имен, в котором инструкция import выполняется. При это существует две интересные особенности:
  1. Из синтаксиса инструкции import не всегда явно следует, что именно должно быть импортированно: пакет, модуль или имя
  2. Синтаксисом инструкции import невозможно явно указать, что путь к модулю является абсолютным путем (хотя явно указать, что путь является относительным можно, а также возможно изменение семантики инструкции, в части использования абсолютного пути по умолчанию, см. www.python.org/dev/peps/pep-0328 )

Из этих двух особенностей следуют такие неоднозначности для записи import abcd:
  1. Импортировать ПАКЕТ abcd, либо импортировать МОДУЛЬ abcd
  2. Импортировать пакет/модуль abcd из ТЕКУЩЕГО ПАКЕТА (из пакета того модуля, в котором исполняется import abcd), либо ИЗ ПАКЕТА в соответствии с перечнем каталогов, указанных в sys.path

Еще примеры неоднозначностей:
  • from abcd import defg: (импортировать модуль defg из пакета abcd, либо импортировать пакет defg из пакета abcd, либо импортировать имя defg из пакета abcd, либо импортировать имя defg из модуля abcd) X (из того же пакета, либо из пакета в соответствии с sys.path)
  • import abcd.defg: (импортировать пакет defg из пакета abcd, импортировать модуль defg из пакета abcd) X (из того же пакета, либо из пакета в соответствии с sys.path)

Для разрешения эти декларативных неоднозначностей должен существовать императивный алгоритм. Такой алгоритм в некотором виде описан в официальной документации Python.
Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments14

Руководство по магическим методам в Питоне

Reading time28 min
Views601K
Это перевод 1.17 версии руководства от Rafe Kettler.


Содержание


  1. Вступление
  2. Конструирование и инициализация
  3. Переопределение операторов на произвольных классах
  4. Представление своих классов
  5. Контроль доступа к атрибутам
  6. Создание произвольных последовательностей
  7. Отражение
  8. Вызываемые объекты
  9. Менеджеры контекста
  10. Абстрактные базовые классы
  11. Построение дескрипторов
  12. Копирование
  13. Использование модуля pickle на своих объектах
  14. Заключение
  15. Приложение 1: Как вызывать магические методы
  16. Приложение 2: Изменения в Питоне 3


Вступление


Что такое магические методы? Они всё в объектно-ориентированном Питоне. Это специальные методы, с помощью которых вы можете добавить в ваши классы «магию». Они всегда обрамлены двумя нижними подчеркиваниями (например, __init__ или __lt__). Ещё, они не так хорошо документированны, как хотелось бы. Все магические методы описаны в документации, но весьма беспорядочно и почти безо всякой организации. Поэтому, чтобы исправить то, что я воспринимаю как недостаток документации Питона, я собираюсь предоставить больше информации о магических методах, написанной на понятном языке и обильно снабжённой примерами. Надеюсь, это руководство вам понравится. Используйте его как обучающий материал, памятку или полное описание. Я просто постарался как можно понятнее описать магические методы.
Читать дальше
Total votes 143: ↑139 and ↓4+135
Comments59

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

Reading time6 min
Views691K
На 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/

Подробный и обстоятельный ответ
Total votes 141: ↑136 and ↓5+131
Comments41

Итерируем все и вся

Reading time4 min
Views65K
image
Насколько я успел понять по собственному опыту, при переходе на Python с другого языка программирования порой сложно привыкнуть к его специфическому подходу к циклам. Например, взять тот же самый for, который работает совершенно по-другому, нежели в других языках. Возьму на себя смелость рассказать о том, что мне самому поначалу было сложно осознать, а тем более использовать в своем коде — итераторы. Вещь на самом деле очень полезная, надо только уметь правильно ей пользоваться! ;)

АПД: Только сейчас заметил, что тема функционального программирования сегодня популярна как никогда :) Спасибо товарищу uj2 за раскрытие такой интересной темы, поддерживаю!
Панеслася!
Total votes 56: ↑50 and ↓6+44
Comments25

Понимаем декораторы в Python'e, шаг за шагом. Шаг 1

Reading time6 min
Views438K

На Хабре множество раз обсуждалась тема декораторов, однако, на мой взгляд, данная статья (выросшая из одного вопроса на stackoverflow) описывает данную тему наиболее понятно и, что немаловажно, является «пошаговым руководством» по использованию декораторов, позволяющим новичку овладеть этой техникой сразу на достойном уровне.

Итак, что же такое «декоратор»?


Впереди достаточно длинная статья, так что, если кто-то спешит — вот пример того, как работают декораторы:
def makebold(fn):
    def wrapped():
        return "<b>" + fn() + "</b>"
    return wrapped
 
def makeitalic(fn):
    def wrapped():
        return "<i>" + fn() + "</i>"
    return wrapped
 
@makebold
@makeitalic
def hello():
    return "hello habr"
 
print hello() ## выведет <b><i>hello habr</i></b>

Те же из вас, кто готов потратить немного времени, приглашаются прочесть длиииинный пост
Total votes 119: ↑106 and ↓13+93
Comments39

Как выглядит рабочий день IT-инженера, если ты девушка

Reading time4 min
Views178K
Привет!
Меня зовут Вика, и я работаю сервисным IT-инженером в КРОК, занимаюсь телефонией и критичными колл-центровыми решениями.


Иногда тонкие пальцы – это плюс



Сейчас лето, поэтому в офис иногда доезжаю от метро на лонгборде. Правда, пока только учусь.

Когда знакомые узнают, кто я и что делаю, сразу возникает куча вопросов начиная от «как там работается в большой компании?» и заканчивая «а как ты сервера таскаешь?». Постараюсь ответить ниже.
Читать дальше →
Total votes 238: ↑171 and ↓67+104
Comments183

Введение в HTML5 History API

Reading time4 min
Views241K
До появления HTML5 единственное, что мы не могли контролировать и управлять (без перезагрузки контента или хаков с location.hash) — это история одного таба. С появлением HTML5 history API все изменилось — теперь мы можем гулять по истории (раньше тоже могли), добавлять элементы в историю, реагировать на переходы по истории и другие полезности. В этой статье мы рассмотрим HTML5 History API и напишем простой пример, иллюстрирующий его возможности.

Основные понятия и синтаксис


History API опирается на один DOM интерфейс — объект History. Каждый таб имеет уникальный объект History, который находится в window.history. History имеет несколько методов, событий и свойств, которыми мы можем управлять из JavaScript. Каждая страница таба(Document object) представляет собой объект коллекции History. Каждый элемент истории состоит из URL и/или объекта состояния (state object), может иметь заголовок (title), Document object, данные форм, позиция скролла и другую информацию, связанную со страницей.

Основные методы объекта History:
  1. window.history.length: Количество записей в текущей сессии истории
  2. window.history.state: Возвращает текущий объект истории
  3. window.history.go(n): Метод, позволяющий гулять по истории. В качестве аргумента передается смещение, относительно текущей позиции. Если передан 0, то будет обновлена текущая страница. Если индекс выходит за пределы истории, то ничего не произойдет.
  4. window.history.back(): Метод, идентичный вызову go(-1)
  5. window.history.forward(): Метод, идентичный вызову go(1)
  6. window.history.pushState(data, title [, url]): Добавляет элемент истории.
  7. window.history.replaceState(data, title [, url]): Обновляет текущий элемент истории
Читать дальше →
Total votes 51: ↑51 and ↓0+51
Comments22

HTML5 History API уже сегодня и без ограничений

Reading time6 min
Views63K

Библиотека для работы HTML5 History API


Изначально этот проект был задуман добавить поддержку HTML5 History API в старые HTML4 браузеры. Первые версии библиотеки были нацелены именно на эти потребности, но с учетом прошедшего времени и пожеланий многоуважаемых разработчиков использующих эту библиотеку, она выросла до уровня того, что выполняет некие промежуточные действия по добавлению/исправлению того функционала что описаны в спецификациях по интерфейсу History.

На сегодняшний день библиотеку я могу смело назвать, на мой взгляд, полноценно законченной. Конечно же, ошибкам в работе библиотеки думаю, место будет, тестировалась библиотека мною в разных условиях и браузерах, но как вы понимаете, все не уловишь, да что-то упустишь. И так давайте приступим к описанию возможностей и тонкостей библиотеки.
Читать дальше →
Total votes 85: ↑84 and ↓1+83
Comments49

Information

Rating
Does not participate
Location
Железнодорожный (Московск.), Москва и Московская обл., Россия
Date of birth
Registered
Activity