Как стать автором
Обновить
30
8.1
Дмитрий Головин @GolovinDS

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

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

Микропроцессор Texas Instruments TMX 1795 — первый в истории?

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

 

Большинство современных инженеров склонны считать 1971 год началом революции в разработке микропроцессоров. Тогда увидели свет 4-битная микросхема  4004 от Intel, следом — 8-битный чип 8008. Но история становления микропроцессора гораздо насыщеннее и увлекательнее. Некоторые ранее не опубликованные документы показывают, как забытый сегодня чип, Texas Instruments (TI) TMX 1795, обогнал Intel 8008 и стал первым 8-битным микропроцессором. 

Читать далее

Кухонный компьютер Honeywell

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

Кухонный компьютер Honeywell описывается во многих местах, особенно во всемирной паутине, как диковинка - футуристический компьютерный продукт, который практически никогда не продавался.

На самом деле то, что рекламировалось как кухонный компьютер, было разработано как серьезный мини компьютер, для более серьёзных целей. H316, производимый Honeywell как часть семейства машин Series 16, никогда не предназначался для продажи даже как коммерческий продукт. 

Читать далее

4 способа разочаровать работодателя своими познаниями в DevOps-е

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

Разработчик, админ ты или тестировщик… Кажется, стоит только написать в резюме слово «DevOps», как твоя ценность как специалиста взлетает до небес. В статье мы под новым углом посмотрим на этот термин и разберем, как сделать так, чтобы строчка в резюме приобрела магическую силу и открывала вам двери в любые проекты. Поможет нам в этом эксперт Владимир Дроздецкий, преподаватель-практик курса «DevOps инструменты и практики».

Хотя уже несколько лет как DevOps является обыденным явлением в IT-индустрии, споры вокруг термина до сих пор не утихли и индустрия однозначно не может определиться, что это за мифический специалист. 

Что может пойти не так? Разбираем 4 типичных для рынка ситуаций.

Итак, начнём

Некоторые методы детектирования отладки iOS приложений

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

Изучение приложений на платформе iOS - это достаточно сложная задача, которая разрешима, если использовать правильный набор инструментов. Основа такого набора - устройство с установленным jailbreak и инструмент frida Frida.

Далее будет рассказано о нескольких способах детектирования инструмента frida из приложения. Заметим, что статья не преследует цели описания всех возможных подходов обнаружения frida, поскольку любая защита может быть снята: всё упирается во время, которое необходимо для анализа.

Читать далее

Уязвимости в iOS

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

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

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

В статье будет рассказано о самых интересных уязвимостях операционной системы iOS за последние 3 года.

Уязвимости iOS

Микрокомпьютер компании MITS – Altair 8800 появился на плате Azure Sphere

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


Около 40 лет назад первая персональная машина Altair 8800 считалась чем-то из мира фантастики и вымысла. Она не имела предшественников и была действительно чем-то новым, чего еще не придумывали и не создавали до. И ведь многие вещи, тестированные когда-то именно на ней, например, модульная программа, что реконструирует и расширяет систему, продолжают свою работу в настоящем времени, но уже в более современных технологиях. Но, конечно, сегодня, имея на руках телефоны и персональные ноутбуки, люди пройдут мимо такой «древней» конструкции, даже не узнав того, что именно с нее началась компьютерная революция.

Читать далее

Тестирование или управление качеством. Часть 3. Что такое качество?

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

В двух последних постах Что такое тестирование? и Организация тестирования я поделилась своими соображениями об испытаниях. Хотя между понятиями «тестирование» и «качество» есть тесная связь, одно из них не обязательно подразумевает второе. Тестирование лишь дает нам какое-то представление о качестве.

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

Читать далее

Тестирование или управление качеством? Часть 2. Типы тестирования

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

В предыдущей статье «Часть 1. Что такое тестирование?» я поделилась с читателями мыслями о том, в чем заключается суть тестирования. Во второй части моих рассуждений о тестировании и управлении качеством я подробно рассмотрю различные типы тестирования и проанализирую модели, которые помогают разработчикам визуализировать процесс тестирования, чтобы вовлечь в него всех участников команды.

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

Читать далее

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

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

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

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

Читать далее

Сравнение Java-записей, Lombok @Data и Kotlin data-классов

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

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

Я уверен, что вы уже видели примеры, как с помощью записей превратить обычный POJO ...

Читать далее

Использование Windbg для обратной разработки

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

Статья представляет собой мануал по тому как пользоваться Windbg. Будет рассмотрена "классическая" версия отладчика. Настроим внешний вид и изучим команды, которые можно использовать для исследования приложения.

Читать далее

Inline variables

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

Первоначальное назначение ключевого слова inline состояло в том, чтобы служить индикатором для оптимизатора, что встроенная подстановка функции предпочтительнее вызова функции, то есть вместо выполнения команды CPU для передачи управления в тело функции, копия тела функции выполняется без генерирования вызова. Эта оптимизация (inline expansion) основана на идее, что выполнение вызова функции является относительно дорогостоящим: оно требует перехода к новой подпрограмме, передачи аргументов функции и копирования возвращаемых значений. Inline expansion подавляет вызов функции путем копирования инструкций функции непосредственно в тело вызывающего объекта.

Читать далее

Java 15 и IntelliJ IDEA

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

В Java 15 появились sealed-классы и sealed-интерфейсы, с помощью которых стало возможным ограничивать иерархию классов и интерфейсов на уровне синтаксиса языка. Теперь возможные иерархии определяются декларативно. Этот функционал пока представлен в режиме превью (preview)

Также в Java 15 есть изменения в записях (Records), появившихся в Java 14. А сопоставление с образцом (pattern matching) для instanceof вошло в Java 15 как второе превью без изменений. Текстовые блоки (text block) из Java 13 включены в Java 15 как стандартная языковая конструкция. Изменений в них по сравнению с Java 14 нет. 

В этой статье я расскажу обо всех новых и обновленных языковых конструкциях Java 15, о том, как они вам могут пригодиться, и как их использовать в IntelliJ IDEA. Давайте начнем. 

Читать далее

Почти безопасные: пару слов о псевдо-нормальных числах с плавающей запятой

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

Арифметика с плавающей запятой - популярная эзотерическая тема в информатике. Можно с уверенностью заявить, что каждый инженер-программист по крайне мере слышал о числах с плавающей запятой. Многие даже использовали их в какой-то момент. Но мало кто будет утверждать, что действительно понимает их достаточно хорошо, и значительно меньшее число скажет, что знает все пограничные случаи. Эта последняя категория инженеров, вероятно, мифическая или, в лучшем случае, очень оптимистичная. В прошлом мне приходилось иметь дело с проблемами связанными с плавающей запятой в библиотеке C GNU, но я бы не стал называть себя экспертом по этой теме. И я определенно не ожидал узнать о существовании нового типа чисел, о которых я услышал пару месяцев назад.

В этой статье описаны новые типы чисел с плавающей запятой, которые ничему не соответствуют в физическом мире. Числа, которые я называю псевдо-нормальными числами, могут создать проблемы для программистов, которые трудно отследить, и даже попали в печально известный список Common Vulnerabilities and Exposures (CVE).

Читать далее

7 методов тестирования игр

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

Благодаря быстрому развитию технологий к 2025 году индустрия мобильных игр ожидает прироста в 300 миллиардов долларов. Об этом огромном росте игровой индустрии нам сообщает доклад Global data.

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

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

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

Кроме того, существует множество инструментов автоматизации тестирования игровых приложений, и мы это тоже обсудим.

Читать далее

Go: справляемся с конфликтами при блокировках с помощью пакета Atomic

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

Эта статья берет за основу Go 1.14.

Go предоставляет механизмы синхронизации памяти, такие как канал (channel) или мьютекс (mutex ), которые помогают решать различные проблемы. Касательно разделяемой памяти, мьютекс защищает память от гонки данных. Однако, несмотря на существование двух типов мьютексов, в целях повышения производительности Go также предоставляет атомарные примитивы памяти в пакете atomic. Но давайте сначала вернемся к гонкам данных, прежде чем углубляться в решения.

Читать далее

Используем черную магию для создания быстрого кольцевого буфера

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

Вчера я заглянул на страницу Википедии, посвященную кольцевому буферу (circular buffer), и был заинтригован предполагаемой техникой оптимизации, с которой до этого не был знаком: 

Реализация кольцевого буфера может быть оптимизирована путем отображения нижележащего буфера в двух смежных областях виртуальной памяти. (Естественно, длина нижележащего буфера должна в таком случае равняться некоторому размеру кратному страницы страницы системы.) Чтение и запись в кольцевой буфер могут выполняться в этой реализации с большей эффективностью посредством прямого доступа к памяти; те обращения, которые выходят за пределы первой области виртуальной памяти, автоматически переходят в начало нижележащего буфера. Когда смещение чтения продвигается во вторую область виртуальной памяти, оба смещения - чтения и записи - уменьшаются на длину нижележащего буфера.

В рамках реализации кольцевого буфера нам необходимо обработать случай, когда сообщение попадает на «разрыв» в очереди и должно быть перенесено (wrap around). Очевидная реализация записи в кольцевой буфер может полагаться на побайтовую запись и выглядеть примерно так:

Читать далее

Apache Camel и Spring Boot

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

Apache Camel — это фреймворк для интеграции приложений и эффективного взаимодействия между различными системами, с чем приходится часто сталкиваться в любой корпоративной инфраструктуре. Apache Camel позволяет разработчику сосредоточиться на логике процессов, не переводя данные в канонический формат, так как Camel поддерживает более 80 API для реализации различных протоколов и типов данных. Таким образом, разработчику — то есть вам — достаточно просто знать, как Camel соединяет все вместе. В этой статье мы по шагам рассмотрим, как интегрировать Apache Camel и Spring Boot.

Но прежде чем обратиться к примеру со средой Spring Boot, разберемся с основными понятиями и терминами Camel.

Читать далее

Фантомные типы в Swift

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

Не каждый язык со статической системой типов обладает такой строгой типобезопасностью, как Swift. Это стало возможным благодаря таким особенностям Swift, как фантомные типы (phantom types), расширения универсальных типов и перечисления со связанными типами. На этой неделе мы узнаем, как использовать фантомные типы для создания типобезопасных API.

Читать далее

Тестирование игр: лучшие практики и новые тренды

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

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

Читать далее

Информация

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