Thursday, November 3, 2016

Lotus Domino: ConvertZoneToText: Warning Time Zone -3 not found!

Сегодня столкнулся с проблемой установки сервера Домино на Аиксе 7.2.
При запуске сервера через сервер контроллер сервер странно стартует, и потом его убить через контроллер не получается, только "рубанием" каждой отдельной задачи. Какой-то полтергейст.
На консоль выводится непонятная информация и изредка сообщение, что
ConvertZoneToText: Warning Time Zone -3 not found!

При том, что временная зона установлена, локаль на сервере тоже стоит... но по умолчанию она установилась в ru_RU. А это как вы знаете неправильно, нужно ставить лотусовый сервер на локаль C. Поэтому меняем настройки локали:
Перегружаем сервер! Но и это не помогает. Копаем дальше. Смотрим папку(в засисимости от установки пути различаются):
/opt/ibm/domino/notes/90010/ibmpow/res
 У меня создалась там папка:
RU_RU
Поменял ее также в
С

Сервер завелся без проблем! Вот так локаль установилась раньше приложения и такие "непонятки" получились.  Успехов!

Tuesday, October 25, 2016

Android: проверяем наличие обновления приложения

Решил сегодня озадачиться вопросом алгоритмом обновления приложения, если новая версия есть, то показывать пользователю об этом уведомление. Как ни странно, но готового функционала не оказалось, даже сам Market не предоставляет никакого API для проверки обновлений. Начал искать на просторах всемирной сети -решения, конечно, меня не порадовали - парсить json'ы, бэграунд службы, и еще более нудные и тугие пути. Я тоже пошел сначала по пути парсинья json'a, но потом отказался от этого. Если нет апи, и проверять наличие некоторого отдельного файла, то пусть этим фалом окажется Firabase!
Создал простую структуру:
---Root
    ---SystemInfo
        ---Version : 5
Получаем это значение с помощью:
dataService.getSystemInfo()
При загрузке буду проверять данную ветку и значение текущей версии из градла(Gradle), на основе полученных данных будет вызываться диалог с предложением обновить версию приложения.

Успехов!

Wednesday, October 19, 2016

Android Studio: обновление 2.2.2.0

После последнего обновления студии, а именно 2.2.1 при билдинге программы "градле" зависал так, что "мама не горюй", порой доходило до 5 минут ожидать при сборке (иногда даже возникали мысли: "А не откатиться ли обратно?") А что делать? Приходилось ждать! С выходом новой версии нам обещают сладкую жизнь =)
1. Изменения к Instant Run - добавляя новые изменения в код и ресусные файлы можно увидеть сразу же изменения в запущенной программе на эмуляторе или телефоне.
2. Обновился так называемый интеллектуальный редактор кода (Intelligent code editor). Как по мне он и так был не плох, а теперь основные изменения коснулись редактирование ресурсных файлов, там где он был и нужен.
3. Fast and feature-rich emulator. Обновления коснулись и эмулятора. Сейчас запуская на одном компе и студию и эмулятор появляются иногда тормоза, не критично, но порой раздражает. Теперь же мы должны насладиться небывалой скоростью, от того как работает эмулятор - заявлено, что работает он быстрее чем физическое устройство и эмуляторов целая куча: от телефонов, таблеток до ТВ-устройств.
4. Robust and flexible build system. Изменения коснулись и градла - скрещиваем пальчики и ждем первого билда. В проекте стало просто использовать несколько вариантов сборки, даже с разными наборами включенных библиотек. Gradle(градл) - продвинутый набор инструментов, позволяющий управлять процессом сборки приложения, и создавать гибкие пользовательские конфигурации построения. Плагин gradle в android предназначен для работы с инструментами построения процессов и настраиваемых параметров, которые являются специфическими для разработки и тестирования Android-приложений. Более детально про градл.
5.Code templates and GitHub integration - а вот и что-то новенькое. Интеграция с ГитХабом. Добавилось возможно импортировать примеры кода с Гитхаба и вести свои собственные шаблоны, что немаловажно!
Все изменения описаны в статье, ну а нам только предстоит протестировать данный функционал.

Успехов!






Tuesday, October 18, 2016

Android: переименование приложения

В случае, когда вам понадобилось переименовать приложение, а такое обычно бывает, когда вы при создании приложения оставили все по умолчанию (имя пакета будет в формате
com.example.something), а потом решили опубликовать его в GooglePlay,
то такой вариант не пройдет! Придется возвращатсья к истокам и переименовывать весь пакет. Самый удобный способ - это создать новый модуль и в него отрефакторить все ваши наработки:
Теперь выделяете все: активити, классы, фрагменты, все-все и говорите перенести в новый модуль. У нового модуля новое имя, конечно же! Далее нужно переименовать вручную все значения в манифесте и в градле.

Плюс, ко всему у меня не поменялись некоторые файлы в проекте, пришлось вручную поправить! А именно пришлось менять
import com.example.name.lalala.R
на 
import com.lalala.R
 
Успехов!  

Friday, October 14, 2016

Linux: добавление локального репозитория

В случае если у вас сервер не имеет выхода в интернет, то можно и нужно добавлять локальные репозитории для установки и обновления пакетов. По умолчанию, нет установленных репозиториев:
#yum repolist
Добавим один. Создадим в папке /etc/yum.repos.d/ файл с названием serv.repo
Его содержимое:
Обновим
#yum repolist 

Теперь можно приступать к обновлению и установке=)
#yum install pam-devel.i686 0:1.1.8-12.el7_1.1

Успехов! 

Friday, August 12, 2016

Приложение География.Флаги

Это мое первое приложение под Андройд!
Смысл его банально прост - угадать страну по ее национальному флагу. 

В игре присутствует система выбора региона Мира! По умолчанию выбраны все регионы, но это порядка 190 флагов, надоест, поэтому рекомендую начать с мало - выбрать регион. Очень интересная система "Угадать столицу по флагу страны!" Сам был в шоке насколько быстро стираются из памяти многие знания.
По завершению - выдаются результаты. Очки даются за правильные ответы, чем сложнее уровень - тем больше очков.
Кратко о приложении.
Комментарии приветствуются!

Tuesday, March 29, 2016

Android spinner: Заполняем спинер в зависимости от значений второго спинера

Задача такая: сформировать значения в выпадающих списках в зависимости от того, что вы выберите из списка с родительскими элементами.
Например, список1 содержит значения Audi & Skoda.
Например, список2 содержит значения Audi A1, Audi A2, Skoda Octavia, Skoda Rapid.
Приступим:
Сформируем список1, используя отдельный класс:
public class StringWithTag {
        public String string;
        public Object tag;
        public StringWithTag(String stringPart, Object tagPart) {
            string = stringPart;
            tag = tagPart;
        }
        @Override
        public String toString() {
            return string; }}
сделаем коллекцию:
        List<StringWithTag> myList = new ArrayList<StringWithTag>();
        myList.add(new StringWithTag("Audi","1"));
        myList.add(new StringWithTag("Skoda","2"));
Создадим спинер:
final ArrayAdapter adapter1 = new ArrayAdapter<StringWithTag>(SettingsActivity.this,R.layout.simple_spinner_item1, myList);
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner_set1.setAdapter(adapter3);
Создаем слушатель для списка1:
spinner_set1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                if (spinner_set1.getItemAtPosition(position).toString().equals(spinner_set1.getItemAtPosition(position).toString())) {
// у меня происходит наполнение временного списка из списка2(lowList)
                    tempList.clear();
                    for (int i=0;i<lowList.size();i++){
                        if (lowList.get(i).BlockID.equals(String.valueOf(topList.get(position).ID))){
                            tempList.add(new StringWithTag(lowList.get(i).ID,lowList.get(i).BlockID, (Object) lowList.get(i).tag));
                        }
                    }
                    ArrayAdapter adapter2 = new ArrayAdapter<StringWithTag>(SettingsActivity.this,R.layout.simple_spinner_item1, tempList);
                    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    spinner_set2.setAdapter(adapter2);
                     //установка реагирования на выборку значений из списка2
                    spinner_set2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                            String strModel = spinner_set2.getItemAtPosition(position).toString();
                        }
                        @Override
                        public void onNothingSelected(AdapterView<?> parent) {
                        }
                    });
}}
Успехов!