33 заметки с тегом

шпаргалка РСС

16 мая 2012, 17:40

Типы СУБД

  • реляционные: MySQL, Oracle, Microsoft SQL Server, PostgreSQL;
  • различные варианты хеш-таблиц key-value (Redis, BigTable, memcached);
  • документо-ориентированные базы данных (MongoDB, CouchDB);
  • базы данных, основанные на графах (Neo4j, Sones GraphDB);
  • объектно-ориентированные базы данных (db4o, Cache, Jade);
  • XML-ориентированные базы данных (eXist, BaseX).
зы: MongoDB использует в качестве языка запросов BSON, eXist применяет XQuery, а Sonic GraphDB требует от разработчика знания GraphQL
шпаргалка

18 июня 2011, 16:36

GIT: шпора

Начал активно пользовать гыт, так что начну здесь копить шпору:
Global setup:
 Download and install Git
  git config --global user.name "Vitaliy"
  git config --global user.email vitlik@gmail.com
        
Next steps:
  mkdir i-just-forget-somthing
  cd i-just-forget-somthing
  git init
  touch README
  git add README
  git commit -m 'first commit'
  git remote add origin git@github.com:deerua/i-just-forget-somthing.git
  git push -u origin master
      
Existing Git Repo?
  cd existing_git_repo
  git remote add origin git@github.com:deerua/i-just-forget-somthing.git
  git push -u origin master
git   шпаргалка

9 апреля 2011, 16:52

CSS: nth-child параметры псевдокласса

Значение Номера элементов Описание
1 1 Первый элемент, является синонимом псевдокласса :first-child.
5 5 Пятый элемент.
2n 2, 4, 6, 8, 10 Все четные элементы, аналог значения even.
2n+1 1, 3, 5, 7, 9 Все нечетные элементы, аналог значения odd.
3n+2 2, 5, 8, 11, 14
-n+3 3, 2, 1
5n-2 3, 8, 13, 18, 23
even 2, 4, 6, 8, 10 Все четные элементы.
odd 1, 3, 5, 7, 9 Все нечетные элементы.
css   шпаргалка

27 января 2011, 12:29

Mysql show create

mysql> show create database AAA;
+----------+-----------------------------------------------------------------------------------+
| Database | Create Database                                                                   |
+----------+-----------------------------------------------------------------------------------+
| AAA      | CREATE DATABASE `AAA` /*!40100 DEFAULT CHARACTER SET cp1251 COLLATE cp1251_bin */ |
+----------+-----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> show create table charset_test2;
+---------------+------------------------------------------------------------------------------+
| Table         | Create Table                                                                 |
+---------------+------------------------------------------------------------------------------+
| charset_test2 | CREATE TABLE `charset_test2` (
  `str` varchar(20) collate cp1251_bin default NULL,
  `str2` varchar(20) character set cp1251 default NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_bin |
+---------------+------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql   шпаргалка

21 декабря 2009, 15:49

PHP: in_string (аналог in_array)

function in_string($needle, $haystack, $insensitive = 0) {
	if ($insensitive) {
		return (false !== stristr($haystack, $needle)) ? true : false;
	} else {
		return (false !== strpos($haystack, $needle)) ? true : false;
	}
}	
Как видим, это просто stristr и strpos ;)
php   шпаргалка

17 декабря 2009, 21:55

Приоритет селекторов

  1. styleDeclaration в тэге;
  2. #idName с правиле;
  3. .className и pseudo-className в правиле;
  4. tagName и pseudo-tagName;

Все 4 правила сводяться в одну систему a-b-c-d(где а — наивысший приоритет) и образуют специфичность.

СелекторСпецифичность a-b-c-dПравило №
* 0-0-0-0-
li 0-0-0-14
li:first-line 0-0-0-24
ul li 0-0-0-24
ul ol+li 0-0-0-34
form + *[type=text] 0-0-1-13, 4
table tr td.second 0-0-1-33, 4
h2.block.title. 0-0-2-13, 4
#xyz 0-1-0-02
style=«» 1-0-0-01
css   шпаргалка

13 декабря 2009, 14:03

Утилит полезных пост 2

Сегодня речь пойдёт о утилитах для Мускула (MySQL).
Первая это php-утилита Sypex Dumper универсальный дампер БД (сделан нашими ребятами)
  • можно просто и быстро создать резервную копию (бэкап, дамп)
  • работает очень быстро с огромными БД
  • есть куча фич (свой cmd, cron)
Вторая — javascript-утилита WWW SQL Designer — для создания структуры БД, установки связи между таблицами и всё это в удобном GUI
  • очень простая и удобная
  • установка — просто залил на сервер
  • сохранение/загрузка результатов
  • експорт в SQL и XML
  • в демке всё круто видно %)
УПП   php   mysql   javascript   шпаргалка

11 декабря 2009, 13:13

Утилит полезных пост

Первая это php-утилита Admiter
  • php MySQL Admin одним файлом, всегда мечтал ;)
  • умеет всё что нужно, но не такой мощный как PhpMyAdmin
Вторая это javascript-утилита DD_roundies
  • она от автора супер PNG-fix для ИЕ6
  • css-selectors для выбора применяемых элементов
  • работает очень быстро и просто, одни бонусы :)
  • умеет за одно делать прозрачными png-рисунки
php   mysql   javascript   УПП   шпаргалка

26 ноября 2009, 23:59

Сколько баблишка?

Валюта в международном формате Возможные вариации Результат
RUR рублей, руб., RUR, RUB, rubles, р. рублей
UAH гривен, гр. UAH, грн., гривен
EUR евро, евр., просто значок € перед или после цены, EUR, Euro, Evro (обрабатываем опечатки) евро
USD значок $, USD, долларов, у.е., зелёных :), dollar*, долар (опечатки) долларов США
<?php
/*************************************************************
* Функция определения валюты из строк вида "1000 рублей", "10 USD" и т. п.
* На входе строка, на выходе код валюты (RUR, USD, UAH, EUR)
* или false, если не удалось определить. 
* Также false выйдет если определилось несколько валют в строке.
* Автор функции - BrokenBrake.biz
*************************************************************/
function currencer($str)
{
	$pattern['RUR'] = "/[^гГuU][рРRr][Уу\.uU]/u";
	$pattern['USD'] = "/\\\$|[UuдД][sSnNоО]|[уУ][\.\s]*[еЕ]|[зЗ][еЕ]|[бБ][аА][кК][сС]/u";
	$pattern['EUR'] = "/€|[eEЕе][UuВвvV]/u";
	$pattern['UAH'] = "/[гГUu][AaрР]/u";
	
	foreach ($pattern as $key => $val)
	{
		if (preg_match($val, $str)) $currency[] = $key;
	}
	if (isset($currency[1]) OR !isset($currency[0]))return false;
	else return $currency[0];
} // echo currencer('1000 зелёных')
?>


php   шпаргалка

23 ноября 2009, 15:59

Установка и настройка eAccelerator на linuxе :) (install and configure) Избранное

Давно ничего системненького не писал, но недавно пришлось несколько раз устанавливать акселератор, и каждый раз приходилось гуглить, вот решил шпору себе накатать ;)

Установка.
  • логинимся через пути на свой сервак (должен быть root)
  • сидя в хомяке (cd ~) создаём папку tmp (mkdir tmp) и переходим в неё (cd tmp)
  • дальше нужно скачать последний акселератор (wget httр://lastea.link/)
  • распаковываем его (tar xjvf eaccelerator-0 тут нажать tab)
  • выполняем phpize (если phpize: command not found, делаем apt-get install php5-dev, и опять phpize)
  • конфигурим (./configure)
  • компилим (make)
  • инсталим к php (sudo make install)
  • находим php.ini и дописываем вконец
    extension="eaccelerator.so"
    // размер кеша, обычно достаточно 32, если сайтов много то 64
    eaccelerator.shm_size="64"
    // путь к папке кеша, доступ к которой должен быть 777
    eaccelerator.cache_dir="/var/cache/eaccelerator"
    eaccelerator.enable="1"
    eaccelerator.optimizer="1"
    eaccelerator.check_mtime="1"
    eaccelerator.debug="0"
    eaccelerator.filter=""
    eaccelerator.shm_max="256"
    eaccelerator.shm_ttl="3600"
    eaccelerator.shm_prune_period="1800"
    eaccelerator.shm_only="0"
    eaccelerator.compress="1"
    eaccelerator.compress_level="9"
    // путь к папке, где будет лежать control.php что шёл с архивом еА
    eaccelerator.allowed_admin_path="/home/http/cache"
  • рестартуем апачик (sudo /etc/init.d/apache2 restart)
  • смотрим запустилось ли :), если нет, значит на php выделено мало памяти, выделяем (echo «134217728» > /proc/sys/kernel/shmmax)
Вот и всё! Удачной оптимизации ;)
linux   eAccelerator   шпаргалка

16 ноября 2009, 23:13

CSS: Основные баги ИЕ

1. Не работает центрирование с margin: 0 auto; используем text-align
2. Видишь лесенку блоков, двойной margin, в фоне списков проблемы display: inline;
3. Минимальная высота блока не минимальна font-size: 0; или overflow: hidden;
4. Overflow не работает position: relative;
5. Не кушает padding используй хак для высоты или ширины
6. Не работает min-height height:auto !important; height: yourminheight px;
bugs   Internet Explorer   шпаргалка

15 октября 2009, 10:17

CSS Селекторы и наследование

/* 
 * Дочерние селекторы
 * Выбирает все элементы, которые являются непосредственно дочерними для указанного родителя. 
 * В примере body является родителем, а p — дочерним. 
 * (Для IE7+ нужно также указывать верный Doctype для правильной работы.)
 */
body>p {color: #fff;}


/*
 * Связные классы
 * Связные классы используются, когда один элемент имеет несколько классов, например так:
 * <dіv class="class1 class2 class3">
 *    <р>Какой-то текст.</р>
 * </dіv>
 */
.class1.class2.class3 {background: #fff;}


/*
 * Селекторы с атрибутами
 * Это свойство позволяет элементу быть отмеченным только в том случае, если у него 
 * присутствует указанный аттрибут. Например, в примере отмечены 
 * будут все ссылки с аттрибутом href, тогда как для всех остальных данное свойство 
 * применено не будет.
 */
 a[href] {color: #0f0;}


/*
 * Смежные соседние селекторы
 * Этот селектор определяет свойства элементов, смежных и следующих сразу 
 * определенным селектором. Например, в коде ниже
 * <Н1>Заголовок</Н1>
 *    <р>Какой-нибудь текст.</р>
 *    <р>Какой-нибудь другой текст.</р>
 * свойства CSS будут применены только к первому абзацу.
 */
 h1+p {color: #f00;}


/*
 * Общие соседние селекторы
 * Определяет свойства для всех соседних элементов, следующих за определенным селектором. 
 * Например, если воспользоваться примером, то данное свойство распространится 
 * и на первый, и на второй абзацы. Заметим, что если бы абзац шел перед заголовком, 
 * то данное свойство на него не распространялось бы.
 */
 h1~p {color: #f00;}
PS: Бонус трек: заменяем onfocus=blur() с помощью css
a:active{
  outline:none;
}


selectors   шпаргалка

30 сентября 2009, 18:02

Добавляем в Google Analytics русскоязычные поисковики

try {
	var pageTracker = _gat._getTracker("Ваш ГА номер");
	pageTracker._setDomainName(".ваш.домен");
	
	pageTracker._addOrganic("mail.ru", "q");
	pageTracker._addOrganic("rambler.ru", "words");
	pageTracker._addOrganic("nigma.ru", "s");
	pageTracker._addOrganic("blogs.yandex.ru", "text");
	pageTracker._addOrganic("webalta.ru", "q");
	pageTracker._addOrganic("aport.ru", "r");
	pageTracker._addOrganic("akavita.by", "z");
	pageTracker._addOrganic("meta.ua", "q");
	pageTracker._addOrganic("bigmir.net", "q");
	pageTracker._addOrganic("tut.by", "query");
	pageTracker._addOrganic("all.by", "query");
	pageTracker._addOrganic("i.ua", "q");
	pageTracker._addOrganic("online.ua", "q");
	pageTracker._addOrganic("a.ua", "s");
	pageTracker._addOrganic("ukr.net", "search_query");
	pageTracker._addOrganic("search.com.ua", "q");
	pageTracker._addOrganic("search.ua", "query");
	pageTracker._addOrganic("poisk.ru", "text");
	pageTracker._addOrganic("km.ru", "sq");
	pageTracker._addOrganic("liveinternet.ru", "ask");
	pageTracker._addOrganic("gogo.ru", "q");
	pageTracker._addOrganic("gde.ru", "keywords");
	pageTracker._addOrganic("quintura.ru", "request");
	pageTracker._initData();
	pageTracker._trackPageview();
} catch(err) {}

Новый код ГА
var _gaq = _gaq || [];
_gaq.push(
		['_setAccount', 'UA-XXXXXX-X'],
		['_setDomainName', 'your.domain.name'],
		["_addOrganic", "mail.ru", "q"],
		["_addOrganic","rambler.ru", "words"],
		["_addOrganic","nigma.ru", "s"],
		["_addOrganic","blogs.yandex.ru", "text"],
		["_addOrganic","webalta.ru", "q"],
		["_addOrganic","aport.ru", "r"],
		["_addOrganic","akavita.by", "z"],
		["_addOrganic","meta.ua", "q"],
		["_addOrganic","bigmir.net", "q"],
		["_addOrganic","tut.by", "query"],
		["_addOrganic","all.by", "query"],
		["_addOrganic","i.ua", "q"],
		["_addOrganic","online.ua", "q"],
		["_addOrganic","a.ua", "s"],
		["_addOrganic","ukr.net", "search_query"],
		["_addOrganic","search.com.ua", "q"],
		["_addOrganic","search.ua", "query"],
		["_addOrganic","poisk.ru", "text"],
		["_addOrganic","km.ru", "sq"],
		["_addOrganic","liveinternet.ru", "ask"],
		["_addOrganic","gogo.ru", "q"],
		["_addOrganic","gde.ru", "keywords"],
		["_addOrganic","quintura.ru", "request"],
		['_trackPageview']
);


(function() {
  var ga = document.createElement('script');
  ga.src = ('https:' == document.location.protocol ?

'https://ssl' : 'http://www') + 
'.google-analytics.com/ga.js';
  ga.setAttribute('async', 'true');
  document.documentElement.firstChild.appendChild(ga);

})();
javascript   analytics   шпаргалка

8 сентября 2009, 2:12

PHP: get google.PR end yandex.QI (тИЦ)

Стало интересно, как всякие сервисы определяют ПР и тИЦ. Тогда как с Яндексом всё предельно ясно, то для Гугла нужны не кислые танцы с бубном.

Из просмотренных мною алгоритмов для гугла, я пришёл к выводу, что большинство выдраны с виндового гугл-тулбара, и работаю с периодическим успехом на разных системах и платформах. Попытки сделать этот алгоритм универсальным не увенчались успехом, но был найден другой, отличный от всех способ, который работает везде на 100%! Дальше по-порядку:

Яндекс:
  • урл должен быть полный с хттп
  • берем иксымель с яндексбара http://bar-navig.yandex.ru/
  • получаем тИЦ
Гугль:
  • урл не важно, но лучше с хттп (вероятность бана айпи меньше)
  • вычисляем Хеш урла (алгоритм XTEA)
  • вычисляем ЧекСум урла
  • отправлям всё через сокеты, притворясь браузером на один, из многих, айпи гугла
  • нам нужны только первые 30 байт
  • ищем строчку типа «Rank_1:1:Х», где Х наш ПР
  • получаем ПР


php   SEO   шпаргалка

4 сентября 2009, 15:10

PHP: Как открыть большой xml(файл) для работы с php

Считать fread может небольшой файл, и зная это ограничение, мы читаем файл по 8к, пока не кончится. Дальше перекодируем и конвертируем в массив, и сразу начинаем работать ;)
$handle = fopen("http://site.com/export.xml", "rb");
$contents = '';

while (!feof($handle)) $contents .= fread($handle, 8192);

fclose($handle);
$contents = xml2array(utf8_to_cp1251($contents));

// незабываем делать unset($contents, $handle)
php   шпаргалка

4 сентября 2009, 15:01

PHP: utf8 to cp1251

Используя коды наших символов в утф8 и цп1251, находим последовательность операций для их превращения, и в итоге мы получаем небольшую функцию
function utf8_to_cp1251($s){
    for ($c=0;$c<strlen($s);$c++){
       $i=ord($s[$c]);
       if ($i<=127) $out.=$s[$c];
           if ($byte2){
               $new_c2=($c1&3)*64+($i&63);
               $new_c1=($c1>>2)&5;
               $new_i=$new_c1*256+$new_c2;
           if ($new_i==1025){
               $out_i=168;
           } else {
               if ($new_i==1105){
                   $out_i=184;
               } else {
                   $out_i=$new_i-848;
               }
           }
           $out.=chr($out_i);
           $byte2=false;
           }
       if (($i>>5)==6) {
           $c1=$i;
           $byte2=true;
       }
    }
    return $out;
}
utf8   php   cp1251   шпаргалка

4 сентября 2009, 14:57

PHP: xml to array

Вкратце, по прегмачалл, с помощью регекспа, разбиваем тело на массив тегов, дальше этот массив превращаем в нужный нам, со всеми вложенностями.
function xml2array($xml) {
        $xmlary = array();
               
        $reels = '/<(\w+)\s*([^\/>]*)\s*(?:\/>|>(.*)<\/\s*\\1\s*>)/s';
        $reattrs = '/(\w+)=(?:"|\')([^"\']*)(:?"|\')/';

        preg_match_all($reels, $xml, $elements);

        foreach ($elements[1] as $ie => $xx) {

                $xmlary[$ie]["name"] = $elements[1][$ie];
               
                if ($attributes = trim($elements[2][$ie])) {
                        preg_match_all($reattrs, $attributes, $att);
                        foreach ($att[1] as $ia => $xx)

                                $xmlary[$ie]["attributes"][$att[1][$ia]] = $att[2][$ia];
                }

                $cdend = strpos($elements[3][$ie], "<");
                if ($cdend > 0) {

                        $xmlary[$ie]["text"] = substr($elements[3][$ie], 0, $cdend - 1);
                }

                if (preg_match($reels, $elements[3][$ie]))

                        $xmlary[$ie]["elements"] = xml2array($elements[3][$ie]);
                else if ($elements[3][$ie]) {

                        $xmlary[$ie]["text"] = $elements[3][$ie];
                }
        }

        return $xmlary;

}
php   шпаргалка

3 сентября 2009, 11:37

Advancing Textarea (Google chrome hints)

TextArea гибкий и расширяемый тэг. У него есть удобный параметр wrap, который определяет правило переноса строк. Имеет два значения hard (по-умлчанию) и soft off :)

Добавив ивент onclick=«select();» мы можем превратить его в удобный инструмиент для копипаста ;)

В конечном итоге получим простой сриптик
<!-- со скролом, для длииинных строк -->
<textarea onclick="select();" style="width: 600px; height: 36px;" wrap="off"></textarea>
<!-- без скрола -->
<textarea onclick="select();" style="width: 600px; height: 16px;"></textarea>
Хром умеет ресайзить любые textarea, это можно ограничить или упразнить
.limit_ta {
	/* ограничиваем textarea по высоте и ширине */
	max-width: 100px; 
	max-height: 100px;
}
.cancel_resize {
	resize: none; /* отключаем ресайз textarea */
}
.wrapoff {
	/* css analog wrap='off' */
	white-space: nowrap;
	overflow: auto;
}
html   шпаргалка

26 августа 2009, 10:10

regExp (стандартные, шпора)

// ЧПУ (SEF)
/^[a-z0-9-]+$/
"/[^/]+$/"

// NickName, PassWord ({6,18})
/^[a-z0-9_-]{3,16}$/

// HEX RGB 3 or 6 digits
/^#?([a-f0-9]{6}|[a-f0-9]{3})$/
/^#?(?:[0-9a-f]{3}){1,2}$/

// HTML tag
"/^<([a-z]+)([^>]+)*(?:>(.*)<\/\1>|\s+\/>)$/"
"/<(.+?)(?:\s+(.*?)>(.*?)</\1|\s*>(.*?)</\1|\s*/|\s*(.*?)/)>/s"

// E-mail
/^([a-z0-9_\.-]+)@([a-z0-9_\.-]+)\.([a-z\.]{2,6})$/ 

// ip-address
/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/ 


regexp   шпаргалка

5 июля 2009, 14:54

Javascript RegExp parsing url

var parts = /^(([^:/\\?#]+):)?(//(([^:/\\?#]*)(?::([^/\\?#]*))?))?([^\\?#]*)(\\?([^#]*))?(#(.*))?$/.exec(url)
Теперь более подробно
var pattern = 
    // Match #0. URL целиком (#0 - это HREF). 
    // Например, #0 == "https://example.com:8080/some/path/index.html?p=1&q=2&r=3#some-hash"
    "^" + 
    // Match #1 & #2. SCHEME (#1 - это PROTOCOL). 
    // Например, #1 == "https:", #2 == "https"
    "(([^:/\\?#]+):)?" + 
    // Match #3-#6. AUTHORITY (#4 = HOST, #5 = HOSTNAME и #6 = PORT)
    // Например, #3 == "//example.com:8080", #4 == "example.com:8080", #5 == "example.com", #6 == "8080"
    "(" + 
        "//(([^:/\\?#]*)(?::([^/\\?#]*))?)" +
    ")?" + 
    // Match #7. PATH (#7 = PATHNAME). 
    // Например, #7 == "/some/path/index.html"    
    "([^\\?#]*)" + 
    // Match #8 & #9. QUERY (#8 = SEARCH). 
    // Например, #8 == "?p=1&q=2&r=3", #9 == "p=1&q=2&r=3"    
    "(\\?([^#]*))?" + 
    // Match #10 & #11. FRAGMENT (#10 = HASH). 
    // Например, #10 == "#some-hash", #11 == "some-hash"
    "(#(.*))?" + "$";


javascript   regexp   шпаргалка
Ctrl +  Ранее