[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Антиобфускатор
twin
По долгу службы мне часто приходится иметь дело с чужими кодами, и зачастую это не приносит мне наслаждения.
Вчера при участии glock18 слепил форматтер кривых листингов, чтоб хоть как то приводить их в божеский вид. Я знаю, что вроде есть консольные программы, но свой роднее и интереснее.
У кого есть куча говнокода, помогите плиз потестить. Скрипт сырой и может вообще это плохая идея. Но что сделано, то сделано. smile.gif



Спустя 12 минут, 53 секунды (1.10.2009 - 14:13) Gabriel написал(а):
ууу я седня с работы прийду посмотрю чего ты там сделал *зловешая ухмылка на лице*

Спустя 7 минут, 46 секунд (1.10.2009 - 14:21) sergeiss написал(а):
И чего он должен сделать?
Я ввел первое, что на ум пришло:
PHP
if( $a ) {
$a 10; echo $b.'<br>'; }

А твой "антиговнокодер" так и выдал мне всё обратно... Именно в этом формате.

Или это считается правильно, красиво написанным кодом? blink.gif

Спустя 5 минут, 35 секунд (1.10.2009 - 14:26) twin написал(а):
А это html у тебя? <?php или <? хотя бы гидэ?

Спустя 3 минуты, 47 секунд (1.10.2009 - 14:30) Gabriel написал(а):
омг а хтмл прижимает к левому краю не оч гуд wink.gif

Спустя 1 минута, 22 секунды (1.10.2009 - 14:31) glock18 написал(а):
Да, исходный код в студию! Доработаем дружно это детище, потому что оно не должно пропасть smile.gif

в аттаче файл с моим кодом. не знаю, считать его говнокодом или нормально и красиво написанным, но то, как он был обработан smile.gif

В общем, Твин давай мне код, я тебе помогать буду wink.gif

Спустя 5 минут, 18 секунд (1.10.2009 - 14:37) SunSet написал(а):
Неплохая штука на самом деле. Правда, сделав отступы от края говнокод не превратится во чтото лучше)) Только для читабельности. smile.gif

Спустя 7 минут, 21 секунда (1.10.2009 - 14:44) Mozzi написал(а):
Потестил понравилось. Засунул это безумие:
PHP
<?php
  
if($a==$b) {
print(
'kalo' .'malo');
}else{(
$breker?print(2):print(1))}

Получил это:
PHP
<?php

  
  
if($a == $b
  {
    print(
'kalo' 'malo');
  }
  else
  {
    (
$breker?print(2):print(1))}


Где ошибка я думаю ясно.

Есть ещё пожелания, ну например if оформлять с пробелом, ну просто потому что это оператор, а не функция (хотя здесь конечно у всех свои предпочтения). Ну и опционально добавить экономию вертикального пространства (открывающую фигурную скобку помещать на той же строке что оператор/определение функции).

Спустя 17 секунд (1.10.2009 - 14:44) twin написал(а):
Цитата
омг а хтмл прижимает к левому краю не оч гуд

Исходник плиз, что там не гут.
PHP
Неплохая штука на самом делеПравдасделав отступы от края говнокод не превратится во чтото лучше)) Только для читабельности.

А для чего же еще... или ты думал он щас тебе все ошибки поисправляет? biggrin.gif
Это надо антипопин писать.

Спустя 5 минут, 34 секунды (1.10.2009 - 14:50) twin написал(а):
Цитата
Где ошибка я думаю ясно.

Ошибка в коде. Точки с запятой просто нету.
Цитата
Ну и опционально добавить экономию вертикального пространства (открывающую фигурную скобку помещать на той же строке что оператор/определение функции).

А чего экономить то? Не так дорого это стоит. smile.gif Я специально переделал все под такой стиль, что бы скобки на одном уровне были а не чёртигденевидно. Хотя впринципе как вариант можно попробовать. СПС.

Спустя 5 минут, 2 секунды (1.10.2009 - 14:55) glock18 написал(а):
Поделюсь своими соображениями.

Я бы если писал подобную утилиту, сначала удалял бы форматирование, а уже потом применял свое по строгим правилам. тогда, наиболее вероятно, что один и тот же файл с любым форматированием был бы преобразован в одно и то же.

Спустя 2 минуты, 1 секунда (1.10.2009 - 14:57) twin написал(а):
Цитата
в аттаче файл с моим кодом. не знаю, считать его говнокодом или нормально и красиво написанным, но то, как он был обработан

Долго возился с многострочными комментами, так и не поборол до конца.
Исходник чуть позже выложу, там у меня у самого говнокод biggrin.gif . На скорую руку писал. Причешу чуток.
Цитата
Я бы если писал подобную утилиту, сначала удалял бы форматирование,
Я вроде так и сделал.

Спустя 4 минуты, 3 секунды (1.10.2009 - 15:01) glock18 написал(а):
Цитата
Я вроде так и сделал.

можешь в асю кинуть исходник. я только в качестве помощника буду выступать wink.gif

Спустя 9 минут, 51 секунда (1.10.2009 - 15:11) SunSet написал(а):
twin
glock18
Вы если уж делаете скрипт с настройками для пользователя (2 или 4 проблела, например), то и дайте возможность чтото еще менять, цвет например, может, размер хтмл изменять, или тот же отступ делать или нет после if().
А то вроде автор сервиса интерисуется мнением других, но в то же время говорит что сделал это изначально только для себя. Вот с такого и Билл Гейтс начинал laugh.gif а потом денег просит за лицензию)))

Спустя 14 минут, 50 секунд (1.10.2009 - 15:26) twin написал(а):
Цитата
А то вроде автор сервиса интерисуется мнением других, но в то же время говорит что сделал это изначально только для себя

Я действительно для себя делал, потому и без настроек. То есть то, что мне нужно, уже настроено. Но если идея понравилась, мы с glock18 попробуем родить чтото путнее. Правда не так быстро, потому что не так уж это просто.

Спустя 22 минуты, 41 секунда (1.10.2009 - 15:48) Gabriel написал(а):
PHP
<?php
if ( mysql_num_rows$categiries ) > ) { ?>
    <table width="100%" cellpadding="5" cellspacing="5" border="1" bordercolor="#77C6CD">
    <form action="<?php $_SERVER['PHP_SELF'?>" method="post">
    <tr>
        <td></td>
        <td>Categoria</td>
        <td>Ver sub categorias</td>
    </tr>
    <?php
    
while ( $row mysql_fetch_assoc$categiries ) ) { $cat_id=$row['cat_id'];?>
        <tr>
        <td width="5%"><?php echo "<input name='destr[".$cat_id."]' value='".$cat_id."' type='checkbox'/>"?></td>
            <td><?php echo "<a href=index.php?mod=editcategorias&cat_id=".intval$cat_id ).">".$row['categoria']."</a>"?></td>
            <td align="center"><?php echo "<a href=index.php?mod=showcontentforcat&cat_id=".intval$cat_id ).">Ver</a>"?></td>
        </tr>
        

<?php
    
}
?>
        <tr>
            <td colspan="4"><center><input type="submit" name="suprimircategorias" value="Borrar categorias" /></center></td>
        </tr>
    </form>

все недам уж больно большoе:)
так вот все теги мне прижало к левому краю когда таблицы большие или вагон дивов както их потом не очнь удобно разгребать. можеш сделать так чтобы они оставались на своих местах но ето если не тяжело да и вообшем ето не такая уж и проблема.

Спустя 24 минуты, 11 секунд (1.10.2009 - 16:13) twin написал(а):
Ясно.... Ну чтоб с такой жуткой смесью говнокода с нативе справиться, сильно надо постараться))) я вообще то для PHP оптимизатор писал.

Спустя 6 минут, 37 секунд (1.10.2009 - 16:19) Gabriel написал(а):
twin
нуда:) ето больше каприз:)

Спустя 58 минут, 30 секунд (1.10.2009 - 17:18) sergeiss написал(а):
Цитата (twin @ 1.10.2009 - 15:26)
А это html у тебя? <?php или <? хотя бы гидэ?

Э, нет, батенька, подожди!
Там написано "Этот скрипт поможет сделать Ваш PHP код более читабельным и аккуратным."? Написано smile.gif
Там сказано, что надо обязательно тэгами оформлять? Не сказано smile.gif
Вывод? Я и не указал изначально. Написано ПХП код - я и ввожу ПХП код.

Хотя да, с этими тэгами лучше стало, только перед echo в моем примере так и остался пробел. Ну ладно, это можно простить, наверное wink.gif

За хорошую инициативу +10 rolleyes.gif

Спустя 16 минут, 21 секунда (1.10.2009 - 17:34) twin написал(а):
Цитата
Там сказано, что надо обязательно тэгами оформлять?

А PHP -интерпретатору ты тоже так говоришь? Мол, ты чё, чувак, это же иф и эхо, какой такой html? biggrin.gif Как он по твоему их из говнокодинга различать должен? Даже тут попробуй так написать, разве форум поймет?
PHP
<b>Это HTML</b>

А за пример спасибо, поправил косячек.

Спустя 23 минуты, 41 секунда (1.10.2009 - 17:58) Joker написал(а):
Класс!!!

Из такова:

Свернутый текст

<?php/**** @package attachment_mod* @version $Id: attach_rules.php,v 1.2 2005/11/05 12:23:33 acydburn Exp $* @copyright © 2002 Meik Sievertsen* @license http://opensource.org/licenses/gpl-license.php GNU Public License**/define('IN_PHPBB', true);define('BB_ROOT', 'http://94.180.60.65/forum/');require(BB_ROOT .'common.php');require(BB_ROOT .'attach_mod/attachment_mod.'. PHP_EXT);if (!$forum_id = @intval($_REQUEST['f']) OR !forum_exists($forum_id)){bb_die('invalid forum_id');}// Start Session Management$user->session_start();// Display the allowed Extension Groups and Upload Size$auth = auth(AUTH_ALL, $forum_id, $userdata);$_max_filesize = $attach_config['max_filesize'];if (!$auth['auth_attachments'] || !$auth['auth_view']){bb_die('You are not allowed to call this file');}$sql = 'SELECT group_id, group_name, max_filesize, forum_permissionsFROM ' . EXTENSION_GROUPS_TABLE . 'WHERE allow_group = 1ORDER BY group_name ASC';if (!($result = $db->sql_query($sql))){message_die(GENERAL_ERROR, 'Could not query Extension Groups.', '', __LINE__, __FILE__, $sql);}$allowed_filesize = array();$rows = $db->sql_fetchrowset($result);$num_rows = $db->sql_numrows($result);$db->sql_freeresult($result);// Ok, only process those Groups allowed within this forum$nothing = true;for ($i = 0; $i < $num_rows; $i++){$auth_cache = trim($rows[$i]['forum_permissions']);$permit = ((is_forum_authed($auth_cache, $forum_id)) || trim($rows[$i]['forum_permissions']) == '');if ($permit){$nothing = false;$group_name = $rows[$i]['group_name'];$f_size = intval(trim($rows[$i]['max_filesize']));$det_filesize = (!$f_size) ? $_max_filesize : $f_size;$size_lang = ($det_filesize >= 1048576) ? $lang['MB'] : (($det_filesize >= 1024) ? $lang['KB'] : $lang['Bytes']);if ($det_filesize >= 1048576){$det_filesize = round($det_filesize / 1048576 * 100) / 100;}else if($det_filesize >= 1024){$det_filesize = round($det_filesize / 1024 * 100) / 100;}$max_filesize = ($det_filesize == 0) ? $lang['Unlimited'] : $det_filesize . ' ' . $size_lang;$template->assign_block_vars('group_row', array('GROUP_RULE_HEADER' => sprintf($lang['Group_rule_header'], $group_name, $max_filesize)));$sql = 'SELECT extensionFROM ' . EXTENSIONS_TABLE . "WHERE group_id = " . (int) $rows[$i]['group_id'] . "ORDER BY extension ASC";if (!($result = $db->sql_query($sql))){message_die(GENERAL_ERROR, 'Could not query Extensions.', '', __LINE__, __FILE__, $sql);}$e_rows = $db->sql_fetchrowset($result);$e_num_rows = $db->sql_numrows($result);$db->sql_freeresult($result);for ($j = 0; $j < $e_num_rows; $j++){$template->assign_block_vars('group_row.extension_row', array('EXTENSION' => $e_rows[$j]['extension']));}}}$template->assign_vars(array('PAGE_TITLE' => $lang['Attach_rules_title'],'L_RULES_TITLE' => $lang['Attach_rules_title'],'L_EMPTY_GROUP_PERMS' => $lang['Note_user_empty_group_permissions']));if ($nothing){$template->assign_block_vars('switch_nothing', array());}print_page('attach_rules.tpl', 'simple');


Сделал такое:

Скрытый текст

PHP
<?php

    
    
/* *  *  * @package attachment_mod * @version $Id: attach_rules . php, v 1 . 2 2005 / 11 / 05 12:23:33 acydburn Exp $ *
@copyright © 2002 Meik Sievertsen * @license http:opensource . org / licenses / gpl - license . php GNU Public
License * */
    define('IN_PHPBB', true);
    define('BB_ROOT', 'http://94.180.60.65/
    forum/'
);
    require(BB_ROOT . 'common.php');
    require(BB_ROOT . 'attach_mod/attachment_mod.' . PHP_EXT);
    
    if 
(!$
    forum_id = @intval($_REQUEST['f']) OR !
    forum_exists($
    forum_id))
    {
        bb_die('invalid 
        forum_id'
);
    } 
    
    
// Start Session Management$user->session_start(); 
    
    
// Display the allowed Extension Groups and Upload Size$auth = auth(AUTH_ALL, $
    forum_id, $userdata);
    $_max_filesize = $attach_config['max_filesize'];
    
    if 
(!$auth['auth_attachments'] || !$auth['auth_view'])
    {
        bb_die('You are not allowed to call this file');
    }
    $sql = 'SELECT group_id, group_name, max_filesize, forum_permissionsFROM ' . EXTENSION_GROUPS_TABLE . 'WHERE allow_group
= 1ORDER BY group_name ASC'
;
    
    if 
(!($result = $db->sql_query($sql)))
    {
        message_die(GENERAL_ERROR, 'Could not query Extension Groups.', '', __LINE__, __FILE__, $sql);
    }
    $allowed_filesize = array();
    $rows = $db->sql_fetchrowset($result);
    $num_rows = $db->sql_numrows($result);
    $db->sql_freeresult($result); 
    
    
// Ok, only process those Groups allowed within this 
    forum$nothing = true;
    
    for 
($i = 0;  $i < $num_rows;  $i++)
    {
        $auth_cache = trim($rows[$i]['
        forum_permissions'
]);
        $permit = ((is_
        forum_authed
($auth_cache, $
        forum_id)) || trim($rows[$i]['
        forum_permissions'
]) == '');
        
        if 
($permit)
        {
            $nothing = false;
            $group_name = $rows[$i]['group_name'];
            $f_size = intval(trim($rows[$i]['max_filesize']));
            $det_filesize = (!$f_size) ? $_max_filesize : $f_size;
            $size_lang = ($det_filesize >= 1048576) ? $lang['MB'] : (($det_filesize >= 1024) ? $lang['KB'] : $lang['Bytes']);
            
            if 
($det_filesize >= 1048576)
            {
                $det_filesize = round($det_filesize / 1048576 * 100) / 100;
            }
            else
            if
($det_filesize >= 1024)
            {
                $det_filesize = round($det_filesize / 1024 * 100) / 100;
            }
            $max_filesize = ($det_filesize == 0) ? $lang['Unlimited'] : $det_filesize . ' ' . $size_lang;
            $template->assign_block_vars('group_row', array('GROUP_RULE_HEADER' = > sprintf($lang['Group_rule_header'], $group_name,
$max_filesize)));
            $sql = 'SELECT extensionFROM ' . EXTENSIONS_TABLE . \\"WHERE group_id = \\" . (int) $rows[$i]['group_id'] . \\"ORDER BY
extension ASC\\"
;
            
            if 
(!($result = $db->sql_query($sql)))
            {
                message_die(GENERAL_ERROR, 'Could not query Extensions.', '', __LINE__, __FILE__, $sql);
            }
            $e_rows = $db->sql_fetchrowset($result);
            $e_num_rows = $db->sql_numrows($result);
            $db->sql_freeresult($result);
            
            for 
($j = 0;  $j < $e_num_rows;  $j++)
            {
                $template->assign_block_vars('group_row.extension_row', array('EXTENSION' = > $e_rows[$j]['extension']));
            }
        }
    }
    $template->assign_vars(array('PAGE_TITLE' = > $lang['Attach_rules_title'], 'L_RULES_TITLE' = >
$lang['Attach_rules_title'], 'L_EMPTY_GROUP_PERMS' = > $lang['Note_user_empty_group_permissions']));
    
    if 
($nothing)
    {
        $template->assign_block_vars('
        switch_nothing'
, array());
    }
    print_page('attach_rules.tpl', 'simple');




Сполер не пашет(

Спустя 44 минуты, 21 секунда (1.10.2009 - 18:42) waldicom написал(а):
Спойлер поправил, пользуйся не SPOILER, а MORE (положенная на бок буква S)

Спустя 15 часов, 39 минут, 23 секунды (2.10.2009 - 10:22) stepan написал(а):
Отличная вещь почему раньше я о таком не додумался, это же значительно облегчает жизнь.

Спустя 2 дня, 11 часов, 18 минут, 51 секунда (4.10.2009 - 21:40) Arrogant.Elf написал(а):
Функция с названием enter_form(); разбилась на две строчки

enter_
form();

Так =)

Спустя 7 минут, 8 секунд (4.10.2009 - 21:48) twin написал(а):
Я там для кого написал это:
Цитата
Только учтите, скрипт не пишет код, он его форматирует. И ошибок не и исправляет.
И не сделает из полного бардака идеальную картинку, все равно потребуется "ручная шлифовка". По этому лучше сразу писать красиво, не надеясь на технические чудеса.

Но спасибо, за наводку. Хотя пот логике ясно вроде, что это служебные слова... Мы подумаем на досуге)))

Спустя 4 часа, 45 минут, 15 секунд (5.10.2009 - 02:33) kirik написал(а):
twin, glock18
Круто! Я тоже совсем недавно думал что было бы неплохо к форуму форматтер прикрутить, чтобы глаза не ломать) А вы уже сделали! Молодцы!
А код расшарите, мож подмогну чем..? )


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.