Pull to refresh
1
0
Send message

50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков

Reading time44 min
Views218K


Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
Читать дальше →
Total votes 80: ↑76 and ↓4+72
Comments270

Шпаргалка по SQL (postgres), которая выручает меня на собесах

Level of difficultyEasy
Reading time8 min
Views195K

Привет, Хабр!

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

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

Читать далее
Total votes 156: ↑149 and ↓7+177
Comments178

Пишем на Python как на Rust

Level of difficultyMedium
Reading time17 min
Views31K

Я начал программировать на Rust несколько лет назад, и это постепенно изменило мой подход к разработке программ на других языках программирования, особенно на Python. До того, как я начал использовать Rust, я обычно писал код на Python очень динамично, без подсказок типов, повсюду передавая и возвращая словари и время от времени возвращаясь к интерфейсам со «строковой типизацией». Однако, испытав на себе строгость системы типов Rust и заметив все проблемы, которые она предотвращает, я внезапно стал сильно беспокоиться всякий раз, когда возвращался к Python и не получал тех же гарантий.

Читать далее
Total votes 88: ↑83 and ↓5+94
Comments42

VPN Gate, или — неубиваемая Великим Китайским Файрволом распределённая сеть VPN

Reading time3 min
Views75K

Сегодня речь пойдёт о технологии распределённой сети VPN Gate, своего рода недруга Поднебесной в области интернет цензуры. На Хабре много статей на тему SoftEther VPN (нижележащий слой VPN Gate), но нет ни одной технически всесторонней статьи про саму распределённую сеть и такое чувство, что в рунете про неё вообще забыли.

VPN Gate — академический эксперимент Дайу Нобори. Проект представляет собой интернет-сервис научных исследований в Высшей Школе Университета Цукуба, Япония. Цель данного исследования заключается в расширении знаний «Глобальных распределенных открытых ретрансляторов VPN».

Отличительной особенностью данной сети является её функционирование в виде роя. То есть каждый желающий пользователь может поделиться своей пропускной способностью с другими. Я знаю, что вы подумали, очередной неудачный dVPN пиар на основе блокчейна.

Однако это не так, данный проект уже насчитывает 8634 узлов и 534 петабайта трафика за всё время существования. К примеру даже у TOR-а узлов — 7 тысяч.

Читать далее
Total votes 68: ↑67 and ↓1+79
Comments101

Настраиваем Gitlab CI для сборки Android-проекта

Reading time5 min
Views9.9K

Привет! Меня зовут Даша, я Android-разработчик в команде онлайн-кинотеатра PREMIER и я хочу с вами поделиться историей как мы начали приводить в порядок Gitlab CI скрипты :)

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

Погнали!
Total votes 11: ↑10 and ↓1+12
Comments9

CI/CD для AWS Lambda через GitHub Actions

Reading time4 min
Views6.5K

Сегодня я расскажу, как без лишних усилий настроить CI/CD pipeline из GitHub в AWS Lambda с помощью GitHub Actions. Логика такая — когда мы пушим изменения в main-ветку репозитория на GitHub они прорастают в AWS и обновляет продовую версию функции.

Читать далее
Total votes 11: ↑9 and ↓2+10
Comments4

Асинхронный python без головной боли (часть 1)

Reading time14 min
Views285K

Почему так сложно понять asyncio?

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

Но будь я автором самого толстого в мире учебника по python, я бы рассказывал читателям про асинхронное программирование уже с первых страниц. Вот только написали "Hello, world!" и тут же приступили к созданию "Hello, asynchronous world!". А уже потом циклы, условия и все такое.

Съешь красную таблетку
Total votes 135: ↑135 and ↓0+135
Comments56

От стесняшки до архитектора: какими бывают DevOps и как стать одним из них

Reading time7 min
Views11K

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

Индивидуальный план развития →
Total votes 13: ↑5 and ↓8-2
Comments6

Избавляемся от паролей в репе с кодом с помощью HashiCorp Vault Dynamic Secrets

Reading time11 min
Views20K

Привет, Хабр! Меня зовут Сергей, я работаю IT Head в компании Quadcode. Сегодня хотел бы рассказать о том, как я решил проблему с хранением паролей в открытом виде в коде одного из моих pet-проектов. Думаю, это знакомая для многих ситуация. Знакомая — и неприятная.

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

Читать далее
Total votes 12: ↑11 and ↓1+15
Comments16

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

Reading time5 min
Views257K


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

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

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

Всё это надо зачистить.
Читать дальше →
Total votes 156: ↑145 and ↓11+168
Comments203

Секс, наркотики и убийства: смысл англоязычных песен, который мало кто замечает

Reading time12 min
Views84K


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

Слушая иностранные песни, фокусируешься больше на мелодике, на общей атмосфере. Текст трека — дело второстепенное. И это иногда играет с нами злую шутку.

Поговорим о популярных песнях, в которых люди без хорошего английского (а иногда и с ним) в большинстве случаев упускают истинный смысл. Готовьтесь, будет немного крипово. Поехали.
Total votes 65: ↑55 and ↓10+61
Comments266

Дайджест свежих материалов из мира фронтенда за последнюю неделю №448 (28 декабря — 3 января 2021)

Reading time2 min
Views8.7K
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments2

Претотипирование — новый термин в словаре или как проверить идею очень дешево и очень быстро

Reading time9 min
Views11K

Проблема

У каждого из нас есть не менее одной идеи на миллион. Но далеко не у каждого получается воплотить свои задумки в жизнь. Этому есть ряд причин, о которых написано немало книг и статей. Известно также, что реализовать свои идеи не получается даже у крупных компаний с большим опытом, крутой командой и немалым бюджетом. Для примера можно посмотреть на «кладбище» проектов компании Google или «морг» Microsoft. Трудно представить, что у этих компаний столько много не получившихся проектов, на которые были потрачены немалые деньги и время.

Что делать? Какое решение? В этой статье собрана большая часть методов проверки гипотез, также рассказывается о новом термине «претотипирование» с примерами известных компаний.

Читать далее
Total votes 31: ↑31 and ↓0+31
Comments13

Ультимативный гайд по поиску утечек памяти в Python

Reading time7 min
Views26K

Практика показывает, что в современном мире Docker-контейнеров и оркестраторов (Kubernetes, Nomad, etc) проблема с утечкой памяти может быть обнаружена не при локальной разработке, а в ходе нагрузочного тестирования, или даже в production-среде. В этой статье рассмотрим причины появления утечек в Python-приложениях, доступные инструменты для отладки и мониторинга работающего приложения, а также общую методику поиска утечек памяти.

Читать далее
Total votes 61: ↑61 and ↓0+61
Comments4

Как победить дракона: переписываем вашу программу на Golang

Reading time8 min
Views12K

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


Резонный вопрос: зачем вообще может понадобится переписывать программу, которая уже написана и нормально работает?


Читать дальше →
Total votes 33: ↑28 and ↓5+23
Comments35

Продвинутые абстракции Kubernetes: Job, CronJob

Reading time11 min
Views31K


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

Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments6

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

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

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



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

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

CI/CD в Github Actions для проекта на Flask+Angular

Reading time10 min
Views6.7K

В этой статье я поделюсь своим опытом настройки CI/CD с использованием панели управления Plesk и Github Actions. Сегодня будем учиться деплоить простенький проект с незамысловатым названием «Helloworld». Он написан на Python-фреймворке Flask, с воркерами на Celery и фронтендом на Angular 8.

Ссылки на репозитории: бэкенд, фронтенд.

В первой части статьи мы посмотрим на наш проект и его части. Во второй — разберемся, как настроить Plesk и установить необходимые расширения и компоненты (БД, RabbitMQ, Redis, Docker и т.д.).

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

И да, забыл представиться. Меня зовут Олег Борзов, я техлид в команде CRM для менеджеров ипотечного кредитования в Домклик.
Читать дальше →
Total votes 31: ↑30 and ↓1+32
Comments2

Kubernetes в ДомКлик: как спать спокойно, управляя кластером на 1000 микросервисов

Reading time8 min
Views16K
Меня зовут Виктор Ягофаров, и я занимаюсь развитием Kubernetes-платформы в компании ДомКлик в должности технического руководителя разработки в команде Ops (эксплуатация). Я хотел бы рассказать об устройстве наших процессов Dev <-> Ops, об особенностях эксплуатации одного из самых больших k8s-кластеров в России, а также о DevOps/SRE-практиках, которые применяет наша команда.


Поехали!
Total votes 39: ↑39 and ↓0+39
Comments37

CI/CD используя Jenkins на Kubernetes

Reading time7 min
Views55K

Добрый день.


На Хабре уже есть несколько статей о jenkins, ci/cd и kubernetes, но в данной я хочу сконцентрироваться не на разборе возможностей этих технологий, а на максимально простой их конфигурации для постройки ci/cd pipeline.


Я подразумеваю, что читатель имеет базовое понимание docker, и не буду останавливаться на темах установки и конфигурирования kubernetes. Все примеры будут показаны на minikube, но так же могут быть применены на EKS, GKE, либо подобных без значительных изменений.


Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments10
1

Information

Rating
Does not participate
Registered
Activity