Pull to refresh
9
0.3
Send message

Как посчитать синус быстро

Reading time13 min
Views24K

... и точно. Точнее, с заданной точностью, простите за каламбур.

Под катом я расскажу, как сделать это с использованием школьного курса алгебры и целочисленной арифметики, при чём здесь полиномы Чебышёва I-го рода, и дам ссылки на примеры реализаций для ПК и Cortex-M3.

Читать далее

Руководство по ассемблеру Go

Reading time12 min
Views28K


Прежде чем заняться реализацией runtime и изучением стандартной библиотеки, необходимо освоить абстрактный ассемблер Go. Надеюсь, это руководство поможет вам быстро овладеть нужными знаниями.
Читать дальше →
«Библиотеки для C++ нередко похожи на русскую классику: страдает либо их автор, либо пользователь, либо архитектура». Автор этой цитаты, Сергей Садовников из «Лаборатории Касперского», прошел свой путь от страданий к просветлению и узнал о метапрограммировании в С++ нечто важное и нужное. Сочувствующих приглашаем в волшебный мир макросов, шаблонов, boost и прочих loki.
Подробности – под катом

Создаем новое ключевое слово в C++

Reading time27 min
Views24K

C++ - один из языков, который можно назвать "легендарным". Его история насчитывает несколько десятилетий, принципы программирования на нем революционным образом менялись не раз, а черновик стандарта уже разросся до 1800+ страниц мелкого шрифта.

На C++ есть много хороших библиотек. Но нередко изменения в самом языке делали неактуальными большие куски кода, потому что они становились менее надёжными и быстрыми по сравнению с функционалом в самом языке. Правки в стандарт имеют несоизмеримо более сильное влияние, чем любая библиотека.

В этой статье мы в учебных целях напишем для C++ поддержку нового ключевого слова defer, которое будет работать во многом аналогично такому в языках Go и Swift. Это будет сделано через правку исходного кода Clang.

Создать!

Что такое Core Scheduling и кому он будет полезен?

Reading time9 min
Views15K

Не за горами выход новой версии ядра Linux 5.14. За последние несколько лет это обновление ядра является самым многообещающим и одно из самых крупных. Была улучшена производительность, исправлены ошибки, добавлен новый функционал. Одной из новых функций ядра стал Core Scheduling, которому посвящена наша статья. Это нововведение горячо обсуждали в интернете последние несколько лет, и наконец-то оно было принято в ядро Linux 5.14.

Если вы работаете с Linux или занимаетесь информационной безопасностью, вам интересны новые технологии, то добро пожаловать под кат.
Узнать подробности

Drone Ecozone Part 2: как приручить китайский дрон в полевых условиях

Reading time6 min
Views4.1K


Сложно ли управлять квадрокоптером? Если вы просто пользуетесь пультом, то задача покажется вам простой, а если пытаетесь проникнуть в тайны китайского API — то, быть может, даже нерешаемой. Сегодня мы расскажем об оборотной стороне хакатона Drone Ecozone, в ходе которого победители смогли провести съемку пяти красочных памятников природы с высоты птичьего полета. Под катом — подробный рассказ об изысканиях команды проекта, о тех граблях, на которые мы наступили, и некоторые полезные выводы для отважившихся использовать китайский серийный дрон не самым тривиальным способом.
Читать дальше →

Необычный дуалбут: ноутбук с «двойным дном»

Reading time15 min
Views86K

Не так давно на Habr Q&A я наткнулся на интересный вопрос — как сделать, чтобы два жестких диска не видели друг друга? Чтобы вирус, попав на одну систему, никоим образом не мог заразить другую. В ответах предлагали достаточно стандартные способы — использовать полнодисковое шифрование, отключить диск в диспетчере устройств и даже поставить переключатель на питание. Но что если взглянуть на задачу совершенно с другого угла и сделать всё средствами самого HDD? Да-да, сегодня мы снова погружаемся в пучины модификации прошивок и реверс-инжиниринга!
Узнать подробности

Как сделать многоточечную WebRTC-конференцию MCU с записью и демонстрацией экрана в браузере

Reading time15 min
Views7.9K

Во время карантина, который то ослабевает, то активизируется с удвоенной силой, появилось огромное множество новых профессий. Сторисмейкеры, инфопродюсеры, специалисты по запускам инфопродуктов и прочие неведомые звери - все они освоили новую работу, которая смогла прокормить их в пандемию. Нанимаете сторисмейкера, который прошел какие-то курсы (дай бог, нормальные, а не от инфоцыган) - он пилит за вас вовлекающие истории в Инстаграм и ваш курс продается. С контентмейкерами та же история - просто нанимаете такого человека, он вам и шапку профиля везде оформит, и на каком-нибудь Геткурсе уроки упорядочит, и статьи напишет, которые тоже помогут в продвижении курсов. Полный полет фантазии: если вам кажется, что какой-то профессии не существует, значит вы просто мало сидите в интернете. В принципе онлайн-работа популяризировалась и теперь уже вряд ли кто-то скажет: "Да он фигней какой-то занимается - ТикТоки свои снимает, а лучше бы на заводе вкалывал!".

Читать далее

Наглядно о том, как работает NumPy

Reading time8 min
Views44K

Есть тексты, похожие на вино или динамит: с годами они не стареют, а напротив приобретают вес и значимость. Сегодня, к старту флагманского курса о Data Science, мы решили поделиться переводом визуального учебного руководства о NumPy 2019 года, прочитав которое даже не слишком близкий к математике человек поймёт, как работает эта библиотека Python. Если вы не хотите долго объяснять NumPy, но делать это всё равно приходится, положите статью в закладки и она сэкономит ваше время.

Читать далее

Как я искал работу в США во время пандемии, подался на 200 вакансий и получил оффер на $380K

Reading time41 min
Views42K

Украинский профильный ресурс DOU.UA опубликовал статью о нелегком пути релокации специалиста в США во время пандемии, где он также отвечает на дополнительные вопросы и комментарии.

Адам Леос — Senior Software Engineer в Roku. Пару лет назад он принял решение о релокации и в итоге выбрал своей целью США. Всего за три месяца Адам с нуля собрал все необходимое для подачи на визу О1, но потом в историю вмешалась пандемия. О том, с какими трудностями он столкнулся из-за карантина, как искать работу на американском IT-рынке, как получить большое количество офферов и выторговать самую выгодную компенсацию, разработчик рассказал в интервью DOU.UA

Читать далее

Риски IT-компаний при работе с самозанятыми

Reading time9 min
Views13K

Кто такие самозанятые?

Понятия “самозанятые” в законодательстве нет. Под “самозанятыми” обычно понимают граждан:

1. получающих доход от самостоятельной деятельности;

2. состоящих на учете в качестве плательщика налога на профессиональный доход.

Налог на профессиональный доход - это специальный налоговый режим, который был введен в 2018 году Законом № 422-ФЗ. По закону плательщиками налога на профессиональный доход могут быть физические лица и индивидуальные предприниматели. 

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

Читать далее

WebUSB. Прошейся из браузера

Reading time3 min
Views19K


Разработчики хромиума постоянно пилят огромное количество классных API для разных технологий и железяк. Тут и Web Share, и работа со звуком, Bluetooth, NFC, WebOTP и много чего ещё, более-менее полный список со статусами реализации можно посмотреть здесь. Но больше всего среди них впечатляет WebUSB API, о настоящих возможностях которого я узнал совсем недавно. Оказывается, с его помощью можно не только открывать странички с подключенных устройств, но и прошивать их. Это открывает новый крутейший сценарий работы со всякой мелкой электроникой.
Читать дальше →

Создатели популярного менеджера паролей приветствуют пользователей Linux в семье 1Password

Reading time5 min
Views13K
Ожидание окончено. Вышла официальная версия 1Password для Linux.

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

Сегодня мы расстилаем красную дорожку для наших друзей из мира Linux.



Я знаю о том, что многие из вас уже давно используют 1Password в браузере для генерирования и хранения криптографически стойких, уникальных паролей. И мы можем гордиться тем, как хорошо работает такой вариант нашей программы. Но ничто не сравнится с полнофункциональным настольным приложением, которое умеет пользоваться всем тем, что может предложить операционная система. Особенно — если такое приложение может повысить и удобство работы с браузерным вариантом программы (спойлер: так оно и есть).

Давайте прогуляемся по красной дорожке и посмотрим, что ждёт нас в Linux-версии 1Password.
Читать дальше →

Дизеринг 2: ряд золотого сечения, синий шум и highpass-and-remap

Reading time7 min
Views4.2K
image

В предыдущей части я рассмотрел определение дизеринга и объяснил, как он изменяет характеристики погрешностей простой 1D-дискретизации и функций.

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

Ноутбук Mathematica для ряда золотого сечения находится здесь, а его pdf-версия — здесь.

Ноутбук для второй части поста можно найти здесь, а его pdf-версию — здесь.

Ряд золотого сечения


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

FractionalPart[N*GoldenRatio]

Идею его использования я нашёл в статье “Golden Ratio Sequences For Low-Discrepancy Sampling” авторов Colas Schretter и Leif Kobbelt.

Это невероятно потрясающий ряд, потому что он распределяет следующие значения очень хорошо и на достаточно далёком расстоянии:

Читать дальше →

Shell-скрипт, который удалил базу данных, и история о том, как ShellCheck мог бы помочь это предотвратить

Reading time6 min
Views13K
Сегодня хочу рассказать об одном случае из жизни, когда невинная ошибка при написании скрипта командной оболочки привела к удалению базы данных, используемой в продакшне. Расскажу я и о том, как ShellCheck (инструмент для линтинга и анализа скриптов, выходящий под лицензией GPLv3) мог бы обнаружить эту ошибку и предотвратил бы катастрофу. Да, сразу скажу, что я — автор ShellCheck.


Читать дальше →

Чем сложна демонизация POSIX

Reading time3 min
Views4.4K

Согласно Стивенсу, setsid() делает три важные вещи:

Процесс становится лидером сеанса нового сеанса, который содержит только вызывающий процесс. (PID = SID)

Процесс становится лидером группы процессов новой группы. (PID = SID = PGID)

У процесса не будет управляющего терминала. Если он у него был до setsid(), то связь будет разорвана.

Кроме того, setsid() не может завершиться успехом, если вызывающий процесс уже является лидером группы процессов (PID = PGID), поэтому необходимо сначала вызвать fork(), который гарантирует, что вновь созданный процесс не является лидером группы процессов (он наследует идентификатор группы от родителя).

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

Читать далее

Анатомия LV2-плагина

Reading time11 min
Views2.9K

LV2 - это открытый стандарт для создания плагинов звуковых эффектов. Считается, что он предназначен прежде всего для ОС Linux, хотя не существует никаких ограничений, мешающих использовать его на других системах. До этого в линуксе уже существовало два подобных стандарта - LADSPA и DSSI. Первый из них предназначался в основном для обработки звуковых сигналов и практически не мог работать с MIDI-данными. Второй же наоборот, задумывался как стандарт для виртуальных синтезаторов.

Само название LV2 - это сокращение от LADSPA version 2, он является новой, улучшенной версией стандарта. В отличие от своих предшественников, он позволяет обрабатывать аудиоданные, midi-потоки, создавать любой пользовательский интерфейс и обмениваться любыми данными с приложением-хостом. Стандарт также поддерживает механизм расширений. Благодаря этому LV2 может предложить ряд дополнительных возможностей: набор «заводских» предустановок, сохранение состояния, логирование. В теории, пользователь может создавать свои собственные дополнения. Подробная документация с примерами располагается по адресу http://lv2plug.in

Читать далее

Как мой простой проект в Github стал вирусным

Reading time4 min
Views21K


В прошлом месяце я создал простой проект, разошедшийся по различным техническим сообществам и социальным сетям. В Github он за 7 дней получил с 0 до 4 тысяч звёзд и более 200 форков. Github примерно в течение пяти дней рекламировал его в разделе Trending repositories of day.

Clone Wars

70 с лишним open-source-клонов или альтернатив популярных сайтов наподобие Airbnb, Amazon, Instagram, Netflix, Tiktok и т.д. В списке содержится исходный код, ссылки на демо, технологический стек и количество звёзд в GitHub.

Ссылка на проект

Ссылка на Github

Обеспечение безопасности базы данных PostgreSQL

Reading time10 min
Views48K

Базы данных — это Святой Грааль для хакеров, поэтому их необходимо защищать с особой тщательностью. Это первая из серии статей, в которых мы дадим обзор best practice в обеспечении безопасности баз данных. Мы начнем с одной из самых популярных СУБД с открытым исходным кодом, PostgreSQL, и рассмотрим несколько уровней безопасности, о которых стоит задуматься:

Читать далее

С++ exception handling под капотом. Часть 3

Reading time14 min
Views15K
Продолжаем перевод серии статей об обработки исключений в C++

1 часть
2 часть

C++ exceptions под капотом: поиск верного landing pad


Это уже 15-я глава в нашей длинной истории. Мы уже изучили достаточно много о том, как работают исключения, и даже имеем написанную работающую собственную персональную функцию с небольшим количеством рефлексии, определяющей где находится catch-блок (landing pad в терминах исключений). В прошлой главе мы написали персональную функцию, которая может обрабатывать исключения, но она всегда подставляет только первый landing pad (т.е. первый же catch-блок). Давайте улучшим нашу персональную функцию, добавив возможность выбирать правильный landing pad в функции с несколькими catch-блоками.
Читать дальше →

Information

Rating
3,841-st
Registered
Activity