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

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

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

Подробная инструкция по изготовлению сплит клавиатуры на основе ATmega32U4. Аналог Iris / Jiran своими руками

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

Моя самоделка


image

Перед изготовлением своей клавиатуры я наметил следующие цели:

  1. Максимально возможный тактильный комфорт.
  2. Добиться того, чтобы совершенно не было необходимости смотреть на клавиатуру при работе, чтобы она никоим образом не отвлекала внимание на себя, чтобы даже смотреть на нее было бессмысленно. Именно поэтому на моих колпачках нет надписей.
  3. Клавиатура — это мой рабочий инструмент, сосредотачиваемся на ее функционале и удобстве. Внешний вид совершенно неважен. Кто не может жить без RGB подсветки и внешней броской красоты – нам с вами не по пути, эта статья совсем про другое. В этой статье я вас научу как недорого и просто сделать себе удобный и функциональный инструмент для работы.
  4. Удобство перевозки. Сделать компактное и удобное для переноски устройство.
Всего голосов 79: ↑79 и ↓0+79
Комментарии75

Неожиданные детали работы Windows Firewall, настроенного по умолчанию. И эксперименты по перенастройке

Время на прочтение8 мин
Количество просмотров47K
Иногда получается, что при выполнении очередного проекта, я случайно открываю какие-то обстоятельства, которые, вроде, никто не скрывает, можно даже найти документацию, поясняющую суть… Но многие, включая меня, находятся в плену заблуждений, поэтому не ищут ту документацию, полагаясь на совершенно неверную картину мира. У меня уже намечается целый цикл из статей, в которых я просто сообщаю, что всё, оказывается, не так, как многие (включая меня) думали. Была у меня статья про DMA, была статья про производительность шины PCI Express. К этому же циклу можно отнести статью про конфигурационные ПЗУ для ПЛИС Altera.

Сегодня мне хотелось бы рассказать пару слов про работу Windows Firewall, или, как его называют в русифицированной ОС – брандмауэра. В целом, это очень хорошая штука, но в частности… Оказывается, по умолчанию он работает в достаточно интересном режиме. Как говорится: «А пацаны и не знают». Итак, начинаем разбираться, что там к чему.


Читать дальше →
Всего голосов 45: ↑38 и ↓7+43
Комментарии38

IBM открыла инструмент полностью гомоморфного шифрования для Linux

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

Компания IBM опубликовала на GitHub исходный код набора инструментов FHE для Linux. Утилиты работают на платформах IBM Z и x86, поддерживаются Ubuntu, Fedora и CentOS.

Полностью гомоморфное шифрование (FHE) долгое время считалось чем-то вроде чаши святого Грааля в криптографии. Задача действительно казалась нереальной. Тип шифрования FHE предполагает манипуляции зашифрованными данными третьей стороной без возможности расшифровки самих данных или результата манипуляций.

Как такое возможно?
Всего голосов 50: ↑49 и ↓1+64
Комментарии35

Flipper Zero — как выйти на Кикстартер сидя на карантине на даче

Время на прочтение7 мин
Количество просмотров75K
Flipper Zero крупным планом

Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который я разрабатываю с друзьями. Предыдущие посты [1],[2],[3]

Я до сих пор не могу в это поверить. Это самая волнительная статья, которую я когда-либо писал. Мы прошли огромный путь: два раза полностью меняли электронику Флиппера, выживали при блекауте и закрытых границах из-за коронавируса, переносили компанию из Гонконга в США, с трудом прошли все проверки и верификации и НАКОНЕЦ ГОТОВЫ К ЗАПУСКУ ФЛИППЕРА НА КИКСТАРТЕРЕ! Сейчас мне осталось только нажать кнопку «Старт».

Внутри я расскажу: через что нам пришлось пройти, что нужно для выхода на Кикстартер, как мы за две недели зарегистрировали компанию в США и открыли банковский счет, как Stripe отказывался подтверждать нашу компанию и что будет дальше.
Читать дальше →
Всего голосов 220: ↑216 и ↓4+294
Комментарии221

USB-флешки: заряжать нельзя игнорировать

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


В интернете прошла смута под названием «зачем заряжать флешку». На первый взгляд смешно, но предлагаю еще раз подумать и разобраться в вопросе. После прочтения этой статьи вы тоже начнете заряжать свои флешки.
Читать дальше →
Всего голосов 179: ↑171 и ↓8+215
Комментарии282

Как ухаживать за мозгом

Время на прочтение12 мин
Количество просмотров87K
Эх, люблю свои мозги! Каждый день забочусь о них, как о самом важном. В этой статье мой опыт поддержания здоровья мозга переплетён с последними результатами научных исследований. Под катом рассказ, как сделать так, чтобы мозг работал эффективно и сохранял ясный ум (завтра и через 30 лет), был готов принимать решения, концентрироваться на задачах и при этом не старел.


Читать дальше →
Всего голосов 68: ↑56 и ↓12+54
Комментарии116

Медленный код — вообще не проблема, если ты знаешь как его ускорить. Главное красиво

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


Я много раз слышал, как программисты смеются над тиммейтами, которые написали медленный код. Резкие, самодовольные фразы в стиле "этот болван четыре раза пробежался по коллекции, хотя можно было один", и тому подобное. Когда слышишь такое, сразу думаешь — ну тут все по делу, зачем делать лишние итерации? Почему нельзя изучить пару элементарных вещей, вроде принципов работы LINQ выражений в C#, и писать нормальный код? Ты смеешься над некомпетентными тупицами до тех пор, пока смеяться не начнут над тобой. И можете мне поверить — никакие знания в программировании не спасут вас от ситуации, когда вы по незнанию зафигачили квадратичный алгоритм вместо линейного.

Читать дальше →
Всего голосов 98: ↑72 и ↓26+65
Комментарии189

QLiveBittorrent — консольный bittorrent клиент для просмотра файлов до скачивания

Время на прочтение5 мин
Количество просмотров34K
Ровно месяц назад была опубликована статья LiveDC — Быстрый доступ к p2p файлам. Смысл ее в том, что Erty_Hackward написал DC-клиент с возможностью просмотра файлов до их окончательной загрузки. С его помощью можно, например, смотреть фильмы спустя пару минут после начала закачки, перематывать их, смотреть с любого момента. А можно извлечь нужный файл из большого архива, не перекачивая целый архив.

Мне очень понравилась идея этой программы. Но она написана на C#. А хотелось бы использовать ее в линуксе. Поэтому с разрешения автора я с большим удовольствием взялся за создание аналогичной программы для линукса. В результате получился консольный битторрент клиент QLiveBittorrent.


Читать дальше →
Всего голосов 146: ↑141 и ↓5+136
Комментарии91

Опасная периферия: разбираемся в Thunderspy

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

image


Год от года мы наблюдаем технический прогресс: мощность компьютеров растет, скорости передачи данных увеличиваются, появляются новые стандарты… Но, как говорилось в одном известном фильме, с великой силой приходит великая ответственность! Что мы получаем (помимо большой скорости) от новых стандартов и интерфейсов? Какие угрозы таят в себе Thunderbolt и USB4? Так ли опасен Thunderspy, как его описывают? Давайте разберемся!

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

Как я исправил зрение

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


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

Нет. Я болезненно точен в мелочах.

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

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

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

Хотите узнать больше?
Читать дальше →
Всего голосов 66: ↑62 и ↓4+86
Комментарии221

Бюджетный мультирум на базе Snapcast

Время на прочтение4 мин
Количество просмотров7.9K
Создание мультирум аудио систем позволяет достичь сразу несколько целей.

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

В этой статье я поделюсь примером построения мультирум системы в своей собственной квартире. Первоначальная идея в создании музыкального фона (выбранная радиостанция) на небольшой громкости во всех помещениях, вместо одной точки, где громкость приходилось делать побольше.
Читать дальше →
Всего голосов 6: ↑5 и ↓1+7
Комментарии7

Работаем в IntelliJ IDEA на слабом железе

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

Обнаружил секретный репозиторий на гитхабе JetBrains под названием Projector. Благодаря нему написал кусок кода в IntelliJ IDEA, запущенной на Android-планшете. Рассказываю, как это повторить.


Читать дальше →
Всего голосов 79: ↑78 и ↓1+92
Комментарии147

Как бросить школу и перевести ребенка на удалёнку

Время на прочтение7 мин
Количество просмотров37K
Привет, Хабр!

На днях моя дочь закончила 6й класс полностью в удалённом формате. Сразу несколько моих друзей обратились за обратной связью, потому что также задумываются о переводе детей на подобный формат обучения.

Пандемия внесла свои корректировки в привычный и давно изживший себя процесс обучения в современной (считай – еще советской) школе. И многие ГБОУ (ну и словечко) оказались к этому совершенно не готовы. Попытки организовать какие-то уроки в скайпе, зуме с треском провалились и детей отправили просто по домам учиться на усмотрение родителей.

Многие мои знакомые, которые год назад крутили пальцем у виска, когда я переводила ребенка на удаленку, стали задаваться вопросом, а так ли страшен чёрт.

Расскажу…


Читать дальше →
Всего голосов 85: ↑74 и ↓11+87
Комментарии238

Интуиция как инструмент инженера, или чему нас учит опыт покорителей Севера

Время на прочтение27 мин
Количество просмотров24K
image

Авторские права на фотографию принадлежат "Russian Travel Geek".

«Чтобы попасть на Территорию, вы должны сесть в самолет. Правда, летом вы можете добраться сюда и на пароходе — месячное плавание среди льда и тумана, когда кажется, что мир исчез и существуют лишь железная палуба, перекличка сирен каравана и ваша каюта. Через несколько дней именно в каюте вы и будете проводить почти всё свое время, ибо вам быстро осточертеет блеклая полярная вода, низкое небо и слово „навигация“, которое произносится тысячу раз на дню.… Рейс ваш окончится не на той планете, с которой начался. Вас ожидает прохладный и влажный воздух, черный и желтый пейзаж, если вы прилетели летом, и некая суровая снежная обнаженность, которую трудно передать словами, если вас затащило туда зимой.»
Олег Куваев, роман «Территория», 1978 г.

Чтобы поехать строить свою карьеру на Север, нужно быть сильным. Инфраструктура там и сейчас-то развита не очень, а лет 70 назад путь из Чукотки до Москвы даже на самолёте занимал четверо суток.
Читать дальше →
Всего голосов 36: ↑34 и ↓2+48
Комментарии26

Осторожнее с редактированием bash-скриптов

Время на прочтение2 мин
Количество просмотров64K
Предположим, я написал такой bash-скрипт с названием delay.sh. Как думаете, что он делает?

#!/bin/bash
sleep 30
#rm -rf --no-preserve-root /
echo "Time's up!"

Похоже, он ожидает 30 секунд, а затем выводит сообщение на экран. Здесь никаких фокусов — он делает именно это. Там есть опасная команда в середине, но она закомментирована и не выполняется.

Представьте, что я снова запускаю этот скрипт, но теперь мне не хочется ждать 30 секунд — это слишком долго. Я открываю вторую консоль, меняю sleep 30 на sleep 3, затем сохраняю файл. Как думаете, что будет теперь?

Ну, через 30 секунд скрипт удалит все мои файлы.
Читать дальше →
Всего голосов 201: ↑195 и ↓6+250
Комментарии201

Как мы автоматизировали портирование продуктов с C# на C++

Время на прочтение13 мин
Количество просмотров6.8K
Привет, Хабр. В этом посте я расскажу о том, как нам удалось организовать ежемесячный выпуск библиотек для языка C++, исходный код которых разрабатывается на C#. Речь идёт не об управляемом C++ и даже не о создании моста между неуправляемым C++ и средой CLR — речь об автоматизации генерации кода на C++, повторяющего API и функциональность оригинального кода на C#.

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

В этой статье я кратко опишу историю нашего проекта и используемые в нём технологии. Вопросов экономического обоснования я коснусь лишь вскользь, поскольку техническая сторона для меня гораздо интереснее. В следующих статьях цикла я планирую подробнее остановиться на таких темах, как кодогенерация и управление памятью, а также на некоторых других, если у сообщества будут соответствующие вопросы.
Читать дальше →
Всего голосов 14: ↑14 и ↓0+14
Комментарии27

Конференции DotNext, Heisenbug, HolyJS, C++ Russia, DevOops и JPoint переносятся из-за коронавируса

Время на прочтение1 мин
Количество просмотров5K
TL;DR: Конференции компании JUG Ru Group, запланированные на апрель и май этого года (DotNext, Heisenbug, HolyJS, C++ Russia, DevOops и JPoint), переносятся на июнь-июль из-за коронавируса.

Надоел уже этот коронавирус!
Всего голосов 55: ↑55 и ↓0+55
Комментарии27

Законы программирования

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

Законы, теории, принципы и закономерности, полезные для разработчиков


Введение


Перевод репозитория github.com/dwmkerr/hacker-laws

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

Здесь содержатся объяснения некоторых законов, принципов и закономерностей, но нет никакой агитации в их пользу. Применять их или нет – это всегда вопрос спорный, и всё зависит от того, над чем вы работаете.

Законы


Закон Амдала


Закон Амдала — это формула, демонстрирующая потенциал ускорения вычислительной задачи, которого можно достичь при увеличении количества ресурсов системы. Обычно он используется в параллельных вычислениях, и может предсказать наличие реальных преимуществ от увеличения количества процессоров с учётом ограничений параллелизуемости программы.
Читать дальше →
Всего голосов 67: ↑65 и ↓2+80
Комментарии21

Монады как паттерн переиспользования кода

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


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


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


Но ведь в интернете буквально сотни статей про ФП и монады, зачем писать еще одну?


Дело в том, что все их (по крайней мере те что я читал) можно поделить условно на две категории: с одной стороны это статьи где вам объяснят что монада это моноид в категории эндофункторов, и что если монада T над неким топосом имеет правый сопряжённый, то категория T-алгебр над этой монадой — топос. На другой стороне располагаются статьи, где вам рассказывают, что монады — это коробки, в которых живут собачки, кошечки, и вот они из одних коробок перепрыгивают в другие, размножаются, исчезают… В итоге за горой аналогий понять что-то содержательное решительно невозможно.


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


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

Читать дальше →
Всего голосов 89: ↑85 и ↓4+100
Комментарии256

Функциональное программирование — это не то, что нам рассказывают

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

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



Хотя люди обычно признают удобства ФП фич, ведь намного приятнее писать:


int Factorial(int n)
{
    Log.Info($"Computing factorial of {n}");
    return Enumerable.Range(1, n).Aggregate((x, y) => x * y);
}

чем ужасные императивные программы вроде


int Factorial(int n)
{
    int result = 1;
    for (int i = 2; i <= n; i++)
    {
        result *= i;
    }
    return result;
}

Так ведь? С одной стороны да. А с другой именно вторая программа в отличие от первой является функциональной.


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

Читать дальше →
Всего голосов 208: ↑200 и ↓8+251
Комментарии795

Информация

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

Специализация

Software Developer, Release Manager
Senior
C#
Java
Apache Maven
Gradle
Intellij IDEA
English
Git