Как стать автором
Обновить
45
0
Егор Александров @Eppy

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

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

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

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

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

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

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

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

Read more about GitHub Actions
Всего голосов 12: ↑12 и ↓0+12
Комментарии55

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

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

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

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

Приятного чтения!
Всего голосов 13: ↑9 и ↓4+5
Комментарии1

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

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


Приятного чтения!
Всего голосов 55: ↑50 и ↓5+45
Комментарии77

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

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


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

Читать дальше →
Всего голосов 24: ↑16 и ↓8+8
Комментарии20

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

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

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



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

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

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

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


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

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

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

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

Как поколение Y превратилось в поколение выгоревших?

Время на прочтение5 мин
Количество просмотров107K
Почему мы выгораем и даже не подозреваем об этом? Краткий перевод статьи Анн Хелен Петерсен, репортера BuzzFeed News.


Читать дальше →
Всего голосов 90: ↑79 и ↓11+68
Комментарии1297

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

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

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


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



Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии70

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

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


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

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

Траффик
Всего голосов 18: ↑17 и ↓1+16
Комментарии6

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

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


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


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


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


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


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


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

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


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

Читать дальше →
Всего голосов 37: ↑30 и ↓7+23
Комментарии44

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

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


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

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

Время на прочтение5 мин
Количество просмотров87K
Добрый день. В открытом доступе наконец-то появился огромный справочник штрихкодов с наименованиями товаров, категориями и брендами.

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

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

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


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

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

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

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

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

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

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

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

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

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



Читать дальше →
Всего голосов 16: ↑15 и ↓1+14
Комментарии3

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

Время на прочтение3 мин
Количество просмотров42K
Все началось с очередной попытки бросить курить. Разбудив свою внутреннюю «жабу» в поисках поддержки, говорю ей: «Смотри, пачка моих сигарет стоит сегодня как карманный ретро-компьютер с экраном, то есть примерно $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


Всего голосов 82: ↑82 и ↓0+82
Комментарии107

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

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

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

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

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

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


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

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


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

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


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

package animals 

type Animal interface {
	Speaks() string
}

// применение Animal
type Dog struct{}
func (a Dog) Speaks() string { return "woof" }
Читать дальше →
Всего голосов 20: ↑14 и ↓6+8
Комментарии9

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

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

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


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


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


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

Читать дальше →
Всего голосов 25: ↑21 и ↓4+17
Комментарии7

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

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

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

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

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

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



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

Информация

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