Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…

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

О разрешениях для приложений в Андроид

Рубрика: android

Статья вроде бы про базывые вещи, которые касаются безопасности вас от вашего телефона на Андроид. Конкретно - речть идет о разрешениях, которые вы выдаете приложению на Андроид, а также о том, что за этим может последовать.

Повторюсь, что ничего нового - но позновательно.

Итак, читаем.

О шифровании в Андроид, или как скрыть фото от чужих глаз в случае потери телефона

Рубрика: android

Задумался о шифровании данных в Андроид. Конкретно - применительно к очень простой практической задаче - как скрыть фото от чужих глаз в случае потери/кражи телефона.

Для начала - немного философии. Как известно, телефон на базе android 5+ имеет встроенные инструменты шифрования самого устройства. Для того, чтобы убедиться, идем: Настройки - Безопасность - зашифровать данные. Если там стоит "Зашифровано", то внутренняя память Вашего телефона под защитой. Ну, как под защитой - при вводе пин-кода или пароля данные разблокируются. Отсюда мораль: если Вы не используете пин/пароль на телефон, то данные не защищены никак!

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

Таким образом, получается, что внутренняя память телефона защищена. А что с "внешней"? (Ну, то есть с SD карточкой в телефон).

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

В интернетах пишут, что если установить пин на 6+ символов, то появится пункт "Шифровать внешнюю SD карту". У меня не получилось. Ну, будем рыть дальше...

В общем, по итогам расследования. Есть 2 пути шифрования:

  • первый описан тут: https://habrahabr.ru/company/cybersafe/blog/243463/ Коротко: все медиафайлы прогоняются через редиректор, на папку натравливается примонтированный киптоконтейнер... Плюс: файлы в контейнере, следовательно, их названия и структура тоже скрыты. Минусы: не работает :)
  • зашифровать на уровне ФС, например, при помощи encdroid (https://play.google.com/store/apps/details?id=org.mrpdaemon.android.encdroid) или аналогичных (Cryptonite - https://play.google.com/store/apps/details?id=csh.cryptonite). Они создают EncFS файловую систему. Минусы - структура каталогов остается прежней, шифруются только файлы и изменяются их имена. Ну и - необходимо каждый раз добавлять файлы "ручками". С просмотрщиком работать неудобно.
  • использовать приложения всё-в-одном. Это я уже позже дошел, "потыркавшись" в тупики, о которых расскажу ниже.
Сначала мне показалось, что для моих задач - скрыть фото от посторонних глаз, на случай утери телефона - второй путь самое оно. Попробовал.

Для истории: скачиваем EncDroid, запускаем.

Там идем в Settings, ставим галочку в "Enable SD Card", и в "External SD Card preferenses" - выставляем путь до карточки (в моем случае это /storage/sdcard0)

Создаем зашифрованный "контейнер", помещаем в него файлы... оригиналы не забываем подчищать (на тесте я этого не делал).

Работать - неудобно. Зашифрованный контейнер не прозрачен для программ, увы.

Что же... пробуем первый путь.

Устанавливаю https://play.google.com/store/apps/details?id=com.cybersafesoft.cybersafe.mobile.lite

Ограничения лайт-версии - пароль в 2 симвлоа.. ну, попробуем так.

Создаем сейф, помещаем туда фото. Как минимум - фото в сейфе можно посмотреть встренным просмотрщиком. Не фонтан, но уже более менее нормально. Но вот не монтируется на папку никак! Соответственно, все пляски вокруг этой софтины заканчиваются невозможностью нормального монтировнаия...

Еще на encfs работают:

https://play.google.com/store/apps/details?id=com.giraone.encmanfull

https://play.google.com/store/apps/details?id=com.boxcryptor.android&rdid=com.boxcryptor.android

Последний, кстати, я поставил себе.

"Тупой как пробка", то есть умеет делать хранилище, помещать в него файлы... Неудобно то, что в его том не закачать файлы массово. Не просто неудобно, а очень неудобно (у меня 1000+ фото, заливать по одному - это наверное даже не на неделю задача).

В итоге, попробовал encdroid: https://play.google.com/store/apps/details?id=org.mrpdaemon.android.encdroid

Попробовал поработать с ней... неудобно. Полез смотреть дальше. Нашел такую штуку: https://play.google.com/store/apps/details?id=ru.vsa.safephotolite&rdid=ru.vsa.safephotolite

Из плюсов - работает, шифрует. Есть свой просмотрщик. Пароль просит при входе. Экспорт с одной стороны сделан хорошо - то есть "забраешь" фото в приложение, после чего тебе спрашивают - не хотите ли удалить исходник. Делает (вручную) резервные копии. В настройках есть пути до файлов. То есть можно обеспечить внешний бекап.

Что я и сделал: установил FolderSync Lite (https://play.google.com/store/apps/details?id=dk.tacit.android.foldersync.lite&rdid=dk.tacit.android.foldersync.lite), предложив ей отправлять сейф на Яндекс диск по WebDav. Так как файлы хранятся по одному, то, в общем - нормальный способ, не перегруженный трафиком.

В итоге: "всё работает" (что прекрасно), но не без ручных операций, увы. То есть не получилось сделать так, чтобы все фото из одной папки автоматически были бы подхвачены и зашифрованы... Да и синхронизация именно в версии Light FolderSync'a - автоматом "не работает", "только ручками". Но основная задача - скрыть фото от чужих глаз в случае потери телефона - решена.

ПС. на фоне этого всего стал чуть лучше относиться к Apple - они хотя бы изначально строят систему так, чтобы пользователь вообще не забивал себе голову "что будет если я потеряю телефон с флешкой,..." - они просто не дают ставить свои SD карты + шифруют на внутренней памяти всё, что можно.

Как перепелить фокусировочный экран с Зенита на Pentax

Рубрика: фото

Как известно, съемка мануальной (неавтофокусной) оптикой - занятие весьма приятное. Я, например, очень люблю старые стекла. Картинка, цвет, объем, платика и т.д. Но есть одно "но": если на k-3 автофокус хороший, и подсказка работает "как надо", то k100Super этим похвастаться не может. Ну, то есть, он "как-то работает", но не идеально.

Решение подсказал Сергей Глебов (http://www.penta-club.ru/forum/user/31622-sergag/) - он перепилил несколько фокусировочных экранов со старых Зенитов. Для начала, он мне подарил перепиленный с Зенита Е экран с микрорастром. Затем, мне показалось этого мало - и я купил убитый Зенит 122К. (В смысле, тушка в состоянии "лом", за 200 рублей). Почему именно его? А там фокусировочный экран с клиньями и микрорастром.

Сам Сергей так описал технологию пиления:

  • Положил родной ФЭ на экран зенита ет, обвел иголкой.
  • На лезвие строительного ножа наклеил пластырь, использовал него как линейку.
  • Процарапал другим ножом все с двух сторон периметр, как мог поглубже.
  • Пассатижами, понемногу наклоняя туда-сюда край, обломал лишнее (это уже сходу придуманная технология). Получилось очень ровно, без заусенцев.
  • Промыл в воде с фейри, плюнул на все советы по сушке, просто обтер и продул. Не терпелось посмотреть, что там получается. Поставил в фотик.
Я пилил по-другому :)
  • Взял ФЭ с Зенита 122, замерил его штангенцируклем. Получилось - что он на 2 мм с каждой стороны больше штатного.
  • Взял напильник. Положил напильник на газеты на стол.
  • Стачивал с каждой стороны по 0,5 мм, контролируя штангенциркулем размеры. Так в несколько проходов, пока не пришел к требуемому размеру. Сложно было ровно стоить: приходилось, чтобы не нарушить геометрию, в процессе контролировать штангелем размеры в 3..5точках, и исправлять надфилем (привет перфекционизму в действии).
  • Скгруглил углы надфилем, им же снял фаску.
  • Помыл в воде с фэйри. Сушил холодным феном.
  • Поставил в фотик.
Теперь субъективные ощущения.
  • оба экрана (и с ЕТ, и с 122ого) - темнее родного в матированной части. В середине - свелые, примерно как на k-3.
  • фокус лучше всего ловить по клинтьям. Дает максимум точности.
  • клинья у Зенитовского экрана не темнеют, даже на f22.
  • на k100Super пришлось убрать штатную прокладку - она мешала фокусировке. (Сергей писал, что на его k-r аналогичная проблема, тоже убирал прокладку).
  • на k-3 замок ФЭ продуман сильно лучше, чем на k100Super. Там пока сообразил, как открыть, полчаса наверное прошло.
  • автофокусу ФЭ не мешает никак.
И самое главное. Общие впечатления: с неавтофокусной оптикой ЗНАЧИТЕЛЬНО легче наводиться на резкость. С автофокусной - ну, "раз на раз..." - если отключить автофокус, то тоже. И самое-самое главное - у меня это получилось! Я честно считал, что "преепелить ФЭ" - это сродни какой-то особой магии. А оказывается, доступно и простым смертным. :)

FluentPDO - библиотека для работы с PDO в PHP

Рубрика: Alib.spb.ru

Слйчайно наткнулся на FluentPDO - библиотеку для работы с PDO в PHP. Смысл в том, что библиотека является слоем абстракции между приложением, PDO-расширением PHP и SQL. Потестировав, понял, что удобно. А значит, есть смысл рассказать.

Для начала - ссылки.

  1. FluentPDO на github: https://github.com/envms/fluentpdo
  2. Подробная статья о том, как её использовать: https://www.sitepoint.com/getting-started-fluentpdo/
Ну и - чем "зацепило".

Смысл в том, что от программиста при использовании библиотеки требуется создать PDO-объект для работы с БД, передать его в fluentpdo, и дальше, используя встроенные методы - работать с SQL.

Например:

$pdo = new PDO("mysql:dbname=testdb", "testuser", "testpassword");
$fpdo = new FluentPDO($pdo);

Дальше "всё просто", например, простой select * from mytable where id=$userid будет выглядеть так:

$query = $fpdo->from('mytable')->where('id', $userid);

И чтобы обработать результат:

foreach($query as $row){
    
print $row['field1'] . ' -- ' . $row['field2'] . '<br>';
 }

Если нужны конкретные столбцы, то:

$query = $fpdo->from('mytable')
   ->select(array('field1', 'field3'))->where('id', $userid);

Ну и чисто для иллюстрации - insert:

$values = array('field1' => 'testval1', 
     'field2' => 'testval2', 
     'field3' => 'testval3'); 
     
$query = $fpdo->insertInto('mytable')->values(values); 
  
$insert = $query->execute();

Также поддерживаются все основные операции, включая разнообразные update, join, delete и т.д.

Кстати, по приведенной выше ссылке примеров сильно больше. Скажу, что я попробовал на тесте FluentPDO - мне понравилось. Как-то упрощает жизнь, с точки зрения того, что не надо писать километровый код и запросы выглядят пологичнее. Ну и вся мощь PDO - типа единого синтаксиса работы с разными БД, безопасности (использование placeholder), получается как бы на нашей стороне :)

Про статью "Agile в небольших командах — как красиво сломать себе шею"

Рубрика: Alib.spb.ru

Еще интересный пост на Хабре: https://habrahabr.ru/company/bitrix/blog/321098/

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

Хотя, на мой взгляд, основное условие, при котором Agile в принципе будет работать - высокая степень зрлости команды. Когда работа идет на результат, а не на бумагу. И когда разработчики нацелены на сотрудничество, а не на "копать отсюда и до обеда".

А это уже вопрос организации, корпоративной культуры и мотивации. Смогли создать такую культуру - хорошо. Нет - никакой Agile не поможет в принципе.

Так как-то.

Случайная фотография

Орфография

Система Orphus
Дизайн от: Templates Next | Адаптация d51x