Блог

Фрілансера

RSS
rss
Сцилочка дня
Play bridge online classic
Закладки

Лют

9

Продовжуємо грати в дурака)

категорія: games, флуд

Від дня публікації карточної гри дурак пройшло не мало не багато – півроку. І за цей час було зіграно 350 партій. А це приблизно по дві парті щодня.
Коротка статистика:

103 – виграв гравець
90 – виграв бот
19 – нічия
138 – партія не закінчена

Скоро буде залита ще одна гра. Цього разу написана на флеші.

Слідкуйте за постами :)

Лют

5

Google vs Microsoft

категорія: флуд

Browser Statistics

Browser Statistics

Кому з верстальщиків не приходилось годинами паритись через fucking IE6? Особливо через його небажання правильно показувати напівпрозорість.

І який є вихід з цієї ситуації? забити на нього :)

Глянемо на статистику від w3schools. Google Chrome перегнав Internet Explorer 6!!!

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

Січ

15

Оптимізація php-коду ч.1

категорія: php

Останнім часом приходиться часто задумуватись над швидкістю роботи скрипта. Особливо коли кодинг іде під великий проект.
Тому ділюсь деякими моментами оптимізації.

Вибірка з бази даних.

Як вибрати дані з бази даних?
Звичайний спосіб:


$sql = 'SELECT * FROM `users`';
$result = mysql_query($sql);
if (!$result) {
    echo mysql_error();
    exit;
}
if (mysql_num_rows($result) == 0) {
    echo "No rows found";
    exit;
}

А я пропоную дещо краще:


function fetchRow($sQuery) {
  $res = mysql_query($sQuery);
  $aRet = mysql_num_rows($res) ? mysql_fetch_assoc($res) : false;
  mysql_free_result($res);

  return $aRet;
}

$aData = fetchRow('SELECT * FROM `users`');

В результаті маємо масив даних, або false, якщо даних немає.
Це якщо збираємось вибирати тільки один рядок.

А якщо буде більше одного рядка – то:


function fetchRows($sQuery) {
  $res = mysql_query($sQuery);
  $iNumRows = mysql_num_rows($res);
  $aRet = array();
  if ($iNumRows) {
    while ($iNumRows-- > 0) {
      $aRet[] = mysql_fetch_assoc($res);
    }
  } else {
    $aRet = false;
  }
  mysql_free_result($res);

  return $aRet;
}

$aData = fetchRow('SELECT * FROM `users`');

В результаті маємо масив рядків або false.

Гру

16

дужки, які тільки групують

категорія: php

Поговоримо про регулярні вирази (регулярку).
Візьмемо приклад:


$number = '+380670000000';
$aReturn = array();
$exp = "/^\+?3?((8039|8050|8063|8066|8067|8068|8093|8095|8096|8097|8098|8099)\d{7})$/";

preg_match($exp, $number, $aReturn);

print_r($aReturn);

Тут ми перевіряємо на валідність мобільний номер.
В результаті получимо:

Array
(
[0] => +380670000000
[1] => 80670000000
[2] => 8067
)

А навіщо нам $aReturn[2]???

Отже задача:
Потрібно в регулярці згрупувати елементи, але не потрібно їх запам’ятовувати для видачі.

Вихід із ситуації:


$number = '+380670000000';
$aReturn = array();
$exp = "/^\+?3?((?:8039|8050|8063|8066|8067|8068|8093|8095|8096|8097|8098|8099)\d{7})$/";

preg_match($exp, $number, $aReturn);

print_r($aReturn);

В результаті получимо:

Array
(
[0] => +380670000000
[1] => 80670000000
)

А відрізняється лише ?:
Тобто потрібно поставити ?: одразу після відкритих дужок, щоб вони не запам’ятовувались.

Лис

19

Date Time picker

категорія: jquery

Недайно прийшлось заюзати календар з часом, тобто datetime picker. Багато з тих що знайшов в онлайні не підходили по ряду причин. Тому вирішено зробити огляд календарів на JavaScript, які мають як дату і час.

Перший календар – це популярний пікер на JQuery. Хоча він і немає часу, але забути про нього я не можу.

JQuery UI Datepicker

http://jqueryui.com/demos/datepicker/

jquery

jquery

Плюси:

  • зміна тем (themes)
  • багато настройок

Мінуси:

  • Я так і не знайшов можливості вводити час. Хіба що використати додатковий плагін.

Читати далі »

Жов

28

PHP, робота з картинками

категорія: php

Часто приходиться загружати на сервер (upload) різні картинки. І постійно приходиться писати одні і ті ж функції для роботи з картинками.
Тому я вирішив написати одну лібу (img.lib) на php, для загрузки картинок на сервер і їх обробки.
Отже набір функцій:
checkPic – перевіряємо картинку перед загрузкою. Максимальний розмір (size), розширення (extension), розрішення (resolution).
movePic – загружаємо картинку (робимо upload).
resizePic – змінюємо розміри картинки (resize).
Читати далі »

Жов

14

Я попав в Dmoz

категорія: seo

З вчорашнього дня блог фрілансера знаходиться в дмозі :)

Першу заявку було подано 2-3 місяці тому назад. І нарешті блог Sergunik.name знаходиться в самому відомому каталозі Dmoz.

Дуже дякую редакторам.

Жов

8

reset css

категорія: css

Пост присвячений верстальщикам.

Файл reset.css – це обнулятор стилів.

У кожного браузера є свої настройки для різних тегів, наприклад для параграфів чи інпутів. А підключивши reset.css можна полегшити процес верстки.

Отже, є багато варіантів.

Особисто я завжди використовував

* {
margin: 0;
padding: 0;
}

Але цього мало :(

YUI 2

reset.css від yahoo

body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,
form,fieldset,input,textarea,p,blockquote,th,td {
	margin:0;
	padding:0;
}
table {
	border-collapse:collapse;
	border-spacing:0;
}
fieldset,img {
	border:0;
}
address,caption,cite,code,dfn,em,strong,th,var {
	font-style:normal;
	font-weight:normal;
}
ol,ul {
	list-style:none;
}
caption,th {
	text-align:left;
}
h1,h2,h3,h4,h5,h6 {
	font-size:100%;
	font-weight:normal;
}
q:before,q:after {
	content:'';
}
abbr,acronym {
	border:0;
}

meyers css

reset.css від meyer

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
	margin: 0;
	padding: 0;
	border: 0;
	outline: 0;
	font-size: 100%;
	vertical-align: baseline;
	background: transparent;
}
body {
	line-height: 1;
}
ol, ul {
	list-style: none;
}
blockquote, q {
	quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
	content: '';
	content: none;
}

/* remember to define focus styles! */
:focus {
	outline: 0;
}

/* remember to highlight inserts somehow! */
ins {
	text-decoration: none;
}
del {
	text-decoration: line-through;
}

/* tables still need 'cellspacing="0"' in the markup */
table {
	border-collapse: collapse;
	border-spacing: 0;
}

Вибираємо для себе підходящий.

Вер

9

Як прибити футер до низу сторінки?

категорія: css

Сьогодні зіткнувся з проблемою розташування футера.

Задача полягала в тому щоб виставити відповідний блок внизу вікна.

Багато переглянув прикладів з position: absolute, але це все не те.

Вихід знайшов, причому, як завжди, надзвичайно простий.

Ось приклад html-коду:

<html>
<head>
<title>footer panel</title>
<style>
   .header { height: 50px; border:dotted 1px silver;}
   .content { height: 100px; border:dotted 1px blue;}
   .footer { height: 30px; border:dotted 1px black; width: 100%; position: fixed; bottom: 0;}
</style>
</head>
<body>
<div>header</div>

<div>content</div>

<div>footer</div>
</body>
</html>

В результаті, футер буде постійно знизу.

Вер

7

Сабміт на ссилку і кнопку одночасно

категорія: jquery

Пост присвячений в першу чергу для мене, щоб на слідуючий раз знову не шукати в неті подібну інфу.

Потрібно зробити формочку де замість кнопки з type=”submit” буде ссилочка з такими ж властивостями (тобто клікаєм по ссилці і форма сабмітиться).
Потрібно також вставити приховану кнопочку сабміта, щоб форма відпрацьовувала по натисканні кнопки Enter на клаві.

Отже, як мінімум 3 рішення:
Читати далі »

stat24 -счетчик посещаемости сайта Valid XHTML 1.0 Transitional
Блог фрілансера
Sergunik
2009