• Как стать embedded разработчиком?

    saboteur_kiev
    @saboteur_kiev Куратор тега Карьера в IT
    software engineer
    В будущем мне бы хотелось работать именно с железом
    Как я понял, программист, который работает с железом – это embedded developer (если есть подобные профессии, схожие по своей сути с этой, напишите, пожалуйста), вот меня и интересует, чем нужно заниматься параллельно с университетом, чтобы потом без особых проблем найти работу.

    Embedded developer это не обязательно напрямую связано с железом. Можно никогда не держать паяльник в жизни и не разрабатывать микросхемы, но писать что-то под встраиваемое железо. Это и IOT и всякие умные телевизоры и все, что работает не на стандартных desktop/mobile/notebook.

    Я уже посмотрел, что написано в вакансиях, там чаще всего фигурирует вот это: знание ТОЭ (я под этим подразумеваю ОЦС, элтех и т. п.), знание C, умение работать с 16 и 32-битными микроконтроллерами, умение работать с системами контроля версий, где-то говорят про знание ЦОС.

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

    Какие конкретные модели микроконтроллеров стоит изучать? Нужно ли учить что-то ещё (просто как-то пунктов маловато)?

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


    Также столкнулся с тем, что вакансий на джуна вообще несколько штук на hh.ru, спрос действительно такой маленький? Заранее спасибо.

    Сталкивался с написаниеп WebOS для умных телевизоров LG. Вся инженерная работа была забугром, нам привозили инженерные платы, под которые мы тестировали различные фичи операционной системы и автоматического тестирования. Перепаять приходилось разве что ком-шнурки для подключения и перепрошивки.
    Такой опыт врядли сильно пригодится для проекта, где пишут софт для датчиков электричества или счетчика воды, который шлет показания по wifi
    Или игрушке с радиоуправлением
    Везде свои нюансы.

    Но если ты можешь сам сделать какое-нибудь полезное устройство с достаточной стабильностью, ты его и сам продать можешь. Пока что рынок дешевых и стабильных устройств, удобных в использовании и не завязаных на проприетарные сервера и приложения в андроиде - ненаполнен.
    Плюс хороший электронщик-разработчик неплохо и в одиночку может фрилансить. Поищи фрилансеров, посмотри чем они занимаются.
    Ответ написан
  • Как лучше хранить 13 ТиБ данных (mdadm / lvm / zfs / btrfs)?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    мне кажется zfs тут будет подходить лучше, чем связка из mdadm + lvm
    как бы весь функционал zfs позволяет делать сама, и в случае необходимости добавить диск или заменить, будет проще.
    Ответ написан
    2 комментария
  • Как в bash скрипте определить является ли файл видео и получить его разрешение?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    как часть ffmpeg проекта, есть ffprobe, им и пользуйтесь.

    ffmpeg.org/ffprobe.html

    Получить можно в разном формате. И обычный текст(ini) или csv,xml,json

    Примеры:
    $ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of default=nw=1 "My video file.mpg" 
    width=704
    height=576


    $ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=p=0 "another vide file.mkv"
    1280,720


    $ ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of json "one_more video.mkv"
    {
        "programs": [
    
        ],
        "streams": [
            {
                "width": 1152,
                "height": 480
            }
        ]
    }
    Ответ написан
    Комментировать
  • Единый микросервис для сбора/хранения всех логов, правильно ли это?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    1 вариант: Все логи отправляются в один микросервис.

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

    А вот как это делать - уже разные варианты есть.

    Ваше приложение может писать в stdout, и если вы пользуетесь чем-то вроде kubernetes/openshift, то это удобно ловить централизировано сразу на кластере, тегировать по имени приложения/пода и отправлять дальше.

    Ваше приложение может напрямую писать логи в какой-нибудь logstash, который все собирает парсит и отправляет дальше

    Ваше приложение может писать логи в брокер сообщений, из которого уже логи попадают в аггрегатор. Полезно если бывают очень большие пики логов и есть вероятность, что аггрегатор может в какой-то момент не справитьcя и часть потеряется - тогда какой-нить kafka/rabbitmq как раз будет промежуточным буффером, который гарантировано примет все логи, сколько бы их ни было и передаст их дальше со скоростью, которая комфортна для вашего лог аггрегатора (масштабировать брокер проще, чем аггрегатор)

    Ваше приложение может писать логи прямо в базу данных. Даже в sql базу, или прямо в elastic.

    Ваше приложение может писать просто в лог файлы, а потом эти лог файлы собираются, парсятся, отправляются в лог аггрегатор.

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

    2 вариант: Каждый микросервис пишет собственные логи в своем хранилище.

    Ну можно и так.
    Ответ написан
    2 комментария
  • Надо сделать регулярное выражение для проверки цены, как это сделать?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    \d*(\.\d\d)?(\$|руб)

    Вообще такое задание лучше оформлять на каком-то онлайн регекс билдере
    https://regex101.com/r/e74O55/1

    И еще странно, что в случае с рублем, нет пробела перед ним
    ибо 100$ выглядит нормально, а 100руб - нет. Лучше 100 руб...
    но добавить пробел несложно (\d*(\.\d\d)?(\$| руб))
    Ответ написан
    8 комментариев
  • На каком я сейчас уровне?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Уровни есть в тетрисе. Или в думе.
    А в разработке есть грейды, которые от одной компании к другой меняются как небо и земля.
    Сходи на собеседование, узнай там.

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

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

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Я больше подозреваю, что путь кривой. пробелы, точки, русские буквы.
    Может пушили с Линукс, а с винды такой путь не смог склонироваться.

    Кстати, на Stackoverflow обсуждают слишком длинные имена.
    Тоже можно проверить. русские буквы - в utf8 занимают больше байт, чем английские.
    можно попробовать
    git config --system core.longpaths true or edit gitconfig (от админа)
    или попробовать склонить в папку ближе к корню диска.
    Ответ написан
    1 комментарий
  • Можно ли исполнить команду через веб интерфейс?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    ну если вы можете править файлы веб-сайта, добавьте какой-нить phpshell и посмотрите.
    А так, не зная как настроен веб сервер - неизвестно
    Ответ написан
    Комментировать
  • Динамическое получение скорости работы процессора?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    Что конкретно вы подразумеваете под "скорость работы процессора"?

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

    В 2021 веке, измеряя перфоманс задавайте максимально подробный вопрос что именно вы хотите мерять и зачем. Потому что просто померять ВСЕ и максимально точно - уже невозможно.

    Недаром даже самые популярные бенчмарки, которыми пользуются сотни миллионов имеют множество разных метрик, которые показывают разные цифры на разных процессорах и все равно считаются "синтетическими", рекомендуя тестить ваше приложение вашим приложением.
    Ответ написан
    2 комментария
  • Можно ли где-то найти игровой переводчик для онлайн игр?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    в гугле есть API для перевода.
    Нужно понимать, что весьма непросто написать "скрипт", который будет переводить. Это нужен огромный словарь, аналитика, лексический анализ. Чтобы делать перевод быстро нужны немалые мощности.
    Поэтому есть большая вероятность что их скрипт просто делает API запросы в какой-нить сервис типа google-translate
    Какое-то количество запросов в (период времени) там вроде бы бесплатный. Если дергать часто, надо регать платный аккаунт.
    В общем я советую почитать про готовые публичные сервисы перевода
    https://cloud.google.com/translate/docs/basic/quic...
    Ответ написан
    Комментировать
  • Как frontend разработчику тестировать локальный сервер?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Если твой провайдер предоставляет услугу белого IP адреса, то не проблема просот расшарить доступ к базе по айпишнику.
    Если смущает, что комп должен быть все время включен, то можно просто использовать хостинг.
    Причем такие базы как mysql можно использовать не только заказав виртуалку, но и обычный при обычном шаред хостинге тоже можно использовать уже готовый сервер, к которому будете подключаться.
    Ответ написан
    Комментировать
  • Верно ли это утверждение?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    ИТ области сложные. Вот реально сложные. Нужно сидеть не минуты или часы а днями над простейшими задачами поначалу. Потом неделями, потом месяцами.
    Если вам это неинтересно, то изнасиловав свой мозг поломав себя и доучившись до джуниора, на реальной работе столкнешься что там еще больше того же самого. И что называется "перегоришь" за пару лет и будешь искать что делать и куда сбежать.
    Отсюда и появляются статейки о том, как люди выгорели в 20 лет.

    Если человеку интересно, он не страдает а наслаждается этим.
    Ему интересно, что в линуксе в масках файлов можно использовать квадратные скобки
    Ему интересно почему в винде *.* а в линукс *
    Ему интересно, чем отличается SIGTERM от SIGKILL
    и не потому, что это нужно знать по работае, а потому что интересно.

    Если вам нет - зачем строить свою жизнь из страданий.

    Вместо геймдева, в компьютерные игрушки можно просто играть после основной работы

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

    В общем не обязательно быть айтишником, чтобы изучать какие-то технологии, но не обязательно делать это профессией, если не готовы тратить действительно много времени на это.
    Ответ написан
  • Почему не могу закинуть открытый ключ SSH из Линукса в Windows?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Нужно полистать конфигурацию вашего sshd сервере на винде и посмотреть где он считает должны быть публичные ключи пользователя.
    Это может быть и $USERHOME/.ssh/authorized_keys и $USERHOME/.ssh/authorized_keys2 и что-нибудь еще.
    ssh-copy-id может не знать про то, где должны лежать публичные ключи в винде, его нет смысла использовать в данном случае.

    Прочитайте документацию к sshd серверу под виндой чтобы понять где он ищет публичные ключи пользователя.
    Ответ написан
  • Как расставить точки над i, по вопросу использованию Bash и Python для DevOps?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    1. Реальные кейсы написания и использования Bash скриптов, какие задачи они решают?

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

    2. Сколько часов, ориентировочно, потребуется на изучение и практику написания скриптов на Bash, как глубоко погружаться?

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

    3. Что должен уметь написать на Bash junior/middle/senior DevOps?

    Слово все тут подойдет.

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

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

    Python:
    1. Где и для чего используется Python на практике DevOps, реальные, повседневные кейсы использования?

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

    2. Каким уровнем знаний Python должен обладать junior/middle/senior DevOps? (Знакомый middle DevOps и Python не знает от слова совсем).

    Если ты знаешь питон на уровне сеньор, то не факт что тебе будет интересно работать на позиции девопс. Можно работать девелопером на питоне.
    Поэтому знания питона на уровне джуниора обычно достаточны. Но нужно понимать, что джуниор - это не тот, кто знает две команды. Это полноценный разработчик, который знает и структуры данных и стандартные библиотеки и все конструкции. Уровень джуниор в языке программирования должен позволять устроиться на позицию джуниор разработчика.
    Девопс инженер, который знает язык программирования на уровне джуниор разработчика - полезный человек, который сам решил углубиться в питон. И в айти области часто людям что-то нравится и они этим занимаются и углубляются вне зависимости от рабочих задач.
    Поэтому у большинства именно девопс инженеров знания именно о языках программирования немного отрывочные, но их хватает для написания универсальных скриптов и небольших утилит.
    Я в свое время писал простые и не очень вещи на ANSI C/С++/java/python/perl/actionscript. Сейчас почти все делаю на bash и иногда python, и все предыдущие знания мне помогают выбрать чем воспользоваться - написать что-то свое, найти готовую реализацию на другом языке, попросить в проекте, чтобы написали задачу (это тоже вполне себе способ для рабочих нужд договориться с разработчиками о написании нужного функционала для автоматизации/тестирования). Но главное, что я сам могу оценить примерный выхлоп от того, чем делать.

    3. Сколько часов, ориентировочно, потребуется на изучение и практику под каждый уровень, как глубоко погружаться?

    Сколько часов нужно ориентировочно футболисту, чтобы стать таким как Месси?
    Сколько часов нужно музыканту, чтобы стать таким как Фредди Меркури?

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

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

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

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

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

    Выбор инструмента - это частности. Понимание какой должен быть результат - важен.
    Те же самые вещи можно делать и башем и питоном и ансиблом и чефом и перлом и не так важно что было выбрано, разве что стоит вопрос расширения и поддержки. А вот что именно делать и как это все увязывать...
    почитайте например git flow, и важно не сам гит - это вообще базово должно быть само собой, а зачем git flow нужен и прикинуть какой вариант подойдет в нужном проекте. Это уже как раз задача которую решают совместно девопс инженер и архитектор/тимлида.
    Ответ написан
    Комментировать
  • Как расширить диск Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Никак.
    sda/sdb это физические устройства, их нельзя расширить за счет друг друга.

    Вот раздел с файловой системой, если бы он изначально был сделан через LVM можно было бы расширить. Для этого sdb добавился бы в Volume Group где находится ваша файловая система и потом ее можно уже расширить, причем в большинстве случаев даже онлайн. Но для этого надо чтобы изначально все было сделано через LVM.

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

    У вас же на /dev/sda есть один раздел с типом обычной Linux filesystem и отформатирован как есть.

    Поэтому все, что можно сделать без кардинальной переработки - отформатировать /dev/sdb и примонтировать его в какую-то папку, скинув часть данных в эту папку.

    Вдобавок так как у вас вообще весь /dev/sda составляет единственный диск в системе, на котором и данные и сама система, то даже для каких-либо изменений текущей конфигурации уже нужно как минимум загружаться с live диска. В этом плане быстро и просто не получится.
    Ответ написан
    Комментировать
  • Почему не работает https?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Покажите как вы создали сертификат и где прописан айпишник. Он должен быть в SAN поле
    Ответ написан
  • Паралельная работа в Windows, один человек через RDP, второй, как локальный комп?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    обычная рабочая станция будет лочить декстоп, если кто-то подключается по rdp
    Серверная винда позволяет работать нескольким пользователям, каждый в своем десктопе.

    Программы общие, но не все программы позволяют мультипользовательское взаимодействие.
    Офис - позволяет
    Ответ написан
    Комментировать
  • Как самостоятельно оценивать объем работы и стоимость разработки?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Так ты ж работу выполняешь. Неужели как мид разработчик не можешь оценить сколько времени у тебя займет этот проект? Заложи на непредвиденные обстоятельства проценты согласно своему опыту (только ты знаешь как часто у тебя возникают непредвиденные раньше проблемы, только ты знаешь как быстро ты работаешь)

    И умножь получившееся время на ЗП, которую ты предполагаешь получать.
    Ответ написан
  • Как максимально просто и быстро переименовать файлы по маске?

    saboteur_kiev
    @saboteur_kiev Куратор тега Python
    software engineer
    Накидал какое-то рабочее решение.
    Должно работать с разными именами файлов в текущей директории, главное чтобы в файле был только один кусок с числом.

    То есть с таким набором файлов справится: file1.jpg file02.jpg file0035.jpg 36file.jpg, лишь бы числа не пересекались

    А с таким - НЕ справится: file1_1.jpg 01_file_02.jpg

    max=$(ls -1 | grep -oP "[0-9]*"|sort -n|tail -n1)
    length=$(sed "s/^0*//g"<<<"$max"|xargs expr length)
    echo "Max number found: [$max], max length: [$length]"
    
    ls -1|while read oldname; do
      oldnum="$(grep -oP "[0-9]*"<<<"oldname")"
      newnum=$(printf "%0${length}d" $(sed "s/^0*//g"<<<"$oldnum"))
      newname=$(sed "s/$oldnum/$newnum/g"<<<"$oldname")
      if [ -f "$newname" ]; then
        echo "Kinly check the following files manually: $oldname $newname"
      else
        echo "Renaming [$oldname] to [$newname]"
        # mv "$oldname" "$newname"
    done


    p.s. после проверки вывода, расскомментировать строчку с "# mv "
    Ответ написан
    Комментировать
  • Что лучше для Jenkins: использовать ECS в качестве слейвов или на мастере использовать docker image?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    На самом деле лучшего тут нет - надо всегда адаптироваться под ваши задачи и ваш проект.
    Поднимать дополнительные слейвы в ECS имеет смысл, если у вас много билдов, много тестов, и они стоят денег.

    В сложном проекте конфигурация может выглядеть так:
    Мастер крутится в своем более-менее стабильном контейнере и рулит исключительно задачами, воркеров не запускает.
    Есть несколько видов подготовленных контейнеров для слейвов - для сборки и для тестов, с разной конфигурацией. В некоторых случаях можно даже тут сделать разные контейнеры для сборки nodejs, сборки питона, тестов, и например контейнер для performance тестов.
    Во время пайплайна нужные шаги выполняются на нужном слейве, а слейвы динамически поднимаются, если очередь вырастает и также автоматически уничтожаются, когда они не нужны. Например если контейнер поднимается за 1-2 минуты, то при простое в 20-30 минут его можно тушить. Так вы и сократите время билдов, когда их много, и сэкономите деньги на ресурсах, когда они простаивают.

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