Новая версия текстового редактора
Выпустил на выходных новую версию Простого Текстового Редактора. Не прошло и десяти лет как в нем, наконец появились функции отмены и повтора последней операции. Причем новая версия зарелизина в Google Play и F-Droid.
На F-Droid версия уже принята но я до сих пор вижу старый релиз, они не быстро обнавляют приложения.
Компилируем Android приложения в Docker
Давно хотел научиться компилировать свои приложения для андроид без необходимости устанавливать и настраивать на компьютере кучи ненужного софта. В самом деле - на дворе двадцать первый век, у нас есть докер и нам совершенно не обязательно для сборки приложения устанавливать весь софт на рабочую станцию чтобы собрать приложение. Это можно сделать в докере.
Посидев пару вечеров, собрал простенький образ, который будет делать за меня всю черновую работу. Теперь, чтобы собрать любое приложение для android, достаточно выполнить вот такую команду из корня проекта:
docker run --rm -v ${PWD}:/var/app maxistar/android:latest bash \
-c "gradle build && gradle compileDebugSources"
Готовый apk файл будет сохранен в папку app/build/outputs/apk/debug/app-debug.apk - его можно сразу скопировать не телефон и установить его (не забудьте разрешить установку приложений из неизвестных источников).
Как был сделан этот образ? За основу взял образ Debian 9.
Установил Java 8 (Java 11 у меня не завелась если знаете как подружить gradle и java 11 поделитесь секретом)
apt-get update
apt-get -y install git wget unzip default-jdk
Для сборки нам нужен gradle установим его
wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -P /tmp
unzip -d /opt/android /tmp/sdk-tools-linux-3859397.zip
Скачаем Android SDK:
wget https://services.gradle.org/distributions/gradle-6.8.3-bin.zip -P /tmp
unzip -d /opt/gradle /tmp/gradle-6.8.3-bin.zip
Еще нужно установить переменные окружения.
ENV ANDROID_SDK_ROOT=/opt/android ENV GRADLE_HOME=/opt/gradle/gradle-6.8.3 ENV PATH=${GRADLE_HOME}/bin:${ANDROID_SDK_ROOT}/tools/bin:${PATH}
Теперь нужно скачать инструменты для сборки android приложений.
sdkmanager --update
sdkmanager "build-tools;30.0.2" "platform-tools" "platforms;android-30"
sdkmanager --licenses
Готовый Dockerfile выглядит вот так:
FROM debian:9
MAINTAINER Max Starikov <maxim.starikov@gmail.com>
ENV ANDROID_SDK_ROOT=/opt/android
ENV GRADLE_HOME=/opt/gradle/gradle-6.8.3
ENV PATH=${GRADLE_HOME}/bin:${ANDROID_SDK_ROOT}/tools/bin:${PATH}
RUN apt-get update && apt-get -y install git wget unzip default-jdk
RUN wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -P /tmp && \
unzip -d /opt/android /tmp/sdk-tools-linux-3859397.zip && \
wget https://services.gradle.org/distributions/gradle-6.8.3-bin.zip -P /tmp && \
unzip -d /opt/gradle /tmp/gradle-6.8.3-bin.zip && \
sdkmanager --update && \
yes | sdkmanager --licenses && \
sdkmanager "build-tools;30.0.2" "platform-tools" "platforms;android-30" && \
yes | sdkmanager --licenses && \
mkdir /var/app
WORKDIR /var/app
Следует заметить, что образ довольно большой (примерно 850Mb) - и для его использования нужно быстрое интернет соединение, но зато, единожды скачав, скачивать повторно docker его больше не будет.
Образ доступен на docker hub. Исходник находится на github.
Super Words Memorizer снова в Google Play!
Super Words Momorizer cнова доступен на Google Play!
Как то у меня снова появилось вдохновение развивать проект - спасибо Dualingo - они так испоганили свой продукт, что захотелось сделать функции которых у них нет и никогда не будет, а мне очень хотелось бы их иметь.
Хотя, конечно, моя программка - совсем не конкурент Dualingo, это скорее такой маленький тул, для пополнения словарного запаса. При помощи него я неплохо прокачал свой английский и итальянский языки. Сейчас изучаю немецкий.
Увы, все что хочется реализовать один я делать не успеваю, и наверно, никогда не успею. Если вдруг, среди читателей моего маленького дневничка есть желающие помочь мне с проектом, я был бы очень этому рад. У меня есть куча идей для новых словарей, новых диалоговых режимов, нового функционала.
Мне можно написать через контактную форму на этом сайте. Буду рад любой помощи.
Интервальное повторение
Реализовал в своем маленьком пет проекте superwords метод интервального повторения.
Superwords это маленькое приложение под android, при помощи которого я изучаю иностранные языки. Что-то типа Anki но с возможностью учить синонимы и варианты переводов - когда я только начинал делать эту программу я был увлечен японским языком и мне нужно было запоминать не только смысл слова но и написание каной и канзи.
Знание языков мне всегда очень помогало в путешествиях по Европе, в поиске работы и, сейчас, когда я живу в Германии, без них никуда. Хотя, признаюсь, иностранные языки мне всегда давались с большим трудом. Ну нет у меня к ним таланта!
Интервальное повторение - это повторение на основе кривой забывания Эббингауза. Кривая забывания или кривая Эббингауза была получена вследствие экспериментального изучения памяти немецким психологом Германом Эббингаузом в 1885 году.
Эббингауз был увлечён идеей изучения «чистой» памяти — запоминания, на которое не влияют процессы мышления. Для этого им был предложен метод заучивания бессмысленных слогов, состоящих из двух согласных и гласной между ними, не вызывающими никаких смысловых ассоциаций.
В ходе опытов было установлено, что после первого безошибочного повторения серии таких слогов забывание идёт вначале очень быстро. Уже в течение первого часа забывается до 60 % всей полученной информации, через 10 часов после заучивания в памяти остаётся 35 % от изученного. Далее процесс забывания идёт медленно, и через 6 дней в памяти остаётся около 20 % от общего числа первоначально выученных слогов, столько же остаётся в памяти и через месяц.
Для лучшего запоминания информации психологи советуют делать несколько повторений, через некоторые интервалы, величина которых зависит от того, который раз происходит данное конкретное повторение.
В приложении это работает таким образом - при повторении каждого слова сохраняется количество успешных повторений а также дата последнего повторения, поэтому в следующий раз при выборе слова из списка слов предпочтение отдается тем словам которые уже пора повторять. Удивительно, насколько это повышает качество запоминания!
Первое повторение — через 30 минут, второе повторение — день после первого повторения, третье повторение — через неделю после второго, четвёртое повторение — через месяц после третьего, пятое повторение — через пол года после четвёртого повторения.
Штука оказалась абсолютно убойной, и почему я раньше это не реализовал...
К сожалению, в GooglePlay приложение в настоящее время недоступно - сейчас новая версия ещё проходит ревью. Но можно установить apk вручную.