Блог

Фрілансера

RSS
rss
Сцилочка дня
Продажа часов часы Tissot копии часов.
стабилизатор
купить строительные материалы
Закладки

Сер

31

regexp: номер мобільного

категорія: parser, php

Наразі працюю над одним цікавим проектом і викладаю регулярку для парсинга мобільного номера і головне його видача у правильному форматі, тобто у форматі +380670000000.

$regexp = ‘/\+?\s?3?[-\s\(]*8?[-\s\(\)]*0[-\s\(\)]*(\d)[-\s\(\)]*(\d)[-\s\(\)]*(\d)[-\s]*(\d)[-\s]*(\d)[-\s]*(\d)[-\s]*(\d)[-\s]*(\d)[-\s]*(\d)[-\s]*/’;

Смисл полягає в тому, що на виході ми маємо масив цифр мобільного номера.
Залишається лише зліпити їх :)
Читати далі »

Тра

20

Час виконання скрипта

категорія: javascript, perl, php

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

Замір часу

JavaScript

<script type="text/javascript">
  var timeBefore = new Date();

  for(var i=1; i<1000000; i++) {
    //do something
  }

  var timeAfter = new Date();
  var workTime = timeAfter.getMilliseconds() - timeBefore.getMilliseconds();

  alert("Час виконання скрипта = " + workTime + "мс");
</script>

PHP

<?php
$t1 = microtime();

for($i=1; $i<1000000; $i++) {
  //do something
}

$t2 = microtime();
printf("Час виконання скрипта = %f мс", $t2-$t1);
?>

Perl

#!/usr/bin/perl
use Time::HiRes qw(gettimeofday);

$t1 = gettimeofday;

for($i=1; $i<1000000; $i++) {
  //do something
}

$t2 = gettimeofday;

printf("Час виконання скрипта = %f мс", $t2-$t1);
?>

Є ще один цікавий спосіб, але він працює лише в консолі. Тобто потрібно мати Firefox+Firebug.

JavaScript Console

<script type="text/javascript">
  console.time("name");

  for(var i=1; i<1000000; i++) {
    //do something
  }

  console.timeEnd("name");
</script>

Кві

6

Погода через смс (безплатно)

категорія: parser, php, sms

Суть ідеї: Кожно ранку о 8:00 получати смс з прогнозом погоди на цілий день. Без використання платних послуг.

Щоб це зробити, потрібно виконати дві задачі:

  1. дізнатись прогноз погоди у моєму місті
  2. відправити смс

Щоб знайти прогноз погоди вирішено заузати Google Weather API.

Глянем урлу http://www.google.com/ig/api?weather=L’viv
В результат получаєм XML:

Читати далі »

Лют

24

Perl and PHP

категорія: perl, php

perl vs php

perl vs php


Тільки недавно почав писати на перлі і одразу помітив схожість з пхп.
Сьогодні на прикладі короткого скрипта покажу чим схожі Perl і PHP.
Читати далі »

Січ

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 = fetchRows('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
)

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

Жов

28

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

категорія: php

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

Сер

21

Парсер на PHP

категорія: parser, php

За час роботи на фрілансі було багато замовлень на написання парсерів. Відповідно назбиралось багато прикладів.
Сьогодні у Вас є можливість скачати приклади парсерів різної складності (ссилочка вкінці).

parser №1

DOMDocument
Завдання: спарсити футер.


error_reporting(E_ALL);

$data='http://sergunik.name/';
$data = urlencode(trim($data));

$doc = new DOMDocument();
@$doc->loadHTMLFile($data);

foreach($doc->getElementsByTagName('div') as $items) {
if($items->getAttribute('class') == 'footer') {
      print $items->nodeValue;
   }
}

Читати далі »

Сер

4

Карточна гра “Дурак” на PHP5

категорія: games, php

Щось я давненько не писав… Пора мабуть показати кусочок цікавого коду :)

Відтепер у мене відкривається новий напрямок у веб-програмуванні – написання ігр на пхп!!!

Знаю, звучить смішно, навіть згадується анегдот:

топик: Нужны ли программисту на Java/C#/PHP хорошие знания матана/дискретки/диффуров?

<ScuFF> Если вы захотите написать движок для трехмерной игры, скажем, на php, то вам обязательно потребуется знания математики.
<AleksDesker> Если вы захотите написать движок для трехмерной игры, скажем, на php, то для начала вам потребуется психиатр.

І все ж таки у мене уже є деякий результат.

Вже написана карточна гра “дурак” на php.

Дійові особи: юзер, бот.
Правила гри писати не збираюсь, усі їх і так знають.
Короч. граємо і залишаємо коменти з зауваженнями, пропозиціями.

Дурак

P.S.: За ссурс-кодом звертатись особисто (на мило чи по скайпі), я не жадний :)
P.P.S.: Я кодер, а не дизайнер. Якщо хтось хоче проявити свої дизайнерські вміння, щодо гри – буду безмежно вдячний.

Тра

22

Імпорт з 1С в базу даних mySQL

категорія: php

Сам скрипт синхронізації 1С з mySQL вже давно написаний і постійно вдосконалюється, я лише хочу детальніше розповісти про нього.

import

import

Отже, уявіть ситуацію: У Вас є інтернет-магазин та потрібно час-від-часу перенести дані про товар з 1С в сам інтернет-магазин, тобто базу даних.

Робимо це через excel-файл, а точніше csv-файл.

Читати далі »

Блог фрілансера
Sergunik
2009-2010