Pull to refresh
7
0
Юрий @YouraEnt

User

Send message

Собеседование на программиста в Amazon

Reading time7 min
Views126K

Представляю вашему вниманию перевод своей статьи Amazon software engineer interview, изначально опубликованной на английском на sobit.me.


Amazon - We Pioneer


Не так давно со мной связался технический рекрутер из Amazon. Компания организовывала трехдневное онсайт собеседование по найму программистов в их берлинский офис.


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


Если я не упомянул чего-то важного в статье, спрашивайте в комментариях. Постараюсь ответить максимально подробно.

Читать дальше →
Total votes 71: ↑62 and ↓9+53
Comments258

Yum, шпаргалка

Reading time4 min
Views741K


Шпаргалка по работе с пакетным менеджером Yum (Yellowdog Updater, Modified), который используется в популярных Linux дистрибутивах: RedHat, CentOS, Scientific Linux (и других). В целях экономии места вывод команд не представлен.

Оглавление


Команды
Опции Yum
Пакет Yum-Utils
Конфигурационные файлы
Плагины
Работа через прокси
Читать дальше →
Total votes 30: ↑25 and ↓5+20
Comments20

Как перезагрузить сервер?

Reading time6 min
Views131K
Abstract: описание видов ребута, рассказ про sysrq, ipt_SYSRQ, ipmi, psu.

Как перезагрузить сервер? — Это вопрос, который обычно задают ну очень начинающим пользователям, которые путаются между halt, shutdown -r, reboot, init 6 и т.д.

Опытный администратор уточнит вопрос: «а что с сервером не так?» Разные виды отказов серверов требуют разных видов ребута — и неверно выбранный вариант приведёт к тяжелейшим последствиям, из которых визит в веб-морду IPMI/DRAC/iLO с целью «доперезагрузить» будет самым лёгким. Самым тяжёлым в моей личной практике была командировка эникейщика в соседний город. С целью «нажать ребут» на одиноко стоящем сервере.

В этой статье: что мешает серверу перезагрузиться и как ему помочь.

Начнём с теории ребута.

При выключении или перезагрузке сервера менеджер инициализации (в большинстве современных дистрибутивов — systemd, в эксцентричной Ubuntu 14.04 до сих пор upstart, в архаичном хламе — sysv-init) в определённом порядке посылает всем демонам команду «выключись». И большинство демонов (например, СУБД, вроде mysql) знают, как выключаться правильно. Например, закончить все транзакции, сохранить все несохранённые данные на диск и т.д. Для in-memory СУБД, наподобие redis, это и вовсе может быть критичным: не сохранил — потерял.

Старые системы иницализации ждали неограниченно долго каждый из инит-скриптов. Например, если «шутник» добавил вам в «stop» веточку «sleep 3600», то ваш сервер будет перезагружаться час с хвостиком. А если там цифра поболе, или просто программа, которая не хочет завершаться, то и ребут никогда не закончится.
Читать дальше →
Total votes 93: ↑86 and ↓7+79
Comments82

Более чем 80 средств мониторинга системы Linux

Reading time12 min
Views315K
Ниже будет приведен список инструментов мониторинга. Есть как минимум 80 способов, с помощью которых ваша машинка будет под контролем.



1. первый инструмент — top

Консольная команда top- удобный системный монитор, простой в использовании, с помощью которой выводится список работающих в системе процессов, информации о этих процессах. Данная команда в реальном времени сортирует их по нагрузке на процессор, инструмент предустановлен во многих системах UNIX.
читать дальше
Total votes 94: ↑82 and ↓12+70
Comments68

Нейрореволюция в головах и сёлах

Reading time8 min
Views93K
В последнее время всё чаще и чаще слышишь мнение, что сейчас происходит технологическая революция. Бытует мнение, что мир стремительно меняется.



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

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

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

Кто лишится в ближайшие лет десять работы, а у кого будут новые перспективные вакансии.
Читать дальше →
Total votes 78: ↑76 and ↓2+74
Comments124

Глубинное обучение и работа мозга: Когда наступит технологическая сингулярность

Reading time7 min
Views16K


Одной из самых обсуждаемых тем сегодня является появление искусственного интеллекта (ИИ), сравнимого с человеческим или даже еще более продвинутого. Момент, когда это должно произойти, носит название технологической сингулярности.

В этой статье мы будем сравнивать методы глубинного обучения с принципами работы нашего мозга, выясним (на основе этого источника), насколько далеки наши алгоритмы от совершенного ИИ, и попытаемся понять, когда же может наступить эта технологическая сингулярность.
Читать дальше →
Total votes 21: ↑12 and ↓9+3
Comments17

[ В закладки ] Алгоритмы и структуры данных в ядре Linux, Chromium и не только

Reading time9 min
Views86K
Многие студенты, впервые сталкиваясь с описанием какой-нибудь хитроумной штуки, вроде алгоритма Кнута – Морриса – Пратта или красно-чёрных деревьев, тут же задаются вопросами: «К чему такие сложности? И это, кроме авторов учебников, кому-нибудь нужно?». Лучший способ доказать пользу алгоритмов – это примеры из жизни. Причём, в идеале – конкретные примеры применения широко известных алгоритмов в современных, повсеместно используемых, программных продуктах.



Посмотрим, что можно обнаружить в коде ядра Linux, браузера Chromium и ещё в некоторых проектах.
Читать дальше →
Total votes 158: ↑149 and ↓9+140
Comments15

Хочу быть предпринимателем: 8 хороших шансов для старта

Reading time2 min
Views8.7K
image

На какие деньги развивать проект? Как выйти на международный рынок? Где стажироваться? Для любого начинающего предпринимателя это крайне животрепещущие вопросы. Если вы планируете создать свой собственный проект, перед вами открыты действительно безграничные возможности. Ниже описаны самые интересные из них.
Читать дальше →
Total votes 13: ↑9 and ↓4+5
Comments1

Удачная модель ветвления для Git

Reading time10 min
Views978K
Перевод статьи Vincent Driessen: A successful Git branching model

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



В качестве инструмента управления версиями всего исходного кода она использует Git.

Читать дальше →
Total votes 180: ↑171 and ↓9+162
Comments105

Facebook обнародовал данные о своем сервере искусственного интеллекта

Reading time2 min
Views11K
image
Новый сервер Facebook

В конце прошлой недели представители Facebook заявили о том, что специалисты компании создали устройство, воплотившее идею искусственного интеллекта, основанного на принципе глубокого обучения. Предполагается, что разработка может быть задействована в нескольких приложениях Facebook, сообщает venturebeat.com. Любой желающий может ознакомиться с дизайном изобретения в Open Compute Project.

Серверы с кодовым названием Big Sur оснащены графическими процессорами (GPU), выполняющими функцию главных компонентов в рамках алгоритма глубокого обучения. Метод предполагает формирование искусственных нейросетей на основе больших объемов информации — например, фотографий – которые впоследствии помогают проанализировать новые данные. Facebook вкладывает все больше средств и сил в развитие данной сферы, так почему бы компании не задуматься о создании соответствующего пользовательского оборудования, как это было с серверами общего назначения, виртуальными хранилищами и сетевым оборудованием. Более того, поделиться дизайном разработки не менее удачная идея.
Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments2

Слепая 37-летняя женщина с расщеплением личности начинала видеть, когда становилась подростком

Reading time4 min
Views60K
С момента, когда героиня этой истории (назовём её инициалы — Б.Т.) в последний раз что-то видела, прошло более десяти лет. После травмы врачи диагностировали у молодой женщины кортикальную слепоту — она возникает из-за поражения затылочной доли мозга, которое мешает мозгу правильно принимать или интерпретировать сигналы, поступившие по зрительному нерву. Поэтому Б.Т. начала ходить везде с собакой-поводырём.

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

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

image
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments90

История зрения или миф о «нечленимой сложности»

Reading time12 min
Views46K
Факты не перестают существовать
оттого, что ими пренебрегают.

Олдос Хаксли

Попытаюсь развеять «миф о нечленимой сложности» на примере глаза. Его часто любят приводить в пример креационисты.

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

Я далёк от биологии, но ответ на этот вопрос могу попробовать дать, поскольку это не так сложно, как кажется, и потому, что «ничто в биологии не имеет смысла, кроме как в свете эволюции», как сказал Ф.Г. Добржанский. Только с этой позиции «необъяснимое», на первый взгляд, биологическое явление становится простым и логичным.

Вопреки мнению многих людей, наши организмы — далеко не идеал совершенства, они имеют множество недостатков. У нашего вида, например, сложное строение ступни (хотя мы давно не живём на деревьях), от которого мы получаем кучу травм; икота, доставшаяся нам от наших предков — рыб и амфибий, возвратный гортанный нерв, огибающий дугу аорты и возвращающийся назад (у жирафа он достигает длины 4 метров вместо нескольких сантиметров — я бы выгнал такого конструктора). У мужчин семенные канатики также делают петлю, огибая мочеточники. Ну и много других забавных вещей.

Отрывок из книги «Самое грандиозное шоу на Земле»
Глаз позвоночного в своем лучшем случае, скажем у ястреба или человека, это превосходный точный инструмент, способный на чудеса высокого разрешения, конкурирующий с лучшими приборами от Цейсса и Никона. Будь это не так, Цейсс и Никон напрасно бы тратили время, производя фотографии высокого разрешения для наших глаз. С другой стороны, Германн фон Гельмгольц, великий германский ученый 19 века (вы можете назвать его физиком, но его вклад в биологию и психологию еще больше), сказал о глазе:

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

Одна из причин, по которым глаз кажется лучше, чем его оценил физик Гельмгольц, в том, что позже мозг выполняет удивительную работу по улучшению изображения, как ультра-сложный автоматический фотошоп. Что касается оптики, человеческий глаз достигает качества Цейсса/Никона только в фовеальной области — центральной части сетчатки, которую мы используем для чтения. Когда мы сканируем сцену, мы передвигаем фовеальную область в разные части изображения, видя каждую в максимальной четкости и деталях, и мозговой «фотошоп» обманывает нас, заставляя думать, что мы видим всю сцену в одном и том же качестве детализации. Высококачественные Цейссы и Никоны между тем на самом деле отражают всю сцену с почти одинаковой четкостью.

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

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

Но теперь представьте, что я скажу вам, что фотоэлементы глаза направлены назад, в обратную сторону от сцены, на которую смотрят. «Провода» соединяющие светочувствительные клетки с мозгом идут через всю поверхность сетчатки, так что световые лучи должны пройти через ковер собравшихся проводков перед тем, как попасть на светочувствительные клетки. Это неразумно, но все и того хуже. Одно из последствий того, что светочувствительные клетки направлены назад — то, что провода, передающие данные от них, должны как-то пройти через сетчатку назад к мозгу. В глазу позвоночного они собираются к особому отверстию в сетчатке, где ныряют сквозь нее. Отверстие, заполненное нервами, называется слепым пятном, поскольку оно не видит, но «пятно» — это слишком мягко сказано, поскольку оно весьма велико, скорее, как слепая область, что тем не менее не является слишком большим неудобством для нас благодаря «автоматическому фотошопу» мозга. И снова, верните его [инструмент] назад, он не просто плохо спроектирован, это дизайн полного идиота.

Или нет? Будь это так, глаз бы ужасно видел, но это не так. Он, в действительности, очень хорош. Он хорош потому, что естественный отбор, как чистильщик работая над бесчисленным множеством мелких деталей, прошелся после большой исходной ошибки установки сетчатки задом наперед и спас высококачественный точный инструмент. Это напоминает мне сагу о телескопе Хаббла. Вы помните, он был запущен в 1990 году и, обнаружилось, что он имеет крупный дефект. Из-за незамеченной ошибки в калибровке аппарата, когда его полировали на земле, основное зеркало хотя и немного, но [функционально-] значимо отклонялось от нужной формы. Дефект обнаружился после того, как телескоп был запущен на орбиту. Решение было смело и изобретательно. Астронавты, доставленные на телескоп, успешно смонтировали на нем нечто вроде очков. После этого телескоп заработал очень хорошо, и три последующих сервисных миссии обеспечили дальнейшее улучшение. Я хочу сказать, что даже крупный дефект конструкции, грубая ошибка может быть скорректирована последующей починкой, искусность и тонкость которой при соответствующих обстоятельствах совершенно компенсируют исходную ошибку. В эволюции в основном крупные мутации, даже если они могут привести к улучшению в правильном направлении, почти всегда требуют много дальнейших поправок, операций по зачистке множеством мелких мутаций, возникающих позднее и получающих преимущество при отборе, поскольку сглаживают острые кромки, оставленные исходной крупной мутацией. Вот почему люди и ястребы видят так хорошо, несмотря на грубую ошибку в их исходной конструкции. Снова Гельмгольц:

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

Каждый организм — и результат и, одновременно, жертва своей собственной истории. На каждом шаге эволюции отбор обеспечивает решение актуальных задач, без учёта перспективы. Заглядывать в будущие перспективы развития в эволюции просто некому (кроме «Создателей» из сказок, нарушающих принцип причинности – один из основных постулатов науки). Главный механизм эволюции — преимущественное выживание и оставление потомства существами, более приспособленными к тому образу жизни, который они ведут в данный момент, в той динамично изменяющейся среде, которая их окружает. Конечно, выживание, помноженное на отрезки времени, слабо понимаемые неискушённым разумом. В каждый следующий момент приспособления, которые были достигнуты на предыдущем этапе, могут оказаться морально безнадёжно устаревшими и стать «ископаемыми» генами.
Исследовать
Total votes 64: ↑62 and ↓2+60
Comments351

R + C + CUDA =…

Reading time4 min
Views13K
Иногда возникает необходимость ускорить вычисления, причем желательно сразу в разы. При этом приходится отказываться от удобных, но медленных инструментов и прибегать к чему-то более низкоуровневому и быстрому. R имеет довольно развитые возможности для работы с динамическими бибиотеками, написанными на С/С++, Fortran или даже Java. Я по привычке предпочитаю С/С++.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments3

Практическое применение преобразования Фурье для анализа сигналов. Введение для начинающих

Reading time9 min
Views278K

1. Преобразование Фурье и спектр сигнала


Во многих случаях задача получения (вычисления) спектра сигнала выглядит следующим образом. Имеется АЦП, который с частотой дискретизации Fd преобразует непрерывный сигнал, поступающий на его вход в течение времени Т, в цифровые отсчеты — N штук. Далее массив отсчетов подается в некую программку, которая выдает N/2 каких-то числовых значений (программист, который утянул из инета написал программку, уверяет, что она делает преобразование Фурье).

Чтобы проверить, правильно ли работает программа, сформируем массив отсчетов как сумму двух синусоид sin(10*2*pi*x)+0,5*sin(5*2*pi*x) и подсунем программке. Программа нарисовала следующее:

image
рис.1 График временной функции сигнала

image
рис.2 График спектра сигнала

На графике спектра имеется две палки (гармоники) 5 Гц с амплитудой 0.5 В и 10 Гц — с амплитудой 1 В, все как в формуле исходного сигнала. Все отлично, программист молодец! Программа работает правильно.

Это значит, что если мы подадим на вход АЦП реальный сигнал из смеси двух синусоид, то мы получим аналогичный спектр, состоящий из двух гармоник.

Итого, наш реальный измеренный сигнал, длительностью 5 сек, оцифрованный АЦП, то есть представленный дискретными отсчетами, имеет дискретный непериодический спектр.
С математической точки зрения — сколько ошибок в этой фразе?

Теперь начальство решило мы решили, что 5 секунд — это слишком долго, давай измерять сигнал за 0.5 сек.
Читать дальше →
Total votes 51: ↑46 and ↓5+41
Comments81

10 главных ошибок масштабирования систем

Reading time7 min
Views52K
Мартин Л. Эббот и Майкл Т. Фишер, авторы книги «Искусство масштабируемости», перечисляют наиболее распространенные архитектурные, организационные и технологические проблемы масштабировании в product-группах. Список был сформирован на основе их опыта, а также в ходе коммуникаций с клиентами и лег в основу первой книги.

Архитектурные ошибки



Читать дальше →
Total votes 53: ↑45 and ↓8+37
Comments33

Perspex — кросплатформенный UI-фреймворк с XAML и биндингами

Reading time2 min
Views27K
TL;DR: кроссплатформенный клон WPF. От других попыток сделать нечто с XAML-ом выгодно отличается наличием полностью своей системы отрисовки со сменными бакэндами (сейчас поддерживается Direct2D и Cairo). В наличии инспектор, дизайнер (см. видео). Биндинги сделаны на стероидах под названием ReactiveExtensions (старый стиль тоже можно использовать). Умеет работать с Windows/Linux/MacOS, поддержку мобильных платформ планируется добавить в начале следующего года посредством отрисовки через MonoGame.


Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments17

40 ключевых концепций информационных технологий доступно и понятно

Reading time16 min
Views159K
Представляю вашему вниманию перевод очень ёмкой, и в то же время достаточно краткой (для такого масштаба проблемы) статьи Карла Чео. Я решил, что очень хочу сделать её перевод практически сразу, как только начал читать, и очень рад, что в итоге сделал это.
Для того, чтобы сделать обучение более веселым и интересным, представляю вам перечень важных теорий и концепций информатики, объяснённых с помощью аналогий с минимальным количеством технических деталей. Это будет похоже на очень быстрый курс информатики для всех с целью просто дать вам общее представление об основных концепциях.

Важные замечания:
  • Пункты с неуказанным источником написаны мной самостоятельно. Поправьте меня, если вы заметите какие-то неточности. Предложите лучшую аналогию, если это возможно.
  • Заголовки ссылаются на соответствующие им статьи в Wikipedia. Пожалуйста, читайте эти статьи для более серьезных и детальных объяснений.
  • Аналогии — отличный способ объяснить материал, но они не идеальны. Если вы хотите по-настоящему понять перечисленные концепции, вам следует начать с фундаментальных азов и рассуждать, исходя из них.

Также зацените эту инфографику (вариант на русском), если вы просто начинающий программист.
Читать дальше →
Total votes 104: ↑96 and ↓8+88
Comments37

Использование handle и intrusive reference counter-ов в многопоточных средах в языке C

Reading time8 min
Views12K
Доступ к одим и тем же данным в нескольких потоках считается плохой практикой, но во многих случаях это неизбежно, и это не тот вопрос, который обсуждается здесь. Вопрос который здесь обсуждается, это как организовать такой доступ наиболее безопасным способом. Также тут не обсуждаются атомарные операции, которые тут упоминаются: разные компиляторы предлагают различные средства для таких операций.

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

Это может быть сделано несколькими способами, но мы будем говорить только о двух из них: хэндлы (handles) и встроенные счётчики ссылок (intrusive reference counters).
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments24

Микросервисы без серверов (облачный вариант)

Reading time20 min
Views23K
Здравствуйте, дорогие читатели!

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

Много Java, JavaScript, схем, рассуждений и очень много текста
Читать дальше →
Total votes 17: ↑11 and ↓6+5
Comments8

Погружение в пучину интерпретатора Python. Ч1

Reading time7 min
Views57K


От переводчика: Наверно всем интересно, что внутри у инструмента, который используешь, этот интерес овладел и мной, но главное не утопать в нём и не закопаться так что не вылезти. Найдя для себя интересный материал, я решил заботливо перевести его и представить хабросообществу (моя первая публикация, прошу ногами сильно не пинать). Тем, кому интересен как Python работает на самом деле, прошу проследовать под кат.
Читать дальше →
Total votes 37: ↑32 and ↓5+27
Comments3

Information

Rating
Does not participate
Registered
Activity