Евгений Б.
5330 повідомлень
#14 років тому
Цитата ("superkoder"):
Задача-то ещё какая не тривиальная.

да ладно, тупой генератор текстов из шаблона

парсить регуляркой {....} если не нашли, то выход из цикла
эксплодить по |
из числа вариантов выбрать любой и сделать замену "исходника"
повтор цикла

работает быстро и получается случайный вариант текста.

я тут математиков искал, которые бы могли выбрать ВСЕ варианты текста по заданной уникальности. вот уж точно 1 из 28. и 25 слились на этапе постановки задачи.

Цитата ("Cord"):
А сколько стоит хороший специалист, знающий принцип инверсии зависимостей, например, на практике? Разбирающийся в ООП? Я программист, но в офисе, хочу понять рынок.

в ДЦ 50 тыс средняя оплата.
посмотрите вакансии на Хабре.

Ну и привет с Лепры
Вадим Х.
256 повідомлень
#14 років тому
Цитата ("Hungry_Hunter"):
И кстати... У меня друг сайты делает на cms на зарплате в 30 тыс. Ни буквы в пхп не понимает... И то ленится. А Вы говорите программисты.


Неплохо устроился
Артём К.
1157 повідомлень
#14 років тому
Цитата ("ArtPro"):
парсить регуляркой {....} если не нашли, то выход из цикла
эксплодить по |
из числа вариантов выбрать любой и сделать замену "исходника"
повтор цикла


Первую часть задачи это решит - выдать какое-нибудь случайное предложение.
А вот составить все варианты - это чуть по сложнее.

Здесь нужно брать каждый раз самую вложенную конструкцию слово{a|b|c}
Заменять эту конструкцию на такую словоa|словоb|словоc

и так в цикле, пока не останется в строке скобок.

В результате получаем строку с одними | и без скобок, но эквивалентную начальной строке, и в этой строке будут все варианты слов.
Артём К.
1157 повідомлень
#14 років тому
<?php

function replace_brackets($matches)
{
// as usual: $matches is the complete match
// $matches the match for the first subpattern
// enclosed in '(...)' and so on
$variants_in_brackets = explode('|', $matches);
$res = array();
foreach($variants_in_brackets as $key => $variant)
{
$res = $matches . $variant;
}

$res_string = implode('|', $res);
return $res_string;
}


$str = "{a | b {c|d}}";

echo "str = $str<br />\n";
while (!(strpos($str, '{') === FALSE))
{
echo "зашли в цикл<br />\n";
/* Ищем конструкцию слово{} без вложенных {
Это будет самая вложенная конструкция */

$shablon = "/(*?){(*)}/";

$str = preg_replace_callback($shablon, "replace_brackets", $str);
echo "str = $str<br />\n";
}


?>



Вывод скрипта
str = {a | b {c|d}}
зашли в цикл
str = {a | b c| b d}
зашли в цикл
str = a | b c| b d


str = a | b c| b d - вот это и будут все варианты, то-есть, мы убрали из строки все {} заменив их на эквивалентные без скобок.

Задача всё равно сложная.
Александр Е.
80 повідомлень
#14 років тому
ArtPro, Привет
Артём К.
1157 повідомлень
#14 років тому
35 - для сложных задач мало.
Можно на сайтах-визитках заработать столько же без напряжения.
Александр Е.
80 повідомлень
#14 років тому
superkoder,
попробуйте ваш код на исходной строке
>{Пожалуйста|Просто} сделайте так, чтобы это {удивительное|крутое|простое} тестовое предложение {изменялось {быстро|мгновенно} случайным образом|менялось каждый раз}

Цитата ("MMM_Corp"):
Кстати, в MVC, напр. в фреймворке Yii - во вюхах как раз идет в перемешку php + html )


ну я понимаю, когда присылают шаблоны, а другое дело когда что-то типа

$sql = "select * from table where id={$_GET}";
.................
echo "<HTML>
<head>
.........и понеслась душа в рай. и все это в 100 кб файле
Роман Беляев
16382 повідомлення
#14 років тому
Есть ИМХО смысл снижать требования, если это возможно. Высокие требования ставят работодателя в неудобные условия в итоге. Специалиста найти сложно, денег он хочет много, а в случае чего - уйдет и найти другого такого же будет опять сложно, долго и денег он попросит много и опять по кругу. В итоге работу то все равно надо делать, а не все время искать того, кто будет ее делать. Я думаю, что дело не только в размере зарплаты, просто количество желающих с ростом уровня снижается, конкуренция снижается и это задирает цены возможно не пропорционально способностям.
Евгений Б.
5330 повідомлень
#14 років тому
Плюсую ответу.

есть еще одна штука.
надо искать не опытных, а смышленных
Опытный знает дофига лишнего и хочет за "лишнее" оплату
Смысленый знает основы и умеет умело гуглить. Согласитесь, что сделать слайдер на Jq - это вопрос 10 минут гугления и часа работы. Согласитесь, что ВСЕ уже изобретено и надо просто уметь находить.
Виталий Москвин
204 повідомлення
#14 років тому
Цитата ("Cord"):
ну я понимаю, когда присылают шаблоны, а другое дело когда что-то типа

$sql = "select * from table where id={$_GET}";
.................
echo "<HTML>
<head>
.........и понеслась душа в рай. и все это в 100 кб файле


Откуда у вас уверенность, что этот код написали именно они, а не скачали с какого нибудь архива скриптов?

Человек который прочитал хоть одну книжку по PHP не будет так писать
$sql = "select * from table where id={$_GET}";

а напишет вот так например

$id=intval($_GET);
$sql = "select * from table where id={$id}";
Артём К.
1157 повідомлень
#14 років тому
Цитата ("kriptograf"):
Человек который прочитал хоть одну книжку по PHP не будет так писать
$sql = "select * from table where id={$_GET}";


Да полно непонятных граждан, которые книжку не читали, работают фотографом,
а лезут программировать.
Андрей К.
1172 повідомлення
#14 років тому
Цитата ("kriptograf"):
$id=intval($_GET);
$sql = "select * from table where id={$id}";


И словят Notice во-первых, если не инициализорована, будут использовать более медленную intval($var) вместо (int)$var во-вторых, и сделают кривой запрос в базу - в третьих (если вспомним, что неинициализирована или равна 0).
Евгений О.
2989 повідомлень
#14 років тому
Информация к размышлению
Оффтопик

PHP Help

Глава 1. Введение

Цитата:
Что такое PHP?
PHP (рекурсивный акроним словосочетания "PHP: Hypertext Preprocessor" - это широко используемый язык программирования общего назначения с открытым исходным кодом. PHP сконструирован специально для ведения Web-разработок и может внедряться в HTML-код.

Простой ответ, но что он может означать? Вот пример:

Пример 1-1. Пример программирования на PHP

<html>
<head>
<title>Пример</title>
</head>
<body>

<?php
echo "Привет, я - скрипт PHP!";
?>

</body>
</html>

Обратите внимание на отличие этого скрипта от скриптов, написанных на других языках, например, на Perl или C - вместо того, чтобы создавать программу, которая занимается формированием HTML-кода и содержит бесчисленное множество предназначенных для этого команд, вы создаете HTML-код с несколькими внедренными командами PHP (в приведенном случае, предназначенными для вывода текста). Код PHP отделяется специальными начальным и конечным тегами, которые позволяют процессору PHP определять начало и конец участка HTML-кода, содержащего PHP-скрипт.
...
Артем П.
122 повідомлення
#14 років тому
Вы продолжайте, я понаблюдаю
Владимир Ф.
1322 повідомлення
#14 років тому
Elosoft, не php внутри html плох, а разделение логики и представления плохо.
Евгений О.
2989 повідомлень
#14 років тому
Вы считаете что вот так логика разделяется или представляется лучше? Как-то сомнительно...

<?php
echo '<html>
<head>
<title>Пример</title>
</head>
<body>';

echo "Привет, я - скрипт PHP!";

echo '
</body>
</html>';
?>
Владимир Ф.
1322 повідомлення
#14 років тому
Омг.. с чего вы взяли, что я так считаю?
Евгений О.
2989 повідомлень
#14 років тому
А что тогда подразумевается под "разделение логики и представления"?
Владимир Ф.
1322 повідомлення
#14 років тому
Elosoft, гуглите MVC.
Копипастить смысла не вижу, а своими словами и не поймете может и набирать лень.
Скажем так (самое примитивное объяснение)

<?php foreach($arr as $v) { ?>
<tr><td><?php echo $v;?></td><>
<?php }?>
- ok

но

<?php
$query = mysql_query('select idf FROM ...');
while($arr = mysql_fetch_array($query)) { ?>
<tr><td><?php echo $arr;?></td><>
<?php }?>
- не есть гуд. Т.е. доступ к данным + логика приложения не должна содержать html тегов.
Евгений Б.
5330 повідомлень
#14 років тому
Цитата ("vovan_f"):
- не есть гуд. Т.е. доступ к данным + логика приложения не должна содержать html тегов.

угу, все хорошо, если не делаешь скрипт из 50 строк.
или надо сделать вывод xml за 5 минут