пʼятниця, 8 листопада 2013 р.

Android 4.4 KitKat innovative features

Очікуване оновлення Андроїду до версії 4.4, що отримала назву KitKat, виявилось далеко не таким "косметичним, як очікувалося. Багато цікавих фіч, корисних і не дуже, вже можна тестувати на Google Nexus 5, що поступив до продажу. Нижче - короткий опис основних змін з огляду розробника (буде оновлюватися по мірі обробки)

Transitions framework for animating scenes
Key feature: separate layout for every distinct state of UI
Options:
create Scene object / call  beginDelayedTransition() (to specify the ViewGroup and end-result layout)
use the TransitionManager to specify the type of the transition and execute it.
Result:
 animate changes to UI on the fly without scenes defining;

easy calling  the transitions

System Optimization
Key feature: streamlining of major components to reduce memory usage 
Options:
Dalvik JIT code cache tuning
kernel samepage merging 
swaping to zRAM
tuning out-of-memory levels for processes
setting graphics cache sizes
controlling memory reclaim
core system processes are trimmed to use less heap
Result:
stable work on low-memory devices (even with 512 MB Operative Me


четвер, 16 травня 2013 р.

Принципи роботи з Git

Для тих, хто ще не знає - Git це розподілена система управління версіями файлів для спільної роботи. Скачати його можна звідси:  http://git-scm.com/download . Туторів по встановленню в інеті достатньо (отут, або тут), тому не бачу сенсу дублювати.
Якщо ви ніразу не користувались Git'ом, то для початку треба виконати наступні команди, щоб вказати ваше ім"я та електронну пошту:


it config --global user.name "Your Name" 
git config --global user.email "your_email@something.com"
Вказати шлях до папки, з якою ви будете працювати у Windows:

вівторок, 14 травня 2013 р.

Java SWT. Приклад.

SWT - open-source бібліотека для розробки графічних інтерфейсів на Java.  Зазвичай використовується як частина Eclipse Plug-in Development Environment.

Приклад:

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

понеділок, 13 травня 2013 р.

Види ліцензування програмного забезпечення.

Ліцензія інформує користувача про умови, на яких розповсюджується певний вид ПЗ.
Freeware - "безкоштовне ПЗ",не потребує виплат правовласнику. Є пропрієтарним ПО. Не має обмежень по функціональності та часу роботи. Може поширюватись без сирцевого коду та обмежувати комерційне використання чи модифікацію програми.
Free software - "вільне ПЗ" - надає максимальну кількість прав користувачам: користування, поширення, модифікація. Для цього типу ПЗ створюються спец.ліцензії для врегулювання прав та обов"язків авторів та користувачів. Найпоширеніші:
  GNU GPL(General Public License)- універсальна загальна ліцензія, що використовується для більшості програм "вільного ПЗ". Згідно умов, всі програмні продукти, отримані в результаті

четвер, 4 квітня 2013 р.

Java. Конструктор класу.

Конструктор - це структура, що створює екземпляр класу. Ім"я конструктора завжди співпадає з ім"ям класу, в якому він знаходиться. Він не повертає значення, але може мати параметри та бути override. Якщо конструктор має тип, що повертається (наприклад, void) - це вже не конструктор, а метод, що має однакову назву з класом. Якщо конструктор не написаний вручну - компілятор Java автоматично створює default constructor. Він є пустим і виконує лише виклик конструктора суперкласа. Тобто:
public class Test { }

еквівалентно

Public class Test{
Test()
       {
super;
        }
}


Конструкторів може бути декілька в класі. В цьому випадку конструктори називають перевантаженими (overloading).
Конструктори не наслідуються.
В конструкторі допускається використання модифікаторів доступу: 
В констукторі не допускаються модифікатори abstract, final, native, static та synchronizedДопускаються: public, protected або private.

вівторок, 2 квітня 2013 р.

Java. Задача на реалізацію системи реєстрації.

Є бібліотека. Необхідно мати можливості: зареєструвати книгу, зареєструвати юзера, показати список наявних книг (без можливості редагування зовні), зареєстрованих юзерів(без можливості редагування зовні), видати книгу в користування, повернути книгу, показати список книг, які зараз в користуванні (без можливості редагування зовні), реалізувати систему прив"язки книг до користувачів.
Розв"язок - під катом.

понеділок, 25 березня 2013 р.

Java. Наслідування. Класи Date, Random.

Вивести на консоль повідомлення, що у поточний час (використати клас util.Date) у вказаній кімнаті певна температура (використати клас util.Random). Всі класи мають пакетний доступ.
Приклад виведення:
At 15.0 o'clock the temperature of Kitchen is 25 degrees, and the temperature of Bedroom is 20 degrees.

Розв'язок:



import java.util.Date;
import java.util.Random;


public class Sensor {
static int rand;
static int rand2;

public void Temper() {
Date date = new Date(); //створили об'єкт класу Date

вівторок, 19 березня 2013 р.

Java. Inner та Nested класи. Теорія.

Nested (вкладений) клас - це клас, що об"явлений всередині об"явленого іншого класу:


public class OuterClass {
...
static class StaticNestedClass{
...
}
}


Вкладені класи поділяють на

середа, 13 березня 2013 р.

Java. Прості задачі на логіку і не тільки.

1. Дано 3 int значення a b c, повернути їхню суму. Якщо якесь з значень знаходиться в межах 13...19 окрім 15 та 16 - значить його рахувати рівним нулю.
Напишіть окремий хелпер "public int fixTeen(int n) {" , що приймає int значення та повертає відповідь згідно правилу. Внаслідок цього зникає необхідність дублювати код 3 рази ("декомпозиція").

Приклад виведення:
noTeenSum(1, 2, 3) → 6
noTeenSum(2, 13, 1) → 3
noTeenSum(2, 1, 14) → 3


Розв"язок:
public int fixTeen(int n) {

вівторок, 12 березня 2013 р.

Java. Прості задачі на true/false і не тільки.

1. Дано 2 прості числа. Повернути true, якщо одне більше, в одне - менше нуля. Виняток: якщо параметр "negative" є true - повернути true, якщо обидва числа менші за нуль.

Приклад виведення:
posNeg(1, -1, false) → true
posNeg(-1, 1, false) → true
posNeg(-4, -5, true) → true


Розв"язок:

public boolean posNeg(int a, int b, boolean negative) {
if (negative) {

понеділок, 11 березня 2013 р.

Java. Прості міні-задачі на використання Array.


1. Дано числовий масив. Повернути true, якщо перший або останній елемент масиву дорівнює однаковому числу. Довжина масиву більше 1.

Приклад виведення:
firstLast6({1, 2, 6}) → true
firstLast6({6, 1, 2, 3}) → true
firstLast6({13, 6, 1, 2, 3}) → false


Розв"язок:
public boolean firstLast6(int[] nums) {
if (nums[0] == 6) {

четвер, 7 березня 2013 р.

Java. Прості міні-задачі на використання String.

1. Дано рядок, що повертає новий рядок, створений з 3х копій двох останніх символів попереднього рядку. Довжина рядку повинна бути не менше 2.
Приклад виведення:
extraEnd("Hello") → "lololo"
extraEnd("ab") → "ababab"
extraEnd("Hi") → "HiHiHi"

Розв"язок:
public String extraEnd(String str) {

середа, 6 березня 2013 р.

Java. Інтерфейси. Приклад використання.

Інтерфейс ( interface ) - це клас, в якому всі поля визначені як static та  final, а методи - abstract. Клас може реалізувати інтерфейси (переймати їх поведінку). Для цього необхідно вказати ключове слово implements. Клас може одночасно наслідувати від іншого класу та реалізовувати інтерфейси. Приклад нижче:


interface Interface1 {
int someField = 100;
String someMethod();
}

interface Interface2 {
int someField = 200;
String someMethod();
}

Java. Інтерфейс Set. Приклад використання.

Set - це інтерфейс, що визначає колекцію без дублюючих елементів. так як він є субінтерфейсом інтерфейсу Collection, він включає в себе методи, які :
- описують розмір колекції (size(); isEmpty() );
- зміст колекції (contains(); containsAll() );
- підтримують управління змістом колекції ( add(); remove(); clear() )
- дозволяють перетворити колекцію в масив ( toArray() );
- дозволяють отримати ітератор масиву ( iterator() ).
 Інтерфейс Set включає в себе 2 реалізації:
HashSet - не гарантує порядок ітерації.

import java.util.Set;
import java.util.HashSet;

public class TreeSetEx {
private static Set<String> set = new HashSet<String>();

неділя, 3 березня 2013 р.

Java. Наслідування. Абстрактні класи.

Розглянемо найпростіший приклад наслідування з використанням абстрактних класів.
Трохи теорії:
Наслідування - це відношення між класами, при якому характеристики одного класу (суперкласу) передаються (extends) іншому (підкласу) без їх повторного опису. Підклас має доступ до всіх відкритих змінних та методів суперкласу (окрім членів класу, позначених як private ).

субота, 2 березня 2013 р.

Java. Робота з масивами.

Дано масив. Необхідно створити  новий масив, що більший від попереднього на 75%. Далі - метод, що видаляє з масиву елемент з певним індексом. Перезаписати масив. Використати виключення IllegalArgumentException та IndexOfBoundsException Зробити перевірку.

import java.util.List;
import java.util.ArrayList;

public class AL {
int size = 0;
Object[] arr;

AL(int capacity) {
if (capacity <= 0)

середа, 27 лютого 2013 р.

Java. Comparator vs Comparable. Теорія.

Comparable і Comparator - це інтерфейси, що використовуються для здійснення сортування в Java об"єктів, які збережені в колекції таких класів, як ArrayList, HashSet або Array. Для цього в нас є методи compare() або compareTo(), що визначені, відповідно в java.util.Comparator та java.lang.Comparable.
Отже, різниця між ними:
1) Comparator в Java належить до пакету java.util, а Comparable - до пакету java.lang. Отже, Comparable  може бути використаний за замовчуванням в той час як Comparator -

четвер, 21 лютого 2013 р.

Java. Об"єднання двох масивів виключаючи дублікати

Задача полягає в об"єднанні 2х числових масивів виключаючи дублікати. Використали метод Set,  який допомагає позбавитись дублікатів (але розміщує елементи у випадковому порядку).


import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class Telephones {
public static void main (String args []){
Integer tel1[] = new Integer [100]; 
                Integer tel2[] = new Integer[60]; 
Set<Integer> uniqueTel = new HashSet<Integer>();

Java. Виведення на екран "string + array".

Нижче викладена вчорашня задача, точніше, один з її варіантів розв"язку.
Дано: масив [10 ... 19]
Вивести на екран масив: [ elem 10;
                                              ...
                                              elem 19. ] однією стрінгою.


public class MasyvString {
public static void main(String args[]) {

Integer masyv[] = new Integer[10];


неділя, 17 лютого 2013 р.

Java. Пошук унікальних слів в тексті

Нижче викладена задача, з якою ми нарешті таки в цю суботу розібралися.
Даний файл .txt (поки що лише англ.), в тексті якого необхідно було порахувати кількість всіх унікальних слів.


import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.regex.Pattern;


public class IOText2 {
public static void main(String args[]) throws FileNotFoundException {

Pattern p = Pattern.compile("[^(\\w')(\\w-)]"); //важливо правильно визначити regexp