|
|
|
| Всем привет,
Вот хотел спросить есть ли у кого книга с задачами для PHP а то вот изучаю PHP и хотелось бы запомнить материал. Может кто подскажет где скачать такой сборник задач по PHP.
Заранее большое спасибо! | |
|
|
|
|
|
|
|
для: ChemboRambo
(25.01.2006 в 23:03)
| | Хотите усвоить материал - пишите рабочие скрипты для людей. (немного перефразированный совет авторов сайта(если я не так сказал - поправьте))
А книг таких я не знаю | |
|
|
|
|
|
|
|
для: ChemboRambo
(25.01.2006 в 23:03)
| | Мы подготовили такой задачник - "PHP-головоломки для хакеров", но он выйдет ближе к маю. | |
|
|
|
|
|
|
|
для: cheops
(26.01.2006 в 00:34)
| | А почему собственно "для хаккеров"?? А новички что - не люди?
Можно неплохой сборник задач по идее создать, используя материалы форума кстати.
Вот, к примеру, задача:
"Дан файл text1.txt с некоторым произвольным количеством текстовых строк. Написать форму index.html, которая запрашивает номер строки через поле ввода у пользователя и скрипт-обработчик script.php, который удаляет в файле text1.txt строку с указанным номером (примечание: человек считает, что строки начинаются с 1)"
Далее можно привести разбор данной задачи, с указанием, что бывают различные варианты, вплоть до того, что в text1.txt нет ни одной строки. Соответственно, при решении-разборе такой задачи начинающий УЖЕ поймет как создать форму с полем ввода и с указанием на обработчик, разберется с операциями чтения из файла, записи в файл. Привыкнет делать проверку введенной от пользователя информации на валидность. Задачи небольшие, поэтому не сложные, а следовательно понятные. ПОВТОРЕНЬЕ - МАТЬ УЧЕНЬЯ, а кто отец?
Ну в таком смысле как насчет задачника? | |
|
|
|
|
|
|
|
для: FatBoy
(26.01.2006 в 13:32)
| | Спасибо, вот жалко нигде немогу найти задачник а так всё нормально! | |
|
|
|
|
|
|
|
для: FatBoy
(26.01.2006 в 13:32)
| | Ну вы же понимаете, что продажа книг это бизнес :))), издательству требуется продавать книги магазинам, магазинам - читателям. Никто не позволит назвать задачник своим именем - так как у многих на это слово отрицательный рефлекс. Я сам терпеть не могу слово "хакер" в названиях книг и под обложкой вы встретите добротный задачник с уклоном в защиту, ряд задач будут на нападение, чтобы Web-разработчики почувствовали себя в шкуре нападающего и посмотрели на свой код с другой стороны. Помимо этого в него влючено множество "мирных" задач направленных на созидание, а также задач двойного назначения вроде систем OnLine.
PS Задачник получился достаточно интересным и в настоящий момент параллельно русскому изданию переводится на английский язык. | |
|
|
|
|
|
|
|
для: cheops
(26.01.2006 в 15:33)
| | А насколько ваши задачи отличаются от того, что я привел? Ведь в принципе все говорят "возми напиши гостевую", а на самом-то деле в этой гостевой человеку приходится решать около 14-18 разрозненных задач-проблемм, причем еще и связанных между собой. А если человек практически написал 1 маленький скрипт, другой, понял элементарные основы, то основываясь на этих кусочках можно пойти дальше. Может попробуем вместе что ли создать подобную вещь для начинающих??? Я могу помочь в корректировке постановки условия задачи (как-никак 12 лет пед.стажа с одной стороны +7 лет решания задач с другой). В задаче НА САМОМ ДЕЛЕ самое сложное правильно ее ЗАДАТЬ (если хочешь получить решение), а уж если решение существует, то найти его уже ерунда. Можете мне поверить.
Несколько задач я уже придумал. Если присутствующие не против, то можно совместно их порешать (с описанием естественно). | |
|
|
|
|
|
|
|
для: FatBoy
(26.01.2006 в 20:44)
| | Мне сложно сказать, простые задачи или нет, мы старались делать их компактными и доступными - ведь помимо задачи приводится также и решение. Сначала идут простые задачи - затем они усложняются. На счёт того, что необходимо "Правильно сформулировать задачу" полность согласен, некорректно поставленные задачи - просто бесполезны для обучения. | |
|
|
|
|
|
|
|
для: cheops
(26.01.2006 в 21:00)
| | Ну так я не понял: РЕШАТЬ БУДЕМ или ну его на фиг и так дел хватает?
Я предлагаю не "гнать лошадей", а спокойно следующий план:
В понедельник дается 1 задача на обдумывание.
В течении понедельника и вторника новички-начинающие пишут свои решения (без обсуждения и критики!!!)
В среду подключаются знающие и предлагают свои варианты (без обсуждения и критики!!!)
В четверг обсуждение-осмысление-доработка-критика, выявление подводных камней и тп.
В пятницу - наилучшее, наипонятнейшее решение определяется и заносится в "Статьи о РНР" или сделать новый раздел "Задачи РНР".
Если есть другие варианты - предлагайте! Этот график не напряженный, все загружены работой, поэтому без напряга можно спокойно многим поучаствовать. (только желательно не подглядывать, а то знаю я вас:)))) | |
|
|
|
|
|
|
|
для: FatBoy
(27.01.2006 в 12:25)
| | Я только за. Наверное задачи следует оформлять отдельно в виде примера, форум для этих целей совсем не походит - тему упинают. А вот в конце задачи можно приводить ссылку на тему, где пользователи будут прилагать свои решения. В этом случае те кто захочет решать задачи сам будет просто их решать, те кто захочет посмотреть ответ - перейдут по ссылке в форум. Те кто, считают, что их решение оригинально и не представлено в обсуждении - размещают свой вариант решения. Первая задача с вас :))).
PS Может, кстати, подинамичнее сделать, скажем 2 задачи в неделю (например, понедельник, четверг)? | |
|
|
|
|
|
|
|
для: cheops
(27.01.2006 в 14:14)
| | Если в виде примера (готового), то есть минус: "а чего я буду решать, если все уже решено". А если на форуме, то есть плюс: задача, вместе с решением попадает в базу, а следовательно имеется шанс выйти на нее в поиске! (лет через 10 :))
А что такое "тему упинают"?
Вообще-то я бы предложил не пороть горячку, а продумать, установить, утвердить правила.
Мое предложение: лимит 2 задачи в неделю (понедельник, четверг).
После публикации дается 24 часа на решение новичкам (в понедельник, в четверг)
После 24 часов еще 24 часа на предложение решения мастерам (во вторник, в пятницу)
Через 48 часов начинается обсуждение-критика, выбор самого лучшего решения, выбор самого изящного решения, выбор самого оптимального решения, акцентирование на типичных ошибках. (в среду, в субботу-воскресенье)
А потом оформить это сообщее решение уже в виде примера, где есть задание, есть прикрепленные решения, есть ссылка на тему в форуме.
Если есть другие предложения или коррекция моих - давайте.
В принципе, если я это предлагаю первый, то мне наверное надо "назваться груздем":)) ну или координатором (по-солидному).
Хоть 5 человек согласятся с моим предложением - начинаем (с понедельника). | |
|
|
|
|
|
|
|
для: FatBoy
(27.01.2006 в 15:45)
| | Упинают, это значит она уйдёт на вторую страницу и об ней уже никто никогда не вспомнит, кроме исследователей, которые копают форум и извлекают время от времени старые темы. Мне кажется жёстко лимитировать сроки ответов не получится - слишком большая ротация на форуме (люди приходят и уходят). Тут скорее следует на сознательность человека ориентироваться. Придёт через пол года новичёк - увидит 50 задач - пусть решает и сверяет после решения с темой на форуме, кто как думает. Мастер как вы его называете может забыть про задачу через двое суток, кроме того темы будут разрастаться и их необходимо будет закрывать и открывать новые (разумеется со ссылками). Лучше если в первой теме будет более или менее элегантное решение. Поэтому сроки я думаю нужно будет по ходу дела корректировать - если вдруг автор задачи видит, что "новички" начинают выкладывать решения почище того, что предложил автор - лучше выкладывать его сразу, иначе потом оно будет выглядеть не очень интересно.
PS Ещё вот что меня беспокоит, первые несколько недель будет мало задач, и задачник будет выглядеть куце (может сразу разместить несколько задач, а потом прибавлять их постепенно).
PPS Пока темы будем заводить на Форуме о PHP, а если дело пойдёт и получит поддержку - выделим отдельный раздел на форуме (пока не будем этого делать, нужен резонанс). Этот раздел, кстати, можно будет использовать для готовых решений. А подпитка задачами не даст ему умереть.
PPPS У каждой задачи будет автор, поэтому ФИО должно быть реальным.
PPPPS Чтобы задача была сюрпризом присылайте мне её на simdyanov@softtime.ru, я её выложу в ночь с воскресенья на понедельник. | |
|
|
|
|
|
|
|
для: FatBoy
(27.01.2006 в 15:45)
| | Мне очень нравиться эта идея. Думаю, польза будет всем. Например, я curl'ом не пользовался пока не увидел его в другом скрипте. Думаю, в таком варианте как предложил FatBoy будут появляться интересные участки кода.
но есть пара "но":
- форум не лучшим образом будет подходить к этому. Тему потонет в обсуждениях, ведь реализаций несколько и каждый будет обсуждать тот, который считает наиболее удачным \ не удачным - получиться "куча".
- плохо, что будут показаны сразу после публикации. Это будет отпугивающим фактором для многих. "У него хорошо сделано, я так не смогу", "я так же хотел - повторятся плохо" и т.д.
- нужно подбирать уровень задач очень обдумано, чтобы было интересно всем. Я думаю "простые" задания не к чему. А вот более сложные дадут возможно действительно найти интересные решения, и повысить свой уровень, и пусть даже в них и не смогут принят участия некоторые желающие. Зато можно смело лучший вариант заносить в раздел "php примеры". | |
|
|
|
|
|
|
|
для: Artem S.
(27.01.2006 в 16:41)
| | Может разработать вроде мини-форума - т.е. публикуется решения, а под каждым из них скрытая ветка с обсуждением, но это время так как потребуется разработать отдельный движок. | |
|
|
|
|
|
|
|
для: Artem S.
(27.01.2006 в 16:41)
| | > - форум не лучшим образом будет подходить к этому. Тему
>потонет в обсуждениях, ведь реализаций несколько и каждый
>будет обсуждать тот, который считает наиболее удачным не
>удачным - получиться "куча".
> - плохо, что будут показаны сразу после публикации. Это
>будет отпугивающим фактором для многих. "У него хорошо
>сделано, я так не смогу", "я так же хотел - повторятся
>плохо" и т.д.
Кстати, да меня тоже примерно такие мысли гложат - темы не должны превращаться в глвалт, как это сейчас начинается на "Форум PHP" и в тоже время не должны быть состязанием крутости, так как последняя часто достигается средствами не применимыми в реальной практике. Например, обмен значениями двух переменных без использования третьей
<?php
$x = $x + $y;
$y = $x - $y;
$x = $x - $y;
?>
|
очень хорошая и развивающая задача, но в реальной практике такое кодирование не применимо. И если начинающий вдруг начнёт использовать такие приёмы - он потратит годы на то, чтобы понять, что так нельзя кодировать в реальной жизни, а только на олимпиадах и в условиях жёсткой нехватки памяти. А привыкнув, будет оправдываться, что это каноническое решение, опубликованное на известном сайте в 2006 году, и кто кодирует любым другим способом ламер. Поэтому всё-таки хотелось бы чтобы решения были приближены к реальности, например, что-то в духе: имеет файл в каждой строчке которого записано целое число
создайте скрипт, который при перезагрузке страницы будет уменьшать каждое число больше 0 на единцу. Такие скрипты очень близки к практике и любое решение эффективное и не очень будет полезным, так будет выполнять работу, которая часто требуется. И на скрипт требуется не очень много времени - за сутки начинающий программист его вполне осилит. | |
|
|
|
|
|
|
|
для: FatBoy
(27.01.2006 в 15:45)
| | Кроме того, многие комплексуют выкладывать свои решения и ждут ответов так называемых мастеров, чтобы определить далеко или близко они подошли к этому званию и вообще правильно ли поняли требование задачи. | |
|
|
|
|
|
|
|
для: cheops
(27.01.2006 в 16:44)
| | На первых порах предлагаю присылать решения на mail softtime'a и через день другой их все разом публиковать. | |
|
|
|
|
|
|
|
для: Artem S.
(27.01.2006 в 16:51)
| | Мне чего-то не очень нравится поток e-mail, который нужно анализировать и публиковать :))) | |
|
|
|
|
|
|
|
для: Artem S.
(27.01.2006 в 16:51)
| | Нужно автоматизировать это дело - скажем решения будут помещаться в базу, а потом разом открываться (после модерирования разумеется). | |
|
|
|
|
|
|
|
для: cheops
(27.01.2006 в 16:44)
| | По поводу "конкурсности"...
В общем я не очень понял какие ставятся задачи. Поэтому некоторая эйфория мне, к сожалению, не передалась.
Если это конкурс, то должна быть система вроде той, которая существует на worth1000.com: сначала принимаются все работы, по окончании приема - показываются, а после окончания голосования - показываются авторы.
Понятное дело, что это совсем не наш случай: в нашем случае нет такого понятия как "готовый код". Есть "рабочий код", а вылизывать его можно практически до бесконечности.
Опять же, работы всех участников (или хотябы лучшие варианты) должны быть снабжены комментариями специалиста. Иначе к ним больше никто и никогда не притронется... Будет этакое "виртуальное кладбище решений". Готовы ли вы на себя взвалить еще и комментирование? Не торопитесь отвечать:)
Идея обучающих конкурсов не нова, но все так же свежа и приветствуема. Вот только чтобы конкурс действительно стал обучающим, ему должен очень много времени уделять квалифицированный человек (а может и не один). Причем, выполняя, по сути, неблагодарную работу: критиковать и отсеивать неудачные решения.
В общем, на текущий момент, мне это видится мертворожденным проектом. Одних лозунгов в форуме "а давайте забабахаем" - недостаточно. Что бы получилось что-то путное, нужно вложить столько труда, что сам бы я ни за что не взялся и совесть бы мне не позволила требовать этого от других.
В общем, имеет смысл раз-два попробовать, а потом очень пристально поразмыслить над итогами. | |
|
|
|
|
|
|
|
для: Loki
(27.01.2006 в 17:18)
| | Мне видится это не как конкурс, а как постоянно пополняемый задачник, в котором задачи и ответы разнесены. Те кому действительно нужны задачи, решат их сами и сравнят своё решение с решениями других. | |
|
|
|
|
|
|
|
для: cheops
(27.01.2006 в 22:01)
| | Это не отменяет необходимости комментировать результаты. | |
|
|
|
|
|
|
|
для: Loki
(27.01.2006 в 23:00)
| | > Упинают, это значит она уйдёт на вторую страницу.
Ну ее можно принудительно поднимать (если нужно)
> Придёт через пол года новичёк - увидит 50 задач - пусть решает и сверяет
Вот и я про тоже! Очень полезно 50 задач просмотреть и через месяц быть "мастером"!
> Мастер как вы его называете может забыть про задачу через двое суток
Вообще-то я начал склонятся к тому, что здесь нас много и всем бросаться решать нет необходимости, ведь еще и оценивать нужно, критиковать. Может создать рейтинговую систему, или ротацию (1 задачу решил - 2 оцениваешь).
> Поэтому сроки я думаю нужно будет по ходу дела корректировать
Обязательно. Все надо корректировать.
> задачник будет выглядеть куце (может сразу разместить несколько задач, а потом прибавлять их постепенно).
Можно.
> PPS Пока темы будем заводить на Форуме о PHP
Хорошо.
> PPPS У каждой задачи будет автор, поэтому ФИО должно быть реальным.
Правильно.
> PPPPS Чтобы задача была сюрпризом присылайте мне её на simdyanov@softtime.ru, я её выложу в ночь с воскресенья на понедельник.
А я хотел предложить свои услуги, а cheops лучше продолжал бы свой нелегкий труд отвечать на всякие другие вопросы, и искать ссылки в форуме на готовые решения. Я представляю какой это труд, поэтому мне хочется облегчить ...... и предложить высылать ВСЕ предлагаемые задачи на мою почту. А я буду сортировать, переформулировать корректно, и постепенно выкладывать. Кстати у меня в планах уже появились задачи на такие темы, которые я решить не смогу, но решение для знающих не составит труда, и я чему-нибудь научусь. Хотя в принципе можно и совместно с cheopsом в личной переписке согласовывать условия и др. тонкости.
> ведь реализаций несколько и каждый будет обсуждать тот, который считает наиболее
> удачным \ не удачным - получиться "куча".
> плохо, что будут показаны сразу после публикации. Это будет отпугивающим фактором для
> многих. "У него хорошо сделано, я так не смогу", "я так же хотел - повторятся плохо" и т.д.
> нужно подбирать уровень задач очень обдумано, чтобы было интересно всем.
А вот чтобы этого не было предлагаю:
Не соревноваться "кто быстрее-кто круче", а для начала дать время, чтобы первое решение не оттолкнуло остальных. (ну хоть 5-6 часов). Кто хочет - решает, потом выкладываются решения (лучше 5-10), и потом критика и обсуждение тонкостей.
> Может разработать вроде мини-форума - т.е. публикуется решения, а под каждым из них
> скрытая ветка с обсуждением, но это время так как потребуется разработать отдельный
> движок.
Было бы здорово. Но это ведь не сразу. Будем мечтать.
> Например, обмен значениями двух переменных без использования третьей
> очень хорошая и развивающая задача, но в реальной практике такое кодирование не
> применимо.
Но знать это лишним не будет, поэтому я и предлагаю из форума в окончательный раздел учебника включать несколько решений: простое и понятное-1, оптимизированное, но замудренное - 2, изящное и с выпендрежами - 3. И ОБЯЗАТЕЛЬНО указать тонкие места, где обычно делают ошибки, или где возможны какие-нибудь взломы-иньекции.
> Такие скрипты очень близки к практике и любое решение эффективное и не очень
> будет полезным, так будет выполнять работу, которая часто требуется. И на скрипт
> требуется не очень много времени - за сутки начинающий программист его вполне осилит.
ВОТ-ВОТ!!! САМОЕ ТО!!!
> Кроме того, многие комплексуют выкладывать свои решения
Поначалу будет так, но постепенно они осмелеют.
> Мне чего-то не очень нравится поток e-mail, который нужно анализировать и
> публиковать :)))
Да это точно :)))
> Мне видится это не как конкурс, а как постоянно пополняемый задачник, в котором задачи
> и ответы разнесены. Те кому действительно нужны задачи, решат их сами и сравнят своё
> решение с решениями других.
На форуме мы решаем-обсуждаем, а потом это уже идет в задачник.
Комментировать надо обязательно. И возникла идея: у задач должен быть свой рейтинг (1 - задачи для начинающих, 2 - задачи посложнее, 3 - трудные задачи, 5 - задачи со звездочкой*)
В этом случае по рейтингу и новичек и мастер найдет для себя интерес!
PS По поводу мыла жду ответа от cheopsa.
PPS 4 задачи уже есть, осталось немного утвердить детали проведения. | |
|
|
|
|
|
|
|
для: FatBoy
(28.01.2006 в 11:10)
| | ОК, давайте начинать - если появятся ещё вопросы, обсуждения - заводим новую тему (а то эта уже длинная). Начнём пока подручными средствами - т.е. ответы будем выкладывать в форуме, а дальше посмотрим. Очень хорошо если вы примете на себя труд обработать и откорректировать ответы за первые сутки. Я думаю будем в первые сутки-двое в конце задачи будем выкладывать ваш e-mail, а потом заменять его на тему в форуме, где будут опубликованы ответы. Это автоматически будет давать время всем попробовать силы. | |
|
|
|
|
|
|
|
для: cheops
(26.01.2006 в 00:34)
| | Любопытно было бы почитать. Он планируется только в бумажном варианте, или на сайте Вы его тоже выложите? | |
|
|
|
|
|
|
|
для: Digger
(26.01.2006 в 16:50)
| | Он планируется в бумажном варианте, но на сайте будут выложены все коды. | |
|
|
|
|
|
|
|
для: cheops
(26.01.2006 в 00:34)
| | а ответы будут? или только сами задачи? ведь иногда после того, как голову ломаешь часа 2 хочется узнать ответ. | |
|
|
|
|
|
|
|
для: JIEXA
(26.01.2006 в 21:23)
| | Обязательно, книга будет состоять из двух частей - первый вопросы, и ответы. Код ответов можно будет найти на компакт-диске. | |
|
|
|
|
|
|
|
для: ChemboRambo
(25.01.2006 в 23:03)
| | Забудьте об этом. Желательно, навсегда. Жизнь - лучший учитель, а практика - критерий истины.
Пишите рабочие скрипты, маленькие, слабые, ненадежные - но рабочие. Напишите, не знаю, да хоть гостевую на файлах, и вскоре после начала работы вы поймете. что никакие искусственные задачи вам не нужны. | |
|
|
|
|
|
|
|
для: Киналь
(26.01.2006 в 15:07)
| | Воистину. Сам всё это пережил. Вывод: практика - вот лучший вариант закрепить знания, и при этом их расширить. | |
|
|
|
|