Как стать автором
Обновить
74
0
Роман @RomeoGolf

инженер-программист

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

Ramos W41 — 4-х ядерный планшет по доступной цене

Время на прочтение6 мин
Количество просмотров56K
image
Спустя год после выхода двухъядерных чипов Rockchip RK3066 и Amlogic 8726-MX китайские производители снова обновляют свой парк чипов.
Итак, в этом году нас ожидают такие 4-х ядерные решения:
Allwinner A31 — 4 ядра Cortex-A7 с частотой до 1.4ГГц, GPU PowerVR SGX544MP2.
Rockchip RK3188 — 4 ядра Cortex-A9 c частотой до 1.8ГГц, GPU Mali 400MP4.
Actions ATM7029/ATM7025 — 4 ядра Cortex-A9 c частотой до 1.5ГГц (1ГГц в ATM7025), GPU Vivante GC1000+.

Из хорошо известных, но мало распространённым в китайской продукции, начал использоваться чип Samsung Exynos 4412 — 4 ядра Cortex-A9 с частотой до 1.4ГГц, GPU Mali 400MP4.

Судьба представленного в прошлом году чипа Freescale i.MX 6 Quad (4 ядра Cortex A9 1.2ГГц, CPU Vivante GC2000) пока туманна. Мой коллега vvzvlad уже писал о планшете Ampe A10 Quad. Весьма перспективный чип, но GPU Vivante GC2000 не получила хорошей поддержки со стороны разработчиков, из-за чего существуют проблемы с 3D-играми.

Из новых экранов нас ожидают:
9.7-дюймовые планшеты с IPS экраном разрешением 2048х1536 пикселей.
10.1-дюймовые планшеты с разрешением экрана 1920x1200 пикселей.
И из новинок на китайском рынке — 9.4-дюймовые планшеты с разрешение экрана 1280х800.
Главная проблема всех планшетов произведённых в Китае — качество экранов. В случае с 9.4 дюймами производители выбрали правильное решение — использовать проверенный экран произведённый LG Display для планшетов Sony Tablet S.
На данный момент планшетов с диагональю 9.4 дюйма всего 3. Это Pipo M8 на RK3066, Ramos W42 на Samsung Exynos 4412, Ramos W41 на Actions ATM7025.
Цена Ramos W42 довольно высока (~$250), Pipo M8 на RK3066 можно отнести к «устаревшим». Из интересного остаётся планшет Ramos W41, про который и пойдёт речь в данном обзоре.
Читать дальше →
Всего голосов 23: ↑18 и ↓5+13
Комментарии18

Современный CMake: 10 советов по улучшению скриптов сборки

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

CMake — это система сборки для C/C++, которая с каждым годом становится всё популярнее. Он практически стал решением по умолчанию для новых проектов. Однако, множество примеров выполнения какой-либо задачи на CMake содержат архаичные, ненадёжные, раздутые действия. Мы выясним, как писать скрипты сборки на CMake лаконичнее.

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

Введение в CMake

Время на прочтение7 мин
Количество просмотров528K
imageCMake — кроcсплатформенная утилита для автоматической сборки программы из исходного кода. При этом сама CMake непосредственно сборкой не занимается, а представляет из себя front-end. В качестве back-end`a могут выступать различные версии make и Ninja. Так же CMake позволяет создавать проекты для CodeBlocks, Eclipse, KDevelop3, MS VC++ и Xcode. Стоит отметить, что большинство проектов создаются не нативных, а всё с теми же back-end`ами.
Читать дальше →
Всего голосов 62: ↑56 и ↓6+50
Комментарии23

Иерархические модели в Qt

Время на прочтение8 мин
Количество просмотров57K
Продолжаю тему создания моделей с использованием Qt MV. В прошлый раз была критическая статья по поводу того, как делать не надо. Переходим к позитивной части.

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

Создание же иерархических моделей – более сложная задача. О ней и пойдет речь в этой статье.
Заинтересовавшихся прошу под кат
Всего голосов 24: ↑23 и ↓1+22
Комментарии7

Использование моделей в Qt

Время на прочтение4 мин
Количество просмотров100K
За последний год пришлось довольно много работать с Model/View фреймворком Qt. Приходилось как писать собственные модели, так и переделывать существующие. И вот, после созерцания очередного творения, решил представить общественности некоторые наработки.

Начнем с очевидного:

Не используйте виджеты

Все эти QTableWidget, QListWidget и QTreeWidget — не для вас.

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

Одни плюсы, а минусов, при этом, не замечено.
Читать дальше →
Всего голосов 61: ↑51 и ↓10+41
Комментарии42

Model-View в QML. Часть четвертая: C++-модели

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

Поскольку основное предназначение QML — это создание интерфейсов, то в соответствии с шаблоном MVC, на нем реализуются представление и контроль. Для реализации же модели, совершенно логично напрашивается C++. Здесь у нас будет гораздо меньше ограничений и мы сможем реализовать модель любой сложности. Кроме того, если значительная часть программы написана на C++ и данные поступают именно оттуда, то лучше всего там же поместить и модель.


От использования такой модели может отпугнуть кажущаяся сложность реализации. Я не стану спорить с тем, что C++ не самый простой язык. Он посложнее QML и требует больше осторожности, чтобы не выстрелить себе в ногу, это факт. Несмотря на это, на практике не все так уж и страшно.


Во-первых, не будем забывать, что мы пишем не на чистом С++, а с использованием Qt. Такие вещи как parent-child в QObject, implicit sharing для контейнеров, сигналы и слоты, QVariant и многое другое очень сильно упрощают и автоматизируют работу с памятью, чем избавляют разработчика от массы головной боли и повышают надежность. Иногда даже создается впечатление, что пишешь на динамическом языке программирования. Это же сокращает пропасть между QML и C++, делая переход между ними более-менее плавным.


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


В общем, освоить C++-модели очень даже стоит. В особенности это касается QAbstractItemModel, с которой мы и начнем.


Model-View в QML:


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

Вы все еще пишете многопоточку на C++ с ошибками синхронизации?

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

Демонстрация идеи будет проходить на живых примерах кода на современном C++. Большинство описанных решений я применял сначала на собственных проектах, а теперь часть этих подходов уже используется в нашей собственной микроядерной операционной системе «Лаборатории Касперского» (KasperskyOS).

Сразу хочу оговориться, что тема многопоточности — очень большая и серьезная. И эта статья — не полноценный анализ проблем многопоточки, а только частНЫе (но довольно частЫе) кейсы, когда мы вынуждены использовать мьютексы.
Читать дальше →
Всего голосов 50: ↑51.5 и ↓-1.5+53
Комментарии133

Радиоэфир без регистрации и СМС

Уровень сложностиПростой
Время на прочтение23 мин
Количество просмотров23K

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

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

В старшем возрасте я понял, что могу позволить завалить себя радейками и время от времени покупал различные недорогие модели, которые выбирал лишь по цене и внешнему виду. Но на удивление связать серенькие радиостанции с фиолетовыми или чёрными не получалось, даже если выбрать один и тот же номер канала. Пришлось разбираться, и всё оказалось куда сложнее, чем просто выбрать переключателем номер канала и нажать кнопку PTT (Push-To-Talk). Ну и осложнилось всё задачей не получить по шапке за эфир на частотах, где не следует этого делать. Для прояснения ситуации для начинающих и создан этот пост.
Читать дальше →
Всего голосов 83: ↑94 и ↓-11+105
Комментарии93

Drag'n'Drop в QML — это просто! Или 5 шагов до цели

Время на прочтение6 мин
Количество просмотров18K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

Drag'n'Drop является неоспоримо важным элементом взаимодействия пользователя и графического окружения. К сожалению, в QML нет встроенного механизма Drag'n'Drop для View. Поэтому, я написал небольшой пример на основе GridView с 16 изображениями.

Этот пример Drag'n'Drop-а не претендует на совершенство (есть несколько других реализаций, которые визуально возможно более совершенны), а больше преследует цель показать, что QML является очень гибким и простым средством разработки.

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


5 шагов до цели
Всего голосов 57: ↑45 и ↓12+33
Комментарии16

Зачем Программисту Микроконтроллеров Линейная Алгебра (или Как Найти Угол Между Векторами?)

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров11K

В программировании микроконтроллеров часто возникает задача найти угол между векторами.

Это всяческие встраиваемые системы, где есть подвижные, вращающиеся детали: PTZ камеры, поворотные платформы для радаров, турели, ветрогенераторы, солнечные панели, SDR обработка и прочее.

В данном тексте я приведу простое и понятное решение задачи вычисления угла между векторами на языке программирования Си.

Читать далее
Всего голосов 20: ↑19.5 и ↓0.5+19
Комментарии105

Разбор монады ContT, или как написать продвинутый goto, генераторы и файберы на хаскеле

Уровень сложностиСложный
Время на прочтение7 мин
Количество просмотров1.1K

В этой статье я разберу монаду ContT, и покажу как вернуть return и другие control-flow операторы из императивных языков программирования, которых мне так нехватало, когда я начинал изучать хаскель.

Читать далее
Всего голосов 9: ↑8 и ↓1+7
Комментарии2

Настоящая причина, по которой вы не станете сеньором

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров8.7K

История о воробушках, правильном фидбеке и житейских проблемах/

В 1958 году Мао Цзэдун инициировал «Большой скачок» — организованную китайской коммунистической партией кампанию по трансформации страны в индустриально развитое государство.

Акция «Четыре зла» входила в число первых шагов, предпринятых в рамках «Большого скачка». Под девизом «Человек должен победить природу» власти нацелились на уничтожение четырех вредителей: крыс, мух, комаров и воробьев.

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

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

Читать далее
Всего голосов 36: ↑19 и ↓17+2
Комментарии17

Эксплуатация детей через игры. Золотая лихорадка среди детей Америки

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

Roblox — это калифорнийская социальная платформа для детей 10-12 лет и подростков, на которой пользователи создают или посещают виртуальные, обычно многопользовательские, игры. Вот данные статистики на конец 2023 года, которые приводятся на официальном сайте платформы:

Читать далее
Всего голосов 97: ↑86.5 и ↓10.5+76
Комментарии149

Что такое Архитектура

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

Существует множество определений термина "Архитектура ПО", от устаревших и неформальных до слишком абстрактных и претендующих на остроумие. К примеру, можно упомянуть сайт Института Программной Инженерии (SEI) Университета Карнеги-Меллона, в электронной библиотеке которого есть соответствующий документ.

Читать далее
Всего голосов 10: ↑9 и ↓1+8
Комментарии6

Десять английских идиом, которые поставили меня в тупик

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров52K

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

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

Добро пожаловать под кат
Всего голосов 59: ↑64.5 и ↓-5.5+70
Комментарии126

Как пройти испытательный срок джуну

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров6.7K

Мой испытательный срок в качестве младшего разработчика состоялся в 2020 году, мне тогда было 28 лет. Признаться, это была целая эпопея, которую я вспоминаю до сих пор. Июльская жара, адовые задачи, дикие переработки и лоу-фай музыка по утрам. Здорово, что тот период остался в прошлом. Жаль, что он больше не повторится.

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

Читать далее
Всего голосов 29: ↑21 и ↓8+13
Комментарии18

Неразрешимые проблемы программирования

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров12K

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

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

Читать далее
Всего голосов 35: ↑36 и ↓-1+37
Комментарии28

Безопасность памяти меня не волнует

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров8.2K
Фото с сайта платформы CHERIoT, проекта Microsoft по решению проблем с доступом к памяти IoT-устройств на аппаратном уровне

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

То же касается и безопасности памяти. Для меня тот факт, что 70% уязвимостей возникают в результате её отсутствия, не говорит о важности этого аспекта. Важность безопасности памяти в том, что один связанный с ней баг может полностью подорвать все гарантии, на которые я опираюсь.
Читать дальше →
Всего голосов 27: ↑30.5 и ↓-3.5+34
Комментарии7

Экзокосмонавтика и точки Лагранжа или держитесь подальше от суперземель

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

Романтическая научная фантастика XX века, а тем более космооперы, по-видимому, почти не учитывали фактор существенного отличия гравитации у разных планет, на которые приходится эпизодически высаживаться или колонизировать их. Как я уже писал в некоторых публикациях, в особенности, «Суперземля как иллюзия» и «Гикеаны, потомки нептунов», мы в настоящее время настолько одержимы идеей, что среди экзопланет найдётся множество жизнепригодных или даже обитаемых, что на месте мининептуна всегда готовы увидеть суперземлю. Впрочем, такое заблуждение характерно не только для нашего времени. Ещё в начале XX века Венера считалась «юной сестрой» Земли (так как предполагалось, что, чем ближе планета к Солнцу, тем позже она сформировалась), что там может царить тропическая эра, подобная мезозою, шуметь экзотические леса, а обширные океаны из-за сильной минерализации могут быть наполнены «зельтерской водой». Климат Венеры и её парниковый эффект – тема для отдельной публикации, и пока ограничусь ссылкой на это исследование 2019 года, в котором выдвигается гипотеза, что бесконтрольный парниковый эффект на Венере существует лишь чуть более 700 миллионов лет, а до этого там могли существовать вполне комфортные для жизни условия. А в этой статье попробуем обсудить феномен гравитационных колодцев и их опасность при сближении с суперземлями. Отдельно поблагодарю уважаемого @ilmarinen за его интереснейшие публикации о гравитационных манёврах в ныне закрытом корпоративном блоге «Маклауд», под впечатлением от которых я взялся писать эту статью.     

Читать далее
Всего голосов 108: ↑121 и ↓-13+134
Комментарии113

Python — list/set/dict/generator comprehensions

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.5K

Генераторы коллекций - короткий(относительно цикла for) способ создавать коллекции на основе других коллекций.

Читать далее
Всего голосов 15: ↑12 и ↓3+9
Комментарии11
1
23 ...

Информация

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