Pull to refresh
215
14.6
Anton Fedorov @datacompboy

Программист / сисадмин (Sr. SRE)

KatWalk C2: ч2, подслушаем, подсмотрим и разнюхаем или как общаться с незнакомым железом на незнакомом языке

Level of difficulty Medium
Reading time 27 min
Views 600

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

Однако, получение данных требует постоянно висящего приложения (на C#), и надо понять что же конкретно оно делает.

Давайте разберёмся как общаться с железом и избавимся от балласта!.. Переписав на Kotlin. Почему Kotlin? Потому что я на нем никогда еще не писал.

Погружаемся
Total votes 1: ↑1 and ↓0 +1
Comments 4

Играем с KAT Walk C2. (часть 1: собственно, играем)

Level of difficulty Medium
Reading time 22 min
Views 1.4K

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

Уже несколько лет как я обзавелся VR платформой от KAT VR. Согласно её внутренней статистики, я прошел на ней около 30 километров и сделал 40к шагов. Статистика, конечно, врёт и сильно, было гораздо, гораздо больше. Однако же да, на ней я играл гораздо меньше времени чем с ней.

Впрочем, обо всём по порядку.
Total votes 13: ↑13 and ↓0 +13
Comments 4

TechArena Ireland: как готовился хакатон

Level of difficulty Medium
Reading time 11 min
Views 532

На прошлых выходных (23-24 сентября) Huawei проводил хакатон TechArena Ireland в Дублине. Несколько сотен зарегистрировались, больше сотни пришло. Организация потребовала немало времени и сил на подготовку места, рекламы, и прочего. (Я не буду перечислять в переводе всех пострадавших :) Они все упомянуты в англоязычном посте на LinkedIn и Medium.)

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

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

Создание своей эргономичной клавиатуры, ч4: делаем корпус (пришло время бутербродов)

Reading time 10 min
Views 5.4K

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

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

Читать далее
Total votes 11: ↑11 and ↓0 +11
Comments 6

Создание своей эргономичной клавиатуры, часть 3: оживляем её

Reading time 13 min
Views 14K

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

лудим, паяем, прошиваем
Total votes 27: ↑27 and ↓0 +27
Comments 33

Создание своей эргономичной клавиатуры (часть 2: определяемся с железом)

Reading time 12 min
Views 11K

Раскладку создали, теперь надо ее превратить в нечто материальное.

Мне нужна низкопрофильная клавиатура. Насколько низким должен быть профиль? Какие свичи дадут приятный тактильный отклик? Есть ли подходящие крышки? Какой процессор? Плата или навесной монтаж? И как вообще нарисовать печатную плату?

Никакой интриги
Total votes 39: ↑39 and ↓0 +39
Comments 14

Создание своей эргономичной клавиатуры (часть 1: создание раскладки)

Reading time 6 min
Views 9.8K

Всякий, кто работает за компьютером, каждый рабочий день касается клавиатуры. (И мыши, разумеется). Мы меняемся -- и предпочтения как и на что нажимать тоже меняются со временем.

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

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

Привыкание к разломанной потребовало времени -- и я всё еще не полностью адаптировался... -- в основном из-за моего навыка печати. Как я уже писал, я самоучка, и средние столбцы общие для обеих рук. Я могу нажать "y" как левой так и правой рукой, то же с другими средними кнопками -- в итоге я часто жал вместо "y" -- "t" или "n" вместо "b". Так же неприятно ткнуть в пустое место клавиатуры вместо нажатия на "7". Заметив эту проблему, я попытался найти клавиатуру у которых средние столбцы продублированы, но таких клавиатур на рынке просто нет. После изучения доступного инструментария я понял, что создание клавиатуры своей мечты гораздо проще чем я думал. А если можно -- почему бы и не попробовать? Будет весело!

Читать далее
Total votes 22: ↑22 and ↓0 +22
Comments 42

Гигиена удалённой работы или о пользе телепатии

Reading time 4 min
Views 16K

Приходилось ли вам запинаться в работе? Вот берёте таск: зафигачить красивый отсчитыватель времени "До конца супер предложения осталось всегда 2 часа". Открываете редактор… и щёлк: а как делать-то? Вроде я что-то слышал, что мы лэндинги начали на Vue делать. Или тут еще реакт?


Хорошо, когда вы в опенспейсе сидите через два стола. Всегда можно встать, и тихо спросить соседа "Напомни, мы Vue для всех теперь берём?". Хуже, если ТЛ в другом часовом поясе. Тот же вопрос — но ответ завтра. А если он закрутился, то послезавтра. И всё, вместо 1 минуты — двое суток задержки.


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

А в конце статьи -- сюрприз
Total votes 54: ↑48 and ↓6 +42
Comments 18

What to think during NALSD interview

Reading time 7 min
Views 9.1K
There are a lot of posts about what a typical coding interview at Google looks like. But, while not as widely described and discussed, there is also quite often a system design interview. For an SRE position it’s NALSD: non-abstract large system design. The key difference between SWE and SRE interviews consists in these two letters: NA.

So, what is the difference? How to be prepared for this interview? Let’s be non-abstract, and use an example. To be more non-abstract, let’s take something from the material world, such that you won’t be asked the exact same thing at the real interview (at least, not at the Google interview) :)

So, let’s design a public library system. For the paper books, like you have seen everywhere around. The whole text below was written all at once within around one hour, to roughly show you the areas that you should be able to cover / touch during the interview. Please excuse some disorder, that’s how I think (therefore I am).
Read more →
Total votes 26: ↑24 and ↓2 +22
Comments 0

О чем думать на NALSD собеседовании

Reading time 6 min
Views 12K
Я описывал ранее типичное кодинг-интервью. Помимо кодинга почти всегда есть вопрос на проектирование систем. (Large) System Design. В случае собеседований на SRE, это еще более интересный (как по мне) зверь — NALSD. Non-abstract large system design. Главное отличие между SWE и SRE именно в этих буковках “NA”.

В чем же отличие, и как подготовиться к нему? Давайте разберём на примере. В качестве примера возьмём что-то весьма материальное, что-то такое, что точно никто никогда не спросит на реальном собеседовании (в гугл) :)

Например — давайте спроектируем библиотеку. Для бумажных книг, обычную такую. Весь текст ниже был написан в один присест за примерно час, чтобы примерно показать что можно успеть, и что важно успеть. Так что уж простите за сумбурность, но я так мыслю (а значит, так существую).
Читать дальше →
Total votes 29: ↑28 and ↓1 +27
Comments 8

Как собеседует Google: чему быть, чего не миновать

Reading time 6 min
Views 74K
В последние недели участилась волна статей на хабре о том, как проводятся собеседования.

Google ищет инженеров постоянно. Как SRE, могу точно сказать, что вы нужны в наших рядах. Печеньки на мини кухнях и кофе в кофемашинах ждут вас. Всего-то нужно пройти собеседование. Это сложно, но реально — когда-то я уже описывал свою историю как соискателя, а сейчас уже в числе прочего занимаюсь и проведением собеседований. Так что сейчас я расскажу, как мы проводим собеседования с инженерами.

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

Читать дальше →
Total votes 81: ↑69 and ↓12 +57
Comments 328

Кэши для «чайников»

Reading time 12 min
Views 36K
Кэш глазами «чайника»:


Кэш – это комплексная система. Соответственно, под разными углами результат может лежать как в действительной, так и в мнимой области. Очень важно понимать разницу между тем, что мы ждем и тем, что есть на самом деле.

Давайте прокрутим полный оборот ситуаций.

Tl;dr: добавляя в архитектуру кэш важно явно осознавать, что кэш может быть средством дестабилизации системы под нагрузкой. Смотрите конец статьи.
Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Comments 33

Всё на своих местах

Reading time 3 min
Views 7.3K
TL;DR: В ближайшее время можно будет оставлять комментарии на YouTube без Google+ аккаунта.

Когда мы запускали Google+, мы хотели помочь пользователям искать, делиться и знакомиться среди всех наших продуктов так же, как это делают люди в обычной жизни. В некоторых случаях это получилось, а некоторые решения следует пересматривать. Так что, в ближайшие месяцы мы запустим несколько важных обновлений. Вот чего следует ждать:
Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Comments 12

Закон Мура для Google Compute Engine: больше мощностей за те же деньги

Reading time 3 min
Views 11K
И снова доброе утро для всех пользователей облачных продуктов!

С 18 мая 2015 вычисления и запуск продуктов в Google Compute Engine стали еще выгоднее:
  • Снижены цены на облачные инстансы (Google Compute Engine Instance):
  • Появился новый тип «вытесняемых» (preemptive) инстансов, которые можно использовать для пакетной обработки данных в течение короткого времени по очень низкой фиксированной цене.

Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Comments 0

О бедной рекурсии замолвите слово, или всё, что вы не знали и не хотите о ней знать

Reading time 8 min
Views 77K
Рекурсия: см. рекурсия.

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

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

— Как она сложена?
— Превосходно! Только рука немного торчит из чемодана.

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

  def fib(n):
    if n<0: raise Exception("fib(n) defined for n>=0")
    if n>1: return fib(n-1) + fib(n-2)
    return n

приходится городить всевозможные грязные хаки, начиная от:

  @memoized
  def fib(n):
    if n<0: raise Exception("fib(n) defined for n>=0")
    if n>1: return fib(n-1) + fib(n-2)
    return n

И заканчивая вообще:

  def fib(n):
    if n<0: raise Exception("fib(n) defined for n>=0")
    n0 = 0
    n1 = 1
    for k in range(n):
      n0, n1 = n1, n0+n1
    return n0

Читать дальше →
Total votes 55: ↑44 and ↓11 +33
Comments 63

Гугл-Цюрих глазами сибиряка-фрилансера

Reading time 19 min
Views 66K

Расскажи мне полуправду, как полуэльф полуэльфу...

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

Ни в коей мере не считая себя чем-то выдающимся (ну, разве что, пузом), решил ответить на вопросы «а как там?» и «а почему туда?» хоть и субъективно, но максимально объективно и, по возможности, информативно.
Читать дальше →
Total votes 63: ↑61 and ↓2 +59
Comments 104

Как запатчить 11 разных прошивок и не сойти с ума от разнообразия

Reading time 12 min
Views 11K
Если какая-либо операция превращается в рутину — автоматизируй её. Даже если времени потратишь больше — зато ты занимался не рутиной, а интересным делом. Именно под этой вывеской вместо того, чтобы просто запатчить новые 11 версий rtsp_streamer'а для камер от TopSee, решил нарисовать автопатчер. Идеальным языком для любых наколенных изделий я считаю питон — достаточно лаконично, достаточно жестко по читабельности (хотя я всё равно умудряюсь сделать его не читаемым). В общем, сейчас я расскажу, как с помощью палки и верёвки за один вечер научиться рисовать автопатчеры.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Comments 12

Почему рост качества вызывает рост некачества, или должна ли работать основная функция

Reading time 7 min
Views 31K
Аналоговое видео Глупо спорить с тем, что аналоговое видеонаблюдение уходит в прошлое: дешевые IP камеры дают картинку сопоставимого качества с дорогими аналоговыми. Помимо этого, IP камеры не ограничены сверху ничем, кроме производительности регистратора, тогда как аналоговые камеры требуют жесткого соответствия приёмной карты, согласования уровней сигнала передатчиков/усилителей/приемников и прочего шаманства.
Конструируя систему на базе IP камер в любой момент можно снять камеру и заменить на более качественную — если при этом сохранить IP адрес и логин-пароль, то, скорее всего, даже не придётся менять настройки приемника — просто в архив пойдёт более качественная картинка.
С другой стороны, это накладывает ограничения на регистратор — он должен быть готов работать с любым разрешением, любым битрейтом, любым кодеком и любым протоколом… Ну или по крайней мере, корректно работать с заявленным.

Шива В мире софта есть два пути — есть linux-way: это набор небольших программ, каждая из которых делает одну функцию, но очень хорошо; и есть windows-way: это огромные кухонные комбайны, которые умеют делать всё, и немного больше. Главная проблема linux-way — это отсутствие интерфейса. Чтобы получить всю пользу придётся скурить маны (или хотя бы прочитать --help), и поэкспериментировать. А так же сообразить, что и с чем можно скомбинировать и как. Главная проблема windows-way — это потеря основной функции. Очень быстро при обрастании доп.функционалом теряются тесты ключевого функционала, и со временем начинаются проблемы даже с ним. А еще при этом начинается инерция мышления: «это главная функция, она оттестирована сильнее всего, там бага быть не может, пользователь делает что-то не то».
Читать дальше →
Total votes 67: ↑64 and ↓3 +61
Comments 51

Защита подъезда методом организации разумного видеонаблюдения без консьержа

Reading time 13 min
Views 257K
Так получилось, что какой бы ни был аккуратный микрорайон, он всегда с чем-нибудь соседствует, плюс всегда есть праздношатающиеся, непраздношатающиеся и «этождети». Это если забыть про наркоманов, целенаправленных воров и разбойников. Твой дом — твоя крепость. Подъезд твоего дома — тоже твой дом. (Да, этот пункт многие не понимают, но учиться никогда не поздно). Классические методы защиты подъезда — установка укреплённых дверей; установка домофона; инсталляция консьержки; организация видеонаблюдения над входами.

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

Однако, если включить мозги и подумать, на самом деле можно весьма небольшими вложениями получить очень эффективный результат.
Читать дальше →
Total votes 298: ↑294 and ↓4 +290
Comments 314

WavPlayer — мы не ищем легких путей, мы их прокладываем

Reading time 7 min
Views 12K
Как известно, телефония предполагает передачу голоса. Для передачи голоса полная полоса 20Гц-20кГц никому не нужна, для четкого различимого и узнаваемого голоса вполне достаточно до 3.5кГц. Если быть точнее, речевая полоса частот используемая в телефонии от 300 до 3400Гц. При компрессии в общий канал, для точного выделения нужны защитные интервалы частот по краям, потому полоса пропускания — 4кГц. При оцифровке это получается 8кГц. Сейчас, в связи с развитием толщины каналов связи, те же скайпы и прочие, хвастающиеся «повышенным» качеством, используют 16кГц, а то и 32кГц, что, впрочем, реально на слух практически не отличимо при обычном разговоре (зато очень хорошо различимо при ухудшении качества канала связи, но когда это волновало маркетолухов).

Итак, практически все звуковые файлы, которые используются в телефонии, записаны с 8кГц оцифровкой. Для ускорения обработки больших потоков, применяемые методы сжатия так же просты и направлены на достойный результат при применении к желаемому — сжатию речи. Это простая оцифровка (PCM), простые дельта-кодеки (ADPCM, G711), либо хитрые кодеки (GSM 06.10). Эти форматы являются «родными» для систем телефонии — asterisk, freeswitch (и наверняка других тоже). В этих форматах данные подготавливаются для проигрывания системой людям, в эти же форматы системы могут записывать записи.

Однако сейчас всё шире web шагает по планете, и людям хочется иметь возможность прослушать записи разговоров, приветствий и др. на вебе, где «родным» форматом стал mp3…
Читать дальше →
Total votes 24: ↑22 and ↓2 +20
Comments 9
1

Information

Rating
337-th
Location
Zürich, Zürich, Швейцария
Date of birth
Registered
Activity

Specialization

Specialist
Lead