sysbench --test=oltp --oltp-table-size=1000000 --oltp-table-name=%table% --mysql-db=%db% --mysql-user=%user% --mysql-password=%password% prepare
Как быстро сгенерировать таблицу MySQL с большим количеством строк?
Покажите несколько алгоритмов сортировки на PHP
Пожалуйста:
//Bubble Sorting
function bubbleSort(array $arr) {
$count = count($arr);
if ($count <= 1) {
return $arr;
}
for ($i = 0; $i < $count; $i++) {
for ($j = $count - 1; $j > $i; $j--) {
if ($arr[$j] < $arr[$j - 1]) {
$tmp = $arr[$j];
$arr[$j] = $arr[$j - 1];
$arr[$j - 1] = $tmp;
}
}
}
return $arr;
}
//Insert Sorting
function insertSort(array $arr) {
$count = count($arr);
if ($count <= 1) {
return $arr;
}
for ($i = 1; $i < $count; $i++) {
$cur_val = $arr[$i];
$j = $i - 1;
while (isset($arr[$j]) && $arr[$j] > $cur_val) {
$arr[$j + 1] = $arr[$j];
$arr[$j] = $cur_val;
$j--;
}
}
return $arr;
}
//Merge Sorting
function mergeSort(array $arr) {
$count = count($arr);
if ($count <= 1) {
return $arr;
}
$left = array_slice($arr, 0, (int)($count/2));
$right = array_slice($arr, (int)($count/2));
$left = mergeSort($left);
$right = mergeSort($right);
return merge($left, $right);
}
function merge(array $left, array $right) {
$ret = array();
while (count($left) > 0 && count($right) > 0) {
if ($left[0] < $right[0]) {
array_push($ret, array_shift($left));
} else {
array_push($ret, array_shift($right));
}
}
array_splice($ret, count($ret), 0, $left);
array_splice($ret, count($ret), 0, $right);
return $ret;
}
//Quick Sorting
function quickSort(array $arr) {
$count= count($arr);
if ($count <= 1) {
return $arr;
}
$first_val = $arr[0];
$left_arr = array();
$right_arr = array();
for ($i = 1; $i < $count; $i++) {
if ($arr[$i] <= $first_val) {
$left_arr[] = $arr[$i];
} else {
$right_arr[] = $arr[$i];
}
}
$left_arr = quickSort($left_arr);
$right_arr = quickSort($right_arr);
return array_merge($left_arr, array($first_val), $right_arr);
}
//Select Sorting
function selectSort(array $arr) {
$count= count($arr);
if ($count <= 1){
return $arr;
}
for ($i = 0; $i < $count; $i++){
$k = $i;
for($j = $i + 1; $j < $count; $j++){
if ($arr[$k] > $arr[$j]){
$k = $j;
}
if ($k != $i){
$tmp = $arr[$i];
$arr[$i] = $arr[$k];
$arr[$k] = $tmp;
}
}
}
return $arr;
}
Как размножить текст на PHP?
Имеется такой текст:
{Вкуси же, друг,|Съешь ещё этих {мягких|свежих}} {французских|испанских} {булок|пончиков}, да выпей {чаю|кофе}.Нужно сгенерировать все возможные варианты этого текста, которые можно получить путем "раскрытия скобок". Скобки могут быть вложенные.
Для этой задачи в закромах имеется такое народное творчество:
function multiply_text($text) {
$result = array($text);
do {
$found = array();
$tmp = array();
foreach ($result as $key=>$string) {
if (preg_match('/\{([^\{\}]+)\}/Uis', $string, $matches)) {
$found[] = $key;
$substrings = explode('|', $matches[1]);
foreach ($substrings as $s) {
$tmp[] = preg_replace('/\{'.preg_quote($matches[1]).'\}/Uis', $s, $string);
}
}
}
if (count($found) > 0) {
foreach($found as $key){
unset($result[$key]);
}
$result = array_unique(array_merge($result, $tmp));
}
} while (count($found) > 0);
return $result;
}
Есть ли быстрый способ пробежаться по символам мультибайтной строки?
Можно сделать из строки массив символов таким образом:
$chrArray = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);
И уже бежать по массиву как вам больше нравится.
Как перевести слово с помощью Google Translate?
Можно так:
function gtranslate($text, $from='auto', $to) {
if ( $from == '' ) $from = 'auto';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://translate.google.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13');
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-Charset: utf-8,windows-1251;q=0.7,*;q=0.7"));
curl_setopt($ch, CURLOPT_REFERER, 'http://translate.google.com/');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "hl=ru&ie=UTF-8&js=n&prev=_t&layout=2&eotf=1&sl=".$from."&tl=".$to."&text=".urlencode($text));
$res = curl_exec($ch);
if( curl_errno($ch) ) $res = false;
curl_close($ch);
if ($res == false) return;
$_ = '';
if ( preg_match("~<span id=result_box class=\"(short|long)_text\">(.*)</span></span>~", $res, $translate) ) {
$_ = strip_tags($translate[2]);
if ( preg_match('~<~', $text) && preg_match('~>~', $text) ) {
$_ = preg_replace('~<~', '<', $_);
$_ = preg_replace('~>~', '>', $_);
$_ = preg_replace('~</ ~', '</', $_);
}
}
return $_;
}
echo gtranslate('Hello, world!', 'en', 'ru');
Как заменить "простые" кавычки в тексте на «ёлочки»?
На просторах сети была найдена простая и в то же время мощная функция:
function typograph($text) {
$text = html_entity_decode($text, ENT_QUOTES, 'utf-8');
$arr = array(
// Убираем символ троеточия
'/…/u' => '...',
// Кавычки «ёлочки» « »
'/(^|[\s;\(\[-])"/' => '$1«',
'/"([\s-\.!,:;\?\)\]\n\r]|$)/' => '»$1',
'/([^\s])"([^\s])/' => '$1»$2',
// Длинное тире —
'/(^|\n|["„«])--?(\s)/u' => '$1—$2',
'/(\s)--?(\s)/' => ' —$2',
// Непереносимый проблел после коротких слов
'/([\s][a-zа-яё]{1,2})[ ]/iu' => '$1 '
);
foreach ($arr as $key=>$val) {
$text = preg_replace($key, $val, $text);
}
// Вложенные кавычки „ “
while (preg_match('/(«[^«»]*)«/mu', $text)) {
$text = preg_replace('/(«[^«»]*)«/mu', '$1„', $text);
$text = preg_replace('/(„[^„“«»]*)»/mu', '$1“', $text);
}
return $text;
}
Покажите пожалуйста минимальный конфиг virtual host для Nginx + php-fpm?
server {
listen 80;
server_name example.com;
root /usr/share/nginx/www;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.html;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Как упаковать/распаковать .tar.gz?
Упаковать все файлы и папки в текущей директории:
tar -czf /path/to/new/archive.tar.gz *Распаковать в текущую директорию:
tar -xzf archive.tar.gz
Есть ли аналог str_replace() из PHP в MySQL?
Есть:
UPDATE table_name SET field_name = REPLACE(field_name, 'old string', 'new string');
Как в .htaccess разрешить доступ к сайту только с одного IP?
Как-то так:
order deny,allow
deny from all
allow from 111.222.333.444
P.S. Правил allow может быть несколько.
Как прописать в .htaccess редирект c non-www на www?
Вот так:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
Как сгенерировать пароль на PHP?
Достаточно простой и в то же время гибкий вариант может выглядеть так:
function generatePassword($length=10) {
$chars = '0123456789ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz-~!+*%$#&';
return substr(str_shuffle($chars), 0, $length);
}А фанатов минимализма порадуем таким однострочником:
$password = substr(hash('sha512', rand()), 0, 10);
Как заставить parseInt() возвращать число вместо NaN?
Можно так:
function myParseInt(n) {
n = parseInt(n);
if ( typeof n !== 'number' || !isFinite(n) ) n = 0;
return n;
}
Как выбрать 5 последних строк из каждой категории?
Один из вариантов:
SET @i := 0, @category_id := 0, @n := 5;
SELECT * FROM (SELECT * FROM articles ORDER BY category_id ASC, id DESC) AS q WHERE (IF (@category_id = q.category_id, @i := @i + 1, (@category_id := q.category_id) AND (@i := 1)) <= @n - 1)
Как заменить каждый второй символ в строке на *?
Очень простое регулярное выражение:
$str = 'Lorem ipsum dolor sit amet';
echo preg_replace('/(.)./u', '$1*', $str);На выходе получим:
L*r*m*i*s*m*d*l*r*s*t*a*e*
Как найти дубликаты в массиве?
Есть минимум два варианта.
Первый позволяет узнать так же количество дубликатов каждого элемента:
$a = array('q', 'w', 'e', 'r', 't', 'y', 'q', 'w');
print_r(
array_filter( array_count_values($a), function($v) {return $v>1;} )
);Второй позволяет узнать индексы первого вхождения дубликатов:
$a = array('q', 'w', 'e', 'r', 't', 'y', 'q', 'w');
print_r(
array_diff_assoc( $a, array_unique($a) )
);
Как проверить номер телефона на соответствие формату?
На StackOverflow был найден следующий трюк:
function validatePhoneNumber($number){
$formats = array(
'###-###-####', '####-###-###',
'(###) ###-###','####-####-####',
'##-###-####-####','####-####','###-###-###',
'#####-###-###', '##########', '#########',
'# ### #####', '#-### #####'
);
$format = trim(preg_replace('/[0-9]/', '#', $number));
return in_array($format, $formats);
}Просто перечисляем в $formats нужные нам форматы и наслаждаемся результатом.
Как вызвать метод (action) контроллера из шаблона (view) в Laravel?
Очень просто:
{{ ControllerName::actionName($params) }}Разумеется метод
actionName() должен быть статическим.
Как получить разность двух дат на PHP?
Класс DateTime легко решает эту задачу:
$date1 = new DateTime("2014-05-23");
$date2 = new DateTime("2012-12-21");
$diff = $date1->diff($date2);
print_r($diff);
Как получить (извлечь) расширение файла из имени?
Так:
$ext = pathinfo($filename, PATHINFO_EXTENSION);