Как стать автором
Обновить
0
0

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

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

С чего начать изучение Python: книги для начинающих

Время на прочтение4 мин
Количество просмотров247K
image

Друзья, забирайте в закладки подборку из 17 книг по Python.

Подборка поможет вам освоить язык программирования с нуля или с минимальными знаниями.
Готовы приступить к изучению Python?

Тогда начнем!
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии16

Один стендап в Яндекс.Такси, или Чему нужно научить бэкенд-разработчика

Время на прочтение7 мин
Количество просмотров25K
Моё имя Олег Ермаков, я работаю в команде бэкенд-разработки приложения Яндекс.Такси. У нас принято проводить ежедневные стендапы, где каждый из нас рассказывает о сделанных за день задачах. Вот как это бывает…

Имена сотрудников может и изменены, а вот задачи вполне себе реальны!

На часах 12:45, вся команда собирается в переговорке. Первым слово берет Иван, стажёр-разработчик.

Иван:

Я работал над задачей отображения всех возможных вариантов сумм, которые пассажир мог дать водителю при известной стоимости поездки. Задача достаточно известная — называется «Размен монет». С учётом специфики добавил в алгоритм несколько оптимизаций. Отдал пул-реквест на ревью еще позавчера, но с тех пор я исправляю замечания.

По довольной улыбке Анны стало понятно, чьи замечания исправляет Иван.



Читать дальше →
Всего голосов 36: ↑28 и ↓8+20
Комментарии30

Исследование глубин аннотаций типов в Python. Часть 2

Время на прочтение9 мин
Количество просмотров8K
Сегодня мы публикуем вторую часть перевода материала, который посвящён аннотациям типов в Python.



Первая часть
Читать дальше →
Всего голосов 44: ↑42 и ↓2+40
Комментарии5

Почему не SQL?

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


Без преувеличения можно сказать, что SQL — один из самых распространенных в мире языков. Информационные системы могут быть написаны на Java, Python, JavaScript, C#, PHP и десятке других языков, но SQL база в том или ином виде будет в абсолютном большинстве таких систем. Среди бизнес-приложений процент систем, использующих SQL, вообще стремится к 100%.

При этом большинство существующих материалов о SQL на хабре и других ресурсах сводятся к простым вопросам, вроде: «какие типы соединений бывают», «чем левое соединение отличается от правого», «что такое триггеры» и так далее. Более того, в этих материалах практически ничего не говорится о проблемах SQL (и его реализациях), которых на самом деле очень и очень немало. Поэтому мы решили восполнить оба этих пробела: с одной стороны рассказать, как многие вещи в SQL работают изнутри, а с другой стороны — почему они работают не так как нужно / хотелось бы.

При этом речь в статье пойдет не о «вкусах и цветах фломастеров». Все затрагиваемые проблемы носят фундаментальный характер: присутствуют при разработке практически любой информационной системы и не ограничиваются «красотой кода», а в той или иной степени приводят либо к критическому падению производительности, либо к существенному росту порога вхождения, либо к значительным трудозатратам со стороны разработчика.
Читать дальше →
Всего голосов 92: ↑87 и ↓5+82
Комментарии179

Разбираемся с латинскими сокращениями и фразами в английском языке

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


Полтора года назад, читая работы про уязвимости Meltdown и Spectre, я поймал себя на том, что не очень понимаю разницу между сокращениями i.e. и e.g. Т.е. по контексту вроде бы понятно, но потом вроде бы как-то и не совсем то. В результате я тогда сделал себе небольшую шпаргалку именно по этим сокращениям, чтобы не путаться. И тогда же появилась идея этой статьи.


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

Читать дальше →
Всего голосов 143: ↑142 и ↓1+141
Комментарии72

Cython: более чем 30-кратное ускорение Python-кода

Время на прочтение4 мин
Количество просмотров93K
Python — это язык, который любят многие программисты. Этим языком невероятно легко пользоваться. Всё дело в том, что код, написанный на Python, отличается интуитивной понятностью и хорошей читабельностью. Однако в разговорах о Python часто можно слышать одну и ту же жалобу на этот язык. Особенно тогда, когда о Python говорят знатоки языка C. Вот как она звучит: «Python — это медленно». И те, кто так говорят, не грешат против истины.

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



Есть несколько способов ускорения Python-программ. Например, можно применять библиотеки, рассчитанные на использование нескольких ядер процессора. Тем, кто работает с Numpy, Pandas или Scikit-Learn, можно посоветовать взглянуть на программный комплекс Rapids, позволяющий задействовать GPU при проведении научных расчётов.
Читать дальше →
Всего голосов 77: ↑60 и ↓17+43
Комментарии31

Камень, ножницы, бумага, собеседования, Спок

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


Когда целыми днями слушаешь, как проходят технические собеседования, начинаешь замечать закономерности. Вернее, в нашем случае, их отсутствие. Мне удалось обнаружить всего две вещи, которые остаются неизменными. Я даже придумал алкогольную игру на их основе: каждый раз, когда кто-нибудь решает, что ответ на вопрос — хеш-таблица, выпиваем стопку, если правильный ответ действительно хеш-таблица, выпиваем две. Но играть в нее не советую, я так чуть не помер.

Почему я целыми днями слушаю собеседования? Потому что несколько лет назад стал одним из создателей сервиса interviewing.io, платформы для проведения собеседований, где люди из IT-сферы могут отрабатывать навыки общения с работодателем и между делом находить работу.

В итоге я имею доступ к большому массиву данных о том, как один и тот же пользователь показывает себя на разных собеседованиях. И они оказываются настолько непредсказуемыми, что поневоле задумаешься о том, насколько вообще показательны результаты единственной встречи.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии10

Подборка полезных слайдов от Джулии Эванс

Время на прочтение1 мин
Количество просмотров52K
Перевели новую порцию слайдов. Права доступа в Unix, файловые дескрипторы, потоки, магия proc. И на закуску пара советов о том, как общаться, когда ты не согласен. А вдруг пригодятся =)



Читать дальше →
Всего голосов 115: ↑111 и ↓4+107
Комментарии42

TDDx2, BDD, DDD, FDD, MDD и PDD, или все, что вы хотите узнать о Driven Development

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

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



  • TDD — ну, это все знают, сначала пишем тесты, а потом остальной код.
  • BDD — что-то знакомое, вроде как, тоже тесты, но особенные.
  • TDD — снова? Так, стоп, тут речь уже не о тестах совсем. Но почему называется так же?
  • DDD — bound contexts, ubiquitous language, domain...
  • FDD — да сколько можно?
  • MDD — cерьезно, на основе диаграмм?
  • PDD — ...

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


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

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

Hello, World! Глубокое погружение в Терминалы

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


На написание данной статьи меня вдохновила статья об анализе Сишного printf. Однако, там был пропущен момент о том, какой путь проходят данные после того, как они попадают в терминальное устройство. В данной статье я хочу исправить этот недочет и проанализировать путь данных в терминале. Также мы разберемся, чем отличается Terminal от Shell, что такое Pseudoterminal, как работают эмуляторы терминалов и многое другое.

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

Автомасштабирование и управление ресурсами в Kubernetes (обзор и видео доклада)

Время на прочтение8 мин
Количество просмотров18K
27 апреля на конференции Стачка-2019, в рамках секции «DevOps», прозвучал доклад «Автомасштабирование и управление ресурсами в Kubernetes». В нём рассказывается о том, как с помощью K8s обеспечить высокую доступность приложений и гарантировать их максимальную производительность.



По традиции рады представить видео с докладом (44 минуты, гораздо информативнее статьи) и основную выжимку в текстовом виде. Поехали!
Читать дальше →
Всего голосов 46: ↑44 и ↓2+42
Комментарии21

Объединение нескольких пакетов в одно пространство имен Python

Время на прочтение4 мин
Количество просмотров7.9K
Иногда возникает необходимость разделить несколько пакетов, лежащих в одном пространстве имен по разным физическим путям. Например, если вы хотите иметь возможность передавать разную компоновку плагинов, имея возможность в последствии добавлять их, не контролируя их расположение, и, при этом, обращаться к ним через один namespace.

Эта шпаргалка, которая подойдет скорее для новичков, посвящена пространствам имен Python.

Давайте рассмотрим, как это можно сделать в разных версиях Python, так как хотя Python2 и перестает скоро поддерживаться, многие из нас как раз сейчас меж двух огней, и это как раз один из важных нюансов при переходе.

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

Не очередной язык программирования. Часть 1: Логика предметной области

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


В последнее время на рынке появилось огромное количество новых языков программирования: Go, Swift, Rust, Dart, Julia, Kotlin, Hack, Bosque – и это только из числа тех, которые на слуху.
Ценность того, что эти языки привносят в мир программирования, тяжело переоценить, но, как правильно в прошлом году отмечал Y Combinator, говоря про инструменты разработки:
Фреймворки становятся лучше, языки немного умнее, но в основном мы делаем то же самое.
В данной статье будет рассказано о языке, построенном на подходе, принципиально отличающемся от подходов, используемых во всех существующих языках, в том числе вышеперечисленных. По большому счету, этот язык можно считать языком общего назначения, хотя некоторые его возможности и текущая реализация платформы, построенной на нем, все же, наверное, ограничивают его применение немного более узкой областью – разработкой информационных систем.
Читать дальше →
Всего голосов 53: ↑44 и ↓9+35
Комментарии431

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

Время на прочтение6 мин
Количество просмотров573K
Это первая статья в серии, где я буду документировать мой опыт написания веб-приложения на 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 самой гибкой.
Я хочу начать это долгое и удивительное путешествие
Всего голосов 63: ↑60 и ↓3+57
Комментарии31

Всё, что нужно для начала работы с Vue.js

Время на прочтение13 мин
Количество просмотров99K
Скорее всего, вы, читая эти строки, уже слышали о JavaScript-фреймворке, который называется Vue. Если вы собирались его опробовать, но не очень хорошо представляли себе то, с чего вам стоит начать, значит — этот материал написан специально для вас. Его автор говорит, что хочет рассказать о том, почему ему очень нравится Vue. Кроме того, он собирается представить всем желающим 4 способа написания первого приложения на Vue.



В конце этого материала, вы найдете ссылки на целый курс по Vue.js.
Читать дальше →
Всего голосов 43: ↑39 и ↓4+35
Комментарии31

Сделай сам веб-сервис с асинхронными очередями и параллельным исполнением

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

rq Каждый должен делать свою работу качественно и в срок. Допустим, вам нужно сделать веб-сервис классификации картинок на базе обученной нейронной сети с помощью библиотеки caffe. В наши дни качество — это асинхронные неблокирующие вызовы, возможность параллельного исполнения нескольких заданий при наличии свободных процессорных ядер, мониторинг очередей заданий… Библиотека RQ позволяет реализовать все это в сжатые сроки без изучения тонны документации.


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

Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии20

15 малоизвестных команд Linux

Время на прочтение3 мин
Количество просмотров316K
Каждому разработчику в определенной степени следует овладеть навыками работы в терминале. Физически находиться у компьютера не всегда возможно, поэтому приходится подключаться удаленно. И действительно, GUI-программы вполне могут с этим с правиться, но зачастую они работают медленнее, чем получение доступа через тот же терминал (в конце концов, это лишь обмен текстом).
Читать дальше →
Всего голосов 333: ↑274 и ↓59+215
Комментарии224

Сравнение одинакового проекта в Rust, Haskell, C++, Python, Scala и OCaml

Время на прочтение16 мин
Количество просмотров44K
В последнем семестре университета я выбрал курс компиляторов CS444. Там каждая группа из 1-3 человек должна была написать компилятор из существенного подмножества Java в x86. Язык на выбор группы. Это была редкая возможность сравнить реализации больших программ одинаковой функциональности, написанных очень компетентными программистами на разных языках, и сравнить разницу в дизайне и выборе языка. Такое сравнение породило массу интересных мыслей. Редко можно встретить такое контролируемое сравнение языков. Оно не идеально, но намного лучше, чем большинство субъективных историй, на которых основано мнение людей о языках программирования.

Мы сделали наш компилятор на Rust, и сначала я сравнил его с проектом команды на Haskell. Я ожидал, что их программа будет намного короче, но она оказалась того же размера или больше. То же самое для OCaml. Затем сравнил с компилятором на C++, и там вполне ожидаемо компилятор был примерно на 30% больше, в основном, из-за заголовков, отсутствия типов sum и сопоставлений с образцом. Следующее сравнение было с моей подругой, которая сделала компилятор самостоятельно на Python и использовала менее половины кода, по сравнению с нами, из-за мощности метапрограммирования и динамических типов. У другого товарища программа на Scala тоже была меньше нашей. Больше всего меня удивило сравнение с другой командой, которая тоже использовала Rust, но у них оказалось в три раза больше кода из-за разных дизайнерских решений. В конце концов, самая большая разница в количестве кода оказалась в пределах одного языка!
Читать дальше →
Всего голосов 100: ↑91 и ↓9+82
Комментарии138

Построение Outbound продаж в сервисной IT компании

Время на прочтение25 мин
Количество просмотров10K
В этом интревью мы поговорим о лидогенерации в IT не совсем стандартными методами.
Мой сеголняшний гость Макс Макаренко — founder и CEO в Docsify, sales & marketing growth hacker. Макс уже более десяти лет в B2B-продажах.

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

Сергей
Макс, скажи пожалуйста, а почему ты ушел с аутсорса в продукт? Что послужило причиной? Аутсорс вроде тоже неплохой бизнес?

Макс
Ну, он неплохой с точки зрения, наверное, получения каких-то стабильных доходов, но, с точки зрения того, что больше «для души», все-таки душа лежит к тому, где уже последняя цепочка — предоставление ценности. То есть когда мы работаем и делаем продукты для кого-то, а потом смотрим и видим, как они не всегда взлетают, а чаще всего не взлетают, очень обидно, так как ты вложил в него всю душу.

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

Сергей
Я за тобой слежу в сети и вижу, что тема аутсорса тебя так и не отпускает, все-таки аутсорс где-то в глубине души сидит, причем очень плотно. Почему?

Макс
Дело в том, что в тот момент, когда я занимался аутсорсом, я сейчас уже понимаю, что я не видел всей картины. Когда я перешел, так сказать, на другую сторону, когда мы начали делать продукт, с одной стороны, нас стали воспринимать как объект «кому продать», и мы получаем постоянно какие-то предложения и это просто уже превратилось в какое-то сумасшествие, т.е. нам все предлагают услуги аутсорса.

Я увидел это немножко с другой стороны. А с третьей стороны, у нас много клиентов — аутсорсинговых компаний, в том числе не только, кстати, на русскоязычном пространстве, очень много клиентов зарубежных, которые оказывают подобные услуги.
Читать дальше →
Всего голосов 21: ↑19 и ↓2+17
Комментарии3

Дайджест продуктового дизайна, май 2019

Время на прочтение11 мин
Количество просмотров4.2K
Дайджест продуктового дизайна, май 2019

Дайджест собирает свежие статьи по дизайну интерфейсов, а также инструменты, паттерны, кейсы, тренды и исторические рассказы с 2009 года. Я тщательно фильтрую большой поток подписок, чтобы вы могли прокачать свои профессиональные навыки и лучше решить рабочие задачи. Предыдущие выпуски: апрель 2010-апрель 2019.
Всего голосов 28: ↑26 и ↓2+24
Комментарии3

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность