Вы читаете журнал [info]novikovmaxim

Максим Новиков
Приложения в ОС Андроид похожи на обычные windows-приложения, но у них принята немного иная терминология. Надо сказать, что, на мой взгляд, терминология более близкая к сути происходящего, хотя и непривычная.

Activity (активность)
Для программистов это форма, для пользователей - окно приложения. По сути, это графический интерфейс с пользователем, содержащий в себе также основной код программы, то есть всё же обычная форма. Активность всегда развёрнута во весь экран, то есть у неё нет кнопок в углу, как у окон windows. Закрывается активность просто нажатием кнопки "назад" на смартфоне.

Task (задача)
Новое понятие в Андроиде. Задача - запоминаемая последовательность открывания в программе тех или иных окон (активностей). Это как бы стек открытых окон. Благодаря такому запоминанию все эти окна можно закрывать в обратном порядке, хотя они могут и не являться доченними, как это происходит в случае с Windows. Кроме того, приложение в Андроиде может открыть окно (активность) другого приложения для выполнения нужной функции, и такое окно тоже запоминается в задаче, как будто это окно этого же приложения.

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

Многозадачность
Многозадачность реализована не так, как в windows. Чтобы оставить приложение в памяти и переключиться на рабочий стол, достаточно нажать кнопку "Домой". Приложение запомнит своё состояние, будет поставлено на паузу и исчезнет с экрана, не мешая и не снижая производительности другого запущенного приложения. Если продолжать запускать всё новые и новые приложения, оставляя старые в памяти, то когда память закончится, система безболезненно выкинет самое старое приложение, чтобы освободить место новому. Это штатный процесс и никаких данных при этом не теряется, потому что приложения сохраняют все свои данные сразу во время постановки их на паузу. Чтобы просмотреть 8 последних запущенных приложений (вне зависимости от того, висят они в памяти, или уже нет), и иметь возможность переключиться на них, достаточно нажать и удерживать кнопку "Домой" в течение пары секунд, пока список последних приложений не отобразится на экране.

Вот так вкратце выглядит работа приложений на смартфонах с ОС Андроид.
 
 
 
Максим Новиков
У меня вышел из строя источник бесперебойного питания APC Back-UPS ES 700VA 230V. И как раз в тот момент, когда у нас со светом какая-то хрень началась - пропадает на полсекунды и снова включается. :(

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

Начнём с того, что для характеристики мощности электроустройства используются и ватты, и вольт-амперы, и их цифры друг от друга отличаются несмотря на то, что из курса физики мы помним, что ватты равны вольты умноженные на амперы. А вот хрена! Блоки питания компьютеров помимо активной мощности обладают реактивной, а ватты меряют только активную. Поэтому, если ваш ИБП рассчитан на 700 ВА (вольт-ампер), то подключать к нему лучше не более 700*0,7=490 Вт (ватт). В общем, всё сложно :)

Кроме того, существуют разные классы бесперебойников и разные типы блоков питания у компьютеров. Например, некоторые дорогие и мощные блоки питания компьютеров используют технологию Full Range (работа в очень широком сетевом вольтажном диапазоне 85-240 В) с активной схемой корректировки фактора мощности (Active PFC), которая не работает с источниками бесперебойного питания бытового класса из-за их невысокой реакции на пропадание напряжения. В этих случаях необходимо использовать UPS класса smart, а они раза в три дороже.

В общем, с моим APC Back-UPS ES 700VA 230V приключилась такая хрень: если я его включаю с воткнутой нагрузкой - монитором или компьютером, то спустя 3-5 секунд, когда ИБП встаёт на самотестирование, раздаётся хриплый, периодически пропадающий писк, и питание техники отрубается. Причём писк можно прекратить только одним способом - вытащив из ИБП всю нагрузку, и никак иначе. Если включать нагрузку после окончания самотестирования, то защищаемая техника работает до первого пропадания напряжения в сети. Далее всё повторяется - никак неотключающийся хриплый писк и полное отключение защищаемой техники.

Сначала я грешил на аккумулятор. Вчера я купил его на горбушке (аккумуляторы для ИБП сейчас более-менее стандартизированы - кирпичик 12 вольт 7,2 ампер-часов), и поменял. Но никаких изменений не произошло. Оказалось, что неисправен сам ИБП. :(

В итоге у меня оказалось 2 рабочих аккумулятора для ИБП и не одного рабочего ИБП. И тут я вспомнил, что ещё давно у меня был ИБП Powerman back pro 800 plus, в котором стояло 2 аккумулятора, которые вышли из строя, после чего я и купил новый ИБП, поскольку покупать 2 аккумулятора было ненамного дешевле. В общем, я достал старый ИБП, заменил в нём аккумуляторы, и теперь прекрасно работаю на нём :)
 
 
Максим Новиков
Обучаюсь по очень подробным урокам: http://startandroid.ru/uroki/vse-uroki-spiskom.html. Сегодня нахожусь в районе 40-го урока и замечаю, что если раньше повторял каждый урок на практике, то сейчас уже такой необходимости не испытываю. Освоив азы, можно вполне успешно вникать и понимать java-код, не проверяя предложенные примеры на практике.

На первых уроках основная трудность заключалась в освоении базовых приёмов работы с самой средой Eclipse и привыкание к языку Java. К настоящему моменту работа в Eclipse в рамках обучения стала рутинной, да и к языку Java уже привык, поскольку он в рамках своего объёма практически повторяет C++, на котором я немного программировал некоторое время назад.

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

Хотелось бы услышать предложения, какие программы хотелось бы видеть пользователям у себя на смартфонах. А то в моих планах пока только одна простенькая игрушка, уже реализованная мною для компьютера.
 
 
 
Максим Новиков
22 Май 2012 @ 00:28
На самом деле патефон - неправильное название этого устройства. Правильное - компактный граммофон! Именно так он называется в инструкции по эксплуатации. Происхождение же названия "патефон" аналогично происхождению названия "ксерокс" - по имени фирмы, впервые представившей устройства на рынок нашей страны.

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

Для справки: настоящий патефон, сконструированный и запатентованный братьями Пате отличается от граммофона не рупором и корпусом, а методом формирования звуковой канавки — глубинным, а не поперечным, и, соответственно, адаптером.

Итак, на днях мне отдали 2 сломанных патефона, один из которых мне удалось починить. Заодно достал и наш семейный патефон, послушал музыку:

202.48 КБ

Ещё фотки... )
 
 
 
Максим Новиков
17 Май 2012 @ 13:50
В свете своего обучения программированию android-смартфонов, всплыло несколько интересных тем. Выяснилось, что программы для них принято писать на стандартном для них языке Java. Этот язык, в отличие от ассемблера, Си, Дельфи и т.п., переводит исходный текст программы не в машинный код, а в специальный промежуточный байт-код, который предназначен для исполнения в среде Java-машины, а не непосредственно на процессоре устройства. Благодаря тому, что Java-машины существуют на очень многих аппаратных платформах (читай - гаджетах), то такая программа тоже сможет работать на широком списке этих устройств вне зависимости от того, на основе какого процессора они сделаны.

Замечу, что есть альтернатива. Для повышения быстродействия можно писать программы для android и на Си, но в этом случае программа будет работать только на устройствах с совместимыми процессорами, для которых она была скомпилирована.

Таким образом, параллельно с обучением особенностям создания программ для android-смартфонов, я осваиваю язык Java. Но по поводу этого языка есть не очень хорошее мнение среди программистов. Тему того, что за совместимость приходится платить скоростью выполнения программ из-за прослойки Java-машины, мы пока оставим в стороне. Всплывает другая тема. Дело в том, что наряду с другими высокоуровневыми языками, такими, как Дельфи, Бейсик и т.п., Java является довольно простым языком. Это, как ни странно, является не только плюсом, но и минусом.

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

Но применение того или иного языка само по себе не является признаком быдлокодера. Меня в этом смысле вполне удовлетворяет то, что я помимо Дельфи, а теперь и Java, довольно долго писал программы для компьютеров на ассемблере (1992-2000 г.г.), и немного на C++. Так что я сегодня с чистой совестью могу применять Java для написания программ для смартфонов. :) Ну вот, типа оправдался.
 
 
 
Максим Новиков
Что-то не могу понять с плотностью точек своего смартфона HTC Desire HD.

Считаем:
Диагональ: 4,3 дюйма
Точечный размер: 480х800 точек
Фактическая плотность (разрешение): √ (4802 + 8002) / 4,3 = 217 dpi
Тот же результат дали подсчёты с линейкой по вертикали и по горизонтали, так что этому числу можно верить.

Смотрим на смартфоне в программе Elixir2:
Плотность DPI (плотность экрана, выраженная в точках на дюйм): high (240)
Масштабируемая плотность (коэффициент масштабирования...): 1,5
X DPI (количество физических точек на дюйм экрана по оси Х): 196,64516
Y DPI (количество физических точек на дюйм экрана по оси Y): 191,69812

Вопрос:
Итак, фактически у нас получилось 217 точек на дюйм, программам подсовывают разрешение 240 точек на дюйм (пересчёт на стандартную плотность 160, 240 или 320), но вот откуда взялось 196,64516 и 191,69812?
 
 
 
Максим Новиков
Как известно, смартфоны с операционной системой Android становятся всё более популярны. Поэтому для них пишется всё больше и больше приложений, в том числе и непрофессиональными программистами - обычными пользователями. На моём смартфоне HTC Desire HD тоже установлена система Android версии 2.3.5. И меня заинтересовало, а смогу ли я написать что-нибудь для своего смартфона?

Оказывается, всё не так сложно. Сначала надо скачать, установить и настроить на компьютере 4 пакета программ (и, при желании, пакет русского языка к IDE):
  1. Java Platform (JDK) (http://www.oracle.com/technetwork/java/javase/downloads/index.html). Собственно, платформа Java и комплект средств разработки программ на Java. На этом языке (Java) и пишутся приложения для Android.
  2. Android SDK (http://developer.android.com/sdk/index.html). Комплект средств разработки программ для Android. Вспомогательные инструменты и библиотеки, для разработки приложений для Android. Скачиваем загрузочно-инсталляционный модуль Android SDK Manager, запускаем его, выбираем в нём для загрузки и установки только нужные или же все пункты (на всякий случай), и запускаем инсталляцию пакетов. Процесс загрузки и инсталляции небыстрый, может идти несколько часов.
  3. Eclipse IDE for Java Developers (http://eclipse.org/downloads/). Интегрированная среда разработки (IDE) программ для Java-разработчиков. Условно говоря, текстовый редактор для написания кода, заточенный под программирование. Не требует инсталляции.
  4. ADT (http://developer.android.com/sdk/eclipse-adt.html). Плагин к Eclipse с инструментами для разработки приложений для Android. Добавляет к Eclipse инструменты взаимодействия с Android SDK. Открываем Eclipse, и с помощью него загружаем, устанавливаем и настраиваем плагин, как описано по ссылке.
  5. Можно скачать ещё и русский язык для Eclipse (http://www.eclipse.org/babel/downloads.php). Но учтите, что перевод будет, вероятно, не полный. Устанавливаем его также, как и ADT, прописав в Eclipse адрес из раздела Babel Language Pack Zips and Update Sites.
Настройка этих программ не представляет ничего сложного, она быстрая и интуитивно понятная. Кроме того, описана на многих ресурсах.

После установки программ следует перейти к урокам по программированию. Подробные уроки программирования для Android, включая установку и настройку программ, можно найти здесь: http://startandroid.ru/uroki/vse-uroki-spiskom.html
 
 
 
Максим Новиков
Для справки: Троя́нская программа (также — троя́н, троя́нец, троя́нский конь) — вредоносная программа, распространяемая людьми, в отличие от вирусов и червей, которые распространяются самопроизвольно. Замечу, что этот вид зловредов, пожалуй, единственно возможный для платформы Android. Вирусы в прямом понимании для Android не страшны - приложения слишком ограничены этой системой в своих действиях. Заражение смартфона происходит лишь методом социальной инженерии - человека обманывают, заставляя его самостоятельно запустить трояна.

===========================

Поймал я тут в выходные из-за своей излишней самоуверенности на свой андроидовский смартфон HTC Desire HD трояна "android.smssend.origin.128". Дело обстояло так.

По своей наивности я полагал, что вредоносное ПО на смартфоне под управлением операционной системы Android - это просто страшилка антивирусных компаний. Поэтому я без особых подозрений ставил на свой смартфон всё, что попало, хотя и использовал для этого только штатную программу Play Market (сервис "Google Play", ранее - "Android Market"), Видимо, с кое-какими приложениями в мой смартфон залетело нечто, что периодически выдавало в область оповещений сообщение о необходимости обновления Adobe Flash Player.

Надо сказать, что здесь я должен был сразу насторожиться - ведь обновления к программам приходят только через программу Play Market, о чём они сигнализируют совершенно иначе. Я, конечно, отметил эту разницу, но, поскольку использую Android относительно недавно, подумал, что, возможно, существуют разные пути доставки обновлений, и нажал на это сообщение. На смартфон закачался пакет, и я запустил установку...

Тут бы мне заметить, что устанавливаемая программа уже называется не "Adobe Flash Player" а просто "FLASH PLAYER", но иконка в характерных красных тонах Эдобе Флеш Плеера усыпила моё внимание. При установке появилась кнопка лицензионного соглашения, но я его в первый раз даже не прочитал, а надо было. Ведь там открытым текстом было написано, что использование программы платно через отправку платных СМС на короткие номера. Но я этого ничего не прочитал, и благополучно произвёл установку и запуск программы. А поскольку я не обнаруживал ожидаемого эффекта, а сообщение об обновлении появлялось на протяжении некоторого времени регулярно, то я ставил и запускал программу несколько раз. В итоге у меня списалось со счёта около 300 рублей и я ушёл в минус!

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


Решение проблемы.

Сегодня я провентилировал этот вопрос в Интернете, и для уничтожения заразы скачал бесплатный Kaspersky Mobile Security Lite. Но после установки он себя никак не проявлял, а при принудительном запуске этой программы я не нашёл в её интерфейсе команду сканирования смартфона. Поэтому я удалил Касперского, и поставил бесплатный dr. Web (beta), который, как я понял, считается лучшим для смартфонов под Android. Вот им то я и просканировал телефон, и нашёл 2 программы с рекламной функцией, созданной по технологии AirPush и 1 троянскую программу, отсылающую платные СМС. Последняя - это, собственно, скаченный файл пограммы "FLASH PLAYER", являющейся вирусом "android.smssend.origin.128", а две других - программы Блокнота и сканера пальцев, распознаваемые как "adware.airpush.origin.3", которые и могли вдруг начать предлагать мне выполнять зловредные обновления. Сканер пальцев мне был уже нафиг не нужен (ставил просто побаловаться), а Блокнот я поставил другой, даже более удобный, благо их в Play Market пруд пруди.

Дополнительно и популярно почитать о троянах под Андроид можно тут:
http://habrahabr.ru/company/drweb/blog/142993/

Про антивирусы кое-что есть тут:
http://www.lg-p500.ru/2011/02/lg-optimus-one_24.html

Эволюция вредоносного ПО для Android за последний год:
http://habrahabr.ru/post/130612/

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

Итак, правила:
  1. Обновления приходят только через стандартную систему обновлений! Никогда не обновляйте приложение через кликанье по предлагаемым в браузере баннерам, кнопкам и т.п. Обновляйтесь только стандартным путём!
  2. Никогда не ставьте приложения из других источников, кроме как через программу Play Market!
  3. Запретите у вашего мобильного оператора отправку СМС на платные короткие номера, чтобы вирусы не смогли опустошить ваш мобильный счёт. Да и сами этим же перестрахуетесь, ибо баловство это всё - различные голосования и т.п. через отправку платных СМС.
  4. Не перепрошивайте смартфон сторонними прошивками, особенно т.н. "рутированными", в которых открыт доступ для любых программ к любым внутренностям операционной системы Android.
  5. Имейте на смартфоне установленный и включенный антивирус dr. Web, который будет блокировать установку троянских программ и программ-обманок, или предупреждать о других потенциально опасных действиях.
 
P.S.: История имеет своё продолжение. Видимо, троян отправил мой номер в некую базу данных, потому что ровно через шесть дней, сегодня, 14 мая 2012 года в 20:52, поступил некий звонок с неизвестного мне номера 8 814 259-91-58. Я взял трубку, и связь разъединилась. Я полез в Интернет, чтобы посмотреть, что за код города - 814, и первая же ссылка выдала мне весь номер этого телефона! Оказалось, что этому номеру посвящена целая ветвь форума, начавшаяся аж в 2010 году: http://zvonki.octo.net/number.aspx/8142599158

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

Наиболее вероятно, что обзвон связан с проверкой реальности номера для расчётов между оператором и владельцем короткого номера. Некто Любовь с форума пишет "Я перезвонила по этому номеру, автоответчик, по поводу того, что я пользовалась интернет-услугами, поэтому идет проверка номера ни к чему не обязывающая и не подлежащая оплате."

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

Как обычно, не могу обойти стороной живописные окрестности Белого домика:
200.44 КБ

Ещё фотки... )