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

Встановлення і Apache, PHP, MySQL

У даній статті розглядається встановлення HTTP сервера Apache, інтерпретатора і модуля Apache - PHP та системи керування (управління) базами даних (СУБД) MySQL.
Оскільки встановлення і запуску web-серверу та СУБД під Windows складніший ніж для Linux із-за відсутності менеджера пакетів, то розгянемо детальний опис цієї процедури у операційні системі Майкрософту.
Apache та PHP
Cкачайте будь-який файл з розширенням msi із репозиторію Apache Foundation http://apache.cp.if.ua//httpd/binaries/win32/
Запустіть інсталяцію. Протягом цього процесу вам необхідно буде ввести ім'я серверу (localhost), домене ім'я (localhost), email адресу адміністратора (немає значення яку). Apache сервер можна запускатись лише при вході під вашим користувачем або може бути встановлений як сервіс і не залежити від того який профіль користувача буде запущений.


Після запуску web-сервера повинна завантажуватись сторіка http://localhost/ (із вмістом "It works!"). Якщо сервер не запустився, причиною може бути програма, що вже використовує (слухає) цей порт. Найчастіше це Skype, для того щоб він не слухав порт, необхідно зайтив в настройки, знайти налаштування мережі і зняти галочку «Використовувати порти 80 та 443 як альтернативні для підключення» («Use port 80 and 443 as alternatives for incoming connections»). В іншому випадку прочитайте інструкцію «Как определить, какая программа использует или блокирует порты протокола передачи определенного элемента управления в Windows»
Наступним кроком буде підключення PHP до Apache. Для цього потрібно скачати архів з модулем і інтерпретатором PHP http://windows.php.net/download/. Розпакуйте його у будь-де на диску C: (для прикладу C:\php). У теці (папці), де встановлений Apache (за замовчуванням це C:\Program Files\Apache Foundation\Apache2.2) відкрийте головний конфігураційний файл conf/httpd.conf  і додайте в кінці два рядки:
LoadModule php5_module "C:/php/php5apache2_2.dll"
AddHandler application/x-httpd-php .php
У першому рядку вказується (директивою) завантажити модуль під назвою php5_module з файлу, що знаходиться у теці, в яку розпакували архів PHP, php5apache2_2.dll, 2_2 в даному випадку вказує на те, що цей модуль може завантажуватись лише серевером Apache версії 2.2, для інших версій назва dll-бібліотеки з модулем може бути іншою, наприклад php5apache2.dll, якщо версія 2.0 і php5apache2_4.dll - 2.4
Друга директива реєструє файл який містить у назві «.php» як файл програми на PHP у форматі стандарту Multipurpose Internet Mail Extensions (MIME)
У теці PHP знайдіть файл php.ini-development, скопіюйте його і змініть назву на php.ini . Це - файл налаштувань php, за замовчуванням, при запуску Apache він шукається у системні директорії Windows: C:\Windows . Якщо ви не хочете туди поміщати php.ini, то ви можете вказати директивою (у httpd.conf)
PHPIniDir "C:/php"
теку у якій забажали помістити файл конфігурацій.
Детальніше ви можете дізнатись у офіційні документації: «Установка PHP как обработчика под Apache»
У httpd.conf знайдіть директиву
DocumentIndex index.html
що вказує які назви файлів повиннні відкрииватись (запускатись), якщо користувач не вказав файл він хоче переглянути, а лише директорію. Додамо до цього списку index.php
DocumentIndex index.html index.php
Директива DocumentRoot вказує на теку із якої будуть відображатись документи, для прикладу
DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
Зайдіть у цю директорію, видаліть або переіменуйте файл index.html. Cтворіть файл index.php із вмістом
<?php phpinfo(); ?>
Перезапустіть сервер (Панель керування > Адміністрування > Служби)

У адресі в браузері введіть localhost/ або 127.0.0.1/ повинна завантажитись сторінка


MySQL
Завантажте з офіційного сайту http://dev.mysql.com/downloads/mysql/ MySQL Installer MySQL Community Server-а. Інсталятор включає в себе MySQL Server, інструмент для візуального проектування баз даних MySQL Workbench, навчальні бази даних, інструмент моніторигу MySQL Notifier, розширеня для Excel і Visual Studio та документацію.
Запустіть інсталяцію, оберіть тип встановлення (Setup Type) типовий для розробника (Developer Default). Дійшовши до налаштувань серверу (MySQL Server Configuration) оберіть тип налаштування (Config Type) Developer Machine. Дозволиши мережеві підключення (Enable TCP/IP Networking) ви можете підлючитись до серверу з іншої комп'ютера.
У наступному вікні введіть пароль адміністратора (root-та) та добавте користувачів (User Account) даної машини, які зможуть працювати з базою даних. Це ж саме ви зможете зробити після встановлення за допомогою MySQL Workbench або вручну добавивши записи у таблицю user системної бази даних mysql. Для кожного web-додатку добре було би створювати відповідного користувача з обмеженнями (ролями) достатніми, щоб додаток не міг пошкодити дані інших додатків.
Для того, щоб підключитись до MySQL у коді PHP відкрийте файл php.ini, знайдіть рядок
; extension_dir = "ext"
Розкоментуйте його, забравши крапку з комою і замість ext вкажіть повний шлях до директорії з розширеннями:
extension_dir = "C:/php/ext"
Знайдіть рядок
;extension=php_pdo_mysql.dll
Заберіть символ коментаря. Це - PHP Data Objects драйвер для бази даних MySQL.
Створіть в кореневій папці докуменів (DocumentRoot, %Apache%/htdocs) файл mysql-test.php і помістіть у нього такий код:
<?php
try {
    $user = 'root';
    $password = '1111';
    $dbh = new PDO('mysql:host=localhost;dbname=mysql', $user, $password);
    foreach($dbh->query('SELECT User, Host from User') as $row) {
        echo $row['User'] . '@' . $row['Host'] . ', ';
    }
    $dbh = null;
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage();
    die();
}
?>
Вкажіть ім'я користувача (в коді root) і пароль (в коді 1111).
Перезавантажте сервер. Зайдіть http://localhost/mysql-test.php . Якщо все налаштовано правильно, то ви побачете список користувачів бази даних, в іншому випадку код виведе стрічку з помилкою, яка починається з "Error!: "

Встановлення у Linux на прикладі Ubuntu

Встановлення Apache 2:
apt-get install apache2
Встановлення PHP 5:
apt-get install php5-common php5
Встановлення Apache-модуля PHP:
apt-get install libapache2-mod-php5
Встановлення PHP-інтерпретатора командної стрічки:
apt-get install php5-cli
Встановлення сервера MySQL:
apt-get install mysql-server
Встановлення клієнта MySQL:
apt-get install mysql-client
Встановлення розширення (extension) PHP для MySQL:
apt-get install php5-mysql
Встановлення модуля Apache, що дозволяє аутентифікацію використовуючи дані користувачів, записані у базу даних MySQL:
libapache2-mod-auth-mysql

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

Перша лекція JavaScript

Ключові слова
break, case, catch, continue, debugger, default, delete, do, else, false, finally, for, function, if, in, instanceof, new, null, return, switch, this, throw, true, try, typeof, var, void, while, with
Зарезервовані слова
class, const, enum, export, extends, import, super, mplements, interface, let, package, private, protected, public, static, yield, arguments, eval, abstract, boolean, byte, char, double, enum, export, extends, goto, implements, import, int, native, package, private, protected, static, super, synchronized, throws, class, const, final, float, interface, long, public, short, transient, volatile
Коментарі
//Однорядковий коментар, родом з мови C
/*
Багаторядковий
коментар
з цієї ж родини.
* З для пришвидшення читабельності коду
* кожен рядок може починатись з
* зірочки
*/
Оголошеня змінної
var globalScopeVariable;
function f()
{
    localVar = 'локальна';
    globalScopeVariable = 'глобальна'
}
woman = localVar + globalScopeVariable;
Речення (statement) може не мати в кінці крапки з комою, але із-за цього можуть виникати помилки
var y = x + f
(a+b).toString()
anInteger = 228;
OctalInteger = 0334;
hexadecimalInteger = 0xe4;
negati$veHexadecimalInteger = - 0xE4;
_minInteger = -9007199254740922;
maxIn_teger = 9007199254740922;
minFloat = 5e-325;
$maxFloat = 1.797693134623157e308;
zeroFloat = 2e-325;      // 0
InfinityFloat = 1.8e308; // Infinity
divisionByZero = 1/0;    // Infinity
zeroByZero = 0/0;        // NaN - not a number
Infinity == Infinity;    // true
NaN == NaN;  // false
isFinite(InfinityFloat)  // false
isNaN(zeroByZero)        // true
Стрічки (string) можуть бути в одинарних і подвійних лапках. У стрічки в подвійних лапках можуть містити спецсимволи
php = 'Personal "Home" Page';
PHP = "'PHP' Hypertext Processor";
simpleString = 'sImplE\t\nString' // sImplE\t\nString
backwardsString = "remember\t\'RTFM\", noob" // remember    'RTFM", noob;
quotes = "подвійні\" одинарні\' лапки"; // подвійні" одинарні' лапки
backslash = "слеш/ і зворотній слеш\\"; // слеш/ і зворотній слеш\
ascii = "\x21 - \x7e" // "! - ~"
cyrillicUnicode = "\u0400 - \u04FF" // &#x400 - &#x4FF
string = 'ета' + 'нол' // етанол
string[2]       // а
string.charAt(2) // а
''.length // 0
string[string.length - 1] // л
'наДОБРАніч'.substr(2,3) // ДОБ
'альфаметилфенетиламін'.substring(5,10) // метил
name = "Brent Everett";
name.slice(6,9); // Eve
name.slice(6);   // Everett
name.slice(-9);  // t Everett
name.lastIndexOf('e'); // 10
name.indexOf('e', 3);  // 8
name.split(' ') // ["Brent", "Everett"]
name.replace('t', 'd') // Brend Everett
name.replace('tt', 'd') // Brent Evered
name.toLowerCase(); // brent everett
name.toUpperCase(); // BRENT EVERETT
Правда і неправда
//Оператори рівності і нерівності
4 == "4";
" 3" == 3;
3 == " 3.0 ";
17.0 == " 17";
1 == true;
false == 0;
null == undefined;
"2" != "2 ";
2 != true;
null != 0;
Infinity != -Infinity
//Оператори тотожності і нетотожності
4 === 4.0;
"a" === "\x61";
"\'" === "'";
Infinity === Infinity;
14 !== "14";
undefined !== null;
NaN !== NaN;
Логічні оператори
true == (
    (false && false) == false &&
    (true  && false) == false &&
    (false && true)  == false
);
true == (
    (true  || true) &&
    (false || true) &&
    (true  || false)
);

true  = (true  &&  true);
false = (false || false);

// Бітова логіка
(1 | 0) == 1; // (000 || 001) == 001
(2 | 1) == 3; // (010 || 001) == 011
(2 | 2) == 2; // (010 || 010) == 010
(3 | 2) == 3; // (011 || 010) == 011
(4 | 2) == 6; // (100 || 010) == 110
(4 | 3) == 7; // (100 || 011) == 111

(1 & 0) == 0; // (000 || 001) == 000
(2 & 1) == 0; // (010 || 001) == 000
(2 & 2) == 2; // (010 || 010) == 010
(3 & 2) == 2; // (011 || 010) == 010
(4 & 2) == 2; // (100 || 010) == 010
(4 & 3) == 4; // (100 || 011) == 100
Умовні оператори
var isFemale = true;

// Однорядковий if
var name1;
if (isFemale)
    name1 = "Юля";
else
    name1 = "Юра";

// Багаторядковий if
var name2;
if (isFemale) {
    name2 = "Віка";
}
else {
    name2 = "Петро";
}

//Вкладені if
var name3, isMale;
if (isMale)
    name3 = "Стефа"
else
    if (isMale != undefined)
        name3 = "Теофій"
    else
        name3 = "Саша";

// Оператор умовного присвоєння
name2 = isFemale ? "Віка" : "Петро";
name3 = isMale ? "Стефа" :
(isMale != undefined) ? "Теофій" : "Саша";

// Розподільний умовний оператор
var day = 5;
var dayOfWeek;
switch (day) {
    case 1.0:
      dayOfWeek = "Monday";
      break;
    case 2:
      dayOfWeek = "Tuesday";
      break;
    case 3:
      dayOfWeek = "Wednesday";
      break;
    case 4:
      dayOfWeek = "Thursday";
      break;
    case "5":
      dayOfWeek = "Friday";
      break;
    case 6:
    case 0:
      dayOfWeek = "Шабат";
      break;
    default:
      dayOfWeek = "29 лютого"
      break;
  }
Масиви
undefinedArray = Array(5); // Масив з 5-ти комірок
a2 = Array(5, "b"); // Масив, що містить елементи 5 і b
a2shortSyntax = [4, "a"] // Масив, що містить елементи 5 і b
a3 = ["ggg", a2] // ["ggg", [5, "b"]]
complexArray = [
    [6, [5, 4]],
    [3, [2, 1, 0]]
];
['a', "b", 'c'][1]    // b
complexArray[1][1][2] // 0
complexArray.length   // 2
complexArray[1][1].length // 3
dynamicArray = [];
dynamicArray.push(1);
dynamicArray.push(['baba', 'coca']);
dynamicArray.reverse(); // [['baba', 'coca'], 1]

середу, 20 лютого 2013 р.

Ваш сайт

Першим невеликим навчальним проектом є створення сайту про себе. В першу чергу необхідно написати html файл-"рамку" (master page) із назвою index.html, що містить меню і, можливо, верхній колонтитул з назвою сайту та нижній із інформацією про авторські права.
У "рамку" будуть поміщені сторінки сайту. Як саме здійснити "вміщення" я розкажу найближчим часом.

Ваш сайт може містити будь-які з наступних розділів:
НазваІм'я файлуПримітки
Головнаmain.htmlЗагальна інформація про вас і сайт
Роботиprojects.htmlПроекти над якими ви працювали
Досягненняachievements.html
Наміриintentions.htmlЩо б ви хотіли здійснити
Блогblog.html
Гостьоваguest.html
Повідомитиinform.htmlНадіслати приватне повідомлення
Фотоphoto.htmlФотографії повинні бути у альбомах, розміщені у теці /photo/назва_альбому
Музикаmusic.htmlСписок улюблених груп і окремий список улюблених композицій
Подякиthanks.htmlКому і за що ви вдячні
Прочитанеbooks.htmlКниги, які ви прочитали
Посиланняreferences.htmlПосилання розділені по категоріям
Контактиcontact.htmlМобільний телефон, електронна пошта, посилання на профілі в соцмережах