Tuesday, June 21, 2011

Gloomy view

Мне эта фотография напоминает Сталкер.

Monday, June 20, 2011

Android apk is installed but does not run on device

I faced a problem when I'm trying to debug my android apk from Eclipse on device/emulator, it successfully installed, but not automatically started.

It was necessary just to check AndroidManifest.xml

It should contain the line:
<category android:name="android.intent.category.LAUNCHER" />

And also must not contain errors!
When I removed the unused line (before mentioned above) the problem goes away.

Monday, June 6, 2011

Задача про шкафчики

Наткнулся сейчас на интересную задачу:
В  одной  из школ  есть  такой  ритуал,  проводящийся  в  последний  день  занятий:  ученики выходят  в  холл  и  стоят  около  своих  шкафчиков,  в  которых  хранится  одежда.
По  первому свистку  каждый  ученик  открывает  свой  шкафчик,  по  второму  свистку  ученики  закрывают четные шкафчики (то есть шкафчики номер 2, 4, 6 и т. д.). По третьему свистку ученики меняют положение дверцы каждого третьего шкафчика, то есть если она была открыта, ее закрывают, а если закрыта — открывают. Это происходит со шкафчиками номер 3, 6, 9 и т.д. По четвертому свистку меняется состояние дверцы каждого четвертого шкафчика, по пятому свистку каждого пятого и т. д. Предположим для простоты, что это небольшая школа и шкафчиков всего 100. По сотому свистку ученик, который стоит рядом со шкафчиком под сотым номером (и только этот ученик),  меняет  положение  дверцы  этого  шкафчика. Сколько  шкафчиков  после  этого оказываются открытыми?

Подумав немного и решив задачку на бумаге, написал программу на Python для её решения.
Внимание! Внизу публикую закономерность.

#--------------------------------------
# Open school lockers counter
#--------------------------------------
""" Get Open Lockers Count """
def open_lockers_counter(n):
    open_count = 0
    for i in range(1, n + 1):
        div_num = 0 # i divisors number   
        for j in range(1, i + 1):
            if i % j == 0:
                div_num += 1
        # if divisors number is odd
        if div_num % 2 != 0:
            open_count += 1
    return open_count;


Закономерность такова: открытыми останутся только те шкафчики, у которых количество делителей нечетное, то есть квадраты чисел (1, 4, 9, 16...). Таким образом ответом является количество квадратов чисел.

Sunday, June 5, 2011

Кто сказал Guf

Вот такая вот надпись.

Sunday, May 8, 2011

Пишем приложение для Android

Для начала работы необходимо скачать и установить следующее:

Eclipse-SDK – 180 Мб
ADT плагин к Eclipse – 5 Мб
Java JDK – 80 Мб

ADT плагина к Eclipse можно установить как онлайн, так и скачать и установить вручную.
Для установки онлайн нужно выбрать пункт меню Help -> Install New Software... и в поле Work with вписать адрес загрузки плагина: dl-ssl.google.com/android/eclipse/
Если хотите установить плагин вручную, то нужно скачать его по ссылке http://developer.android.com/sdk/eclipse-adt.html.
Для отладки и отправки приложения на устройство (в моем случае это HTC) необходимо скачать также:
HTC Sync – 73 Мб

Важно, что программа виртуального устройства не понимает русские буквы в пути.
C:\Users\Имя\.android\...
Если у вас в имени пользователя имеются русские буквы, то нужно сделать следующее.
Открыть и отредактировать файл: имя_виртуального_устройства.ini в папке C:\Users\Имя\.android\avd\
target=android-7
path=path_to_file\имя_виртуального_устройства.avd
Также нужно скопировать файлы виртуального устройства в указанный путь.

Также если происходят ошибки и эмулятор не запускается, то можно попробовать удалить папку C:\Users\Имя\.android. И затем создать новое виртуальное устройство.


Устройство

В качестве устройства используется коммуникатор HTC Wildfire A3333.

В коробке.

Весь комплект.


Технические характеристики.

Вид сзади.


Включение устройства.

 
Подключение.

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

В качестве приложения был реализован простейший проигрыватель видео.

Работа приложения в эмуляторе.

К сожалению, проигрывание видео в эмуляторе происходит не очень хорошо.

Работа приложения на устройстве.

Для того чтобы просмотреть, скачать, загрузить файлы на эмулятор Android необходимо открыть DDMS.

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

Для этого в эмуляторе Android необходимо прописать DNS в поле Additional Emulator Command Line Options в следующем виде:
-dns-server xxx.xxx.xxx.xxx
Возможно, также потребуется добавить исполняемые файлы эмулятора в доверенные – в настройках firewall.

Wednesday, May 4, 2011

Invoking a function before empty main function

It's is interesting that you can call functions or print "hello world" messages in C/C++ with empty main() function.
All global variables are initialized before calling the main() function. Therefore, it could be empty.

#include <iostream>

std::ostream &out = std::cout << "print text before main" << std::endl;

void foo() { std::cout << "foo() called before main" << std::endl; }

class A
{
public:
  A() { foo(); }
};

A obj;

// empty main function
void main()
{
}

 
* This source code was highlighted with Source Code Highlighter.

This code will print:

print text before main
foo() called before main

May the Force be with you

May the 4th be with you!
Happy Star Wars day.