Pull to refresh
57
0

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

Send message

Запросить 100 серверов нельзя оптимизировать код. Ставим запятую

Reading time7 min
Views6.5K

Можно выделить ряд алгоритмов, которые являются базовыми и лежат в основе практически каждой строчки программ, написанных на языках высокого уровня. Хорошо иметь под руками классический многотомный труд Дональда Кнута "The Art of Computer Programming", там детально разобраны многие базовые алгоритмы. Но прочесть и усвоить все — задача, требующая много усилий и времени, которая должна как-то быть мотивирована.


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


Далее разберем нюансы на примере функций сортировки. Сортировка и поиск используются максимально часто во всех манипуляциях с данными. Экономия нескольких миллисекунд на операции может приводить к суммарному сокращению часов расчета на значительных данных.


Является продолжением серии предыдущих публикаций.

Читать дальше →
Total votes 38: ↑37 and ↓1+50
Comments2

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

Reading time12 min
Views27K
Реакция мира на новый коронавирус в 2020 году и идущая с разным успехом в разных странах прививочная кампания от него него в 2021, обнажили и обострили множество слабых мест экономики и социальных проблем. Фактически, многие аспекты социального (коллективного) бытия сейчас переживают стресс-тест, подобного которому не было с начавшейся в 1929 году Великой депрессии.

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

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



Однако в коллективном восприятии отпечаталась, почему-то, вывернутая наизнанку картинка: антибиотики среди людей очень, чрезмерно популярны. Врачи в один голос говорят о важности основных прививок и предупреждают об опасностях злоупотребления антибиотиками — однако в народе процветает антиваксерство, а антибиотики в аптеках сметают с полок как витаминки.
Как в массовой культуре перепутались опасности вакцин и антибиотиков
Total votes 100: ↑60 and ↓40+37
Comments877

Странные управленческие решения внутри хостинга

Reading time9 min
Views35K
Звонит как-то вендор и говорит, что в возврате бракованного железа — не их жёсткий диск.


Это местный вендор. Для прода мы покупаем серверное железо у крупных поставщиков, часто возим его в разные страны из одного центра. Но для тестовых новых конфигураций обращаемся к локальным поставщикам, берём железо на тесты или разовые проекты. Один из жёстких дисков оказался бракованным, и мы вернули его назад поставщику по гарантии. Причём знатно ругаясь, что связались с маленькой компанией, что задержало нам график тестов.

Гарантийный отдел ковыряется с диском, а потом звонят:

— А зачем вы подменили диск?

Мы такие:

— В смысле подменили?

— Мы вам продавали другой. А тут корпус тот, а внутри — другой. Какие-то следы от отвёртки.

Дичь полнейшая! Мы начали было ругаться, но потом стали разбираться. Начали смотреть на камеры и увидели, что наш сотрудник очень подозрительно себя вёл, когда работал с этим диском в стойке. Как в плохих комедиях про жуликов: постоянно осматривался по сторонам, отходил в сторону, возвращался. Оказалось, что он подменил диск. Честно, я не знаю зачем. Его финансовая выгода минимальная, скорее всего, даже не окупает время работы по замене корпуса.

У нас было ещё несколько странных ситуаций, и сейчас я о них расскажу.
Узнать подробности
Total votes 106: ↑103 and ↓3+142
Comments115

Самодельный миниатюрный лазерный гравер на Arduino Uno

Reading time4 min
Views36K

Полагаю, что проект, о котором я хочу рассказать, будет интересен всем, кто занимается электроникой. А именно, речь идёт о миниатюрном лазерном гравере, с помощью которого можно наносить изображения на картон, на дерево, на виниловые наклейки и на прочие подобные материалы. Идею проекта я почерпнул из этого руководства, сделав кое-что по-своему.
Как сделать гравер?
Total votes 41: ↑38 and ↓3+42
Comments21

Сборка ядра Linux с LTO оптимизацией

Reading time25 min
Views31K


Технический прогресс не стоит на месте, появляются новые компьютерные архитектуры, компиляторы становятся умнее и генерируют более быстрый машинный код. Современные задачи требуют все более креативного и эффективного решения. В данной статье пойдет речь, на мой взгляд, про один из самых прогрессивных тулчейнов LLVM и компиляторы на его основе Clang и Clang++, для языков программирования С и C++ соответственно. Хоть GCC — конкурент Clang, может агрессивнее оптимизировать циклы и рекурсию, Clang дает на выходе более корректный машинный код, и чаще всего не ломает поведение приложений. Плюс оптимизация программ не заканчивается только оптимизацией циклов, поэтому Clang местами дает лучшую производительность. В GCC же за счет переоптимизации вероятность получить unpredictable behavior значительно выше. По этой причине на многих ресурсах не рекомендуют использовать -O3 и LTO(Link Time Optimization) оптимизации для сборки программ. Плюс в случае агрессивной оптимизации, размер исполняемых файлов может сильно увеличиться и программы на практике будут работать даже медленнее. Поэтому мы остановились на Clang не просто так и опции компиляции -O3 и LTO работают в нем более корректно. Плюс современные компиляторы более зрелые, и сейчас уже нет тех детских болячек переоптимизации и LTO.
Узнать подробности
Total votes 59: ↑48 and ↓11+59
Comments55

Можно ли сделать деревянный стеллаж без инструмента используя только отвертку и 3D-принтер? Легко!.

Reading time4 min
Views33K


Приветствую! Я хочу поделиться с вами очередной своей разработкой, которая позволяет сделать надежную, крепкую мебель и при этом без необходимости иметь инструмент, пылить в доме/квартире и собрать её буквально за один день. Эта статья для аудитории Хабра, которая любит DIY и получает удовольствие от процесса создания вещей своими руками. Осторожно, в статье много изображений и фотографий.
Читать дальше →
Total votes 71: ↑65 and ↓6+86
Comments110

Как я программировал шахматную партию против брата

Reading time12 min
Views19K


Это история о том, как я попытался выиграть у брата партию в шахматы. Всего лишь гребаную одну игру. Что в этом особенного? Хорош ли я в шахматах? Вовсе нет. Научился ли я чему-то в процессе игры? Тоже нет. Может, это история о путешествии ради путешествия, а не цели? Не совсем. Получил ли я хотя бы удовольствие от этого? Не уверен.

Это история о моей попытке соригинальничать в одной из самых изученных в мире игр, используя опыт разработки ПО там, где это, быть может, и не нужно.
Читать дальше →
Total votes 50: ↑45 and ↓5+57
Comments34

Как я ускорил движок на 13%

Reading time6 min
Views8.1K

Недавняя статья о важности использования линейных алгоритмов вдохновила меня на оптимизацию «горячей» квадратической функции, о том как я это сделал, и к каким результатам это привело — я сегодня расскажу. Завари в чашке Пу Эр, откинься на спинку кресла:
Начинаем
Total votes 47: ↑30 and ↓17+29
Comments28

Стриминг видео с помощью Akka Streams

Reading time10 min
Views5K
Автор статьи, перевод которой мы сегодня публикуем, говорит, что стриминг видео не должен быть такой задачей, с которой у кого-либо возникают сложности. Всё дело — в правильном подборе инструментов, среди которых можно отметить пакет Akka Streams. Использование этого пакета позволяет эффективно разрабатывать приложения для потоковой передачи видео.



Правда, не следует думать, что то, о чём мы будем тут говорить, подобно простому примеру, вроде println(«Hello world»), в котором используется система акторов Akka. Сегодня вы узнаете о том, как создать свой первый сервис для потоковой передачи видео (прошу прощения, если моё предположение неверно, и у вас это уже не первый такой проект). В частности, тут будут использованы пакеты Akka HTTP и Akka Streams, с помощью которых мы создадим REST API, который обладает способностями стриминга видеофайлов в формате MP4. При этом устроен этот API будет так, чтобы то, что он выдаёт, соответствовало бы ожиданиям HTML5-тега <video>. Кроме того, тут я скажу несколько слов о наборе инструментов Akka в целом, и о некоторых его компонентах, вроде Akka Streams. Это даст вам определённый объём теории, которая пригодится вам в работе. Но, прежде чем мы приступим к делу, хочу задать один вопрос.
Читать дальше →
Total votes 33: ↑29 and ↓4+34
Comments6

CSS, JavaScript и блокировка парсинга веб-страниц

Reading time5 min
Views16K
Недавно мне попался материал, посвящённый проблеме загрузки CSS-файлов, которая замедляет обработку материалов страниц. Я читал ту статью, стремясь научиться чему-то новому, но мне показалось, что то, о чём там говорилось, не вполне соответствует истине. Поэтому я провёл собственное исследование этой темы и поэкспериментировал с загрузкой CSS и JavaScript.


Читать дальше →
Total votes 29: ↑26 and ↓3+33
Comments9

Рунет родился из космической гонки — и без новой космической гонки Рунет ждёт упадок

Reading time25 min
Views26K

Каким образом в нулевые в России случился бум IT? Дело вовсе не в высоких ценах на нефть. Если посмотреть на биографии и возраст лидеров движения — это сплошь математики и физики, получившие, очевидно, очень фундаментальное образование в СССР 70-80-х. И конвертировали это в «Яндекс» и далее по списку. Ну и остальные кадры оттуда же. Если в стране был такой сильный физмат, то это показатель качества образования в целом. Космическая гонка, опять же. В общем, условно, последние 20 лет СССР обеспечили первые 20 лет Рунета. Вопрос: что дальше? Советское образование кончилось 30 лет назад. Рунета не было бы, не будь этих 20-30 лет бума советского образования. Откуда бы отцы Рунета пришли тогда? Так вот, последние 30 лет — это 30 лет без бума советского образования. И кадровый голод, по-моему, уже начинается.
В России еще остается небольшое количество научных школ, работает несколько сильных университетов, есть институты, имеющие научный авторитет в мире. Тем не менее, если текущая ситуация продлится еще лет 5–10, научная база в стране будет уничтожена настолько, что создавать ее придется практически с нуля, приглашая зарубежных специалистов, в том числе и опытных менеджеров, работающих в сфере науки. (Какое будущее ждет российскую науку)
Узнать историю
Total votes 104: ↑72 and ↓32+66
Comments319

SB181: логический вычислитель на базе АЛУ 74LS181

Reading time4 min
Views4.8K


Уже какое-то время в моей мастерской дожидаются своего проекта пара микросхем АЛУ 74LS181. Но так как мысль о создании на их базе целого процессора была несколько пугающей, я решил задействовать эти чипы в роли «логического вычислителя»: своеобразного 8-битного калькулятора, который получает шестнадцатеричные входные данные и отображает результаты различных логических операций в двоичном и hex-форматах. Будучи собранным исключительно на базе логики микросхем 74-й серии без какого-либо микроконтроллера или ЦПУ, такое устройство оказывается удобным помощником в 8-битном программировании.
Читать дальше →
Total votes 38: ↑36 and ↓2+50
Comments23

Психотронная тюрьма риторики: история о том, что мешает нам мыслить здраво

Reading time13 min
Views71K

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

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

Что же, ответ у меня есть. Я считаю, что этос — это бич мыслящего человека. Кайрос — кандалы, который выковал информационный век. А понимание того, как работает риторика — базовый инструмент критического мышления. Особенно для IT-специалиста.

Я так много рассказывал об этом на кухнях и в чатах, что решил написать статью. А получился лонгрид с научными исследованиями, разбором влияния алгоритмических новостных лент, и безумным комиксом из мемов, который я делал 4 часа в Фигме. Поехали!

UPD Большое спасибо всем тем людям, что помогли мне исправить ошибки и очепятки! Только на Хабре так стремятся помочь, и это неоценимо.
Читать дальше →
Total votes 148: ↑135 and ↓13+169
Comments353

Создание часов из обычных микросхем на макетной плате

Reading time4 min
Views17K
В этом материале речь пойдёт о том, как собрать часы из обычных микросхем.

Схема часов (оригинал)
Как собрать часы?
Total votes 49: ↑41 and ↓8+52
Comments23

Жадные до свинца: как оружейники изобретают идеальный магазин

Reading time12 min
Views49K
За годы исследований военные инженеры придумали массу странных, вычурных и просто безумных конструкций. Проследим за их работой с 17 века и до наших дней.

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

Ленточная подача патронов на примере старого американского пулемета Browning 1917. Анимация целиком
Would you like to know more?
Total votes 168: ↑158 and ↓10+205
Comments83

Дамп прошивки беспроводной Logitech K360 с помощью GreatFET

Reading time6 min
Views8.9K


Недавно чисто ради спортивного интереса я решил хакнуть клавиатуру, и в качестве первой подопытной выбрал самую дешевую беспроводную модель Logitech K360. Она уже несколько устарела, а ее основная микросхема также, как и используемый протокол беспроводной связи, ранее подробно разбирались. Можете посмотреть презентацию Mousejack Марка Ньюлина, почитать работу Трэвиса Гудспида по сниффингу nRF24, а также ознакомиться с упоминаемой в этих материалах разработкой KeyKeriki.

Я же занялся всем этим больше в качестве тренировки нежели нового исследования и никак не знал, что в итоге обнаружу. Тем не менее мне показалось, что подобная затея станет интересным небольшим примером извлечения из встроенной флэш-памяти голой прошивки.
Читать дальше →
Total votes 45: ↑41 and ↓4+60
Comments5

Мото AGM аккумулятор: ввод в эксплуатацию

Reading time7 min
Views21K

Привет, Хабр! Сегодня мы введём в эксплуатацию сухозаряженный мотоциклетный AGM аккумулятор. Данное руководство можно использовать и для обычных сухозаряженных кальциевых АКБ с жидким электролитом.

Заодно обсудим, чем отличаются разные типы свинцовых аккумуляторов, и как это сказывается на их применении. Как всегда, будут видео и показания приборов.
Узнать подробности
Total votes 40: ↑37 and ↓3+55
Comments4

Будущее веба: станет ли рендеринг в <canvas> заменой DOM?

Reading time7 min
Views26K
В последнее время было немало горестных рассуждений о последствиях решения Google использовать HTML-элемент <canvas> для рендеринга всего, что видно на экране при работе с Google Docs. И то, что это многих беспокоит, вполне понятно. Когда-то веб был задуман как система для работы с тщательно структурированной информацией, полной осмысленных метаданных и рассчитанной на совместное её использование многими людьми. Но, вместо этого, тот веб, который мы видим сегодня, представляет собой довольно сложно и запутанно устроенные приложения, которые работают в браузерных «песочницах».


Решение Google, которое заключается в том, чтобы перейти от вывода на страницы HTML-элементов к рисованию пикселей на <canvas>, нельзя назвать чем-то таким, чего раньше никто не видел и не пробовал. Другие передовые веб-приложения уже вышли далеко за пределы традиционных схем работы с HTML-элементами. Так, в Google Maps вывод данных на <canvas> используется уже многие годы. В VS Code для отрисовки идеального интерфейса терминала тоже используется <canvas>. А в подающем надежды наборе инструментов Google Flutter, который позволяет создавать кросс-платформенные интерфейсы, в веб-браузере, по умолчанию, используется рендеринг с использованием <canvas>.

Но в этот раз происходящее вызывает несколько иные ощущения. А именно, появляется такое чувство, что рендеринг в <canvas> и другие современные технологии, вроде WebAssembly, увели нас за точку невозврата. Все привыкли к схеме работы, когда страница загружает, в виде обычного текста, JavaScript-код, который выполняется, взаимодействуя с HTML-элементами, видимыми в «инструментах разработчика». Сейчас возникает такое впечатление, что это — лишь небольшой этап на пути постоянно развивающихся технологий веб-разработки.
Читать дальше →
Total votes 57: ↑55 and ↓2+70
Comments103

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

Reading time5 min
Views4.1K
Недавно закончился наш слегка безумный спецпроект с роялем, падающим на танцующего котика. Пять суток подряд мы показывали с трёх камер висящий рояль и его клавиши с помощью сервиса потоковых трансляций Facecast и устройств Evacoder One. Хотим рассказать вам, как это всё было организовано, и поделиться своими впечатлениями. 
Узнать подробности
Total votes 35: ↑32 and ↓3+42
Comments7

Плавка металлов за 9 минут в микроволновке и другие интересные штуки: обзор ТОП7 самоделок + еще одна

Reading time10 min
Views49K

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

Однако, многие даже не догадываются, что их обычный бытовой аппарат — способен на гораздо большие «подвиги», чем принято считать. Вот об этом мы и поговорим ниже.
На что способна обычная микроволновка?
Total votes 66: ↑54 and ↓12+66
Comments26

Information

Rating
Does not participate
Location
Россия
Works in
Registered
Activity