Рубрика «code»

Как работает компьютер: глубокое погружение (на примере Linux) - 1

Введение

Я делал много вещей с компьютерами, но в моих знаниях всегда был пробел: что конкретно происходит при запуске программы на компьютере? Я думал об этом пробеле — у меня было много низкоуровневых знаний, но не было цельной картины. Программы действительно выполняются прямо в центральном процессоре (central processing unit, CPU)? Я использовал системные вызовы (syscalls), но как они работают? Чем они являются на самом деле? Как несколько программ выполняются одновременно?

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

И, как говорится, ты по-настоящему знаешь что-то, только если можешь объяснить это другому.

Более удобный формат статьи.

Читать полностью »

Я думаю, многие из Вас слышали мнение о том что кода в контроллерах быть не должно, и потому контроллер с методами в одну строку считаются «Best Practice».Я в свою очередь сомневаюсь в том, что польза от этого так уж велика. Если у Вас возникали похожие мысли, прошу под кат.

image
Читать полностью »

Всем привет. На связи Владислав Родин. В настоящее время я являюсь руководителем курса «Архитектор высоких нагрузок» в OTUS, а также преподаю на курсах посвященных архитектуре ПО.

Помимо преподавания, как вы могли заметить, я занимаюсь написанием авторского материала для блога OTUS на хабре и сегодняшнюю статью хочу посвятить запуску нового потока курса «Алгоритмы для разработчиков».


Введение

Хеш-таблицы (HashMap) наравне с динамическими массивами являются самыми популярными структурами данных, применяемыми в production'е, поэтому очень часто можно услышать вопросы на собеседованиях касаемо их предназначения, особенностей их внутреннего устройства, связанных с ними алгоритмов. Данная структура данных является классической и встречается не только в Java, но и во многих других языках программирования.
Читать полностью »

В процессе подготовки к курсу «Основы компиляторов» для студентов 4-го курса я изучал различные эзотерические языки программирования. Вот хорошая статья на эту тему. В статье самым интересным мне показался язык Befunge (Крис Пресс, 1993 год), особо отмечу три его особенности:

  1. Поле программы представляет собой двумерный тор, т.е. физически это прямоугольная матрица команд-символов, замкнутая по верхней(нижней) границе и по левому(правому) столбцу. По полю передвигается указатель команд (каждая команда – это некий символ с координатами x,y), выполняет команду и двигается дальше. Движение может быть во все 4 стороны (по умолчанию направо с точки 0,0), а при выходе за пределы «поля» указатель появляется с противоположной стороны.
  2. В языке есть две команды (p, g), которые меняют само поле, т.е. программа «самопереписывается» в процессе выполнения. Код программы на старте может не быть равен коду на финише. Стартовала программе «123pgpg##@», а закончила работать программа «ABC@1@2@3.14» (не правильный пример).
  3. Крис Пресси отмечал, что хотел создать язык, максимально сложный для компиляции. Де-факто это так, создать именно компилятор, который делает из программы exe-файлы адски сложно, я нашел информацию, что на Си кто-то смог это сделать… Лучше всего создавать транслятор из языка в код на Python, который я все равно называю компилятором для простоты.

Читать полностью »

Полезные разработчику привычки - 1

Благодаря которым вы станете лучше как программист

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

Как сказал Денис Уэйтли, «нельзя избавиться от вредной привычки, но можно заменить ее полезной». Поэтому я предлагаю вам список из семи привычек, которые, как мне кажется, помогут вам стать лучше как программист.

Переведено в Alconost
Читать полностью »

Всем привет! В интернете бытует заблуждение, что для управления компьютером при помощи самодельной электроники нужны только специальные платы, которые могут распознаваться как USB HID устройства. А касаемо Arduino все только и говорят о Arduino Leanardo. Такие популярные библиотеки как Keyboard и Mouse, которые позволяют создавать эмуляцию работы мыши или клавиатуры посредством микроконтроллера предназначены только для пары плат Arduino, Leonardo в их числе.

Я расскажу о том, как наладить связь любого микроконтроллера Arduino (для примера взята Arduino Uno) и своей программы на Processing. Добавив ко всему прочему знания о Java, на котором основывается Processing, можно будет дописать проект под управление всем компьютером, а не только собственным приложением. Тема управления компьютером программой на Java не есть чем то секретным, погуглите и все найдете, уверяю вас.

Скачиваем необходимые редакторы

Читать полностью »

Примечание от переводчика: типично пятничная статья во вторник утром… почему бы и нет?

Объясняем код с помощью ASCII-арта - 1

Большинство людей — визуалы. Они используют изображения, чтобы вникнуть в суть проблемы. А вот мэйнстримные языки программирования, напротив, основаны на текстовом представлении. Возникающую пропасть между текстом и графикой заполняют ASCII-изображения, нарисованные с помощью текстовых символов и вставленные в исходный код программы. Я их обожаю! Как-то раз я кинул клич в Twitter и мне прислали гораздо больше примеров, чем я ожидал. Спасибо всем участвовавшим. В этой теме попалось несколько прекрасных примеров, которые я собрал и разложил на категории. Для каждого изображения дается ссылка на соответствующий репозиторий.Читать полностью »

На самом деле это всё о смартконтрактах.

Но если вы не совсем представляете себе что такое смартконтракт, и вообще далеки от крипты, то что такое хранимая процедура в базе данных, представляете себе вполне. Пользователь создаёт кусочки кода, которые потом работают на нашем сервере. Пользователю удобно их писать и публиковать, а нам безопасно их исполнять. Читать полностью »

CodeRainbow: интерактивное изучение и документирование кода - 1

Часто программистам приходится разбираться с чужим незнакомым кодом. Это может быть и изучение интересных проектов с открытым кодом, и необходимость по работе — в случае присоединения к новому проекту, при анализе большого объема legacy кода и т.д. Думаю, каждый из вас сталкивался с этим.

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

Как и во многих других проектах с открытым исходным кодом, в сообществе Visual Studio Code используются запросы на принятие изменений. С их помощью разработчики совместно исправляют ошибки и добавляют новые функции. Недавно мы обновили общедоступную пробную версию GitHub Pull Requests for Visual Studio Code, тем самым устранив проблему, с которой мы и миллионы разработчиков сталкиваемся каждый день: невозможность просматривать исходный код там, где он был написан, — в редакторе.

GitHub Pull Requests в Visual Studio Code - 1Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js