All streams
Search
Write a publication
Pull to refresh
-4
0
Send message

Умный дом от программиста: мой опыт и мои принципы

Level of difficultyEasy
Reading time12 min
Views17K

Привет, меня зовут Тимофей. Я программист. Не электрик и не электронщик. А человек, который хочет, чтобы дома свет включался сам, батареи не грели зря, а домофон говорил голосом, кто к нам пришел. Для этого у меня есть лишь бытовые навыки уровня «поменять розетку» и понимание, как писать код для компьютеров (это помогает, но как оказалось - это не ключевое: код для умного дома почти не пишу).

Когда-то в детстве мы с папой собрали простенькую схему на конденсаторе: открываешь дверь — включается свет и горит около минуты. Тогда это казалось магией. Спустя много лет я решил повторить эту магию, но уже в масштабах своей квартиры. И понеслось…

Сначала были простые «коробочные» беспроводные решения: Z-Wave, ZigBee, Wi-Fi. Потом — кабели, щитки, Modbus, Wiren Board, Sprut.Hub. В какой-то момент автоматизация опутала весь дом: от света в туалете до пылесоса и бризера. И при этом я старался, чтобы все работало надежно, не зависело от облаков и не вызывало неприятия у семьи (ну… почти всегда).

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

Читать далее

Собеседования в IT превратились в экзамены, которые с трудом проходят даже опытные разработчики

Level of difficultyEasy
Reading time6 min
Views77K

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

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

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

Давай зачетку!

Программист embedded лезет в FPGA (часть 1, hello blink)

Level of difficultyMedium
Reading time7 min
Views8.7K

Любой программист микроконтроллеров, Imho, рано или поздно (сейчас, скорее, рано) от одного из коллег или из статьи в интернете слышит загадочное ПЛИС или FPGA, CPLD, ПВМ — что-то такое. Если честно, то я услышал вот это загадочное, занырнул чуть-чуть, и теперь думаю, что мой опыт пригодится кому-то ещё. Если совсем честно, то статья ещё планируется как небольшая (всего в трёх частях) заметка для себя. Я когда погружался, делал пометки в текстовом файле, здесь получится их хорошо отредактированная версия.

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

Лезем в FPGA

Как отличить грамотного спеца

Level of difficultyEasy
Reading time51 min
Views56K

Что необходимо иметь ввиду перед прочтением:

Здесь не будет всякой расплывчатой ерунды по типу "любопытства", "находчивости", "умения воспринимать критику", "увлечённости своей работой" – это относится ко всем нормальным людям.

Речь пойдёт в основном про системных администраторов.

Я буду рассматривать ситуацию со стороны коллеги, а не "бизнеса" (некомпетентного руководства).

Мне плевать на названия отделов и должностей. Я оцениваю человека по его уровню знаний и опыта, а не по записи в трудовой книжке. На "Ведущих инженеров по автоматизации" и "Руководителей ИТ департамента" я уже насмотрелся.

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

Читать далее

Часть 3. Аппаратная часть: от микросхемы до дисплея

Level of difficultyMedium
Reading time4 min
Views7.3K

Идея собрать инерциальный навигатор пришла в голову быстро, но подобрать подходящие компоненты было сложнее. Главный микроконтроллер должен иметь достаточную вычислительную мощность для интегрирования уравнений движения и работы пользовательского интерфейса, при этом потреблять минимум энергии. Я выбрал контроллер семейства STM32 от STMicroelectronics, основанный на ядре ARM Cortex‑M. Этот чип обладает богатым набором периферии (I²C, SPI, UART, SDIO) и аппаратным блоком плавающей точки. К тому же компания ST поставляет готовые программные библиотеки для работы с MEMS‑датчиками.

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

Интегральный датчик инерции — сердце устройства. За основу взял 9‑осевой MEMS‑IMU WitMotion WT901, сочетающий три акселерометра и три гироскопа и электронный компас, что соответствует классическому INS. Этот модуль имеет низкий шум ускорений (~0,03 m/s²) и угловых скоростей (~0,02°/s) и выдает данные по интерфейсу SPI. Для обеспечения работы в широком температурном диапазоне датчик снабжён встроенным термодатчиком, данные которого учитываются при калибровке.

Читать далее

Localhost-атака: как Meta* и Яндекс следят за пользователями Android через localhost

Level of difficultyMedium
Reading time14 min
Views94K

Мы раскрыли новый метод отслеживания, используемый компаниями Meta* и Яндекс, который потенциально затрагивает миллиарды пользователей Android. Мы обнаружили, что нативные приложения Android — включая Facebook, Instagram и несколько приложений Яндекса, таких как Карты и Браузер — незаметно слушают определенные локальные порты в целях отслеживания.

Эти нативные приложения Android получают метаданные браузеров, куки и команды от скриптов Meta* Pixel и Яндекс.Метрики, встроенных на тысячи веб-сайтов. Эти скрипты загружаются в мобильных браузерах пользователей и незаметно связываются с нативными приложениями, работающими на том же устройстве, через локальные сокеты (localhost). Так как нативные приложения программно получают доступ к идентификаторам устройства, таким как рекламный идентификатор Android (AAID), или обрабатывают идентификацию пользователя, как в случае приложений Meta, этот метод позволяет этим организациям связывать сессии мобильного браузера и веб-куки с личностью пользователя, тем самым деанонимизируя посетителей сайтов, на которых размещены их скрипты.

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

Читать далее

Как я перевёл команду в таск-трекер, а в итоге меня решили уволить

Level of difficultyEasy
Reading time6 min
Views93K

Год назад меня назначили лидом в диджитал-агентстве и поставили задачу перевести всю команду в таск-трекер. 

Я пытался навести порядок, но через месяц мы потеряли ключевого клиента из-за бардака в задачах. Крайним оказался я. 

Рассказываю, что пошло не так.

Читать далее

Про свёрла

Level of difficultyEasy
Reading time10 min
Views71K

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

Читать далее

Embedded Linux для начинающих — Часть 1

Level of difficultyEasy
Reading time10 min
Views24K

Однажды по работе мне прилетела задача по сборке и запуску Linux на одноплатном ПК. Тогда я, будучи разработчиком ПО для микроконтроллеров, встал в небольшой ступор — задачка явно не решалась установкой IDE и нажатием в ней кнопки «Собрать проект». Гугл помог узнать о том, что существует некий Buildroot. В материалах по теме всё выглядело довольно просто: скачай, настрой, дерни пару команд, загрузи результат на одноплатник — и можно запускать! Получается, процесс не многим сложнее установки дистрибутива Linux или Windows на обычный ПК? Конечно же, нет. Ведь если у тебя в руках кастомный одноплатник неизвестного китайского бренда, а не BeagleBone или Raspberry Pi, то зарыться в Buildroot придётся с головой...

Читать далее

Embedded Linux для начинающих — Часть 2

Level of difficultyEasy
Reading time12 min
Views13K

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

Надеюсь, что те, кого эта тема зацепила, уже обзавелись платой с SoC на борту — без неё часть шагов будет упущена, а удовольствие от результата будет неполным.

Пришло время перейти от теории к практике!

Читать далее

Золотодобыча 2.0: Почему прорывные технологии спотыкаются о реальность

Level of difficultyEasy
Reading time4 min
Views4.8K

В условиях, когда цена на золото растет, а Россия стремится удвоить добычу до 600-700 тонн к 2030 году, отрасль столкнулась с парадоксом: богатые месторождения истощаются, а новые технологии, позволяющие работать с бедными рудами (0.6-0.8 г/т вместо прежних 1-2 г/т), внедряются крайне неравномерно. 

Читать далее

Три совета, как не выучить C++ за 21 день (субъективный гайд с дополнениями)

Reading time6 min
Views23K

Типичная проблема новичков при изучении языка программирования — они тонут в море учебных материалов. Интернет предлагает тонны статей, курсов и книг по C++, но как выбрать действительно стоящие?

Меня зовут Владислав Столяров, я руководитель команды анализа безопасности продуктов в мультипродуктовой экосистеме МойОфис. Наши решения — Документы Настольные и Документы Онлайн — во многом работают благодаря C++, так что мне есть чем поделиться. В этой статье расскажу, что делать, если вы вдруг решили залететь в плюсы, но уже чувствуете, как накрывает экзистенциальный кризис от обилия информации.

Читать далее

Синдром бога: когда ждешь миллионы за то, что просто пишешь код

Reading time2 min
Views46K

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

Если коротко:

Автор работает в IT с 18 лет. Сейчас ему 24. И он пишет, как несправедлив этот мир, потому что его потолок — 400k. Видимо, за умение слепить форму или написать CRUD’ы должны платить миллионы.

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

Итог статьи и её автора — печален. Мы наблюдали нелепый акт самовыпила с Хабра. Сначала автор улетел в минуса, потом в read-only. После чего создал второй аккаунт, чтобы в последний путь бряцнуть своим дипломом бакалавра.

Читать далее

Свой проект — это ловушка для новичка

Level of difficultyEasy
Reading time3 min
Views16K

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

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

Но потом к нам присоединились более опытные ребята. Разработчики, у которых за плечами были и запущенные проекты, и провальные — но главное — была реальная практика и мышление архитектора. Они сразу начали задавать вопросы: — Почему у нас 6000 строк в одном скрипте? — Почему нет нормального разделения логики? — Почему переменные называются a, b1, mainLogic, veryImportantManager?

Код, который мы считали рабочим, оказался большой горой хрупкого говнокода, которая могла рухнуть от любого изменения. И когда она рушилась — её латали так же вслепую. Без юнит-тестов, без понимания, почему оно работает. Главное, чтобы запускалось.

🧨 А потом проект провалился. Несмотря на издателя

Читать далее

В айти нет денег и повышений

Level of difficultyEasy
Reading time4 min
Views99K

В этой статье я расскажу очень важную мысль, на которую потратил 6 лет своей жизни. С 18 до 24 лет. Может я тупой или тормознутый, но ты получишь эти знания всего за несколько минут. Обучишься на моих ошибках и извлечёшь пользу.

Страшная Правда Здесь

Как мог бы выглядеть Kubernetes 2.0

Level of difficultyEasy
Reading time16 min
Views5.2K

В сообществе наделала шума свежая статья о том, каким мог бы быть Kubernetes, если бы его создавали с учётом всего, что мы знаем сейчас — почти десятилетие спустя после выхода версии 1.0. В ней DevOps-инженер Мэт Дугган предлагает заменить etcd и YAML (на HCL!), а также размышляет про новый пакетный менеджер вместо Helm и IPv6 по умолчанию. 

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

Читать далее

Сервер за копейки

Level of difficultyEasy
Reading time18 min
Views75K
image

КДПВ


Обычно сервер ассоциируется с чем-то дорогим и недоступным обычному человеку. Даже на вторичном рынке они пока еще стоят весьма существенно (если не рассматривать совсем уж допотопные экземпляры). Однако, есть и такие, которые можно приобрести весьма недорого.


Это так называемые блейд-серверы. Блейд-сервер (от англ. blade — лезвие) – концепция использования нескольких компактных серверов в одной общей корзине (шасси). Некоторые узлы сервера (такие как блоки питания, охлаждение, сетевые адаптеры, управление) вынесены за пределы сервера и сделаны общими для всех. Благодаря этому исключается излишнее дублирование и, соответственно, уменьшаются габариты и общее энергопотребление всей сборки. Увеличивается плотность вычислительной мощности на единицу объема серверной стойки. Из-за того, что единичный блейд-сервер бесполезен без корзины, а в корзине избыточен, они не пользуются спросом на вторичном рынке, а потому стоят весьма недорого. 

Читать дальше →

Как в 19 лет я начал путь разработчика встраиваемого ПО

Reading time4 min
Views22K

Привет, Хабр! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успел поработать в роли разработчика программного обеспечения для встраиваемых систем — в основном на базе STM32. В этой статье я хочу поделиться тем, как я вообще пришёл в эту сферу, с чего начинал, какие грабли собрал и какие выводы сделал по пути.

Читать далее

Как кофе с собой делает нас нищими?

Level of difficultyEasy
Reading time4 min
Views93K

Дисклеймер: речь пойдёт не только о кофе — да и вовсе не о кофе. Суть статьи — попытаться ответить на вопрос: почему при нормальном доходе мы ничего не откладываем, не покупаем квартиры и прочие дорогостоящие вещи?

В любой истории нужен герой. Нашим героем будет Петя. Ему 27 лет, он живёт в Екатеринбурге, работает программистом на позиции Senior Backend Developer в крупной московской компании и получает пресловутые 300к/наносек — 300 000 рублей в месяц.

Как проходит обычный рабочий день Пети? Он едет на работу на такси (сегодня по акции — всего 500 рублей), по пути заходит в свою любимую кофейню, берёт раф без кофеина на безлактозном молоке. 400 рублей — копейки, он за 15 минут работы столько зарабатывает.

Доходит до своего рабочего места и начинает работать. Время обеда подходит — он открывает приложение доставки, заказывает себе еду из сервиса с обещанной доставкой от 15 минут. Тратит, ну, максимум 1000. Он же заслужил — ничего такого здесь нет. Попутно смотрит, куда бы сходить на выходных или вечером.

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

Гуляет по городу, наслаждается видами, но чувствует, что проголодался. Заходит в кафешку — хорошую, проверенную, он тут частенько бывает. Заказывает себе пасту, чайник пуэра. Рабочий день был тяжёлый — надо бы и кальянчик заказать. Сидит, пыхтит. Спустя часик выходит, закрывает счёт, даже не глядя, сколько там вышло. Вызывает такси — рублей за 700 на этот раз — и счастливый едет домой, в съёмную квартиру.

Читать далее

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

Reading time7 min
Views160K


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

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

Information

Rating
Does not participate
Registered
Activity