LINUX.ORG.RU

Избранные сообщения ksv

Оценка сложности кода/структуры проекта графами?

Форум — Development

Вопрос к подступающей пятнице,

есть проект, (на Python, но в общем случае не важно) – есть ли инструменты, позволяющие оценить и выявить сложность кода статическим анализом?

Например, графами, чтобы наглядно видеть зависимость вызовов, и, как следствие, линейный граф == хороший код, дерево == хороший код, ацикличный граф - норм, цикличный и запутанный == выявлены ноды (функции или классы), которые нарушают «нормальность».

В какую сторону копать?

 , , ,

omegatype
()

Будь проклят тот день...[С++ template hell]

Форум — Development

Портирую код с винды на линукс.

struct CDestroyer
{
...
    template <typename T>
    struct CHelper4
    {
        template <bool a>
        static void delete_data(T& data)
        {
            CHelper2<T>::delete_data<object_type_traits::is_pointer<T>::value>(data);
        }

        template <> // explicit specialization in non-namespace scope ‘struct CDestroyer::CHelper4<T>’
        static void delete_data<true>(T& data) //error: template-id ‘delete_data<true>’ in declaration of primary template

        {
            CHelper3::delete_data(data);
        }
    };

    template <typename T> 
    static void delete_data(T& data)
    {
        CHelper4<T>::delete_data<object_type_traits::is_stl_container<T>::value>(data);
    }
};
Получаю ошибки написанные в комментариях. Гуглинг показал, что частичная спецификация для функций недопустима по стандарту (ну а MSVS традиционно на это кладёт).

Вопрос: как это обойти?

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

 ,

eagleivg
()

python, практика, поиск ресурсов для обучения.

Форум — Development

Подскажите качественных ресурсов по задачам, желательно с возможностью посмотреть, как решают другие.
На checkio сделал задач 30 для новичков, ума не прибавилось (ну, немного).

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

 ,

masterdilly
()

Android, зонды, безопасность, СПО, паранойя

Форум — Mobile

Disclaimer1: Проблема с данным маном в том, что местной аудитории, например, плевать на ведроид, а тому же 4pda наплевать на фанатичный СПО и избавление от зондов. Рискнем и запостим здесь.

Disclaimer2: Все описанное является суммой наклопленного мной опыта вперемешку с моим личным мнением. Пишите комменты, будем улучшать-дополнять-чинить

Уровень прошивки

Практически все стоковые прошивки на сегодняшний день идут с gapps (Google Apps). Что же это за зверь:

  • Любое приложение (даже не требуещее никаких прав) может с ним общаться.
  • Gapps имеют доступ к сети.
  • Gapps позволяют Google в любой момент установить/удалить с вашего телефона любое приложение.
  • Gapps постоянно держат открытое сетевое соединение с серверами гугла (для нужд push-нотификаций).
  • Gapps — нереальное огромное количество кода. Стоковый образ (если верить opengapps) будет весить около 700Мб.

ААААА, как это удолить этот рассадник потенциальных уязвимостей и жора батарейки?

Сложный вопрос, на самом деле. Есть три варианта действий:

  • Новый и простой, и профитный способ. Появилась прошивка «LingeageOS for microG». Если ваше устройство поддерживает её, просто ставьте её и наслаждайтесь. Fdroid+MicroG+пуши+signature spoofing+unlp+OTA-обновления из коробки
  • Самый простой способ. Если ваш андроид достаточно старый (на достаточно новом не удастся отключить самый главный компонент gapps), из Настройки->Приложения отключите все, связанное с Google (особенно, Google Service Frameworks):
    • root не требуется;
    • push-уведомления работать не будут;
    • на устройстве останется огромная и потенциальная куча гугловского дерьма, хоть и менее активная.
  • Способ посложнее. Накатываем root и вручную удаляем все пакеты и библиотеки, требуемые гуглу:
    • требуется root и разблокировка загрузчика;
    • минимальное количество зондов без смены прошивку на полностью опенсорсную;
    • увы, в последних версиях андроида вам, скорее всего, придется оставить несколько пакетов (вроде GoogleSetupWizard), иначе система не загрузится.
  • Самый профитный способ. Ставим альтернативную прошивку (или мотаем до следующей секции и покупаем устройство с пгавославной прошивкой без зондов из коробки). Наслаждаемся.
    • Требуется root, разблокировка загрузчика, шаманство и местами смена устройства.

Я тут начал наслаждаться, но вдруг понадобились пуши, да и Uber требует зонды. Что делать?

Вдоль

Попробовать поставить MicroG, свободную реализацию клиентской части гуглозондов. Самая больная часть: помимо собственно MicroG вам нужно будет запилить себе Signature Spoofing. Коротко говоря, это обход защитного механизма, не позволяющего прикидываться gapps'ами кому попало. Для этого необходимо либо патчить прошивку при помощи Xposed/Needle/Haystack, либо использовать совместимую прошивку (смотрите список, по ссылке, их стало очень много). Все подробности по той ссылке.

MicroG позволяет завести пуши, сервисы геолокации (со множеством бекендов, ищите nlp location backend в f-droid) и большое количество софта (когда я в последний раз тыкал, работали даже покемоны).

Уровень софта

Без гуглозондов жить есть!

https://f-droid.org/ — каталог с опенсорсным софтом.

Предлагаю вам следующий список приложений, способный заменить типичный набор проприетари из типичной вендорской прошивки. Аналогичный список: https://github.com/Datenschutz/awesome-FOSS-apps

  • Yalp store. Позволяет ставить приложения из Google Play (да, иногда это все-таки нужно), в том числе через общий аккаунт. Не требует зондов.
    • Позволяет так же выкачивать купленные приложения (но не факт, что они заработают: они при работе могут проверять лиценизию через gapps, возможно, тут может помочь microg).
    • Альтернативно, воспользуйтесь моим решением для выкачивания софта прямо в свой репозиторий f-droid.
  • K-9 Mail. Почтовый клиент.
  • DAVDroid. Синхронизация контактов с owncloud/nextcloud.
  • Gadgetbridge. Синхронизация с умными часами и браслетами (pebble, mi band и некоторые другие)
  • NewPipe. Клиент для YouTube. Умеет воспроизводить видео в фоновом режиме как музыку, загружать файлы.
  • Odyssey. Просто материальный музыкальный плеер, но в последнее время очень нужный, т.к. вендоры повадились заменять в прошивке плеер на Google Music.
  • Набор простых и красивых затычек для различных приложений — simple mobile tools.
  • Файрволл AFWall+ файрволл (имеет Xposed модуль для расширения возможностей)
  • Amplify Battery Extender.
  • DNS66.
  • KDE Connect.
  • OpenKeychain.
  • OpenVPN FOSS.
  • Картография и навигация: Maps.Me (приз симпатий от комментаторов), OsmAnd (приз глюкалова от меня, но щито поделать).
  • Список стал очень жирным. Пока новые элементы не добавляю, думаю над критериями включения в него софта.

Если вы будете ставить проприетарный софт, помните о следующем:

  • Желательно зайти в настройки приложения и вручную запретить доступ ко всем ненужным разрешениям, дабы не промахнуться в нужный момент.
  • Отключите приложению фоновый доступ к сети (если у вас свежий Android) или вообще доступ к сети (если у вас стоит файрволл).
  • Малвари вроде «Сбербанк Онлайн» вообще лучше создать отдельный аккаунт на телефоне.
  • Яндексовским приложениям нельзя давать доступ к местоположению. Вообще никаким — все сливают.
  • Проприетарь может читать названия аккаунтов, даже не принадлежащих ей. Называйте их максимально обще, т.е. вместо «sportloto@syncserver.com» делайте «contacts sync».

Права суперпользователя

Читая васянский 4pda вы часто можете увидеть «ну и накатываем SuperSU.zip». Не делайте этого. Есть прекрасный опенсорсный superuser, совместимый со свежими ведроидами. Нужно лишь поставить zip (используйте beta на android >=6) и apk.

Если ваша прошивка основана на LineageOS, то все еще проще. Где-то рядом с загрузками в директории extra должен валяться zip, включающий встроенные и интегрированные в прошивку права суперпользователя. Профит.

XPosed

XPosed — опенсорсный фреймворк для низкоуровневых хаков.

  • Не доступен для свежих андроидов.
  • Позволяет заставить не увидеть root всякие «Сбербанки Онлайн».
  • Имеет кучу некрофильских и неопенсорсных модулей. Осторожнее.
  • Легким движением руки может окирпичить прошивку.
  • Полезные модули:
    • PlayPermissionsExposed
    • YouTubeAdAway (но все-таки советую использовать NewPipe, LightTube, WebTube, SkyTube или MiniTube. Тысячи их!)
    • XPrivacy — по своей сути это «песочница» для любого, даже системного, ПО. Xprivacy применяет правила ко всему ПО. Эти правила можно создавать самому или качать готовые. То есть, к примеру, если установлено нечто местами полезное, но попутно показывающее свою рекламу, Xprivacy можно просто запретить этому ПО доступ в сеть. Или если очередная косынка хочет интернет, список контактов, доступ к микрофону и камере, то с Xprivacy это легко и просто запрещается конкретно этой гадости и она даже будет при этом работать не имея доступа к тому, что ей будет запрещено.

Уровень устройства

Тут тоже всё плохо. Выбор:

  • Рандомный флагман с хорошей поддержкой LineageOS (CyanogenMod). Поддержка, вероятно, будет хорошей, секьюрити-апдейты будут приходить долго (например, для htc desire hd цианоген обновлялся до самого конца — декабря 2016 года), но вот версия андроида, скорее всего, застрянет. Обычно дорого. Можно искать по списку официально поддерживаемых линейкой устройств.
  • OneplusOne / Wileyfox Swift 1. Поставлялись с CyanogenOS, имеют хорошее коммьюнити разработчиков, будут долго обновляться в софтовой части. В железной — все плохо. 1+1 уже довольно старый и хорошие запчасти купить сложно. Wileyfox изначально имел несколько проблем, в т.ч. слабенькую батарейку. Компенсируется ценой, местами можно найти новое в продаже. Довольно бюджетно.
  • Fairphone 2. Очень дорого, очень хорошо. Но это в теории, как там на практике — хз, не пользовался, отпишитесь.
  • Рандомный телефон с официальным портом los. Сойдет, главное, чтобы фатальных багов в порте не было. Долгой жизни порта не ждите.
  • Рандомный телефон с васянским los. Совсем плохо, но если телефон уже куплен, ничего не поделать.
  • Рандомный телефон с васянским ведроидом, основанным на стоковой прошивке / без исходников / проч. Лучше такое не ставить, а подготовить прошивку самостоятельно, смотрите выше и ниже.

Следует также заметить, что:

  • Существует несколько устройств с CyanogenOS, без доступной Cyanogenmod. В комплекте идут сервисы microsoft, gapps и много разной другой блотвари. Исходники обычно зажабены. Пример устройств: Wileyfox Spark, Wileyfox Swift 2(|+|x).
  • Выбирая устройство, так же загляните на его страничку на 4pda. Ресурс хоть и васянский, но очень полезный: можно увидеть список доступных прошивок, FAQ по типичным проблемом, список самых вероятных заводских проблем (которые можно проверить еще перед покупкой).

Уровень физической безопасности

Для чего нужна физическая безопасность:

Допустим, ваш девайс попал в руки злоумышленнику.

  • Во-первых, вы хотите, чтобы он не имел никакой возможности прочитать важные файлы с вашего телефона (кейз ФБ-1).
  • Во-вторых, вы хотите узнать, не добавил ли он кейлоггеров в ваш загрузчик (кейз ФБ-2).

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

Я бы на вашем месте на это не рассчитывал.

  • Аппаратные защиты часто не надежны и опираются на принципах безопасности через неясность, в них переодически находят уязвимости
  • На прекрасных, казалось бы, телефонах Xiaomi вы не сможете разблокировать загрузчик, если с Xiaomi что-либо случится: разблокировка производится с участием интернета при помощи (работающей только под Windows) программы, требующей их аккаунта и доступа к интернету. У HTC похожая ситуация, но в несколько более мягких условиях.
    • Скорее всего, это доставит неудобств именно вам, а не злоумышленнику
  • Всякие проприетарные системы полнодискового шифрования тоже не выдерживают проверок специалистами.

Выводы:

  • Для хранения ваших секретных файлов в безопасности от ФБ-1 используйте, к примеру, Secrecy.
  • «Таблеток» от ФБ-2 на сегодняшний день нет. Промбируйте телефон при помощи скотча и волос и не расставайтесь с ним.
  • Лучше все-таки не хранить никакие важные данные на телефоне.

Модули сотовой связи

В каждом мобильном телефоне, почти каждом планшете есть GSM-модуль мобильной связи. Это —

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

Так что тут все настолько плохо, что я даже предложить ничего не могу. Страдайте.

Вроде, все, что хотел сказать. Выдыхаю

 , , , ,

derlafff
()

Помогите вспомнить книгу

Форум — Talks

Это был фантастический роман в нескольких книгах. Сюжет помню лишь кусками.

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

2. Какие-то существа этого мира ведут войну с другими на выживание.

3. Есть говорящая птица (то ли тетерев, то ли глухарь). В конце книги вылупляется новая принцесса этих тетеревов и этот тетерев дает новое потомство птицам.

Это произведение входит в цикл произведений этого автора. Он вроде русский фантаст.

 ,

Zodd
()

Многпоточность c++

Форум — Development

Собственно решил осилить сабж но в инете мало инфы(или я не умею пользоваться гуглом).Посоветуйте какие-нить книги на тему. Желательно с примерами и упражнениями.

 ,

wild_blood
()

Intermediate Haskell

Форум — Development

Что можно почитать хорошего на тему приемов среднего уровня и best practices при создании реальных неэзотерических программ на Haskell? Новичковые туториалы и теоркатовая наркомания не нать. Интересуют, например, обзоры современных прикладных библиотек, советы по проектированию и т.д.

 , ,

ovk48
()

Ubuntu 15.10, RawTherapee и обработка семейных фотографий

Галерея — Скриншоты

Пример конвертации фотографий в Darktable я уже публиковал. Там же я упомянул и RawTherapee — другой отличный свободный raw-конвертер. Теперь я решил обработать что-то с его помощью, тем более, что подоспела новая Ubuntu версии 15.10 с названием Wily Werewolf, что, кажется, переводится «Коварный оборотень».
Обработать я решил фотографию ребёнка. Сфотографировал, сбросил на компьютер, открыл в RT и призадумался. Расписывать 10 шагов, как в прошлый раз, не получится. Я внезапно обошелся всего пятью или около того. То ли RT проще, чем DT, то ли сюжет такой.
Итак, что мы делаем?


  • В свойства дебайера мы лезть не будем, у меня стоит amaze и меня это устраивает. Из-за особенностей камеры снимок условно недосвечен на полтора стопа (для минимальной установленной чувствительности и не слишком контрастной сцены это приемлемо). Вносим положительную поправку 1.5ev, Black +1000.
  • Тоновая кривая — своя собственная. Смотрим, где у нас на гистограмме лицо и поднимаем этот участок, делаем света более пологими (ничего сверхценного там не будет), придавливаем нижние тени (мы не хипстеры, нам «полка» в тенях ни к чему).
  • Баланс белого. Я не нашел отдельных множителей каналов (может, их там нет?). Поэтому водил пипеткой в районе лица и параллельно двигал ползунки. Ориентировочно кожа должна быть в районе a12 b14 в Lab, но это не догма. Здесь a и b скорее равны. Я не умею работать с цветом, всё время получается что-то неудобоваримое, пусть уж будет так.
    Отдельно гонять кривые Lab я не стал, просто слегка (+10) поднял Vibrance. Можно было бы этого и не делать, мало повлияло. На всякий случай указал цветовое пространство вывода — sRGB, конечно, не помню, что стояло по умолчанию, по-моему, оно и было.
  • В секции детализации поднял резкость (дурацкий термин) методом RL Deconvolution. Я так понимаю — тот же USM но вместо размытия по гауссу используется более сложный алгоритм. Результат мне понравился, использование такое же, как и у USM и описано в прошлый раз.
  • Шум я давить не стал, при таких условиях съёмки шум не является проблемой. Покрутил инструмент изменения контраста в зависимости от размера деталей. Инструмент мне понравился, но здесь им пользоваться не стал. Сделал ресайз до 25% оригинала и экспорт в jpg.


По-хорошему, делая портрет, неплохо бы залезть после конвертации в графический редактор, поправить мелкие дефекты кожи, добавить контраста, блеска глаз и лоска с помощью Dodge/Burn, сделать избирательный USM и т.д. Но тут уж я не стал — фото для себя, итак вполне неплохо.

Что имею сказать от себя лично. RT и DT — оба отличные инструменты. RT показался мне проще и понятнее и понравился больше. Но со своей задачей отлично справляются и тот и этот.

>>> Просмотр (3600x1080, 2207 Kb)

 , ,

ist76
()

Чем Canonical собирает образы Ubuntu?

Форум — General

Какие программные средства используются в Canonical для сборки установочных образов Ubuntu, релизных и daily builds?

Мне кажется, что это не стандартные Debian'овские инструменты live-build, live-boot и прочие. Во-первых, по строению Ubunt'овские LiveCD отличаются от того что по умолчанию делает live-build. Во-вторых, live-build не умеет в UEFI, а убунтовские диски поддерживают UEFI.

В самом деле, они же не вручную это делают. Есть какой-то скрипт, которому скармливают адрес репозитория, список пакетов, а на выходе получают ISO. Вот что же это за скрипт такой?

 , , ,

Camel
()

It works!

Галерея — Рабочие места

Привет, ЛОР.
На фото домашнее рабочее место - столик, два монитора, чай каркаде со льдом, геймпад (куда ж без него, на рабочем месте-то:)). На одном мониторе ЛОР, на втором - Assassin's Creed IV: Black Flag, YOBA 2014 года, которая запущена на семёрочке максимальной, которая запущена в qemu-kvm, который запущен на Gentoo ~amd64. Проброшенная в виртуалку видеокарта - Radeon R9 270X

Прошлое фото было больше года назад, с того времени много чего изменилось:

  • Я сделал второй этаж пригодным для жизни. Ремонт длился болше полугода, и вот месяц назад я таки сюда въехал
  • Ещё прошлым летом сменил ту ЭЛТху на DELL U2312HM. Глаза мне безумно благодарны
  • Сам компьютер обрёл таки корпус, самодельный, из двух барабанов от стиральной машинки
  • На процессоре висит килограмовый Zalman'овский кулер, т.к стоковый для AMD FX8350 осточертел своим рёвом
  • Три месяца назад докупил второй монитор и вторую видеокарту
  • Кот, с сожалению, находится в городе в данный момент. Сильно плохо ему было тут, под окном вечно орут всякие звери, и он сходил с ума

На фоне можно увидеть матрас без кровати - он так и будет, высокие постели - зло. Второй монитор иногда разворачиваю в сторону матраса, и смотрю кино. Окно на втором фото в районе 4-5 часов вечера начинает мешать работать - светит в голову и в мониторы. Решается жалюзями. Диванчик будет переставлен, вместо него - возьму кресло с одним деревянным поручнем под правую руку, для мышки. Но, в принципе, и с дивана неплохо работается и играется.
Алсо, дико напрягает ворох проводов, но я ещё не придумал что с этим можно сделать.

Ругайте! :)

Второе фото

>>> Просмотр (2560x1920, 1290 Kb)

NeverLoved
()

Квадрокоптер своими руками

Форум — Talks

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

Интересно выглядят The DIY Triple-Rotor Helicopter или DIY Arduino Helicopter with Obstacle Avoidance

grim
()

iptables форвардинг

Форум — General

Привет всем, нужно на хосте 10.0.0.2 организовать форвардинг: 10.0.0.2:4567 => 10.0.0.3:7654. Как? Гуглил, пробовал делать по советам, но форвардинг всё равно не идёт.

jcd
()