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

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

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

Принципы для разработки: KISS, DRY, YAGNI, BDUF, SOLID, APO и бритва Оккама

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

Хорошему программисту необходимо уметь совмещать свои навыки со здравым смыслом. Все дело в прагматизме и навыке выбора лучшего решения для вашей проблемы. Когда вы сталкиваетесь с проблемой при разработке ПО, вы можете воспользоваться базовыми принципами, которые помогут в выборе самого правильного подхода.

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

Последовательное применение этих принципов упростит ваш переход от миддла к сеньору. Вы можете обнаружить, что некоторые (вероятно) вы применяете интуитивно.

Принципов много. Мы остановимся на семи самых важных. Их использование поможет вам в развитии и позволит стать лучшим программистом.

1. YAGNI

You Aren’t Gonna Need It / Вам это не понадобится

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

Этот принцип применим при рефакторинге. Если вы занимаетесь рефакторингом метода, класса или файла, не бойтесь удалять лишние методы. Даже если раньше они были полезны – теперь они не нужны.

Может наступить день, когда они снова понадобятся – тогда вы сможете воспользоваться git-репозиторием, чтобы воскресить их из мертвых.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии9

Альтернатива котикам. История искусственных питомцев: 1975-1999

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

Апрельским вечером 1975 года простой американский парень Гэри Дал хорошо проводил время с друзьями в баре. Уставшие после тяжелого рабочего дня мужчины разговорились, речь зашла о домашних животных. Сошлись на том, что иметь питомца здорово, но мороки с ним не оберешься: корми, пои, выгуливай.

Гэри тогда подумал: а что, если идеальный питомец — это камень? Так появилась на свет игрушка Pet Rock, а вместе с ней — индустрия искусственных лучших друзей человека.

Дальше будут роботы, тамагочи и так далее
Всего голосов 20: ↑19 и ↓1+18
Комментарии4

Что происходит на Марсе и при чем здесь облака

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

…По статистике, 100% населения Марса — роботы.

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

Сегодня мы немного сменим акценты и поговорим о вещах более приземленных. Какие технологии обеспечивают работу марсохода? Как задействованы в изучении космоса облачные компании? И в целом — каковы планы человечества на марсианские земли в рамках амбициозной миссии.

Читать далее
Всего голосов 31: ↑28 и ↓3+25
Комментарии25

Серебряная пуля для кремлевского демона

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

image


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

Читать дальше →
Всего голосов 174: ↑162 и ↓12+150
Комментарии134

Kotlin для начинающих

Время на прочтение1 мин
Количество просмотров62K
Уже не мало нашумел Kotlin в мире программирования, не мало профессиональных инженеров уже обратил на него внимание, но также есть и те кому он не симпатизирует.

В данном топике я бы хотел обратить внимание тех начинающих программистов которые возможно только делают свой выбор языка программирования, которому бы хотели посвятить свою жизнь так сказать.
Читать дальше →
Всего голосов 22: ↑15 и ↓7+8
Комментарии13

Победа над nRF24L01: на три шага ближе

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

Многие испытывают трудности при соединении по эфиру радиомодулей nRF24L01. Об этом свидетельствует тема на форуме Амперки, открытая в конце 2014г. За пять с небольшим лет в теме накопилось более 120(!) страниц. Это при том, что автор темы не просто обозначил проблему, а поделился своим трехнедельным опытом победного для него боя. Кроме того, он тут же — в первом сообщении создал навигатор по страницам темы, где приводит ссылки на решения проблемы другими.



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



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



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



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



Для общего представления — картинка с прототипом:





Итак ...



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

Разрабатываем web-site для микроконтроллера

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

С приходом в нашу жизнь различного рода умных розеток, лампочек и других подобных устройств, необходимость наличия веб-сайтов на микроконтроллерах стала неоспоримой. А благодаря проекту lwIP (и его младшему брату uIP) подобным функционалом никого не удивишь. Но поскольку lwIP направлен на минимизацию ресурсов, то с точки зрения дизайна, функционала, а также удобства использования и разработки, подобные сайты сильно отстают от тех, к которым мы привыкли. Даже для встроенных систем, сравнить, например, с сайтом для администрирования на самых дешевых роутерах. В данной статье мы попробуем разработать сайт на Линуксе для какого-нибудь умного устройства и запустить его на микроконтроллере.
Всего голосов 17: ↑16 и ↓1+15
Комментарии31

Как удалить «неудаляемые» приложения со смартфона

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


Чтобы увеличить привлекательность смартфонов, производители ставят на них как можно больше разных программ. Это понятно. Просто берём и удаляем ненужное… Стоп.

Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция 'disable'). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

Всё это надо зачистить.
Читать дальше →
Всего голосов 190: ↑179 и ↓11+168
Комментарии203

Программист учится рисовать. Дневник Емели

Время на прочтение16 мин
Количество просмотров34K
Так получилось, что моим основным хобби на лихой 2020-й год стало освоение ремесла рисования.

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

spoiler
В конце года я остался доволен собой и окончательно понял, что я хотел бы прокачиваться и дальше!

image
Так выглядел мой уровень изобразительных навыков в ноябре предыдущего (2019-го) года

Формат подачи данной статьи — это на 95% личный дневник, который я вел в гугл-доке, записывая, что я делал каждый месяц, свои ощущения и как-то фиксируя собственный прогресс — смотрел, сколько работ мне удалось нарисовать и какого они были качества — нравились ли они мне лично или были совсем так себе по исполнению.
Читать дальше →
Всего голосов 144: ↑143 и ↓1+142
Комментарии123

Небольшой гайд по выбору 3D-принтера для начинающих

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

Поводом для написания данной статьи послужила статья “Я хотел купить недорогой 3D-принтер, но посмотрел YouTube и расхотел”, в конце которой автор просит ответить на несколько вопросов. Попробую ответить с точки зрения своего семилетнего опыта 3D-моделера и 3D-печатника. Для начала небольшие предостережения.

В данной статье не будет советов: “Покупайте принтер производителя Х - он хороший, а производителя Y - не берите ни в коем случае”, только общие рекомендации.

Классификация принтеров неформальная, принятая в отечественном сегменте печатников.

Все написанное основано на личном опыте автора и является его личным мнением.

Если данные предостережения вас не пугают - добро пожаловать под кат.

Поехали
Всего голосов 23: ↑22 и ↓1+21
Комментарии70

Как данные передаются по радио?

Время на прочтение5 мин
Количество просмотров48K
Привет, Хабр.

В одном из комментариев к предыдущим статьям был задан вопрос, можно ли по виду сигнала определить вид его модуляции. Идея рассмотреть основные виды модуляции показалась довольно-таки интересной.



Попробуем разобраться, без формул и максимально просто, как можно передать данные из точки «А» в точку «В».
Читать дальше →
Всего голосов 69: ↑68 и ↓1+67
Комментарии34

Как бы я изучал Data Science, если бы начал пару лет назад, или Руководство по эффективному изучению науки о данных

Время на прочтение5 мин
Количество просмотров30K
Когда я только начал своё путешествие к науке о данных, я потратил много времени на то, чтобы понять, с чего начать, что я должен узнать в первую очередь и какие ресурсы должен использовать. За последние два года я узнал несколько вещей, о которых хотел знать раньше, например о том, стоит ли сначала сосредоточиться на программировании или статистике, какие ресурсы я должен использовать для изучения новых навыков, как я должен подходить к изучению этих навыков и так далее. Таким образом, эта статья написана, чтобы дать направления и идеи для тех, кто изучает Data Science.

Приятного чтения!
Всего голосов 37: ↑36 и ↓1+35
Комментарии3

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

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


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

Но в средние века не было интернета. В каждом графстве постепенно устоялся свой собственный способ написания и произношения. К примеру, слово «church» на территории Англии могли произносить 22 разными способами, а «she» — 60 вариантами. Знакомое всем «though» и вовсе имело целых 500 вариантов написаний и произношений.

Изменил все один человек — Уильям Кэкстон. Но большинство студентов, которые учат английский как иностранный, ругают этого джентльмена последними словами, когда узнают, как именно читаются слова в английском. Спойлер: как попало. И ругают его, даже если вообще никогда не слышали это имя. Мы расскажем, почему.
Читать дальше →
Всего голосов 126: ↑123 и ↓3+120
Комментарии333

Что не так с интерфейсами SCADA-систем

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

В этой статье хочу рассказать и поделиться своим мнением насчет пользовательских интерфейсов scada-систем и систем диспетчеризации в целом.

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

Для наглядности разберем пример с торговым центром. Чтобы привлечь как можно больше посетителей, руководство ТЦ старается сделать их шоппинг максимально комфортным и, как следствие, ТЦ оборудован десятками сложных систем: свет, вентиляция, кондиционирование, теплоснабжение, водоотведение и многие другие, которые скрыты от глаз посетителей.

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

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

Читать далее
Всего голосов 30: ↑29 и ↓1+28
Комментарии108

За что получает деньги наемный работник? Не понимаете? Сейчас поймете

Время на прочтение4 мин
Количество просмотров151K
«За что я плачу тебе деньги?» — обычный вопрос работодателя работнику, причем саркастический, как правило.

«За что я тут корячусь на тебя?» — столь же обычный вопрос работника к работодателю.
Разобраться, за что же действительно работодатель платит деньги наемному работнику, поможет моя собственная теория, закодированная в десять букв – «ПЗП – ПЗС – ПЗПИ»

Читать дальше →
Всего голосов 234: ↑230 и ↓4+226
Комментарии888

Как я перестал бояться и научился любить нейронные сети

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

В рекомендательных системах нет доминирующего класса моделей. Матричные разложения, графовые  и контентные рекомендеры активно развиваются: про них пишут научные статьи, их используют в продакшене. Пять лет назад на волне интереса к нейронным сетям стали популярны нейросетевые рекомендеры, но довольно быстро наступило разочарование. На RecSys 2019 лучшей выбрали статью с критикой нейросетевого подхода (в этом году его тоже пинают). Стоит ли практикам забыть о нейронных сетях в рекомендациях? Я уверен, что нет. Мой рекомендер уже год работает в продакшене и помогает пользователям Одноклассников заказывать интересные товары. Я расскажу, почему построил рекомендер на основе нейронной сети. После прочтения статьи у вас не останется причин не сделать также в вашем сервисе.

Читать далее
Всего голосов 31: ↑31 и ↓0+31
Комментарии1

Python-пакеты для Data Science

Время на прочтение8 мин
Количество просмотров32K
Python — это один из самых распространённых языков программирования. Хотя стандартные возможности Python достаточно скромны, существует огромное количество пакетов, которые позволяют решать с помощью этого языка самые разные задачи. Пожалуй, именно поэтому Python и пользуется такой популярностью среди программистов. Можно наугад назвать какую-нибудь сферу деятельности и в экосистеме Python, почти гарантированно, найдутся отличные инструменты для решения специфических задач из этой сферы. В наше время весьма востребованы наука о данных (Data Science, DS) и машинное обучение (Machine Learning, ML). И там и там Python показывает себя наилучшим образом.

Помимо Python в DS-проектах часто используют язык программирования R. R быстрее Python и имеет больше статистических и вычислительных библиотек. Но в этом материале мы будем говорить исключительно о библиотеках (пакетах) для Python, о которых стоит знать каждому, кто хочет добраться до профессиональных вершин Data Science.



Прежде чем переходить к обзору библиотек, остановимся на том, что это такое — «наука о данных», и на том, почему в этой сфере стоит пользоваться языком Python.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии5

Быстрая медианная фильтрация с использованием AVX-512

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

Недавно Боб Стигалл сделал в конференции CppCon 2020 доклад под названием «Adventures in SIMD-thinking”, где он среди прочего рассказывал о своем опыте использования AVX512 для медианной фильтрации (с окном 7). Этот доклад вызвал у меня двоякие чувства: с одной стороны, прикольно сделано, и заявлено почти 20-кратное ускорение по сравнению с «тупейшей» реализацией через STL; с другой стороны, за один проход алгоритма из 16 входных семплов у него получалось всего 2 выходных, хотя входных данных хватало на 10, да и некоторые детали реализации вызвали желание попытаться их улучшить. Я подумал-подумал, и придумал идею, потом еще, потом попробовал их «в софте» и понял, что у меня появилось что-то, чем можно поделиться :) Так и получилась эта статья.

Читать далее
Всего голосов 45: ↑45 и ↓0+45
Комментарии17

Оптимизация обработки изображений на C++ с использованием SIMD. Медианный фильтр

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

Введение


Ранее во вступительной статье я поднимал список проблем, с которыми придется столкнуться разработчику, если он захочет оптимизировать оптимизацию обработки изображения при помощи SIMD инструкций. Теперь пришло время на конкретном примере показать, как указанные выше проблемы можно решить. Я долго думал, какой алгоритм выбрать для первого примера, и решил остановиться на медианной фильтрации. Медианная фильтрация является эффективным способом подавления шумов, которые неизбежно появляются на цифровых камерах в условиях малого освещения сцены. Алгоритм этот достаточно ресурсоемок – так например, при обработке серого изображения медианным фильтром 3х3 требуется порядка 50 операций на одну точку изображения. Но в тоже время он оперирует только с 8-битными числами и ему для работы требуется сравнительно не много входных данных. Эти обстоятельства делают алгоритм достаточно простым для SIMD оптимизации и в тоже время позволяют получить из нее весьма существенное ускорение.

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

Чем биоинформатика отличается от вычислительной биологии — краткое введение

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

Пару дней назад на нашем ютубе выступала Алсу Миссарова, выпускница мехмата МГУ, PhD по системной биологии (functional genomics in yeast) в Universitat Ponepu Fabra в Барселоне. Сейчас Алсу постдок в лабе JOhn Marioni (EBI, Cambridge, UK), занимается single cell RNA-seq and интеграцией со spatial transcriptomics.

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



Меня зовут Алсу Миссарова. Меня просили рассказать про биоинформатику – в частности, какие задачи я решаю, какого рода данные я обрабатываю, какого рода задачи есть в вычислительной биологии для технарей, для людей с уклоном в computer science, data analysis и так далее.
Всего голосов 36: ↑34 и ↓2+32
Комментарии11

Информация

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