<rss version="2.0" xmlns:yandex="http://news.yandex.ru" xmlns:media="http://search.yahoo.com/mrss/" xmlns:turbo="http://turbo.yandex.ru" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Михаил Юдин</title><link>https://mikhail-yudin.ru/blog/android/</link><description/><generator>Hugo -- gohugo.io</generator><language>ru</language><lastBuildDate>Thu, 29 Aug 2019 00:00:00 +0000</lastBuildDate><image><url>https://mikhail-yudin.ru/images/brand/favicon.png</url><title>Михаил Юдин</title><link>https://mikhail-yudin.ru/</link></image><atom:link href="https://mikhail-yudin.ru/blog/android/index.xml" rel="self" type="application/rss+xml"/><item turbo="true"><title>Фикс ошибок компиляции библиотек в Termux</title><link>https://mikhail-yudin.ru/blog/android/termux-resolve-compile-troubles/</link><pubDate>Thu, 29 Aug 2019 00:00:00 +0000</pubDate><guid>https://mikhail-yudin.ru/blog/android/termux-resolve-compile-troubles/</guid><description>При компиляции библиотек или утилит порой возникают ошибки, связанные с несовместимостью опций компилятора или их недостаточностью для сборки.
Рабочее решение (проверено на sassc) Компиляция успешна при использовании флага --disable-march-tune-native:
gem install sassc --version=2.2.1 -- --disable-march-tune-native Благодарим @over
!!! Остальная часть статьи остаётся для ознакомления.
Внимание: этот метод не даёт возможность пользоваться результатами компиляции, даже при использовании -mcpu=native. Только для ознакомления. Следим за ситуацией: GitHub issue
Источник проблем Когда собирал этот блог в среде Termux с использованием новой версии Jekyll 4.</description><turbo:content><![CDATA[
      		<header>
      			<h1>Фикс ошибок компиляции библиотек в Termux</h1></header>
            <div class='entry-content'>
              <p>При компиляции библиотек или утилит порой возникают ошибки, связанные с несовместимостью опций компилятора или их недостаточностью для сборки.</p>
<h2 id="рабочее-решение-проверено-на-sassc">Рабочее решение (проверено на sassc)</h2>
<p>Компиляция успешна при использовании флага <code>--disable-march-tune-native</code>:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-sh" data-lang="sh">gem install sassc --version<span style="color:#ff79c6">=</span>2.2.1 -- --disable-march-tune-native
</code></pre></div><p>Благодарим <a href="https://github.com/sass/sassc-ruby/issues/150#issuecomment-769867455" target=_blank rel="noopener noreferrer">@over</a></p>
<blockquote>
<p>!!! Остальная часть статьи остаётся для ознакомления.</p>
</blockquote>
<blockquote>
<p>Внимание: этот метод не даёт возможность пользоваться результатами компиляции, даже при использовании <code>-mcpu=native</code>. Только для ознакомления. Следим за ситуацией: <a href="https://github.com/sass/sassc-ruby/issues/150" target=_blank rel="noopener noreferrer">GitHub issue</a></p>
</blockquote>
<h2 id="источник-проблем">Источник проблем</h2>
<p>Когда собирал этот блог в среде Termux с использованием новой версии Jekyll 4.0, столкнулся с проблемой, что sassc не хочет компилироваться при помощи clang.
Ошибка возникала следующая:</p>
<pre><code>error: the clang compiler does not support '-march=native'
</code></pre><p>Оптимальный вариант конечно сделать issue на GitHub по этому вопросу и ждать у моря погоды, но есть способ быстрее устранить эту проблему.</p>
<h2 id="убираем-опцию">Убираем опцию</h2>
<p>Первый способ решить проблему, который пришёл в голову, — залезть в Makefile и убрать опцию. Но что делать, если компилировать придётся новые версии библиотек? Долго и муторно.
Вторым решением представилось проксировать все вызовы clang через свой скрипт с обрезанием параметра <code>march</code>. Что собственно я и сделал.
Создал файл ~/bin/clang:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell"><span style="color:#ff79c6">#!/data/data/com.termux/files/usr/bin/env bash
</span><span style="color:#ff79c6"></span>~/../usr/bin/clang <span style="color:#f1fa8c">&#34;</span><span style="color:#f1fa8c">${</span>@/-march=native/<span style="color:#f1fa8c">}</span><span style="color:#f1fa8c">&#34;</span>
</code></pre></div><p>Конечно же нужно сделать файл исполняемым: <code>chmod +x ~/bin/clang</code>.</p>
<h2 id="подменяем-используемый-бинарник">Подменяем используемый бинарник</h2>
<p>Более-менее нормальный способ подмены — дописать в приоритетном порядке к переменной $PATH путь к папке <code>bin</code> в домашней директории.
Создадим файл <code>~/../usr/etc/profile.d/set_path_home_bin.sh</code> с содержанием:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell"><span style="color:#8be9fd;font-style:italic">export</span> <span style="color:#8be9fd;font-style:italic">PATH</span><span style="color:#ff79c6">=</span><span style="color:#8be9fd;font-style:italic">$HOME</span>/bin:<span style="color:#8be9fd;font-style:italic">$PATH</span>
</code></pre></div><p>После чего <code>clang</code> будет искаться сначала в ~/bin.</p>
<p>Этого оказалось недостаточно, пришлось ещё добавить симлинки для архитектурно специфичных clang:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell"><span style="color:#8be9fd;font-style:italic">cd</span> ~/bin                              
ln -s clang aarch64-linux-android-clang
ln -s clang aarch64-linux-android-clang++
</code></pre></div><p>После чего перезапускаем сессию терминала и пробуем скомпилировать библиотеки снова.</p>

            </div>
      	]]></turbo:content></item><item turbo="true"><title>Постоянный доступ к Termux через ssh тоннель</title><link>https://mikhail-yudin.ru/blog/android/persistent-termux-access-through-ssh-tunnel/</link><pubDate>Sun, 25 Aug 2019 00:00:00 +0000</pubDate><guid>https://mikhail-yudin.ru/blog/android/persistent-termux-access-through-ssh-tunnel/</guid><description>Хочется постоянный доступ к Termux по ssh, но нет прямого доступа к смартфону или планшету по сети? Задачу решим используя домашний сервер или сервис для создания ssh тоннелей.
Пояснение.
На смартфоне запустится сервер на порту 2222. На удалённой машине должен быть открыт порт 22.
На удалённой машине будет занят (проброшен) порт 3022 для доступа к смартфону.
Подготавливаем Termux Если Termux только что установлен, делаем pkg update для обновления утилит и списка пакетов.</description><enclosure url="https://mikhail-yudin.ru/blog/android/persistent-termux-access-through-ssh-tunnel/persistent-termux-access-through-ssh-tunnel.png" type="image/png"/><turbo:content><![CDATA[
      		<header>
      			<h1>Постоянный доступ к Termux через ssh тоннель</h1></header>
            <div class='entry-content'>
              <p>Хочется постоянный доступ к Termux по ssh, но нет прямого доступа к смартфону или планшету по сети? Задачу решим используя домашний сервер или сервис для создания ssh тоннелей.</p>
<blockquote>
<p><strong>Пояснение.</strong><br>
На смартфоне запустится сервер на порту 2222. <br>
На удалённой машине должен быть открыт порт 22.<br>
На удалённой машине будет занят (проброшен) порт 3022 для доступа к смартфону.</p>
</blockquote>
<h2 id="подготавливаем-termux">Подготавливаем Termux</h2>
<p>Если Termux только что установлен, делаем <code>pkg update</code> для обновления утилит и списка пакетов.</p>
<p>Для разворачивания нужно:</p>
<ul>
<li>openssh — для доступа к Termux (установятся <strong>клиент ssh</strong> и <strong>сервер sshd</strong>);</li>
<li>autossh — для поддержания тоннеля;</li>
<li>termux-services — для автозапуска autossh.</li>
</ul>
<p>Установим пакеты разом:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">pkg install openssh autossh termux-services
</code></pre></div><h2 id="создание-и-запуск-сервера-ssh-в-termux">Создание и запуск сервера ssh в Termux</h2>
<p>Сначала зададим пароль для доступа к Termux серверу ssh.</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">passwd
</code></pre></div><p>Пропишем порт для сервера в файле <code>~/../usr/etc/ssh/sshd_config</code>:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-apacheconf" data-lang="apacheconf"><span style="color:#8be9fd;font-style:italic">Port</span> <span style="color:#bd93f9">2222</span>
<span style="color:#8be9fd;font-style:italic">PrintMotd</span> no
<span style="color:#8be9fd;font-style:italic">PasswordAuthentication</span> yes
<span style="color:#8be9fd;font-style:italic">PubkeyAcceptedKeyTypes</span> +ssh-dss
<span style="color:#8be9fd;font-style:italic">Subsystem</span> sftp <span style="color:#f1fa8c">/data/data/com.termux/files/usr/libexec/sftp-server</span>
</code></pre></div><p>Перезапустим сервер ssh:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">sv down sshd
sv up sshd
</code></pre></div><p>Для запуска сервера при старте устройства делаем:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">sv-enable sshd
</code></pre></div><p>Перейдём к настройке соединения.</p>
<h2 id="создание-ssh-тоннеля">Создание ssh тоннеля</h2>
<p>Допустим, что есть сервер ssh например <code>myserver</code>. Это или домашний сервер, или сервис, который предоставляет доступ к ssh серверу. Как пример — <a href="http://bitcoinshell.mooo.com" target=_blank rel="noopener noreferrer">Free Linux shell server</a>.</p>
<h3 id="а-способ-создания-для-ленивых">А. Способ создания для ленивых</h3>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-sh" data-lang="sh">ssh -R 3022:localhost:2222 myserver.ru
</code></pre></div><h3 id="б-способ-для-прагматичных">Б. Способ для прагматичных</h3>
<p>Чтобы не прописывать каждый раз имя хоста, порт и прочее при соединении с ssh сервером для создания тоннеля, пропишем конфиг <code>~/.ssh/config</code>. Пример:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-apacheconf" data-lang="apacheconf"><span style="color:#8be9fd;font-style:italic">Host</span> srv_rev
<span style="color:#8be9fd;font-style:italic">User</span> username
<span style="color:#8be9fd;font-style:italic">Port</span> <span style="color:#bd93f9">22</span>
<span style="color:#8be9fd;font-style:italic">HostName</span> myserver.ru
<span style="color:#8be9fd;font-style:italic">RemoteForward</span> <span style="color:#bd93f9">3022</span> localhost:2222
<span style="color:#8be9fd;font-style:italic">ServerAliveInterval</span> <span style="color:#bd93f9">30</span>
<span style="color:#8be9fd;font-style:italic">ServerAliveCountMax</span> <span style="color:#bd93f9">1</span>
<span style="color:#8be9fd;font-style:italic">ExitOnForwardFailure</span> yes
</code></pre></div><p>Как создавать ключ для беспарольного входа по ssh читаем <a href="/linux/zalit-ssh-klyuch-na-server">в отдельной статье</a>.</p>
<p>Проверим, корректно ли настроили: должно отобразиться приглашение шелла, иначе придётся каждый раз вводить пароль при создании тоннеля. В случае с сервисом ввести пароль будет невозможно.</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">ssh srv_rev
</code></pre></div><p>Если просит пароль — создайте ключ для входа.</p>
<h2 id="сервис-подключения-к-тоннелю">Сервис подключения к тоннелю</h2>
<p>Так как на предыдущем шаге в конфиге указали <code>RemoteForward</code>, остаётся только подключиться к серверу, используя параметры конфигурации.</p>
<p>Воспользуемся <code>termux-services</code>, чтобы каждый раз не вводить команду для соединения. Утилита запускает приложения сразу при создании сессии Termux (насколько сам понял).</p>
<p>Сервисы добавлять очень просто: создаём папку с названием сервиса, внутри файл <code>run</code> с правами на запуск и shebang который указывает на шелл <code>/bin/sh</code>.</p>
<p>Итак, по шагам:</p>
<ul>
<li>создаём папку</li>
</ul>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">mkdir ~/../usr/var/service/autossh/
</code></pre></div><ul>
<li>создаём файл</li>
</ul>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell"><span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#39;#!/bin/sh&#39;</span> &gt; ~/../usr/var/service/autossh/run
<span style="color:#8be9fd;font-style:italic">echo</span> <span style="color:#f1fa8c">&#39;exec autossh -M 20022 -NT -f srv_rev&#39;</span> &gt;&gt; ~/../usr/var/service/autossh/run
</code></pre></div><ul>
<li>фиксим shebang для Termux</li>
</ul>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">termux-fix-shebang ~/../usr/var/service/autossh/run
</code></pre></div><ul>
<li>даём права на исполнение</li>
</ul>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">chmod +x ~/../usr/var/service/autossh/run
</code></pre></div><ul>
<li>запускаем сервис</li>
</ul>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">sv up autossh
</code></pre></div><p>После этого установится ssh тоннель для доступа к Termux с удалённого сервера, если настроено верно.</p>
<h2 id="подключаемся-к-termux">Подключаемся к Termux</h2>
<p>Соединяемся с удалённым сервером по ssh. Затем подключаемся к ssh в Termux, который затоннелирован на порт 3022:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">ssh 127.0.0.1 -p <span style="color:#bd93f9">3022</span>
</code></pre></div><h2 id="что-получили-в-итоге">Что получили в итоге</h2>
<p>Теперь после запуска Termux на удалённом сервере появится доступ по тоннелю к терминалу на смартфоне. Так как соединение на смартфоне может обрываться время от времени по разным причинам, autossh поможет переустанавливать соединение к удалённому серверу ssh и восстанавливать тоннель. Желательно, чтобы порт 20022 на удалённой машине был открыт для быстрого реагирования autossh на разрыв соединения.</p>

            </div>
      	]]></turbo:content></item><item turbo="true"><title>Живая разработка в Epsilon Notes</title><link>https://mikhail-yudin.ru/blog/android/epsilon-notes/</link><pubDate>Sun, 28 Jul 2019 00:00:00 +0000</pubDate><guid>https://mikhail-yudin.ru/blog/android/epsilon-notes/</guid><description>Думаю, многим удобно делать заметки, записывать идеи или даже реализовывать их со своего смартфона. Ведь правда: достал из кармана мобилу, тык-тык и дело сделано, можно дальше заниматься другими делами. Иногда появляется время в общественном месте, а хочется проверить идею, а под рукой только смартфон. Кажется не удобно на нём программировать. Однако есть решение как для фронтендеров, так и для копирайтеров. И оно называется Epsilon Notes. В нём как раз и пишу этот материал.</description><enclosure url="https://mikhail-yudin.ru/blog/android/epsilon-notes/en.jpg" type="image/jpeg"/><turbo:content><![CDATA[
      		<header>
      			<h1>Живая разработка в Epsilon Notes</h1></header>
            <div class='entry-content'>
              <p>Думаю, многим удобно делать заметки, записывать идеи или даже реализовывать их со своего смартфона. Ведь правда: достал из кармана мобилу, тык-тык и дело сделано, можно дальше заниматься другими делами. Иногда появляется время в общественном месте, а хочется проверить идею, а под рукой только смартфон. Кажется не удобно на нём программировать. Однако есть решение как для фронтендеров, так и для копирайтеров. И оно называется Epsilon Notes. В нём как раз и пишу этот материал.</p>
<h2 id="что-это">Что это?</h2>
<p><a href="https://play.google.com/store/apps/details?id=com.ekartoyev.enotes" target=_blank rel="noopener noreferrer">Epsilon Notes</a> — это полноценный markdown редактор с подсветкой синтаксиса как common markdown, так и html. Помимо основного синтаксиса, Epsilon notes расширяется средствами JavaScript, есть встроенные плюшки с которыми можно ознакомиться в официальной документации.</p>
<p>К тому же, Epsilon Notes может выступать в качестве простого html редактора с поддержкой просмотра результата на лету.</p>
<h2 id="зачем-оно-мне">Зачем оно мне?</h2>
<p>Я веду записи больших объёмов именно в нём, потому что тексты такого плана чаще всего являются материалами типа статей.</p>
<p>Например пока собирал своё резюме, успел побывать в разных местах и позах =). В итоге собрал достаточно информации, чтобы её можно было выложить.</p>
<p>Ещё как веб разработчику, мне интересно пробовать всякие новые штуки касаемо вёрстки, новых возможностей браузеров, иногда делаю всякие хаки или просто рисую при помощи SVG.</p>
<p>Кстати про SVG. Раньше всегда пользовался растровыми картинками, веб-шрифтами с иконками для отображения графики на сайтах-проектах. С давних времён как-то подзабыл совсем о векторной графике. Стоило только зайти в доки по SVG, сразу началось досканальное изучение.</p>
<p>При чём тут это? А дело в том, что все эксперименты я проводил именно в Epsilon Notes. Да, это очень удобно, особенно когда компа рядом нет.</p>
<h2 id="live-разработка">Live разработка</h2>
<p><img src="en.jpg" alt="Двухпанельный режим позволяет видеть результат на лету"></p>
<p>Все наверное уже привыкли к песочницам, например Codepen, JSBin, CodeSandbox и другим. Там можно в реальном времени видеть свёрстанное или реализованный функционал. Впечатляет видео, как делают игру и сразу подгоняют параметры для более динамичного геймплея.</p>
<p>Так вот, в Epsilon Notes тоже можно так делать. Просто включаете режим двух панелей и можете видеть сразу результат своих трудов.</p>
<h2 id="поддержка-диаграмм-классов-flowchart-диаграмм-ганта">Поддержка диаграмм классов, flowchart, диаграмм Ганта</h2>
<p>В EN встроена поддержка вышеназванных диаграмм. Очень удобно для планирования сроков задач проекта, организации структуры классов, иерархии. Примеры можно посмотреть также <a href="http://epsilonexpert.com/e/index.php?i=1" target=_blank rel="noopener noreferrer">в документации</a>.</p>
<h2 id="и-это-всё">И это всё?</h2>
<p>Нет, мне лень описывать всё то, что может Epsilon Notes =). Если ещё не пожелали скачать и попробовать приложение, загляните <a href="http://epsilonexpert.com/e/index.php?i=1" target=_blank rel="noopener noreferrer">в документацию</a>, там много всего интересного описано, на что способен редактор.</p>
<p>Конечно все подумали, что рекламирую это приложение. Для меня лично оно состоит в <a href="/android/polezniye-prilozheniya-android">списке must have</a>, поэтому решил поделиться. Реклама конечно Epsilon Notes не помешает =P</p>

            </div>
      	]]></turbo:content></item><item turbo="true"><title>Самые полезные приложения для Android</title><link>https://mikhail-yudin.ru/blog/android/polezniye-prilozheniya-android/</link><pubDate>Sat, 06 Jul 2019 00:00:00 +0000</pubDate><guid>https://mikhail-yudin.ru/blog/android/polezniye-prilozheniya-android/</guid><description>Пополняю арсенал приложений которыми часто пользуюсь. Не просто Must have, а без которых теперь сложно обходиться. Представляю вашему вниманию набор полезных приложений под ОС Android.
FooView PlayMarket 4pda
fooView (Float Viewer) - это волшебная плавающая кнопка. Инструмент, позволяющий Вам получить доступ к вашим любимые веб-сайтам, приложениям, играм, файлам, музыке, фотографиям и видео с помощью одного жеста рукой.
поиск по картинке-скриншоту переводчик копирование текста в труднодоступных местах распознавание текста плавающий браузер файл-менеджер с поддержкой облачек быстрый шаринг куска экрана (+видео/gif) запуск приложений одним взмахом заметки под рукой множественный буфер обмена поиск на устройстве многостраничный автоматический скриншот MiXplorer 4pda</description><enclosure url="https://mikhail-yudin.ru/blog/android/polezniye-prilozheniya-android/useful-android-apps.png" type="image/png"/><turbo:content><![CDATA[
      		<header>
      			<h1>Самые полезные приложения для Android</h1></header>
            <div class='entry-content'>
              <p>Пополняю арсенал приложений которыми часто пользуюсь. Не просто Must have, а без которых теперь сложно обходиться.
Представляю вашему вниманию набор полезных приложений под ОС Android.</p>
<h2 id="fooview">FooView</h2>
<p><a href="https://play.google.com/store/apps/details?id=com.fooview.android.fooview" target=_blank rel="noopener noreferrer">PlayMarket</a>
<a href="https://4pda.ru/forum/index.php?showtopic=733773" target=_blank rel="noopener noreferrer">4pda</a></p>
<p>fooView (Float Viewer) - это волшебная плавающая кнопка. Инструмент, позволяющий Вам получить доступ к вашим любимые веб-сайтам, приложениям, играм, файлам, музыке, фотографиям и видео с помощью одного жеста рукой.</p>
<ul>
<li>поиск по картинке-скриншоту</li>
<li>переводчик</li>
<li>копирование текста в труднодоступных местах</li>
<li>распознавание текста</li>
<li>плавающий браузер</li>
<li>файл-менеджер с поддержкой облачек</li>
<li>быстрый шаринг куска экрана (+видео/gif)</li>
<li>запуск приложений одним взмахом</li>
<li>заметки под рукой</li>
<li>множественный буфер обмена</li>
<li>поиск на устройстве</li>
<li>многостраничный автоматический скриншот</li>
</ul>
<div class="video-wrapper">
<iframe width="560" height="315" src="https://www.youtube.com/embed/JrWzmNIW4-Q" frameborder="0" allowfullscreen></iframe>
</div>
<h2 id="mixplorer">MiXplorer</h2>
<p><a href="https://4pda.ru/forum/index.php?s=&amp;showtopic=318294&amp;view=findpost&amp;p=11890407" target=_blank rel="noopener noreferrer">4pda</a></p>
<p>MiXplorer - это быстрый, удобный, красивый и полнофункциональный менеджер файлов с простым пользовательским интерфейсом.</p>
<ul>
<li>пакетное переименование</li>
<li>умное выделение</li>
<li>просмотрщик медиа</li>
<li>работа с архивами</li>
<li>поддержка облачных хранилищ, ftp/sftp/samba, webdav</li>
<li>пакетное удаление приложений</li>
<li>встроенный редактор с подсветкой</li>
<li>root проводник</li>
<li>плагин pdf</li>
<li>плагин редактирования mp3 тегов</li>
<li>поддержка тем</li>
<li>вид списка, миниатюр, превью, детальный список +масштабирование</li>
</ul>
<h2 id="multilingokeyboard">MultilingOKeyboard</h2>
<p><a href="https://play.google.com/store/apps/details?id=kl.ime.oh" target=_blank rel="noopener noreferrer">PlayMarket</a>
<a href="https://4pda.ru/forum/index.php?showtopic=634293" target=_blank rel="noopener noreferrer">4pda</a></p>
<p>Клавиатура для любых языков, многофункциональная и настраиваемая.</p>
<ul>
<li>любой язык, в т.ч. математические символы</li>
<li>стрелки, функциональные клавиши</li>
<li>можно создать свою раскладку</li>
<li>быстрый доступ к смайлам</li>
<li>непрерывный ввод</li>
<li>автокоррекция</li>
<li>предложение слов</li>
<li>настраиваемые темы</li>
<li>умная диактрика</li>
<li>сокращения пт-&gt;привет</li>
<li>калькулятор при наборе текста</li>
<li>буфер обмена</li>
</ul>
<p><a href="http://okbdtheme.appspot.com/e.html?OK_Settings_Begin%0A__K.fs2%3A%3A81%3A%3AI%0A__K.rx%3A%3A0.6%3A%3AF%0A__K.gh%3A%3A30%3A%3AI%0A__V.co14%3A%3Aaaadc4d3%3A%3AX%0A__K.gw%3A%3A5%3A%3AI%0A__V.co13%3A%3Affbfbfbc%3A%3AX%0A__V.co12%3A%3A3d000000%3A%3AX%0A__V.co11%3A%3Affffffff%3A%3AX%0A__V.co10%3A%3A77000000%3A%3AX%0A__V.co18%3A%3A0%3A%3AX%0A__V.co17%3A%3A0%3A%3AX%0A__V.co16%3A%3A3f96b7c4%3A%3AX%0A__V.co15%3A%3A0%3A%3AX%0A__V.co6%3A%3A0%3A%3AX%0A__V.co7%3A%3A2000000%3A%3AX%0A__V.co4%3A%3Affa8a8a8%3A%3AX%0A__V.co5%3A%3Ab299a3ad%3A%3AX%0A__V.co8%3A%3A0%3A%3AX%0A__V.co9%3A%3A0%3A%3AX%0A__K.fs%3A%3A95%3A%3AI%0A__V.FB%3A%3Afalse%3A%3AB%0A__V.co2%3A%3Affffffff%3A%3AX%0A__V.co3%3A%3Affffff%3A%3AX%0A__V.co0%3A%3Aff1e3038%3A%3AX%0A__V.co1%3A%3A0%3A%3AX%0A__K.ra1%3A%3A0%3A%3AI%0A__K.ra0%3A%3A0%3A%3AI%0A__K.ra3%3A%3A0%3A%3AI%0A__K.ra2%3A%3A0%3A%3AI%0AOK_Settings_End&amp;%09%09%09" target=_blank rel="noopener noreferrer">Тёмная тема со скриншота</a></p>
<h2 id="automagic">Automagic</h2>
<p><a href="https://4pda.ru/forum/index.php?showtopic=456523" target=_blank rel="noopener noreferrer">4pda</a></p>
<p>Автоматизация андроид с блок-схемами (аналог AutomateIt, Tasker и MacroDroid).</p>
<ul>
<li>автоматизация блок-схемами</li>
<li>поддержка скриптов (аналог javascript)</li>
<li>более удобное и быстрое создание задач в сравнении с аналогами</li>
</ul>
<h2 id="pcradio">PCRADIO</h2>
<p><a href="https://play.google.com/store/apps/details?id=com.maxxt.pcradio&amp;hl=ru" target=_blank rel="noopener noreferrer">PlayMarket</a>
<a href="https://4pda.ru/forum/index.php?showtopic=311603" target=_blank rel="noopener noreferrer">4pda</a></p>
<p>Десятки интернет радио станций разной тематики и направлений.</p>
<ul>
<li>множество жанров</li>
<li>работа при низкой скорости интернета</li>
<li>минимальное потребление трафика</li>
<li>без заиканий</li>
<li>добавление станций в избранное</li>
<li>поддержка записи</li>
<li>эквалайзер</li>
<li>три режима качества звучания</li>
<li>таймер сна (отключение через заданное время)</li>
</ul>
<h2 id="sd-maid">SD Maid</h2>
<p><a href="https://play.google.com/store/apps/details?id=eu.thedarken.sdm&amp;hl=ru" target=_blank rel="noopener noreferrer">PlayMarket</a>
<a href="https://4pda.ru/forum/index.php?showtopic=230839" target=_blank rel="noopener noreferrer">4pda</a></p>
<p>Чистка &ldquo;хвостов&rdquo; за удалёнными приложениями.</p>
<ul>
<li>удаление ненужных файлов</li>
<li>удаление файлов, оставшихся от ранее установленных приложений</li>
<li>оптимизация баз данных приложений</li>
<li>удаление дубликатов файлов</li>
<li>запуск проверки по расписанию</li>
</ul>
<h2 id="dvget">DVGet</h2>
<p><a href="https://play.google.com/store/apps/details?id=com.dv.get&amp;hl=ru" target=_blank rel="noopener noreferrer">PlayMarket</a>
<a href="https://4pda.ru/forum/index.php?showtopic=280941" target=_blank rel="noopener noreferrer">4pda</a></p>
<p>Менеджер загрузок</p>
<ul>
<li>перехват ссылок из браузера и буфера обмена;</li>
<li>ускоренная закачка файлов в несколько потоков;</li>
<li>параллельная закачка нескольких файлов одновременно;</li>
<li>докачка файлов после обрыва соединения или перезапуска программы;</li>
<li>виджет на рабочем столе и окно поверх всех окон со списком запущенных закачек;</li>
<li>отображение значка программы и прогресса закачки в панели уведомления;</li>
<li>автоматический запуск/остановка при включении/выключении Wi-Fi;</li>
<li>автозагрузка сервиса программы при включении телефона;</li>
<li>импорт ссылок из файла, бэкап списка закачек и настроек;</li>
<li>сохранение файлов разных типов в разные папки;</li>
<li>планирование закачки файлов в нужное время;</li>
<li>звук и вибрация по окончании закачки;</li>
<li>настройка интерфейса программы.</li>
</ul>
<h2 id="eweather-hd">eWeather HD</h2>
<p><a href="https://play.google.com/store/apps/details?id=com.Elecont.WeatherClock&amp;hl=ru" target=_blank rel="noopener noreferrer">PlayMarket</a>
<a href="https://4pda.ru/forum/index.php?showtopic=194110" target=_blank rel="noopener noreferrer">4pda</a></p>
<p>Подробный и точный прогноз погоды.</p>
<ul>
<li>прогноз погоды от двух метеоагенств</li>
<li>разные виды виджетов</li>
<li>барометр</li>
<li>загрязнение воздуха</li>
<li>землетрясения</li>
<li>предупреждения Гидрометцентра</li>
<li>геомагнитные бури</li>
<li>температура воды</li>
<li>приливы</li>
<li>затмения</li>
<li>дни солнцестояния и равноденствия</li>
<li>фазы луны</li>
</ul>
<h2 id="progtv">ProgTV</h2>
<p><a href="https://play.google.com/store/apps/details?id=com.progdvb.progtva&amp;hl=ru" target=_blank rel="noopener noreferrer">PlayMarket</a>
<a href="https://4pda.ru/forum/index.php?showtopic=617665" target=_blank rel="noopener noreferrer">4pda</a></p>
<p>Интернет ТВ, архив фильмов, радио и веб камеры всего мира.</p>
<ul>
<li>IPTV (включая udp http proxy, слепой поиск и прочий сервис)</li>
<li>Гид - XMLTV, JTV включая zip, gzip.</li>
<li>OTT провайдеры(Kartina TV, OTT Club, Shura TV, Nasche TV, Rodnoe TV, &hellip;), без VOD но с архивом.</li>
<li>ProgDVB клиент</li>
<li>DVB over IP</li>
<li>300+ Internet TV каналов, 3000+ радио</li>
<li>Favorites, поканальные настройки</li>
<li>Timeshift (включая паузу)</li>
<li>Запись</li>
<li>Планировщик</li>
</ul>
<h2 id="locus-map">Locus map</h2>
<p><a href="https://play.google.com/store/apps/details?id=menion.android.locus&amp;hl=ru" target=_blank rel="noopener noreferrer">Play market</a></p>
<p>Приложение для путешественников на своих двоих, ногах или колесах.</p>
<ul>
<li>онлайн/оффлайн карты;</li>
<li>планирование маршрута автоматическое/ручное;</li>
<li>ведение по треку;</li>
<li>настройка отображения карты;</li>
<li>инструменты для измерений;</li>
<li>геокешинг;</li>
<li>поддержка Android wear;</li>
<li>слои наложения;</li>
<li>POI;</li>
<li>отображение фото из галереи с geo meta;</li>
<li>карты высот, график высот маршрута.</li>
</ul>
<p>Каждого приложения достаточно, чтобы делать им всё, для чего оно предназначено. Пробуйте, пользуйтесь, радуйтесь =)</p>

            </div>
      	]]></turbo:content></item><item turbo="true"><title>Android shell scripting. Part 2.</title><link>https://mikhail-yudin.ru/blog/android/android-shell-scripting-part-2/</link><pubDate>Wed, 05 Aug 2015 00:00:00 +0000</pubDate><guid>https://mikhail-yudin.ru/blog/android/android-shell-scripting-part-2/</guid><description>Если нет желания собирать консольные утилиты из исходников, можно воспользоваться менее болезненным способом.
Для начала нужно найти приложение, в котором реализован необходимый функционал.
Для примера возьмём Terminal IDE.
После установки приложения, утилиты, входящие в его состав, будут распакованы в каталог /data/data в поддиректорию с названием пакета.
В данном случае это com.spartacusrex.spartacuside.
В поддиректории с данными приложения можно увидеть папку files.
Как раз в ней находится директория bin с бинарниками, доступными в среде Terminal IDE.</description><turbo:content><![CDATA[
      		<header>
      			<h1>Android shell scripting. Part 2.</h1></header>
            <div class='entry-content'>
              <p>Если нет желания собирать консольные утилиты из исходников, можно воспользоваться менее болезненным способом.</p>
<p>Для начала нужно найти приложение, в котором реализован необходимый функционал.<br>
Для примера возьмём <a href="http://4pda.ru/forum/index.php?showtopic=554287" target=_blank rel="noopener noreferrer">Terminal IDE</a>.</p>
<p>После установки приложения, утилиты, входящие в его состав, будут распакованы в каталог /data/data в поддиректорию с названием пакета.<br>
В данном случае это com.spartacusrex.spartacuside.</p>
<p>В поддиректории с данными приложения можно увидеть папку files.<br>
Как раз в ней находится директория bin с бинарниками, доступными в среде Terminal IDE.</p>
<p>Чтобы иметь при себе, например, редактор vim, необходимо скопировать vim из папки bin с папку с системными утилитами:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">cp vim /system/xbin/  
</code></pre></div><p>При копировании /system должен быть примонтирован в режиме записи.</p>
<p>После этого можно смело удалять Terminal IDE и пользоваться только оболочкой коммандной строки.</p>
<p>Важное замечание:</p>
<p><strong>!</strong> Некоторые утилиты требуют наличия библиотек для запуска (динамическая линковка).<br>
Поэтому, в отдельных случаях придётся либо искать статически собранные бинарники, либо подключать библиотеки.</p>
<p><strong>!</strong> Так же, следует обратить внимание на содержимое утилиты, которую переносите себе в /system/xbin, т.к. это может оказаться либо ссылкой, либо скриптом, использующим другой бинарник в качестве основного.</p>
<p>В следующей части будем настраивать lighttpd сервер для работы с php-fcgi.</p>

            </div>
      	]]></turbo:content></item><item turbo="true"><title>Android shell scripting. Part 1.</title><link>https://mikhail-yudin.ru/blog/android/android-shell-scripting-part-1/</link><pubDate>Sat, 18 Apr 2015 00:00:00 +0000</pubDate><guid>https://mikhail-yudin.ru/blog/android/android-shell-scripting-part-1/</guid><description>Если возникло желание развернуть linux shell окружение на Вашем устройстве, можно воспользоваться приёмами, описанными далее.
Подразумеваеется, что root доступ у Вас есть.
Для удобства настройки можно использовать удалённый доступ к устройству по ssh.
По умолчанию в системе используется /system/bin/sh бинарник, являющийся ссылкой на mksh.
Чтобы настроить переменные окружения, которые будут установлены при запуске shell (sh), необходимо внести правки в файл /etc/mkshrc. Но перед этим нужно примонтировать файловую систему для записи:</description><turbo:content><![CDATA[
      		<header>
      			<h1>Android shell scripting. Part 1.</h1></header>
            <div class='entry-content'>
              <p>Если возникло желание развернуть linux shell окружение на Вашем устройстве, можно воспользоваться приёмами, описанными далее.</p>
<p>Подразумеваеется, что root доступ у Вас есть.</p>
<p>Для удобства настройки можно использовать удалённый доступ к устройству по ssh.</p>
<p>По умолчанию в системе используется <code>/system/bin/sh</code> бинарник, являющийся ссылкой на mksh.</p>
<p>Чтобы настроить переменные окружения, которые будут установлены при запуске shell (sh), необходимо внести правки в файл /etc/mkshrc. Но перед этим нужно примонтировать файловую систему для записи:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell">mount -o remount,rw /system
</code></pre></div><p>Пример установки путей для midnight commander:</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:2;-o-tab-size:2;tab-size:2"><code class="language-shell" data-lang="shell"><span style="color:#8be9fd;font-style:italic">export</span> <span style="color:#8be9fd;font-style:italic">PATH</span><span style="color:#ff79c6">=</span>/system/xbin:/system/bin
<span style="color:#8be9fd;font-style:italic">export</span> <span style="color:#8be9fd;font-style:italic">TERMINFO</span><span style="color:#ff79c6">=</span>/etc/terminfo
<span style="color:#8be9fd;font-style:italic">export</span> <span style="color:#8be9fd;font-style:italic">TERM</span><span style="color:#ff79c6">=</span>xterm-256color
<span style="color:#8be9fd;font-style:italic">export</span> <span style="color:#8be9fd;font-style:italic">MC_HOME</span><span style="color:#ff79c6">=</span>/system/etc/.mc/
<span style="color:#8be9fd;font-style:italic">export</span> <span style="color:#8be9fd;font-style:italic">TMPDIR</span><span style="color:#ff79c6">=</span>/data/local/tmp/

<span style="color:#ff79c6">if</span> <span style="color:#ff79c6">[</span> ! -e <span style="color:#8be9fd;font-style:italic">$TMPDIR</span> <span style="color:#ff79c6">]</span>; <span style="color:#ff79c6">then</span>
    mkdir <span style="color:#8be9fd;font-style:italic">$TMPDIR</span>
<span style="color:#ff79c6">fi</span>
</code></pre></div><p>Прописав это в наш конфиг, мы:</p>
<ol>
<li>определим пути поиска исполняемых бинарников</li>
<li>укажем пути хранения временных файлов</li>
<li>укажем пути хранения конфигурации midnight commander</li>
<li>установим режим терминала xterm с поддержкой 256 цветов</li>
</ol>
<p>В следующей части будет описана процедура получения и установки различных linux утилит одним из простых способов.</p>

            </div>
      	]]></turbo:content></item></channel></rss>