[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос в комментариях к курсу - продолжение
Ivan1986
Тут 04-05-2011 / Ivan1986
начальный вброс "говна в вентилятор" smile.gif

Вкратце - хотелось бы получить более развернутый ответ почему чушь?

Я всего-лишь предложил не останавливаться на методах, провоцирующих генерацию китайского кода и рассказать немного про то как работают роутеры в практически всех MVC фреймворках.
Я просто повидал такой код - как раз похожий на ваш - он если проект становиться чуть больше чем несколько страничек быстро превращается в китайский.

По поводу библиотеки - так-же - почему-то каждый маленький проект считает своим долгом сделать свою поделку для работы с базой данных, причем подавляющее большинство из них не выдерживают никакой критики.
В современных библиотеках - в частности PDO в php5 используются плейсхолдеры для подстановки значений с автоматической экранировкой в соответствии с правилами базы.
Еще хотелось бы посмотреть какой библиотекой пользуетесь обычно вы - может тоже в описанном конкурсе поучаствуете?




Спустя 39 минут, 9 секунд (4.05.2011 - 16:03) twin написал(а):
Цитата
Вкратце - хотелось бы получить более развернутый ответ почему чушь?
Ну это реакция на
Цитата
за нее вас нужно пристрелить.

Цитата
теперь скажите что так делать не надо

и
Цитата
все нормальные люди


Тоесть тон беседы был задан.

А теперь подробнее.
1. По локализации я наполовину согласен, хотя не вижу ничего плохого в константах. Другой вопрос, что весь текст сайта пихать в один файл неслед, но тут и делить то нечего. Городить огород из-за нескольких слов... Я принцип показал, достаточно.

2.
Цитата
Я всего-лишь предложил не останавливаться на методах, провоцирующих генерацию китайского кода и рассказать немного про то как работают роутеры в практически всех MVC фреймворках.

Вот тут описан этот принцип.
    if($GET['rem'] && file_exists('./modules/'. $modul .'/'. $GET['rem'] .'_controller.php')) 
include './modules/'. $modul .'/'. $GET['rem'] .'_controller.php';


Тоже по простому, однако принцип сохранен.

Так вот, что касается роутера в модуле, там это оправдано. А вот в главном индексе - нет. Потому что это не "практически всякий MVC фреймворк", а несколько иная схема.
Кстати, изначально так и было, потом пришлось вернуться обратно к старому доброму switch.

Дело в том, что по этой схеме входной файл может подключать разные модули в различных комбинациях. А за одно в можно попутно производить кой-какие небольшие преобразования.
Так что гораздо "китайскее" получается без него. Вот к примеру:
    switch ($GET['page'])
{

case 'main':
include IRB_ROOT .'/modules/news_controller.php';
include IRB_ROOT .'/modules/main/router.php';
break;

case 'partner':
$ajax = IRB_HOST .'modules/partner/valid.php';
include IRB_ROOT .'/modules/partner/router.php';
break;

case 'pages':
$GET['page'] = $GET['id'];
include IRB_ROOT .'/modules/news_controller.php';
include IRB_ROOT .'/modules/_controller.php';
include IRB_ROOT .'/modules/pages/router.php';
break;

default:
include IRB_ROOT .'/modules/register/router.php';
break;
}


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

3. Плэйсхолдеры - отдельная тема. Не вижу никакого смысла корежить язык SQL всякими суррогатными и непонятными правилами. К тому же преобразование из этого птичьего языка в нормальный SQL требует ресурса.

Тут много холиваров по поводу ООП, так вот эта тема сродни. Не признаю я этих извращений и никогда не признаю. Я не вижу в них выгоды. Минусов - сколько угодно. И
1. я не одинок в этом мнении
2. я не считаю себя и тех, кто считает так же "ненормальными"

Так что заявление,
Цитата
что для составления запросов все нормальные люди уже давно используют плейсхолдеры

мало того, что крайне неэтичное, так еще и сквозит поверхностным знанием вопроса.

Тут же как. Узнал, что есть php - круто. Узнал, что бывают БД - вообще супер.
Увидел плэйсхолдер - верх познаний. И кажется, что это движение вперед и вверх. На самом деле, без тщательного анализа, это просто уход в сторону.


Спустя 3 минуты, 7 секунд (4.05.2011 - 16:06) inpost написал(а):
Ivan1986
Если ты пришел сюда поливать грязью других людей, то дверь там ->
Если же ты хочешь поделиться опытом, помочь в обучении мне, и таким же как я другим членам форума, то с удовольствием выслушаю качественную критику с указанием на ошибки, я думаю так же само поступит и другой человек.
Напиши курс, ознакомь людей с полезным материалом, от этого будут все в выграше, а критиковать со стороны - может каждый, не находишь?
Вообщем, я пока не понял, что именно ты хочешь добиться, если ты действительно приследуешь благородные цели поделиться знаниями с окружающими, то позволь мне быть первым, я вижу грамотные вещи в твоих словах, но если ты хочешь потролить, то как я уже сказал, на нашем форуме запрещен троллинг в любом его проявлении, и я за этим качественно слежу.

Всё, надеюсь на понимание.

Спустя 44 минуты, 57 секунд (4.05.2011 - 16:51) Ivan1986 написал(а):
Прошу прощения за тон, был не прав. Троллить не хочу.

1) по локализации да, но я предлагаю хотя-бы рассказать про более правильный подход в котором мы не плодим лишних переменных и так как на сайте всегда есть основной язык (хотя-бы тот на котором разрабатывают) то все-таки решение типа gettext легче поддерживать и изменять.
Обычно наблюдаются проблемы с добавлением и поиском со страницы - а где же этот шаблон который у нас это выводит. Просто я честно признаюсь, что ни знаю подхода удобнее чем был сделан в qt в плане локализации.

2) Простите, был не прав, у вас есть рассказ про нормальный роутер, но вот в связи с этим
"Дело в том, что по этой схеме входной файл может подключать разные модули в различных комбинациях."
К сожалению это одна из основных проблем из-за которых мой одногрупник около 4 лет назад стал писать свой микрофреймворк, а потом я стал его развивать.
Сейчас эта небольшая работа, а потом мой диплом вылился вот в это QuickFW. До того как Kohana3 раструбила про свою HMVC основная функциональность у нас была давно в виде блоков, которые где-то назывались виджетами и сейчас это уже есть много где.
Это порождает опять-же копирование функционала контроллера виджета в классический MVC архитектуре.
Хотя тут я уже не спорю, для небольших сайтов возможно пойдет и это.

3) По поводу плейсхолдеров - скажите честно, неужели

login = \''.mysql_real_escape_string($login).'\'

выглядит хорошо?

Как правило из-за плейсхолдеров не корежится язык SQL - это просто удобные подстановки, использование которых просто гарантирует отсутствие инъекций, потому как эскейп происходит внутри библиотеки. Тут я не говорю про страшно навороченные построители запросов или ORM, который сам не люблю, но несколько удобных подстановок типа одного значения, разворота массива я использую с удовольствием.

Кстати по этому поводу забыл вот про эту ошибку http://irbis-team.com/15/7/3

Цитата
Обратите внимание на важную деталь - пароль в запросе не обрабатывается функцией escapeString(). Это не оплошность, оплошностью было бы как раз наоборот.


Это полная чушь - обрабатывается должен не пароль, а md5 его, и если бы вы пользовались функцией md5 из mysql, то как-раз пароль и должен был бы эскейпиться перед передачей в mysql. В вашем случае конечно ничего страшного - в md5 не может быть символов, которые станут причиной инъекции, но все-таки.

Как раз плейсхолдеры и правильно организованный интерфейс их подстановки предотвращают такие ошибки.

Спустя 24 минуты, 48 секунд (4.05.2011 - 17:16) twin написал(а):
Цитата
3) По поводу плейсхолдеров - скажите честно, неужели

login = \''.mysql_real_escape_string($login).'\'

выглядит хорошо?

Ну я не раз писал уже по этому поводу. Вообще я использую обертку, чтобы не писать столько букв. А во вторых - да. Я считаю это красивее плэйсхолдера. Я вообще считаю красивым то, что не покарежено в угоду лени и неаккуратности. Именно этим объясняется применение плэйсхолдеров, да и PDO в целом. Вовсе не безопасностью.

Никогда человек в здравом уме и рассудке не сунет голый палец в розетку.
Идеология подготовленных запросов - "а вдруг сунет? надо надеть на него резиновые перчатки прям с рождения и не снимать никогда в жизни."
Просто нужна привычка, как в случае с розеткой.

Так что по мне вот такой запрос:
    $res = mysqlQuery("SELECT COUNT(*) AS `cnt` FROM `table`  
WHERE `text` = '"
. escapeString($text) ."'
AND `id_parent` = "
. (int)$id
);
смотрится намного красивее, чем такой:
    $res = mysql -> query("SELECT COUNT(*) AS `cnt` FROM `table`  
WHERE `text` = txt,
AND `id_parent` = num"
,
$text, $id
);

А если запрос большой, переменных подставляется много, вообще крах. Одно мучение считать эти вопросики или плэйсхолдеры. Вот для наглядности шедевр:
           	$mysql->execute("
insert into uniq set
user_id=?,
subaccount_id=?,
site_id=?,
id_site=?,
date=?,
rebills=?,
reject=?,
subscr_money=?,
subscr_real_money=?
ON DUPLICATE KEY UPDATE
rebills=rebills+?,
reject=reject+?,
subscr_money=subscr_money+?,
subscr_real_money=subscr_real_money+?"
,
$user_id, $this->data['subacc_id'], $this->data['site_id'], $this->data['site_id'],
date("Y-m-d"),
$this->reb, $this->rej, $user_share, $full_cena, $this->reb, $this->rej, $user_share, $full_cena);

Черт ногу сломит. Сиди - считай))

Спустя 10 минут, 34 секунды (4.05.2011 - 17:27) twin написал(а):
Цитата
Это полная чушь - обрабатывается должен не пароль, а md5 его, и если бы вы пользовались функцией md5 из mysql, то как-раз пароль и должен был бы эскейпиться перед передачей в mysql.

Ни коем случае пароль не должен подаваться в mysql в чистом виде. Это отдельный разговор. Так что "эскейпить" там нечего. Вот это верно:
Цитата
в md5 не может быть символов, которые станут причиной инъекции
Потому и.

Спустя 14 минут, 30 секунд (4.05.2011 - 17:41) Ivan1986 написал(а):
Конечно шедевр

$mysql->execute("
insert into uniq set
user_id=?,
subaccount_id=?,
site_id=?,
id_site=?,
date=?,
rebills=?,
reject=?,
subscr_money=?,
subscr_real_money=?
ON DUPLICATE KEY UPDATE
rebills=rebills+?,
reject=reject+?,
subscr_money=subscr_money+?,
subscr_real_money=subscr_real_money+?"
,
$user_id, $this->data['subacc_id'], $this->data['site_id'], $this->data['site_id'],
date("Y-m-d"),
$this->reb, $this->rej, $user_share, $full_cena, $this->reb, $this->rej, $user_share, $full_cena);



$data = array(
'user_id' => $user_id,
'subaccount_id' => $this->data['subacc_id'],
'site_id' => $this->data['site_id'], //???
'id_site' => $this->data['site_id'], //???
'date' => date("Y-m-d"),
'rebills' => $this->reb,
'reject' => $this->rej,
'subscr_money' => $user_share,
'subscr_real_money' => $full_cena,
);

$mysql->execute("
insert into uniq set ?a
ON DUPLICATE KEY UPDATE
rebills=rebills+VALUES(rebills),
reject=reject+VALUES(reject),
subscr_money=subscr_money+VALUES(subscr_money),
subscr_real_money=subscr_real_money+VALUES(subscr_real_money)"
,
$data);


Плейсхолдер ?a разворачивает хеш в строку для set - одна из самых частых операций для вставок и обновлений.

;)

Спустя 4 минуты, 24 секунды (4.05.2011 - 17:46) Ivan1986 написал(а):
Цитата
Ни коем случае пароль не должен подаваться в mysql в чистом виде.

А кто сказал что его нельзя хешировать на стороне mysql ?
В запрос он вполне может передаваться в чистом виде


INSERT INTO `users` SET `login`=?, `pass`=MD5(concat(?, NOW()), `date`=NOW()


Спустя 14 минут, 17 секунд (4.05.2011 - 18:00) twin написал(а):
Каждому свое.
Мне вот нравится писать запросы по правилам SQL, а не по правилам класса бд. Вот эта схема с плэйсхолдером не разбирает типы полей. А значит все их оборачивает апострофами. Мало того, все прогоняет через mysql_real_escape_string(), что числовые, что текстовые значения.
Может оно и все ничего, нравится так - пусть.
Мне нравится видеть сразу, что как и где обрабатывается и как формируется.
Причем мне нравится управлять этим, а не надеяться на магию и чудеса.

Цитата
А кто сказал что его нельзя хешировать на стороне mysql ?
В запрос он вполне может передаваться в чистом виде

Можно, но не нужно. Это к вопросу о скорости запроса и масштабируемости.

Спустя 11 минут, 18 секунд (4.05.2011 - 18:11) Ivan1986 написал(а):
Кстати типы полей разбираются - и числовые не прогоняются. Если вам так нравится, то да - каждому свое, хотя мне управлять постоянно одним и тем-же не хочится, а магии и чудес нету - все предельно просто (или как - любая достаточно сложная технология неотличима от магии?).
Насчет можно, но не нужно - случаи они разные бывают.
Я повторюсь но после таких вот курсов тоже приходится разгребать код, восновном всякие "творческие" решения по части БД и роутеров. Вобщем я так понимаю вы против подхода "лучше день потерять, а потом за 5 минут долететь".

Спустя 52 минуты, 51 секунда (4.05.2011 - 19:04) twin написал(а):
Цитата
Вобщем я так понимаю вы против подхода "лучше день потерять, а потом за 5 минут долететь".

Я против того, что бы летать на самолете в булочную за хлебом. Есть вещи, которым не вредна автоматизация. Но вот к случаю с плэйсхолдерами это никак не относится.
Да и где тут за 5 минут долететь?
Посчитаем значимые символы?
           mysqlQuery("INSERT INTO uniq SET
user_id = "
. (int)$user_id .",
subaccount_id = "
. (int)$this->data['subacc_id'] .",
site_id = "
. (int)$this->data['site_id'] .",
id_site = "
. (int)$this->data['site_id'] .",
date ='"
. date("Y-m-d") ."',
rebills = "
. (int)$this->reb .",
reject = "
. (int)$this->rej .",
subscr_money = "
. (int)$user_share .",
subscr_real_money = "
. (int)$full_cena ."
ON DUPLICATE KEY UPDATE
rebills = rebills + VALUES(rebills),
reject = reject + VALUES(reject),
subscr_money = subscr_money + VALUES(subscr_money),
subscr_real_money = subscr_real_money + VALUES(subscr_real_money)"

);


Я уже не говорю о прозрачности и ресурсоемкости. Ради чего? Чтобы код покруче позапутаннее смотрелся?

Спустя 9 минут, 9 секунд (4.05.2011 - 19:13) twin написал(а):
Цитата
Я повторюсь но после таких вот курсов тоже приходится разгребать код, восновном всякие "творческие" решения по части БД и роутеров.

По части БД как раз все в точности до наоборот. Гораздо чаще приходится разбирать всяческие самоделки, которые корежат нормальный SQL.

Спустя 25 минут, 17 секунд (4.05.2011 - 19:38) ApuktaChehov написал(а):
Я согласен с twin -ом. Одно время тоже пользовался классом для работы с БД с использованием плейсхолдеров. Потом бросил. Скажу одно: если вы знаете SQL, вы откроете любой код, будь-то PHP, С, Java, Perl, Delphi и т.д. И вы везде узнаете родной синтаксис, родные запросы и сразу становится ясно, чего хотел программист(если программист нормальный).
В вашем же случае Ivan1986, нужно выучить новый суррогатный синтаксис.

Просто хочется что бы грязную работу за вас делал кто-то другой. Это понятно. А что будет если, по требованию заказчика нельзя будет использовать подобные библиотеки? Будет файл, не так ли?

Вот так и получается в нашем современном мире, все пользуются последним словом техники, но многие даже и не догадываются как это работает. Печально на самом деле.

Спустя 1 час, 48 минут, 44 секунды (4.05.2011 - 21:27) Ivan1986 написал(а):
Цитата
По части БД как раз все в точности до наоборот. Гораздо чаще приходится разбирать всяческие самоделки, которые корежат нормальный SQL.

Вот именно что самоделки - вот у вас тоже самоделка - mysqlQuery
именно что самоделка, которая ничего не умеет делать, вот именно такие я и видел, только что классами оформленные. Ребят, не парьтесь - в конкурсе на самую отстойную либу вы в лидерах, если этим пользуетесь. Без обид.

И во всей красе

`". IRB_DBPREFIX ."guest`


WHERE `id` IN (". implode(', ', array_map('intval', $POST['array1'])) .")"

while($row = htmlChars(mysql_fetch_assoc($res)))


Блин, любой мало-мальски сложный запрос - у вас будет мешанина кода.

Цитата
А что будет если, по требованию заказчика нельзя будет использовать подобные библиотеки? Будет файл, не так ли?

Я думаю что такое требование может быть только у старшего программиста, или если попалась подобная поделка и требование у тебя самого так как не переписывать же всю эту хрень. Так что "фантастика на втором этаже" (с).
А будет не фейл, просто будет грустно.

А, ну и конечно - классика

if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../../404.html'));
}

Какой же скрипт не обходится без этой домороченной защиты, а index.html уж для компании где? Почему

Options -Indexes


Такое чувство что вы это на реальных сайтах используете.

Спустя 38 минут, 1 секунда (4.05.2011 - 22:05) inpost написал(а):
Ivan1986
Читай твои сообщения, кажется, что ты ничего не смыслишь в программировании, прочитал какой-то один маленький справочник, или послушался какого-то одного препода, и всё, уже считаешь себя очень умным.

Спустя 14 минут, 26 секунд (4.05.2011 - 22:20) Ivan1986 написал(а):
inpost
смяшно ;)

Спасибо, поржал

while ($row = mysql_fetch_assoc($res))
{
$row['date'] = $row['day'] .' '. $lang_month_string[$row['month']] .' '. $row['year'];
$row['subtitle'] = htmlspecialchars($row['subtitle']);
$row['text'] = createBBtags($row['text'], false) . "...";
$row['url'] = href('news=' . $row['id']);
$row['link'] = IRB_LANG_FULL_NEWS;

$row['public_url'] = !empty($row['public']) ?
href('rem=nopublic', 'news='. $row['id']) : href('rem=public', 'news='. $row['id']);

$row['public_link'] = !empty($row['public']) ? IRB_LANG_NO_PUBLIC : IRB_LANG_PUBLIC;
$news .= parseTpl($tpl, $row);
}


И еще раз поржал

if(is_array($data))
{

extract($data, EXTR_PREFIX_ALL, 'tpl');

ob_start();
eval('?>'. $cont .'<?php ');
$cont = ob_get_contents();
ob_end_clean();

}

Спустя 20 минут, 20 секунд (4.05.2011 - 22:40) ApuktaChehov написал(а):
Ivan1986 - а вы вообще кто? Коли вы такой мега-отец PHP, расскажите о себе.
Ну.. опыт работы, образование, может покажете примеры вашего кода. Достижения. Портфолио. А то мне кажется, что вы просто тролль.

Спустя 26 минут, 48 секунд (4.05.2011 - 23:07) Ivan1986 написал(а):
Вот насчет мега-отец - не надо так, знаете, неприятно это. Просто есть небольшой опыт работы с достаточно большими высоко нагруженными проектами.

Ну ладно, мне 24, закончил Брянский гос-тех универ, получил там диплом программиста, с пятого курса работал в РБК программистом, с год назад оттуда ушел, когда из меня активно хотели сделать perl программиста, сейчас работаю на удаленке, и это как-то прикольно.

Примеры кода - ну как всегда классически http://github.com/ivan1986/ (кстати, а чего ссылка https не вставляется?)

http://github.com/ivan1986/quickfw на пятом курсе начали разрабатывать фреймворк - тогда их не было как грибов после дождя, а существующие были либо слишком ООП - Zend, либо слижком тяжелые - Cake, либо такие куцие, что страшно смотреть - CodeIgniter. И вроде как ничего не изменилось по этим трем.

В РБК на прототипе фреймворка был написан start.qip.ru который сейчас qip.ru, почти полностью переписан mblogi.qip.ru (в частности в старой версии встретил вот такой замечательный роутер, как у вас - долго матерился). Коды живы, здоровы, но так как не работаю там давно, то конечно изменения там есть, а у меня старые.

После того как DK похоже забил на библиотеку DbSimple стал ее поддерживать, и сейчас на github лежит ее форк, который меня устраивает - она просто удобная и лаконичная, причем последнее наблюдается крайне редко, по постам на форуме моей версией активно пользуются.

Спустя 11 минут, 47 секунд (4.05.2011 - 23:19) inpost написал(а):
Итак, что мы имеем, "небольшой опыт" у выпускника универститета, как раз самый рассвет максимализма, проработал в какой-то там студии годик, за период которой из него активно пытались сделать perл-программиста, другой участок времени заняло написание дипломной работы + защита.
Среди всего разговора не встречается нормальной критики, конкретных примеров, лишь один троллинг, пользуется мелкими словечками, которые успел выучить за курс, но показать реальное применение так и не смог.

Знаешь, что бывает лучше курсов? Только хорошие курсы. Проф.ссылки в студию, где курсы качественнее, чем на ирбисе.

Спустя 2 минуты, 24 секунды (4.05.2011 - 23:21) twin написал(а):
Цитата
Вот именно что самоделки - вот у вас тоже самоделка - mysqlQuery
именно что самоделка, которая ничего не умеет делать
А что она должна уметь? Это самая банальная mysql_query() только с дебаггом. Этого вполне достаточно. Не нужно ничего больше. Никаких плэйсхолдеров, которые путают все и вся, жрут ресурс и ничего не экономят.

Цитата
Ребят, не парьтесь - в конкурсе на самую отстойную либу вы в лидерах, если этим пользуетесь. Без обид.

А кто вообще говорил, что тут где то либа? Тут и в помине нет ничего похожего на ваши "крутые фреймворки". Ни в каких соревнованиях "я первый парень на деревне, а это мой фреймворк" я не участвовал и не собираюсь. Я просто показал, как можно просто и без затей сделать структуру.

Цитата
Блин, любой мало-мальски сложный запрос - у вас будет мешанина кода.

Я вас умоляю. Может это и мешанина, но в сто раз понятнее, нежели
insert into uniq set ?a
Что за ?a (блин, даже вопрос не поставишь)
Кому это известно? Гениальному изобретателю велосипеда под названием QuickFW сотоварищи? Ну да, для них каша может и пострашнее. А по мне так пусть лучше такая каша, чем ребус с тремя неизвестными.

Цитата
А, ну и конечно - классика
А в чем собственно проблема? В том, что я это не в штакселе прописал? На вкус и цвет фломастеры все разные.
Я люблю писать скрипты, которые наименее всего зависят от внешних факторов.

Цитата
Такое чувство что вы это на реальных сайтах используете.

Есть сомнения?

Цитата
Спасибо, поржал

Прежде чем ржать аки конь, разберись со своим хваленым фреймворком.
Я глянул мельком для интереса. Что за супер-продукт там такой. УЖС. Даже не стану тратить время на комментарии. Достаточно того, как он ведет себя на родном сайте.
Свернутый текст
Открой для себя библиотеку mb_

Спустя 12 минут, 21 секунда (4.05.2011 - 23:33) waldicom написал(а):
Цитата (twin @ 4.05.2011 - 21:21)
Я глянул мельком для интереса. Что за супер-продукт там такой. УЖС. Даже не стану тратить время на комментарии. Достаточно того, как он ведет себя на родном сайте.
Открой для себя библиотеку mb_

Вообще-то это сайт github, думаю, притензии надо направлять к ним.

Совет намбер ван Ivan1986'у: Не думаю, что ты убедишь Твина в чем-либо. Тут многие пытались, но Николай скала! smile.gif (в хорошем смысле)
Совет намбер ту: уж подавно не пытайся переубедить подпевал Твина, там все плохо.

Спустя 3 минуты, 55 секунд (4.05.2011 - 23:37) twin написал(а):
Ах вона как... Даже в мыслях не держал, что сайт, приведенный для примера, оказывается еще и не владельца. Ну тогда прошу прощения.
А куда смотреть тогда?

Спустя 21 минута, 54 секунды (4.05.2011 - 23:59) waldicom написал(а):
Цитата (twin @ 4.05.2011 - 21:37)
А куда смотреть тогда?

А фиг его знает smile.gif
Там может или с ГИТа слить или может автор кинет ссылку на демо ресурс

Спустя 2 минуты, 30 секунд (5.05.2011 - 00:02) Ivan1986 написал(а):
inpost
Цитата
проработал в какой-то там студии годик, за период которой из него активно пытались сделать perл-программиста

Знаете, после трех лет работы с php вот куда куда, а на perl уходить не хочется - это слишком "своеобразный" язык.

А хорошие курсы - Котерова PHP4/5 - с нее и начинал, а не со всяких курсов, может поэтому wink.gif
Еще Шлосснейгл - профессиональное программирование на php.

twin
Простите, вы что просили - мой проект, я его код и предоставил - весь фреймворк.
Цитата
Ах вона как... Даже в мыслях не держал, что сайт, приведенный для примера, оказывается еще и не владельца.

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

Цитата
Что за ?a (блин, даже вопрос не поставишь)

Это такое хитрое кунфу, когда чтение одной странички документации сохраняет потом много времени, я думаю вам не понять.

Цитата
А в чем собственно проблема? В том, что я это не в штакселе прописал?

Ну хотя-бы в количестве. Прошу обратить внимание - в .htaccess одна запись - Deny from all
сколько у вас?
Да, и еще одно кунфу - DOCROOT находится не в корне файловой системы - почему бы все контроллеры не вынести на уровень выше.
Или вы где-то нашли хостинг, который не дает такой возможности? Эх, давно я не юзал шаред хостинги, все как-то ssh на сервера, а там уж и прямо из git/svn на продакшен.

waldicom
Наверное для просмотра кода таки с git качать. Особо смысла в демо ресурсе нету, так как это фреймворк, и в базовой настройке он гордо показывает страничку "я запустился".

Спустя 14 минут, 20 секунд (5.05.2011 - 00:16) Ivan1986 написал(а):
waldicom
Да я и не собираюсь никого переубеждать, мне же жутко интересно, какой у них код то в проектах, потому как чую что веселый.

С переубеждениями я уже давно завязал, если бы я кого-то пытался переубедить, я бы вообще замучился, я вон вообще линуксойд, так что представляешь скольких мне переубеждать надо было бы smile.gif

Спустя 4 минуты, 28 секунд (5.05.2011 - 00:20) waldicom написал(а):
Цитата (Ivan1986 @ 4.05.2011 - 22:02)
а там уж и прямо из git/svn на продакшен

Это интересно, конечно... Что, вот прямо так без тестов, без ничего просто сразу на production?

Спустя 1 минута, 55 секунд (5.05.2011 - 00:22) inpost написал(а):
Ivan1986
Ты серьёзно веришь, что этот налепленный стиль можно считать пределом качества стиля?
	define ('DOC_ROOT', dirname(__FILE__));
define ('ROOTPATH', dirname(dirname(__FILE__)));
define ('APPPATH', ROOTPATH . '/application');
define ('VARPATH', ROOTPATH . '/var');
define ('QFWPATH', ROOTPATH . '/QFW');
define ('LIBPATH', ROOTPATH . '/lib');


Ну а далее скрин-шоты:
http://my.jetscreenshot.com/demo/20110504-xqip-14kb
http://my.jetscreenshot.com/demo/20110504-vtop-12kb

А так же в его работе не работает: " (кстати, а чего ссылка https не вставляется?)"
Ну и т.д.

Спустя 10 минут, 3 секунды (5.05.2011 - 00:32) twin написал(а):
Цитата
Я и не думал, что такие уважаемые профессионалы не слышали про один из самых популярных хостингов исходного кода.
А на кой он мне? Рыться в гениальных самоделках? Спасибо, хватает своего дерьма выше крыши.

Цитата
Это такое хитрое кунфу, когда чтение одной странички документации сохраняет потом много времени, я думаю вам не понять.
Это кунг-фу заставляет читать доки на каждую такую самоделку. Если она еще есть кстати. А то вот так напишут:
Цитата
Документация
Для генерации нужен установленный a2x, xetex и вообще только unix - с виндой трахайтесь как хотите
Знакомо? biggrin.gif
Цитата
Ну хотя-бы в количестве. Прошу обратить внимание - в .htaccess одна запись - Deny from all
Ну я же говорю, тут на вкус и цвет. Мне уютнее когда нет зависимости от внешних факторов. И терпеть не могу, когда навязывают, где и как располагать файлы. Мало ли что у меня там выше корня. Никакого желания валить туда еще и кучу чего то невразумительного. У меня на сервере больше 30 сайтов. И все разные. Как прикажете во всем этом разбираться?

Не нужно ржать не разобравшись. Мне вот, глядя на класс DbSimple_Database, состоящего из полутара тысяч пестрящих регулярками строк, совсем не смешно. Грустно. И страшно.
Никогда. Под страхом гильотины, я не стану использовать такого монстра в продакшен-пректах. Это же явная подстава заказчика, особенно после таких откровений:
Цитата
April 25, 2011  Исправлен возможный варнин... [ivan1986]
April 25, 2011  Добавлен правильный мерж [ivan1986]
April 22, 2011  Фиксы в симпле [ivan1986]


Нет уж. Пусть ржут напыщенные "специалисты", зато я на 100% уверен в том, что мой запрос - это мой запрос. А не фарш, который выдаст мясорубка класса, в которую напихать хвостов и лыток плэйсхолдеров вместо мяса SQL.

Спустя 34 секунды (5.05.2011 - 00:33) Ivan1986 написал(а):
waldicom
Цитата
Это интересно, конечно... Что, вот прямо так без тестов, без ничего просто сразу на production?

Почему? Ветку продакшена после тестов и мержа и тестов все-таки выливают на продакшен.
Кстати это очень не рекомендуется делать в пятницу вечером smile.gif
И оптимальнее всего делать это с помошью git pull или svn up
В случае svn разумеется через конфиг хоста или htaccess закрыть папки .svn

Просто при нескольких обращениях в секунду svn export как-то не катит.

inpost
Пределом нет, но вполне нормально.
Наслушался про пробелы? Кстати второй скрин - это у нас кодеигнайтеровская либа.
И кстати таб в 8 символов таки моветон, но насчет первого скрина согласен.

Цитата
(кстати, а чего ссылка https не вставляется?)

Это было по поводу ваших bbcode - попробуйте через js у себя на форуме вставить ссылку не http а https.

Спустя 5 минут, 8 секунд (5.05.2011 - 00:38) inpost написал(а):
Вот твои мега запросы в действии: https://github.com/ivan1986/quickfw/blob/ma...dController.php
Кроме как запутывания, ничего не добился более.
А вот этот класс вообще массу удовольствия доставляет: https://github.com/ivan1986/quickfw/blob/ma...old/Display.php
Ну я бы честно плевался на такого разработчика, если бы после него пришлось бы мне доделывать сайт... Приватное свойство, но изменить его можно через публичный метод, который занимается как раз именно этим, собственно.

В ответ на твоё "попробуйте на форуме", посмотри на свои регулярки,там тоже только http или ftp вставить можно, а https уже не пройдет.

Собственно, в начале я думал, что ты говоришь по делу, но теперь я вижу, что я ошибался с первым своим мнением.

Спустя 2 минуты, 45 секунд (5.05.2011 - 00:41) inpost написал(а):
Я про пробелы ничего не говорю, акцентировал внимание я искривлённый стиль, где у тебя всё поехало и очень режет глаза.

Спустя 3 минуты, 55 секунд (5.05.2011 - 00:45) Ivan1986 написал(а):
twin
Цитата
А на кой он мне? Рыться в гениальных самоделках? Спасибо, хватает своего дерьма выше крыши.

Дык не сомневался smile.gif

Цитата
Знакомо?

А то - попробуй в винде что-то нормальное поставь - ни тебе репозиториев, ни разрешения зависимостей - страх и ужас, поэтому пусть уж windows пользователи релиза подождут, там уж сгенерю в html.

Цитата
Мне вот, глядя на класс DbSimple_Database, состоящий из полутара тысяч пестрящих регулярками строк, совсем не смешно. Грустно. И страшно.

Да что же вы так, испугались такого милого маленького класса. Используйте лучше Doctrine - два мегабайта исходных кодов, ORM, собственный объектно-ориентированный диалект SQL.
А извините симплу можно разобрать по косточкам за вечер. Всю, полностью.

Спустя 8 минут, 23 секунды (5.05.2011 - 00:53) Ivan1986 написал(а):
inpost
Да, представляешь, даже сам сейчас переписываю вот это - он таки немножко непонятный.
Просто тут слишком много обобщений - класс строит CRUD интерфейс для произвольной таблицы, причем еще такой, что его можно в готовую админку вставлять.

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

Эмм, сам то понял? Свойства там у меня публичные - это просто удобный класс для группы свойств. А то что ты описал - стандартное решение во всем ООП - изменять только через методы, но если проверки не надо, то можно свойства оставить и публичными.

Цитата
В ответ на твоё "попробуйте на форуме", посмотри на свои регулярки,там тоже только http или ftp вставить можно, а https уже не пройдет.

Хм, единственная регулярка проверки урла

'~^(?:(?:https?|ftp)://

Так что не надо.

Спустя 7 минут, 47 секунд (5.05.2011 - 01:01) twin написал(а):
Цитата
Дык не сомневался

Естественно. Вот опять потратил кучу времени напрасно... Думал что то интересное найти. А все одно и тоже. Очередной "супергениальный" фреймворк для себя любимого и нескольких несчастных приобщившихся. Ничего революционного там нет. Уж если и извращаться с фреймворком, то с каким-нибудь проверенным и задокументировнным. А не с одним из сотни тысяч естественно самых лучших.
Цитата
А то - попробуй в винде что-то нормальное поставь - ни тебе репозиториев, ни разрешения зависимостей - страх и ужас, поэтому пусть уж windows пользователи релиза подождут, там уж сгенерю в html.
Ну да... Пусть подождут. Я совсем забыл, это же для "нормальных пацаноф" либа.
Цитата
все нормальные люди уже давно используют плейсхолдеры
, а так же unix. Остальные лохи - пусть ждут. smile.gif

Цитата
Да что же вы так, испугались такого милого маленького класса.
Да хоть какой он милый и малый, он тут как корове седло.
Цитата
А извините симплу можно разобрать по косточкам за вечер. Всю, полностью.
Можно. А нужно ли? Если я не собираюсь ездить на коровах...

Ладно, желаю удачи в развитии еще одного продукта, который конечно же перевернет мир. Позвольте мне заняться более земными делами - учить людей основам и дада! делать сайты.

Более не вижу смысла участвовать в пиаре и бессмысленных спорах.


Спустя 21 секунда (5.05.2011 - 01:01) inpost написал(а):
1) "Эмм, сам то понял? Свойства там у меня публичные"
private static $cur;
Любой москвич тебе скажет, купи очки! :)
2) Не хочу я снова рыться во всём этом ООПухольном коде, я видел как минимум 5 регулярок в разных частях, вот в одном месте акцентировал внимание, там как раз (ht|f)tp . Открывай все свои страницы и вспоминай... если часть из них все-таки твои, что теперь меня ставит под сомнение.
3) Как ты думаешь, я его буду вставлять? Один только внешний вид отпугивает, ты бы покупал стул, в котором в одной из ножек огромная дырка? Нет, вот и то же чувство по отношению к твоему "фреймворку".

Ты сам не ориентируешься по своему коду, а ещё предлагаешь оценить его? Ну уж нет, это типичный пример того ООП, который Николай публично называет ООПухоль головного мозга, я не согласен с этим понятием в целом, но по данному примеру, ничего более в защиту твоего ООП сказать не могу.

Спустя 13 минут, 10 секунд (5.05.2011 - 01:14) waldicom написал(а):
Цитата (twin @ 4.05.2011 - 23:01)
Ну да... Пусть подождут. Я совсем забыл, это же для "нормальных пацаноф" либа.

Кстати, twin, меня удивляет тот факт, что ты, если я правильно понял, не используешь системы контроля версий. Это тоже по религиозным причинам потому что это нафих не надо?

Спустя 14 минут, 48 секунд (5.05.2011 - 01:29) twin написал(а):
Почему не использую? Просто редко возникает необходимость.
Стоит у маня SVN, пользовались одно время. Сейчас спецфика работы такая, что нет в ней надобности.

Спустя 10 минут, 45 секунд (5.05.2011 - 01:40) Ivan1986 написал(а):
inpost
1) А, ну дык - текущее значение по умолчанию, а зачем оно должно быть публичным?
2) опять замечательная True_validation - доставшаясь от кодеигнайтера.
ack '\(ht\|f\)tp'
lib/True_validation.php
463: return ( !preg_match('/\b((ht|f)tp):(\/\/)([a-z0-9.:@*()~#\]\[_?=&\/\\-])+/', $str)) ? FALSE : TRUE;

3) Да, а как отпугивает внешний вид вашего кода...

variables.php - сначала GET, потом реврайт, потом POST - замечательно.
Чтобы добавить новую переменную ее нужно инициализировать там?
А если она используется только в одном модуле? (что значит если? ;) )
$POST = htmlChars($POST); - просто замечательно - в каждой вьюшке
global $GET; красота - вместо суперглобалов мы сворганим свою поделку, чтобы инитить скопом. А зачем? проверять достаточно только наличее тех переменных которые сюда могут прийтеи, а все в одном месте вы не удержите.


 ! 

М
Грубость на грубости, предупреждение вынужден тебе дать я
inpost


Так какого фига тогда в "контроллере" вы занимаетесь форматированием?

while($row = htmlChars(mysql_fetch_assoc($res)))
{
$row['date'] = formatDate($row['date'], false);
$row['text'] = createBBtags($row['text']);
$rows .= parseTpl($cont, $row);
}

Библиотека наверное не позволяет нормально работать с базой :)

Да, против моих огрехов в оформлении, плюс все-таки запутанного класса, который я каюсь переписать у вас нарушение фундаментальных принципов разделения логики и пачка глобальных переменных с необходимостью их инициализации.

twin
ну может покажите код хоть одного вашего гениального сайта? Ну хотя-бы на несколько страничек, а то я чую что такой роутинг вас доканает.

Кстати - вот пример сайта platotv.rar
Особенно хорошо можно посмотреть на художества одного кодера, который писал парсеры крона.

Ну хоть примерно такого размера у вас что-то есть? Или только вот такие курсы?

Спустя 7 минут, 49 секунд (5.05.2011 - 01:48) inpost написал(а):
Ivan1986
Вообще-то данный вид называется пассивным шаблонизатором, если кое-что недоучил ты.
2) Ой, да ты гений, просто своровал код от CI, а сам ты ангелочек, они во всём виноваты, что в твоём фреймворке такой код записан.
1) Да, лишь потому, что ты итак создаёшь открытый к ней доступ через метод, то это выглядит картина так: "Вам нужно сделать укол пациенту, но при этом пользовать шприцом нельзя, зато разрешено бензопилой!", интересно, как ты это реализуешь, вместо того, чтобы воспользоваться напрямую переопределением свойства.

И насчет "показать", зачем показывать то, когда у самого то ничего толком и нету? smile.gif Вот если бы столкнулись 2 титана, было бы чем меряться, а в данном случае это будет выглядеть как хвастовство, нет смысла даже Твину показывать сайты, чтобы потом тролли набросились на сайт ломать и валить, лишь бы доказать, что он хуже или лучше кого-то? Я посмотрел твой код лишь потому, что было интересно узнать и изучить другую сторону программирования.

Спустя 1 минута, 17 секунд (5.05.2011 - 01:49) Ivan1986 написал(а):
waldicom
Меня этот факт что-то не удивляет. Я догадываюсь какая там специфика работы smile.gif


 ! 

М
А вот реклама на форуме платная
inpost


Очень полезная вещь, когда есть несколько хостов с разными настройками и это еще как-то мержить нужно.

Спустя 5 минут, 9 секунд (5.05.2011 - 01:54) mxwuser написал(а):
У Твина не остается выбора. Мне кажется ему пора удалять свои курсы, ведь г-н Иван 86 года выпуска сказал что они - не есть хорошо.
Предпологаю что этот "засланый казачек", из команды злого гения - Джона Попова, мстит за разрушенные Твином легенды, о незаменимости ДуВайлов, и ПринтФов.

Спустя 10 минут, 10 секунд (5.05.2011 - 02:04) Ivan1986 написал(а):
inpost
Это не пассивный шаблонизатор, это вы просто склеиваете по постам страницу, вместо того чтобы организовать цикл в шаблонизаторе.
Пассивный шаблонизатор не исполняется, тоесть никак.
Ребят, это

ob_start();
eval('?>'. $cont .'<?php ');
$cont = ob_get_contents();


*я люблю твороженные булочки*


class Template{
private $templateText;

function Template($filename){
$this->templateText = file_get_contents($filename);
}

function addValue($variable, $content){
$this->templateText = str_replace("%$variable%", $content, $this->templateText);
}

function display(){
echo $this->templateText;
}
}



Вот это пассивный шаблонизатор.
Чувствуете разницу? echo! а не eval или таки include как у нормальных людей.

Цитата
просто своровал код от CI

Объясни, как чисто физически я мог своровать у открытого проекта?

Цитата
Да, лишь потому, что ты итак создаёшь открытый к ней

Вот если честно - не понял, что ты хочешь сказать - я просто сделал интерфейс для совместимости с более старой версией и установку свойства по умолчанию.

Цитата
нет смысла даже Твину показывать сайты

*я люблю твороженные булочки*


 ! 

М
Предупреждение было, в ответ снова оскорбления и попытка унизить, неуважительное отношение к собеседнику!
inpost

Спустя 5 минут, 38 секунд (5.05.2011 - 02:10) Игорь_Vasinsky написал(а):
Ivan1986
Цитата
Объясни, как чисто физически я мог своровать у открытого проекта?


подразумевалось: слизал wink.gif

Спустя 48 минут, 28 секунд (5.05.2011 - 02:59) inpost написал(а):
Тема превращается в типичный троллинг, ТС забанен за это, собственно, тема будет спамиться до того периода, пока она не закроется!

Спустя 25 секунд (5.05.2011 - 02:59) Игорь_Vasinsky написал(а):
TeXHaPb
одного тебя мало...
Вань? давай весь отдел... пускай балов те докидают.., а то начальник не программист - не весомо.


Спустя 6 часов, 30 минут, 41 секунда (5.05.2011 - 09:30) twin написал(а):
Не думаю, что он троль. Просто очередной "непризнанный гений". Начитался модных книжек и естественно немедленно слепил свой фреймворк. Этим многие болеют. Потому что подкоркой понимают, что любой фреймворк - фикция. А умом дойти не могут. Вот и кидаются, как Наполеон н Россию. Главное ввязаться в драку, а там то полюбому побед.

Так вот, для того, чтобы сделать что-то значимое, совершенно недостаточно видеть чужие недостатки. Нужно еще хоть немного собственных достоинств.
А на поверку выходит что - бугага неразобравшись по поводу чужого кода и полная каша из CI, ZEND, Smarty, отдельных чужих классов и собственных потугов все это склеить в рабочую схему, вместо своего.

В итоге рождается очередня мутная, толком незадокументированная, и, естественно никому нафиг не нужная, приблуда. Потому что таких пруд пруди и толку нету.

Вот человек и злится, пытается учить других уму-разуму с "высоты" собственной колокольни.
eval ему непонравился))) Так прежде чем писать это, нужно хоть немного ознакомиться с материалом. У меня (в отличии) расписана каждая буква. С обоснованиями - почему именно так. Почему я отказался от пассивной шаблонизации и include тем более.

Да впрочем это опять частности. Общая картина понятна. Человек потратил лучшие годы на пустышку, а теперь злицо. Жаль, его бы энергию, да в мирных целях.
Быстрый ответ:

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