Українська зникла з phpMyAdmin

Поширте інформацію:

Десь з місяць тому хостери провели поновлення phpMyAdmin на своїх серверах до версії 3.4.4

Я був дуже розчарований, коли виявив, що українського інтерфейсу цей головний інструмент для роботи з базами даних MySQL тепер не має :( (у попередніх версіях був)

Соромно, тому що, наприклад, узбецьких локалізацій є аж дві – кирилицею і латинкою.

Тут вказано, що на українську перекладено 27%

Постараюся знайти час, щоб приєднатися до перекладу.

Закликаю тих, хто має змогу, також приєднатися.

UPD. У версії 3.4.10.1 українська є !!!

Дещо про мову регулярних виразів RegEx

Поширте інформацію:

В мові RegEx кожен вираз складається з одної або більше керівних команд. Деякі з них можна групувати (як групуються інструкції в програмі за допомогою операторних дужок), тоді вони вважаються однією командою.
Всі керівні команди поділяються на три класи:

  • прості символи, а також спеціальні символи, що заміняють їх
  • керівні конструкції (квантифікатори повторів, оператор альтернативи, групувальні дужки тощо)
  • так звані уявні символи – в рядку їх немає, однак вони позначають яку-небудь частину рядка. наприклад, його кінець)

Прості символи
Клас простих символів, справді, найпростіший. А саме, будь-який символ в рядку на RegEx позначає сам себе, якщо не належить до спеціальних символів.

До спеціальних символів належать такі:

. * ? + [ ] { } | $ ^

Наприклад, регулярний вираз “abcd” буде вибирати рядки, в яких зустрічається послідовність символів “abcd”.

Скасування дії спецсимволів

Якщо потрібно вставити у вираз один із спеціальних символів, але так, щоб він не позначав своєї спеціальної дії, поставте перед ним зворотній слеш. Наприклад, якщо ми шукаємо рядок, який містить фрагмент “a*b”, то маємо записати регулярний вираз “a\*b”.

Але в PHP цей вираз потрібно записати як “a\\*b”.

Групи символів

Звичайно ж,  RegEx дозволяє задавати не лише безпосередні частини шуканих рядків, як показано вище. Існують деякі спецсимволи, що позначають відразу групу простих символів. Ця можливість – один із наріжних каменів, основ регулярних виразів.

Найважливіший з таких знаків – крапка “.” – вона позначає будь-який один символ. Наприклад, вираз “a.b” відповідає рядкам “azb” або “aqb“, але не відповідає рядкам “aqwb” чи “ab“. Пізніше ми розглянемо, як заставити крапку позначати, скажімо,  рівно 5 будь-яких символів.

Може бути, що потрібно знайти не будь-який символ, а один з кількох конкретних. Для цього ті конкретні символи потрібно взяти у квадратні дужки. Наприклад, вираз “a[xXyY]c” відповідає рядкам, в яких є фрагменти по 3 символи,  які (фрагменти)  починаються з букви a, далі містять одну з таких букв: x,X,y,Y, і закінчуються буквою c. Якщо потрібно вставити поміж квадратних дужок сам символ  [ чи  ], то треба поставити перед ним зворотний слеш (в PHP – два слеші), щоб скасувати його спеціальну дію.

Якщо букв-альтернатив багато, і вони йдуть підряд, то не обов’язково перераховувати в квадратних дужках їх всі – можна вказати першу, поставити дефіс і вказати останню.  Такі групи можуть повторюватися. Наприклад, вираз “[a-z]” визначає будь-яку букву від a до z включно, а вираз “[a-zA-Z0-9_]” визначає будь-який алфавітно-цифровий символ.

Існує ще інший, іноді зручніший спосіб задавання великих груп символів. В мові RegEx в квадратних дужках можуть вказуватися не лише одиничні символи, але й спеціальні вирази. Ось їх повний список:

  • [:alpha:] – буква;
  • [:digit:] – цифра;
  • [:alnum:] – буква або цифра;
  • [:space:] – пропуск;
  • [:blank:] – пропуск або символи з кодами 0 і 255;
  • [:cntrl:] – спеціальний символ;
  • [:graph:] – символ псевдографіки

(Стаття не завершена.

Краще використовувати мову регулярних виразів PCRE, а не RegEx)

Форми HTML – теґ <select> – список з вибором

Поширте інформацію:

Парний теґ <select> описує список з вибором, що випадає, або розкритий список з вибором.

Формат:

<select name="ім’я" [size="розмір"] [multiple]>
<option [value="значення1"] [selected]>Рядок1<option>
<option [value="значення2"] [selected]>Рядок2<option>
...
<option [value="значенняN"] [selected]>РядокN<option>
</select>

Параметр size визначає, скільки рядків на екрані займатиме список. Якщо size не задано, або задано size=1, буде відображатися список, що займає 1 рядок і розкривається (т. зв. комбобокс), інакше список буде займати size рядків і вертикальну смугу прокрутки в разі, якщо теґів <option> всередині більше, ніж значення size.

Якщо вказаний атрибут multiple, користувачу буде дозволено вибирати кілька рядків, утримуючи клавішу Ctrl (для списку, що розкривається, атрибут multiple не має сенсу).

Кожен рядок списку задається парним теґом <option>. Якщо в ньому заданий атрибут value, то відповідний рядок списку буде ідентифікуватися його значенням, якщо не заданий – рядок буде ідентифікуватися текстом між теґами <option> та </option> (тоді вважається, що значенням value є цей текст).

Текст між теґами <option> та </option> буде відображатися в браузері.

Якщо заданий атрибут selected, то відповідний рядок автоматично буде вибраним після завантаження форми.

Замикаючі теґи </option> можна опускати.

Що ж список з вибором передає сценарію на боці сервера при надсилання форми?

Зі списком, що випадає все зрозуміло: передається пара ім’я=значення,

ім’я задається атрибутом name теґа <select>, значення – це значення, визначене тегом <option> рядка, який вибрав користувач (значення атрибута value або вміст рядка теґами <option>).

А як же, коли список надає можливість вибору кількох рядків і користувач скористався цією можливістю?

Наприклад, маємо список

<select name="Sel" multiple>
<option>First
<option>Second
<option>Third
</select>

і користувач вибрав рядки First і Third.
Очевидно, серверному сценарію буде передано рядок:

Sel=First&Sel=Third

Виходить, при розборі параметрів інтерпретатором PHP змінній $_REQUEST[‘Sel’] буде присвоєно значення ‘First’, а тоді – значення ‘Third’ і значення ‘First’ буде втрачено?

Для вирішення даної проблеми передбачена можливість давати полям форми імена у вигляді масиву з “індексами”.

<select name="Sel[]" multiple>
<option>First
<option>Second
<option>Third
</select>

Тоді сценарію передасться рядок

Sel[]=First&Sel[]=Third

і інтерпретатор при його розборі створить масив з автозаповненням
$_REQUEST['Sel'] = array(0=>'First', 1=>'Third')

Отже, будуть збережені всі вибрані користувачем дані.

Зауважимо, що функціональність списку, що випадає, можна реалізувати за допомогою теґа <input type=”radio”>, а функціональність списку з можливістю множинного вибору можна реалізувати за допомогою теґа <input type=”checkbox”>.

Трохи лірики…

Поширте інформацію:

Андрэй Хадановіч

Верш на Свабоду

Мы покуль не народжаны народ,
мы вязьні скамянелых яйцаклетак,
мысьленча запаволены чарот;
хтось падла, хтось зусім яшчэ падлетак,

хтось піша і рыторыкай старой
уводзіць юнакоў у заблужджэньне:
змагар, руплівец, ходаньнік, герой,
тытан, а мо й тытанік адраджэньня.

Стаміліся й губляем лік гадам:
гады ў турме паўзучыя, як гады!
Дзе ж тая паўнагрудая мадам,
што ўсіх нас павядзе на барыкады?

Што маем, ёй бы кінулі да ног!
І вартавыя чуюць нашы енкі,
калі начамі ў каляровых снох
мы бачым гэту кралю без сукенкі.

Мы валім дрэвы, чэшам камяні,
капаем катлаваны і каналы,
чакаем на спатканьні, лічым дні
й абагульняем сьвет наш дасканалы.

Бо верым: навакольнае лайно
цудоўным гноем станецца ў гасподзе.
Па-праз закратаванае акно
гартуем дых, каб дыхаць на свабодзе.

include vs require

Поширте інформацію:

Інструкції PHP include та require дають можливість розділити текст програми на кілька файлів.

Формат інструкції include:

include назва_файла;

Зустрівши в сценарії таку інструкцію, інтеррпретатор PHP під час виконання сценарію підставить замість неї вміст файла назва_файла.

Формат інструкції require:

require назва_файла;

Зустрівши в сценарії таку інструкцію, інтеррпретатор PHP під час запуску сценарію  (саме запуску, а не виконання) підставить замість неї вміст файла назва_файла.

Яке має значення – під час запуску, чи під час виконання?

Розглянемо приклад. Нехай маємо 10 текстових файлів з іменами file0.php, file1.php,…,file9.php Кожен файл містить десяткову цифру 0,1,…,9 (по одній цифрі в кожному файлі). Тоді код

for ($i = 0; $i < 10; $i++) {
include "file$i.php";
}

виведе в браузер 10 цифр: “0123456789”.

А код

for ($i = 0; $i < 10; $i++) {
require "file$i.php";
}

виведе в браузер 10 нулів: “0000000000”.

Зауваження. Під час виконання інструкції include інтерпретатор PHP призупиняє виконання основної програми до того часу, поки не буде відтрансльований вміст файла, що включається. Це може негативно вплинути на швидкодію програми. Тому бажано використовувати всюди, де можна, використовувати require замість include.

Інструкції одноразового включення

Обидві інструкції мають “одноразові” аналоги:

include_once назва_файла;
require_once назва_файла;

відповідно. Особливість їх роботи полягає в тому, що вказані в цих інструкціях файли включаються в програму лише раз. Тобто, якщо програмі повторно зустрінеться “одноразова” інструкція включення того самого файлу, то ця, повторна, інструкція не виконає нічого.  Це може бути використано для запобігання ситуації, коли якась бібліотека підключається до програми спочатку напряму, а тоді ще один раз  (зайвий) з якоїсь іншої бібліотеки.

Деякі часто вживані властивості CSS: margin, padding

Поширте інформацію:

Випишу деякі властивості CSS, які часто використовуються, і призначення яких легко переплутати.

margin – задає величину відступу для кожного краю елемента від краю батьківського елемента.

Якщо в елемента немає батька,  відступом буде відстань від краю елемента до краю вікна браузера. Однак, треба враховувати, що для самого вікна браузера (клієнтської області) за замовчуванням також встановлені відступи. Щоб позбавитися їх, необхдіно задати нульове значення margin для селектора <body>

Синтаксис

margin: значення|auto{1,4}

Можна використовувати одне, два, три або чотири значення. Ефект залежить від кількості значень:

  • 1 – відступи будуть встановлені для всіх країв елемента
  • 2 – перший аргумент встановлює відступи для верхнього та нижнього країв, другий – для лівого та правого країв
  • 3 – перший аргумент задає відступ для верхнього краю, другий – одночасно для лівого та правого краю, третій – для нижнього краю
  • 4 – встановлюються відступи відповідно для верхнього, правого, нижнього і лівого країв

Величину відступів можна вказувати в пікселях (px), відсотках (%) та інших допустимих для CSS одиницях. Аргумент auto вказує, що значення відступу повинне бути автоматично розраховане браузером.

Якщо ви забудете, в якому порядку вказуються значення відступів, і не матимете під рукою цієї, або іншої шпаргалки, можете задати відступи у розгорнутій формі, властивостями

margin-top, margin-right, margin-bottom, margin-left

Значення цих властивостей аналогічне, але вони задають відступ для тільки одного краю відповідно до їх назви.

padding – задає величину відступів (берегів)  вмісту (тексту) елемента від його країв.

Властивість дозволяє встановити величину берега відразу від всіх країв елемента або окремо від кожного краю.

Синтаксис

padding: значення|auto{1,4}

Можна використовувати одне, два, три або чотири значення. Ефект залежить від кількості значень:

  • 1 – береги задаються від  всіх країв елемента
  • 2 – перший аргумент встановлює береги від верхнього та нижнього країв, другий – для лівого та правого країв
  • 3 – перший аргумент задає берег від верхнього краю, другий – одночасно для лівого та правого краю, третій – для нижнього краю
  • 4 – встановлюються береги відповідно від верхнього, правого, нижнього і лівого країв

Величину відступів можна вказувати в пікселях (px), відсотках (%) та інших допустимих для CSS одиницях. Аргумент auto вказує, що значення відступу повинне бути автоматично розраховане браузером.

Можна також задавати береги окремо за допомогою властивостей

padding-top, padding-right, padding-bottom, padding-left.

Значення властивостей відповідає їх назві.


border – ця властивість не стосується відступів, а встановлює товщину, колір і стиль рамок навколо елемента, тому в цій публікації розглядатися не буде :)