Pull to refresh
2
0

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

Send message

Как разработчику выучить английский язык до высокого уровня для релокации (и не только)?

Level of difficultyEasy
Reading time5 min
Views36K

Всем привет! Сегодня, я хочу поделиться с вами своим личным опытом изучения английского языка с нуля. Данная статья будет полезна как людям только начинающим свой путь в мир прекрасного английского, так и уже погруженным с головой в изучение языка. В данной статье, я расскажу вам о базовых, но крайне полезных, принципах процесса обучения из своего личного опыта. Мой личный опыт был не самым простым, так как интенсивно изучать английский язык я начал в возрасте в 16ти лет, а не с раннего детства, как многие, сменив на своем пути порядка 5ти репетиторов. Однако, уже в 23 года, я смог получить диплом Магистра международных отношений и европейской политики на английском языке в одном из престижных вузов Европы.

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

Грамматика - это важно, однако, нет никакого смысла сидеть над ней часами, заучивая структуры каждого времени. Переходить к изучении грамматики стоит чуть позже, на уровне А2-B1, когда вы уже начнете обладать достаточным уровнем словарного запаса. И опять же, не нужно пытаться заучить все наизусть. Постарайтесь понять суть каждого из времен, а дальше с практикой вы поймете как данные связки начнут воспроизводиться вашим мозгом сами по себе.

Читать далее
Total votes 15: ↑9 and ↓6+4
Comments38

Итак, вы установили fzf. Что дальше?

Level of difficultyEasy
Reading time4 min
Views20K

Разработчики ПО — если не единственные, то практически единственные, кому очень просто создавать инструменты для улучшения своей профессиональной работы; однако со временем это усложняет жизнь людям, постоянно переключающимся между разными инструментами и не вкладывающим время в глубокое изучение своего инструментария. Имея глубокое уважение к негласным знаниям людей лучше меня, я всё же считаю, что отличная эвристика 80/20 заключается в том, чтобы изучать старые добрые инструменты Unix cat, ls, cd, grep и cut. (а если вам повезло устроиться на должность настоящего современного сисадмина, то ещё и sed с awk.)

Однако существуют инструменты, выгода от использования которых настолько мгновенна и ценность от применения настолько уникальна, что эвристика 80/20 полностью к ним неприменима. Один из них — это fzf. И меня очень печалит то, что многие скачивают его, запускают в командной строке «как есть», а потом просто мотают головой и произносят: «Я не понимаю».

Мне хотелось бы изменить ситуацию. Предположим, что вы работаете на более-менее стандартной машине с Ubuntu. Вы только что установили fzf при помощи стандартного скрипта установки. Что же дальше?
Читать дальше →
Total votes 54: ↑54 and ↓0+54
Comments25

Как построить систему, способную выдерживать нагрузку в 5 млн rps

Level of difficultyMedium
Reading time12 min
Views50K

Всем привет! 

Меня зовут Владимир Олохтонов, я руковожу командой разработки в отделе Message Bus, который является частью платформы Ozon. Мы занимаемся разработкой самых разных систем вокруг Kafka, etcd и Vault. В этой статье я расскажу о том, как мы строили линейно масштабируемую gRPC-прокси перед Kafka, способную обслуживать миллионы запросов в секунду, используя Go.

Читать далее
Total votes 102: ↑99 and ↓3+108
Comments58

Go: особенности написания конкурентных программ

Level of difficultyMedium
Reading time10 min
Views7.9K

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

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

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

Читать далее
Total votes 8: ↑6 and ↓2+5
Comments7

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

Level of difficultyEasy
Reading time8 min
Views199K

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

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

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

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

Go scheduler. Простыми словами

Level of difficultyEasy
Reading time6 min
Views26K

В данной статье расскажу о планировщике Go. Основу материала взял из книги Уильяма Кеннеди Ultimate Go. Вначале поговорим о планировщике OS, после перейдем к планировщику Go и сравним их.

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

Осваиваем чистую архитектуру кода на Golang: практическое руководство по сущностям и слоям моделей

Level of difficultyMedium
Reading time8 min
Views14K

В архитектуре кода иногда разделяют слой сущностей и слой моделей. В этой статье я расскажу о них и приведу два примера кода на языке Golang.

Читать далее
Total votes 15: ↑11 and ↓4+10
Comments3

Несколько мыслей по подготовке к алгоритмической части собеседования

Level of difficultyEasy
Reading time9 min
Views8.4K
image

Всем привет! На связи снова Петр Коробейников, техлид сервисов DBaaS for Redis и RabbitMQ (релиз скоро) в #CloudMTS. В этой статье хочу поделиться с вами некоторым опытом подготовки к прохождению алгоритмических интервью. Конечно, статья не про хардкорные алгоритмы. Это, скорее, эскиз к роадмапу по подготовке. Тем не менее, я надеюсь, он будет полезен новичкам (и даже некоторым «старичкам»).

Готовьтесь


Это первый и самый важный совет. Если вы думаете, что, ворочая базами в десятки терабайт, вывозя 50-100k RPS к фронту, обрабатывая десятки миллионов сообщений в Kafka, вы сможете перенести свой опыт на решение алгоритмических задач, то могу вас немного расстроить.

Двоичное дерево без подготовки вы сможете покрутить в лучшем случае только на неприличном месте. Это чем-то похоже на экзамен по математике или физике: вы не сможете вывести формулу, если не знакомы с теорией и не решали задачи заранее. И вас будет ждать обидный провал.
Читать дальше →
Total votes 25: ↑20 and ↓5+19
Comments13

Принцип единственной ответственности: глубокое погружение

Reading time17 min
Views49K
Про принцип единственной ответственности (The Single Responsibility Principle, SRP) уже было написано множество статей. В большинстве из них даётся лишь поверхностное его описание мало чем отличающееся от информации в википедии. А те немногие статьи что затрагивают ключевые особенности SRP делают это вскользь, не акцентируя на них внимания и не развивая тему дальше.

Эта статья — попытка дать более глубокое объяснение принципу единственной ответственности, а также показать как его всё таки можно применять на практике. Кому интересно — добро пожаловать под кат.
Читать дальше →
Total votes 26: ↑24 and ↓2+34
Comments106

KeyCloak и микро-сервисы. Как облегчить жизнь программисту

Level of difficultyMedium
Reading time12 min
Views20K

Привет! Если ты так же как и я решил использовать keycloak для аутентификации и авторизации в своей микро‑сервисной архитектуре, то я расскажу вам как правильно настроить сам keycloak, его рабочую среду а в конце мы подключим Active Directory к нашему приложению.

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments12

Судя по новым данным, фундаментальная модель Вселенной неверна

Reading time5 min
Views85K

Галактика Колесо телеги

Мы живём в странной Вселенной, наполненной необъяснимыми явлениями, ставившими в тупик человечество с незапамятных времён. Сегодня у учёных есть примерная модель истории космоса – лямбда с холодной тёмной материей, ΛCDM, или стандартная космологическая модель. Однако многие загадки не укладываются в эту платформу, пусть и подтверждённую другими наблюдениями. И чем точнее становятся в последние годы наши наблюдения за космосом, тем больше видно несоответствий.

Особенно занимает учёных упорное расхождение, возникающее при различных измерениях двух свойств Вселенной – скорости расширения, выражаемой через постоянную Хаббла H0, и значение сигма-8 (σ8), описывающее вариативность, с которой материя собирается в скопления на крупных космических масштабах.
Читать дальше →
Total votes 75: ↑62 and ↓13+75
Comments303

Такие удивительные семафоры

Reading time9 min
Views139K
От переводчика: Джефф Прешинг (Jeff Preshing) — канадский разработчик программного обеспечения, последние 12 лет работающий в Ubisoft Montreal. Он приложил руку к созданию таких известных франшиз как Rainbow Six, Child of Light и Assassin’s Creed. У себя в блоге он часто пишет об интересных аспектах параллельного программирования, особенно применительно к Game Dev. Сегодня я бы хотел представить на суд общественности перевод одной из статей Джеффа.

Поток должен ждать. Ждать до тех пор, пока не удастся получить эксклюзивный доступ к ресурсу или пока не появятся задачи для исполнения. Один из механизмов ожидания, при котором поток не ставится на исполнение планировщиком ядра ОС, реализуется при помощи семафора.

Раньше я думал, что семафоры давно устарели. В 1960‑х, когда еще мало кто писал многопоточные программы, или любые другие программы, Эдсгер Дейкстра предложил идею нового механизма синхронизации — семафор. Я знал, что при помощи семафоров можно вести учет числа доступных ресурсов или создать неуклюжий аналог мьютекса, но этим, как я считал, область их применения ограничивается.
Читать дальше →
Total votes 38: ↑37 and ↓1+36
Comments1

Вопросы и ответы для собеседования Go-разработчика

Level of difficultyMedium
Reading time53 min
Views118K

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


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


Да, это очень объемный пост, и вряд ли его можно вдумчиво осилить за один подход, но поместив его в закладки он, возможно, когда-то сослужит вам добрую службу (читать его можно по частям, находясь в метро или между вечными совещаниями; да и Ctrl + F никто не отменял). Ещё ему очень не хватает оглавления для удобной навигации между вопросами, но у хабраредактора нет возможности генерировать TOC (если будут запросы об этом в комментариях — сделаю его руками). Об очепятках, пожалуйста, пишите в личку.

Читать дальше →
Total votes 40: ↑37 and ↓3+37
Comments16

Концепции Rust, которые неплохо бы знать пораньше

Reading time21 min
Views19K

Весь минувший месяц я глаз не мог оторвать от языка программирования Rust, ведь его конёк – создание современных программ, обеспечивающих безопасную работу с памятью. За прошедшие годы появилось несколько языков, которые позиционировались как «инструмент что надо» для написания надёжного бекенд-софта. Постепенно маятник качнулся от Java/C++ к Go и Rust, выстроенных на многолетних разработках по теории языков программирования. Суть – в создании инструментов, которые были бы эффективны именно в наш век.

Читать далее
Total votes 44: ↑35 and ↓9+35
Comments16

Жуткий сценарий использования ChatGPT

Reading time2 min
Views140K

Вчера у меня в ленте на фейсбуке (жаль что в закрытом посте) проявился еще один аспект ChatGPT, жуть которого я не вполне осознавал. Представьте, что ваш менеджер присылает вам емейл: "я вот тут сгенерил с помощью ChatGPT код на языке описания аппаратуры SystemVerilog, который реализует мою идею, ты его поправь немного и в продакшн, а то нас сроки поджимают".

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

То есть менеджер думает, что вместе с ChatGPT сделал за вас 90% работы, а на самом деле.

Читать далее
Total votes 127: ↑113 and ↓14+132
Comments322

Конспект лекций по ООП, или Только не ещё одна статья про SOLID

Reading time15 min
Views13K

Так выглядит "инкапсуляция, наследование и полиморфизм" в глазах Midjourney. Интересно, кто тут кто, а так же какой четвёртый "кит" ООП закрался в эту мозаику. Но я не об этом. Я собрал студентам конспект своих лекций по ООП, которые читаю уже, страшно подумать, больше 15 лет. Книжку по функциональному программированию я написал уже давно, книжка по реляционным базам данных пока только в виде первой главы, а конспект по ООП собрался только вот-вот, аккурат к сессии готовиться. Не знаю, что из этого выйдет, %хабр%, "но так и быть - рукой пристрастной прими собранье пестрых глав". Содержание всех глав - в конце, а под катом - одна из глав, которая посвящена SOLID. Да, опять. Да, снова.

Читать далее
Total votes 5: ↑4 and ↓1+3
Comments16

Метод улитки: Бухгалтерия для самых маленьких, или почему Кийосаки неправ

Reading time8 min
Views15K

Сегодня мы с вами (и с маленькой улиточкой) научимся поражать сотрудниц бухгалтерии во славу Алены Апиной, посчитаем свою чистую стоимость, определим является ли ваш кот Тимофей активом или пассивом, дежурно сплюнем и перекрестимся в сторону дедушки Кийосаки, а также рассчитаем свою норму сбережения (как говорила Елена Малышева: «Это норма!»).

Читать далее
Total votes 30: ↑22 and ↓8+21
Comments115

Kubernetes — изучаем паттерн Sidecar

Reading time6 min
Views51K

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

Под, содержащий один контейнер, относится к одно-контейнерным подам и это самый распространенный вариант их использования в Kubernetes. Под, который содержит несколько связанных контейнеров, относится к мульти-контейнерным подам. Есть несколько паттернов для мульти-контейнерных подов и один из них — это паттерн sidecar. В этом посте мы на примере проекта детально рассмотрим этот паттерн.

Читать далее
Total votes 11: ↑8 and ↓3+5
Comments0

Коллеги, вы меня огорчаете

Reading time12 min
Views179K
В июле и августе 2020 года я, с подачи Григория Петрова, проводил для компании Evrone технические интервью на позицию Senior Golang Backend developer. И, видимо, буду вынужден продолжать проводить, о чём ниже.

Задача формулировалась как «найти человека, который сможет задать и поддерживать высокий уровень профессионализма в применении языка Go». То есть, сформулирована она была по-человечески, перевод на канцелярит — мой. Под эту задачу я сформировал новый опросник вместо того, которым пользовался несколько лет — старый был с жестким закосом под DevOps. Методику, которой я пользуюсь для создания опросников и количественной оценки соответствия кандидатов, я излагал в своем докладе «Техническое интервью как инженерная задача» на конференции Saint TeamLead 2019.

И вот что я хочу сказать вам, коллеги: вы меня огорчаете.


Читать дальше →
Total votes 145: ↑101 and ↓44+93
Comments1152

Монорепо: жизнь до и после

Reading time9 min
Views26K
Это история о том, почему в одном из направлений «Юлы» отказались от практики отдельных репозиториев на микросервисы и внутренние библиотеки, перейдя на монорепозиторий, и что из этого вышло. О проблемах, с которыми столкнулись в компании, и тех, которые получилось решить при помощи этого переезда, рассказал на конференции Golang Live 2020 руководитель b2b-разработки «Юлы» Валентин Дубровский.


Читать дальше →
Total votes 16: ↑13 and ↓3+14
Comments14

Information

Rating
Does not participate
Registered
Activity