- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
Файл с настройками
$category_set = array (
'allow_num_news' => '1', //Показывать количество новостей
'allow_null_cat' => '0', //Показывать разделы в которых нет новостей
'el_1' => '<div class="mydiv">', //Основной блок. Стандартно - <ul> Свои - <div class="mydiv>"
'c_el_1' => '</div>', //Закрывающий тэг основной блок. Стандартно - </ul> Свои - </div>
'el_2' => '<h3>', //Элемент подменю. Стандартно - <li> Свои - <h3>
'c_el_2' => '</h3>', //Закрывающий тэг элемент подменю. Стандартно - </li> Свои - </h3>
'el_3' => '', //Дополнительно. Стандартно - '' Свои - ''
'c_el_3' => '', //Закрывающий тэг дополнительно. Стандартно - '' Свои - ''
'p_el_1' => '', //Элемент основного блока если есть подкатегории. Стандартно - '' Свои - ''
'p_c_el_1' => '', //Закрывающий тэг основного блока если есть подкатегории. Стандартно - '' Свои - ''
'p_el_2' => '', //Элемент подменю если есть подкатегории. Стандартно - <ul> Свои - ''
'p_c_el_2' => '', //Закрывающий тэг подменю если есть подкатегории. Стандартно - </ul> Свои - ''
'p_el_3' => '<p>', //Элемент дополнительно если есть подкатегории. Стандартно - <li> Свои - <p>
'p_c_el_3' => '</p>', //Закрывающий тэг дополнительно если есть подкатегории. Стандартно - </li> Свои - </p>
'el_add' => '<span style="font-size:10px;"> - ', //Тэг для количества новостей
'c_el_add' => '</span>', //Закрывающий тэг для количества новостей
);
include "Файл с настройками"
function categoryTree($cat_arr,$parent_id){
global $category_set, $DOMAIN,$link_set;
$elAdd = $category_set['el_add'];
$celAdd = $category_set['c_el_add'];
if(is_array($cat_arr) and isset($cat_arr[$parent_id])){
foreach($cat_arr[$parent_id] as $cat){
$el1 = $category_set['el_1'];
$cel1 = $category_set['c_el_1'];
$el2 = $category_set['el_2'];
$cel2 = $category_set['c_el_2'];
$el3 = $category_set['el_3'];
$cel3 = $category_set['c_el_3'];
if ($cat['id_parent'] >0){
$el1 = $category_set['p_el_1'];
$cel1 = $category_set['p_c_el_1'];
$el2 = $category_set['p_el_2'];
$cel2 = $category_set['p_c_el_2'];
$el3 = $category_set['p_el_3'];
$cel3 = $category_set['p_c_el_3'];
$sub = $link_set['sub_for_tree'];
}
$numNews = $cat['num_news'];
if($category_set['allow_num_news'] != 1){
$elAdd = '';
$celAdd = '';
$numNews = '';
}
if($cat['num_news'] != 0){
$catTree .= $el1;
$catTree .= $el2.$el3."<a href='".$DOMAIN."/".$sub."".$link_set['category_for_tree']."/".$cat['id_category']."/'>".$cat['name']."</a>".$elAdd."".$numNews.$celAdd.$cel3.$cel2;
$catTree .= categoryTree($cat_arr,$cat['id_category']);
$catTree .= $cel1;
}
else{
if($category_set['allow_null_cat'] == 1){
$catTree .= $el1;
$catTree .= $el2.$el3."<a href='".$DOMAIN."/".$sub."".$link_set['category_for_tree']."/".$cat['id_category']."/'>".$cat['name']."</a>".$elAdd."".$numNews.$celAdd.$cel3.$cel2;
$catTree .= categoryTree($cat_arr,$cat['id_category']);
$catTree .= $cel1;
}
}
}
}
else return null;
return $catTree;
}
Цель.
Полный, наиполнейший, высший контроль над деревом категорий с подкатегориями. Хорошо, что комментарии написал.
Кто бы, что не говорил, а это изумительно работает. Единственная недоработка, тэг <а> Тоже должен быь в массиве с настройками :-) я так думаю.
з.ы Переделывать лень.
scriptin 31.03.2013 00:23 # +4
nonamez 31.03.2013 01:30 # 0
scriptin 31.03.2013 02:52 # +1
nonamez 31.03.2013 03:10 # +1
scriptin 31.03.2013 16:40 # 0
bormand 31.03.2013 07:23 # +2
scriptin 31.03.2013 16:35 # 0
deep 31.03.2013 20:00 # 0
Я с этим борюсь так:
nmap <F3> :retab<cr>:1,$s/[ ]*$//<cr><C-o>
vmap <F3> <esc>:retab<cr>:1,$s/[ ]*$//<cr><C-o>i
imap <F3> <esc>:retab<cr>:1,$s/[ ]*$//<cr><C-o>i
wvxvw 31.03.2013 20:30 # 0
roman-kashitsyn 31.03.2013 20:45 # 0
wvxvw 31.03.2013 22:25 # 0
roman-kashitsyn 31.03.2013 22:59 # +2
wvxvw 31.03.2013 23:22 # 0
Даже не столько по времени, сколько - меньше думать нужно. Время уходит на то, чтобы подумать "а как же регулярку составить?", А так - просто повторил все те же команды, которые и так делаешь - и все.
deep 01.04.2013 09:36 # +1
Вы еще до сих пор откываете вкладки по :newtab ? Тогда мы идем к вам.
Такие нужные вещи должны быть в .vimrc описаны, как и обозначенные выше три строки.
Нажал F3 и все, это гораздо быстрее чем набирать C-x ( C-n C-e M-\ C-x )
roman-kashitsyn 01.04.2013 10:25 # +1
wvxvw 01.04.2013 12:00 # 0
roman-kashitsyn 01.04.2013 12:21 # +1
wvxvw 01.04.2013 13:04 # 0
bormand 01.04.2013 16:24 # +1
Но зачем на эту фишку 2 кнопки? Можно ведь одной кнопкой свернутый текст разворачивать, а не свернутый - сворачивать.
defecate-plusplus 01.04.2013 16:30 # +1
кстати посидел в qt creator свежайшем, я хз может надо какие плагины ставить, но этот урод не умеет из коробки всего того, что я выше написал
bormand 01.04.2013 16:37 # 0
defecate-plusplus 01.04.2013 17:11 # 0
а то у меня только на половине функций в .cpp файле эти стрелочки для сворачивания
bormand 01.04.2013 17:13 # 0
ctrl - <
Потыкался сейчас по проекту, функции, которые занимают несколько строк - сворачиваются. На однострочниках не пашет.
P.S. И за каким-то хреном оставляет список инициализации несвернутым... Хех, не врубается он в цплюсплюс, не врубается.
defecate-plusplus 01.04.2013 17:46 # 0
тупо посреди не самого большого .cpp файла у него ломается эта функциональность, причем даже нет ничего подозрительного в коде выше - ни препроцессорных #if-скобок, обычный такой же метод такого же класса
притом, что в верхнем списке (<Select symbol>) все методы, в т.ч. бажные, на месте
и эти люди мне будут доказывать, что qt creator в 2013 году переплюнул по удобству редактор VS пятилетней давности?..
wvxvw 01.04.2013 16:37 # 0
wvxvw 01.04.2013 16:35 # 0
Аналогично как на музыкальных системах есть кнопки "играть" и "не играть" :) Об этом еще писал Джеф Раскин - что когда есть возможность сэкономить одну кнопку на перемене состояния - лучше так не делать - человеку так удобнее.
Да, кроме того, в Эмаксе выделить блок кода - это одна команда M-C-F, так что получается бессмысленно совсем, мне что нажать M-C-F (которой я пользуюсь очень часто, и делаю это совершенно машинально), а потом F2, что просто F2 - ровно одно и то же.
eth0 01.04.2013 17:36 # 0
Я видел общество, в котором за одно упоминание сразу бы истекали иадом.
Не такой уж и гений, дабы на него ссылаться, право.
wvxvw 01.04.2013 18:15 # 0
vistefan 01.04.2013 18:32 # +2
Это редуцированный маразм, который волочётся ещё со времён магнитофонов, ибо там процесс запуска воспроизведения и его остановки радикально различаются и устроены механически (на многих магнитофонах остановка воспроизведения и открытие кассетника были одной кнопкой). Кстати говоря, некоторые развитые проигрыватели виниловых дисков умели в опускание и подъём головки на одной кнопке. Разделение подобных функций никогда не было и не будет удобным, это бред. Существует ровно ноль ситуаций, когда вам может потребоваться нажатие подобных парных кнопок _не_ поочерёдно. А значит - объединить их в одну (как на современных mp3-плеерах, у которых кнопка ►|| ) - есть очевидный и верный путь.
(Данные аргументы не имеют никакого отношения к теме треда про скрытие и показ блоков кода, естественно)
wvxvw 01.04.2013 18:36 # −1
vistefan 01.04.2013 18:57 # +3
Я свои аргументы выложил, парируйте контраргументами. Какая-нибудь лекция по HCI для меня не столь компетентный конкурент против здравого смысла.
wvxvw 01.04.2013 19:39 # −1
Ваши аргументы сводятся недословно к следующему: "я никогда не пробовал, да и вообще не задумывлася никогда об этом вопросе, но я авторитетно заявляю, что оппонент неправ!".
vistefan 01.04.2013 19:45 # +3
Что значит не пробовал? Я привёл примеры реальных устройств, которые делали не идиоты, по большей части. А вы так говорите, будто миллион мартышек не могут ошибаться. (Это я про тесты на добровольцах.)
И самое главное, чего я упорно не понимаю: что это за идиоты, и где вы их отыскиваете, которые запоминают соответствие между кнопкой и результатом до такой степени, что им каждый раз приходится проделывать мысленное усилие, что бы понять, что в их ушах уже играет песня, и нажатие на кнопку её остановит, а не начнёт воспроизводить?
Чёрт побери, я вообще не понимаю о чём вы со мной спорите, у одиночной кнопки масса преимуществ. Например, в неё можно попасть не глядя, не заботясь об ориентации плеера в кармане, чего не скажешь о паре кнопок.
eth0 01.04.2013 19:52 # +1
> на какой-нибудь лекции по HCI в универе
Не хочу огорчать, но большей частью современный дизайн и представление об UI - лженаука. При этом, динамически развивающаяся.
vistefan
> у одиночной кнопки масса преимуществ
Если кнопки две и они с фиксацией, можно различать положение на ощупь. :) Вот и всё.
vistefan 01.04.2013 19:55 # 0
Именно, вот и всё. Вот вы и доказали сами, что для воссоздания удобств, предоставляемых объединением двух кнопок в одну (что явно упрощает техпроцесс), придётся ещё и городить дополнительную механику для фиксации кнопок. Браво.
> лженаука
Которую вы и форсируете сейчас, в противовес, опять же, здравому смыслу, которым я стараюсь руководствоваться.
eth0 03.04.2013 17:59 # 0
Я попытался только рационализировать возможность наличия именно джвух кнопок.
P.S. Двухпозиционные переключатели существуют как данность, их изобретать заново не надо.
vistefan 03.04.2013 19:21 # 0
Но согласитесь, применение их в качестве play/pause - "это какой-то позор", как говаривал Швондер.
P.S. Я как-то упустил момент, когда в полемику вступили вы @eth0, так что, кажется, обругал вас не в тему, соболез извиняюсь.
eth0 04.04.2013 18:06 # 0
> в качестве play/pause
Ну, с освещением у них пока получается нормально.
wvxvw 01.04.2013 16:46 # 0
bormand 01.04.2013 17:01 # +1
3.14159265 01.04.2013 17:03 # +3
vistefan 01.04.2013 18:35 # 0
bormand 02.04.2013 05:31 # 0
Ну у меня vim, не vi. А у него с отменой все хорошо. А вот с ноутпадом в свое время намучился.
vistefan 02.04.2013 13:47 # 0
Стесняюсь спросить, что это вы делали с ноутпадом? Учитывая вашу репутацию мостака, я скорее поверю, что вы сделали себе свой редактор с блекджеком, чем, что мудохались с этим говном. Лично у меня под виндой текстовый редактор - это Notapad++, но гораздо чаще и редактор и вьюер встроенные в FARmanager (прокачанные плагином colorer для хайлайта, что очевидно).
defecate-plusplus 02.04.2013 14:27 # +4
wvxvw 01.04.2013 11:51 # 0
straga_coda 31.03.2013 08:27 # 0
bormand 31.03.2013 08:45 # +1
Ну а вообще - странная система. Почему бы не сделать шаблон на каком-нибудь шаблонизаторе? Или хотя бы поюзать <?php ?> в качестве шаблона? Здесь просто логики 2-3 строчки, остальное - ёбля с выводом. Да и править и поддерживать шаблон намного проще, чем подобные конфиги.
P.S. 52-55 и 59-62 бессмысленный и беспощадный копипаст... логическое "или" сейчас у пыхеров не в моде?
scriptin 31.03.2013 16:37 # 0
bot-minurast 31.03.2013 10:02 # −1
LispGovno 31.03.2013 11:24 # −2
scriptin 31.03.2013 16:38 # +1
Патология на лицо.
eth0 31.03.2013 16:40 # +1
LispGovno 31.03.2013 21:32 # 0
bormand 31.03.2013 16:52 # +3
vistefan 31.03.2013 20:56 # +3
govnomonad 01.04.2013 08:08 # +1
bot-minurast 31.03.2013 21:11 # +2
Ну что ж, уж какой есть.
LispGovno 31.03.2013 21:36 # −2
scriptin 01.04.2013 00:05 # 0
govnomonad 01.04.2013 05:03 # +3
для этого надо уметь в матан, что отметает 95% неугорающих по стандартам
defecate-plusplus 01.04.2013 06:54 # +1
все стандарты шифрования открыты
и атаки на каждый изучаются вполне себе третьими лицами
думаешь, если бы у нашего, например, гост 28147-89 был настолько явный изъян, потенциальный противник не преминул бы его обосрать? равно как и любой другой ныне считающийся надежным алгоритм
govnomonad 01.04.2013 07:34 # 0
у ZOG нету противников
LispGovno 01.04.2013 10:58 # −4
Конечно нет. Противник был бы только рад, что ему легче победить эту страну, только он о изъяне не знает, так что ему это как 3я нога.
Такие уязвимости вводятся математически на уровне создания алгоритма, а подругому их найти сложно.
bormand 01.04.2013 11:05 # 0
Если правительствам (а кто еще может владеть этими изъянами?) ты будешь представлять интерес, то они воспользуются терморектальным криптоанализом... И тогда тебе никакие алгоритмы не помогут ;) А от всех остальных эти методы достаточно стойки.
LispGovno 01.04.2013 11:11 # 0
Да пофиг на меня. Во время войны это представляет интерес. А в это время ТРКА не работает. В военное время даже ПИ равно трем.
bormand 01.04.2013 11:15 # +1
Во время войны пользуются заранее розданными одноразовыми блокнотами и кодовыми книгами.
Терабайтного винта с мусором и его копии у другой стороны вполне хватит чтобы годами шифровать даже видеосвязь ;)
LispGovno 01.04.2013 11:35 # −3
Где ты столько мусора то наберёшь, милок?
roman-kashitsyn 01.04.2013 11:42 # +2
3.14159265 01.04.2013 18:39 # +2
Неправда.
>так как содержут дырку для легкой расшифровки данных спецслужбами
И в этом треде ты снова умудрился обосраться.
Эксперт по криптографии, ёпта.
Реально это бывает так:
> автор программы с шифрованием не угорал по стандартам
Автор программы не читал книжек и решил писать свой велосипед.
> сам не допустил ошибок в алгоритме шифрования
И наговнячил на самом элементарном.
defecate-plusplus 01.04.2013 11:51 # 0
по твоему все вокруг только маразматики, которые слепо используют троянские бинарные библиотеки?
не может быть такого, что о бекдоре знает только один человек из спецслужбы, что знает двое - знает и свинья
криптография используется повсюду, любые денежные движения, любые корпоративные секреты перемещаются по сети только благодяря тому, что есть существенная надежда, что они достоверны
представь себе, что ты получил потайную информацию о том, как взломать гост-89/2001 на кофемолке - ты же так накроешь пиздой всю отечественную банковскую сферу
я взломав rsa/aes - всю мировую
не стоит думать, что это никому не нужно и кто нибудь не готов купить такой секрет за миллиард, чтобы заработать триллион
eth0 01.04.2013 17:40 # +1
bormand 01.04.2013 11:03 # +4
Вот как раз в самопальном алгоритме вполне можно допустить изъян. А в силу его закрытости этот изъян найдет именно злоумышленник, а не коллега-ученый...
P.S. 99% самодельных "алгоритмов" "шифрования" и "хеширования", которые я видел, представляли собой полное говно, которое ломалось дизасмом калькулятором и бумажкой за полчасика.
roman-kashitsyn 01.04.2013 11:05 # 0
LispGovno 01.04.2013 11:09 # −4
bormand 01.04.2013 11:16 # +3