Pull to refresh
0
0
Send message

System Design. Общие принцип прохождения интервью по проектированию ИТ-систем

Reading time9 min
Views41K
image Привет, Хаброжители! Мы весьма рады, что вы решили изучить особенности интервью по проектированию ИТ-систем вместе с нами. Из всех технических интервью именно на этом задают самые сложные вопросы. Претенденту предлагается спроектировать архитектуру программной системы: новостной ленты, поиска Google, системы мгновенных сообщений и т. д. Задачи такого рода наводят ужас, ведь у них нет единственно верных решений. Они обычно отличаются масштабностью и расплывчатостью. Допускаются свободные и неясные формулировки без стандартного или правильного ответа.

Интервью по проектированию ИТ-систем широко практикуются в компаниях, так как навыки общения и решения задач, которые можно проверить на этом этапе, необходимы в повседневной работе программиста. Ответы претендента оцениваются с учетом того, как он анализирует расплывчатую задачу и какие шаги он предпринимает для ее решения. При этом во внимание принимается то, как он объясняет свои идеи, обсуждает их с другими, оценивает и оптимизирует систему.
Читать дальше →
Total votes 12: ↑11 and ↓1+12
Comments16

Приложения для заметок с хостингом на своём сервере (замена Evernote)

Reading time9 min
Views48K
Я давно уже пользуюсь Evernote (далее местами — EN) для заметок. Мне от него много не надо — вложенность хотя бы в пару уровней, простой WYSIWYG-редактор, возможность прикреплять файлы, автосинхронизация, работа под Windows и Android, оффлайн-режим (включая мобильник), поиск по содержимому, сохранение веб-страничек. Коллективной работы не требуется, OCR приятен, но не критичен, веб тоже, даже self-hosting — при моей любви к таким решениям — приятная фишка, но если чего-то не будет из предыдущего списка, то я уж лучше буду пользоваться дядиным решением, а не терпеть отсутствие функций.


В принципе, сам по себе Evernote меня более-менее устраивает — работает, информацию я ещё не терял, просто сильно не нравится, куда он идёт. После выхода «new evernote» приложение резко потолстело как внешне, так и в плане потребления ресурсов, отбросило часть функций, приделало какие-то новые, лично мне не особо нужные, люди жалуются на пропадание данных, проблемы с оффлайн-режимом на телефонах, безопасность под вопросом, да и вообще — денег хочет.

Впрочем, заплатить за удобный сервис разумные деньги я не против, но если можно не платить — то предпочту не платить. Потому, когда собрал новый домашний сервер и начал перетаскивать какие-то сервисы от «дяди» к себе, задумался и о заметках. Как история показывает, этот тип приложений — один из самых подверженных различным облачным болезням, типа пропадания доступа, закрытия сервиса или смене тарифов.
Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments106

Dashboard, dashboard, сколько тебе жить осталось?

Reading time13 min
Views16K

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

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

Мой новый домашний сервер, часть 4: использование unraid

Reading time12 min
Views46K
Для тех, кому лень читать предыдущие части — я переходил с HP Microserver Gen8/Windows Server на самосборный сервер с Unraid в качестве базовой ОС. Unraid — это коммерческая ОС для NAS/домашнего сервера на базе ядра Linux. Основные возможности — гибкое управление массивом дисков, удобная установка докер-контейнеров из своего каталога и возможность запуска виртуальных машин. Почему выбрал именно unraid — написано во второй части.

Я не буду здесь расписывать установку и настройку unraid. Это делается элементарно — просто закидываются файлы на флэшку, флэшка вставляется в сервер — можно пользоваться. Всё понятно расписано у них на сайте, плюс много полезной информации есть на youtube-канале Spaceinvader One. Какие-то ранние вещи там уже устарели, потому, если видите несколько видео на одну тему, выбирайте более свежее. Ещё понятные доки на эту тему у ibracorp, есть и youtube-канал, если буквы не любите.



А я лучше просто опишу, как выглядят теперь перечисленные во второй части сервисы.

Читать дальше →
Total votes 13: ↑11 and ↓2+14
Comments65

Пять распространенных проблем кандидатов (по результатам 600 технических собеседований)

Reading time9 min
Views53K

Компания Geekfactor cовместно с Getmentor.dev проводит программу подготовки к трудоустройству в зарубежные стартапы (бесплатно помогаем подготовиться к интервью и показываем резюме классным компаниям) — почитать о ней подробней и зарегистрироваться можно тут. Свой блог на Хабре мы хотим посвятить теме трудоустройства зарубеж и наша первая статья — про то, каких ошибок стоит избегать при прохождении технических интервью в зарубежные компании.

Недавно я провел свое 600-е собеседование на платформе interviewing.io (IIO). В этой статье я хочу рассказать о своем опыте, подходе к проведению собеседований и основных проблемах, которые встречались у кандидатов на технических собеседованиях.
Читать дальше →
Total votes 50: ↑18 and ↓32-9
Comments76

Хранилища признаков: Сторона данных в конвейерах машинного обучения

Reading time7 min
Views3.6K

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

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

Анализ вакансий и зарплат в Data Science

Reading time8 min
Views50K

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

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

Для анализа мы использовали вакансии, публикуемые в сообществе ODS. По правилам сообщества все вакансии должны иметь зарплатную вилку от и до и подробное описание вакансии - есть что анализировать. К статье прилагается репозиторий с ноутбуком и исходными данными.

Читать далее
Total votes 26: ↑25 and ↓1+33
Comments17

Как оформить серию коммитов Git, чтобы её приняли в любой проект

Reading time8 min
Views30K

Добрый день, коллеги! Доказывать, что нужно использовать систему контроля версий, уже давно не нужно. И Git занял тут лидирующую позицию, стремительно вытеснив SVN. Но это инструмент, а инструментом нужно уметь пользоваться, чтобы добиться лучших результатов. Как топором, один человек сможет просто срубить дерево а другой из этого дерева сможет сделать великолепную скульптуру. Так и с помощью Git, один человек сможет просто не потерять результаты своего труда за день, а другие смогут организовать совместную работу над проектом нескольких сотен человек. Да так, что о любой строчке кода можно будет и через пять лет сказать, откуда она взялась и для чего нужна.

Постараюсь рассказать для начинающих и не очень разработчиков, как оформлять свои коммиты, чтобы их максимально быстро и без претензий принимали в любые проекты, как опенсорсные так и коммерческие.

Читать далее
Total votes 42: ↑39 and ↓3+53
Comments30

КПД разработчика. Как успевать жить, работать и эволюционировать. Часть 1

Reading time11 min
Views14K

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

Первое интервью — с Денисом Аникиным из Райффайзен привело к неожиданным выводам. Читайте историю о том, что успешный разработчик не всегда проходит правильный путь: ВУЗ-стажировка-джун-мидл-сеньор/тимлид. Посмотрите, какие принципы помогают соблюдать баланс техдолга и разработки. И узнайте, каким вопросом не стоит себя истощать, если хотите быть счастливым человеком.

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

Фишки IDEA. Часть 2

Reading time5 min
Views19K

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

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

Фишки IDEA. Часть 1

Reading time4 min
Views18K

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

Хотим поделиться с вами самыми интересными идеями (со ссылками на документацию, где подробно описано, как это работает).

Читать далее
Total votes 14: ↑12 and ↓2+13
Comments17

Корпоративный английский: кто в выигрыше?

Reading time7 min
Views9.1K

Как вы можете учиться на самом деле, а не в фантазиях ваших HR'ов.

Корпоративный английский это практически must have в любой уважающей себя компании. Со своей стороны все уважающие себя языковые школы и фрилансеры обязательно предлагают корпоративный английский. 

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

Тему корпоративного английского мы обсуждали с коллегами неоднократно. Потому что нет ни одного  из наших коллег ближнего и дальнего круга в возрасте от 25 до 60 лет, кому бы не довелось поработать корпоративным преподавателем английского. 

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

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

Читать далее
Total votes 10: ↑7 and ↓3+6
Comments7

Выбор между лёгким и правильным

Reading time6 min
Views31K
Людям из мира IT грех жаловаться на оплату труда. Она выше, чем средняя по всем отраслям экономики во всех странах мира, в России тоже. Однако если переходить от рассмотрения в среднем по больнице к деталям, то нельзя не заметить некоторые странности, которые переживают одно десятилетие и переходят в другое. Мир IT тоже сегментирован, как и другие виды человеческой деятельности. Но существует ли под этим какая-то объективная основа и нужно ли разработчику сознательно ориентироваться на заработки из придонного слоя?

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

image
Читать дальше →
Total votes 60: ↑52 and ↓8+68
Comments155

А в вашей жизни были приключения интереснее, чем в компьютерных играх?

Reading time6 min
Views57K
Наш ветвер на низком уровне не отличает собственный живой опыт от выдумки. То есть того, что мы видим в играх, фильмах и книгах. Мозгу всё равно. Что случилось в последней игре — так же легло в копилку опыта, как и то, что случилось вчера в офисе. Благодаря развитию IT и своему воображению, мы можем от первого лица переживать опыт, который никогда нельзя испытать в реальности.

Проиллюстрирую рядом воспоминаний. Вспомните траву под ветром в Сталкере и пробежку до 4-го энергоблока под переговоры военных; финальные диалоги с Элизбет из Биошока; многоэтажный остров Хэнша из Deus Ex; практически все первые впечатления от колоний Mass Effect; перестройку сознания в «Трассе-60»; концовку первой книги «Ведьмака». И так далее.



Возможно, почти каждый из нас был в сотнях миров Гипериона, наблюдал за дисфункцией реальности и шел к Нижнему Краю на «Внеполосном». Мы вместе ходили с Морриган в самоубийственную атаку на дракона; вместе спасали друзей в Far Cry; вылетали на террор сектоидов в Лиме и ехали вместе с Каином в такси в V:tM.

Это и многое другое рождает парадокс suspension of disbelief — приостановку неверия.
Читать дальше →
Total votes 154: ↑148 and ↓6+142
Comments435

Польза строгой типизации в C++: практический опыт

Reading time7 min
Views19K
Наша программа обрабатывает сетевые пакеты, в частности, заголовки TCP/IP/etc. В них числовые значения — смещения, счетчики, адреса — представлены в сетевом порядке байтов (big-endian); мы же работаем на x86 (little-endian). В стандартных структурах, описывающих заголовки, эти поля представлены простыми целочисленными типами (uint32_t, uint16_t). После нескольких багов из-за того, что порядок байтов забыли преобразовать, мы решили заменить типы полей на классы, запрещающие неявные преобразования и нетипичные операции. Под катом — утилитарный код и конкретные примеры ошибок, которые выявила строгая типизация.
Читать дальше →
Total votes 90: ↑89 and ↓1+88
Comments77

На спор: прочитав до конца, вы поймёте, как и почему именно так работает GC

Reading time6 min
Views35K

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


Другой вопрос, что мне субъективно не очень нравится, как объясняется его работа. Потому, предлагаю альтернативный подход, описанный в моей книге, .NET Platform Architecture.


Если мы с вами будем досконально разбираться, почему были выбраны именно эти два алгоритма управления памятью: Sweep и Compact, нам для этого придётся рассматривать десятки алгоритмов управления памятью, которые существуют в мире: начиная обычными словарями, заканчивая очень сложными lock-free структурами. Вместо этого, оставив голову мыслям о полезном, мы просто обоснуем выбор и тем самым поймём, почему выбор был сделан именно таким. Мы более не смотрим в рекламный буклет ракеты-носителя: у нас на руках полный набор документации.


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


Читать дальше →
Total votes 27: ↑22 and ↓5+17
Comments77

Почему сериал «Чернобыль» настолько плохо описал ядерную энергию

Reading time9 min
Views101K

Нет, чернобыльская радиация не навредила вашему ребёнку

Статья Майкла Шелленбергера – известного автора и колумниста, пишущего про энергию и окружающую среду.

С начала мини-сериала «Чернобыль» от HBO, рассказывающего о ядерной катастрофе 1986 года, журналисты расхваливали его за точность воспроизведения фактов и событий, даже несмотря на то, что его создатели допустили некие творческие вольности.

«Первое, что нужно понять насчёт мини-сериала „Чернобыль“ от HBO, — писал журналист из The New York Times, — то, что довольно многое является выдумкой. Однако другое, и более важное его свойство: это не так уж и важно». Журналист отметил ту же неточность, что и я в прошлой статье на ту тему: «жертвы радиации часто по какой-то причине оказываются испачканными кровью».

Однако «базовые вещи HBO показала правильно»,- пишет он, а именно то, что Чернобыль – «это больше тема лжи, предательства и прогнившей политической системы, чем вопросы того, хорошая или плохая ядерная энергия в принципе».
Total votes 183: ↑142 and ↓41+101
Comments701

C# или Java? TypeScript или JavaScript? Классификация языков программирования на основе машинного обучения

Reading time6 min
Views15K
На GitHub представлено больше 300 языков программирования, начиная с общеизвестных языков, таких как Python, Java, и Javascript, и заканчивая эзотерическими языками, такими как Befunge, известными только малым группам людей.

Топ-10 языков программирования, размещенных на GitHub, по количеству репозиториев

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

На первый взгляд, распознавание языка является простой задачей, но это не совсем так. Linguist — это инструмент, который мы сейчас используем для определения языка программирования на GitHub. Linguist — это приложение на Ruby, использующее различные стратегии про распознаванию языка, в том числе данные о названиях и расширения файлов. Кроме того оно принимает во внимание модели Vim или Emacs, а также содержимое в верхней части файла (shebang). Linguist обрабатывает языковую неоднозначность эвристически и, если таким способом не получается, то использует наивный байесовский классификатор, обученный на небольшой выборке данных.

Хотя Linguist достаточно хорошо предсказывает на уровне файла (точность 84%), все ломается, когда файлы названы странно, а тем более, когда у файлов нет расширений. Это делает Linguist бесполезным для такого контента, как GitHub Gists или фрагментов кода в README, ошибках и pull requests.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments7

«Сгоревшие» сотрудники: есть ли выход?

Reading time18 min
Views157K
Ты работаешь в хорошей компании. Вокруг тебя крутые профессионалы, получаешь достойную зарплату, каждый день делаешь важные и нужные вещи. Илон Маск запускает спутники, Сергей Семёнович улучшает и без того лучший город Земли. Погода отличная, солнце светит, деревья цветут — живи да радуйся!

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

Что же делать? Как работать с Игнатом? Добро пожаловать под кат!


Total votes 224: ↑210 and ↓14+196
Comments400

Ещё лучшая ZIP-бомба

Reading time25 min
Views127K
В статье показано, как создать нерекурсивную zip-бомбу, которая обеспечивает высокую степень сжатия путём перекрытия файлов внутри zip-контейнера. «Нерекурсивная» означает, что она не зависит от рекурсивной распаковки декомпрессорами файлов, вложенных в zip-архивы: здесь всего один раунд. Выходной размер увеличивается квадратично от входного, достигая степени сжатия более 28 миллионов (10 МБ → 281 ТБ) в пределах формата zip. Ещё большее расширение возможно с помощью 64-разрядных расширений. Конструкция использует только наиболее распространённый алгоритм сжатия DEFLATE и совместима с большинством парсеров zip.

  • zbsm.zip 42 kB → 5.5 GB
  • zblg.zip 10 MB → 281 TB
  • zbxl.zip 46 MB → 4.5 PB (Zip64, менее совместима с парсерами)

Исходный код:
git clone https://www.bamsoftware.com/git/zipbomb.git
zipbomb-20190702.zip

Данные и исходники иллюстраций:
git clone https://www.bamsoftware.com/git/zipbomb-paper.git
Читать дальше →
Total votes 176: ↑176 and ↓0+176
Comments53

Information

Rating
Does not participate
Registered
Activity