Pull to refresh
25
0
Илья Сидоров @Lol4t0

User

Send message

DLNA-сервер для дома и семьи

Reading time 7 min
Views 852K
Как-то так сложилось, что тег DLNA сервер чаще встречается в постах-вопросах, чем в ответах. И если в вопросах установки на домашний Windows-ПК какой-то пользовательский опыт накоплен, то определиться с выбором ПО для домашнего сервера/NAS-а/медиацентра — оказалось непросто. Распределившись по песочницам народ обособленно решает проблемы каждой программы в отдельности. А понять что из них чего стоит и нужно ли оно вообще — лично мне не удалось.

И вот, я вооружившись ссылкой с Википедии Как выбрать DLNA-сервер под Windows, Mac OS X или Linux — опробовал почти всё, что есть под Linux.

Читать дальше →
Total votes 70: ↑66 and ↓4 +62
Comments 65

Как отлаживать bash-script-ы по шагам или, возможно, самая короткая статья о программировании/отладке на Хабре

Reading time 1 min
Views 41K

Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.

Читать далее
Total votes 190: ↑189 and ↓1 +188
Comments 37

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

Reading time 12 min
Views 16K
Если из челюсти вынуть зубы, то кость для их крепления уже не понадобится. Она начнёт «уходить», то есть пойдёт резорбция, в результате которой костной ткани станет сильно меньше. Если вы захотите поставить туда имплант, то он просто не будет покрыт костью весь. Нужно будет либо выбирать модель поменьше, либо наращивать кость.

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

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


Видны следы от прошлой неудачной операции

Внимание! Ниже будут фотографии ротовой полости, в том числе с кровью. Если это может шокировать вас, то будьте осторожны!
Читать дальше →
Total votes 42: ↑39 and ↓3 +36
Comments 16

Яндекс выложил в опенсорс YDB

Reading time 16 min
Views 139K
Сегодня мы выложили в опенсорс систему управления базами данных YDB — плод многолетнего опыта Яндекса в разработке систем хранения и обработки данных. Исходный код, документация, SDK и все инструменты для работы с базой опубликованы на GitHub под лицензией Apache 2.0. Развернуть базу можно как на собственных, так и на сторонних серверах — в том числе в любых облачных сервисах.



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

В посте я расскажу об истории развития технологий баз данных, о том, зачем использовать YDB, как её применяют текущие пользователи и какие плюсы для всех несёт выход в опенсорс. А во второй половине поста поговорим о разных вариантах развёртывания.
Читать дальше →
Total votes 335: ↑332 and ↓3 +329
Comments 135

Первый опыт печати металлом волноводного фильтра Ka-диапазона на 3D принтере

Reading time 7 min
Views 9.2K

Волноводный полосовой фильтр 26,2-28,8 ГГц на объемных резонаторах, изготовленный методом селективного лазерного плавления порошка из нержавеющей стали.

На фотографии представлен волноводный СВЧ-фильтр Ka-диапазона, изготовленный из деталей, напечатанных на 3D принтере (слева - фильтр, справа - напечатанная деталь). Материал фильтра - нержавеющая сталь, внешняя часть покрыта серебром. Размер волноводных портов совместим со стандартом WR28 (7,12x3,56 mm).

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

Nginx. О чем не пишут в книгах

Reading time 9 min
Views 45K

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

Надо же, на полках нашлось целых три книги - не полистать их было бы преступлением. Первая, вторая, третья... Ощущение, будто что-то не так. Ну вроде страниц много, текст связный, но каково содержание? Установка nginx, список переменных и модулей, а дальше docker, ansible. Открываем вторую: wget, лимиты запросов и памяти, балансировка, kubernetes, AWS. Третья: GeoIP, авторизация, потоковое вещание, puppet, Azure. Ребята, а где про то, как вообще работает nginx? На кого рассчитаны ваши книги? На состоявшегося админа, который и так знает архитектуру этого веб-сервера? Да он вроде с базовыми настройками и сам справится. На новичка, который не знает как пользоваться wget? Вы уверены, что ему знание о существовании ngx_http_degradation_module и тем паче "облака" важнее порядка прохождения запроса?

Итак. О чем не пишут в книгах.
(здесь и дальше мы говорим только о NGX_HTTP_)

Фазы обработки запроса
Total votes 86: ↑86 and ↓0 +86
Comments 11

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

Reading time 5 min
Views 246K


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

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

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

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

Устройство поисковых систем: базовый поиск и инвертированный индекс

Reading time 24 min
Views 24K

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

В статье описано устройство поиска, инвертированного индекса и его оптимизаций с отсылками к теории. В качестве подопытного кролика взят Tantivy — реализация архитектуры Lucene на Rust. Статья получилась концентрированной, математикосодержащей и несовместимой с расслабленным чтением хабра за чашкой кофе, осторожно!
Читать дальше →
Total votes 37: ↑37 and ↓0 +37
Comments 6

Задача о свободно висящей цепочке

Reading time 3 min
Views 16K
Когда-то очень давно, когда я был еще студентом, сидя на одной скучной лекции я задумался над тем, с какой частотой может колебаться в одной плоскости свободно висящая веревка или цепочка заданной длины и какова будет при этом ее форма, если колебания будут небольшими. Я помню, что решил эту задачу, но сейчас, по прошествии многих лет, уже забыл подробности того, как я это сделал. Однако, мне стало интересно восстановить это решение максимально подробно и поделиться им со всеми, кому это было бы интересно. Что из этого получилось, читайте под катом.
Читать дальше →
Total votes 39: ↑38 and ↓1 +37
Comments 22

Архитектура отказоустойчивого планировщика задач. Доклад Яндекса

Reading time 21 min
Views 5.4K
В Яндексе десятки тысяч машин, которые постоянно нагружены под завязку разными вычислительными задачами. Бо́льшая часть этих вычислений относится к так называемой batch-нагрузке — как правило, оформленной в виде операций в парадигме MapReduce. Мы используем собственную систему YT, которая предоставляет распределённый storage и интерфейс запуска распределённых вычислений с произвольным пользовательским кодом. В докладе я рассказал о задачах, возникающих при попытке написать софт, который будет что-то планировать на кластерах из большого количества машин.

— Давайте первым делом обсудим, чем вообще занимаются вычислительные кластеры Яндекса.
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Comments 2

MVCC-7. Автоочистка

Reading time 11 min
Views 38K
Напомню, что мы начали с вопросов, связанных с изоляцией, сделали отступление про организацию данных на низком уровне, подробно поговорили о версиях строк и о том, как из версий получаются снимки данных.

Затем мы рассмотрели внутристраничную очистку (и HOT-обновления), обычную очистку, ну а сегодня посмотрим на автоматическую очистку.

Автоочистка (autovacuum)


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

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

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

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

Автоматическая очистка — как раз тот самый механизм, который позволяет запускать очистку в зависимости от активности изменений в таблицах.
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Comments 10

Просто и на C++. Основы userver — фреймворка для написания асинхронных микросервисов

Reading time 6 min
Views 36K
В Яндекс.Такси придерживаются микросервисной архитектуры. С ростом количества микросервисов мы заметили, что разработчики много времени тратят на boilerplate и типичные проблемы, при этом решения не всегда получаются оптимальные.

Мы решили сделать свой фреймворк, с C++17 и корутинами. Вот так теперь выглядит типичный код микросервиса:

Response View::Handle(Request&& request, const Dependencies& dependencies) {
  auto cluster = dependencies.pg->GetCluster();
  auto trx = cluster->Begin(storages::postgres::ClusterHostType::kMaster);

  const char* statement = "SELECT ok, baz FROM some WHERE id = $1 LIMIT 1";
  auto row = psql::Execute(trx, statement, request.id)[0];
  if (!row["ok"].As<bool>()) {
    LOG_DEBUG() << request.id << " is not OK of " << GetSomeInfoFromDb();
    return Response400();
  }

  psql::Execute(trx, queries::kUpdateRules, request.foo, request.bar);
  trx.Commit();

  return Response200{row["baz"].As<std::string>()};
}

А вот почему это крайне эффективно и быстро — мы расскажем под катом.
Читать дальше →
Total votes 53: ↑51 and ↓2 +49
Comments 57

Gonkey — инструмент тестирования микросервисов

Reading time 9 min
Views 14K

Gonkey тестирует наши микросервисы в Lamoda, и мы подумали, что он может протестировать и ваши, поэтому выложили его в open source. Если функциональность ваших сервисов реализована преимущественно через API, и используется JSON для обмена данными, то почти наверняка Gonkey подойдет и вам.


image


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

Читать дальше →
Total votes 29: ↑28 and ↓1 +27
Comments 16

TCP против UDP или будущее сетевых протоколов

Reading time 27 min
Views 169K
Перед каждым сервисом, генерирующим хотя бы 1 Мбит/сек трафика в интернете возникает вопрос: «Как? по TCP или по UDP?» В прикладных областях, в том числе и платформах доставки уже сложились предпочтения и традиции принятия подобных решений.

По идее, если бы, к примеру, однажды один ленивый разработчик не попробовал развернуть свой ML на Python (потому что только его и знал), мир скорее всего никогда не проникся бы такой любовью к презренному «супер-джава-кодерами» языку. А сегодня слабости этого языка в прошлом контексте применения безоговорочно обеспечивают ему первенство в развертывании и запуске многочисленных майнерских А/Б.

Сравнивать можно многое: ARM с Intel, iOS и Android, а Mortal Kombat с Injustice. И нарваться на космический холивар, поэтому вернемся к теме доставки огромных объемов разноформатного контента.

Десять лет назад все были абсолютно уверены, UDP — это что-то про негарантированную доставку. Если нужен надежный протокол — это TCP. И вопреки традициям в этой статье мы будем сравнивать такие, кажущиеся несравнимыми вещи, как TCP и UDP.


Осторожно, под катом 99 иллюстраций и схем и все важные.
Total votes 162: ↑159 and ↓3 +156
Comments 75

Тюним память и сетевой стек в Linux: история перевода высоконагруженных серверов на свежий дистрибутив

Reading time 10 min
Views 94K
image

До недавнего времени в Одноклассниках в качестве основного Linux-дистрибутива использовался частично обновлённый OpenSuSE 10.2. Однако, поддерживать его становилось всё труднее, поэтому с прошлого года мы перешли к активной миграции на CentOS 7. На подготовительном этапе перехода для CentOS были отработаны все внутренние процедуры, подготовлены конфиги и политики настройки (мы используем CFEngine). Поэтому сейчас во многих случаях миграция с одного дистрибутива на другой заключается в установке ОС через kickstart и развёртывании приложения с помощью системы деплоя нашей разработки — всё остальное осуществляется без участия человека. Так происходит во многих случаях, хотя и не во всех.

Но с самыми большими проблемами мы столкнулись при миграции серверов раздачи видео. На их решение у нас ушло полгода.
Читать дальше →
Total votes 110: ↑104 and ↓6 +98
Comments 73

Как мы делали БелАЗ. Часть 1 – Железо

Reading time 15 min
Views 82K


Наверное, все знают, что большие карьерные самосвалы имеют электромеханическую трансмиссию (уже с 1968 года): ДВС вращает генератор, энергия от которого приводит в движение тяговые электродвигатели в задних колесах самосвала. В интернете можно найти много обзорных статей и «тест драйвов» этих машин, но многие технические подробности обычно опускаются. Эта серия статей будет написана с изнаночной стороны, от имени разработчиков электрической трансмиссии: как мы это разрабатывали, на каких контроллерах, на каких двигателях, как отлаживали и запускали машину. Также мы готовы ответить на интересующие вопросы в комментариях. Интересно? Добро пожаловать под кат.
Читать дальше →
Total votes 213: ↑213 and ↓0 +213
Comments 256

GitHub превращается… превращается GitHub… в элегантный Windows 95

Reading time 7 min
Views 80K


В Твиттере какое-то время назад запостили шутку в честь приобретения Майкрософтом ГитХаба — страницу сайта, перестилизованную в стиле Windows 98. Я решил, что шутка слишком хороша, чтобы оставаться шуткой.

Давайте перекрасим GitHub!
Total votes 206: ↑202 and ↓4 +198
Comments 82

Поиск по большим документам в ElasticSearch

Reading time 5 min
Views 13K

Продолжаем цикл статей о том, как мы постигали ES в процессе создания Ambar. Первая статья цикла была о Хайлайтинге больших текстовых полей в ElasticSearch.


В этой статье мы расскажем о том как заставить ES работать быстро с документами более 100 Мб. Поиск в таких документах при подходе "в лоб" занимает десятки секунд. У нас получилось уменьшить это время до 6 мс.


Заинтересовавшихся просим под кат.

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

Когнитивные стимуляторы и другая психофарма: можно ли стать умнее

Reading time 14 min
Views 193K
Привет, %username%!

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

В этом посте я постараюсь дать информацию о некоторых интересных препаратах. Часть из них доступна, часть доступна только по рецепту, а часть — практически запрещена. Но, думаю, некоторые сведения из психофармакологии, представленные в этом посте, найдут своего читателя.

Spoiler: NZT ещё не изобрели, но синтезировали некоторое количество потенциально интересных штук.
Читать дальше →
Total votes 70: ↑64 and ↓6 +58
Comments 577

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity