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).
нет комментариев
24 февраля, 16:05
CSS3: анимация на примере вращения картинки вокруг своей оси :)
ЦСС3 крутая вещь, круче не придумать ;)
анимировать будем при наведении мыши на картинку
анимировать будем при наведении мыши на картинку
@keyframes rotate{ /* создаем анимацию и даем ей имя (rotate например) */ /* дальше задаем положение в начале и в конце */ from { /* для анимации используем трансформацию вращение есть ешё сдвиг translate(x,y) и увеличение scale(z) */ transform: rotate(0); /* можно анимировать размеры и прочие парамтры цсс */ } to { transform: rotate(360deg); } /* или вместо from|to пишем процент выполнения сцены, от 0% до 100%, любой нужный */ /* так как поддерживают анимацию передовики Гекко и ВебКит, запись выше не работает и каждому нужно написать свою */ } @-moz-keyframes rotate{from {-moz-transform: rotate(0);} to {-moz-transform: rotate(360deg);}} @-webkit-keyframes rotate{from {-webkit-transform: rotate(0);} to {-webkit-transform: rotate(360deg);}} img { padding-right: 13px; } img:hover { /* анимировать будем при наведении мыши на картинку */ border: 1px solid #C0C0C0; /* имя анимации, длительность, продолжительность циклов, "задержки" */ animation: rotate 0.5s infinite linear; -moz-animation: rotate 0.5s infinite linear; -webkit-animation: rotate 0.5s infinite linear; /* -webkit-animation-name — имя анимации -webkit-animation-duration — время проигрывания анимации -webkit-animation-timing-function — метод расчета промежуточных значений свойств для анимации -webkit-animation-delay — задержка анимации -webkit-animation-iteration-count — количество циклов анимации -webkit-animation-direction — направление анимации -webkit-animation-play-state — проигрывается ли анимация или стоит на паузе */}
19 февраля, 16:21
jQuery: Как получить значение css %параметра% блока в процентах
В чем проблема? Все, кроме вебкита, заданный параметр в процентах, например #wrp {left: 150%;}, возвращают в пикселях.
В примере параметром будет left, а для ИЕ как всегда костыль ;)
$(document).ready(function() { var lft = $('#wrp').css("left")+""; if (lft.match("px")) { lft = parseInt(lft) / $('#wrp').parent().width()*100; if ($.browser.msie) lft = lft>0 ? Math.ceil(lft) : Math.floor(lft); lft += "%"; } $('#out span').html(lft); });
В примере параметром будет left, а для ИЕ как всегда костыль ;)
25 января 2012, 15:52
ИЕ8 и тени со скругленными уголками вместе
Для тени очень хорошо работает свойство фильтр, но как только пытаешься применить к блоку с тенью какой нить хтц плагин для скругленных уголков или дд_раунди, это блок и разработчик тоже получают дикий баттхерт, потому что тень теперь у текста, блок стал выше на длину тени, но зато есть уголки. Пришлось на коленке писать приблуду, которая почему-то не хочет работать в ИЕ7, нужно наверное там джиквери с 1.4.2 обновить до 1.7.1
<!--[if lte IE 8]>
<script type="text/javascript" src="<?=SITE_TEMPLATE_PATH?>/roundie.js"></script>
<script type="text/javascript">
if (document.all) {
DD_roundies.addRule('.div-onmain .n-det, .div-onmain .news-list, #t-m ', '3px');
}
$(document).ready(function() {
$(".div-onmain .news-list, #t-m").each(function(){
var
w = $(this).innerWidth(),
h = $(this).innerHeight();
$(this).css({
"z-index":3,
"overflow": "visible",
"margin-top": -h*1+15 + "px"
});
$(this).parent().css({
"z-index":1
});
$(this).before(
$("<div class='shadow'>­</div>").css({
"z-index":2,
"margin-top": "-15px",
"overflow": "hidden",
"width": w,
"height": h,
"overflow": "visible"
})
);
});
$(".shadow").css({
"background": "#fff",
"filter": "progid:DXImageTransform.Microsoft.Shadow(color='#EEEEEE', Direction=0, Strength=15)"
});
});
</script>
<![endif]-->
5 января 2012, 23:42
JavaScript: определяем браузер по работе с масивами

<script type="text/javascript"> function browser() { if(-[1,]){ var f = 1; var d={4294967296:'opera', d:'firefox', 4294967295:'chrome', '1' :''}; for(var i in d) if(f) f=0; else return d[i]; } else return 'ie'; } document.write(browser()); </script>
Найдено на хабре
5 января 2012, 23:33
С новым годом
[][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})
[-~[]]+([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+
!![]]+([]+!![])[+![]]+([]+!![])[+!![]]+
([]+!![])[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+
!![])]+([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])
[+!![]]][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})
[-~[]]+([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+!![]]+
([]+!![])[+![]]+([]+!![])[+!![]]+([]+!![])
[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+!![])]+
([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])[+!![]]]
(([]+!![])[+!![]]+([]+{})[-~[]<<[-~[]+-~[]]]+
([]+!![])[-[]]+([]+[][{}])[-[]]+([]+!![])[+!![]]+
([]+[][{}])[-~[]]+([]+{})[~[]+(+!![]<<!![]+!![]+
!![])]+([]+![])[!![]+!![]+!![]]+([]+![])[!![]<<!![]+
!![]]+([]+![])[!![]+!![]]+([]+![])[-[]])()
[([{}-{}]+[])[-~[]]+([]+![])[!![]+!![]]+([]+![])
[!![]<<!![]+!![]]+([]+!![])[-~[]]+([]+!![])[+[]]](
[][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})
[-~[]]+([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+
!![]]+([]+!![])[+![]]+([]+!![])[+!![]]+
([]+!![])[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+!![])]+
([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])[+!![]]]
[([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})[-~[]]+
([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+!![]]+
([]+!![])[+![]]+([]+!![])[+!![]]+([]+!![])
[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+!![])]+
([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])[+!![]]]
(([]+!![])[+!![]]+([]+{})[-~[]<<[-~[]+-~[]]]+
([]+!![])[-[]]+([]+[][{}])[-[]]+([]+!![])
[+!![]]+([]+[][{}])[-~[]]+([]+{})[~[]+(+!![]<<!![]+
!![]+!![])]+([]+![])[!![]+!![]+!![]]+([]+![])
[!![]<<!![]+!![]]+([]+![])[!![]+!![]]+([]+![])
[-[]])()[([]+![])[-~[]]+([]+!![])[+![]]+([]+{})
[-~[]]+([]+{})[!![]+!![]]](([]+![])[-~[]]+
([][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})[-~[]]+
([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+!![]]+([]+!![])
[+![]]+([]+!![])[+!![]]+([]+!![])[-[~[]+~[]]]+
([]+{})[-~[]+(!![]<<!![]+!![])]+([]+!![])[+![]]+
([]+{})[-~[]]+ ([]+!![])[+!![]]]+[])[(-~[]+[+![]])-!![]])+
([]+![])[-~[]]+
(/!/[([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})[-~[]]+([]+[][{}])
[-~[]]+([]+!{})[!![]+!![]+!![]]+([]+!![])[+![]]+([]+!![])[+!![]]+([]+!![])
[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+!![])]+([]+!![])[+![]]+([]+{})
[-~[]]+([]+!![])[+!![]]]+[])[+!![]+[!![]<<!![]-~[]]]+
(/!/[([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})[-~[]]+([]+[][{}])
[-~[]]+([]+!{})[!![]+!![]+!![]]+([]+!![])[+![]]+([]+!![])[+!![]]+([]+!![])
[-[~[]+~[]]]+([]+{})[-~[]+(!![]<<!![]+!![])]+([]+!![])[+![]]+([]+{})
[-~[]]+([]+!![])[+!![]]]+[])[+!![]+[!![]<<!![]-~[]]]+
([]+[~[]/[]])[[[!![]+!![]]*[!![]+!![]]]*[!![]+!![]]]+
([]+{})[~[]+(+!![]<<!![]+!![]+!![])]+
([]+[][{}])[-~[]]+
([]+{})[-~[]<<[-~[]+-~[]]]+
([][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})
[-~[]]+([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+!![]]+([]+!![])
[+![]]+([]+!![])[+!![]]+([]+!![])[-[~[]+~[]]]+([]+{})[-~[]+
(!![]<<!![]+!![])]+([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])
[+!![]]][([]+{})[-~[]+(!![]<<!![]+!![])]+([]+{})[-~[]]+
([]+[][{}])[-~[]]+([]+!{})[!![]+!![]+!![]]+([]+!![])[+![]]+
([]+!![])[+!![]]+([]+!![])[-[~[]+~[]]]+([]+{})[-~[]+
(!![]<<!![]+!![])]+([]+!![])[+![]]+([]+{})[-~[]]+([]+!![])
[+!![]]](([]+!![])[+!![]]+([]+{})[-~[]<<[-~[]+-~[]]]+
([]+!![])[-[]]+([]+[][{}])[-[]]+([]+!![])[+!![]]+([]+[][{}])
[-~[]]+([]+{})[~[]+(+!![]<<!![]+!![]+!![])]+([]+![])
[!![]+!![]+!![]]+([]+![])[!![]<<!![]+!![]]+([]+![])
[!![]+!![]]+([]+![])[-[]])()+[])[([]+![])[!![]+!![]+
!![]]+([]+![])[!![]+!![]]+([]+[][{}])[!![]+(!![]<<!![]+!![])]+
([]+{})[!![]+(!![]<<!![]+!![])]+([]+!![])[!![]+!![]+!![]]](~[]+~[])[-[]]+
([]+{})[~[]+(+!![]<<!![]+!![]+!![])]+
(~[]/[]+[])[-~[]<<-(~[]+~[]+~[])]+
([~[]<[]]+[])[-[~[]+~[]+~[]]]+
([{}-{}]+[])[-~[]]+
([]+!![])[+!![]]+
(/!/+[])[-~[]])Это Женя Степанищев написал здесь такое вот поздравление. Как-то раз я уже описывал, как работает данный «обфускатор», почему-то не могу найти, повторюсь :)
Пока я искал, все появилось в комментариях :)
Теперь немного о том как это сделано.Здесь он продолжил:
Проще всего получить буквы I, N, O, a, b, c, d, e, f, i, j, l, n, o, r, s, t, u, y. Они встречаются в различных словах самого языка. Например, нам нужна буква «f». Нет ничего проще, берём значение «false», вырезаем первую букву: «false»[0].
Перевести что угодно в строку можно прибавляя слева пустой массив, напимер «[]+![]» будет «false». Получить нулевой символ тоже легко, нужно перевести массив в число. Получается: «([]+![])[+[]]». Можно получать менее очевидные вещи: «[]+{}» будет «[object Object]», «{}-{}» — NaN, а «~[]/[]» — «-Infinity».
С некоторыми другими буквами пришлось повозиться. Например, над «w» я долго ломал голову, наконец решил попробовать получить глобальный «window», преобразовать в строку и взять букву из него.А тут закончил:
Очевидный способ через пустой call какого-нибудь метода отказался работать в Файрфоксе (строгий режим они что ли включили?), поэтому я добрался до него в два приёма.
Во-первых, сначала мне нужен был конструктор какого-нибудь метода, чтобы вызвать конструктор Function. Это я решил так: [].sort.constructor (sort — хорошее имя метода, все буквы просто достаются), точнее, вот так [][’sort’][’constructor’], буквы подставляются методом, описанным чуть выше.
Во-вторых, вызовом конструктора я создал функцию, которая вернула self: [].sort.constructor(’return self’)()
Дальше — дело техники. Я отрезал последние две буквы (в зависимости от браузера я могу получить объект «window» или «DOMWindow», первая буква не годится) и взял первую: [][’sort’][’constructor’](’return self’)()[’slice’](-2)[0]
Кстати, «alert» вызывается аналогичным образом — надо добраться до window и вызвать у него «alert»: window[’alert’](’параметры’). Собственно, то же с любой другой глобальной функцией. Я, например, использую ещё atob, чтобы получить букву «h» в слове «happy». Вызов window[’atob’](’aA’) даст искомую букву.И добавил
Букву «a» для параметра «atob» получить просто, можно, например, отрезать её от «false», а большой «A» сложнее. Я поступил следующим образом: преобразовал конструктор массива к строке: «[]+[].constructor». Получается следующее:
function Array() {
[native code]
}
Искомая буква там — под номером девять (если считать с нуля), я девятку получил вот так: +([-~[]]+-![])+~[] (в строковом представлении сложил один и ноль, преобразовал число, прибавил минус один).
В итоге, буква «h» получается как-то так: [].sort.constructor(’return self’)()[’atob’](«false»[1] + ([]+[].constructor)[9])
О! Надо ещё про букву «p» рассказать. Я получил её из объекта «RegExp», знакомым уже способом: «([]+/!/.constructor)[14]».FIN
23 декабря 2011, 13:28
импорт джаваскриптов и стилей через джиквери (import javascripts and styles via jQuery)
По следам моих старых-старых статей
$('head').append($("<script></"+"script>").attr({ 'type':'text/javascript' 'src':"path_to_file.js", })); $('head').append($("<link/>").attr({ "rel": "stylesheet", "type": "text/css", "href": "path_to_file.css", }));
23 декабря 2011, 12:41
Как в jQuery получить html код самого элемента
$(".selected_element").wrap("<div>").parent().html()
Все делает функция wrap, которая обволакивает выбранный элемент выбранным тэгом, в зависимости от контекста, он можеть быть любым :)
10 декабря 2011, 20:16
Скролл сверху и снизу блока
Wow, who is back. Да — это я с новым ДОУ (deer.org.ua, lol)
Разминка для мозгов :)
Код честно взят со стакексчендж (стаковерфлоу раньше). Я просто сделал с него джиквери решение
Примера не будет, мне лень.
Разминка для мозгов :)
<style type="text/css"> #doublescroll { overflow: auto; overflow-y: hidden; } #doublescroll p { margin: 0; padding: 1em; white-space: nowrap; } </style> <div id="doublescroll"> <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. </p> </div> <script type="text/javascript"> function DoubleScroll(element) { var scrollbar= document.createElement('div'); scrollbar.appendChild(document.createElement('div')); scrollbar.style.overflow= 'auto'; scrollbar.style.overflowY= 'hidden'; scrollbar.firstChild.style.width= element.scrollWidth+'px'; scrollbar.firstChild.style.paddingTop= '1px'; scrollbar.firstChild.appendChild(document.createTextNode('\xA0')); scrollbar.onscroll= function() { element.scrollLeft= scrollbar.scrollLeft; }; element.onscroll= function() { scrollbar.scrollLeft= element.scrollLeft; }; element.parentNode.insertBefore(scrollbar, element); } DoubleScroll(document.getElementById('doublescroll')); </script>
Код честно взят со стакексчендж (стаковерфлоу раньше). Я просто сделал с него джиквери решение
$("#doublescroll") .before($("<div></div>") .append($("<div></div>") .css({ "padding-top":"1px", "width": $("#doublescroll")[0].scrollWidth+"px" }) .text('\xA0') ) .css({ "overflow":"auto", "overflowY":"hidden" }). bind("scroll",function(){ $("#doublescroll")[0].scrollLeft = $(this)[0].scrollLeft; }) ) .bind("scroll",function(){ $(this).prev()[0].scrollLeft = $(this)[0].scrollLeft; })
Примера не будет, мне лень.
27 августа 2011, 14:06
Проверка типа данных
var toType = function (obj) { return ({}).toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); }Наткнулся на ноут-киппер, решил себе схоронить :)
14 августа 2011, 16:48
Recover MySQL root Password
Вы на новом серваке, у вас рут, но пароля нет, или вы его забыли, попасть в БД нельзя. Просто нужно выполнить вот такую последовательность ;)
- /etc/init.d/mysql stop
- mysqld_safe —skip-grant-tables
- mysql -u root
- Теперь вы в мускуле выполняете следующие команды
mysql> use mysql;
mysql> update user set password=PASSWORD(«NEW-ROOT-PASSWORD») where User=’root’;
mysql> flush privileges;
mysql> quit
- /etc/init.d/mysql stop
- /etc/init.d/mysql start
14 июля 2011, 17:36
Затарить и разтарить
tar czf new-tar-file-name.tar.gz file-or-folder-to-archiveHere is the command explanation:
*.tar — the tar command.
*.c — create new archive.
*.z — compress the archive using gzip.
*.f — use archive file.
tar -xzf tar-file-name.tar.gzHere is the command explanation:
*.tar — the tar command.
*.x — extract the archive.
*.z — uncompress the archive using gzip.
*.f — use archive file.
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
31 мая 2011, 19:07
PHP: array_key_exists for multidimensional arrays
function array_key_exists_r($needle, $haystack) { $result = array_key_exists($needle, $haystack); if ($result) return $result; foreach ($haystack as $v) { if (is_array($v)) { $result = array_key_exists_r($needle, $v); } if ($result) return $result; } return $result; }
27 мая 2011, 18:38
PHP: MySQL get FOREIGN KEY
$result = mysql_query("SHOW CREATE TABLE $table_name"); while ($rowI = mysql_fetch_assoc($result, MYSQL_NUM)) { if(preg_match_all( '/FOREIGN KEY \(`(.*)`\) REFERENCES `(.*)` \(`(.*)`\)/', $rowI[1], $matchArr)) { printr($matchArr); } }
6 мая 2011, 13:35
MySQL: error #1235
Когда пытаешься выполнить например такой запрос:
Получаешь чудо ошибку. Ошибка эта гласит:
Когда идём в мануал, там сразу же лежит решение. Нам просто нужно использовать АЛИАС, что бы бля сделать тоже самое:
UPDATE `learn_answer` SET `QUESTION_ID` = QUESTION_ID - 1 WHERE `learn_answer`.`ID` IN ( SELECT ID FROM `learn_answer` WHERE `QUESTION_ID` > 367 )
Получаешь чудо ошибку. Ошибка эта гласит:
#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Когда идём в мануал, там сразу же лежит решение. Нам просто нужно использовать АЛИАС, что бы бля сделать тоже самое:
UPDATE `learn_answer` SET `QUESTION_ID` = QUESTION_ID - 1 WHERE `learn_answer`.`ID` IN ( SELECT * FROM ( SELECT ID FROM `learn_answer` WHERE `QUESTION_ID` > 367 ) Alias )
29 апреля 2011, 14:58
PHP: detect UTF8 :D
function detectUTF8($string) { return preg_match('%(?: [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte |\xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs |[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte |\xED[\x80-\x9F][\x80-\xBF] # excluding surrogates |\xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3 |[\xF1-\xF3][\x80-\xBF]{3} # planes 4-15 |\xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16 )+%xs', $string); }
14 апреля 2011, 8:33
Новый PHP новые правила :) Лечим быстро растущий еррор_лог
На одном проекте, написанном н-лет назад обновили апачь+пхп+мускул+нгинксс, и скорость толстения логов просто поражала. Например за сутки лог апача из-за ошибок пхп выростал до 2ух гиг :)
За 1 заход простого юзера плюс 1-20МБ, это конечно замечательно, но нужно было как-то «пофиксить». Самым толстым ворнингом был такой:
Пхп, просто хотел знать дефаулт тайм-зоун, и ругался на все функции которые работают с датой :) В начале «главного» скрипта пишем:
Следующий ворнинг:
Это значит что, эти функции ereg()/eregi()/ereg_replace() нихт_арбайтен, то есть не работают, вообще. Да, в новом пхп их убили, почитать что убили можно здесь
«-Что же делать?», воскликнет читатель. Есть два пути.
За 1 заход простого юзера плюс 1-20МБ, это конечно замечательно, но нужно было как-то «пофиксить». Самым толстым ворнингом был такой:
Warning: strtotime()/strftime()/date() [function.strftime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier.
Пхп, просто хотел знать дефаулт тайм-зоун, и ругался на все функции которые работают с датой :) В начале «главного» скрипта пишем:
date_default_timezone_set('UTC');
Следующий ворнинг:
PHP Deprecated: Function ereg()/eregi()/ereg_replace() is deprecated in *
Это значит что, эти функции ereg()/eregi()/ereg_replace() нихт_арбайтен, то есть не работают, вообще. Да, в новом пхп их убили, почитать что убили можно здесь
«-Что же делать?», воскликнет читатель. Есть два пути.
- заменить все дохлые функции живыми аналогами
// Все меняем на preg_match ereg("\.([^\.]*$)", $this->file_src_name, $extension); preg_match("/\.([^\.]*$)/", $this->file_src_name, $extension); // да, на preg_match $this->file_dst_name_body = ereg_replace("[^A-Za-z0-9_]", "", $this->file_dst_name_body); $this->file_dst_name_body = preg_replace("/[^A-Za-z0-9_]/", "", $this->file_dst_name_body); // тут появится модификатор regexpа eregi("\.([^\.]*$)", $this->file_src_name, $extension); preg_match("/\.([^\.]*$)/i", $this->file_src_name, $extension);
- в настройках включить поддержку старых функций, которая отрубает поддержку новых
mbstring.func_overload = 7
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 | Все нечетные элементы. |

