Рубрика «Программирование» - 411

Операционные системы с нуля; уровень 3 (старшая половина) - 1В этой части мы допишем обработку прерываний и возьмёмся за планировщик. Наконец-то у нас появятся элементы многозадачной операционной системы! Разумеется это только начало темы. Одно прерывание таймера, один системный вызов, базовая часть простого планировщика потоков. Ничего сложного. Однако этим мы подготовим плацдарм для создания полноценной системы, которая будет заниматься самыми настоящими процессами безо всяких "но". Прямо как в этих ваших линупсах и прочих. До конца этого курса осталось уже чуть менее половины.

Нулевая лаба

Первая лаба: младшая половина и старшая половина

Вторая лаба: младшая половина и старшая половина

Третья лаба: младшая половина

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

Компилирующий тулчейн является одним из самых больших и самых сложных компонентов любой системы, и, как правило, основан на опенсорсном коде, либо GCC, либо LLVM. На Linux-системе, только ядро операционной системы и браузер имеют больше строк кода. Для коммерческих систем, компилятор должен быть абсолютно надёжным, каким бы ни был исходный код, он должен генерировать надёжный, высокопроизводительный бинарный код.

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

Сколько стоит компилятор? - 1

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

Использование программирования в сетевом деле уже стало трендом, поэтому в продолжении статьи Зачем сетевым инженерам программирование я начинаю серию небольших заметок про автоматизацию решения тех или иных практических задач. Чтобы развеять ореол сложности вокруг этой темы, будут опубликованы некоторые примеры и кейсы, в основном с использованием Python, и даны ссылки на более глубокий материал и техническую документацию. Вступительная статья этого цикла ниже.
Читать полностью »

Все думают, что программист большую часть своего рабочего времени пишет код. Кроме самих программистов. Они знают, что большую часть времени они этот код читают. Читают, силясь понять, как же он работает, зачем он здесь написан и что с ним теперь делать.

Дольше всего приходится вычитывать не хитрые алгоритмы, и не решения с алгебраическими типами данных и монадами, а огромные куски простого кода: методы на 500 строк, скрипты на 1000 строк, классы на 1500 строк. Все они доставляют индустрии проблем не меньше, чем печально известное NullPointerException.

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

Опишу один из способов как можно мониторить «ферму» и удалённо перезагружать в случае если она зависла, «отвалилась» видеокарта или программа для майнинга, пропал интернет, завис роутер.

Преимущества GSM-розетки:

  • Автоматическая перезагрузка «фермы», даже если она «жестко» зависла.
  • Вы будите проинформированы о перезагрузке фермы. Даже если у Вас в этот момент отсутствует интернет на мобильном. Вам приходит обыкновенная СМС.
  • Googl Drive — всегда работает в «облаке», без вашего участия, проверенно более 5 лет.
  • Цена вопроса ~ 800 грн. + 1 грн в год. (за любой тариф от Киевстара)

Недостатки других систем по мониторингу:

  • Программный WATCHDOG — кто бы что не говорил, но… зависает!
  • USB WATCHDOG — не отсылает оповещение, бывает не перезагружает если по какой-то причине закрылся «майнер».
  • Wi-Fi умные розетки автоматически не перезагрузят систему. Необходимо на них заходить и в ручную отключать и включать. При условии что у неё не «отвалился» интернет и не завис роутер.
    Удалённый мониторинг «фермы» с помощью GSM-розетки - 1

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

PHP слоник для привлечения внимания

Шутки про PHP — уже отдельный жанр в различных сообществах программистов. Некоторые не любят PHP, потому что {lang_name} намного лучше. А кого-то он вполне обоснованно расстраивает.

Я же PHP люблю. Не смотря на его косяки. Этот язык был создан для конкретной цели и решает он свою задачу хорошо. Схема "принял — обработал — отдал — умер" очень эффективна и решает проблему небольших утечек памяти.

В моей работе PHP используется постоянно. Так сказать, это основной backend язык, используемый в моих проектах. За время работы у меня появились некоторые пожелания и замечания. Решил поделиться с обществом. Кому интересно, добро пожаловать под кат.

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

Swift — это новый язык программирования для разработки приложений на iOS, macOS, watchOS и tvOS. Тем не менее, многие части Swift будут схожи с вашим опытом разработки на C и Objective-C.

Swift предлагает вам свою версию всех фундаментальных переменных C и Objective-C, включая Int для целых значений, Double и Float для значений с плавающей запятой, Bool для логических и String для текстовых. Так же Swift предлагает мощные версии трех типов коллекций, Array, Set и Dictionary, которые будут описаны в главе «Типы коллекций».

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

Кроме уже знакомых вам типов данных, Swift представляет современные типы данных, которые вы не встретите в Objective-C, такие как «Кортежи». Они дают вам возможность создавать и использовать группы значений. Вы можете их использовать, чтобы в результате функции возвратить несколько значений в одну обособленную переменную.

Swift так же представляет необязательные типы данных, в которых отсутствует значение. Они. Могут говорить как «Здесь есть значение, которое равно x», так и «Здесь нет значения вовсе». Их использование похоже на на использование указателей nil в Objective-C, но они работает везде, а не только для классов.

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

Продолжаем публиковать интересные задачи и вопросы с собеседований в различные IT-компании мира.

КДПВ
На этот раз в подборку попали вопросы для будущих инженеров-программистов в Symantec. В преддверии майский праздников, задачи выбраны не самые сложные, но требующие некоторого размышления. Просим также писать в комментариях интересные вопросы и задачи, которые встречались Вам на собеседованиях.
Читать полностью »

image

WebRTC, технология голосовых и видеозвонков в браузерах (а еще realtime передачи произвольных данных, peer-to-peer пробивания NAT и захвата экрана) никогда не была простой. Долгая история, несовместимости между браузерами, запутанная документация, множество решаемых задач и используемых протоколов. Возможность позвонить и принять звонок из браузера всегда была одной из ключевых «фишек» нашей платформы Voximplant, и так как мы в этом неплохо разбираемся, то стараемся следить за интересными статьями и адаптировать их для аудитории Хабра. Под катом перевод свежей статьи от ребят из callstats.io — сервиса сбора статистики по качеству звонков для браузера. В небольшой статье они рассказывают о протоколе RTP с помощью которого, собственно, браузер и передает пакеты с голосом или видео.
Читать полностью »

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

Понятное дело, что полноценные Swift-программисты уже знают все это, поэтому напомню, что данный Гайд не для вас, а для таких же новичков, как и я.
Читать полностью »


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