Pull to refresh
0
0
Send message

Улучшение Python-кода: 12 советов для начинающих

Reading time12 min
Views41K
В мои обязанности входит наём Python-разработчиков. Если у заинтересовавшего меня специалиста есть GitHub-аккаунт — я туда загляну. Все так делают. Может быть, вы этого и не знаете, но ваш домашний проект, не набравший ни одной GitHub-звезды, может помочь вам в получении работы.

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



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

В чём разница между новичком и более опытным разработчиком? Новичок не работал с устаревшими кодовыми базами. Поэтому он не видит ценности в том, чтобы вкладывать время в написание кода, который легко поддерживать. Часто новички работают в одиночку. Они, в результате, не особенно заботятся о читабельности кода.
Читать дальше →
Total votes 61: ↑53 and ↓8+45
Comments18

Варим суп из стали: оптимизация логистики ковшей и как устроен цех КЦ № 2

Reading time8 min
Views20K
Привет из конвертерного цеха металлургического комбината! Смотрите, у нас тут есть вот такой суп в ковше, стоящем на сталевозе:

image
Таких ковшей на 320 тонн стали в цехе 40 штук, и они медленно остывают. Этой стали грустно и одиноко, она подмерзает. Через эти ковши проходит 10 миллионов тонн стали в год, это 14% стали России

На входе в цех у нас жидкий чугун и металлолом, на выходе надо получить сляб — большой слиток стали. Контур системы диспетчеризации «Гефест» начинается с конвертера, где мы продуваем чугун кислородом, таким образом окисляем и удаляем ненужные нам примеси. После конвертера получается «стальной бульон» для супа, в который уже можно добавлять основные ингредиенты, чтобы получались разные марки стали. За смену мы выплавляем несколько заказов, и каждая сталь требует своего рецепта — это разные добавки, разные техпроцессы, разные температуры и разные последовательности действий.

image
На участке аргонной установки

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

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

Но давайте начну с, собственно, рассказа про то, что же именно оптимизируется в цехе.
Читать дальше →
Total votes 109: ↑109 and ↓0+109
Comments39

Проблемы автономных СКУД — Там, откуда не ждали

Reading time3 min
Views29K
Всем доброго времени суток. Начну с предыстории, о том, что меня побудило провести данное исследование, но прежде предупрежу: все практические действия были выполнены с согласия управляющих структур. Любая попытка использовать данный материал в целях проникновения на закрытую территорию без права там находиться — является уголовным правонарушением.

Началось все с того, что убираясь на столе, я случайно поместил RFID ключ от подъезда на NFC-считыватель ACR122 — каково же было мое удивление, когда Windows воспроизвела звук обнаружения нового устройства, а светодиод загорелся зеленым. Я до этого момента полагал что эти ключи работают исключительно в стандарте Proximity.
image
Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments36

10-гигабитный Ethernet: советы новичку

Reading time5 min
Views175K


Вдохновившись интернет-запросами в стиле «как сделать спиннер из картонки», я решил рассказать о том, что близко мне: как самому построить 10-гигабитную сеть. Гигабитный Ethernet вопросов уже не вызывает – справится даже школьник: потребуется коммутатор, медная витая пара и привычные RJ-45 разъемы.

А если хочется больше? Например, 10-гигабитное соединение для небольшого офиса или серверной. Какое оборудование понадобится и как его подключать – просто и по шагам в моей сегодняшней статье.
Читать дальше →
Total votes 65: ↑62 and ↓3+59
Comments95

Встраиваем своё устройство «Умного дома» в экосистему SmartThings

Reading time14 min
Views42K
Платформы «Умного дома» позволяют интегрировать устройства и создавать новые сценарии их взаимодействия. Известен эффект платформ: пользователи скорее выберут ту, с которой уже совместимы имеющиеся у них устройства, нежели перейдут на какую-либо новую. Поэтому для разработчиков новых гениальных девайсов может оказаться выгоднее встраиваться в уже готовую платформу, сосредоточив внимание на «железном» продукте, нежели разрабатывать свои собственные «велосипеды» в виде еще одних облачных экосистем и личных кабинетов.

Рассмотрим, как встроить свое собственное устройство с платформой «Умного дома» Samsung SmartThings. Мы реализуем вариант прямого (Direct) подключения для управления устройством «Умного дома» на примере кнопки-выключателя и трехцветной лампочки. 


Читать дальше →
Total votes 8: ↑8 and ↓0+8
Comments4

Андрей Терехов (продолжение): «Когда говорят, что мы отстали от американцев навсегда, я отвечаю: „Не дождетесь!“»

Reading time17 min
Views59K


Вторая часть интервью с завкафедрой системного программирования Матмеха СПбГУ, доктором физмат наук, профессором, президентом компании «Ланит-Терком». Андрей Николаевич Терехов рассказал о создании кафедры матобеспечения ЭВМ и своих многочисленных учениках, языке PADLA, работе ассенизатора и технике бега в мешках.
Читать дальше →
Total votes 114: ↑91 and ↓23+68
Comments363

Ультимативное сравнение embedded платформ для AI

Reading time22 min
Views24K
Нейронные сеточки захватывают мир. Они считают посетителей, контролируют качество, ведут статистику и оценивают безопасность. Куча стартапов, использование в промышленности.
Замечательные фреймворки. Что PyTorch, что второй TensorFlow. Всё становиться удобнее и удобнее, проще и проще…
Но есть одна тёмная сторона. Про неё стараются молчать. Там нет ничего радостного, только тьма и отчаяние. Каждый раз когда видишь позитивную статью — грустно вздыхаешь, так как понимаешь что просто человек что-то не понял. Или скрыл.
Давайте поговорим про продакшн на embedded-устройствах.

Total votes 43: ↑43 and ↓0+43
Comments57

5 распространенных ошибок начинающих программистов на Python

Reading time4 min
Views49K
В первые дни работы программистом на Python все мы сталкиваемся с разными типами багов в нашем коде, которые после нескольких болезненных часов в StackOverflow оказываются не багом, а фичей Python'а. Ниже приведены 5 самых распространенных ошибок, которые делают большинство начинающих программистов на Python. Давайте немного о них узнаем, чтобы сэкономить несколько часов, задавая вопросы на страницах и в группах в Facebook.
Читать дальше →
Total votes 56: ↑42 and ↓14+28
Comments69

Отличаем символы от мусора: как построить устойчивые нейросетевые модели в задачах OCR

Reading time8 min
Views7.5K
В последнее время мы в группе распознавания компании ABBYY всё больше применяем нейронные сети в различных задачах. Очень хорошо они зарекомендовали себя в первую очередь для сложных видов письменности. В прошлых постах мы рассказывали о том, как мы используем нейронные сети для распознавания японской, китайской и корейской письменности.

image Пост про распознавания японских и китайских иероглифов
image Пост про распознавание корейских символов

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

Мотивация


А в чём вообще проблема? Зачем нужно работать на изображениях, которые не являются отдельными символами? Казалось бы, можно разделить фрагмент строки на символы, классифицировать их все и собрать из этого результат, как, например, на картинке ниже.



Да, конкретно в данном случае так действительно можно сделать. Но, увы, реальный мир устроен куда более сложно, и на практике при распознавании приходится иметь дело с геометрическими искажениями, смазом, пятнами кофе и прочими трудностями.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments0

Место проклятое?

Reading time10 min
Views16K
Слышали, наверное, анекдот про Автоваз и проклятое место? Пересказывать не буду, в интернете есть. Смысл его в том, что если место, т.е. компания, подобна Автовазу, то никакой менеджмент, какой бы он ни был национальности и образованности, ничего не исправит.

Мне рассказывали про предприятие, которое, с одной стороны, этот анекдот подтверждает своим существованием, а с другой – опровергает. Шутка ли – там сменилось 4 директора за 6 лет. Были еще промежутки, когда руководил сам собственник, но их я учитывать не буду. И заканчивалось почти всегда одинаково – директора выгоняли за то, что не мог существенно повлиять на показатели, достичь поставленных целей, изменить корпоративную культуру, сдвинуть предприятие с мертвой точки. Расшевелить болото, в общем.

Попробуем разобраться, так ли всё просто и однозначно.
Читать дальше →
Total votes 48: ↑38 and ↓10+28
Comments32

Беспощадная автоматизация. Director's Cut

Reading time18 min
Views8.4K

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


Начальные условия


Наш эксперимент по ускорению работы программистов мы проводили в следующих условиях:


  • это было территориально распределенное производственное предприятие;
  • в эксперименте приняли участие 4 программиста 1С и я, их руководитель;
  • мы – штатные программисты по поддержке комплекса конфигураций;
  • нам стало скучно, и мы решили развиваться.

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

Читать дальше →
Total votes 34: ↑22 and ↓12+10
Comments28

Как мы сделали малогабаритный облачный видеорегистратор из обычной IP камеры

Reading time8 min
Views64K


Тема видеонаблюдения встала для меня остро с появлением загородного жилья. На просторах интернета можно найти кучу информации по организации видеонаблюдения. К сожалению большинство вариантов сводилось к покупке готовых комплектов из Китая. От знакомых слышал много критики на этот счёт. Как-то даже сам поучаствовал в настройке оборудования, купленного с Aliexpress. Где-то половина заявленных функций работала не так как заявлено, некоторые опции и вовсе не получилось настроить, хотя регистратор был не из дешёвых. И таких отзывов и мнений было много. Также многие критически относятся к тому, что видеозаписи хранятся на китайских облачных сервисах. И тогда появилась мысль — а что если попробовать сделать свой видеорегистратор с минимальным функционалом? А что? На тот момент я начал плотно увлекаться linux, писал приложения с элементарным функционалом на bash, экспериментировал с web… В принципе всё что нужно для решения поставленной задачи. Сказано — сделано.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments122

Другой Github 2: машинное обучение, датасеты и Jupyter Notebooks

Reading time6 min
Views19K


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

В этой подборке собраны репозитории по машинному обучению, датасетам и Jupyter Notebooks, ранжированные по количеству звезд. В предыдущей части мы рассказывали о популярных репозиториях для изучения работ по визуализации данных и глубокому обучению.
Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments1

Удаленный мониторинг и управление устройств на базе Linux/OpenWrt/Lede через 80-ый порт…

Reading time6 min
Views14K
Всем привет, это мой первый опыт на Хабре. Хочу написать о том, как нестандартно управлять сетевым оборудованием во внешней сети. Что значит нестандартно: в большинстве случаев, для управления оборудованием во внешней сети Вам необходимо:

  • Публичный IP-адрес. Ну, или если оборудование находится за чьим-то NAT-ом, то публичный IP и «проброшенный» порт.
  • Туннель (PPTP/OpenVPN/L2TP+IPSec и т.д.) до центрального узла, через который была бы доступна.

Поэтому «мой велосипед» потребуется Вам, когда стандартные методы Вам не подходят, например:
Читать дальше →
Total votes 17: ↑16 and ↓1+15
Comments14

Как написать вредное API

Reading time5 min
Views6.6K

Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.


Всем привет!


Я работаю тимлидом команды Integration Development в сервисе онлайн-бронирования отелей Ostrovok.ru и сегодня хотел бы поделиться своим опытом работы с различными API.



Как разработчик системы, работающей с внешними поставщиками, я часто встречаюсь с различными API – чаще всего это SOAP/REST или что-то на них похожее. Однако от работы со многими из них остается впечатление, что их писали, не руководствуясь ни техническими правилами, ни здравым смыслом – как будто бы по книге “Вредные советы” Григория Остера. В данной статье я постараюсь описать такие случаи в стиле “вредных советов” и рассмотрю примеры, связанные с XML. Комментарии и обсуждение приветствуются.

Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments8

Книга «Прагматичный ИИ. Машинное обучение и облачные технологии»

Reading time15 min
Views4.6K
image Привет, Хаброжители! Эта книга Ноя Гифта предназначена для всех, кого интересуют ИИ, машинное обучение, облачные вычисления, а также любое сочетание данных тем. Как программисты, так и просто неравнодушные технари найдут тут для себя полезную информацию. Примеры кода даны на Python. Здесь рассматривается множество столь продвинутых тем, как использование облачных платформ (например, AWS, GCP и Azure), а также приемы машинного обучения и реализация ИИ. Джедаи, свободно ориентирующиеся в Python, облачных вычислениях и ML, также найдут для себя много полезных идей, которые смогут сразу применить в своей текущей работе.

Предлагаем ознакомиться с отрывком из книги «Создание интеллектуального бота Slack в AWS»
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments2

Scala + MXNet = Микросервис с нейронкой в проде

Reading time20 min
Views8.9K

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

Основной, на мой взгляд, недостаток всех этих примеров — ограниченность возможностей. Вы взяли пример, — пусть даже с базовой нейронной сетью, которую предлагает автор, — запустили его, возможно, он даже заработал, а что дальше? Как сделать так, чтобы этот незамысловатый код начал работать на production-сервере? Как его обновлять и поддерживать? Вот тут и начинается самое интересное. Мне не удалось найти полного описания процесса от момента «ну вот, ML-инженер обучил нейронную сеть» до «наконец-то мы выкатили это в production». И я решил закрыть этот пробел.
Читать дальше →
Total votes 42: ↑41 and ↓1+40
Comments9

Неразгаданная тайна зрения

Reading time19 min
Views18K
Вопрос устройства зрения заметная часть нейробиологии. Данному вопросу посвящены огромные объемы литературы и четыре нобелевские премии, но в сложившейся ситуации нельзя не заметить то, что изложенное в учебниках устройство зрения млекопитающих не справляется с поставленной задачей. Цель данного эссе показать свод причин, почему не стоит закрывать на это глаза. По сути, будет предъявлен портрет тайны зрения, начиная от разнообразия мелких деталей в самом начале потока зрительной информации у млекопитающих, угрозы от их игнорирования, и заканчивая ворохом проблем в понимании обработки мозгом в конце пути.

Устройство системы зрения


На взгляд любого учебника о зрении мы видим в три этапа. Первый этап: свет попадает на сетчатку и преобразуется в нервное возбуждение фоторецепторов – сенсорных нейронов сетчатки. Кроме того глаз нормализует контрастность и яркость, фокусирует изображение.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments5

AlphaStar — новая система искусственного интеллекта для StarCraft II от DeepMind (полный перевод)

Reading time11 min
Views27K


Игры десятилетиями использовались как один из главных способов тестирования и оценки успешности систем искусственного интеллекта. По мере того как росли возможности, исследователи искали игры с постоянно возрастающей сложностью, которые бы отражали различные элементы мышления, необходимые для решения научных или прикладных проблем реального мира. В последние годы StarCraft считается одной из самых многогранных и сложных стратегий реального времени и одной из самых популярных на сцене киберспорта за всю историю, а сейчас StarCraft стал еще и главным вызовом для исследований ИИ.
Total votes 54: ↑51 and ↓3+48
Comments54

3 лучших инструмента для описания RESTful API

Reading time3 min
Views118K

Взаимодействие различных сервисов с использованием АPI, из новаторства превращается в обыденность. Количество бесплатных и платных API уже исчисляется тысячами, и с каждым днем их число активно растет. А почему бы и нет? Продажа удаленных запросов к своему новаторскому сервису может принести больше прибыли, чем распространение услуг через свою площадку. И пусть, в таком случае, уже ваши клиенты ломают голову и тратят деньги на привлечение аудитории. Используя свой опыт работы, я предлагаю краткий обзор лучших решений по реализации API на сегодняшний день.
Читать дальше →
Total votes 32: ↑24 and ↓8+16
Comments17
1

Information

Rating
Does not participate
Registered
Activity