Как стать автором
Обновить
22
0.7
Дима Ловерманн @lovermann

Пользователь

Отправить сообщение

Атрибуты и протокол дескриптора в Python

Время на прочтение6 мин
Количество просмотров16K

Рассмотрим такой код:


class Foo:
    def __init__(self):
        self.bar = 'hello!'

foo = Foo()
print(foo.bar)

Сегодня мы разберём ответ на вопрос: «Что именно происходит, когда мы пишем foo.bar




Вы, возможно, уже знаете, что у большинства объектов есть внутренний словарь __dict__, содержащий все их аттрибуты. И что особенно радует, как легко можно изучать такие низкоуровневые детали в Питоне:


>>> foo = Foo()
>>> foo.__dict__
{'bar': 'hello!'}

Давайте начнём с попытки сформулировать такую (неполную) гипотезу:


foo.bar эквивалентно foo.__dict__['bar'] .


Пока звучит похоже на правду:


>>> foo = Foo()
>>> foo.__dict__['bar']
'hello!'

Читать дальше →
Всего голосов 11: ↑11 и ↓0+11
Комментарии2

10 хитростей Python, о которых полезно знать

Время на прочтение6 мин
Количество просмотров33K
По данным StackOverflow Python — это самый быстрорастущий язык программирования. Например, в одном из отчётов Forbes речь идёт о том, что использование Python выросло на 456%. Python применяется в Netflix, в IBM, и ещё в тысячах компаний по всему миру. Давайте не забывать и о Dropbox. Сервисы этой компании тоже написаны на Python. В соответствии с исследованием Dice, знания в области Python весьма востребованы в наши дни, а индекс популярности языков программирования говорит о том, что Python — это сегодня самый популярный язык в мире. Если сравнить Python с другими языками, то окажется, что у него есть следующие сильные стороны:

  1. Совместимость с подавляющим большинством платформ и операционных систем.
  2. Наличие множества опенсорсных фреймворков и инструментов.
  3. Код, который легко читать и поддерживать.
  4. Надёжная стандартная библиотека.
  5. Стандартный механизм разработки через тестирование.


Читать дальше →
Всего голосов 42: ↑21 и ↓21+16
Комментарии22

Несколько полезных советов как практиковаться в Python

Время на прочтение9 мин
Количество просмотров42K

Привет, Хабр! Сегодня я предлагаю Вам перевод статьи Duomly, посвящённой изучению и практике программирования на языке Python.


Введение


Изучение Python не сильно отличается от изучения других языков программирования. Один путь для становления профессионалом в Python (или в другом любом языке) в основном зависит от имеющегося опыта и знаний. Это означает, что опытные программисты уже знакомы с основными концепциями программирования, обычные используют разные методы решения задач, когда как новички — нет.


Не смотря ни на что, имеется несколько вещей общих для всех, одна из них — Вам нужно практиковаться, очень много практиковаться!

Читать дальше →
Всего голосов 12: ↑9 и ↓3+14
Комментарии17

Страх и ненависть в IT

Время на прочтение7 мин
Количество просмотров127K
Всем привет. Я — обычный программист, носящий лычку сеньора в одной обычной продуктовой компании. Я занимаюсь коммерческой разработкой около 10 лет, начинал с разработки прошивок для небольших железок, а сейчас изготавливаю бекенды различной степени сложности преимущественно на модных нынче Java/Kotlin. Эту профессию я выбрал по призванию — будучи ещё школьником все время что-то паял, программировал на бумажке (компьютера не было) и всё такое. Дальше шли профильное образование, работа в различных компаниях — именитых и обычных, зарубежных и отечественных. Поэтому я могу сказать, что являюсь идейным программистом. И никогда не понимал людей, которые ждут пятницу — всегда с удовольствием ходил на работу, какой бы ад там не творился. Так было по-крайней мере до недавнего времени. С какого-то момента я “сломался” и с трудом мог заставить пойти себя на некогда любимую работу. Меня и раньше что-то смущало, но теперь, когда мысли до конца оформились в голове — я могу сказать, что же не так с моим некогда уютным IT-мирком.
Читать дальше →
Всего голосов 303: ↑269 и ↓34+305
Комментарии791

Школа магии PHP

Время на прочтение18 мин
Количество просмотров27K
Что такое магия в PHP? Обычно под этим подразумевают методы вроде _construct() или __get(). Магические методы в PHP — это лазейки, которые помогают разработчикам выполнять удивительные вещи. В сети полно инструкций по их использованию, с которыми вы наверняка знакомы. Но что если мы скажем, что вы даже не видели настоящую магию? Ведь, чем больше вам кажется, что вы знаете все, тем больше магии ускользает от вас.



Давайте отбросим установленные рамки правил ООП и сделаем невозможное возможным в школе магии PHP. Главный и первый волшебный преподаватель школы — Александр Лисаченко (NightTiger). Он научит магическому мышлению и, возможно, вы полюбите магические методы, нестандартные способы доступа к свойствам, изменение контекстов, аспектно-ориентированное программирование и потоковые фильтры.

Всего голосов 47: ↑43 и ↓4+54
Комментарии14

5 бесплатных курсов для IT-Администраторов от Microsoft

Время на прочтение3 мин
Количество просмотров56K
Привет, Хабр! Сегодня мы продолжаем серию статей, в которую войдет 5 подборок бесплатных обучающих курсов от компании Microsoft. Во второй части у нас самые крутые курсы для IT-Администраторов, которые сильнее всего нравятся коллегам.

Кстати!

  • Все курсы бесплатные (вы даже сможете попробовать платные продукты бесплатно);
  • 5/5 на русском языке;
  • Начать обучение можно мгновенно;
  • По окончании вы получите бейдж об успешном прохождении обучения.

Присоединяйтесь, подробности под катом!

Новая серия статей


Следующая серия статей, начало 2020 года


Эта серия статей, 2019 год


Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии9

Алгоритм сортировки Timsort

Время на прочтение6 мин
Количество просмотров156K
Timsort, в отличии от всяких там «пузырьков» и «вставок», штука относительно новая — изобретен был в 2002 году Тимом Петерсом (в честь него и назван). С тех пор он уже стал стандартным алгоритмом сортировки в Python, OpenJDK 7 и Android JDK 1.5. А чтобы понять почему — достаточно взглянуть на вот эту табличку из Википедии.



Среди, на первый взгляд, огромного выбора в таблице есть всего 7 адекватных алгоритмов (со сложностью O(n logn) в среднем и худшем случае), среди которых только 2 могут похвастаться стабильностью и сложностью O(n) в лучшем случае. Один из этих двух — это давно и хорошо всем известная «Сортировка с помощью двоичного дерева». А вот второй как-раз таки Timsort.

Алгоритм построен на той идее, что в реальном мире сортируемый массив данных часто содержат в себе упорядоченные (не важно, по возрастанию или по убыванию) подмассивы. Это и вправду часто так. На таких данных Timsort рвёт в клочья все остальные алгоритмы.
Читать дальше →
Всего голосов 292: ↑285 и ↓7+278
Комментарии63

Arrays, Collections: Алгоритмический минимум

Время на прочтение8 мин
Количество просмотров62K

Arrays, Collections: Алгоритмический минимум


Массивы и списки


Недавно на собеседовании в крупную компанию на должность Java разработчика меня попросили реализовать стандартный алгоритм сортировки. Поскольку я никогда не реализовывал самописные алгоритмы сортировки, а пользовался всегда готовыми решениями, у меня возникли затруднения с реализацией. После собеседования я решил разобраться в вопросе и подготовить список основных алгоритмов сортировки и поиска, которые используются в стандартном пакете java — Java Collections Framework (JCF). Для этого я изучил исходники Oracle JDK 7.80 (UPD: добавлена ссылка).

В самом обобщенном виде результат изучения представлен на рисунке. Подробности — в основном тексте.



Рисунок 1. Методы Arrays, Collections и реализуемые ими алгоритмы
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии47

Как построить классификатор изображений на основе предобученной нейронной сети

Время на прочтение11 мин
Количество просмотров31K
main image

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

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

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

Предсказание класса растения по фото


В качестве примера мы рассмотрим задачу классификации изображений из конкурса LifeCLEF2014 Plant Identification Task. Задача заключается в том, чтобы предсказать таксономический класс растения, основываясь на нескольких его фотографиях.
Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии5

Топливо для ИИ: подборка открытых датасетов для машинного обучения

Время на прочтение6 мин
Количество просмотров82K


Связанные проекты сообщества Open Data (проект Linked Open Data Cloud). Многие датасеты на этой диаграмме могут включать в себя данные, защищенные авторским правом, и они не упоминаются в данной статье


Если вы прямо сейчас не делаете свой ИИ, то другие будут делать его вместо вас для себя. Ничто более не мешает вам создать систему на основе машинного обучения. Есть открытая библиотека глубинного обучения TensorFlow, большое количество алгоритмов для обучения в библиотеке Torch, фреймворк для реализации распределенной обработки неструктурированных и слабоструктурированных данных Spark и множество других инструментов, облегчающих работу.


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


Мы разобрались в этом вопросе и собрали данные по датасетам, удовлетворяющим критериям открытости, востребованности, скорости работы и близости к реальным задачам.

Читать дальше →
Всего голосов 65: ↑65 и ↓0+65
Комментарии10

JavaScript без циклов

Время на прочтение13 мин
Количество просмотров41K
Однажды я писал о том, что отступы можно считать показателем сложности кода (хотя и довольно грубым). Сами по себе отступы нейтральны, так как они – лишь средство форматирования текста, но всё дело в том, что они используются для выделения особых блоков программ, например – управляющих конструкций. Читая код и натыкаясь на отступ, программист вынужден принимать во внимание то, на что указывает отступ, держать в памяти контекст, в котором существует выделенный блок. Это, естественно, повторяется, если в выделенном отступами участке кода появляется ещё один особый фрагмент.

Если не обращать внимание на содержание текстов, то вот как обычно выглядит сложный код, участки которого похожи на лежащие на боку буквы «V», и простой код, блок которого, если не учитывать разную длину строк, похож на прямоугольник.


Чем больше отступов – тем сложнее обычно и код
Читать дальше →
Всего голосов 39: ↑29 и ↓10+19
Комментарии72

Серия видеоуроков по Git для новичков

Время на прочтение1 мин
Количество просмотров114K
Скорее всего, если вас привлекло название статьи, то вы начинаете свой путь знакомства с системой контроля версий Git. В данной статье я приведу 10+ видео о пошаговом вхождении в контроль версии используя Git. Данного курса будет вполне чем достаточно для работы с такими популярными сервисами как GitHub и Bitbucket.

Однажды мой знакомый, который только начинал свой путь в ИТ кинул мне данный мемчик что слева, с вопросом "А чем плохо то?", поэтому чтобы понимать данную шутку и уметь работать с самым популярным на сегодня VCS (Version Control System) рекомендую к ознакомлению серии видеоуроков, которую я привел ниже.
Читать дальше →
Всего голосов 58: ↑49 и ↓9+40
Комментарии43

RSS – то, что нас ограничивает

Время на прочтение2 мин
Количество просмотров767
Я долго не мог заставить себя начать пользоваться RSS. Все вокруг писали о том, как это удобнокласноздорово, а я все чего-то ждал… Это же надо было потратить время и усилия на то, чтоб установить какой-то ридер, или зарегистрироваться в каком-то сервисе, предоставляющем эти услуги… А так лень… А подспудно где-то еще глодала мысль «а вдруг там не все так уж просто… и где эти фиды брать…» — ну и прочая лабудень. Но как-то в начале осени…
Читать дальше →
Всего голосов 64: ↑61 и ↓3+58
Комментарии58

Гонки на клавиатуре

Время на прочтение1 мин
Количество просмотров6K
typeracer.ruПредставляю обществественности свой проектик — онлайн-игру Гонки на клавиатуре. Это игра на яваскрипте, клавиатурный тренажер, скрещенный с автогонками. Цель проста — набирать текст быстрее соперников. Можно играть в одиночку, можно с другими посетителями сайта, можно создать отдельную игру для себя и своих друзей.

По сути, это русскоязычный клон аналогичной игры typeracer.com, но с рядом своих фишек.
Всего голосов 92: ↑84 и ↓8+76
Комментарии189

Пять наиболее распространенных заблуждений в отношении Linux

Время на прочтение6 мин
Количество просмотров14K
Пользуясь исключительно Linux на протяжении почти четырёх лет, я могу уверенно судить о том, что Linux может, а чего — не может. Ни в коем случае не претендуя на решение всех проблем, несколько самых распространённых заблуждений я все-таки постараюсь рассеять.
Читать дальше →
Всего голосов 76: ↑63 и ↓13+50
Комментарии481

О рейтингах и вообще, буквально несколько слов

Время на прочтение2 мин
Количество просмотров704
За последние дни люди предложили 5 (два на сайте и 3 в хабрапочте) вариантов нового рейтинга пользователей. Во всех случаях инициативу проявили пользователи, зарегистрировавшиеся осенью, т.е. за два последних месяца.
Читать дальше →
Всего голосов 31: ↑30 и ↓1+29
Комментарии42

Информация

В рейтинге
1 785-й
Откуда
Praha, Hlavni Mesto Praha, Чехия
Зарегистрирован
Активность