Pull to refresh
45
0
Егор Александров @Eppy

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

Send message

Как я познавал ci/cd, Гитхаб экшены

Reading time5 min
Views24K

Гитхаб экшены, как я познавал ci/cd

   Всем Алоха. Все слышали про ci/cd, про то что он должен быть в каждой компании и то что он упрощает нам жизнь. У всех свой ci/cd. 

   Кто-то предпочитает Jenkins. Особенно если у вас куча микросервисов, команд и процессов, то при помощи Дженкинса можно достаточно гибко настроить ci/cd в компании. Кто-то использует GitLab actions и для каждого репозитория настраивает свои пайплайны и процессы. Достаточно удобно и просто настраиваемый механизм сборки и доставки артефактов на стенды. Не чуть не хуже GitHub actions. Это было открытием для меня что в GitHub появился такой функционал, о котором мы поговорим позже. Ну и конечно всеми «любимый» скриптовый ci/cd. Пачка скриптов, которые нужно выполнить в определенной последовательности чтобы собрать и задеплоить артефакты. Есть ещё так сказать хэнд мэнуал ci/cd. Но это особый вид извращения, с которым не пожелаю столкнуться никому. В котором нужно собрать артефакты у себя на машине и по какому нить ридми выполнять команды в терминале, лазить по ssh смотреть, что все копировалось, перезапускать сервисы и другие развлечения. 

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

Read more about GitHub Actions
Total votes 12: ↑12 and ↓0+12
Comments55

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

Reading time6 min
Views5K

За кодингом – безумным, постоянным, одержимым – я провёл неделю… Взглянув на часы, я увидел, что код стал мне не только завтраком, но и обедом. Когда я снова посмотрел на часы, снаружи было темно.

Иногда мне приходит в голову, что программирование – в силу необходимости – навязчивая идея. В наших головах так много деталей… я не уверен, что можно, в принципе, программировать без навязчивости. Программирование, как пишут в Smarter Than You Think, требует внимания к деталям и способности думать обо всём как о сериях процессов. Но оно требует не просто какого-то там внимания к деталям, оно требует интенсивного внимания к деталям. Одна шальная точка с запятой может поставить на колени миллионы строк и привести к чудовищному краху. Единственная функция с неверным возвратом сломает всю вашу внимательно прописанную логику. Как такая работа может требовать чего-то кроме навязчивости до такой степени, чтобы забывать пообедать?

Приятного чтения!
Total votes 13: ↑9 and ↓4+5
Comments1

Как я готовился к собеседованию в Google

Reading time9 min
Views48K
Каждый инженер-программист стремится впечатлить людей своим техническим мастерством. Технологические гиганты этого мира — прекрасное место для работы технарей, которые могут предоставить услуги миллиардам пользователей. На моём недавнем собеседовании было несколько раундов, я получил предложения от Google и Amazon. В последние несколько лет онлайн-сообщество очень помогло мне в подготовке к собеседованиям. В этом посте я поделюсь всем о моём пути к собеседованию и верну вклад общества в моё обучение.


Приятного чтения!
Total votes 55: ↑50 and ↓5+45
Comments77

50 вопросов по Docker, которые задают на собеседованиях, и ответы на них

Reading time13 min
Views97K


Docker, первый выпуск которого был еще в 2013 году, — весьма удобный инструмент для сборки пакетов, поставки и запуска приложений в «контейнерах». Большинство крупных компаний, например, Google, Amazon и VMware рассматривают Docker как зрелую технологию для контейнеров, поэтому сейчас самое время изучить этот инструмент и в результате продвинуться по карьерной лестнице. Хотите? В статье будут приведены вопросы по Docker, ответы на которые нужно знать, если вы идете на собеседование.

Читать дальше →
Total votes 24: ↑16 and ↓8+8
Comments20

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

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

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



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

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

Вебкаст Хабр ПРО #5. Техноавтор: эксперт vs писатель

Reading time2 min
Views2.3K


Водка и шампанское, огонь и лёд, физика и лирика, экспертиза и нарратив — любой технический автор попадает на территорию, где сталкиваются два противоположных направления: техническое и литературное. Как сильно они конфликтуют? Где начинаются и где заканчиваются их границы? Как найти нужный баланс между этими направлениями и написать крутой технический текст, который может выиграть конкурс? Обо всём этом мы решили поговорить с тремя опытными хабраавторами и вместе с нашими партнёрами из SBTG.ru организовали для них творческий вечер, где они расскажут о том, как надо создавать статьи для Хабра. Подробности — под катом.
Total votes 29: ↑28 and ↓1+27
Comments4

Доклады второго ROS Meetup по навигации роботов

Reading time6 min
Views3.8K

30 ноября 2019 прошёл 2-й ROS Russian MeetUp, организатор — Лаборатория робототехники Сбербанка, — собравший больше 200 ROS-разработчиков. В этом материале мы сделали подборку наиболее интересных выступлений с этого MeetUp, посвящённых навигации роботов.
Total votes 12: ↑12 and ↓0+12
Comments0

Sub-Zero: антикварный механический калькулятор. Как им пользоваться (с приветом из 18-го века)

Reading time5 min
Views19K

Удивительно изящная машинка, дошедшая до нас из тех древних времён, когда не то что Интернета не было, – ещё даже компьютеров не было. Несколько характеристик Sub-Zero, на которые в своё время делали акцент продвигавшие его маркетологи: (1) работает с числами ± 999999; (2) складывает и вычитает за считанные секунды; (3) никогда не ошибается; (4) удивительно прост в использовании; (5) работает бесшумно; (6) изготовлен из высококачественных материалов, отвечающих германским стандартам; (7) не изнашивается. Создан, чтобы жить долго.


Так что же это за машинка? Каким образом она осуществляет вычисления? Какая у неё начинка? Как ей пользоваться для сложения и вычитания? И вообще, кто её придумал? Обо всём об этом читайте ниже.



Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments70

Сортировки выбором

Reading time7 min
Views144K


В чём идея сортировок выбором?

  1. В неотсортированном подмассиве ищется локальный максимум (минимум).
  2. Найденный максимум (минимум) меняется местами с последним (первым) элементом в подмассиве.
  3. Если в массиве остались неотсортированные подмассивы — смотри пункт 1.

Траффик
Total votes 18: ↑17 and ↓1+16
Comments6

Продвинутое использование Гита или как выйти на пенсию на полгода раньше?

Reading time11 min
Views27K


Не знаю, на каком языке программирования вы пишете, но уверен, что используете Гит при разработке. Инструментов для сопровождения разработки становится всё больше, но даже самый маленький тестовый проект, я неизменно начинаю с команды git init. А в течение рабочего дня набираю в среднем ещё 80 команд, обращаясь к этой системе контроля версий.


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


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


Кому будет полезна эта статья?


Вы уже освоили джентльменский набор Гита и готовы двигаться дальше? Существует 2 пути:


  1. Освоить сокращённые команды – алиасы. Они почти всегда составлены мнемонически и легко запоминаются. Забыть оригиналы команд проблематично, я легко их набираю, когда это требуется. Плюс не сбиваюсь с мысли, проверяя что-то в Гите в процессе написания кода.
  2. Узнать о дополнительных флагах к командам, а также их объединении между собой. Я понимаю, что кто-то ненавидит сокращения. Для вас тоже есть интересный материал в статье – как повысить полезность и удобство вывода команд, а также как решать не самые тривиальные, но часто встречающиеся на практике задачи.

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


Добро пожаловать под кат!

Читать дальше →
Total votes 37: ↑30 and ↓7+23
Comments44

Как подготовиться к собеседованию в Google и не пройти его. Дважды

Reading time15 min
Views129K


Заголовок статьи звучит как epic fail, но на самом деле все не так однозначно. Да и в общем и целом эта история закончилась весьма позитивно, хоть и не в Google. Но это уже тема для другой статьи. В этой же статье я расскажу о трех вещах: каким образом проходил мой процесс подготовки, каким образом проходили интервью в Google и почему же на мой взгляд все не так однозначно, как может показаться.
Кому интересно, прошу под кат.
Total votes 178: ↑174 and ↓4+170
Comments457

База данных штрихкодов скачать бесплатно без регистрации (и прочей хурмы)

Reading time5 min
Views87K
Добрый день. В открытом доступе наконец-то появился огромный справочник штрихкодов с наименованиями товаров, категориями и брендами.

Мы работаем над ним лет 8 и теперь в нем около 3 миллионов штрихкодов в стандартах EAN (EAN-13, EAN-8) и UPC (UPC-A, UPC-E).
Читать дальше →
Total votes 114: ↑114 and ↓0+114
Comments54

Создатель игры while True: learn() о программировании в геймдеве, проблемах с VR и симуляции ML

Reading time22 min
Views45K


Несколько лет назад мне казалось, что Олег Чумаков (тогда еще из Nival) был самым известным программистом геймдева. Постоянно выступал, проводил Gamesjam, был частым гостем подкаста Как делают игры.

С появлением на рынке VR, Олег возглавил в компании новое подразделение — NivalVR. Но вы все знаете, с виртуальной реальностью что-то пошло не так, как хотелось.

Я на долгое время отвлекся от геймдева, а взглянув снова, увидел — у команды Олега дела стали только интереснее. Теперь она называется Luden.io и их симулятор специалиста по машинному обучению while True: learn() стал хитом в своей нише, вокруг него творится куча крутых историй.

Мы поговорили с Олегом, но я не смог выбрать только одну тему — слишком уж насыщен и разнообразен был его путь. А чтобы программист говорил о программировании не боясь быть непонятым, беседу поддержал мой друг, коллега и опытный разработчик fillpackart.
Total votes 87: ↑84 and ↓3+81
Comments40

Технические конференции для самих себя: наш опыт, ошибки и достижения

Reading time6 min
Views3.2K
В Naumen мы сами организуем техническую конференцию. Мы назвали ее Devel Camp (от «developer»). Для наших сотрудников она стала хорошей альтернативой открытым профессиональным конференциям.

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

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

И, конечно, у нас нет явной или завуалированной под доклады рекламы.

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



Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments3

Spectrum-48 против пачки сигарет, каша из топора или что может STM32F103C8T6+video(update)

Reading time3 min
Views42K
Все началось с очередной попытки бросить курить. Разбудив свою внутреннюю «жабу» в поисках поддержки, говорю ей: «Смотри, пачка моих сигарет стоит сегодня как карманный ретро-компьютер с экраном, то есть примерно $10, а когда-то давным давно, на клон синклера-48К мы всю месячную зарплату и больше месяца на сборку и отладку потратили». Она: «Вы мужики- козлы и вруны, докажи!». Пришлось поработать.

Итак, исходно-расходные материалы:

  1. «Blue pill»: STM32F103C8T6 — 20K ram 64K flash $2.06
  2. «Ардуино Display»: ILI9341 2.8" 320x240 с сенсорным экраном и слотом карточки $7.72
  3. Пищалка $0.18
  4. Немного кнопок (7 штук) $0.2
  5. Немного проводов $0.1
  6. Флеш карта на 64 мега (с древнего фотоаппарата), в расчет не включена
  7. Программатор ST-LINK, не расходуется и в расчет не включен, однако тоже пару долларов стоит
  8. Пачка сигарет — расходуется слишком быстро и каждый день -$8.37


Total votes 82: ↑82 and ↓0+82
Comments107

Три значения самого знаменитого уравнения Эйнштейна

Reading time5 min
Views49K

Эйнштейн выводит СТО перед аудиторией; 1934.

Сотни лет в физике присутствовал непреложный закон, в котором никогда не сомневались: в любой реакции, происходящей во Вселенной, сохраняется масса. Неважно, какие ингредиенты использовать, какая реакция произошла, и что получилось – сумма того, с чего вы начинали, и сумма того, с чем вы оказывались, будут равными по массе. Но по законам специальной теории относительности масса не может быть сохраняющейся величиной, поскольку различные наблюдатели не согласятся по поводу того, какой энергией обладает система. Вместо этого Эйнштейн смог вывести закон, который мы используем и по сей день, управляемый одним из простых и наиболее мощных уравнений: E=mc2.
Читать дальше →
Total votes 21: ↑16 and ↓5+11
Comments45

Как пользоваться интерфейсами в Go

Reading time5 min
Views8.8K


В свободное от основной работы время автор материала консультирует по Go и разбирает код. Естественно, что в ходе такой деятельности он читает много кода, написанного другими людьми. В последнее время у автора этой статьи сложилось впечатление (да именно впечатление, никакой статистики), что программеры стали чаще работать с интерфейсами в «стиле Java».

Этот пост содержит рекомендации автора материала об оптимальном использовании интерфейсов в Go, основанные на его опыте в написании кода.


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

Как делать не надо


Очень распространенное явление, которое я наблюдаю:

package animals 

type Animal interface {
	Speaks() string
}

// применение Animal
type Dog struct{}
func (a Dog) Speaks() string { return "woof" }
Читать дальше →
Total votes 20: ↑14 and ↓6+8
Comments9

Колония. Главы 20 и 21

Reading time20 min
Views7K

Глава 20: По колено в грязи


Темнело. Сверчки за бортом ровера пели все громче, и график шума на одном из мониторов послушно увеличивал амплитуду колебаний с каждой минутой.


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


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

Читать дальше →
Total votes 25: ↑21 and ↓4+17
Comments7

Программирование современных микроконтроллеров: лекция 1

Reading time16 min
Views84K
Конспект первой лекции по программированию современных микроконтроллеров на примере STM32 и операционной системы RIOT. Лекции читаются в Институте информационных технологий МИРЭА по субботам, с 12:50 в актовом зале на 4 этаже корпуса Д. В занятиях отводится 1,5 часа на саму лекцию и 3 часа на практические занятия в лаборатории IoT Академии Samsung по теме лекции.

Привет, Гиктаймс! Как мы и обещали, начинаем публикацию конспектов лекций, которые сейчас читаются в Институте ИТ МИРЭА. По результатам первой, вводной лекции мы решили немного изменить структуру курса — вместо планировавшихся двух потоков по 5 занятий будет один поток на 7 занятий. Это позволит в более спокойном темпе разобрать ряд вспомогательных вопросов, а также статьи с конспектом будут появляться на GT каждую неделю в течение всего марта и апреля, а не через неделю, как планировалось раньше.

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

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

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



Сегодняшняя лекция — первая, поэтому на ней будут разбираться общие понятия: что такое вообще микроконтроллер и зачем он нужен, что такое прошивка и как она получается, зачем нам нужна операционная система, и наконец — как работать с git. Результат практического занятия — собственный репозитарий на GitHub с исходными кодами ОС, а также успешно настроенная среда сборки на локальном компьютере.
Total votes 37: ↑37 and ↓0+37
Comments165

Information

Rating
Does not participate
Registered
Activity