Как стать автором
Обновить
3
0

Ведущий инженер-программист (RTOS)

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

Как удалить «неудаляемые» приложения со смартфона

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


Чтобы увеличить привлекательность смартфонов, производители ставят на них как можно больше разных программ. Это понятно. Просто берём и удаляем ненужное… Стоп.

Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция 'disable'). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

Всё это надо зачистить.
Читать дальше →
Всего голосов 190: ↑179 и ↓11 +168
Комментарии 203

Chuwi выпустила крохотный ПК с 6 ГБ ОЗУ и четырехъядерным процессором

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

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

Сейчас этот ПК усилили, снизив при этом цену. Размеры компьютера, который называется Chuwi LarkBox Pro, не изменились — 2.4″ x 2.4″ x 1.7″. О характеристиках и возможностях — под катом.
Всего голосов 82: ↑76 и ↓6 +70
Комментарии 166

Git снизу вверх

Время на прочтение 27 мин
Количество просмотров 125K
У этого перевода не совсем обычная история. Системы контроля версий далеки от моих профессиональных интересов. Для рабочих проектов они мне требовались нечасто, причем, разные, так что, каждый раз, когда возникала такая необходимость, я заново вспоминала, как в них делается та или иная операция. А для личных проектов мне хватало возможностей Dropbox, хранящей историю версий файлов.


Изображение из твиттера @girlie_mac

Но вот однажды я на три незабываемых дня попала в роддом — это иногда случается с женщинами. Из развлечений у меня были новорожденная дочь и телефон с большим экраном. Дочь поначалу развлекала плохо (дома она быстро исправилась), а на телефоне помимо книг и фильмов обнаружился текст «Git from the bottom up», который оказался более чем годным… С тех пор прошло почти 3 года, подросшей дочке уже пора самой начинать использовать Git Git стал мейнстримом, если не сказать стандартом в современной разработке, а я с удивлением обнаружила, что перевода на русский этого чуда, полезного не только начинающим, но и продвинутым пользователям Git, до сих пор нет. Исправляю эту ситуацию.
Читать дальше →
Всего голосов 104: ↑102 и ↓2 +100
Комментарии 32

Как работает видеокодек. Часть 1. Основы

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

Вторая часть: Принципы работы видеокодека




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

Если рассматривать итоговый цвет как комбинацию т.н. основных цветов (красного, зеленого и синего), в нашей трёхмерной матрице определяем три плоскости: первая для красного цвета, вторая для зеленого и последняя для синего.
3D матрица RGB

Будем называть каждую точку в этой матрице пикселем (элементом изображения). Каждый пиксель содержит информацию об интенсивности (обычно в виде числового значение) каждого цвета. Например, красный пиксель означает, что в нём 0 зеленого цвета, 0 синего и максимум красного. Пиксель розового цвета может быть сформирован с помощью комбинации трех цветов. Используя числовой диапазон от 0 до 255, розовый пиксель определяется как Красный = 255, Зелёный = 192 и Синий = 203.
Всего голосов 58: ↑58 и ↓0 +58
Комментарии 13

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

Время на прочтение 7 мин
Количество просмотров 59K
Как и многие, я ждал появления ноутбуков серии Ryzen 4000h, потому что согласно тестам за счет уменьшения техпроцесса мобильные процессоры достигли паритета в производительности с десктопными в повседневных задачах. Как и многие, я с жадностью кинулся читать отзывы, и уже предвкушал момент покупки и владения новой железкой, как… Многие обзорщики и первые пользователи стали информировать сперва вскользь, потом все громче о проблемах с системой охлаждения (СО), точнее, это выглядело как упоминание о том, что ревущая турбина вынуждает играть пользователя в наушниках, а температуры на ВК и ЦП зашкаливают за 80-90 градусов Цельсия под нагрузкой.

Беглый анализ показал, что в ценовом диапазоне до 100 тыс. рублей этой проблеме больше или меньше подвержено большинство ноутбуков, имеющих на борту игровую ВК и ЦП с индексом h (имеющих 6 и более ядер что у красных, что у синих), а с другой стороны современный ноутбук представляет из себя устройство мало подверженное апгрейду (вспомните хотя бы ноутбуки до 3-го поколения Intel Core включительно, которые позволяли заменить процессор), и в случае необходимости увеличить производительность пользователю зачастую приходится продавать ноутбук и покупать новый. Однако все не так просто, и неприметная ссылка на видеообзор на YouTub'e выдала обзор современных устройств, которые не только не растеряли лучшие признаки лучших ноутбуков тех лет, но и приумножили их.

Из груди вырвался стон: «Клёво!» В действительности — речь пойдет о множестве устройств основанных на баребонах Clevo! С обзором одного из них Clevo N957TC. Добро пожаловать под кат! Поехали!

image
Читать дальше →
Всего голосов 20: ↑17 и ↓3 +14
Комментарии 128

Коммитите в опенсорсе, работая разработчиком? Разбираемся с правами (привет, nginx)

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


Ситуация с правами на код в Российской Федерации довольно интересная: по закону разработчик (физлицо) защищён очень и очень сильно. Нужно как-то весьма прилично косякнуть, чтобы оказаться неправым. А вот работодателю нужно довольно много и кропотливо бегать с бубном и бумагами, чтобы получить права на тот самый код, который пишется на его же зарплату.

Давайте рассмотрим, что говорят законы о правах на код с обеих сторон:

  • Когда и какие права возникают у вас (как физлица) на код.
  • Как правильно устроена передача имущественных прав на код работодателю.
  • Тимлид, который делал ревью, — он соавтор или кто?
  • Можно ли коммитить в свой pet-project с рабочего компьютера в рабочее время?
  • Какой геморрой предстоит пройти, чтобы правильно использовать код, если вы его заказали?

И так далее.

Поехали!
Читать дальше →
Всего голосов 65: ↑65 и ↓0 +65
Комментарии 78

Генераторы непрерывно распределенных случайных величин

Время на прочтение 15 мин
Количество просмотров 115K
Генератор случайных чисел во многом подобен сексу: когда он хорош — это прекрасно, когда он плох, все равно приятно (Джордж Марсалья, 1984)

Популярность стохастических алгоритмов все растет. Многие из них базируются на генерации большого количества различных случайных величин. Далеко не всегда равномерно распределенных. Здесь я попытался собрать информацию о быстрых и точных генераторах случайных величин с известными распределениями. Задачи могут быть разными, разными могут быть и критерии. Кому-то важно время генерации, кому-то — точность, кому-то — криптоустойчивость, кому-то — скорость сходимости. Лично я исходил из предположения, что мы имеем некий базовый генератор, возвращающий псевдослучайное целое число, равномерно распределенное от 0 до некого RAND_MAX

unsigned long long BasicRandGenerator() {
    unsigned long long randomVariable;
    // some magic here
    ...
    return randomVariable;
}

и что этот генератор достаточно быстрый. Я имею ввиду, что дешевле сгенерировать с десяток случайных чисел, нежели чем посчитать логарифм или возвести в степень одно из них. Это могут быть стандартные генераторы: std::rand(), rand в MATLAB, Java.util.Random и т.д. Но имейте ввиду, что подобные генераторы редко подходят для серьезной работы. Зачастую они проваливают разные статистические тесты. А также, помните, что вы полностью зависите от них и лучше использовать свой собственный генератор, чтобы иметь представление о его работе.

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


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

Равномерное распределение





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

Построение диаграммы Вороного методом 'разделяй и властвуй'. Релаксация Ллойда

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

Недавно, на хабрахабре была опубликована статья, целиком и полностью посвященная диаграммам Вороного. В статье автор подробно описывает алгоритм Форчуна, применяемый для построения Диаграммы Вороного за O(n*log(n)). Стоит отметить, что описание этого алгоритма не раз появлялось в рунете, в то время как о других алгоритмах (с той же асимптотикой) рассказано ровным счетом ничего. Данная статья исправляет это недоразумение, а также является отличным дополнением к уже опубликованному ранее материалу.

Ниже я расскажу о алгоритме 'разделяй и властвуй' построения диаграммы Вороного за O(n*log(n)), а также, основываясь на своем практическом опыте, о по-настоящему крутых штуках, в которых это применимо. Вообще, алгоритмы типа 'разделяй и властвуй' являются своего рода классикой программирования (думаю, про сортировку данным методом слышал каждый программист), хорошо параллелятся и легко читаются (если, конечно, знать основную идею алгоритма).
Всего голосов 34: ↑34 и ↓0 +34
Комментарии 5

Диаграмма Вороного и её применения

Время на прочтение 25 мин
Количество просмотров 120K
Доброго всем времени суток, уважаемые посетители сайта Хабрахабр. В данной статье я бы хотел рассказать вам о том, что такое диаграмма Вороного (изображена на картинке ниже), о различных алгоритмах её построения (за , — пересечение полуплоскостей, — алгоритм Форчуна) и некоторых тонкостях реализации (на языке C++).



Также будет рассмотрено много интересных применений диаграммы и несколько любопытных фактов о ней. Будет интересно!
Читать дальше →
Всего голосов 92: ↑89 и ↓3 +86
Комментарии 49

Краткий курс компьютерной графики: пишем упрощённый OpenGL своими руками, статья 2 из 6

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

Содержание курса



Улучшение кода






Official translation (with a bit of polishing) is available here.




Update:


Внимание, статья 4в даёт новую, более простую версию растеризатора.

Давайте знакомиться, это я.



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

В прошлый раз мы нарисовали проволочную сетку трёхмерной модели, в этот раз мы зальём полигоны. Точнее, треугольники, так как OpenGL практически любой полигон триангулирует, поэтому ни к чему разбирать сложный случай. Напоминаю, что этот цикл статей создан для самостоятельного программирования. Время, которое я здесь привожу — это не время чтения моего кода. Это время написания вашего кода с нуля. Мой код здесь только для того, чтобы сравнить ваш (рабочий) код с моим. Я совсем не являюсь хорошим программистом, поэтому ваш код может быть существенно лучше моего. Любая критика приветствуется, любым вопросам рад.

Пожалуйста, если вы следуете этому туториалу и пишете свой код, выкладывайте его на github.com/code.google.com и им подобные и давайте ссылки в комментариях! Это может хорошо помочь как и вам (другие люди могут чего посоветовать), так и будущим читателям.
Читать дальше →
Всего голосов 119: ↑116 и ↓3 +113
Комментарии 116

Интерполяция данных: соединяем точки так, чтобы было красиво

Время на прочтение 7 мин
Количество просмотров 158K
Как построить график по n точкам? Самое простое — отметить их маркерами на координатной сетке. Однако для наглядности их хочется соединить, чтобы получить легко читаемую линию. Соединять точки проще всего отрезками прямых. Но график-ломаная читается довольно тяжело: взгляд цепляется за углы, а не скользит вдоль линии. Да и выглядят изломы не очень красиво. Получается, что кроме ломаных нужно уметь строить и кривые. Однако тут нужно быть осторожным, чтобы не получилось вот такого:

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

Организация виртуальной памяти

Время на прочтение 14 мин
Количество просмотров 73K
Привет, Хабрахабр!

В предыдущей статье я рассказал про vfork() и пообещал рассказать о реализации вызова fork() как с поддержкой MMU, так и без неё (последняя, само собой, со значительными ограничениями). Но прежде, чем перейти к подробностям, будет логичнее начать с устройства виртуальной памяти.

Конечно, многие слышали про MMU, страничные таблицы и TLB. К сожалению, материалы на эту тему обычно рассматривают аппаратную сторону этого механизма, упоминая механизмы ОС только в общих чертах. Я же хочу разобрать конкретную программную реализацию в проекте Embox. Это лишь один из возможных подходов, и он достаточно лёгок для понимания. Кроме того, это не музейный экспонат, и при желании можно залезть “под капот” ОС и попробовать что-нибудь поменять.
Читать дальше →
Всего голосов 39: ↑39 и ↓0 +39
Комментарии 4

MMU в картинках (часть 1)

Время на прочтение 11 мин
Количество просмотров 73K
Хочу поговорить об устройстве управления памятью (Memory Management Unit, MMU). Как вы, разумеется, знаете, основной функцией MMU является аппаратная поддержка виртуальной памяти. Словарь по кибернетике под редакцией академика Глушкова говорит нам, что виртуальная память — это воображаемая память, выделяемая операционной системой для размещения пользовательской программы, ее рабочих полей и информационных массивов.

У систем с виртуальной памятью четыре основных свойства:
  1. Пользовательские процессы изолированы друг от друга и, умирая, не тянут за собой всю систему
  2. Пользовательские процессы изолированы от физической памяти, то есть знать не знают, сколько у вас на самом деле оперативки и по каким адресам она находится.
  3. Операционная система гораздо сложнее, чем в системах без виртуальной памяти
  4. Никогда нельзя знать заранее, сколько времени займет выполнение следующей команды процессора

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

К сожалению, по какой-то причине все вышеперечисленные товарищи недостаточно почтительно относятся к MMU, а их знакомство с виртуальной памятью обычно начинается и заканчивается изучением страничной организации памяти и буфера ассоциативной трансляции (Translation Lookaside Buffer, TLB). Самое интересное при этом остается за кадром.
Читать дальше →
Всего голосов 66: ↑65 и ↓1 +64
Комментарии 17

Информация

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