Как стать автором
Обновить
3
0

Software Engineer

Отправить сообщение

Почему для меня так важен алгоритм CORDIC

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров13K

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

Перейду сразу к делу и скажу, почему я так сильно люблю этот алгоритм, а затем займёмся изучением принципов его работы. По сути, фактические операции CORDIC весьма просты — как я уже сказал, это сдвиги и сложение — но выполняет он их путём комбинирования векторной арифметики, тригонометрии, доказательств сходимости и продуманных техник компьютерных наук. Лично я считаю, что именно это имеют ввиду, описывая его природу, как «элегантную».
Читать дальше →
Всего голосов 85: ↑85 и ↓0+111
Комментарии27

Restricted IO в Haskell

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров1.4K

В статье описывается механизм создания собственного модифицированного варианта монады IO в Haskell, с ограничениями операций ввода-вывода.

Хорошим тоном организации структуры любой программы на Haskell считается разделение кода на блоки, выполняющие IO операции ввода-вывода и блоки, полностью состоящие из чистых функций, т.е. функций, не выполняющих IO операций, а лишь принимающие на вход некоторые данные и возвращающие их в преобразованном виде. Такого рода чистые блоки по сути представляют из себя функции в математическом смысле слова, принимающие аргумент и возвращающие значение функции, и напоминают программы зари компьютерной эры, когда данные с перфокарт загружались в программу в самом начале её работы, после чего некоторое время обрабатывались, и по итогу работы программы выводила на печать итоговый результат расчётов, при этом в ходе работы программы не предполагалось никакого интерактивного взаимодействия с ней.

Чтобы добавить в программу интерактивность, но при этом максимально сохранить математическую целостность функций, применяется примерно такой подход:

Читать далее
Всего голосов 13: ↑12 и ↓1+17
Комментарии4

Подборка крутых докладов по С++ за 2023 год

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров5.9K

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

Вперёд за просвещением!
Всего голосов 12: ↑12 и ↓0+15
Комментарии3

Для размышлений и решения задач мозг не нужен – с этим справляются и простые клетки

Время на прочтение17 мин
Количество просмотров32K

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

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

Выращивание новой головы — хитрый трюк. Но биолога Майкла Левина из Университета Тафтса интригует именно хвостовая часть червя. Он изучает, в частности, как организм развивается из отдельных клеток, и его исследования заставляют его подозревать, что разум живых существ, как ни странно, находится за пределами их мозга. Например, в клетках задней части тела червя может находиться довольно развитый «интеллект». «Любой интеллект — это коллективный интеллект, потому что любая когнитивная система состоит из каких-то частей», — говорит Левин. Животное, способное пережить полную потерю головы, стало для Левина идеальным подопытным.

Читать далее
Всего голосов 70: ↑65 и ↓5+81
Комментарии45

8 невероятно крутых фильмов про хакеров

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6.2K

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

Сноуден

Фильм основан на реальных событиях. Это история о сотруднике ЦРУ, который не пожелал мириться с несправедливым устройством нашего мира. Как быть, когда путь на родину закрыт, карьера окончена и все идеалы разрушены? Эдвард Сноуден выбрал борьбу. Чем же она закончится для него лично и для всего остального мира. Ведь те сведения, которыми владеет герой, касаются практически каждого из нас.

Девушка, которая застряла в паутине

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

Пятая власть

Ещё один фильм о реальной исторической личности и событии, которое разделило мир на «до» и «после». Из постановки зритель узнает о Джулиане Ассанже. Чем знаменит этот человек? Почему за ним охотятся агенты спецслужб со всей Европы? Кино наглядно показывает, к чему может привести банальная, на первый взгляд, утечка информации. Именно после описанных в киноленте событий, человечеству стало понятно, что информация может цениться дороже всего на свете, а киберпреступления — не пустой звук, а реальная опасность, с которой мировое сообщество будет сталкиваться всё чаще и чаще.

Читать далее
Всего голосов 30: ↑6 и ↓24-18
Комментарии16

Умный дом на Home Assistant без проводов

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров18K

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

Здесь не будет мануалов по установке и конфигурации Home Assistant.

Читать далее
Всего голосов 11: ↑11 и ↓0+11
Комментарии18

LLVM: компилятор своими руками. Введение

Время на прочтение14 мин
Количество просмотров57K
Представим себе, что в один прекрасный день вам пришла в голову идея процессора собственной, ни на что не похожей архитектуры, и вам очень захотелось эту идею реализовать «в железе». К счастью, в этом нет ничего невозможного. Немного верилога, и вот ваша идея реализована. Вам уже снятся прекрасные сны про то, как Intel разорилась, Microsoft спешно переписывает Windows под вашу архитектуру, а Linux-сообщество уже написало под ваш микропроцессор свежую версию системы с весьма нескучными обоями.
Однако, для всего этого не хватает одной мелочи: компилятора!
Да, я знаю, что многие не считают наличие компилятора чем-то важным, считая, что все должны программировать строго на ассемблере. Если вы тоже так считаете, я не буду с вами спорить, просто не читайте дальше.
Если вы хотите, чтобы для вашей оригинальной архитектуры был доступен хотя бы язык С, прошу под кат.
В статье будет рассматриваться применение инфраструктуры компиляторов LLVM для построения собственных решений на её основе.
Область применения LLVM не ограничивается разработкой компиляторов для новых процессоров, инфраструктура компиляторов LLVM также может применяться для разработки компиляторов новых языков программирования, новых алгоритмов оптимизации и специфических инструментов статического анализа программного кода (поиск ошибок, сбор статистики и т.п.).
Например, вы можете использовать какой-то стандартный процессор (например, ARM) в сочетании с специализированным сопроцессором (например, матричный FPU), в этом случае вам может понадобиться модифицировать существующий компилятор для ARM так, чтобы он мог генерировать код для вашего FPU.
Также интересным применением LLVM может быть генерация исходных текстов на языке высокого уровня («перевод» с одного языка на другой). Например, можно написать генератор кода на Verilog по исходному коду на С.



КДПВ

Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Комментарии55

Наш опыт миграции PostgreSQL с AWS RDS на свою (self-hosted) инсталляцию

Время на прочтение15 мин
Количество просмотров6K

В статье рассмотрен способ безболезненной миграции базы данных PostrgeSQL c RDS-сервиса в AWS на self-hosted-инстанс с обеспечением отсутствия простоя в работе и максимальной консистентности данных.

С RDS вы получаете один или несколько экземпляров БД, с которыми можно сразу работать — писать или читать данные. При этом нет необходимости самостоятельно разбираться с установкой и изначальной конфигурацией самой БД. Согласитесь, звучит круто! Но на самом деле есть нюансы…

Читать далее
Всего голосов 18: ↑17 и ↓1+20
Комментарии11

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

Время на прочтение1 мин
Количество просмотров4.3K

Привет! Это пост-отчёт с митапа «Быстрый бэкенд», который прошёл в офисе Joom. С коллегами из Джум Лабс и Авито обсудили, как живётся с большим кластером MongoDB, как битмап-индексы помогают быстро искать по каталогам и как анализировать большие объемы Jaeger-трейсов. В этом посте — видеозаписи докладов, презентации спикеров и несколько фотографий со встречи. 

Читать далее
Всего голосов 16: ↑15 и ↓1+17
Комментарии0

Лучшие Проекты Для Начинающих Python-Разработчиков

Время на прочтение8 мин
Количество просмотров225K

Чтобы научиться ходить – надо ходить, чтобы научиться подтягиваться – надо подтягиваться, чтобы научиться решать задачи по физике – надо решать задачи по физике. Так говорил преподаватель физики в моём университете, и эта аналогия применима и к программированию.

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

Цель данного "топа" – это не создание самого оригинального портфолио и не перечисление уникальных проектов. Цель статьи разобраться в простых вещах, технологиях и темах, которые помогут развить практические навыки программирования. Поэтому не стоит ждать здесь сборку Оптимуса Прайма, программирование Звезды смерти и создание двигателя на китовом жире. Мы пройдёмся по простым, но в тоже время базовым вещам. Ведь как говорил один мой приятель: «Всё великое начинается с малого».

Читать далее
Всего голосов 26: ↑23 и ↓3+25
Комментарии43

Почему я ушла из команды Google WebAssembly

Время на прочтение6 мин
Количество просмотров14K

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

На момент присоединения к команде V8 я уже несколько лет занималась поддержкой транспилятора, преобразующего приложения .NET в эффективный JavaScript. Проект начался в одно время с Emscripten — приложением, превратившимся в стандарт и ставшим источником вдохновения для создания WebAssembly. В то время мне удалось поработать с создателем asm.js Алоном Закаем и я многому у него научилась. Благодаря этому опыту я стала подходящим кандидатом для команды WebAssembly.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+21
Комментарии10

О применении RazorPages в консольных и десктопных приложениях

Время на прочтение17 мин
Количество просмотров4K

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

Читать далее
Всего голосов 4: ↑4 и ↓0+4
Комментарии13

Хостим Bitwarden — open-source менеджер паролей

Время на прочтение5 мин
Количество просмотров75K


Менеджеры паролей действительно полезны и важны как для отдельных пользователей, так и для организаций, и они пригодятся, когда у вас много разных учетных записей и паролей. Обычно люди не любят пользоваться сторонними менеджерами паролей с сервисной архитектурой — неизвестно, что происходит с данными на чужом сервере, и не будет ли он скомпрометирован. Самое безопасное решение это разместить менеджер на своём собственном (как следует защищенном) сервере. Разумеется, к такому self-hosted варианту возникает много требований, и большой список решений с открытым исходным кодом довольно быстро сужается до нескольких известных, проверенных продуктов. Среди них мне больше всего нравится Bitwarden, и сейчас я объясню почему.
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии42

Абстрактная алгебра в действии

Время на прочтение6 мин
Количество просмотров26K

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

Читать далее
Всего голосов 43: ↑43 и ↓0+43
Комментарии31

Как создать telegram бот на C# быстро?

Время на прочтение6 мин
Количество просмотров147K

Как создать telegram bot на C# быстро?

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

Читать далее
Всего голосов 28: ↑20 и ↓8+16
Комментарии39

О глупости «программирования на естественном языке»

Время на прочтение4 мин
Количество просмотров22K

От переводчиков. Хотя Эдсгер Дейкстра — одна из главных личностей в истории IT, эта его коротенькая публикация ранее не попадала на Хабр, да и сами мы узнали о ней лишь благодаря докладу на нашей конференции. Но при этом она выглядит очень любопытным документом эпохи, показывая, что ещё несколько десятилетий назад люди думали о перспективе писать программы на «обычном языке». Поэтому мы решили восполнить пробел и перевести.

С первых же дней появления автоматических вычислительных машин были люди, которые считали недостатком тот факт, что программирование требует внимательности и точности, свойственных любому формального символизму. Они критиковали механического слугу за то неукоснительное выполнение данных ему инструкций, когда достаточно было бы поразмышлять мгновение, чтобы заметить, что в этих инструкциях есть очевидная ошибка. «Но мгновение — это долго, а размышлять — болезненный процесс». (А. Э. Хаусман). Они страстно надеялись и ждали появления более разумных машин, которые отказались бы приступать к таким бессмысленным действиям, какие в то время вызывались банальной опечаткой.

Читать далее
Всего голосов 52: ↑49 и ↓3+62
Комментарии66

N (Насти) алгоритм

Время на прочтение8 мин
Количество просмотров11K

Памяти Насти. Памяти дочери.

Что знаем об алгоритмах поиска? Есть граф. Чаще ориентированный. И некое целевое состояние. Фиксированное. А если нет?

Как, например, найти ребенка, который потерялся в лесу? Ведь не только вы его будете искать, но и он вас.

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

Читать далее
Всего голосов 14: ↑11 и ↓3+11
Комментарии6

Пишем асинхронного Телеграм-бота

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров60K

Сегодня я покажу, как написать своего Телеграм-бота на основе asyncio и aiohttp.

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

Статья предназначена для начинающих асинхронных программистов.

Читать далее
Всего голосов 28: ↑26 и ↓2+29
Комментарии10

В России создадут собственные литографы, поможет ли это отечественной микроэлектронике?

Время на прочтение11 мин
Количество просмотров131K

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

Ведь где иначе искать истины в этом вопросе, как не на Хабре...

Под катом очень много буков...
Всего голосов 261: ↑236 и ↓25+267
Комментарии724

Отдаю NFT за 880 миллионов долларов

Время на прочтение12 мин
Количество просмотров45K
«Код — это единственный закон, которому подчиняются цифры»

Если вы читаете этот текст, но ни разу не слышали про NFT, то, наверное, вы моя мама (мама, привет). Про этот феномен уже должен был кто-то написать человеческим языком без пустых восторгов и пересказывания мифов, но, похоже, эту траншею придётся копать мне. Странная штука: чем больше народу обсуждает NFT, тем ниже процент понимающих хоть что-то. Изначально этот материал задумывался как короткий обзор в духе «А король-то голый!», но по мере изучения проблемы, становилось всё яснее, почему так сложно сформировать собственное мнение относительно происходящего безумия.

Неприятность ситуации заключается в том, что широко тиражируемое объяснение смысла NFT является наглой ложью, в противовес которой пока не сформировалось имеющее вес экспертное мнение. Человек с ра́звитым критическим мышлением чувствует в происходящем нечто, мягко говоря, подозрительное, но объективное суждение требует подробного анализа устройства этой системы, который могут осуществить «немногие лишь те», кто обладает хорошими знаниями в разных областях. Так что, как говорится, давайте раскидаем всё по фактам. Информации по теме получилось много, в этот раз будут основные моменты, а в последующих статьях копнём глубже и разберём практические аспекты.
Читать дальше →
Всего голосов 80: ↑65 и ↓15+77
Комментарии52
1
23 ...

Информация

В рейтинге
3 976-й
Зарегистрирован
Активность