Программист
Пишем ОС на Rust. Настройка среды. Бинарник для «голого» железа
Настройка среды. "Голый" бинарник, или Исполняемый файл без main()
Первый шаг в написании своей ОСи — создание бинарника, не зависящего от стандартных библиотек, это делает возможным запуск кода без ОС — мы же пишем свою.
Оригинал блога разрабатывается на GitHub. Замечания к оригиналу оставляйте на странице Issues репозитория выше, а к переводу — в личке, комментариях или тут. Код, написанный в этой статье, содержится в ветке post-01
.
Зоопарк нашей кожи: что делать с акне (прыщами)
Staphylococcus epidermidis. Обычно ведёт себя мирно, но может провоцировать акне, если слишком проголодается
Наша кожа — это зоопарк. Причём открытого типа, с разными «климатическими» зонами и биомами. В программе сафари около 1000 видов различных бактерий и грибов. У здоровых людей вся эта микробиосистема живёт в гармонии и согласии, ест друг друга, остатки того что насекретировала наша кожа, и не пускает особенно злые виды, которые были бы не против съесть нашу кожу. Если экологическое равновесие нарушается, то в первую очередь возникают воспалительные очаги, которые обычно называют прыщами.
Для того чтобы этого не происходило, нужно следить за пищевыми цепочками условно-полезных видов и уничтожать условно-вредные. В этом круто помогают производные серы и азелаиновой кислоты. Сейчас расскажу, что интересного у нас получилось собрать из этих компонентов, как оно работает и при чём тут половые гормоны и загар.
Обычно на коже выделяют три основных биома: жирный, сухой и влажный. В каждом из них живёт свой набор организмов, который оптимально адаптирован к жизни в этой зоне. Например, пупок — типичная влажная зона. Нет воздействия губительного ультрафиолета, сальные железы отсутствуют, тепло и влажно. Поэтому он часто считается эталонным участком для исследований
Разработка инструмента командной строки: сравнение Go и Rust
Если вам не терпится увидеть код и самостоятельно сравнить один вариант моей программы с другим — то вот репозиторий Go-варианта проекта, а вот — репозиторий его варианта, написанного на Rust.
Трюки с SQL от DBA. Небанальные советы для разработчиков БД
Когда я начинал свою карьеру разработчика, моей первой работой стала DBA (администратор базы данных, АБД). В те годы, ещё до AWS RDS, Azure, Google Cloud и других облачных сервисов, существовало два типа АБД:
- АБД инфраструктуры отвечали за настройку базы данных, конфигурирование хранилища и заботу о резервных копиях и репликации. После настройки БД инфраструктурный администратор время от времени «настраивал экземпляры», например, уточнял размеры кэшей.
- АБД приложения получал от АБД инфраструктуры чистую базу и отвечал за её архитектуру: создание таблиц, индексов, ограничений и настройку SQL. АБД приложения также реализовывал ETL-процессы и миграцию данных. Если команды использовали хранимые процедуры, то АБД приложения поддерживал и их.
АБД приложений обычно были частью команд разработки. Они обладали глубокими познаниями по конкретной теме, поэтому обычно работали только над одним-двумя проектами. Инфраструктурные администраторы баз данных обычно входили в ИТ-команду и могли одновременно работать над несколькими проектами.
Клон Doom в 13 килобайтах JavaScript
Поиграть в него можно здесь. Исходный код выложен сюда.
Зачем создавать клон Doom?
Зачем писать FPS на JavaScript всего в 13 КБ (с учётом сжатия)? По нескольким причинам. Но лучше всего на этот вопрос отвечает раздел FAQ соревнований JS13K «Можно ли использовать WebGL?»:
«Да, но может быть сложно уместить его в 13 килобайта, если вы планируете писать FPS».
Кроме того, в то время я как раз написал 3D-рендерер и хотел поработать над ним ещё. К тому же мне нравится создавать сильно сжатый код. (Например, много лет назад я создал язык и написал компилятор для нового языка, предназначенный специально для использования в код-гольфинге.)
Именно поэтому я выбрал FPS. Остаётся вопрос: «Почему Doom?» На него ответить проще: если вы хотите написать FPS, и чтобы он при этом был небольшим, то Doom — практически самый минималистичный вариант.
Redis Best Practices, часть 3
Почему функциональное программирование такое сложное
Я несколько раз начинал читать статьи из серии «Введение в функциональное программирование», «Введение в Теорию Категорий» и даже «Введение в Лямбда Исчисление». Причем и на русском, и на английском. Каждый раз впечатление было очень сходным: во-первых, много новых непонятных слов; во-вторых, много новых определений, которые возникают из ниоткуда; в-третьих, совершенно непонятно, как это использовать.
Самым непонятным и зубодробительным оказалось, наверное, Теория Категорий. Я освоился в ней только с третьего подхода. В первые два раза я честно все прочитал, кажется понял, но т.к. никакой связки с реальной жизнью она не имела, то спустя неделю она благополучно полностью выветривалась.
Попытки использовать как-то в работе изученные концепции разбивались о полное непонимание, как применить полученное глубокое знание. Ведь, напомню, что парадигму ФП (где-то удобнее, где-то не очень, но) можно использовать практически в любом ЯП, совсем необязательно для этого изучать условный Хаскель.
12 советов по внедрению TypeScript в React-приложениях
Эта статья — сборник советов о том, как внедрить и улучшить использование TypeScript. Первая половина советов общая, касающаяся подходов и инфраструктуры. Вторая — несколько особо полезных фишек языка.
5 ловушек на пути к личной эффективности
Кирилл – давний адепт инструментов для повышения личной эффективности. Он активно внедряет их не только в свою работу, но и практически во все сферы жизни. Этой весной, когда карантин потребовал от большинства IT-профессионалов работать удаленно, они помогли ему оставаться продуктивным дома и удерживать здравый work-life balance. По нашей просьбе Кирилл делится своим опытом и рекомендациями с вами.
Больше разработчиков должны знать это о базах данных
Подавляющее большинство компьютерных систем отслеживают свое состояние и, соответственно, нуждаются в некой системе хранения данных. Я накапливала знания о базах данных в течение длительного времени, попутно совершая ошибки при проектировании, приводившие к потере данных и перебоям в работе. В системах, обрабатывающих большие объемы информации, базы данных лежат в сердце системной архитектуры и выступают ключевым элементом при выборе оптимального решения. Несмотря на то, что работе БД уделяется пристальное внимание, проблемы, которые пытаются предусмотреть разработчики приложений, часто оказываются лишь верхушкой айсберга. В этой серии статей я делюсь некоторыми идеями, которые будут полезны для разработчиков, не специализирующихся в этой области.
Не говорите «I feel myself», и другие правила английского языка, которые вгоняют в ступор
Сегодня мы расскажем о некоторых правилах английского языка, при знакомстве с которыми хочется сказать: «Да что ты, черт побери, такое несешь?». Готовы? Поехали!
Что внутри у .wasm-файла? Знакомство с wasm-decompile
Проблема заключается в том, что в .wasm-файлах содержится довольно-таки низкоуровневый код, который сильно похож на настоящий ассемблерный код. В частности, в отличие, например, от JVM, все структуры данных компилируются в наборы операций load/store, а не в нечто такое, в чём имеются понятные имена классов и полей. Компиляторы, вроде LLVM, могут так изменить входной код, что то, что у них получается, и близко на него не похоже.
Как быть тому, кто хочет, взяв .wasm-файл, узнать о том, что в нём происходит?
Памятка по работе с Canvas API
Доброго времени суток, друзья!
Данная статья представляет собой небольшую подборку примеров работы с 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')
Довольно слов.
Как стать DevOps инженером за полгода или даже быстрее. Часть 2. Конфигурирование
Освежим память по-быстрому
В первой части я утверждал, что работа инженера DevOps заключается в создании полностью автоматизированных цифровых конвейеров, которые перемещают код от машины разработчика к производству. Для эффективного выполнения этой работы требуется понимание основ, которыми являются ОС, язык программирования и облачный сервис хранения данных, а также хорошее понимание базирующихся на этой основе инструментов и навыков.
Напомню, что ваша цель состоит в том, чтобы сначала слева направо изучить вещи синего цвета, а затем также слева направо изучить вещи фиолетового цвета. Сейчас мы рассмотрим первый из 6 месяцев обучения, посвященный конфигурированию.
10 отличных Github репозиториев, которые должен знать каждый веб-разработчик
Кроме огромных репозиториев с источниками для подготовки к интервью, здесь много чего интересного
Я собрал список из десяти отличных репозиториев на Github, которые помогут вам существенно расширить свои знания.
А я его перевел, т.к. показалось, что пост многим будет интересен. Перевод очень вольный: я опустил нерелевантные промо-ссылки и гипер эмоциональные похвалы автора оригинала, чтобы оставить только суть. Еще, обновил цифры, чтобы информация была более актуальной к моменту публикации этого перевода. Итак, перейдем к списку.
Как работает музыка в NES
Если тут есть музыканты, которые имеют свой ютуб-канал или паблик вконтакте, ответьте мне на один вопрос: знаком ли вам такой способ набрать популярность, как каверы на музыку из старинных видеоигр? Способ убойный не только из-за ностальгии. Smooth McGroove в одном из своих интервью упоминал, что был удивлён, насколько крутые мелодии делались для старых игр. Дело не только в том, что над старыми играми работали профи, но и в том, какие ограничения им приходилось преодолевать. То, что звучит круто, будучи собранным из ассемблера, спичек и желудей, расцветает ещё больше, если это сыграть на настоящих музыкальных инструментах. Ну, или спеть акапельно.
В этой статье я расскажу о том, как в общих чертах работает звукогенерация в Ricoh 2A03/2A07, которые использовались в NES. Почему именно об этом? Ну, тут не столько я выбираю темы для своих статей, сколько мой pet-project выбирает их для меня.
Что такое Spring Framework? От внедрения зависимостей до Web MVC
Вы можете использовать это руководство для различных целей:
- Чтобы понять, что такое Spring Framework
- Как работают ее основные фичи: такие как внедрение зависимостей или Web MVC
- Это также исчерпывающий FAQ (Перечень часто задаваемых вопросов)
Примечание: Статья ~ 9000 слов, вероятно, не стоит читать ее на мобильном устройстве. Добавьте ее в закладки и вернитесь позже. И даже на компьютере ешь читай этого слона по одному кусочку за раз :-)
Содержание
- Введение
- Основы внедрения зависимостей
- Контейнер Spring IOC / Dependency Injection
- Spring AOP (Аспектно-ориентированное программирование) и прокси
- Управление ресурсами Spring
- Spring Web MVC
- Дополнительные модули Spring Framework
- Spring Framework: часто задаваемые вопросы
- Заключение
Средства консоли Chrome, которыми вы, возможно, никогда не пользовались
Материал, перевод которого мы сегодня публикуем, посвящён рассказу о некоторых возможностях консоли Chrome, которые известны не так широко, как они того заслуживают.
Информация
- В рейтинге
- Не участвует
- Откуда
- Новосибирск, Новосибирская обл., Россия
- Дата рождения
- Зарегистрирован
- Активность