Pull to refresh
63
0

Разработчик

Send message

Dependency Injection в мире Software Engineering

Reading time 22 min
Views 26K

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

Читать далее
Total votes 29: ↑28 and ↓1 +27
Comments 9

Как подружить юнит-тестирование с базой данных

Reading time 10 min
Views 32K
Как подружить TDD подход при работе с базой данных
История о том, как разрабатывалась система автоматического тестирования методов, взаимодействующих с базой данных, с подробным описанием того, с какими подводными камнями пришлось столкнуться в процессе разработки и внедрения системы в окружение проекта.
Читать дальше →
Total votes 14: ↑12 and ↓2 +10
Comments 20

Python на Хабре

Reading time 7 min
Views 450K
Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше? А дальше я стал искать материал для изучения…
Читать дальше →
Total votes 182: ↑162 and ↓20 +142
Comments 65

Нехватка кадров, о чём, где, для кого, а есть ли на самом деле?

Reading time 6 min
Views 18K
Россия, страна очень интересная, сейчас будет не много лирики и оффтопа но они понадобятся позже для некоторого понимания ситуации.
Читать дальше →
Total votes 78: ↑70 and ↓8 +62
Comments 307

Ликбез по типизации в языках программирования

Reading time 12 min
Views 496K
image

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

В полной версии находится подробное описание всех видов типизации, приправленное примерами кода, ссылками на популярные языки программирования и показательными картинками.
Читать дальше →
Total votes 239: ↑232 and ↓7 +225
Comments 180

Базовые возможности LXD — системы контейнеров в Linux

Reading time 29 min
Views 52K

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


Ядро LXD — это привилегированный демон (сервис запущенный с правами root), который предоставляет REST API через локальный unix сокет, а также через сеть, если установлена соответствующая конфигурация. Клиенты, такие как инструмент командной строки поставляемый с LXD посылают запросы через этот REST API. Это означает, что независимо от того, обращаетесь ли вы к локальному хосту или к удаленному, все работает одинаково.


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

Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Comments 17

Хитрости и трюки при использовании Wine

Reading time 5 min
Views 231K
image

Всем привет!
Прочел статью про «Все тонкости настройки Wine», оказалось, что там далеко не все тонкости. Поэтому написал этот пост как дополнение тому.

В данном посте в основном вольный перевод оф. документации, а так же несколько своих и чужих хитростей при работе с вайн.
Скорее всего данный пост будет интересен новичкам и обычным пользователям GNU\Linux. Тем не менее добротные советы от специалистов не будут лишними.
Читать дальше →
Total votes 122: ↑113 and ↓9 +104
Comments 49

Ущербно-ориентированное программирование

Reading time 6 min
Views 88K
Ущербно-ориентированное программирование — это набор подходов, поощряющий повторное использование кода и гарантирующий долгосрочное использование производимого программистами кода в боевых системах. Количество строк кода является повсеместно применяемым показателем значимости приложения, а количество строк, которые программист пишет за рабочий день — полезная метрика, применяемая при планировании проектов и распределении ресурсов. Ущербно-ориентированное программирование — это один из наиболее эффективных способов получить наиболее объемный исходник в кратчайшие сроки.

Ущербный — имеющий изъян, неполноценный. Вредный, недостаточный.

Наследование


Наследование — это способ получить возможности старого кода в новом коде. Программист наследуется от существующей функции или блока кода, копируя этот кусок к себе и внося правки. Унаследованный код, как правило, конкретизируется под новые нужды с помощью возможностей, которые не поддерживал старый код. В таком смысле, старый код остается нетронутым, но новый наследуется от него.
Читать дальше →
Total votes 203: ↑174 and ↓29 +145
Comments 115

Признаки настоящих программистов-сеньоров и методы их выслеживания в дикой природе

Reading time 6 min
Views 52K
Существует большой разброс в уровнях квалификации разработчиков. И то, что называют «сеньорностью», часто ничего не говорит о реальных возможностях программиста. Что делает некоторых разработчиков объективно лучше других? Что выделяет их из серой толпы?
Если у программиста есть пять, десять или даже пятнадцать лет «практического опыта» — это не обязательно гарантирует то, что он является эффективным и продуктивным сеньором. На самом деле — это даже не значит, что он вообще может так называться.

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



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

Автор материала, перевод которого мы сегодня публикуем, говорит, что хочет рассказать о некоторых признаках, которые помогают отличить настоящего программиста-сеньора от программиста с «сеньорностью».
Читать дальше →
Total votes 97: ↑64 and ↓33 +31
Comments 99

Юнит-тестирование для чайников

Reading time 15 min
Views 1M
Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



То что вы делаете, называется интеграционным тестированием. Современные приложения достаточно сложны и содержат множество зависимостей. Интеграционное тестирование проверяет, что несколько компонентов системы работают вместе правильно.

Оно выполняет свою задачу, но сложно для автоматизации. Как правило, тесты требуют, чтобы вся или почти вся система была развернута и сконфигурирована на машине, на которой они выполняются. Предположим, что вы разрабатываете web-приложение с UI и веб-сервисами. Минимальная комплектация, которая вам потребуется: браузер, веб-сервер, правильно настроенные веб-сервисы и база данных. На практике все еще сложнее. Разворачивать всё это на билд-сервере и всех машинах разработчиков?

We need to go deeper
Total votes 70: ↑63 and ↓7 +56
Comments 65

Разработка хитрого ИИ в тактической игре на основе эвристик и мутаций

Reading time 17 min
Views 16K
В тактических играх ИИ очень важен. Если ИИ видится как «искусственный идиот», то игру может спасти потрясающий мультиплеер, сюжет, атмосфера и графика (это неточно). Решение очевидное: делай хороший ИИ, в чём тут могут быть проблемы?

Cat terminator by CoolAI

В деталях. Ниже описаны мои шаги по конструированию сильного ИИ с характером. Не супер сильного [1], но способного быстро отработать локально в прожорливом браузере любого средне-слабого ПК. Мною применён подход экспертных систем с использованием набора эвристик и мутаций. Описаны 15 шагов постепенного преображения ИИ, каждый из шагов можно пощупать.
Total votes 26: ↑26 and ↓0 +26
Comments 17

Дайджест новостей машинного обучения и искусственного интеллекта за ноябрь

Reading time 4 min
Views 7.5K
Привет, Хабр! Отфильтровав для вас большое количество источников и подписок, сегодня собрал все наиболее значимые новости из мира будущего, машинного обучения, роботов и искусственного интеллекта за ноябрь. Не забудьте поделиться с коллегами или просто с теми, кому интересны такие новости.

Для тех, кто не читал дайджест за октябрь, можете прочесть его здесь.

Итак, а теперь дайджест за ноябрь:

1. MIT разработал новый тип робота, который может расти как растение когда ему требуется дополнительная досягаемость.

image
Total votes 51: ↑51 and ↓0 +51
Comments 6

9 лучших опенсорс находок за ноябрь 2019

Reading time 2 min
Views 19K

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


За полным списком новых полезных инструментов, статей и докладов можно обратиться в мой телеграм канал @OpensourceFindings (по ссылке зеркало, если не открывается оригинал).


В сегодняшнем выпуске.
Технологии внутри: Rust, TypeScript, JavaScript, Go, Python.
Тематика: веб разработка, инструменты для QA, работа с данными, инструменты разработчика и администратора.


Прошлый выпуск.

Читать дальше →
Total votes 34: ↑33 and ↓1 +32
Comments 19

Автоматизация задач администрирования API VMware vSphere с использованием Python

Reading time 4 min
Views 19K

В нашей компании активно используется платформа для виртуализации VMware vSphere. В ней живут тестовые среды продуктов, демонстрационные стенды, эмуляторы различных инфраструктур заказчиков и прочие не менее важные «виртуалки». Несмотря на достаточную мощность нашей инфраструктуры, доступ большого числа человек к управлению виртуальными машинами постоянно приводит к конфликтам и снижению производительности фермы. Разделение пулов между отделами (инженерами, тестировщиками, сейлами и разработчиками) проблему до конца не решает, поэтому периодически приходится разбираться, кто всем мешает и кто съел все ресурсы. При количестве виртуальных машин далеко за сотню сделать это вручную бывает проблематично, поэтому мы научились использовать API. VMware vSphere имеет довольно богатое API, которое незаслуженно слабо освещено на Хабре, хотя прикладная область применения довольна широка.

В данной статье будут приведены примеры взаимодействия в рамках задач администрирования с помощью Python.
Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 3

Что не так с ООП и ФП

Reading time 5 min
Views 70K
Я не понимаю причины существования бесконечных споров вокруг Объектно-ориентированного (ООП) и Функционального (ФП) программирования. Кажется, что такого рода вещи находятся за пределами человеческого понимая, и о них можно спорить бесконечно. Много лет занимаясь исследованием языков программирования, я увидел четкий ответ, и зачастую я нахожу бессмысленным обсуждение этих вопросов.

Если кратко, то как ООП, так и ФП неэффективны, если доходить в их использовании до крайности. Крайностью в ООП считается идея о том что “все что угодно является объектом” (чистое ОП). Крайностью для ФП можно рассматривать чистые функциональные языки программирования.
Читать дальше →
Total votes 148: ↑116 and ↓32 +84
Comments 166

Попытки начать обучение ребенка программированию с Minecraft pocket edition

Reading time 5 min
Views 57K


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

Total votes 59: ↑56 and ↓3 +53
Comments 103

bear_hug: игры в ASCII-арте на Python3.6+

Reading time 10 min
Views 6.8K


Для своих игр в ASCII-арте я написал библиотеку bear_hug с очередью событий, коллекцией виджетов, поддержкой ECS и прочими полезными мелочами. В этой статье мы посмотрим, как с её помощью сделать минимальную работающую игру.
Читать дальше →
Total votes 30: ↑30 and ↓0 +30
Comments 5

Бредогенератор: создаем тексты на любом языке с помощью нейронной сети

Reading time 17 min
Views 67K
Привет, Хабр.

Эта статья будет в немного «пятничном» формате, сегодня мы займемся NLP. Не тем NLP, про который продают книжки в подземных переходах, а тем, который Natural Language Processing — обработка естественных языков. В качестве примера такой обработки будет использоваться генерация текста с помощью нейронной сети. Создавать тексты мы сможем на любом языке, от русского или английского, до С++. Результаты получаются весьма интересными, по картинке уже наверно можно догадаться.



Для тех, кому интересно что получается, результаты и исходники под катом.
Читать дальше →
Total votes 41: ↑35 and ↓6 +29
Comments 67

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

Reading time 18 min
Views 42K

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



Гвидо Ван Россум в штаб-квартире Dropbox в 2014 году

В конце 1994 года группа избранных программистов с разных концов США собралась для обсуждения своего нового секретного оружия.

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

«Особенно мне запомнился один человек, сказавший: ’Не говорите никому, что я здесь, потому что то, что мы используем питон, является конкурентным преимуществом’. Это было их секретное оружие».
Читать дальше →
Total votes 48: ↑39 and ↓9 +30
Comments 109

ООП, «святая троица» и SOLID: некоторый минимум знаний о них

Reading time 43 min
Views 113K

Необходимое вступление


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


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


Столь малые гарантии поднимают вопросы о причинах, по которым статья пишется. Я считаю, что этим вещам должны учить везде, где учат программированию, вплоть до уроков информатики в школах с углублённым её изучением. Тем не менее, для меня стала пугающе нормальной ситуация, когда я узнаю, что собеседник мой коллега, причём работающий уже не первый год, но про инкапсуляцию «что-то там слышал». Необходимость собрать всё это в одном месте и давать ссылку при возникновении вопросов зрела давно. А тут ещё и мой «pet-project» дал мне изрядно пищи для размышлений.


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



Читать дальше →
Total votes 88: ↑82 and ↓6 +76
Comments 79

Information

Rating
Does not participate
Location
Ковров, Владимирская обл., Россия
Registered
Activity