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

Программист

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

Протокол ARP и «с чем его едят» (дополнено)

Время на прочтение3 мин
Количество просмотров206K
Спасибо хабраюзеру hardex за публикацию первоначальной статьи, а также всем, кто плюсанул в карму для возможности моей собственноручной публикации. Теперь дополненная версия с учетом пожеланий и дополнений. Добро пожаловать под кат.

Читать дальше →
Всего голосов 55: ↑34 и ↓21+13
Комментарии19

Атакуем DHCP часть 4. DHCP + ARP + Apple = MiTM

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

LOGO


В данной статье я расскажу о том, как осуществить MiTM любого устройства компании Apple в проводной или беспроводной сети. Прежде чем читать эту статью настоятельно рекомендую ознакомиться с первой, второй и третьей частями.

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

Пишем ОС на Rust. Настройка среды. Бинарник для «голого» железа

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

Настройка среды. "Голый" бинарник, или Исполняемый файл без main()


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


Оригинал блога разрабатывается на GitHub. Замечания к оригиналу оставляйте на странице Issues репозитория выше, а к переводу — в личке, комментариях или тут. Код, написанный в этой статье, содержится в ветке post-01.

Читать дальше →
Всего голосов 38: ↑36 и ↓2+47
Комментарии14

Зоопарк нашей кожи: что делать с акне (прыщами)

Время на прочтение7 мин
Количество просмотров51K
image
Staphylococcus epidermidis. Обычно ведёт себя мирно, но может провоцировать акне, если слишком проголодается

Наша кожа — это зоопарк. Причём открытого типа, с разными «климатическими» зонами и биомами. В программе сафари около 1000 видов различных бактерий и грибов. У здоровых людей вся эта микробиосистема живёт в гармонии и согласии, ест друг друга, остатки того что насекретировала наша кожа, и не пускает особенно злые виды, которые были бы не против съесть нашу кожу. Если экологическое равновесие нарушается, то в первую очередь возникают воспалительные очаги, которые обычно называют прыщами.

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

Обычно на коже выделяют три основных биома: жирный, сухой и влажный. В каждом из них живёт свой набор организмов, который оптимально адаптирован к жизни в этой зоне. Например, пупок — типичная влажная зона. Нет воздействия губительного ультрафиолета, сальные железы отсутствуют, тепло и влажно. Поэтому он часто считается эталонным участком для исследований пупкового пуха микробиома человеческой кожи.
Читать дальше →
Всего голосов 60: ↑54 и ↓6+68
Комментарии36

Разработка инструмента командной строки: сравнение Go и Rust

Время на прочтение12 мин
Количество просмотров19K
Эта статья посвящена разбору моего эксперимента по написанию небольшого инструмента командной строки с использованием двух языков, в программировании на которых у меня не особенно много опыта. Речь идёт о Go и Rust.



Если вам не терпится увидеть код и самостоятельно сравнить один вариант моей программы с другим — то вот репозиторий Go-варианта проекта, а вот — репозиторий его варианта, написанного на Rust.
Читать дальше →
Всего голосов 35: ↑33 и ↓2+44
Комментарии166

Трюки с SQL от DBA. Небанальные советы для разработчиков БД

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

Когда я начинал свою карьеру разработчика, моей первой работой стала DBA (администратор базы данных, АБД). В те годы, ещё до AWS RDS, Azure, Google Cloud и других облачных сервисов, существовало два типа АБД:

  • АБД инфраструктуры отвечали за настройку базы данных, конфигурирование хранилища и заботу о резервных копиях и репликации. После настройки БД инфраструктурный администратор время от времени «настраивал экземпляры», например, уточнял размеры кэшей.
  • АБД приложения получал от АБД инфраструктуры чистую базу и отвечал за её архитектуру: создание таблиц, индексов, ограничений и настройку SQL. АБД приложения также реализовывал ETL-процессы и миграцию данных. Если команды использовали хранимые процедуры, то АБД приложения поддерживал и их.

АБД приложений обычно были частью команд разработки. Они обладали глубокими познаниями по конкретной теме, поэтому обычно работали только над одним-двумя проектами. Инфраструктурные администраторы баз данных обычно входили в ИТ-команду и могли одновременно работать над несколькими проектами.
Читать дальше →
Всего голосов 52: ↑48 и ↓4+68
Комментарии38

Клон Doom в 13 килобайтах JavaScript

Время на прочтение14 мин
Количество просмотров40K
В прошлом году я участвовал в соревнованиях JS13K 2019, на которых людям предлагается разрабатывать игры в менее чем 13 КБ кода на JavaScript. Я участвовал с клоном Doom, который назвал… «Ещё один клон Doom» (Yet Another Doom Clone).


Поиграть в него можно здесь. Исходный код выложен сюда.

Зачем создавать клон Doom?


Зачем писать FPS на JavaScript всего в 13 КБ (с учётом сжатия)? По нескольким причинам. Но лучше всего на этот вопрос отвечает раздел FAQ соревнований JS13K «Можно ли использовать WebGL?»:

«Да, но может быть сложно уместить его в 13 килобайта, если вы планируете писать FPS».

Кроме того, в то время я как раз написал 3D-рендерер и хотел поработать над ним ещё. К тому же мне нравится создавать сильно сжатый код. (Например, много лет назад я создал язык и написал компилятор для нового языка, предназначенный специально для использования в код-гольфинге.)

Именно поэтому я выбрал FPS. Остаётся вопрос: «Почему Doom?» На него ответить проще: если вы хотите написать FPS, и чтобы он при этом был небольшим, то Doom — практически самый минималистичный вариант.
Всего голосов 79: ↑78 и ↓1+103
Комментарии28

Redis Best Practices, часть 3

Время на прочтение14 мин
Количество просмотров15K
Заключительный перевод разделов Redis Best Practices с официального сайта «Redis Labs». Самое необычное и интересное сегодня под катом!

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

Почему функциональное программирование такое сложное

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

Я несколько раз начинал читать статьи из серии «Введение в функциональное программирование», «Введение в Теорию Категорий» и даже «Введение в Лямбда Исчисление». Причем и на русском, и на английском. Каждый раз впечатление было очень сходным: во-первых, много новых непонятных слов; во-вторых, много новых определений, которые возникают из ниоткуда; в-третьих, совершенно непонятно, как это использовать.


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


Попытки использовать как-то в работе изученные концепции разбивались о полное непонимание, как применить полученное глубокое знание. Ведь, напомню, что парадигму ФП (где-то удобнее, где-то не очень, но) можно использовать практически в любом ЯП, совсем необязательно для этого изучать условный Хаскель.

Читать дальше →
Всего голосов 142: ↑123 и ↓19+138
Комментарии715

12 советов по внедрению TypeScript в React-приложениях

Время на прочтение9 мин
Количество просмотров36K
TypeScript — стандарт современной фронтенд-разработки. Согласно исследованиям State of JavaScript, TS вызывает явный интерес у программистов. По данным опроса за 2019 год, почти 60% респондентов пробовали TS и продолжают использовать, 22% не пробовали и желают изучить.

Эта статья — сборник советов о том, как внедрить и улучшить использование TypeScript. Первая половина советов общая, касающаяся подходов и инфраструктуры. Вторая — несколько особо полезных фишек языка.


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

5 ловушек на пути к личной эффективности

Время на прочтение5 мин
Количество просмотров13K
Если вы научились держать все сферы жизни под контролем, прочитайте другой материал. Но если работа из дома заставила вас задуматься о повышении личной эффективности, этот разбор – для вас. На основании личного опыта и общения с коллегами Кирилл Белобородько, проектный и people-менеджер в харьковском офисе EPAM, собрал типичные ошибки, которые могут загнать новичка в прокрастинацию, вместо того, чтобы помочь успевать больше.

Кирилл – давний адепт инструментов для повышения личной эффективности. Он активно внедряет их не только в свою работу, но и практически во все сферы жизни. Этой весной, когда карантин потребовал от большинства IT-профессионалов работать удаленно, они помогли ему оставаться продуктивным дома и удерживать здравый work-life balance. По нашей просьбе Кирилл делится своим опытом и рекомендациями с вами.


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

Больше разработчиков должны знать это о базах данных

Время на прочтение19 мин
Количество просмотров44K
Прим. перев.: Jaana Dogan — опытный инженер из Google, которая в данный момент занимается вопросами наблюдаемости production-сервисов компании, написанных на Go. В этой статье, снискавшей большую популярность у англоязычной аудитории, она в 17 пунктах собрала важные технические детали, касающиеся СУБД (а иногда — распределённых систем в целом), которые полезно учитывать разработчикам крупных/требовательных приложений.



Подавляющее большинство компьютерных систем отслеживают свое состояние и, соответственно, нуждаются в некой системе хранения данных. Я накапливала знания о базах данных в течение длительного времени, попутно совершая ошибки при проектировании, приводившие к потере данных и перебоям в работе. В системах, обрабатывающих большие объемы информации, базы данных лежат в сердце системной архитектуры и выступают ключевым элементом при выборе оптимального решения. Несмотря на то, что работе БД уделяется пристальное внимание, проблемы, которые пытаются предусмотреть разработчики приложений, часто оказываются лишь верхушкой айсберга. В этой серии статей я делюсь некоторыми идеями, которые будут полезны для разработчиков, не специализирующихся в этой области.
Читать дальше →
Всего голосов 50: ↑49 и ↓1+66
Комментарии27

Не говорите «I feel myself», и другие правила английского языка, которые вгоняют в ступор

Время на прочтение6 мин
Количество просмотров148K
Английский язык на первый взгляд довольно логичный. Когда только принимаешься за его изучение, практически все правила кажутся понятными. Но среди них есть и ужасно странные правила и нормы.

Сегодня мы расскажем о некоторых правилах английского языка, при знакомстве с которыми хочется сказать: «Да что ты, черт побери, такое несешь?». Готовы? Поехали!


Всего голосов 40: ↑32 и ↓8+37
Комментарии82

Что внутри у .wasm-файла? Знакомство с wasm-decompile

Время на прочтение7 мин
Количество просмотров10K
В нашем распоряжении имеется множество компиляторов и других инструментов, позволяющих создавать .wasm-файлы и работать с ними. Количество этих инструментов постоянно растёт. Иногда нужно заглянуть в .wasm-файл и разобраться с тем, что у него внутри. Может быть, вы — разработчик одного из Wasm-инструментов, или, возможно, вы — программист, который пишет код, рассчитанный на преобразование в Wasm, и интересующийся тем, как выглядит то, во что превратится его код. Такой интерес может быть вызван, например, соображениями производительности.



Проблема заключается в том, что в .wasm-файлах содержится довольно-таки низкоуровневый код, который сильно похож на настоящий ассемблерный код. В частности, в отличие, например, от JVM, все структуры данных компилируются в наборы операций load/store, а не в нечто такое, в чём имеются понятные имена классов и полей. Компиляторы, вроде LLVM, могут так изменить входной код, что то, что у них получается, и близко на него не похоже. 

Как быть тому, кто хочет, взяв .wasm-файл, узнать о том, что в нём происходит?
Читать дальше →
Всего голосов 36: ↑36 и ↓0+36
Комментарии4

Памятка по работе с Canvas API

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


Доброго времени суток, друзья!

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

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

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

Код разбит на отдельные блоки-песочницы, которые для удобства чтения помещены под «кат».

Парочка важных моментов.

Ширину и высоту холста лучше определять с помощью атрибутов:

<canvas width="300" height="300"></canvas>

Если мы хотим, чтобы холстом была вся область просмотра, то делаем следующее:

const width = canvas.width = innerWidth
const height = canvas.height = innerHeight

Холст и двумерный контекст рисования я обычно определяю следующим образом:

const canvas = document.querySelector('canvas')
// не путать с объектом jQuery
const $ = canvas.getContext('2d')

Довольно слов.
Всего голосов 13: ↑12 и ↓1+20
Комментарии2

Как стать DevOps инженером за полгода или даже быстрее. Часть 2. Конфигурирование

Время на прочтение6 мин
Количество просмотров35K
Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение

Освежим память по-быстрому


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

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

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

10 отличных Github репозиториев, которые должен знать каждый веб-разработчик

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

Кроме огромных репозиториев с источниками для подготовки к интервью, здесь много чего интересного


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


image


А я его перевел, т.к. показалось, что пост многим будет интересен. Перевод очень вольный: я опустил нерелевантные промо-ссылки и гипер эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, перейдем к списку.
Читать дальше →
Всего голосов 63: ↑56 и ↓7+62
Комментарии8

Как работает музыка в NES

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

Если тут есть музыканты, которые имеют свой ютуб-канал или паблик вконтакте, ответьте мне на один вопрос: знаком ли вам такой способ набрать популярность, как каверы на музыку из старинных видеоигр? Способ убойный не только из-за ностальгии. Smooth McGroove в одном из своих интервью упоминал, что был удивлён, насколько крутые мелодии делались для старых игр. Дело не только в том, что над старыми играми работали профи, но и в том, какие ограничения им приходилось преодолевать. То, что звучит круто, будучи собранным из ассемблера, спичек и желудей, расцветает ещё больше, если это сыграть на настоящих музыкальных инструментах. Ну, или спеть акапельно.



В этой статье я расскажу о том, как в общих чертах работает звукогенерация в Ricoh 2A03/2A07, которые использовались в NES. Почему именно об этом? Ну, тут не столько я выбираю темы для своих статей, сколько мой pet-project выбирает их для меня.

Всего голосов 23: ↑23 и ↓0+23
Комментарии27

Что такое Spring Framework? От внедрения зависимостей до Web MVC

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


Вы можете использовать это руководство для различных целей:


  • Чтобы понять, что такое Spring Framework
  • Как работают ее основные фичи: такие как внедрение зависимостей или Web MVC
  • Это также исчерпывающий FAQ (Перечень часто задаваемых вопросов)

Примечание: Статья ~ 9000 слов, вероятно, не стоит читать ее на мобильном устройстве. Добавьте ее в закладки и вернитесь позже. И даже на компьютере ешь читай этого слона по одному кусочку за раз :-)


Содержание


  • Введение
  • Основы внедрения зависимостей
  • Контейнер Spring IOC / Dependency Injection
  • Spring AOP (Аспектно-ориентированное программирование) и прокси
  • Управление ресурсами Spring
  • Spring Web MVC
  • Дополнительные модули Spring Framework
  • Spring Framework: часто задаваемые вопросы
  • Заключение
Читать дальше →
Всего голосов 17: ↑14 и ↓3+17
Комментарии14

Средства консоли Chrome, которыми вы, возможно, никогда не пользовались

Время на прочтение7 мин
Количество просмотров53K
Консоль инструментов разработчика Chrome — это, вероятно, одно из самых широко используемых и самых полезных специализированных средств браузера. Консоль даёт программисту множество интересных возможностей. Она помогает в отладке, профилировании и мониторинге кода страниц.



Материал, перевод которого мы сегодня публикуем, посвящён рассказу о некоторых возможностях консоли Chrome, которые известны не так широко, как они того заслуживают.
Читать дальше →
Всего голосов 94: ↑94 и ↓0+94
Комментарии27
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность