33 заметки с тегом
шпаргалка РСС
16 мая, 17:40
Типы СУБД
- реляционные: MySQL, Oracle, Microsoft SQL Server, PostgreSQL;
- различные варианты хеш-таблиц key-value (Redis, BigTable, memcached);
- документо-ориентированные базы данных (MongoDB, CouchDB);
- базы данных, основанные на графах (Neo4j, Sones GraphDB);
- объектно-ориентированные базы данных (db4o, Cache, Jade);
- XML-ориентированные базы данных (eXist, BaseX).
нет комментариев
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
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 | Все нечетные элементы. |
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)
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 ;)
17 декабря 2009, 21:55
Приоритет селекторов
- styleDeclaration в тэге;
- #idName с правиле;
- .className и pseudo-className в правиле;
- tagName и pseudo-tagName;
Все 4 правила сводяться в одну систему a-b-c-d(где а — наивысший приоритет) и образуют специфичность.
| Селектор | Специфичность a-b-c-d | Правило № |
|---|---|---|
| * | 0-0-0-0 | - |
| li | 0-0-0-1 | 4 |
| li:first-line | 0-0-0-2 | 4 |
| ul li | 0-0-0-2 | 4 |
| ul ol+li | 0-0-0-3 | 4 |
| form + *[type=text] | 0-0-1-1 | 3, 4 |
| table tr td.second | 0-0-1-3 | 3, 4 |
| h2.block.title. | 0-0-2-1 | 3, 4 |
| #xyz | 0-1-0-0 | 2 |
| style=«» | 1-0-0-0 | 1 |
13 декабря 2009, 14:03
Утилит полезных пост 2
Сегодня речь пойдёт о утилитах для Мускула (MySQL).
Первая это php-утилита Sypex Dumper — универсальный дампер БД (сделан нашими ребятами)
Первая это php-утилита Sypex Dumper — универсальный дампер БД (сделан нашими ребятами)
- можно просто и быстро создать резервную копию (бэкап, дамп)
- работает очень быстро с огромными БД
- есть куча фич (свой cmd, cron)
- очень простая и удобная
- установка — просто залил на сервер
- сохранение/загрузка результатов
- експорт в SQL и XML
- в демке всё круто видно %)
11 декабря 2009, 13:13
Утилит полезных пост
Первая это php-утилита Admiter
- php MySQL Admin одним файлом, всегда мечтал ;)
- умеет всё что нужно, но не такой мощный как PhpMyAdmin
- она от автора супер PNG-fix для ИЕ6
- css-selectors для выбора применяемых элементов
- работает очень быстро и просто, одни бонусы :)
- умеет за одно делать прозрачными png-рисунки
26 ноября 2009, 23:59
Сколько баблишка?
| Валюта в международном формате | Возможные вариации | Результат |
|---|---|---|
| RUR | рублей, руб., RUR, RUB, rubles, р. | рублей |
| UAH | гривен, гр. UAH, грн., | гривен |
| EUR | евро, евр., просто значок € перед или после цены, EUR, Euro, Evro (обрабатываем опечатки) | евро |
| USD | значок $, USD, долларов, у.е., зелёных :), dollar*, долар (опечатки) | долларов США |
/************************************************************* * Функция определения валюты из строк вида "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 зелёных')
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)
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;
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;
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; }
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); })();
8 сентября 2009, 2:12
PHP: get google.PR end yandex.QI (тИЦ)
Стало интересно, как всякие сервисы определяют ПР и тИЦ. Тогда как с Яндексом всё предельно ясно, то для Гугла нужны не кислые танцы с бубном.
Из просмотренных мною алгоритмов для гугла, я пришёл к выводу, что большинство выдраны с виндового гугл-тулбара, и работаю с периодическим успехом на разных системах и платформах. Попытки сделать этот алгоритм универсальным не увенчались успехом, но был найден другой, отличный от всех способ, который работает везде на 100%! Дальше по-порядку:
Яндекс:
Из просмотренных мною алгоритмов для гугла, я пришёл к выводу, что большинство выдраны с виндового гугл-тулбара, и работаю с периодическим успехом на разных системах и платформах. Попытки сделать этот алгоритм универсальным не увенчались успехом, но был найден другой, отличный от всех способ, который работает везде на 100%! Дальше по-порядку:
Яндекс:
- урл должен быть полный с хттп
- берем иксымель с яндексбара http://bar-navig.yandex.ru/
- получаем тИЦ
- урл не важно, но лучше с хттп (вероятность бана айпи меньше)
- вычисляем Хеш урла (алгоритм XTEA)
- вычисляем ЧекСум урла
- отправлям всё через сокеты, притворясь браузером на один, из многих, айпи гугла
- нам нужны только первые 30 байт
- ищем строчку типа «Rank_1:1:Х», где Х наш ПР
- получаем ПР
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)
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; }
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; }
3 сентября 2009, 11:37
Advancing Textarea (Google chrome hints)
TextArea гибкий и расширяемый тэг. У него есть удобный параметр wrap, который определяет правило переноса строк. Имеет два значения hard (по-умлчанию) и soft off :)
Добавив ивент onclick=«select();» мы можем превратить его в удобный инструмиент для копипаста ;)
В конечном итоге получим простой сриптик
Добавив ивент 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; }
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?)$/
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" "(#(.*))?" + "$";
